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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -14,6 +14,15 @@ class Cpus {
void update(List<OneTimeCpuStatus> newStatus) {
_pre = _now;
_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;

View File

@@ -24,6 +24,18 @@ class NetSpeed {
void update(List<NetSpeedPart> newOne) {
_old = _now;
_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;

View File

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

View File

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

View File

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

View File

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

View File

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