mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
fix & opt.: prefer temperature dev
This commit is contained in:
@@ -10,6 +10,8 @@ final class ServerCustom {
|
||||
final String? pveAddr;
|
||||
@HiveField(2, defaultValue: false)
|
||||
final bool pveIgnoreCert;
|
||||
@HiveField(3)
|
||||
final String? preferTempDev;
|
||||
|
||||
/// {"title": "cmd"}
|
||||
@HiveField(3)
|
||||
@@ -20,6 +22,7 @@ final class ServerCustom {
|
||||
this.pveAddr,
|
||||
this.pveIgnoreCert = false,
|
||||
this.cmds,
|
||||
this.preferTempDev,
|
||||
});
|
||||
|
||||
static ServerCustom fromJson(Map<String, dynamic> json) {
|
||||
@@ -27,11 +30,13 @@ final class ServerCustom {
|
||||
final pveAddr = json["pveAddr"] as String?;
|
||||
final pveIgnoreCert = json["pveIgnoreCert"] as bool;
|
||||
final cmds = json["cmds"] as Map<String, dynamic>?;
|
||||
final preferTempDev = json["preferTempDev"] as String?;
|
||||
return ServerCustom(
|
||||
//temperature: temperature,
|
||||
pveAddr: pveAddr,
|
||||
pveIgnoreCert: pveIgnoreCert,
|
||||
cmds: cmds?.cast<String, String>(),
|
||||
preferTempDev: preferTempDev,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -48,6 +53,9 @@ final class ServerCustom {
|
||||
if (cmds != null) {
|
||||
json["cmds"] = cmds;
|
||||
}
|
||||
if (preferTempDev != null) {
|
||||
json["preferTempDev"] = preferTempDev;
|
||||
}
|
||||
return json;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:convert';
|
||||
|
||||
import 'package:toolbox/core/extension/listx.dart';
|
||||
import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
final class SensorAdaptor {
|
||||
final String raw;
|
||||
@@ -101,92 +100,4 @@ final class SensorItem {
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
static double? findPreferTempVal(List<SensorItem> items) {
|
||||
if (items.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
final preferTemperatureDevs = Stores.setting.preferTemperatureDevs.fetch();
|
||||
if (preferTemperatureDevs.isNotEmpty) {
|
||||
for (final key in preferTemperatureDevs) {
|
||||
final item = items.firstWhereOrNull((e) => e.device == key);
|
||||
if (item != null) {
|
||||
return item.props.values.firstOrNull?.current;
|
||||
}
|
||||
}
|
||||
}
|
||||
return items.first.props.values.firstOrNull?.current;
|
||||
}
|
||||
|
||||
static const sensorsRaw = '''
|
||||
{
|
||||
"coretemp-isa-0000":{
|
||||
"Adapter": "ISA adapter",
|
||||
"Package id 0":{
|
||||
"temp1_input": 51.000,
|
||||
"temp1_max": 105.000,
|
||||
"temp1_crit": 105.000,
|
||||
"temp1_crit_alarm": 0.000
|
||||
},
|
||||
"Core 0":{
|
||||
"temp2_input": 40.000,
|
||||
"temp2_max": 105.000,
|
||||
"temp2_crit": 105.000,
|
||||
"temp2_crit_alarm": 0.000
|
||||
},
|
||||
"Core 1":{
|
||||
"temp3_input": 40.000,
|
||||
"temp3_max": 105.000,
|
||||
"temp3_crit": 105.000,
|
||||
"temp3_crit_alarm": 0.000
|
||||
},
|
||||
"Core 2":{
|
||||
"temp4_input": 40.000,
|
||||
"temp4_max": 105.000,
|
||||
"temp4_crit": 105.000,
|
||||
"temp4_crit_alarm": 0.000
|
||||
},
|
||||
"Core 3":{
|
||||
"temp5_input": 40.000,
|
||||
"temp5_max": 105.000,
|
||||
"temp5_crit": 105.000,
|
||||
"temp5_crit_alarm": 0.000
|
||||
}
|
||||
},
|
||||
"acpitz-acpi-0":{
|
||||
"Adapter": "ACPI interface",
|
||||
"temp1":{
|
||||
"temp1_input": 27.800,
|
||||
"temp1_crit": 119.000
|
||||
}
|
||||
},
|
||||
"iwlwifi_1-virtual-0":{
|
||||
"Adapter": "Virtual device",
|
||||
"temp1":{
|
||||
ERROR: Can't get value of subfeature temp1_input: Can't read
|
||||
|
||||
}
|
||||
},
|
||||
"nvme-pci-0400":{
|
||||
"Adapter": "PCI adapter",
|
||||
"Composite":{
|
||||
"temp1_input": 35.850,
|
||||
"temp1_max": 83.850,
|
||||
"temp1_min": -273.150,
|
||||
"temp1_crit": 84.850,
|
||||
"temp1_alarm": 0.000
|
||||
},
|
||||
"Sensor 1":{
|
||||
"temp2_input": 35.850,
|
||||
"temp2_max": 65261.850,
|
||||
"temp2_min": -273.150
|
||||
},
|
||||
"Sensor 2":{
|
||||
"temp3_input": 37.850,
|
||||
"temp3_max": 65261.850,
|
||||
"temp3_min": -273.150
|
||||
}
|
||||
}
|
||||
}
|
||||
''';
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:dartssh2/dartssh2.dart';
|
||||
import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/core/extension/listx.dart';
|
||||
import 'package:toolbox/data/model/app/shell_func.dart';
|
||||
import 'package:toolbox/data/model/server/battery.dart';
|
||||
import 'package:toolbox/data/model/server/conn.dart';
|
||||
|
||||
@@ -1,28 +1,42 @@
|
||||
part of 'server.dart';
|
||||
|
||||
extension ServerX on Server {
|
||||
String get topRightStr {
|
||||
String getTopRightStr(ServerPrivateInfo spi) {
|
||||
switch (state) {
|
||||
case ServerState.disconnected:
|
||||
return l10n.disconnected;
|
||||
case ServerState.finished:
|
||||
// Highest priority of temperature display
|
||||
final cmdTemp = status.customCmds['server_card_top_right'];
|
||||
final temp = status.temps.first;
|
||||
final sensorTemp = SensorItem.findPreferTempVal(status.sensors);
|
||||
final temperatureVal = () {
|
||||
// Second priority
|
||||
final preferTempDev = spi.custom?.preferTempDev;
|
||||
if (preferTempDev != null) {
|
||||
final preferTemp = status.sensors
|
||||
.firstWhereOrNull(
|
||||
(e) => e.device == preferTempDev,
|
||||
)
|
||||
?.props
|
||||
.values
|
||||
.firstOrNull
|
||||
?.current;
|
||||
if (preferTemp != null) return preferTemp;
|
||||
}
|
||||
// Last priority
|
||||
final temp = status.temps.first;
|
||||
if (temp != null) {
|
||||
return temp;
|
||||
}
|
||||
if (sensorTemp != null) {
|
||||
return sensorTemp;
|
||||
}
|
||||
return null;
|
||||
}();
|
||||
final tempVal = temperatureVal != null
|
||||
? '${temperatureVal.toStringAsFixed(1)}°C'
|
||||
: null;
|
||||
final upTime = status.more[StatusCmdType.uptime];
|
||||
final items = [tempVal ?? cmdTemp, upTime];
|
||||
final items = [
|
||||
cmdTemp ??
|
||||
(temperatureVal != null
|
||||
? '${temperatureVal.toStringAsFixed(1)}°C'
|
||||
: null),
|
||||
upTime
|
||||
];
|
||||
final str = items.where((e) => e != null && e.isNotEmpty).join(' | ');
|
||||
if (str.isEmpty) return l10n.noResult;
|
||||
return str;
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
|
||||
class Temperatures {
|
||||
final Map<String, double> _map = {};
|
||||
|
||||
@@ -37,14 +35,6 @@ class Temperatures {
|
||||
if (_map.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
final preferTemperatureDevs = Stores.setting.preferTemperatureDevs.fetch();
|
||||
if (preferTemperatureDevs.isNotEmpty) {
|
||||
for (final key in preferTemperatureDevs) {
|
||||
if (_map.containsKey(key)) {
|
||||
return _map[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final key in _cpuTemp) {
|
||||
if (_map.containsKey(key)) {
|
||||
return _map[key];
|
||||
|
||||
Reference in New Issue
Block a user