From 716d0af96fa0aca205fdc1d5fc0685b98d5df34a Mon Sep 17 00:00:00 2001
From: Youcef AOUAD <youcef.aouad@inrae.fr>
Date: Thu, 13 Jun 2024 14:35:40 +0200
Subject: [PATCH] INI GOOD

---
 .../InitialConditionsAdisTS.py                |  19 +++++-------
 .../InitialConditionsAdisTSSpec.py            |  20 ++++++++++++-
 src/View/InitialConditionsAdisTS/Table.py     |   6 ++--
 .../InitialConditionsAdisTS/UndoCommand.py    |  11 ++++---
 src/View/InitialConditionsAdisTS/Window.py    |  27 +++++++++---------
 tests_cases/Enlargement/Enlargement.pamhyr    | Bin 192512 -> 192512 bytes
 6 files changed, 50 insertions(+), 33 deletions(-)

diff --git a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py
index f8122223..b8f3b7d0 100644
--- a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py
+++ b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTS.py
@@ -96,8 +96,6 @@ class InitialConditionsAdisTS(SQLSubModel):
             "FROM initial_conditions_adists"
         )
 
-        print("db load ic adists : ", table)
-
         if table is not None:
             for row in table:
                 IC_id = row[0]
@@ -259,16 +257,13 @@ class InitialConditionsAdisTS(SQLSubModel):
         self._status.modified()
 
     def delete_i(self, indexes):
-        data = list(
-            map(
-                lambda x: x[1],
-                filter(
-                    lambda x: x[0] in indexes,
-                    enumerate(self._data)
-                )
-            )
-        )
-        self.delete(data)
+        for ind in indexes:
+            del self._data[ind]
+        self._status.modified()
+
+    def insert(self, index, data):
+        self._data.insert(index, data)
+        self._status.modified()
 
 
 
diff --git a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py
index a2838aba..45286f63 100644
--- a/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py
+++ b/src/Model/InitialConditionsAdisTS/InitialConditionsAdisTSSpec.py
@@ -98,6 +98,7 @@ class ICAdisTSSpec(SQLSubModel):
         )
 
         for row in table:
+            id            = row[0]
             name          = row[2]
             reach         = row[3]
             start_kp      = row[4]
@@ -109,7 +110,24 @@ class ICAdisTSSpec(SQLSubModel):
             rate          = row[10]
             enabled       = (row[11] == 1)
 
-            new_spec = [name, reach, start_kp, end_kp, concentration, eg, em, ed, rate, enabled]
+            #new_spec = [name, reach, start_kp, end_kp, concentration, eg, em, ed, rate, enabled]
+
+            new_spec = cls(
+                id=id,
+                name=name,
+                status=data['status']
+            )
+
+            new_spec.reach = reach
+            new_spec.start_kp = start_kp
+            new_spec.end_kp = end_kp
+            new_spec.concentration = concentration
+            new_spec.eg = eg
+            new_spec.em = em
+            new_spec.ed = ed
+            new_spec.rate = rate
+            new_spec.enabled = enabled
+
             new.append(new_spec)
 
         return new
diff --git a/src/View/InitialConditionsAdisTS/Table.py b/src/View/InitialConditionsAdisTS/Table.py
index 9f3afeac..e04c5d2f 100644
--- a/src/View/InitialConditionsAdisTS/Table.py
+++ b/src/View/InitialConditionsAdisTS/Table.py
@@ -116,11 +116,12 @@ class InitialConditionTableModel(PamhyrTableModel):
 
         self._data = data
 
-        print("init table model : ", self._river)
-
     def _setup_lst(self):
         self._lst = self._data._data
 
+    def rowCount(self, parent):
+        return len(self._lst)
+
     def data(self, index, role):
         if role != Qt.ItemDataRole.DisplayRole:
             return QVariant()
@@ -135,7 +136,6 @@ class InitialConditionTableModel(PamhyrTableModel):
             return n
         elif self._headers[column] is "reach":
             n = self._lst[row].reach
-            print(n)
             if n is None:
                 return self._trad['not_associated']
             return next(filter(lambda edge: edge.id == n, self._river.edges())).name
diff --git a/src/View/InitialConditionsAdisTS/UndoCommand.py b/src/View/InitialConditionsAdisTS/UndoCommand.py
index 667aad32..28fc4f85 100644
--- a/src/View/InitialConditionsAdisTS/UndoCommand.py
+++ b/src/View/InitialConditionsAdisTS/UndoCommand.py
@@ -167,23 +167,26 @@ class AddCommand(QUndoCommand):
         if self._new is None:
             self._new = self._data.new(self._index)
         else:
