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