debug save BoundaryConditionsAdisTS

dev_dylan
Dylan Jeannin 2026-04-22 12:05:28 +02:00
parent b58d3e005d
commit d6f7755d12
6 changed files with 63 additions and 28 deletions

View File

@ -312,19 +312,21 @@ class BoundaryConditionAdisTS(SQLSubModel):
status = data['status'] status = data['status']
nodes = data['nodes'] nodes = data['nodes']
scenario = data["scenario"] scenario = data["scenario"]
pollutant = data["pollutant"] pollutant = data.get("pollutant")
loaded = data['loaded_pid'] loaded = data['loaded_pid']
if scenario is None: if scenario is None:
return new return new
table = execute( sql = (
"SELECT pamhyr_id, deleted, pollutant, type, node, scenario " + "SELECT pamhyr_id, deleted, pollutant, type, node, scenario "
"FROM boundary_condition_adists " + "FROM boundary_condition_adists " +
f"WHERE scenario = {scenario.id} " + f"WHERE scenario = {scenario.id} "
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " +
f"AND pollutant = {pollutant.id} "
) )
if pollutant is not None:
sql += f"AND pollutant = {pollutant.id} "
table = execute(sql)
if table is not None: if table is not None:
for row in table: for row in table:
@ -349,7 +351,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
bc.type = bc_type bc.type = bc_type
bc.node = None bc.node = None
if row[3] != -1: if node != -1:
tmp = next( tmp = next(
filter( filter(
lambda n: n.id == node, nodes lambda n: n.id == node, nodes
@ -513,7 +515,10 @@ class BoundaryConditionAdisTS(SQLSubModel):
return (new_0, new_1) return (new_0, new_1)
def add(self, index: int): def add(self, index: int):
value = (self._default_0, self._default_1) value = Data(
self._default_0, self._default_1,
status=self._status
)
self._data.insert(index, value) self._data.insert(index, value)
self._status.modified() self._status.modified()
return value return value
@ -554,9 +559,9 @@ class BoundaryConditionAdisTS(SQLSubModel):
return lst return lst
def _set_i_c_v(self, index, column, value): def _set_i_c_v(self, index, column, value):
v = list(self._data[index]) v = self._data[index]
v[column] = self._types[column](value) v[column] = self._types[column](value)
self._data[index] = tuple(v) self._data[index] = v
self._status.modified() self._status.modified()
def set_i_0(self, index: int, value): def set_i_0(self, index: int, value):

View File

@ -38,9 +38,13 @@ class BoundaryConditionsAdisTSList(PamhyrModelList):
if data is None: if data is None:
data = {} data = {}
new._lst = BoundaryConditionAdisTS._db_load( previous_pollutant = data.get("pollutant")
execute, data data.pop("pollutant", None)
)
new._lst = BoundaryConditionAdisTS._db_load(execute, data)
if previous_pollutant is not None:
data["pollutant"] = previous_pollutant
return new return new

View File

@ -61,9 +61,7 @@ class AddCommand(QUndoCommand):
def redo(self): def redo(self):
if self._new is None: if self._new is None:
self._new = self._data.insert(self._index, ( self._new = self._data.add(self._index)
self._data._types[0](0), self._data._types[1](0.0)
))
else: else:
self._data.insert(self._index, self._new) self._data.insert(self._index, self._new)

View File

@ -121,9 +121,25 @@ class TableModel(PamhyrTableModel):
super(TableModel, self).__init__(trad=trad, **kwargs) super(TableModel, self).__init__(trad=trad, **kwargs)
def _setup_lst(self): def _setup_lst(self):
self._lst = self._pollutant_bc_list.boundary_conditions_adists self._lst = list(
filter(
lambda bc: bc.pollutant == self._pollutant,
self._bc_list.lst
)
)
def rowCount(self, parent): def get(self, row):
if row < 0 or row >= len(self._lst):
return None
return self._lst[row]
def _global_row(self, row):
bc = self.get(row)
if bc is None:
return None
return self._bc_list.index(bc)
def rowCount(self, parent=QModelIndex()):
return len(self._lst) return len(self._lst)
def data(self, index, role): def data(self, index, role):
@ -159,15 +175,21 @@ class TableModel(PamhyrTableModel):
try: try:
if self._headers[column] == "type": if self._headers[column] == "type":
global_row = self._global_row(row)
self._undo.push( self._undo.push(
SetTypeCommand( SetTypeCommand(
self._bc_list, row, value self._bc_list, global_row, value
) )
) )
elif self._headers[column] == "node": elif self._headers[column] == "node":
global_row = self._global_row(row)
node = next(
filter(lambda n: n.name == value, self._data.nodes()),
None
)
self._undo.push( self._undo.push(
SetNodeCommand( SetNodeCommand(
self._bc_list, row, self._data.node(value) self._bc_list, global_row, node
) )
) )
@ -179,33 +201,39 @@ class TableModel(PamhyrTableModel):
return True return True
def add(self, row, parent=QModelIndex()): def add(self, row, parent=QModelIndex()):
self.beginInsertRows(parent, row, row - 1) row = len(self._lst)
self.beginInsertRows(parent, row, row)
self._undo.push( self._undo.push(
AddCommand( AddCommand(
self._pollutant, self._bc_list, row self._pollutant, self._bc_list, len(self._bc_list)
) )
) )
self._setup_lst()
self.endInsertRows() self.endInsertRows()
self.layoutChanged.emit() self.layoutChanged.emit()
def delete(self, rows, parent=QModelIndex()): def delete(self, rows, parent=QModelIndex()):
self.beginRemoveRows(parent, rows[0], rows[-1]) self.beginRemoveRows(parent, rows[0], rows[-1])
global_rows = list(
map(self._global_row, rows)
)
self._undo.push( self._undo.push(
DelCommand( DelCommand(
self._bc_list, rows self._bc_list, global_rows
) )
) )
self._setup_lst()
self.endRemoveRows() self.endRemoveRows()
self.layoutChanged.emit() self.layoutChanged.emit()
def undo(self): def undo(self):
self._undo.undo() self._undo.undo()
self._setup_lst()
self.layoutChanged.emit() self.layoutChanged.emit()
def redo(self): def redo(self):
self._undo.redo() self._undo.redo()
self._setup_lst()
self.layoutChanged.emit() self.layoutChanged.emit()

View File

@ -36,7 +36,7 @@ class SetNodeCommand(QUndoCommand):
self._bcs = bcs self._bcs = bcs
self._index = index self._index = index
self._old = self._bcs.get(self._index).node self._old = self._bcs.get(self._index).node
self._new = node.id self._new = node.id if node is not None else None
def undo(self): def undo(self):
self._bcs.get(self._index).node = self._old self._bcs.get(self._index).node = self._old

View File

@ -159,7 +159,7 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow):
) )
def add(self): def add(self):
self._table.add(len(self._data.boundary_conditions_adists)) self._table.add(self._table.rowCount())
def delete(self): def delete(self):
rows = self.index_selected_rows() rows = self.index_selected_rows()
@ -183,7 +183,7 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow):
def edit(self): def edit(self):
rows = self.index_selected_rows() rows = self.index_selected_rows()
for row in rows: for row in rows:
data = self._bcs.get(row) data = self._table.get(row)
if data.node is None: if data.node is None:
continue continue