mirror of
				https://github.com/dancojocaru2000/logic-circuits-simulator.git
				synced 2025-11-04 00:46:32 +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,
 | 
			
		||||
    @JsonKey(includeIfNull: false)
 | 
			
		||||
    List<String>? truthTable,
 | 
			
		||||
    @JsonKey(includeIfNull: false)
 | 
			
		||||
    String? logicExpression,
 | 
			
		||||
  }) = _ComponentEntry;
 | 
			
		||||
 | 
			
		||||
  factory ComponentEntry.fromJson(Map<String, Object?> json) => _$ComponentEntryFromJson(json);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -166,6 +166,8 @@ mixin _$ComponentEntry {
 | 
			
		|||
  List<String> get outputs => throw _privateConstructorUsedError;
 | 
			
		||||
  @JsonKey(includeIfNull: false)
 | 
			
		||||
  List<String>? get truthTable => throw _privateConstructorUsedError;
 | 
			
		||||
  @JsonKey(includeIfNull: false)
 | 
			
		||||
  String? get logicExpression => throw _privateConstructorUsedError;
 | 
			
		||||
 | 
			
		||||
  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
 | 
			
		||||
  @JsonKey(ignore: true)
 | 
			
		||||
| 
						 | 
				
			
			@ -184,7 +186,8 @@ abstract class $ComponentEntryCopyWith<$Res> {
 | 
			
		|||
      @JsonKey(includeIfNull: false) String? componentDescription,
 | 
			
		||||
      List<String> inputs,
 | 
			
		||||
      List<String> outputs,
 | 
			
		||||
      @JsonKey(includeIfNull: false) List<String>? truthTable});
 | 
			
		||||
      @JsonKey(includeIfNull: false) List<String>? truthTable,
 | 
			
		||||
      @JsonKey(includeIfNull: false) String? logicExpression});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// @nodoc
 | 
			
		||||
| 
						 | 
				
			
			@ -204,6 +207,7 @@ class _$ComponentEntryCopyWithImpl<$Res>
 | 
			
		|||
    Object? inputs = freezed,
 | 
			
		||||
    Object? outputs = freezed,
 | 
			
		||||
    Object? truthTable = freezed,
 | 
			
		||||
    Object? logicExpression = freezed,
 | 
			
		||||
  }) {
 | 
			
		||||
    return _then(_value.copyWith(
 | 
			
		||||
      componentId: componentId == freezed
 | 
			
		||||
| 
						 | 
				
			
			@ -230,6 +234,10 @@ class _$ComponentEntryCopyWithImpl<$Res>
 | 
			
		|||
          ? _value.truthTable
 | 
			
		||||
          : truthTable // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
              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,
 | 
			
		||||
      List<String> inputs,
 | 
			
		||||
      List<String> outputs,
 | 
			
		||||
      @JsonKey(includeIfNull: false) List<String>? truthTable});
 | 
			
		||||
      @JsonKey(includeIfNull: false) List<String>? truthTable,
 | 
			
		||||
      @JsonKey(includeIfNull: false) String? logicExpression});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// @nodoc
 | 
			
		||||
