Date/time parameters: fixed the link between the start date in the study settings and the display in the tables

mesh_tab
Dylan Jeannin 2026-08-31 16:14:28 +02:00
parent b7aab9f263
commit 6586a7b191
13 changed files with 67 additions and 13 deletions

View File

@ -97,7 +97,9 @@ class TableModel(PamhyrTableModel):
if self._opt_data == "time": if self._opt_data == "time":
value = timestamp_to_old_pamhyr_date(int(v)) value = timestamp_to_old_pamhyr_date(int(v))
else: else:
value = str(datetime.fromtimestamp(v)) value = str(
self._start_date + timedelta(seconds=float(v))
)
else: else:
value = f"{v}" value = f"{v}"
@ -114,6 +116,10 @@ class TableModel(PamhyrTableModel):
column = index.column() column = index.column()
try: try:
if (self._data.header[column] == "time"
and self._opt_data == "date"):
value = self.date_to_elapsed_seconds(value)
row = self.get_true_data_row(row) row = self.get_true_data_row(row)
self._undo.push( self._undo.push(

View File

@ -173,7 +173,8 @@ class EditBoundaryConditionWindow(PamhyrWindow):
}, },
data=self._data, data=self._data,
undo=self._undo_stack, undo=self._undo_stack,
opt_data=self._study.time_system opt_data=self._study.time_system,
start_date=self._study.date
) )
table.setModel(self._table) table.setModel(self._table)

View File

@ -87,7 +87,9 @@ class TableModel(PamhyrTableModel):
if self._opt_data == "time": if self._opt_data == "time":
value = timestamp_to_old_pamhyr_date(int(v)) value = timestamp_to_old_pamhyr_date(int(v))
else: else:
value = str(datetime.fromtimestamp(v)) value = str(
self._start_date + timedelta(seconds=float(v))
)
else: else:
value = f"{v}" value = f"{v}"
@ -104,6 +106,10 @@ class TableModel(PamhyrTableModel):
column = index.column() column = index.column()
try: try:
if (self._data.header[column] == "time"
and self._opt_data == "date"):
value = self.date_to_elapsed_seconds(value)
row = self.get_true_data_row(row) row = self.get_true_data_row(row)
self._undo.push( self._undo.push(

View File

@ -120,7 +120,8 @@ class EditBoundaryConditionWindow(PamhyrWindow):
}, },
data=self._data, data=self._data,
undo=self._undo_stack, undo=self._undo_stack,
opt_data=self._study.time_system opt_data=self._study.time_system,
start_date=self._study.date
) )
table.setModel(self._table) table.setModel(self._table)

View File

@ -87,7 +87,9 @@ class TableModel(PamhyrTableModel):
if self._opt_data == "time": if self._opt_data == "time":
value = timestamp_to_old_pamhyr_date(int(v)) value = timestamp_to_old_pamhyr_date(int(v))
else: else:
value = str(datetime.fromtimestamp(v)) value = str(
self._start_date + timedelta(seconds=float(v))
)
else: else:
value = f"{v}" value = f"{v}"
@ -104,6 +106,10 @@ class TableModel(PamhyrTableModel):
column = index.column() column = index.column()
try: try:
if (self._data.header[column] == "time"
and self._opt_data == "date"):
value = self.date_to_elapsed_seconds(value)
row = self.get_true_data_row(row) row = self.get_true_data_row(row)
self._undo.push( self._undo.push(

View File

@ -117,7 +117,8 @@ class EditBoundaryConditionWindow(PamhyrWindow):
}, },
data=self._data, data=self._data,
undo=self._undo_stack, undo=self._undo_stack,
opt_data=self._study.time_system opt_data=self._study.time_system,
start_date=self._study.date
) )
table.setModel(self._table) table.setModel(self._table)

View File

