mirror of
https://github.com/dancojocaru2000/logic-circuits-simulator.git
synced 2025-02-22 17:19:36 +02:00
Added logic expression in component model
This commit is contained in:
parent
eb57b28d71
commit
0276643fbb
4 changed files with 46 additions and 7 deletions
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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…
Add table
Reference in a new issue