| 
						 | 
				
			
			@ -269,6 +278,7 @@ class __$$_ComponentEntryCopyWithImpl<$Res>
 | 
			
		|||
    Object? inputs = freezed,
 | 
			
		||||
    Object? outputs = freezed,
 | 
			
		||||
    Object? truthTable = freezed,
 | 
			
		||||
    Object? logicExpression = freezed,
 | 
			
		||||
  }) {
 | 
			
		||||
    return _then(_$_ComponentEntry(
 | 
			
		||||
      componentId: componentId == freezed
 | 
			
		||||
| 
						 | 
				
			
			@ -295,6 +305,10 @@ class __$$_ComponentEntryCopyWithImpl<$Res>
 | 
			
		|||
          ? _value._truthTable
 | 
			
		||||
          : truthTable // ignore: cast_nullable_to_non_nullable
 | 
			
		||||
              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,
 | 
			
		||||
      required final List<String> inputs,
 | 
			
		||||
      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,
 | 
			
		||||
        _outputs = outputs,
 | 
			
		||||
        _truthTable = truthTable;
 | 
			
		||||
| 
						 | 
				
			
			@ -347,9 +362,13 @@ class _$_ComponentEntry implements _ComponentEntry {
 | 
			
		|||
    return EqualUnmodifiableListView(value);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  @JsonKey(includeIfNull: false)
 | 
			
		||||
  final String? logicExpression;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  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
 | 
			
		||||
| 
						 | 
				
			
			@ -366,7 +385,9 @@ class _$_ComponentEntry implements _ComponentEntry {
 | 
			
		|||
            const DeepCollectionEquality().equals(other._inputs, _inputs) &&
 | 
			
		||||
            const DeepCollectionEquality().equals(other._outputs, _outputs) &&
 | 
			
		||||
            const DeepCollectionEquality()
 | 
			
		||||
                .equals(other._truthTable, _truthTable));
 | 
			
		||||
                .equals(other._truthTable, _truthTable) &&
 | 
			
		||||
            const DeepCollectionEquality()
 | 
			
		||||
                .equals(other.logicExpression, logicExpression));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @JsonKey(ignore: true)
 | 
			
		||||
| 
						 | 
				
			
			@ -378,7 +399,8 @@ class _$_ComponentEntry implements _ComponentEntry {
 | 
			
		|||
      const DeepCollectionEquality().hash(componentDescription),
 | 
			
		||||
      const DeepCollectionEquality().hash(_inputs),
 | 
			
		||||
      const DeepCollectionEquality().hash(_outputs),
 | 
			
		||||
      const DeepCollectionEquality().hash(_truthTable));
 | 
			
		||||
      const DeepCollectionEquality().hash(_truthTable),
 | 
			
		||||
      const DeepCollectionEquality().hash(logicExpression));
 | 
			
		||||
 | 
			
		||||
  @JsonKey(ignore: true)
 | 
			
		||||
  @override
 | 
			
		||||
| 
						 | 
				
			
			@ -398,7 +420,8 @@ abstract class _ComponentEntry implements ComponentEntry {
 | 
			
		|||
          @JsonKey(includeIfNull: false) final String? componentDescription,
 | 
			
		||||
          required final List<String> inputs,
 | 
			
		||||
          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;
 | 
			
		||||
 | 
			
		||||
  factory _ComponentEntry.fromJson(Map<String, dynamic> json) =
 | 
			
		||||
| 
						 | 
				
			
			@ -419,6 +442,9 @@ abstract class _ComponentEntry implements ComponentEntry {
 | 
			
		|||
  @JsonKey(includeIfNull: false)
 | 
			
		||||
  List<String>? get truthTable => throw _privateConstructorUsedError;
 | 
			
		||||
  @override
 | 
			
		||||
  @JsonKey(includeIfNull: false)
 | 
			
		||||
  String? get logicExpression => throw _privateConstructorUsedError;
 | 
			
		||||
  @override
 | 
			
		||||
  @JsonKey(ignore: true)
 | 
			
		||||
  _$$_ComponentEntryCopyWith<_$_ComponentEntry> get copyWith =>
 | 
			
		||||
      throw _privateConstructorUsedError;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,7 @@ _$_ComponentEntry _$$_ComponentEntryFromJson(Map<String, dynamic> json) =>
 | 
			
		|||
      truthTable: (json['truthTable'] as List<dynamic>?)
 | 
			
		||||
          ?.map((e) => e as String)
 | 
			
		||||
          .toList(),
 | 
			
		||||
      logicExpression: json['logicExpression'] as String?,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
Map<String, dynamic> _$$_ComponentEntryToJson(_$_ComponentEntry instance) {
 | 
			
		||||
| 
						 | 
				
			
			@ -48,5 +49,6 @@ Map<String, dynamic> _$$_ComponentEntryToJson(_$_ComponentEntry instance) {
 | 
			
		|||
  val['inputs'] = instance.inputs;
 | 
			
		||||
  val['outputs'] = instance.outputs;
 | 
			
		||||
  writeNotNull('truthTable', instance.truthTable);
 | 
			
		||||
  writeNotNull('logicExpression', instance.logicExpression);
 | 
			
		||||
  return val;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,7 @@ class EditComponentPage extends HookWidget {
 | 
			
		|||
    final projectState = useProvider<ProjectState>();
 | 
			
		||||
    ComponentEntry ce() => projectState.index.components.where((c) => c.componentId == component.componentId).first;
 | 
			
		||||
    final truthTable = useState(ce().truthTable?.toList());
 | 
			
		||||
    final logicExpression = useState(ce().logicExpression);
 | 
			
		||||
    final inputs = useState(ce().inputs.toList());
 | 
			
		||||
    final outputs = useState(ce().outputs.toList());
 | 
			
		||||
    final componentNameEditingController = useTextEditingController(text: ce().componentName);
 | 
			
		||||
| 
						 | 
				
			
			@ -39,6 +40,11 @@ class EditComponentPage extends HookWidget {
 | 
			
		|||
          // Don't allow saving empty outputs
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (truthTable.value == null && logicExpression.value == null) {
 | 
			
		||||
          // Don't allow saving components without functionality
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (componentNameEditingController.text != ce().componentName) {
 | 
			
		||||
          return true;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -51,6 +57,9 @@ class EditComponentPage extends HookWidget {
 | 
			
		|||
        if (!const ListEquality().equals(truthTable.value, ce().truthTable)) {
 | 
			
		||||
          return true;
 | 
			
		||||
        }
 | 
			
		||||
        if (logicExpression.value != ce().logicExpression) {
 | 
			
		||||
          return true;
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
      },
 | 
			
		||||
      [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue