import 'package:fis_lib_report/report/element_tag.dart'; import 'package:fis_lib_report/report/element_type.dart'; import 'package:fis_lib_report/report/interfaces/element.dart'; import 'package:fis_lib_report/report/interfaces/position_layout.dart'; import 'package:fis_lib_report/report/interfaces/report_element.dart'; import 'package:fis_lib_report/report/measure_tag.dart'; import 'package:fis_lib_report/report/rt_thickness.dart'; import 'package:uuid/uuid.dart'; class Element implements IElement { @override ElementType? elementType; @override HorizontalLayout? horizontalAlignment; @override int? index; @override RTThickness? margin; @override MeasureTag? measureTag; @override IReportElement? parent; @override ElementTag? tag; @override VerticalLayout? verticalAlignment; @override String? id; Element(); Element.fromParent(this.parent) { id = const Uuid().v1(); margin = RTThickness.uniform(0); horizontalAlignment = HorizontalLayout.Stretch; verticalAlignment = VerticalLayout.Stretch; } Element.fromJson(Map json) { id = json['Id'] ?? const Uuid().v1(); margin = RTThickness.fromJson(json['Margin']); if (json['MeasureTag'] == null) { measureTag = null; } else { measureTag = MeasureTag.fromJson(json['MeasureTag']); } if (json['Tag'] == null) { tag = null; } else { tag = ElementTag.fromJson(json['Tag']); } horizontalAlignment = HorizontalLayout.values .firstWhere((e) => e.name == json['HorizontalAlignment']); verticalAlignment = VerticalLayout.values .firstWhere((e) => e.name == json['VerticalAlignment']); elementType = ElementType.fromJson(json['ElementType']); index = json[index]; //parent } }