diff --git a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py index 6dc3e836..a83d49b5 100644 --- a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py +++ b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py @@ -144,6 +144,7 @@ class Data(SQLSubModel): "SELECT pamhyr_id, deleted, data0, data1, scenario FROM " + "boundary_condition_data_adists " + f"WHERE bca = {bca.id} " + + f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " + f"AND scenario = {scenario.id}" ) diff --git a/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py b/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py index 59572d65..0913897c 100644 --- a/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py +++ b/src/Model/LateralContributionsAdisTS/LateralContributionAdisTS.py @@ -135,7 +135,7 @@ class Data(SQLSubModel): lca = data["lca"] table = execute( - "SELECT pamhyr_id, deleted, data0, data1 " + + "SELECT pamhyr_id, deleted, data0, data1, scenario " + "FROM lateral_contribution_data_adists " + f"WHERE scenario = {scenario.id} " + f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " + @@ -152,16 +152,16 @@ class Data(SQLSubModel): data1 = next(it) owner_scenario = next(it) - data = cls( + lc = cls( data0, data1, id=pid, status=status, owner_scenario=owner_scenario ) if deleted: - data.set_as_deleted() + lc.set_as_deleted() loaded.add(pid) - new.append(data) + new.append(lc) data["scenario"] = scenario.parent new += cls._db_load(execute, data) @@ -177,7 +177,7 @@ class Data(SQLSubModel): execute( "INSERT INTO " + - "lateral_contribution_adists(pamhyr_id, deleted," + + "lateral_contribution_data_adists(pamhyr_id, deleted," + "data0, data1, lca, scenario) " + "VALUES (" + f"{self.id}, {self._db_format(self.is_deleted())}, " + @@ -384,6 +384,8 @@ class LateralContributionAdisTS(SQLSubModel): ")" ) + data["lca"] = self + ind = 0 for d in self._data: data["ind"] = ind @@ -473,3 +475,57 @@ class LateralContributionAdisTS(SQLSubModel): def end_rk(self, end_rk): self._end_rk = end_rk self.modified() + + @property + def _default_0(self): + return self._types[0](0) + + @property + def _default_1(self): + return self._types[1](0.0) + + def add(self, index: int): + value = Data(self._default_0, self._default_1, status=self._status) + self._data.insert(index, value) + self.modified() + return value + + def insert(self, index: int, data: Data): + self._data.insert(index, data) + self.modified() + + def delete_i(self, indexes): + self._data = list( + map( + lambda e: e[1], + filter( + lambda e: e[0] not in indexes, + enumerate(self.data) + ) + ) + ) + self.modified() + + def index(self, bc): + self._data.index(bc) + + def get_i(self, index: int): + return self._data[index] + + def get_range(self, _range): + lst = [] + for r in _range: + lst.append(r) + return lst + + def _set_i_c_v(self, index: int, column: int, value): + v = self._data[index] + v[column] = self._types[column](value) + self._data[index] = v + self.modified() + + def set_i_0(self, index: int, value): + self._set_i_c_v(index, 0, value) + + def set_i_1(self, index: int, value): + self._set_i_c_v(index, 1, value) diff --git a/src/View/LateralContributionsAdisTS/Edit/UndoCommand.py b/src/View/LateralContributionsAdisTS/Edit/UndoCommand.py index 427edf56..88fe63ad 100644 --- a/src/View/LateralContributionsAdisTS/Edit/UndoCommand.py +++ b/src/View/LateralContributionsAdisTS/Edit/UndoCommand.py @@ -34,29 +34,14 @@ class SetDataCommand(QUndoCommand): self._data = data self._index = index self._column = column - self._old = self._data._data[self._index][self._column] - _type = self._data._types[self._column] - self._new = _type(new_value) + self._old = self._data.get_i(self._index)[self._column] + self._new = new_value def undo(self): - if self._column == 0: - self._data._data[self._index] = ( - self._old, self._data._data[self._index][1] - ) - else: - self._data._data[self._index] = ( - self._data._data[self._index][0], self._old - ) + self._data._set_i_c_v(self._index, self._column, self._old) def redo(self): - if self._column == 0: - self._data._data[self._index] = ( - self._new, self._data._data[self._index][1] - ) - else: - self._data._data[self._index] = ( - self._data._data[self._index][0], self._new - ) + self._data._set_i_c_v(self._index, self._column, self._new) class AddCommand(QUndoCommand): @@ -72,11 +57,7 @@ class AddCommand(QUndoCommand): def redo(self): if self._new is None: - self._new = self._data._data.insert( - self._index, ( - self._data._types[0](0), self._data._types[1](0.0) - ) - ) + self._new = self._data.add(self._index) else: self._data._data.insert(self._index, self._new) diff --git a/src/View/LateralContributionsAdisTS/Window.py b/src/View/LateralContributionsAdisTS/Window.py index d70b7254..491c44f4 100644 --- a/src/View/LateralContributionsAdisTS/Window.py +++ b/src/View/LateralContributionsAdisTS/Window.py @@ -254,7 +254,7 @@ class LateralContributionAdisTSWindow(PamhyrWindow): return for row in rows: - data = self._table.get(row) + data = self._lcs.lst[row] if self.sub_window_exists( EditLateralContributionAdisTSWindow,