-            self._ics_spec.insert(self._index, self._new)
+            self._data.insert(self._index, self._new)
+
 class DelCommand(QUndoCommand):
     def __init__(self, data, ics_spec, rows):
         QUndoCommand.__init__(self)
 
+        self._data = data
         self._ics_spec = ics_spec
         self._rows = rows
+        #self._data = data
 
         self._ic = []
         for row in rows:
-            self._ic.append((row, self._ics_spec.get(row)))
+            self._ic.append((row, self._ics_spec[row]))
         self._ic.sort()
 
     def undo(self):
         for row, el in self._ic:
-            self._ics_spec.insert(row, el)
+            self._data.insert(row, el)
 
     def redo(self):
-        self._ics_spec.delete_i(self._rows)
+        self._data.delete_i(self._rows)
 
diff --git a/src/View/InitialConditionsAdisTS/Window.py b/src/View/InitialConditionsAdisTS/Window.py
index 403bdae9..493e8c4d 100644
--- a/src/View/InitialConditionsAdisTS/Window.py
+++ b/src/View/InitialConditionsAdisTS/Window.py
@@ -71,7 +71,6 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
     def __init__(self, data=None, study=None, config=None, parent=None):
         self._data = []
         self._data.append(data)
-        print(self._data[0]._data)
         trad = IcAdisTSTranslate()
 
         name = (
@@ -131,8 +130,8 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
         toolBar.addAction(action_add)
         toolBar.addAction(action_delete)
 
-        table_spec = QTableView()
-        layout.addWidget(table_spec)
+        self.table_spec = QTableView()
+        layout.addWidget(self.table_spec)
 
         self._delegate_reach = ComboBoxDelegate(
             trad=self._trad,
@@ -150,7 +149,7 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
         )
 
         self._table_spec = InitialConditionTableModel(
-            table_view=table_spec,
+            table_view=self.table_spec,
             table_headers=self._trad.get_dict("table_headers_spec"),
             editable_headers=["name", "reach", "start_kp", "end_kp", "concentration", "eg", "em", "ed", "rate"],
             delegates={
@@ -164,13 +163,13 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
             river=self._study.river
         )
 
-        table_spec.setModel(self._table_spec)
-        table_spec.setSelectionBehavior(QAbstractItemView.SelectRows)
-        table_spec.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
-        table_spec.setAlternatingRowColors(True)
+        self.table_spec.setModel(self._table_spec)
+        self.table_spec.setSelectionBehavior(QAbstractItemView.SelectRows)
+        self.table_spec.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
+        self.table_spec.setAlternatingRowColors(True)
 
-        selectionModel = table_spec.selectionModel()
-        index = table_spec.model().index(0, 0)
+        selectionModel = self.table_spec.selectionModel()
+        index = self.table_spec.model().index(0, 0)
 
         selectionModel.select(
             index,
@@ -178,10 +177,11 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
             QItemSelectionModel.ClearAndSelect |
             QItemSelectionModel.Select
         )
-        table_spec.scrollTo(index)
+        self.table_spec.scrollTo(index)
 
     def index_selected_row(self):
-        table = self.find(QTableView, f"tableView")
+        #table = self.find(QTableView, f"tableView")
+        table = self.table_spec
         rows = table.selectionModel()\
                     .selectedRows()
 
@@ -191,7 +191,8 @@ class InitialConditionsAdisTSWindow(PamhyrWindow):
         return rows[0].row()
 
     def index_selected_rows(self):
-        table = self.find(QTableView, f"tableView")
+        #table = self.find(QTableView, f"tableView")
+        table = self.table_spec
         return list(
             # Delete duplicate
             set(
diff --git a/tests_cases/Enlargement/Enlargement.pamhyr b/tests_cases/Enlargement/Enlargement.pamhyr
index 23c74b0ec7ff7612c35329d1b7d396a763c65546..d4b08c0bbb44d05b387edac1981b388fb6fc37fb 100644
GIT binary patch
delta 89
zcmZp8z}@hGdqbN%uaTL#xv8a|iIK69u|@M_`R$YC84EwKG4kJF;J>k1(BK@uh8hDe
m1BWOlJ3Au?aF(PNmpBw;Fo1wVk=3fR^O~P9gTOKcrV9XiQWy&W

delta 42
ycmZp8z}@hGdqbN%uYsk7g^8)2p_z%fxl!|E`R$YC84EuwX4xRHokfA^&v^hh6b|zM

-- 
GitLab