Line data Source code
1 : part of apptive_grid_model; 2 : 3 : /// Model for a Cell Entry in a Grid 4 : class GridEntry { 5 : /// Creates a GridEntry 6 6 : GridEntry(this.field, this.data); 7 : 8 : /// Creates a GridEntry with value [jsonData] 9 : /// 10 : /// [field.type] is used for determining the [DataEntity] runtimeType of [data] 11 6 : factory GridEntry.fromJson( 12 : dynamic jsonData, 13 : GridField field, 14 : dynamic schema, 15 : ) { 16 : DataEntity dataEntity; 17 6 : switch (field.type) { 18 6 : case DataType.text: 19 4 : dataEntity = StringDataEntity(jsonData); 20 : break; 21 3 : case DataType.dateTime: 22 1 : dataEntity = DateTimeDataEntity.fromJson(jsonData); 23 : break; 24 3 : case DataType.date: 25 1 : dataEntity = DateDataEntity.fromJson(jsonData); 26 : break; 27 3 : case DataType.integer: 28 1 : dataEntity = IntegerDataEntity(jsonData); 29 : break; 30 3 : case DataType.checkbox: 31 1 : dataEntity = BooleanDataEntity(jsonData); 32 : break; 33 3 : case DataType.selectionBox: 34 1 : dataEntity = EnumDataEntity( 35 : value: jsonData, 36 2 : options: schema['enum'].cast<String>(), 37 : ); 38 : break; 39 2 : case DataType.crossReference: 40 1 : dataEntity = CrossReferenceDataEntity.fromJson( 41 : jsonValue: jsonData, 42 1 : gridUri: schema['gridUri'], 43 : ); 44 : break; 45 1 : case DataType.decimal: 46 1 : dataEntity = DecimalDataEntity(jsonData); 47 : break; 48 : } 49 6 : return GridEntry(field, dataEntity); 50 : } 51 : 52 : /// Column this Entry belongs to 53 : final GridField field; 54 : 55 : /// Data that is held in the cell 56 : final DataEntity data; 57 : 58 3 : @override 59 : String toString() { 60 9 : return 'GridEntry(field: $field, data: $data)'; 61 : } 62 : 63 3 : @override 64 : bool operator ==(Object other) { 65 21 : return other is GridEntry && field == other.field && data == other.data; 66 : } 67 : 68 1 : @override 69 2 : int get hashCode => toString().hashCode; 70 : }