This commit is contained in:
mr
2024-11-08 13:59:22 +01:00
parent 685badc59a
commit 1ca77b6611
69 changed files with 1601 additions and 1337 deletions

View File

@@ -1,11 +1,27 @@
import 'package:flutter/material.dart';
import 'package:oc_front/core/models/workspace_local.dart';
import 'package:oc_front/core/sections/header/default.dart';
import 'package:oc_front/core/sections/header/menu.dart';
import 'package:oc_front/core/sections/header/search.dart';
import 'package:oc_front/core/services/perms_service.dart';
import 'package:oc_front/core/services/router.dart';
import 'package:oc_front/widgets/menus/clipper_menu.dart';
import 'package:oc_front/main.dart';
import 'package:oc_front/pages/shared.dart';
import 'package:oc_front/widgets/inputs/shallow_dropdown_input.dart';
import 'package:oc_front/widgets/inputs/shallow_text_input.dart';
class SearchConstants {
static final Map<String, String?> _searchHost = {};
static String? get() { return _searchHost[AppRouter.currentRoute.route]; }
static void set(String? search) { _searchHost[AppRouter.currentRoute.route] = search; }
static void remove() { _searchHost.remove(AppRouter.currentRoute.route); }
static void clear() { _searchHost.clear(); }
}
class HeaderConstants {
static GlobalKey<HeaderMenuWidgetState> headerKey = GlobalKey<HeaderMenuWidgetState>();
static final List<RouterItem> noHeader = [
AppRouter.scheduler,
AppRouter.shared,
AppRouter.workflowItem,
AppRouter.workflowIDItem,
];
@@ -14,6 +30,11 @@ class HeaderConstants {
static String? title;
static String? description;
static getKey() {
headerKey = GlobalKey<HeaderMenuWidgetState>();
return headerKey;
}
static setTitle(String? v) {
title = v;
HeaderConstants.headerWidget?.setState(() {});
@@ -36,11 +57,65 @@ class HeaderWidget extends StatefulWidget {
class HeaderWidgetState extends State<HeaderWidget> {
@override Widget build(BuildContext context) {
HeaderConstants.headerWidget = this;
headerMenuKey.currentState?.closeMenu();
HeaderConstants.height = HeaderConstants.isNoHeader(AppRouter.currentRoute.route) ? 50 : 200;
if (HeaderConstants.isNoHeader(AppRouter.currentRoute.route)) {
return Container();
}
if (AppRouter.currentRoute.factory.searchFill()) {
return DefaultWidget();
}
HeaderConstants.height = HeaderConstants.isNoHeader(AppRouter.currentRoute.route) || AppRouter.currentRoute.factory.searchFill() ? 50 : 100;
return Column( children: [
const HeaderMenuWidget(),
HeaderConstants.isNoHeader(AppRouter.currentRoute.route) ? Container() : SearchWidget()
AppRouter.currentRoute.factory.searchFill() ? Container() : Container(
height: 50, width: getMainWidth(context),
decoration: BoxDecoration(
color: midColor,
border: Border(bottom: BorderSide(color: Colors.white, width: 1),)
),
child: Row(crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.end,
children: [
ShallowTextInputWidget(
filled: midColor,
width: getMainWidth(context) - 451,
type: CollaborativeAreaType.workspace,
hint: "search in resources...",
iconLoad: PermsService.getPerm(Perms.SEARCH_INTERNAL) ? Icons.search : null,
iconRemove: PermsService.getPerm(Perms.SEARCH_EXTERNAL) ? Icons.screen_search_desktop_outlined : null,
tooltipLoad: PermsService.getPerm(Perms.SEARCH_INTERNAL) ? "search" : null,
tooltipRemove: PermsService.getPerm(Perms.SEARCH_EXTERNAL) ? "distributed search" : null,
canLoad: PermsService.getPerm(Perms.SEARCH_INTERNAL) ? (String? str) => str != null && str.isNotEmpty : null,
canRemove: PermsService.getPerm(Perms.SEARCH_EXTERNAL) ? (String? str) => str != null && str.isNotEmpty : null,
change: (value) => SearchConstants.set(value),
loadStr: PermsService.getPerm(Perms.SEARCH_INTERNAL) ? (String val) async {
AppRouter.currentRoute.factory.search(context, false);
} : null,
remove: PermsService.getPerm(Perms.SEARCH_EXTERNAL) ? (String val) async {
AppRouter.currentRoute.factory.search(context, true);
} : null,
),
Container( padding: EdgeInsets.only(left: 50),
decoration: BoxDecoration( border: Border( left: BorderSide( color: Colors.white ))),
child: ShallowDropdownInputWidget(
prefixIcon: Padding( padding: EdgeInsets.only(right: 10), child: Icon(Icons.shopping_cart, color: Colors.grey)),
current: WorkspaceLocal.current,
width: 350,
all: () async => WorkspaceLocal.getWorkspacesShallow(),
type: CollaborativeAreaType.workspace,
change: (String? change) {
WorkspaceLocal.changeWorkspace(change.toString());
},
canLoad: (p0) => true,
load: (p0) async {
scaffoldKey.currentState?.openEndDrawer();
},
tooltipLoad: "open workspace manager",
iconLoad: Icons.remove_red_eye,
color: Colors.black,
filled: midColor,
hintColor: Colors.grey,
))
])
),
],);
}
}