oauth2 state of mind

This commit is contained in:
mr
2026-03-06 10:26:00 +01:00
parent deaaf28a3c
commit b16104bb6a
28 changed files with 628 additions and 367 deletions

View File

@@ -12,12 +12,15 @@ import 'package:oc_front/models/resources/processing.dart';
import 'package:oc_front/models/resources/resources.dart';
import 'package:oc_front/models/resources/storage.dart';
import 'package:oc_front/models/resources/workflow.dart';
import 'package:oc_front/models/resources/workflow_event.dart';
import 'package:oc_front/models/response.dart';
import 'package:oc_front/models/workflow.dart';
import 'package:oc_front/pages/abstract_page.dart';
import 'package:oc_front/pages/shared.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:oc_front/widgets/dialog/shallow_creation.dart';
import 'package:oc_front/widgets/forms/resource_forms.dart';
import 'package:oc_front/widgets/forms/workflow_event_forms.dart';
import 'package:oc_front/widgets/forms/scheduler_forms.dart';
import 'package:oc_front/widgets/forms/storage_processing_link_forms.dart';
import 'package:oc_front/widgets/items/item_row.dart';
@@ -52,9 +55,15 @@ class WorkflowPageWidgetState extends State<WorkflowPageWidget> {
final WorflowService _service = WorflowService();
Widget itemBuild(Object item) {
var e = item as AbstractItem;
if (e is WorkflowEventItem) {
return Tooltip(
message: e.name ?? "Event",
child: SvgPicture.asset('assets/images/workflow_event.svg', fit: BoxFit.contain),
);
}
return Tooltip( message: item.name ?? "",
child: e.logo != null ? Image.network(e.logo ?? "", fit: BoxFit.fill)
: Image.network('https://get-picto.com/wp-content/uploads/2024/01/logo-instagram-png.webp',
child: e.logo != null ? Image.network(e.logo ?? "", fit: BoxFit.fill)
: Image.network('https://get-picto.com/wp-content/uploads/2024/01/logo-instagram-png.webp',
fit: BoxFit.fill));
}
Widget itemTooltipBuild(Object item) {
@@ -75,8 +84,13 @@ final WorflowService _service = WorflowService();
List<Widget> getForms(FlowData? obj, String id) {
var objAbs = obj as AbstractItem?;
if (objAbs == null) { return []; }
List<Widget> res = [ ResourceFormsWidget(item: objAbs, dash: dash, elementID: id) ];
return [ Wrap(
List<Widget> res;
if (objAbs is WorkflowEventItem) {
res = [ WorkflowEventFormsWidget(item: objAbs, dash: dash, elementID: id) ];
} else {
res = [ ResourceFormsWidget(item: objAbs, dash: dash, elementID: id) ];
}
return [ Wrap(
alignment: WrapAlignment.center,
children: [
Container( padding: const EdgeInsets.all(10), width: 250, height: 60,
@@ -84,7 +98,7 @@ final WorflowService _service = WorflowService();
child: const Column( mainAxisAlignment: MainAxisAlignment.center, children: [
Text("ELEMENT INFO", style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold), textAlign: TextAlign.center),
Text("<general>", style: TextStyle(fontSize: 12), textAlign: TextAlign.center),
])),
])),
...res
]) ];
}
@@ -124,6 +138,8 @@ final WorflowService _service = WorflowService();
return const Icon(FontAwesomeIcons.microchip, size: 16);
} else if (objAbs.topic == "workflows" ) {
return const Icon(FontAwesomeIcons.diagramProject, size: 16);
} else if (objAbs.topic == "event" ) {
return const Icon(FontAwesomeIcons.bolt, size: 16);
}
return null;
}
@@ -167,6 +183,7 @@ final WorflowService _service = WorflowService();
var storage = dash.elements.where( (e) => e.element?.serialize()["type"] == "storage");
var processing = dash.elements.where( (e) => e.element?.serialize()["type"] == "processing");
var workflows = dash.elements.where( (e) => e.element?.serialize()["type"] == "workflow");
var events = dash.elements.where( (e) => e.element?.serialize()["type"] == "event");
var updateW = Workflow(
name: dash.name,
graph: Graph(),
@@ -175,6 +192,7 @@ final WorflowService _service = WorflowService();
storage: storage.map((e) => e.element?.getID()).toSet().toList(),
processing: processing.map((e) => e.element?.getID()).toSet().toList(),
workflows: workflows.map((e) => e.element?.getID()).toSet().toList(),
events: events.map((e) => e.element?.getID()).toSet().toList(),
);
updateW.fromDashboard(dash.serialize());
for (var item in (updateW.graph?.items.values ?? [] as List<GraphItem>)) {
@@ -210,6 +228,7 @@ final WorflowService _service = WorflowService();
if (data["type"] == "storage") { return StorageItem().deserialize(data); }
if (data["type"] == "processing") { return ProcessingItem().deserialize(data); }
if (data["type"] == "workflows") { return WorkflowItem().deserialize(data); }
if (data["type"] == "event") { return WorkflowEventItem().deserialize(data); }
return null;
}
@@ -339,8 +358,13 @@ final WorflowService _service = WorflowService();
current: widget.id,
itemWidget: itemBuild,
menuWidget: onDashboardMenu,
categories: const ["processing", "data", "compute", "storage", "workflows"],
draggableItemBuilder: (cat) => WorkspaceLocal.byTopic(cat, false),
categories: const ["processing", "data", "compute", "storage", "workflows", "event"],
draggableItemBuilder: (cat) {
if (cat == "event") {
return [ WorkflowEventItem()..name = "Event"..type = "event" ];
}
return WorkspaceLocal.byTopic(cat, false);
},
itemWidgetTooltip: itemTooltipBuild,
innerMenuWidth: 350,
width: getMainWidth(context),