Autoload yay
This commit is contained in:
@@ -2,28 +2,76 @@ import 'package:alert_banner/exports.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:json_string/json_string.dart';
|
||||
import 'package:oc_front/core/sections/header/header.dart';
|
||||
import 'package:oc_front/core/services/specialized_services/logs_service.dart';
|
||||
import 'package:oc_front/main.dart';
|
||||
import 'package:oc_front/models/logs.dart';
|
||||
import 'package:oc_front/models/workflow.dart';
|
||||
import 'package:oc_front/widgets/dialog/alert.dart';
|
||||
|
||||
class LogsWidget extends StatefulWidget {
|
||||
final List<Log> items;
|
||||
String? level;
|
||||
String search = "";
|
||||
LogsWidget ({ Key? key, this.search = "", required this.items, this.level }): super(key: key);
|
||||
|
||||
WorkflowExecution? exec;
|
||||
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) {
|
||||
List<LogWidget> itemRows = widget.items.where((element) => (element.message?.toLowerCase().contains(widget.search.toLowerCase()) ?? true)
|
||||
&& (widget.level?.contains(element.level ?? "") ?? true) ).map((e) => LogWidget(item: e)).toList();
|
||||
return Stack( children: [
|
||||
SingleChildScrollView( child: itemRows.isEmpty ?
|
||||
Container( height: getMainHeight(context) - 100,
|
||||
child: const Center( child: Text("no log registered", style: TextStyle(color: Colors.grey, fontSize: 25 ),)))
|
||||
: Column( children: [...itemRows, Container(height: 50,) ] ) ),
|
||||
]);
|
||||
if (widget.exec == null) {
|
||||
return Container();
|
||||
} else {
|
||||
String start = "";
|
||||
String end = "";
|
||||
try {
|
||||
if (widget.exec!.endDate != null && widget.exec!.endDate != "") {
|
||||
var startD = DateTime.parse(widget.exec!.executionData!);
|
||||
var endD = DateTime.parse(widget.exec!.endDate!);
|
||||
var diff = endD.difference(startD);
|
||||
if (diff.inDays < 30) {
|
||||
var rest = ((30 - diff.inDays) ~/ 2) - 1;
|
||||
start = (startD.subtract(Duration(days: rest)).microsecondsSinceEpoch).toString();
|
||||
end = (endD.add(Duration(days: rest)).microsecondsSinceEpoch).toString();
|
||||
} else {
|
||||
start = (startD.microsecondsSinceEpoch).toString();
|
||||
end = (startD.add( const Duration(days: 29)).microsecondsSinceEpoch).toString();
|
||||
}
|
||||
} else {
|
||||
start = (DateTime.parse(widget.exec!.executionData!).subtract( const Duration(days: 14)).microsecondsSinceEpoch).toString();
|
||||
end = (DateTime.parse(widget.exec!.executionData!).add( const Duration(days: 14)).microsecondsSinceEpoch).toString();
|
||||
}
|
||||
} 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), () {
|
||||
setState(() {});
|
||||
});
|
||||
List<Log> logs = [];
|
||||
if (b.data != null && b.data!.data != null) {
|
||||
var d = b.data!.data!;
|
||||
for( var r in d.result) {
|
||||
for (var element in r.logs) {
|
||||
element.level = r.level;
|
||||
logs.add(element);
|
||||
}
|
||||
logs.sort((a, b) => a.timestamp!.compareTo(b.timestamp!));
|
||||
}
|
||||
}
|
||||
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();
|
||||
return Stack( children: [
|
||||
SingleChildScrollView( child: itemRows.isEmpty ?
|
||||
Container( height: getMainHeight(context) - 100,
|
||||
child: const Center( child: Text("no log registered", style: TextStyle(color: Colors.grey, fontSize: 25 ),)))
|
||||
: Column( children: [...itemRows, Container(height: 50,) ] ) ),
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user