mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 15:24:35 +01:00
opt.: move docker stats to more btn
This commit is contained in:
@@ -1154,6 +1154,12 @@ abstract class S {
|
||||
/// **'Start'**
|
||||
String get start;
|
||||
|
||||
/// No description provided for @stats.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Stats'**
|
||||
String get stats;
|
||||
|
||||
/// No description provided for @stop.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
||||
@@ -562,6 +562,9 @@ class SDe extends S {
|
||||
@override
|
||||
String get start => 'Start';
|
||||
|
||||
@override
|
||||
String get stats => 'Statistik';
|
||||
|
||||
@override
|
||||
String get stop => 'Stop';
|
||||
|
||||
|
||||
@@ -562,6 +562,9 @@ class SEn extends S {
|
||||
@override
|
||||
String get start => 'Start';
|
||||
|
||||
@override
|
||||
String get stats => 'Stats';
|
||||
|
||||
@override
|
||||
String get stop => 'Stop';
|
||||
|
||||
|
||||
@@ -562,6 +562,9 @@ class SId extends S {
|
||||
@override
|
||||
String get start => 'Awal';
|
||||
|
||||
@override
|
||||
String get stats => 'Statistik';
|
||||
|
||||
@override
|
||||
String get stop => 'Berhenti';
|
||||
|
||||
|
||||
@@ -562,6 +562,9 @@ class SZh extends S {
|
||||
@override
|
||||
String get start => '开始';
|
||||
|
||||
@override
|
||||
String get stats => '统计';
|
||||
|
||||
@override
|
||||
String get stop => '停止';
|
||||
|
||||
@@ -1247,6 +1250,9 @@ class SZhTw extends SZh {
|
||||
@override
|
||||
String get start => '開始';
|
||||
|
||||
@override
|
||||
String get stats => '統計';
|
||||
|
||||
@override
|
||||
String get stop => '停止';
|
||||
|
||||
|
||||
@@ -52,11 +52,12 @@ enum DockerMenuType {
|
||||
restart,
|
||||
rm,
|
||||
logs,
|
||||
terminal;
|
||||
terminal,
|
||||
stats;
|
||||
|
||||
static List<DockerMenuType> items(bool running) {
|
||||
if (running) {
|
||||
return [stop, restart, rm, logs, terminal];
|
||||
return [stop, restart, rm, logs, terminal, stats];
|
||||
} else {
|
||||
return [start, rm, logs];
|
||||
}
|
||||
@@ -76,6 +77,8 @@ enum DockerMenuType {
|
||||
return Icons.logo_dev;
|
||||
case DockerMenuType.terminal:
|
||||
return Icons.terminal;
|
||||
case DockerMenuType.stats:
|
||||
return Icons.bar_chart;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,6 +96,8 @@ enum DockerMenuType {
|
||||
return s.log;
|
||||
case DockerMenuType.terminal:
|
||||
return s.terminal;
|
||||
case DockerMenuType.stats:
|
||||
return s.stats;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
"sshTip": "Diese Funktion befindet sich jetzt in der Experimentierphase.\n\nBitte melde Bugs auf {url} oder mach mit bei der Entwicklung.",
|
||||
"sshVirtualKeyAutoOff": "Automatische Umschaltung der virtuellen Tasten",
|
||||
"start": "Start",
|
||||
"stats": "Statistik",
|
||||
"stop": "Stop",
|
||||
"success": "Erfolgreich",
|
||||
"sureDelete": "Soll [{name}] wirklich gelöscht werden?",
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
"sshTip": "This function is now in the experimental stage.\n\nPlease report bugs on {url} or join our development.",
|
||||
"sshVirtualKeyAutoOff": "Auto switching of virtual keys",
|
||||
"start": "Start",
|
||||
"stats": "Stats",
|
||||
"stop": "Stop",
|
||||
"success": "Success",
|
||||
"sureDelete": "Are you sure to delete [{name}]?",
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
"sshTip": "Fungsi ini sekarang dalam tahap eksperimen.\n\nHarap laporkan bug di {url} atau bergabunglah dengan pengembangan kami.",
|
||||
"sshVirtualKeyAutoOff": "Switching Otomatis Kunci Virtual",
|
||||
"start": "Awal",
|
||||
"stats": "Statistik",
|
||||
"stop": "Berhenti",
|
||||
"success": "Kesuksesan",
|
||||
"sureDelete": "Apakah Anda pasti akan menghapus [{name}]?",
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
"sshTip": "该功能目前处于测试阶段。\n\n请在 {url} 反馈问题,或者加入我们开发。",
|
||||
"sshVirtualKeyAutoOff": "虚拟按键自动切换",
|
||||
"start": "开始",
|
||||
"stats": "统计",
|
||||
"stop": "停止",
|
||||
"success": "成功",
|
||||
"sureDelete": "确定删除 [{name}]?",
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
"sshTip": "該功能目前處於測試階段。\n\n請在 {url} 反饋問題,或者加入我們開發。",
|
||||
"sshVirtualKeyAutoOff": "虛擬按鍵自動切換",
|
||||
"start": "開始",
|
||||
"stats": "統計",
|
||||
"stop": "停止",
|
||||
"success": "成功",
|
||||
"sureDelete": "確定刪除 [{name}]?",
|
||||
|
||||
@@ -265,7 +265,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
||||
_docker.edition ?? _s.unknown,
|
||||
_docker.version ?? _s.unknown,
|
||||
),
|
||||
..._buildPsItems(),
|
||||
_buildPsItems(),
|
||||
_buildImages(),
|
||||
_buildEditHost(),
|
||||
].map((e) => RoundRectCard(e)));
|
||||
@@ -447,7 +447,7 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> _buildPsItems() {
|
||||
Widget _buildPsItems() {
|
||||
final items = _docker.items!.map(_buildPsItem).toList();
|
||||
items.insert(
|
||||
0,
|
||||
@@ -456,46 +456,30 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
||||
subtitle: Text(_buildSubtitle(_docker.items!), style: grey),
|
||||
),
|
||||
);
|
||||
return items;
|
||||
}
|
||||
|
||||
Widget _buildPsItem(DockerPsItem item) {
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
ListTile(
|
||||
title: Text(item.name),
|
||||
subtitle: Text(
|
||||
'${item.image}\n${item.status}',
|
||||
style: textSize13Grey,
|
||||
),
|
||||
trailing: _buildMoreBtn(item, _docker.isBusy),
|
||||
),
|
||||
_buildPsItemStat(item),
|
||||
],
|
||||
children: items,
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildPsItemStat(DockerPsItem item) {
|
||||
if (!item.running) return const SizedBox();
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(left: 17, bottom: 11, right: 17),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(item.cpu ?? _s.unknown, style: grey),
|
||||
Text(item.mem ?? _s.unknown, style: grey),
|
||||
Text(item.net ?? _s.unknown, style: grey),
|
||||
Text(item.disk ?? _s.unknown, style: grey),
|
||||
],
|
||||
Widget _buildPsItem(DockerPsItem item) {
|
||||
return ListTile(
|
||||
title: Text(item.name),
|
||||
subtitle: Text(
|
||||
'${item.image}\n${item.status}',
|
||||
style: textSize13Grey,
|
||||
),
|
||||
trailing: _buildMoreBtn(item, _docker.isBusy),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildMoreBtn(DockerPsItem dItem, bool busy) {
|
||||
return PopupMenu(
|
||||
items:
|
||||
DockerMenuType.items(dItem.running).map((e) => e.build(_s)).toList(),
|
||||
items: DockerMenuType.items(dItem.running)
|
||||
.map(
|
||||
(e) => e.build(_s),
|
||||
)
|
||||
.toList(),
|
||||
onSelected: (DockerMenuType item) async {
|
||||
if (busy) {
|
||||
showSnackBar(context, Text(_s.isBusy));
|
||||
@@ -544,6 +528,25 @@ class _DockerManagePageState extends State<DockerManagePage> {
|
||||
),
|
||||
'Docker terminal',
|
||||
).go(context);
|
||||
break;
|
||||
case DockerMenuType.stats:
|
||||
showRoundDialog(
|
||||
context: context,
|
||||
title: Text(_s.stats),
|
||||
child: Text(
|
||||
'CPU: ${dItem.cpu}\n'
|
||||
'Mem: ${dItem.mem}\n'
|
||||
'Net: ${dItem.net}\n'
|
||||
'Block: ${dItem.disk}',
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => context.pop(),
|
||||
child: Text(_s.ok),
|
||||
),
|
||||
],
|
||||
);
|
||||
break;
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user