From 5b2ed02428a2c1c29afbf8f212bc5ddd4ba80cdd Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Sat, 5 Aug 2023 12:40:45 +0800 Subject: [PATCH] opt.: move docker stats to more btn --- .dart_tool/flutter_gen/gen_l10n/l10n.dart | 6 ++ .dart_tool/flutter_gen/gen_l10n/l10n_de.dart | 3 + .dart_tool/flutter_gen/gen_l10n/l10n_en.dart | 3 + .dart_tool/flutter_gen/gen_l10n/l10n_id.dart | 3 + .dart_tool/flutter_gen/gen_l10n/l10n_zh.dart | 6 ++ lib/data/model/app/menu.dart | 9 ++- lib/l10n/app_de.arb | 1 + lib/l10n/app_en.arb | 1 + lib/l10n/app_id.arb | 1 + lib/l10n/app_zh.arb | 1 + lib/l10n/app_zh_tw.arb | 1 + lib/view/page/docker.dart | 65 ++++++++++---------- 12 files changed, 67 insertions(+), 33 deletions(-) diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n.dart b/.dart_tool/flutter_gen/gen_l10n/l10n.dart index af7b7d6c..713f2c8e 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n.dart @@ -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: diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart index ca8ef5cb..8b8845c4 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart @@ -562,6 +562,9 @@ class SDe extends S { @override String get start => 'Start'; + @override + String get stats => 'Statistik'; + @override String get stop => 'Stop'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart index 17c64967..329374f3 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart @@ -562,6 +562,9 @@ class SEn extends S { @override String get start => 'Start'; + @override + String get stats => 'Stats'; + @override String get stop => 'Stop'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart index c8636714..4d3e6deb 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart @@ -562,6 +562,9 @@ class SId extends S { @override String get start => 'Awal'; + @override + String get stats => 'Statistik'; + @override String get stop => 'Berhenti'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart index 192901d7..a9275336 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart @@ -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 => '停止'; diff --git a/lib/data/model/app/menu.dart b/lib/data/model/app/menu.dart index 9e091900..8431c2e9 100644 --- a/lib/data/model/app/menu.dart +++ b/lib/data/model/app/menu.dart @@ -52,11 +52,12 @@ enum DockerMenuType { restart, rm, logs, - terminal; + terminal, + stats; static List 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; } } diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 77ae86f4..f05d27ac 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -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?", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index e11b1686..6b4072e1 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -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}]?", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 41e02b64..3e1ebab9 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -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}]?", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index aeb67145..83f6360c 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -176,6 +176,7 @@ "sshTip": "该功能目前处于测试阶段。\n\n请在 {url} 反馈问题,或者加入我们开发。", "sshVirtualKeyAutoOff": "虚拟按键自动切换", "start": "开始", + "stats": "统计", "stop": "停止", "success": "成功", "sureDelete": "确定删除 [{name}]?", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index c33fed48..03b1e2d3 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -176,6 +176,7 @@ "sshTip": "該功能目前處於測試階段。\n\n請在 {url} 反饋問題,或者加入我們開發。", "sshVirtualKeyAutoOff": "虛擬按鍵自動切換", "start": "開始", + "stats": "統計", "stop": "停止", "success": "成功", "sureDelete": "確定刪除 [{name}]?", diff --git a/lib/view/page/docker.dart b/lib/view/page/docker.dart index 20378224..1308c407 100644 --- a/lib/view/page/docker.dart +++ b/lib/view/page/docker.dart @@ -265,7 +265,7 @@ class _DockerManagePageState extends State { _docker.edition ?? _s.unknown, _docker.version ?? _s.unknown, ), - ..._buildPsItems(), + _buildPsItems(), _buildImages(), _buildEditHost(), ].map((e) => RoundRectCard(e))); @@ -447,7 +447,7 @@ class _DockerManagePageState extends State { ); } - List _buildPsItems() { + Widget _buildPsItems() { final items = _docker.items!.map(_buildPsItem).toList(); items.insert( 0, @@ -456,46 +456,30 @@ class _DockerManagePageState extends State { 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 { ), '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; } }, );