21#ifndef SWMMATTRIBUTETABLEMODEL_H
22#define SWMMATTRIBUTETABLEMODEL_H
24#include <QAbstractTableModel>
99 double minValue = -std::numeric_limits<double>::infinity();
100 double maxValue = std::numeric_limits<double>::infinity();
138 {
return m_category; }
156 QList<openswmmvis::ColumnSpec>
columnSpecs()
const {
return m_columnSpecs; }
168 [[nodiscard]] QUndoStack *
undoStack()
const {
return m_undoStack; }
178 QVariant
data(
const QModelIndex &
index,
int role = Qt::DisplayRole)
const override;
179 bool setData(
const QModelIndex &
index,
const QVariant &value,
180 int role = Qt::EditRole)
override;
181 Qt::ItemFlags
flags(
const QModelIndex &
index)
const override;
182 QVariant
headerData(
int section, Qt::Orientation orientation,
183 int role = Qt::DisplayRole)
const override;
206 void rebuildColumnSchema();
217 void appendInitialQualityColumns();
221 void appendUserFlagColumns();
228 void appendDynamicsColumns();
229 QVariantMap rowData(
int row)
const;
233 [[nodiscard]]
int columnForSetter(
const QString &
tag)
const;
237 [[nodiscard]] QString rainFileFor(
int row)
const;
251 bool commitRainFilePath(
const QModelIndex &pathIndex,
252 const QVariant &oldPath,
const QVariant &newPath);
254 QPointer<SWMMModelLayer> m_layer;
255 QPointer<SWMMResultsLayer> m_resultsSource;
257 QStringList m_columnKeys;
258 QStringList m_columnLabels;
259 QList<openswmmvis::ColumnSpec> m_columnSpecs;
260 QUndoStack *m_undoStack =
nullptr;
265 mutable QVector<QVariantMap> m_rowCache;
266 mutable QVector<bool> m_rowCacheValid;
275 mutable QHash<int, int> m_inflowCountByNode;
276 mutable QHash<int, int> m_dwfCountByNode;
277 mutable QHash<int, int> m_rdiiCountByNode;
278 mutable QHash<int, int> m_treatmentActiveByNode;
279 mutable int m_compoundPollutantCount = 0;
280 mutable bool m_compoundCacheBuilt =
false;
281 void ensureCompoundCacheBuilt()
const;
282 void invalidateCompoundCache();
288 mutable QHash<int, QHash<QString, double>> m_initQualityByElem;
289 mutable bool m_initQualityCacheBuilt =
false;
290 void ensureInitQualityCacheBuilt()
const;
Definition swmmattributetablemodel.h:111
void refreshHeaders()
Definition swmmattributetablemodel.cpp:2149
SWMMResultsLayer * resultsSource() const
Definition swmmattributetablemodel.h:134
void setSource(SWMMModelLayer *layer, SWMMModelLayer::Category category)
Definition swmmattributetablemodel.cpp:2100
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition swmmattributetablemodel.cpp:3572
QList< openswmmvis::ColumnSpec > columnSpecs() const
Definition swmmattributetablemodel.h:156
void setResultsSource(SWMMResultsLayer *layer)
Definition swmmattributetablemodel.cpp:2114
int columnCount(const QModelIndex &parent={}) const override
Definition swmmattributetablemodel.cpp:2392
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition swmmattributetablemodel.cpp:3003
void reload()
Definition swmmattributetablemodel.cpp:2176
bool commitValueDirect(const QModelIndex &index, const QVariant &value)
Definition swmmattributetablemodel.cpp:3096
void setUndoStack(QUndoStack *stack)
Definition swmmattributetablemodel.h:167
SWMMModelLayer * layer() const noexcept
Definition swmmattributetablemodel.h:136
QString objectNameAt(int row) const
Definition swmmattributetablemodel.cpp:2426
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition swmmattributetablemodel.cpp:2462
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition swmmattributetablemodel.cpp:2398
void objectEdited(const QString &name)
QUndoStack * undoStack() const
Definition swmmattributetablemodel.h:168
QStringList columnKeys() const
Definition swmmattributetablemodel.h:151
int rowForName(const QString &name) const
Definition swmmattributetablemodel.cpp:2433
void refreshObject(const QString &name)
Definition swmmattributetablemodel.cpp:3475
SWMMModelLayer::Category category() const noexcept
Definition swmmattributetablemodel.h:137
int rowCount(const QModelIndex &parent={}) const override
Definition swmmattributetablemodel.cpp:2385
Renders the SWMM network elements (nodes, links, subcatchments, rain gages) for one OpenSWMMEngine mo...
Definition swmmmodellayer.h:133
static constexpr Category CatJunctions
Definition swmmmodellayer.h:156
Overlays time-stepped simulation results on the SWMM network geometry.
Definition swmmresultslayer.h:96
SWMM_FilePathRole role
Definition ioportabilitynormalizer.cpp:22
int index
Position in m_quadRegions / m_quadReports.
Definition meshgenerator.cpp:153
QString tag
r.tag or inherited from a dropped RegionMarker.
Definition meshgenerator.cpp:167
SwmmCategory
Stable ordinal categorising every SWMM-element kind that has per-kind styling, per-kind tree rows,...
Definition swmm_category.h:28
Definition aquiferprovider.h:21
EditorKind
Definition swmmattributetablemodel.h:39
@ ReadOnly
Default; flags() omits ItemIsEditable.
@ Numeric
NumericDelegate (QDoubleSpinBox).
@ Text
Plain QLineEdit (default delegate); used for Name column.
@ Integer
IntegerDelegate (QSpinBox).
@ Enum
EnumDelegate (QComboBox) with pre-baked pairs.
UnitKind
Definition swmmattributetablemodel.h:74
@ FlowRate
CFS / CMS — uses UnitSystem::flowUnitLabel.
@ None
No physical unit (counts, ids, names, etc.)
@ Depression
in / mm (depression storage, rainfall)
@ SubcatchArea
ac / ha (subcatchment area; SWMM convention)
@ Length
ft / m (invert, max depth, offsets, crest height)
@ Rate
in/hr / mm/hr (infiltration, seepage)
@ Area
ft² / m² (ponded area, cross-section)
constexpr int kFileColumnOptionsRole
Definition swmmattributetablemodel.h:67
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString name
Definition sectionmodelbuilders.cpp:474
Definition swmmattributetablemodel.h:93
int decimals
Definition swmmattributetablemodel.h:101
QVariantList enumValues
For Enum: list of {label, data} pairs.
Definition swmmattributetablemodel.h:98
UnitKind unit
Semantic unit (resolved at render)
Definition swmmattributetablemodel.h:102
double minValue
Definition swmmattributetablemodel.h:99
QString label
Header label (without unit suffix)
Definition swmmattributetablemodel.h:95
QString tooltip
Definition swmmattributetablemodel.h:103
double maxValue
Definition swmmattributetablemodel.h:100
EditorKind editor
Definition swmmattributetablemodel.h:96
QString key
identifyByName-map key (display)
Definition swmmattributetablemodel.h:94
QString fileFilter
For FileBrowse: QFileDialog name filter.
Definition swmmattributetablemodel.h:105
QString setter
Setter tag (empty == read-only)
Definition swmmattributetablemodel.h:97
Map layer that renders an OpenSWMMEngine network (nodes, links, subcatchments, rain gages) and provid...
Layer that colour-maps SWMM simulation output over the network geometry for interactive time-stepped ...