mirror of https://gitlab.com/pamhyr/pamhyr2
debug save BoundaryConditionsAdisTS
parent
b58d3e005d
commit
d6f7755d12
|
|
@ -312,19 +312,21 @@ class BoundaryConditionAdisTS(SQLSubModel):
|
|||
status = data['status']
|
||||
nodes = data['nodes']
|
||||
scenario = data["scenario"]
|
||||
pollutant = data["pollutant"]
|
||||
pollutant = data.get("pollutant")
|
||||
loaded = data['loaded_pid']
|
||||
|
||||
if scenario is None:
|
||||
return new
|
||||
|
||||
table = execute(
|
||||
"SELECT pamhyr_id, deleted, pollutant, type, node, scenario " +
|
||||
sql = (
|
||||
"SELECT pamhyr_id, deleted, pollutant, type, node, scenario "
|
||||
"FROM boundary_condition_adists " +
|
||||
f"WHERE scenario = {scenario.id} " +
|
||||
f"AND pamhyr_id NOT IN ({', '.join(map(str, loaded))}) " +
|
||||
f"AND pollutant = {pollutant.id} "
|
||||
f"WHERE scenario = {scenario.id} "
|
||||
)
|
||||
if pollutant is not None:
|
||||
sql += f"AND pollutant = {pollutant.id} "
|
||||
|
||||
table = execute(sql)
|
||||
|
||||
if table is not None:
|
||||
for row in table:
|
||||
|
|
@ -349,7 +351,7 @@ class BoundaryConditionAdisTS(SQLSubModel):
|
|||
bc.type = bc_type
|
||||
|
||||
bc.node = None
|
||||
if row[3] != -1:
|
||||
if node != -1:
|
||||
tmp = next(
|
||||
filter(
|
||||
lambda n: n.id == node, nodes
|
||||
|
|
@ -513,7 +515,10 @@ class BoundaryConditionAdisTS(SQLSubModel):
|
|||
return (new_0, new_1)
|
||||
|
||||
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._status.modified()
|
||||
return value
|
||||
|
|
@ -554,9 +559,9 @@ class BoundaryConditionAdisTS(SQLSubModel):
|
|||
return lst
|
||||
|
||||
def _set_i_c_v(self, index, column, value):
|
||||
v = list(self._data[index])
|
||||
v = self._data[index]
|
||||
v[column] = self._types[column](value)
|
||||
self._data[index] = tuple(v)
|
||||
self._data[index] = v
|
||||
self._status.modified()
|
||||
|
||||
def set_i_0(self, index: int, value):
|
||||
|
|
|
|||
|
|
@ -38,9 +38,13 @@ class BoundaryConditionsAdisTSList(PamhyrModelList):
|
|||
if data is None:
|
||||
data = {}
|
||||
|
||||
new._lst = BoundaryConditionAdisTS._db_load(
|
||||
execute, data
|
||||
)
|
||||
previous_pollutant = data.get("pollutant")
|
||||
data.pop("pollutant", None)
|
||||
|
||||
new._lst = BoundaryConditionAdisTS._db_load(execute, data)
|
||||
|
||||
if previous_pollutant is not None:
|
||||
data["pollutant"] = previous_pollutant
|
||||
|
||||
return new
|
||||
|
||||
|
|
|
|||
|
|
@ -61,9 +61,7 @@ class AddCommand(QUndoCommand):
|
|||
|
||||
def redo(self):
|
||||
if self._new is None:
|
||||
self._new = self._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.insert(self._index, self._new)
|
||||
|
||||
|
|
|
|||
|
|
@ -121,9 +121,25 @@ class TableModel(PamhyrTableModel):
|
|||
super(TableModel, self).__init__(trad=trad, **kwargs)
|
||||
|
||||
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)
|
||||
|
||||
def data(self, index, role):
|
||||
|
|
@ -159,15 +175,21 @@ class TableModel(PamhyrTableModel):
|
|||
|
||||
try:
|
||||
if self._headers[column] == "type":
|
||||
global_row = self._global_row(row)
|
||||
self._undo.push(
|
||||
SetTypeCommand(
|
||||
self._bc_list, row, value
|
||||
self._bc_list, global_row, value
|
||||
)
|
||||
)
|
||||
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(
|
||||
SetNodeCommand(
|
||||
self._bc_list, row, self._data.node(value)
|
||||
self._bc_list, global_row, node
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -179,33 +201,39 @@ class TableModel(PamhyrTableModel):
|
|||
return True
|
||||
|
||||
def add(self, row, parent=QModelIndex()):
|
||||
self.beginInsertRows(parent, row, row - 1)
|
||||
|
||||
row = len(self._lst)
|
||||
self.beginInsertRows(parent, row, row)
|
||||
self._undo.push(
|
||||
AddCommand(
|
||||
self._pollutant, self._bc_list, row
|
||||
self._pollutant, self._bc_list, len(self._bc_list)
|
||||
)
|
||||
)
|
||||
|
||||
self._setup_lst()
|
||||
self.endInsertRows()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def delete(self, rows, parent=QModelIndex()):
|
||||
self.beginRemoveRows(parent, rows[0], rows[-1])
|
||||
|
||||
global_rows = list(
|
||||
map(self._global_row, rows)
|
||||
)
|
||||
self._undo.push(
|
||||
DelCommand(
|
||||
self._bc_list, rows
|
||||
self._bc_list, global_rows
|
||||
)
|
||||
)
|
||||
|
||||
self._setup_lst()
|
||||
self.endRemoveRows()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def undo(self):
|
||||
self._undo.undo()
|
||||
self._setup_lst()
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def redo(self):
|
||||
self._undo.redo()
|
||||
self._setup_lst()
|
||||
self.layoutChanged.emit()
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class SetNodeCommand(QUndoCommand):
|
|||
self._bcs = bcs
|
||||
self._index = index
|
||||
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):
|
||||
self._bcs.get(self._index).node = self._old
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow):
|
|||
)
|
||||
|
||||
def add(self):
|
||||
self._table.add(len(self._data.boundary_conditions_adists))
|
||||
self._table.add(self._table.rowCount())
|
||||
|
||||
def delete(self):
|
||||
rows = self.index_selected_rows()
|
||||
|
|
@ -183,7 +183,7 @@ class BoundaryConditionAdisTSWindow(PamhyrWindow):
|
|||
def edit(self):
|
||||
rows = self.index_selected_rows()
|
||||
for row in rows:
|
||||
data = self._bcs.get(row)
|
||||
data = self._table.get(row)
|
||||
|
||||
if data.node is None:
|
||||
continue
|
||||
|
|
|
|||
Loading…
Reference in New Issue