From 058633742eee07924989aeaf48a594a9ecdb8b83 Mon Sep 17 00:00:00 2001 From: mr Date: Wed, 5 Feb 2025 16:04:57 +0100 Subject: [PATCH] debug --- lib/widgets/logs.dart | 27 ++++++++++++++----- lib/widgets/sheduler_items/schedule.dart | 23 ++++++++++------ .../sheduler_items/scheduler_item.dart | 4 +-- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/lib/widgets/logs.dart b/lib/widgets/logs.dart index 0c598d9..b2ef98c 100644 --- a/lib/widgets/logs.dart +++ b/lib/widgets/logs.dart @@ -8,17 +8,28 @@ import 'package:oc_front/widgets/dialog/alert.dart'; import 'package:json_string/json_string.dart'; import 'package:oc_front/core/services/specialized_services/logs_service.dart'; +bool isLoading = true; +Map valid = {}; class LogsWidget extends StatefulWidget { String? level; String search = ""; - WorkflowExecution? exec; + List logs = []; LogsWidget ({ Key? key, this.search = "", this.level, this.exec }): super(key: key); @override LogsWidgetState createState() => LogsWidgetState(); } class LogsWidgetState extends State { @override Widget build(BuildContext context) { + if (!isLoading) { + isLoading = true; + Future.delayed(const Duration(milliseconds: 100), () { + try { setState(() { }); + } catch (e) { /**/ } + }); + return Container( height: getMainHeight(context) - 100, + child: Center( child: CircularProgressIndicator()) ); + } if (widget.exec == null) { return Container(); } else { @@ -42,18 +53,18 @@ class LogsWidgetState extends State { end = (DateTime.parse(widget.exec!.startDate!).add( const Duration(days: 14)).microsecondsSinceEpoch).toString(); } } catch(e) { /* */ } + Future.delayed(const Duration(minutes: 1), () { + try { setState(() {}); + } catch (e) { /**/ } + }); return FutureBuilder(future: LogsService().search(context, [], { "workflow_execution_id": widget.exec!.id, "start": start, "end": end }), builder: (a, b) { - Future.delayed(const Duration(minutes: 1), () { - try { - setState(() {}); - } catch (e) {} - }); List logs = []; if (b.data != null && b.data!.data != null) { + isLoading = false; var d = b.data!.data!; for( var r in d.result) { for (var element in r.logs) { @@ -65,6 +76,10 @@ class LogsWidgetState extends State { } List itemRows = logs.where((element) => (element.message?.toLowerCase().contains(widget.search.toLowerCase()) ?? true) && (widget.level?.contains(element.level ?? "") ?? true) ).map((e) => LogWidget(item: e)).toList(); + if (isLoading) { + return Container( height: getMainHeight(context) - 100, + child: Center( child: CircularProgressIndicator()) ); + } return Stack( children: [ SingleChildScrollView( child: itemRows.isEmpty ? Container( height: getMainHeight(context) - 100, diff --git a/lib/widgets/sheduler_items/schedule.dart b/lib/widgets/sheduler_items/schedule.dart index 5bb311b..07c0ab3 100644 --- a/lib/widgets/sheduler_items/schedule.dart +++ b/lib/widgets/sheduler_items/schedule.dart @@ -2,7 +2,6 @@ import 'package:oc_front/main.dart'; import 'package:flutter/material.dart'; import 'package:oc_front/widgets/logs.dart'; import 'package:oc_front/models/workflow.dart'; -import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:flutter_box_transform/flutter_box_transform.dart'; import 'package:oc_front/widgets/lib/tranformablebox.dart' as fork; import 'package:oc_front/widgets/sheduler_items/scheduler_item.dart'; @@ -19,6 +18,7 @@ class ScheduleWidget extends StatefulWidget { bool loading = true; bool isList = true; bool isBox = true; + String? selectedID; AbstractService service = WorkflowExecutionService(); ScheduleWidget ({ super.key, required this.start, required this.end, this.isBox =true, this.isList = true, this.loading = false}); @@ -62,7 +62,9 @@ class ScheduleWidgetState extends State { for (var wf in data[selected!] ?? ([])) { DateTime d2 = DateTime.parse(wf.startDate!).toLocal(); children.add( InkWell( - onTap: () => setState(() { selectedReal = wf.startDate; }), + onTap: () => setState(() { + selectedReal = wf.startDate; + }), child: Container( margin: const EdgeInsets.all(10), decoration: BoxDecoration( border: Border.all(color: selectedReal != null && selectedReal == wf.startDate ? lightColor : Colors.transparent, width: 2), @@ -94,12 +96,12 @@ class ScheduleWidgetState extends State { )); } } - String? selectedID; + WorkflowExecution? sel; if (selectedReal != null) { try { sel = data[selected!]!.firstWhere((element) => element.startDate == selectedReal); - selectedID = sel.id; + widget.selectedID = sel.id; } catch(e) { /* */ } } menuSize = isInfo ? getMainWidth(context) : (menuSize > getMainWidth(context) / 2 ? getMainWidth(context) / 2 : menuSize); @@ -129,7 +131,9 @@ class ScheduleWidgetState extends State { child: Column( children: [ Row( children: [ - InkWell( onTap: () => setState(() { widget.isDayPlanner = true; }), + InkWell( onTap: () => setState(() { + widget.isDayPlanner = true; + }), child: Tooltip( message: "day planning", child: Container( height: 50, width: (isInfo ? getMainWidth(context) : (selected != null ? menuSize : 0)) / (selectedReal != null ? 2 : 1 ), alignment: Alignment.center, @@ -139,7 +143,10 @@ class ScheduleWidgetState extends State { child: Icon(Icons.calendar_today_outlined, color: widget.isDayPlanner ? Colors.white : Colors.grey), ) )), - InkWell( onTap: () => setState(() { widget.isDayPlanner = false; }), + InkWell( onTap: () => setState(() { + widget.isDayPlanner = false; + + }), child: Tooltip( message: "monitor task", child: Container( height: 50, width: selectedReal == null ? 0 : ( (isInfo ? getMainWidth(context) : (selected != null ? menuSize : 0)) / 2), @@ -158,8 +165,8 @@ class ScheduleWidgetState extends State { SingleChildScrollView( child: Column( mainAxisAlignment: children.isEmpty || widget.loading ? MainAxisAlignment.center : MainAxisAlignment.start, children: [ - ...( widget.isDayPlanner ? children : ( selectedID != null ? [ - widget.loading ? const SpinKitCircle(color: Colors.white,) : LogsWidget(exec: sel, search: search, level: level) + ...( widget.isDayPlanner ? children : ( widget.selectedID != null ? [ + LogsWidget(exec: sel, search: search, level: level) ] : [])), children.isEmpty ? Container( height: 100, alignment: Alignment.center, child: const Text("No event found", style: TextStyle(color: Colors.grey, fontSize: 20))) : Container() ]), diff --git a/lib/widgets/sheduler_items/scheduler_item.dart b/lib/widgets/sheduler_items/scheduler_item.dart index 2ec92d0..58b5fb3 100644 --- a/lib/widgets/sheduler_items/scheduler_item.dart +++ b/lib/widgets/sheduler_items/scheduler_item.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter_box_transform/flutter_box_transform.dart'; -import 'package:oc_front/core/sections/header/header.dart'; import 'package:oc_front/main.dart'; import 'package:oc_front/models/workflow.dart'; import 'package:oc_front/widgets/sheduler_items/schedule.dart'; @@ -34,7 +32,9 @@ class SchedulerItemWidgetState extends State { widgets.add(InkWell( onTap: () => widget.parent?.setState(() { selected = selected != element || ev.startDate != selectedReal ? element : null; + widget.parent!.widget.selectedID = selected; selectedReal = selected == null ? null : ev.startDate; + print("there"); if (selectedReal == null) { widget.parent!.widget.isDayPlanner = true; }