Major Change Inputs & Co
This commit is contained in:
@@ -1,26 +1,71 @@
|
||||
import 'package:oc_front/main.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:oc_front/widgets/catalog.dart';
|
||||
import 'package:localstorage/localstorage.dart';
|
||||
import 'package:oc_front/pages/abstract_page.dart';
|
||||
import 'package:oc_front/models/resources/resources.dart';
|
||||
import 'package:oc_front/core/sections/header/header.dart';
|
||||
import 'package:oc_front/core/services/specialized_services/resource_service.dart';
|
||||
import 'package:oc_front/main.dart';
|
||||
import 'package:oc_front/models/search.dart';
|
||||
import 'package:oc_front/widgets/catalog.dart';
|
||||
import 'package:oc_front/pages/abstract_page.dart';
|
||||
|
||||
|
||||
class CatalogFactory implements AbstractFactory {
|
||||
@override GlobalKey getKey() { return key; }
|
||||
static GlobalKey<CatalogPageWidgetState> key = GlobalKey<CatalogPageWidgetState>();
|
||||
@override bool searchFill() { return key.currentState?.widget.items.isEmpty ?? true; }
|
||||
@override Widget factory(GoRouterState state, List<String> args) { return CatalogPageWidget(); }
|
||||
@override void search(BuildContext context, bool special) {
|
||||
if (special) { return; }
|
||||
CatalogFactory.key.currentState?.widget.search.search(context, [ SearchConstants.get()! ], {}).then((value) {
|
||||
if (value.data == null) { return; }
|
||||
key.currentState?.widget.items = [ ...value.data!.workflows,
|
||||
...value.data!.processings, ...value.data!.datas, ...value.data!.storages, ...value.data!.computes,];
|
||||
@override void back(BuildContext context) {
|
||||
var s = (localStorage.getItem("search") ?? "");
|
||||
if (s != "") {
|
||||
localStorage.setItem("search", s.split(",").sublist(1).join(","));
|
||||
SearchConstants.set(s.split(",").sublist(1).join(","));
|
||||
if ((localStorage.getItem("search") ?? "") == "") {
|
||||
SearchConstants.remove();
|
||||
key.currentState?.widget.isSearch = true;
|
||||
key.currentState?.widget.items = [];
|
||||
HeaderConstants.headerKey.currentState?.setState(() {});
|
||||
HeaderConstants.headerWidget?.setState(() {});
|
||||
CatalogFactory.key.currentState?.setState(() {});
|
||||
} else {
|
||||
CatalogFactory().search(context, false);
|
||||
}
|
||||
} else {
|
||||
SearchConstants.remove();
|
||||
key.currentState?.widget.isSearch = true;
|
||||
key.currentState?.widget.items = [];
|
||||
HeaderConstants.headerKey.currentState?.setState(() {});
|
||||
HeaderConstants.headerWidget?.setState(() {});
|
||||
CatalogFactory.key.currentState?.setState(() {}); // ignore: invalid_use_of_protected_member
|
||||
CatalogFactory.key.currentState?.setState(() {});
|
||||
}
|
||||
}
|
||||
@override bool searchFill() { return (key.currentState?.widget.items.isEmpty ?? true) && (key.currentState?.widget.isSearch ?? true); }
|
||||
@override Widget factory(GoRouterState state, List<String> args) { return CatalogPageWidget(); }
|
||||
@override String? getSearch() {
|
||||
if ((localStorage.getItem("search") ?? "") == "") { return null; }
|
||||
return localStorage.getItem("search")!.split(",")[0];
|
||||
}
|
||||
@override void search(BuildContext context, bool special) {
|
||||
if (special) { return; } // T
|
||||
key.currentState?.widget.isSearch = true;
|
||||
var s = (localStorage.getItem("search") ?? "");
|
||||
if (s != "") {
|
||||
if (SearchConstants.get() == null) {
|
||||
localStorage.setItem("search", s);
|
||||
} else if (s.split(",")[0] != SearchConstants.get()) {
|
||||
localStorage.setItem("search", "${SearchConstants.get()!},$s");
|
||||
}
|
||||
} else if ((SearchConstants.get() ?? "") == "") { return;
|
||||
} else { localStorage.setItem("search", SearchConstants.get()!); }
|
||||
CatalogFactory.key.currentState?.widget.search.search(context, [
|
||||
localStorage.getItem("search")!.split(",")[0] ], {}).then((value) {
|
||||
if (value.data == null) {
|
||||
key.currentState?.widget.items = [];
|
||||
} else {
|
||||
key.currentState?.widget.isSearch = false;
|
||||
key.currentState?.widget.items = [ ...value.data!.workflows,
|
||||
...value.data!.processings, ...value.data!.datas, ...value.data!.storages, ...value.data!.computes,];
|
||||
}
|
||||
HeaderConstants.headerKey.currentState?.setState(() {});
|
||||
HeaderConstants.headerWidget?.setState(() {});
|
||||
CatalogFactory.key.currentState?.setState(() {}); // ignore: invalid_use_of_protected_member
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -28,6 +73,7 @@ class CatalogFactory implements AbstractFactory {
|
||||
// ignore: must_be_immutable
|
||||
class CatalogPageWidget extends StatefulWidget {
|
||||
double? itemWidth;
|
||||
bool isSearch = true;
|
||||
List<AbstractItem> items = [];
|
||||
final ResourceService search = ResourceService();
|
||||
CatalogPageWidget ({
|
||||
@@ -37,7 +83,16 @@ class CatalogPageWidget extends StatefulWidget {
|
||||
}
|
||||
class CatalogPageWidgetState extends State<CatalogPageWidget> {
|
||||
@override Widget build(BuildContext context) {
|
||||
if (widget.items.isEmpty) { return Container(); }
|
||||
if (widget.items.isEmpty) {
|
||||
if (widget.isSearch) { return Container(); }
|
||||
return Container(
|
||||
width: getMainWidth(context),
|
||||
height: getMainHeight(context) - 50,
|
||||
color: Colors.grey.shade300,
|
||||
child: const Center(child: Text("NO RESOURCES FOUND",
|
||||
style: TextStyle(fontSize: 30, color: Colors.grey))
|
||||
),
|
||||
); }
|
||||
return Column( children : [
|
||||
SizedBox( width: getMainWidth(context),
|
||||
height: getMainHeight(context) - 50,
|
||||
@@ -46,35 +101,3 @@ class CatalogPageWidgetState extends State<CatalogPageWidget> {
|
||||
);
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
||||
PermsService.getPerm(Perms.WORKSPACE_SHARE) ? ShallowDropdownInputWidget(
|
||||
iconLoad: Icons.share_rounded,
|
||||
tooltipLoad: 'share',
|
||||
tooltipRemove: 'unshare',
|
||||
color: Colors.white,
|
||||
filled: const Color.fromRGBO(38, 166, 154, 1),
|
||||
hintColor: midColor,
|
||||
type: CollaborativeAreaType.workspace,
|
||||
all: () async => CollaborativeAreaLocal.workspaces.values.map(
|
||||
(e) => Shallow(id: e.id ?? "", name: e.name ?? "") ).toList(),
|
||||
current: WorkspaceLocal.workspaces[WorkspaceLocal.current]?.shared,
|
||||
width: (getMainWidth(context) / 3),
|
||||
canLoad: (String? change) => CollaborativeAreaLocal.workspaces[change] == null
|
||||
|| !CollaborativeAreaLocal.workspaces[change]!.workspaces.map(
|
||||
(e) => e.id ).contains(WorkspaceLocal.current),
|
||||
canRemove: (String? change) => CollaborativeAreaLocal.workspaces[change] == null
|
||||
|| CollaborativeAreaLocal.workspaces[change]!.workspaces.map(
|
||||
(e) => e.id ).contains(WorkspaceLocal.current),
|
||||
load: (String val) async {
|
||||
await SharedService().addWorkspace(context, val, WorkspaceLocal.current ?? "");
|
||||
// ignore: use_build_context_synchronously
|
||||
CollaborativeAreaLocal.init(context, false);
|
||||
},
|
||||
remove: (String val) async {
|
||||
await SharedService().removeWorkspace(context, val, WorkspaceLocal.current ?? "");
|
||||
// ignore: use_build_context_synchronously
|
||||
CollaborativeAreaLocal.init(context, false);
|
||||
}) : Container(width: (getMainWidth(context) / 3), height: 50,
|
||||
color: const Color.fromRGBO(38, 166, 154, 1)),
|
||||
*/
|
||||
Reference in New Issue
Block a user