@ -76,7 +76,9 @@ class TableModel(PamhyrTableModel):
if self._opt_data == "time": if self._opt_data == "time":
value = timestamp_to_old_pamhyr_date(int(v)) value = timestamp_to_old_pamhyr_date(int(v))
else: else:
value = str(datetime.fromtimestamp(v)) value = str(
self._start_date + timedelta(seconds=float(v))
)
else: else:
value = f"{v}" value = f"{v}"
@ -93,6 +95,10 @@ class TableModel(PamhyrTableModel):
column = index.column() column = index.column()
try: try:
if (self._data.header[column] == "time"
and self._opt_data == "date"):
value = self.date_to_elapsed_seconds(value)
self._undo.push( self._undo.push(
SetDataCommand( SetDataCommand(
self._data, row, column, value self._data, row, column, value

View File

@ -109,7 +109,8 @@ class EditLateralContributionWindow(PamhyrWindow):
data=self._data, data=self._data,
undo=self._undo_stack, undo=self._undo_stack,
trad=self._trad, trad=self._trad,
opt_data=self._study.time_system opt_data=self._study.time_system,
start_date=self._study.date
) )
table.setModel(self._table) table.setModel(self._table)

View File

@ -90,7 +90,9 @@ class TableModel(PamhyrTableModel):
if self._opt_data == "time": if self._opt_data == "time":
value = timestamp_to_old_pamhyr_date_adists(int(v)) value = timestamp_to_old_pamhyr_date_adists(int(v))
else: else:
value = str(datetime.fromtimestamp(v)) value = str(
self._start_date + timedelta(seconds=float(v))
)
else: else:
value = f"{v}" value = f"{v}"
@ -107,6 +109,10 @@ class TableModel(PamhyrTableModel):
column = index.column() column = index.column()
try: try:
if (self._data.header[column] == "time"
and self._opt_data == "date"):
value = self.date_to_elapsed_seconds(value)
row = self.get_true_data_row(row) row = self.get_true_data_row(row)
self._undo.push( self._undo.push(

View File

@ -124,7 +124,8 @@ class EditLateralContributionAdisTSWindow(PamhyrWindow):
data=self._data, data=self._data,
undo=self._undo_stack, undo=self._undo_stack,
trad=self._trad, trad=self._trad,
opt_data=self._study.time_system opt_data=self._study.time_system,
start_date=self._study.date
) )
table.setModel(self._table) table.setModel(self._table)

View File

@ -19,6 +19,8 @@
import logging import logging
import traceback import traceback
from datetime import datetime
from tools import trace, timer from tools import trace, timer
from Model.Except import NotImplementedMethodeError from Model.Except import NotImplementedMethodeError
@ -59,6 +61,14 @@ class PamhyrTextDelegate(QStyledItemDelegate):
class PamhyrTableModel(QAbstractTableModel): class PamhyrTableModel(QAbstractTableModel):
def date_to_elapsed_seconds(self, value):
"""Convert an entered date to seconds since the study start date."""
entered_date = value
if not isinstance(entered_date, datetime):
entered_date = datetime.fromisoformat(str(value).strip())
return (entered_date - self._start_date).total_seconds()
def _setup_delegates(self): def _setup_delegates(self):
if self._table_view is None: if self._table_view is None:
return return
@ -85,7 +95,8 @@ class PamhyrTableModel(QAbstractTableModel):
undo=None, undo=None,
opt_data=None, opt_data=None,
options=["rows_selection"], options=["rows_selection"],
parent=None): parent=None,
start_date=None):
super(PamhyrTableModel, self).__init__() super(PamhyrTableModel, self).__init__()
self._table_view = table_view self._table_view = table_view
@ -102,6 +113,7 @@ class PamhyrTableModel(QAbstractTableModel):
self._options = options self._options = options
self._undo = undo self._undo = undo
self._lst = [] self._lst = []
self._start_date = start_date
self._setup_delegates() self._setup_delegates()
self._setup_lst() self._setup_lst()

View File

@ -77,7 +77,9 @@ class TableModel(PamhyrTableModel):
if self._opt_data == "time": if self._opt_data == "time":
value = timestamp_to_old_pamhyr_date(int(v)) value = timestamp_to_old_pamhyr_date(int(v))
else: else:
value = str(datetime.fromtimestamp(v)) value = str(
self._start_date + timedelta(seconds=float(v))
)
else: else:
value = f"{v}" value = f"{v}"
@ -94,6 +96,10 @@ class TableModel(PamhyrTableModel):
column = index.column() column = index.column()
try: try:
if (self._data.header[column] == "time"
and self._opt_data == "date"):
value = self.date_to_elapsed_seconds(value)
self._undo.push( self._undo.push(
SetDataCommand( SetDataCommand(
self._data, row, column, value self._data, row, column, value

View File

@ -121,7 +121,8 @@ class EditWeatherParametersWindow(PamhyrWindow):
data=self._data, data=self._data,
undo=self._undo_stack, undo=self._undo_stack,
trad=self._trad, trad=self._trad,
opt_data=self._study.time_system opt_data=self._study.time_system,
start_date=self._study.date
) )
table.setModel(self._table) table.setModel(self._table)