mirror of https://gitlab.com/pamhyr/pamhyr2
Strickler: dont display duplicated strickler from application database into study data tab
parent
db62af6f71
commit
48e9c14525
|
|
@ -52,20 +52,54 @@ _translate = QCoreApplication.translate
|
||||||
|
|
||||||
class TableModel(PamhyrTableModel):
|
class TableModel(PamhyrTableModel):
|
||||||
def __init__(self, *args, display_manning=False, unique_names=False,
|
def __init__(self, *args, display_manning=False, unique_names=False,
|
||||||
**kwargs):
|
hidden_stricklers=None, **kwargs):
|
||||||
self.display_manning = display_manning
|
self.display_manning = display_manning
|
||||||
self.unique_names = unique_names
|
self.unique_names = unique_names
|
||||||
|
self.hidden_stricklers = hidden_stricklers or []
|
||||||
super(TableModel, self).__init__(*args, **kwargs)
|
super(TableModel, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def same_strickler(first, second):
|
||||||
|
return (
|
||||||
|
first.name == second.name
|
||||||
|
and first.comment == second.comment
|
||||||
|
and first.minor == second.minor
|
||||||
|
and first.medium == second.medium
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def visible_stricklers(self):
|
||||||
|
return [
|
||||||
|
strickler
|
||||||
|
for strickler in self._data.stricklers
|
||||||
|
if not any(
|
||||||
|
self.same_strickler(strickler, hidden)
|
||||||
|
for hidden in self.hidden_stricklers
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
def rowCount(self, parent=QModelIndex()):
|
||||||
|
return len(self.visible_stricklers)
|
||||||
|
|
||||||
|
def get_visible(self, row):
|
||||||
|
return self.visible_stricklers[row]
|
||||||
|
|
||||||
|
def get_data_row(self, row):
|
||||||
|
return self._data.stricklers.index(self.get_visible(row))
|
||||||
|
|
||||||
def name_is_already_used(self, row, name):
|
def name_is_already_used(self, row, name):
|
||||||
current = self._data.get(row)
|
current = self.get_visible(row)
|
||||||
return any(
|
return any(
|
||||||
strickler is not current and strickler.name == name
|
strickler is not current and strickler.name == name
|
||||||
for strickler in self._data.stricklers
|
for strickler in self._data.stricklers
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_true_data_row(self, row):
|
def get_true_data_row(self, row):
|
||||||
el = self._data.get(row)
|
visible = self.visible_stricklers
|
||||||
|
if row >= len(visible):
|
||||||
|
return len(self._data._lst)
|
||||||
|
|
||||||
|
el = visible[row]
|
||||||
|
|
||||||
return next(
|
return next(
|
||||||
map(
|
map(
|
||||||
|
|
@ -83,18 +117,19 @@ class TableModel(PamhyrTableModel):
|
||||||
|
|
||||||
row = index.row()
|
row = index.row()
|
||||||
column = index.column()
|
column = index.column()
|
||||||
|
strickler = self.get_visible(row)
|
||||||
|
|
||||||
if self._headers[column] == "name":
|
if self._headers[column] == "name":
|
||||||
return self._data.get(row).name
|
return strickler.name
|
||||||
elif self._headers[column] == "comment":
|
elif self._headers[column] == "comment":
|
||||||
return self._data.get(row).comment
|
return strickler.comment
|
||||||
elif self._headers[column] == "minor":
|
elif self._headers[column] == "minor":
|
||||||
return display_coefficient(
|
return display_coefficient(
|
||||||
self._data.get(row).minor, self.display_manning
|
strickler.minor, self.display_manning
|
||||||
)
|
)
|
||||||
elif self._headers[column] == "medium":
|
elif self._headers[column] == "medium":
|
||||||
return display_coefficient(
|
return display_coefficient(
|
||||||
self._data.get(row).medium, self.display_manning
|
strickler.medium, self.display_manning
|
||||||
)
|
)
|
||||||
|
|
||||||
return QVariant()
|
return QVariant()
|
||||||
|
|
@ -122,6 +157,8 @@ class TableModel(PamhyrTableModel):
|
||||||
)
|
)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
row = self.get_data_row(row)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if self._headers[column] == "name":
|
if self._headers[column] == "name":
|
||||||
self._undo.push(
|
self._undo.push(
|
||||||
|
|
@ -177,7 +214,7 @@ class TableModel(PamhyrTableModel):
|
||||||
DelCommand(
|
DelCommand(
|
||||||
self._data, list(
|
self._data, list(
|
||||||
map(
|
map(
|
||||||
lambda r: self._data.get(r),
|
lambda r: self.get_visible(r),
|
||||||
rows
|
rows
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -95,8 +95,10 @@ class StricklersWindow(PamhyrWindow):
|
||||||
table = self.find(QTableView, f"tableView_{t}")
|
table = self.find(QTableView, f"tableView_{t}")
|
||||||
if t == "study":
|
if t == "study":
|
||||||
data = self._study.river.stricklers
|
data = self._study.river.stricklers
|
||||||
|
hidden_stricklers = self._config.stricklers.stricklers
|
||||||
else:
|
else:
|
||||||
data = self._config.stricklers
|
data = self._config.stricklers
|
||||||
|
hidden_stricklers = []
|
||||||
|
|
||||||
editable_headers = []
|
editable_headers = []
|
||||||
if t == "study" and self._study.is_editable():
|
if t == "study" and self._study.is_editable():
|
||||||
|
|
@ -111,6 +113,7 @@ class StricklersWindow(PamhyrWindow):
|
||||||
display_manning=getattr(
|
display_manning=getattr(
|
||||||
self._config, "display_manning", False
|
self._config, "display_manning", False
|
||||||
),
|
),
|
||||||
|
hidden_stricklers=hidden_stricklers,
|
||||||
)
|
)
|
||||||
|
|
||||||
table.setModel(self._table[t])
|
table.setModel(self._table[t])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue