Browse Source

Added logic expression in component model

master
Kenneth Bruen 2 years ago
parent
commit
0276643fbb
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 2
      lib/models/project.dart
  2. 40
      lib/models/project.freezed.dart
  3. 2
      lib/models/project.g.dart
  4. 9
      lib/pages/edit_component.dart

2
lib/models/project.dart

@ -23,6 +23,8 @@ class ComponentEntry with _$ComponentEntry {
required List<String> outputs, required List<String> outputs,
@JsonKey(includeIfNull: false) @JsonKey(includeIfNull: false)
List<String>? truthTable, List<String>? truthTable,
@JsonKey(includeIfNull: false)
String? logicExpression,
}) = _ComponentEntry; }) = _ComponentEntry;
factory ComponentEntry.fromJson(Map<String, Object?> json) => _$ComponentEntryFromJson(json); factory ComponentEntry.fromJson(Map<String, Object?> json) => _$ComponentEntryFromJson(json);

40
lib/models/project.freezed.dart

@ -166,6 +166,8 @@ mixin _$ComponentEntry {
List<String> get outputs => throw _privateConstructorUsedError; List<String> get outputs => throw _privateConstructorUsedError;
@JsonKey(includeIfNull: false) @JsonKey(includeIfNull: false)
List<String>? get truthTable => throw _privateConstructorUsedError; List<String>? get truthTable => throw _privateConstructorUsedError;
@JsonKey(includeIfNull: false)
String? get logicExpression => throw _privateConstructorUsedError;
Map<String, dynamic> toJson() => throw _privateConstructorUsedError; Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
@JsonKey(ignore: true) @JsonKey(ignore: true)
@ -184,7 +186,8 @@ abstract class $ComponentEntryCopyWith<$Res> {
@JsonKey(includeIfNull: false) String? componentDescription, @JsonKey(includeIfNull: false) String? componentDescription,
List<String> inputs, List<String> inputs,
List<String> outputs, List<String> outputs,
@JsonKey(includeIfNull: false) List<String>? truthTable}); @JsonKey(includeIfNull: false) List<String>? truthTable,
@JsonKey(includeIfNull: false) String? logicExpression});
} }
/// @nodoc /// @nodoc
@ -204,6 +207,7 @@ class _$ComponentEntryCopyWithImpl<$Res>
Object? inputs = freezed, Object? inputs = freezed,
Object? outputs = freezed, Object? outputs = freezed,
Object? truthTable = freezed, Object? truthTable = freezed,
Object? logicExpression = freezed,
}) { }) {
return _then(_value.copyWith( return _then(_value.copyWith(
componentId: componentId == freezed componentId: componentId == freezed
@ -230,6 +234,10 @@ class _$ComponentEntryCopyWithImpl<$Res>
? _value.truthTable ? _value.truthTable
: truthTable // ignore: cast_nullable_to_non_nullable : truthTable // ignore: cast_nullable_to_non_nullable
as List<String>?, as List<String>?,
logicExpression: logicExpression == freezed
? _value.logicExpression
: logicExpression // ignore: cast_nullable_to_non_nullable
as String?,
)); ));
} }
} }
@ -247,7 +255,8 @@ abstract class _$$_ComponentEntryCopyWith<$Res>
@JsonKey(includeIfNull: false) String? componentDescription, @JsonKey(includeIfNull: false) String? componentDescription,
List<String> inputs, List<String> inputs,
List<String> outputs, List<String> outputs,
@JsonKey(includeIfNull: false) List<String>? truthTable}); @JsonKey(includeIfNull: false) List<String>? truthTable,
@JsonKey(includeIfNull: false) String? logicExpression});
} }
/// @nodoc /// @nodoc
@ -269,6 +278,7 @@ class __$$_ComponentEntryCopyWithImpl<$Res>
Object? inputs = freezed, Object? inputs = freezed,
Object? outputs = freezed, Object? outputs = freezed,
Object? truthTable = freezed, Object? truthTable = freezed,
Object? logicExpression = freezed,
}) { }) {
return _then(_$_ComponentEntry( return _then(_$_ComponentEntry(
componentId: componentId == freezed componentId: componentId == freezed
@ -295,6 +305,10 @@ class __$$_ComponentEntryCopyWithImpl<$Res>
? _value._truthTable ? _value._truthTable
: truthTable // ignore: cast_nullable_to_non_nullable : truthTable // ignore: cast_nullable_to_non_nullable
as List<String>?, as List<String>?,
logicExpression: logicExpression == freezed
? _value.logicExpression
: logicExpression // ignore: cast_nullable_to_non_nullable
as String?,
)); ));
} }
} }
@ -308,7 +322,8 @@ class _$_ComponentEntry implements _ComponentEntry {
@JsonKey(includeIfNull: false) this.componentDescription, @JsonKey(includeIfNull: false) this.componentDescription,
required final List<String> inputs, required final List<String> inputs,
required final List<String> outputs, required final List<String> outputs,
@JsonKey(includeIfNull: false) final List<String>? truthTable}) @JsonKey(includeIfNull: false) final List<String>? truthTable,
@JsonKey(includeIfNull: false) this.logicExpression})
: _inputs = inputs, : _inputs = inputs,
_outputs = outputs, _outputs = outputs,
_truthTable = truthTable; _truthTable = truthTable;
@ -347,9 +362,13 @@ class _$_ComponentEntry implements _ComponentEntry {
return EqualUnmodifiableListView(value); return EqualUnmodifiableListView(value);
} }
@override
@JsonKey(includeIfNull: false)
final String? logicExpression;
@override @override
String toString() { String toString() {
return 'ComponentEntry(componentId: $componentId, componentName: $componentName, componentDescription: $componentDescription, inputs: $inputs, outputs: $outputs, truthTable: $truthTable)'; return 'ComponentEntry(componentId: $componentId, componentName: $componentName, componentDescription: $componentDescription, inputs: $inputs, outputs: $outputs, truthTable: $truthTable, logicExpression: $logicExpression)';
} }
@override @override
@ -366,7 +385,9 @@ class _$_ComponentEntry implements _ComponentEntry {
const DeepCollectionEquality().equals(other._inputs, _inputs) && const DeepCollectionEquality().equals(other._inputs, _inputs) &&
const DeepCollectionEquality().equals(other._outputs, _outputs) && const DeepCollectionEquality().equals(other._outputs, _outputs) &&
const DeepCollectionEquality() const DeepCollectionEquality()
.equals(other._truthTable, _truthTable)); .equals(other._truthTable, _truthTable) &&
const DeepCollectionEquality()
.equals(other.logicExpression, logicExpression));
} }
@JsonKey(ignore: true) @JsonKey(ignore: true)
@ -378,7 +399,8 @@ class _$_ComponentEntry implements _ComponentEntry {
const DeepCollectionEquality().hash(componentDescription), const DeepCollectionEquality().hash(componentDescription),
const DeepCollectionEquality().hash(_inputs), const DeepCollectionEquality().hash(_inputs),
const DeepCollectionEquality().hash(_outputs), const DeepCollectionEquality().hash(_outputs),
const DeepCollectionEquality().hash(_truthTable)); const DeepCollectionEquality().hash(_truthTable),
const DeepCollectionEquality().hash(logicExpression));
@JsonKey(ignore: true) @JsonKey(ignore: true)
@override @override
@ -398,7 +420,8 @@ abstract class _ComponentEntry implements ComponentEntry {
@JsonKey(includeIfNull: false) final String? componentDescription, @JsonKey(includeIfNull: false) final String? componentDescription,
required final List<String> inputs, required final List<String> inputs,
required final List<String> outputs, required final List<String> outputs,
@JsonKey(includeIfNull: false) final List<String>? truthTable}) = @JsonKey(includeIfNull: false) final List<String>? truthTable,
@JsonKey(includeIfNull: false) final String? logicExpression}) =
_$_ComponentEntry; _$_ComponentEntry;
factory _ComponentEntry.fromJson(Map<String, dynamic> json) = factory _ComponentEntry.fromJson(Map<String, dynamic> json) =
@ -419,6 +442,9 @@ abstract class _ComponentEntry implements ComponentEntry {
@JsonKey(includeIfNull: false) @JsonKey(includeIfNull: false)
List<String>? get truthTable => throw _privateConstructorUsedError; List<String>? get truthTable => throw _privateConstructorUsedError;
@override @override
@JsonKey(includeIfNull: false)
String? get logicExpression => throw _privateConstructorUsedError;
@override
@JsonKey(ignore: true) @JsonKey(ignore: true)
_$$_ComponentEntryCopyWith<_$_ComponentEntry> get copyWith => _$$_ComponentEntryCopyWith<_$_ComponentEntry> get copyWith =>
throw _privateConstructorUsedError; throw _privateConstructorUsedError;

2
lib/models/project.g.dart

@ -30,6 +30,7 @@ _$_ComponentEntry _$$_ComponentEntryFromJson(Map<String, dynamic> json) =>
truthTable: (json['truthTable'] as List<dynamic>?) truthTable: (json['truthTable'] as List<dynamic>?)
?.map((e) => e as String) ?.map((e) => e as String)
.toList(), .toList(),
logicExpression: json['logicExpression'] as String?,
); );
Map<String, dynamic> _$$_ComponentEntryToJson(_$_ComponentEntry instance) { Map<String, dynamic> _$$_ComponentEntryToJson(_$_ComponentEntry instance) {
@ -48,5 +49,6 @@ Map<String, dynamic> _$$_ComponentEntryToJson(_$_ComponentEntry instance) {
val['inputs'] = instance.inputs; val['inputs'] = instance.inputs;
val['outputs'] = instance.outputs; val['outputs'] = instance.outputs;
writeNotNull('truthTable', instance.truthTable); writeNotNull('truthTable', instance.truthTable);
writeNotNull('logicExpression', instance.logicExpression);
return val; return val;
} }

9
lib/pages/edit_component.dart

@ -21,6 +21,7 @@ class EditComponentPage extends HookWidget {
final projectState = useProvider<ProjectState>(); final projectState = useProvider<ProjectState>();
ComponentEntry ce() => projectState.index.components.where((c) => c.componentId == component.componentId).first; ComponentEntry ce() => projectState.index.components.where((c) => c.componentId == component.componentId).first;
final truthTable = useState(ce().truthTable?.toList()); final truthTable = useState(ce().truthTable?.toList());
final logicExpression = useState(ce().logicExpression);
final inputs = useState(ce().inputs.toList()); final inputs = useState(ce().inputs.toList());
final outputs = useState(ce().outputs.toList()); final outputs = useState(ce().outputs.toList());
final componentNameEditingController = useTextEditingController(text: ce().componentName); final componentNameEditingController = useTextEditingController(text: ce().componentName);
@ -39,6 +40,11 @@ class EditComponentPage extends HookWidget {
// Don't allow saving empty outputs // Don't allow saving empty outputs
return false; return false;
} }
if (truthTable.value == null && logicExpression.value == null) {
// Don't allow saving components without functionality
return false;
}
if (componentNameEditingController.text != ce().componentName) { if (componentNameEditingController.text != ce().componentName) {
return true; return true;
} }
@ -51,6 +57,9 @@ class EditComponentPage extends HookWidget {
if (!const ListEquality().equals(truthTable.value, ce().truthTable)) { if (!const ListEquality().equals(truthTable.value, ce().truthTable)) {
return true; return true;
} }
if (logicExpression.value != ce().logicExpression) {
return true;
}
return false; return false;
}, },
[ [

Loading…
Cancel
Save