SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
timeserieslayer.h
Go to the documentation of this file.
1
9#pragma once
10
14#include <QJsonArray>
15#include <QPointer>
16#include <memory>
17
18class MapCanvas;
19class QWidget;
20
28class TimeSeriesLayer final : public GISVectorLayer
29{
30 Q_OBJECT
31public:
34 explicit TimeSeriesLayer(OpenSWMMVisWorkspace *parent = nullptr);
36 ~TimeSeriesLayer() override;
37
44 bool openTimeSeries(const QString &path, const QString &expectedDatasetId = {},
45 QString *error = nullptr);
47 std::shared_ptr<const OpenSWMM::TimeSeries::TimeSeriesDataset> dataset() const
48 {
49 return m_data;
50 }
52 QString sourcePath() const { return m_sourcePath; }
54 QString datasetId() const { return m_expectedId; }
56 QString sourceError() const { return m_sourceError; }
58 QString sourceDescription() const override { return m_sourcePath; }
60 QVector<QPair<QString, QString>> extendedMetadata() const override;
62 QStringList seriesIds() const;
65 OpenSWMM::TimeSeries::SeriesInfo seriesInfo(const QString &id) const;
68 QString seriesCaption(const QString &id) const;
70 QStringList selectedSeriesIds() const;
73 void setSelectedSeriesIds(const QStringList &ids);
76 void bindCanvas(MapCanvas *canvas);
78 QJsonArray associations() const { return m_associations; }
81 void restoreAssociations(const QJsonArray &links);
86 bool attachToSelectedFeature(const QStringList &ids, QString *error = nullptr);
89 void detachFeatures(const QStringList &ids);
92 QString associationStatus(const QString &id) const;
97 QStringList seriesForFeature(const SWMMObjectRef &feature,
98 const OpenSWMMVisLayer *targetLayer = nullptr) const;
101 QStringList seriesForLocations(const QSet<long long> &fids) const;
106 bool canZoomToLocations(const QStringList &ids) const;
111 bool zoomToLocations(const QStringList &ids);
115 void showData(QWidget *parent = nullptr, const QString &initialSeries = {});
119 void requestPlot(const QStringList &ids = {}, QWidget *parent = nullptr);
122 void locateSource(QWidget *parent = nullptr);
126 SWMMObjectRef seriesRef(const QString &seriesId) const;
130 QString seriesIdForRef(const SWMMObjectRef &ref) const;
131
132signals:
137 void seriesSelectionChanged(const QStringList &ids);
144 void plotRequested(const QStringList &ids);
147 void useInModelRequested(const QString &id);
148
149private:
153 MapExtent locationsExtent(const QStringList &ids) const;
155 void synchronizeSelection();
158 void applyAssociations(const QJsonArray &links);
163 bool resolveAssociation(const QJsonObject &link, SWMMObjectRef *target = nullptr) const;
164 QString m_sourcePath;
165 QString m_expectedId;
166 QString m_sourceError;
167 std::shared_ptr<const OpenSWMM::TimeSeries::TimeSeriesDataset> m_data;
168 QHash<QString, qsizetype>
169 m_seriesIndex;
170 QSet<QString> m_selected;
171 QSet<SWMMObjectRef>
172 m_linkHighlights;
173 QHash<long long, QString> m_locationFids;
174 QJsonArray m_associations;
175 QPointer<MapCanvas> m_canvas;
176 QPointer<SelectionManager> m_selection;
177 QPointer<QWidget> m_browser;
178 QList<QMetaObject::Connection> m_connections;
179 bool m_syncing = false;
180};
181
184 QPointer<TimeSeriesLayer> layer;
185 QStringList seriesIds;
186};
187
194QList<TimeSeriesMapHit> timeSeriesHitsAt(MapCanvas *canvas, double x, double y, double tolerance);
A map layer backed by a GDAL/OGR vector dataset.
Definition gisvectorlayer.h:114
The central map display widget — QGIS-style hybrid rendering.
Definition mapcanvas.h:70
An axis-aligned bounding box in the coordinate space of a given CRS.
Definition mapextent.h:27
Abstract base class for all layers displayed in the MapCanvas.
Definition openswmmvislayer.h:133
Top-level project container managing sessions, the SWMM model layer, and persistence paths for one SW...
Definition openswmmvisworkspace.h:42
GUI-owned observation layer with read-only, independently owned source samples.
Definition timeserieslayer.h:29
void seriesSelectionChanged(const QStringList &ids)
Shared selected series changed; subscribers must not mutate source samples.
QStringList seriesForLocations(const QSet< long long > &fids) const
Definition timeserieslayer.cpp:259
SWMMObjectRef seriesRef(const QString &seriesId) const
Build a qualified external-series selection token.
Definition timeserieslayer.cpp:247
void associationResolutionChanged()
Referenced-layer availability changed; no authored relationship changed.
OpenSWMM::TimeSeries::SeriesInfo seriesInfo(const QString &id) const
Definition timeserieslayer.cpp:221
bool openTimeSeries(const QString &path, const QString &expectedDatasetId={}, QString *error=nullptr)
Validate and open metadata and the bounded station table.
Definition timeserieslayer.cpp:160
void bindCanvas(MapCanvas *canvas)
Attach/detach the canvas and its selection/lifecycle signals.
Definition timeserieslayer.cpp:399
void setSelectedSeriesIds(const QStringList &ids)
Replace collection selection and synchronize owned markers and the project bus.
Definition timeserieslayer.cpp:347
bool attachToSelectedFeature(const QStringList &ids, QString *error=nullptr)
Attach selected series to one currently selected persistent GIS/model feature.
Definition timeserieslayer.cpp:642
QJsonArray associations() const
Definition timeserieslayer.h:78
QString seriesIdForRef(const SWMMObjectRef &ref) const
Interpret a selection token belonging to this layer.
Definition timeserieslayer.cpp:251
std::shared_ptr< const OpenSWMM::TimeSeries::TimeSeriesDataset > dataset() const
Definition timeserieslayer.h:47
QString datasetId() const
Definition timeserieslayer.h:54
bool canZoomToLocations(const QStringList &ids) const
Whether exact series have an owned station or a currently resolved feature link.
Definition timeserieslayer.cpp:336
void restoreAssociations(const QJsonArray &links)
Restore validated relationship records without an undo step.
Definition timeserieslayer.cpp:569
bool zoomToLocations(const QStringList &ids)
Frame the requested source stations, falling back to links for unlocated series.
Definition timeserieslayer.cpp:342
QVector< QPair< QString, QString > > extendedMetadata() const override
Definition timeserieslayer.cpp:206
QString sourcePath() const
Definition timeserieslayer.h:52
void locateSource(QWidget *parent=nullptr)
Present a persistent-source locator; validates the expected dataset UUID.
Definition timeserieslayer.cpp:805
~TimeSeriesLayer() override
Release presentation connections; source files are never deleted.
Definition timeserieslayer.cpp:153
QStringList selectedSeriesIds() const
Definition timeserieslayer.cpp:239
void plotRequested(const QStringList &ids)
Native controller should plot these series from this layer.
void useInModelRequested(const QString &id)
Native controller should prepare an explicit model-owned copy.
void datasetChanged()
Dataset became available/unavailable; old metadata pointers remain immutable snapshots.
void requestPlot(const QStringList &ids={}, QWidget *parent=nullptr)
Request plotting, choosing series when more than one is available.
Definition timeserieslayer.cpp:765
QStringList seriesForFeature(const SWMMObjectRef &feature, const OpenSWMMVisLayer *targetLayer=nullptr) const
Find series attached to an exact live feature identity.
Definition timeserieslayer.cpp:627
QString seriesCaption(const QString &id) const
Definition timeserieslayer.cpp:227
QStringList seriesIds() const
Definition timeserieslayer.cpp:213
QString sourceError() const
Definition timeserieslayer.h:56
void showData(QWidget *parent=nullptr, const QString &initialSeries={})
Show the modeless native series/observation browser.
Definition timeserieslayer.cpp:755
QString associationStatus(const QString &id) const
Definition timeserieslayer.cpp:620
void associationsChanged()
Project relationships changed; persist sidecar metadata and mark project dirty.
void detachFeatures(const QStringList &ids)
Remove relationships as one undoable presentation edit.
Definition timeserieslayer.cpp:736
QString sourceDescription() const override
Definition timeserieslayer.h:58
QString path
Populated by the worker only after its own successful atomic creation.
Definition extensiontimeseriesaccess.cpp:32
Map layer backed by an OGR vector dataset (Shapefile, GeoJSON, GeoPackage, …), rendering features as ...
int link
Definition heatconfigdialog.cpp:65
QString target
Definition initialbedqualitydialog.cpp:51
int feature
Definition constraintaudit.cpp:156
int parent
Definition planning.cpp:199
per-project Cross-View Selection Bus.
One homogeneous source series; all identifiers retain leading zeros.
Definition timeseriesdataset.h:34
Identifies a single SWMM object.
Definition selectionmanager.h:34
One native plot hit; guarded layer plus copied series identities.
Definition timeserieslayer.h:183
QPointer< TimeSeriesLayer > layer
Borrowed eligible collection; becomes null if the layer is removed and destroyed.
Definition timeserieslayer.h:184
QStringList seriesIds
Copied stable series identities eligible at the picked map position.
Definition timeserieslayer.h:185
int y
Definition terrainerrorfield.cpp:60
double error
Definition terrainerrorfield.cpp:42
int x
Definition terrainerrorfield.cpp:60
Owning metadata and bounded sample values for native observation datasets.
QList< TimeSeriesMapHit > timeSeriesHitsAt(MapCanvas *canvas, double x, double y, double tolerance)
Find visible owned station or linked-feature series at a canvas location.
Definition timeserieslayer.cpp:841
QVector< QVector< QPointF > > links
Definition traceanalysislayer.cpp:164