#74 probably fix

This commit is contained in:
lollipopkit
2023-07-21 16:56:50 +08:00
parent 262b4486e4
commit eef38f0949
14 changed files with 128 additions and 29 deletions

View File

@@ -234,6 +234,12 @@ abstract class S {
/// **'Command'** /// **'Command'**
String get cmd; String get cmd;
/// No description provided for @conn.
///
/// In en, this message translates to:
/// **'Connection'**
String get conn;
/// No description provided for @containerName. /// No description provided for @containerName.
/// ///
/// In en, this message translates to: /// In en, this message translates to:
@@ -1092,6 +1098,12 @@ abstract class S {
/// **'Snippet'** /// **'Snippet'**
String get snippet; String get snippet;
/// No description provided for @speed.
///
/// In en, this message translates to:
/// **'Speed'**
String get speed;
/// No description provided for @spentTime. /// No description provided for @spentTime.
/// ///
/// In en, this message translates to: /// In en, this message translates to:
@@ -1188,6 +1200,12 @@ abstract class S {
/// **'Times'** /// **'Times'**
String get times; String get times;
/// No description provided for @traffic.
///
/// In en, this message translates to:
/// **'Traffic'**
String get traffic;
/// No description provided for @ttl. /// No description provided for @ttl.
/// ///
/// In en, this message translates to: /// In en, this message translates to:

View File

@@ -73,6 +73,9 @@ class SDe extends S {
@override @override
String get cmd => 'Command'; String get cmd => 'Command';
@override
String get conn => 'Verbindung';
@override @override
String get containerName => 'Container Name'; String get containerName => 'Container Name';
@@ -528,6 +531,9 @@ class SDe extends S {
@override @override
String get snippet => 'Snippet'; String get snippet => 'Snippet';
@override
String get speed => 'Tempo';
@override @override
String spentTime(Object time) { String spentTime(Object time) {
return 'Benötigte Zeit: $time'; return 'Benötigte Zeit: $time';
@@ -584,6 +590,9 @@ class SDe extends S {
@override @override
String get times => 'x'; String get times => 'x';
@override
String get traffic => 'Durchflussmenge';
@override @override
String get ttl => 'ttl'; String get ttl => 'ttl';

View File

@@ -73,6 +73,9 @@ class SEn extends S {
@override @override
String get cmd => 'Command'; String get cmd => 'Command';
@override
String get conn => 'Connection';
@override @override
String get containerName => 'Container name'; String get containerName => 'Container name';
@@ -528,6 +531,9 @@ class SEn extends S {
@override @override
String get snippet => 'Snippet'; String get snippet => 'Snippet';
@override
String get speed => 'Speed';
@override @override
String spentTime(Object time) { String spentTime(Object time) {
return 'Spent time: $time'; return 'Spent time: $time';
@@ -584,6 +590,9 @@ class SEn extends S {
@override @override
String get times => 'Times'; String get times => 'Times';
@override
String get traffic => 'Traffic';
@override @override
String get ttl => 'ttl'; String get ttl => 'ttl';

View File

@@ -73,6 +73,9 @@ class SZh extends S {
@override @override
String get cmd => '命令'; String get cmd => '命令';
@override
String get conn => '连接';
@override @override
String get containerName => '容器名'; String get containerName => '容器名';
@@ -528,6 +531,9 @@ class SZh extends S {
@override @override
String get snippet => '代码片段'; String get snippet => '代码片段';
@override
String get speed => '速度';
@override @override
String spentTime(Object time) { String spentTime(Object time) {
return '耗时: $time'; return '耗时: $time';
@@ -584,6 +590,9 @@ class SZh extends S {
@override @override
String get times => ''; String get times => '';
@override
String get traffic => '流量';
@override @override
String get ttl => '缓存时间'; String get ttl => '缓存时间';
@@ -728,6 +737,9 @@ class SZhTw extends SZh {
@override @override
String get cmd => '命令'; String get cmd => '命令';
@override
String get conn => '連接';
@override @override
String get containerName => '容器名稱'; String get containerName => '容器名稱';
@@ -1183,6 +1195,9 @@ class SZhTw extends SZh {
@override @override
String get snippet => '程式片段'; String get snippet => '程式片段';
@override
String get speed => '速度';
@override @override
String spentTime(Object time) { String spentTime(Object time) {
return '耗時: $time'; return '耗時: $time';
@@ -1239,6 +1254,9 @@ class SZhTw extends SZh {
@override @override
String get times => ''; String get times => '';
@override
String get traffic => '流量';
@override @override
String get ttl => '緩存時間'; String get ttl => '緩存時間';

View File

@@ -1,4 +1,5 @@
import 'package:hive_flutter/hive_flutter.dart'; import 'package:hive_flutter/hive_flutter.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:toolbox/data/model/server/server_status.dart'; import 'package:toolbox/data/model/server/server_status.dart';
part 'net_view.g.dart'; part 'net_view.g.dart';
@@ -6,15 +7,26 @@ part 'net_view.g.dart';
@HiveType(typeId: 5) @HiveType(typeId: 5)
enum NetViewType { enum NetViewType {
@HiveField(0) @HiveField(0)
count, conn,
@HiveField(1) @HiveField(1)
speed, speed,
@HiveField(2) @HiveField(2)
size; traffic;
String l10n(S s) {
switch (this) {
case NetViewType.conn:
return s.conn;
case NetViewType.traffic:
return s.traffic;
case NetViewType.speed:
return s.speed;
}
}
NetViewData build(ServerStatus ss) { NetViewData build(ServerStatus ss) {
switch (this) { switch (this) {
case NetViewType.count: case NetViewType.conn:
return NetViewData( return NetViewData(
'Conn:\n${ss.tcp.maxConn}', 'Conn:\n${ss.tcp.maxConn}',
'Fail:\n${ss.tcp.fail}', 'Fail:\n${ss.tcp.fail}',
@@ -24,7 +36,7 @@ enum NetViewType {
'In:\n${ss.netSpeed.speedIn(all: true)}', 'In:\n${ss.netSpeed.speedIn(all: true)}',
'Out:\n${ss.netSpeed.speedOut(all: true)}', 'Out:\n${ss.netSpeed.speedOut(all: true)}',
); );
case NetViewType.size: case NetViewType.traffic:
return NetViewData( return NetViewData(
'In:\n${ss.netSpeed.sizeIn(all: true)}', 'In:\n${ss.netSpeed.sizeIn(all: true)}',
'Out:\n${ss.netSpeed.sizeOut(all: true)}', 'Out:\n${ss.netSpeed.sizeOut(all: true)}',

View File

@@ -14,26 +14,26 @@ class NetViewTypeAdapter extends TypeAdapter<NetViewType> {
NetViewType read(BinaryReader reader) { NetViewType read(BinaryReader reader) {
switch (reader.readByte()) { switch (reader.readByte()) {
case 0: case 0:
return NetViewType.count; return NetViewType.conn;
case 1: case 1:
return NetViewType.speed; return NetViewType.speed;
case 2: case 2:
return NetViewType.size; return NetViewType.traffic;
default: default:
return NetViewType.count; return NetViewType.conn;
} }
} }
@override @override
void write(BinaryWriter writer, NetViewType obj) { void write(BinaryWriter writer, NetViewType obj) {
switch (obj) { switch (obj) {
case NetViewType.count: case NetViewType.conn:
writer.writeByte(0); writer.writeByte(0);
break; break;
case NetViewType.speed: case NetViewType.speed:
writer.writeByte(1); writer.writeByte(1);
break; break;
case NetViewType.size: case NetViewType.traffic:
writer.writeByte(2); writer.writeByte(2);
break; break;
} }

View File

@@ -14,6 +14,15 @@ class Cpus {
void update(List<OneTimeCpuStatus> newStatus) { void update(List<OneTimeCpuStatus> newStatus) {
_pre = _now; _pre = _now;
_now = newStatus; _now = newStatus;
// 类似 [NetSpeed.update] 的处理
// 虽然CPU热插拔情况较少...
if (_pre.length != _now.length) {
if (_pre.length > _now.length) {
_pre = _pre.sublist(0, _now.length);
} else {
_pre.addAll(_now.sublist(_pre.length, _now.length));
}
}
} }
int get coresCount => _now.length; int get coresCount => _now.length;

View File

@@ -24,6 +24,18 @@ class NetSpeed {
void update(List<NetSpeedPart> newOne) { void update(List<NetSpeedPart> newOne) {
_old = _now; _old = _now;
_now = newOne; _now = newOne;
// 当长度不同,说明有网络接口改变
//
// 应当跟随改变:
// 旧长度 > 新长度:将旧的数据截断
// 旧长度 < 新长度:将旧的数据补齐
if (_old.length != _now.length) {
if (_old.length > _now.length) {
_old = _old.sublist(0, _now.length);
} else {
_old.addAll(_now.sublist(_old.length, _now.length));
}
}
} }
BigInt get timeDiff => _now[0].time - _old[0].time; BigInt get timeDiff => _now[0].time - _old[0].time;

View File

@@ -23,6 +23,7 @@
"clear": "Entfernen", "clear": "Entfernen",
"close": "Schließen", "close": "Schließen",
"cmd": "Command", "cmd": "Command",
"conn": "Verbindung",
"containerName": "Container Name", "containerName": "Container Name",
"containerStatus": "Container Status", "containerStatus": "Container Status",
"convert": "Konvertieren", "convert": "Konvertieren",
@@ -166,6 +167,7 @@
"sftpSSHConnected": "SFTP Verbunden", "sftpSSHConnected": "SFTP Verbunden",
"showDistLogo": "Distributionslogo anzeigen", "showDistLogo": "Distributionslogo anzeigen",
"snippet": "Snippet", "snippet": "Snippet",
"speed": "Tempo",
"spentTime": "Benötigte Zeit: {time}", "spentTime": "Benötigte Zeit: {time}",
"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",
@@ -182,6 +184,7 @@
"theme": "Themen", "theme": "Themen",
"themeMode": "Themen-Modus", "themeMode": "Themen-Modus",
"times": "x", "times": "x",
"traffic": "Durchflussmenge",
"ttl": "ttl", "ttl": "ttl",
"unknown": "Unbekannt", "unknown": "Unbekannt",
"unknownError": "Unbekannter Fehler", "unknownError": "Unbekannter Fehler",

View File

@@ -23,6 +23,7 @@
"clear": "Clear", "clear": "Clear",
"close": "Close", "close": "Close",
"cmd": "Command", "cmd": "Command",
"conn": "Connection",
"containerName": "Container name", "containerName": "Container name",
"containerStatus": "Container status", "containerStatus": "Container status",
"convert": "Convert", "convert": "Convert",
@@ -166,6 +167,7 @@
"sftpSSHConnected": "SFTP Connected", "sftpSSHConnected": "SFTP Connected",
"showDistLogo": "Show distribution logo", "showDistLogo": "Show distribution logo",
"snippet": "Snippet", "snippet": "Snippet",
"speed": "Speed",
"spentTime": "Spent time: {time}", "spentTime": "Spent time: {time}",
"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",
@@ -182,6 +184,7 @@
"theme": "Theme", "theme": "Theme",
"themeMode": "Theme mode", "themeMode": "Theme mode",
"times": "Times", "times": "Times",
"traffic": "Traffic",
"ttl": "ttl", "ttl": "ttl",
"unknown": "Unknown", "unknown": "Unknown",
"unknownError": "Unknown error", "unknownError": "Unknown error",

View File

@@ -23,6 +23,7 @@
"clear": "清除", "clear": "清除",
"close": "关闭", "close": "关闭",
"cmd": "命令", "cmd": "命令",
"conn": "连接",
"containerName": "容器名", "containerName": "容器名",
"containerStatus": "容器状态", "containerStatus": "容器状态",
"convert": "转换", "convert": "转换",
@@ -166,6 +167,7 @@
"sftpSSHConnected": "SFTP 已连接,即将开始下载...", "sftpSSHConnected": "SFTP 已连接,即将开始下载...",
"showDistLogo": "显示发行版 Logo", "showDistLogo": "显示发行版 Logo",
"snippet": "代码片段", "snippet": "代码片段",
"speed": "速度",
"spentTime": "耗时: {time}", "spentTime": "耗时: {time}",
"sshTip": "该功能目前处于测试阶段。\n\n请在 {url} 反馈问题,或者加入我们开发。", "sshTip": "该功能目前处于测试阶段。\n\n请在 {url} 反馈问题,或者加入我们开发。",
"sshVirtualKeyAutoOff": "虚拟按键自动切换", "sshVirtualKeyAutoOff": "虚拟按键自动切换",
@@ -182,6 +184,7 @@
"theme": "主题", "theme": "主题",
"themeMode": "主题模式", "themeMode": "主题模式",
"times": "次", "times": "次",
"traffic": "流量",
"ttl": "缓存时间", "ttl": "缓存时间",
"unknown": "未知", "unknown": "未知",
"unknownError": "未知错误", "unknownError": "未知错误",

View File

@@ -23,6 +23,7 @@
"clear": "清除", "clear": "清除",
"close": "關閉", "close": "關閉",
"cmd": "命令", "cmd": "命令",
"conn": "連接",
"containerName": "容器名稱", "containerName": "容器名稱",
"containerStatus": "容器狀態", "containerStatus": "容器狀態",
"convert": "轉換", "convert": "轉換",
@@ -166,6 +167,7 @@
"sftpSSHConnected": "SFTP 已連接,即將開始下載...", "sftpSSHConnected": "SFTP 已連接,即將開始下載...",
"showDistLogo": "顯示發行版 Logo", "showDistLogo": "顯示發行版 Logo",
"snippet": "程式片段", "snippet": "程式片段",
"speed": "速度",
"spentTime": "耗時: {time}", "spentTime": "耗時: {time}",
"sshTip": "該功能目前處於測試階段。\n\n請在 {url} 反饋問題,或者加入我們開發。", "sshTip": "該功能目前處於測試階段。\n\n請在 {url} 反饋問題,或者加入我們開發。",
"sshVirtualKeyAutoOff": "虛擬按鍵自動切換", "sshVirtualKeyAutoOff": "虛擬按鍵自動切換",
@@ -182,6 +184,7 @@
"theme": "主題", "theme": "主題",
"themeMode": "主題模式", "themeMode": "主題模式",
"times": "次", "times": "次",
"traffic": "流量",
"ttl": "緩存時間", "ttl": "緩存時間",
"unknown": "未知", "unknown": "未知",
"unknownError": "未知錯誤", "unknownError": "未知錯誤",

View File

@@ -33,6 +33,19 @@ class _ServerDetailPageState extends State<ServerDetailPage>
final Order<String> _cardsOrder = []; final Order<String> _cardsOrder = [];
final _setting = locator<SettingStore>(); final _setting = locator<SettingStore>();
late final _cardBuildMap = Map.fromIterables(
defaultDetailCardOrder,
[
_buildUpTimeAndSys,
_buildCPUView,
_buildMemView,
_buildSwapView,
_buildDiskView,
_buildNetView,
_buildTemperature,
],
);
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
@@ -48,18 +61,6 @@ class _ServerDetailPageState extends State<ServerDetailPage>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final map = Map.fromIterables(
defaultDetailCardOrder,
[
_buildUpTimeAndSys,
_buildCPUView,
_buildMemView,
_buildSwapView,
_buildDiskView,
_buildNetView,
_buildTemperature,
],
);
return Consumer<ServerProvider>(builder: (_, provider, __) { return Consumer<ServerProvider>(builder: (_, provider, __) {
final s = provider.servers[widget.id]; final s = provider.servers[widget.id];
if (s == null) { if (s == null) {
@@ -69,14 +70,11 @@ class _ServerDetailPageState extends State<ServerDetailPage>
), ),
); );
} }
return _buildMainPage(s, map); return _buildMainPage(s);
}); });
} }
Widget _buildMainPage( Widget _buildMainPage(Server si) {
Server si,
Map<String, Widget Function(ServerStatus)> map,
) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text(si.spi.name, style: textSize18), title: Text(si.spi.name, style: textSize18),
@@ -99,7 +97,9 @@ class _ServerDetailPageState extends State<ServerDetailPage>
itemBuilder: (context, index) => ReorderableDelayedDragStartListener( itemBuilder: (context, index) => ReorderableDelayedDragStartListener(
key: ValueKey(index), key: ValueKey(index),
index: index, index: index,
child: map[_cardsOrder[index]]?.call(si.status) ?? nil, child: SizedBox(
child: _cardBuildMap[_cardsOrder[index]]?.call(si.status),
),
), ),
), ),
); );

View File

@@ -902,7 +902,7 @@ class _SettingPageState extends State<SettingPage> {
final items = NetViewType.values final items = NetViewType.values
.map((e) => PopupMenuItem( .map((e) => PopupMenuItem(
value: e, value: e,
child: Text(e.name), child: Text(e.l10n(_s)),
)) ))
.toList(); .toList();
return ListTile( return ListTile(
@@ -918,7 +918,7 @@ class _SettingPageState extends State<SettingPage> {
_setting.netViewType.put(idx); _setting.netViewType.put(idx);
}, },
child: Text( child: Text(
_netViewType.value.name, _netViewType.value.l10n(_s),
style: textSize15, style: textSize15,
), ),
), ),