From 1a64dc5cba59139ab1cb813946f1e777813b7362 Mon Sep 17 00:00:00 2001 From: lollipopkit Date: Tue, 20 Feb 2024 15:40:14 +0800 Subject: [PATCH] readd: server tags --- ios/Runner.xcodeproj/project.pbxproj | 36 ++++++++++---------- lib/data/model/container/ps.dart | 8 +++++ lib/data/provider/server.dart | 14 ++++---- lib/data/provider/snippet.dart | 9 ++--- lib/data/res/build_data.dart | 6 ++-- lib/view/page/server/edit.dart | 2 +- lib/view/page/server/tab.dart | 2 +- lib/view/page/snippet/edit.dart | 2 +- lib/view/widget/tag.dart | 47 ++++++++++++++------------ macos/Runner.xcodeproj/project.pbxproj | 12 +++---- 10 files changed, 76 insertions(+), 62 deletions(-) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 5b72352f..b358ee17 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -586,7 +586,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -596,7 +596,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -720,7 +720,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -730,7 +730,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -748,7 +748,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -758,7 +758,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -779,7 +779,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -792,7 +792,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; @@ -818,7 +818,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -831,7 +831,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -854,7 +854,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; @@ -867,7 +867,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.StatusWidget; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -890,7 +890,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -902,7 +902,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; @@ -931,7 +931,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -943,7 +943,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; @@ -969,7 +969,7 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_PREVIEWS = YES; @@ -981,7 +981,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox.WatchEnd; PRODUCT_NAME = ServerBox; diff --git a/lib/data/model/container/ps.dart b/lib/data/model/container/ps.dart index e0ce2a42..c8c012bb 100644 --- a/lib/data/model/container/ps.dart +++ b/lib/data/model/container/ps.dart @@ -32,9 +32,13 @@ final class PodmanPs implements ContainerPs { final List? names; final int? startedAt; + @override String? cpu; + @override String? mem; + @override String? net; + @override String? disk; PodmanPs({ @@ -115,9 +119,13 @@ final class DockerPs implements ContainerPs { final String? names; final String? state; + @override String? cpu; + @override String? mem; + @override String? net; + @override String? disk; DockerPs({ diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index a8e59323..75c984b3 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -30,8 +30,8 @@ class ServerProvider extends ChangeNotifier { Iterable get servers => _servers.values; final Order _serverOrder = []; Order get serverOrder => _serverOrder; - final List _tags = []; - List get tags => _tags; + final _tags = ValueNotifier([]); + ValueNotifier> get tags => _tags; Timer? _timer; @@ -87,17 +87,17 @@ class ServerProvider extends ChangeNotifier { } void _updateTags() { - _tags.clear(); + _tags.value.clear(); for (final s in _servers.values) { if (s.spi.tags == null) continue; for (final t in s.spi.tags!) { - if (!_tags.contains(t)) { - _tags.add(t); + if (!_tags.value.contains(t)) { + _tags.value.add(t); } } } - _tags.sort(); - notifyListeners(); + _tags.value.sort(); + _tags.notifyListeners(); } void renameTag(String old, String new_) { diff --git a/lib/data/provider/snippet.dart b/lib/data/provider/snippet.dart index e69118c4..2ffe2128 100644 --- a/lib/data/provider/snippet.dart +++ b/lib/data/provider/snippet.dart @@ -10,8 +10,8 @@ class SnippetProvider extends ChangeNotifier { late Order _snippets; Order get snippets => _snippets; - final _tags = []; - List get tags => _tags; + final _tags = ValueNotifier([]); + ValueNotifier> get tags => _tags; void load() { _snippets = Stores.snippet.fetch(); @@ -30,7 +30,7 @@ class SnippetProvider extends ChangeNotifier { } void _updateTags() { - _tags.clear(); + _tags.value.clear(); final tags = {}; for (final s in _snippets) { if (s.tags?.isEmpty ?? true) { @@ -38,7 +38,8 @@ class SnippetProvider extends ChangeNotifier { } tags.addAll(s.tags!); } - _tags.addAll(tags); + _tags.value.addAll(tags); + _tags.notifyListeners(); } void add(Snippet snippet) { diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index fe0469e6..7581ddae 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,9 +2,9 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 764; + static const int build = 770; static const String engine = "3.19.0"; - static const String buildAt = "2024-02-18 17:34:50"; - static const int modifications = 2; + static const String buildAt = "2024-02-20 15:34:30"; + static const int modifications = 10; static const int script = 38; } diff --git a/lib/view/page/server/edit.dart b/lib/view/page/server/edit.dart index 746164c3..6a69a56b 100644 --- a/lib/view/page/server/edit.dart +++ b/lib/view/page/server/edit.dart @@ -217,7 +217,7 @@ class _ServerEditPageState extends State { TagEditor( tags: _tags, onChanged: (p0) => _tags = p0, - allTags: [...Pros.server.tags], + allTags: [...Pros.server.tags.value], onRenameTag: Pros.server.renameTag, ), _buildAuth(), diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index 92f62b76..0b91e8e6 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -81,7 +81,7 @@ class _ServerPageState extends State Widget _buildBody() { final child = Consumer( builder: (_, pro, __) { - if (!pro.tags.contains(_tag)) { + if (!pro.tags.value.contains(_tag)) { _tag = null; } if (pro.serverOrder.isEmpty) { diff --git a/lib/view/page/snippet/edit.dart b/lib/view/page/snippet/edit.dart index 1e33b515..705b19d3 100644 --- a/lib/view/page/snippet/edit.dart +++ b/lib/view/page/snippet/edit.dart @@ -140,7 +140,7 @@ class _SnippetEditPageState extends State onChanged: (p0) => setState(() { _tags.value = p0; }), - allTags: [...Pros.snippet.tags], + allTags: [...Pros.snippet.tags.value], onRenameTag: (old, n) => setState(() { Pros.snippet.renameTag(old, n); }), diff --git a/lib/view/widget/tag.dart b/lib/view/widget/tag.dart index aac5a400..aa2a877f 100644 --- a/lib/view/widget/tag.dart +++ b/lib/view/widget/tag.dart @@ -180,7 +180,7 @@ class _TagEditorState extends State { } class TagSwitcher extends StatelessWidget implements PreferredSizeWidget { - final List tags; + final ValueNotifier> tags; final double width; final void Function(String?) onTagChanged; final String? initTag; @@ -197,26 +197,31 @@ class TagSwitcher extends StatelessWidget implements PreferredSizeWidget { @override Widget build(BuildContext context) { - if (tags.isEmpty) return UIs.placeholder; - final items = [null, ...tags]; - return Container( - height: _kTagBtnHeight, - width: width, - padding: const EdgeInsets.symmetric(horizontal: 7), - alignment: Alignment.center, - color: Colors.transparent, - child: ListView.builder( - scrollDirection: Axis.horizontal, - itemBuilder: (context, index) { - final item = items[index]; - return TagBtn( - content: item == null ? all : '#$item', - isEnable: initTag == item, - onTap: () => onTagChanged(item), - ); - }, - itemCount: items.length, - ), + return ValueListenableBuilder( + valueListenable: tags, + builder: (_, vals, __) { + if (vals.isEmpty) return UIs.placeholder; + final items = [null, ...vals]; + return Container( + height: _kTagBtnHeight, + width: width, + padding: const EdgeInsets.symmetric(horizontal: 7), + alignment: Alignment.center, + color: Colors.transparent, + child: ListView.builder( + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + final item = items[index]; + return TagBtn( + content: item == null ? all : '#$item', + isEnable: initTag == item, + onTap: () => onTagChanged(item), + ); + }, + itemCount: items.length, + ), + ); + }, ); } diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 67fa457d..89adb978 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -439,7 +439,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -449,7 +449,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -574,7 +574,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Server Box"; @@ -584,7 +584,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -604,7 +604,7 @@ "CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 764; + CURRENT_PROJECT_VERSION = 770; DEVELOPMENT_TEAM = ""; "DEVELOPMENT_TEAM[sdk=macosx*]" = BA88US33G6; INFOPLIST_FILE = Runner/Info.plist; @@ -615,7 +615,7 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 1.0.764; + MARKETING_VERSION = 1.0.770; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "Server Box"; PROVISIONING_PROFILE_SPECIFIER = "";