GridField.fromJson constructor
Creates a GridField from json
Implementation
factory GridField.fromJson(Map<String, dynamic> json) {
final type = DataType.values
.firstWhere((type) => type.backendName == json['type']['name']);
final id = json['id'];
final name = json['name'];
final key = json['key'];
final links = linkMapFromJson(json['_links']);
final schema = json['schema'];
if (type == DataType.currency) {
return CurrencyGridField(
id: id,
name: name,
key: key,
schema: schema,
links: links,
currency: json['type']['currency'],
);
}
if (type == DataType.lookUp) {
return LookUpGridField(
id: id,
name: name,
key: key,
schema: schema,
links: links,
referenceField: Uri.parse(json['type']['referenceField']),
lookUpField: Uri.parse(json['type']['lookupField']),
lookedUpField: GridField.fromJson({
'id': 'lookedUpId',
'name': 'lookedUp',
'schema': {},
'type': json['type']['lookupType'],
}),
);
}
if (type == DataType.reducedLookUp) {
return ReducedLookUpField(
id: id,
name: name,
key: key,
schema: schema,
links: links,
referencesField: Uri.parse(json['type']['referencesField']),
lookUpField: Uri.parse(json['type']['lookupField']),
reduceFunction: json['type']['reduceFunction'],
reducedField: GridField.fromJson({
'id': 'reducedId',
'name': 'reduced',
'schema': {},
'type': json['type']['reducedType'],
}),
);
}
if (type == DataType.formula) {
return FormulaField(
id: id,
name: name,
key: key,
schema: schema,
links: links,
expression: json['type']['expression'],
valueType: ValueType.fromJson(json['type']['valueType']),
);
}
return GridField(
id: id,
name: name,
key: key,
schema: schema,
links: links,
type: type,
);
}