This commit is contained in:
mr
2025-02-05 16:04:57 +01:00
parent e1968e14b0
commit 058633742e
3 changed files with 38 additions and 16 deletions

View File

@@ -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<String, bool> valid = {};
class LogsWidget extends StatefulWidget {
String? level;
String search = "";
WorkflowExecution? exec;
List<Log> logs = [];
LogsWidget ({ Key? key, this.search = "", this.level, this.exec }): super(key: key);
@override LogsWidgetState createState() => LogsWidgetState();
}
class LogsWidgetState extends State<LogsWidget> {
@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<LogsWidget> {
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<Log> 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<LogsWidget> {
}
List<LogWidget> 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,