101 lines
2.5 KiB
Dart
101 lines
2.5 KiB
Dart
|
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:oc_front/models/resources/resources.dart';
|
||
|
|
||
|
class WorkflowItem extends AbstractItem<WorkflowPricing, WorkflowPartnership, WorkflowInstance, WorkflowItem> {
|
||
|
// special attributes
|
||
|
String? workflowID;
|
||
|
|
||
|
WorkflowItem({
|
||
|
this.workflowID,
|
||
|
}): super();
|
||
|
|
||
|
@override String get topic => "workflow";
|
||
|
|
||
|
@override deserialize(dynamic data) {
|
||
|
try { data = data as Map<String, dynamic>;
|
||
|
} catch (e) { return WorkflowItem(); }
|
||
|
var w = WorkflowItem(
|
||
|
workflowID: data.containsKey("workflow_id") && data["workflow_id"] != null ? data["workflow_id"] : null,
|
||
|
);
|
||
|
w.mapFromJSON(data, WorkflowInstance());
|
||
|
if (w.logo != null) { // get image dimensions
|
||
|
var image = Image.network(w.logo!);
|
||
|
image.image
|
||
|
.resolve(const ImageConfiguration())
|
||
|
.addListener(
|
||
|
ImageStreamListener(
|
||
|
(ImageInfo info, bool _) {
|
||
|
w.width = info.image.width.toDouble();
|
||
|
w.height = info.image.height.toDouble();
|
||
|
}));
|
||
|
}
|
||
|
return w;
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
Map<String, dynamic> infos() {
|
||
|
return {};
|
||
|
}
|
||
|
|
||
|
@override Map<String, dynamic> serialize() {
|
||
|
Map<String, dynamic> obj ={
|
||
|
"workflow_id": workflowID,
|
||
|
};
|
||
|
obj.addAll(toJSON());
|
||
|
return obj;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class WorkflowInstance extends AbstractInstance<WorkflowPricing, WorkflowPartnership> {
|
||
|
WorkflowInstance(): super();
|
||
|
|
||
|
@override
|
||
|
WorkflowInstance deserialize(json) {
|
||
|
try { json = json as Map<String, dynamic>;
|
||
|
} catch (e) { return WorkflowInstance(); }
|
||
|
var w = WorkflowInstance();
|
||
|
w.mapFromJSON(json, WorkflowPartnership());
|
||
|
return w;
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
Map<String, dynamic> infos() {
|
||
|
return {};
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
Map<String, dynamic> serialize() {
|
||
|
return toJSON();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class WorkflowPartnership extends AbstractPartnerShip<WorkflowPricing> {
|
||
|
WorkflowPartnership(): super();
|
||
|
|
||
|
@override
|
||
|
WorkflowPartnership deserialize(json) {
|
||
|
try { json = json as Map<String, dynamic>;
|
||
|
} catch (e) { return WorkflowPartnership(); }
|
||
|
var w = WorkflowPartnership();
|
||
|
w.mapFromJSON(json, WorkflowPricing());
|
||
|
return w;
|
||
|
}
|
||
|
|
||
|
@override
|
||
|
Map<String, dynamic> serialize() {
|
||
|
return toJSON();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class WorkflowPricing extends AbstractPricing {
|
||
|
@override WorkflowPricing deserialize(json) {
|
||
|
var w = WorkflowPricing();
|
||
|
w.mapFromJSON(json);
|
||
|
return w;
|
||
|
}
|
||
|
@override
|
||
|
Map<String, dynamic> serialize() {
|
||
|
return toJSON();
|
||
|
}
|
||
|
}
|