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
openswmmvis::plot::TimeSeriesRunLayer Class Referencefinal

Immutable dataset adapter; GUI calls never perform observation database reads. More...

#include <timeseriesrunlayer.h>

Inheritance diagram for openswmmvis::plot::TimeSeriesRunLayer:
Collaboration diagram for openswmmvis::plot::TimeSeriesRunLayer:

Classes

struct  Work
 Shared worker state; done publishes all result writes with release/acquire ordering. More...
 

Signals

void dataReady ()
 A display/statistics cache was published on the GUI thread; refresh views.
 

Public Member Functions

 TimeSeriesRunLayer (std::shared_ptr< const OpenSWMM::TimeSeries::TimeSeriesDataset > dataset)
 
 ~TimeSeriesRunLayer () override
 Cancel queued work and join the current bounded-reader worker.
 
QString scenarioName () const override
 
UnitSystem unitSystem () const override
 
double startDateJulian () const override
 
int periodCount () const override
 
int reportStepSeconds () const override
 
QString persistenceKey () const override
 
bool supportsAttribute (PlotAttribute) const override
 
void getSeriesAt (const ObjectRef &, PlotAttribute, SeriesData &out) const override
 Fixed attributes are deliberately unsupported for native observations.
 
void getSeriesAt (const ObjectRef &ref, const ResultDescriptor &descriptor, SeriesData &out) const override
 Return a cached display window and schedule missing work without synchronous IO.
 
void requestWindow (const QStringList &ids, QDateTime from={}, QDateTime to={})
 Request a bounded display window for selected series.
 
void setModelClockOffset (int seconds)
 Explicitly map UTC observation instants to a fixed-offset model wall clock.
 
bool hasModelClockMapping () const
 
ResultDescriptor descriptorFor (const QString &id) const
 
const OpenSWMM::TimeSeries::SeriesInfo * series (const QString &id) const
 
auto dataset () const
 
- Public Member Functions inherited from openswmmvis::plot::IRunLayer
virtual ~IRunLayer ()=default
 Destroy the concrete run source through the interface; callers own the lifetime unless a concrete QObject owner supplies it.
 
virtual void getSeriesBatch (const QVector< SeriesRequest > &requests, QVector< SeriesData > &out) const
 
virtual QVector< ResultDescriptor > resultDescriptorsForKind (ObjectRef::Kind kind) const
 Y2b-1 (amendment D-Y4): everything plottable for kind on THIS run — the fixed attribute set as descriptors, plus any dynamic species the run carries. Base impl serves the fixed set only, which is exactly right for sources with no species (observed CSV, mesh layers, a legacy .out with no quality). SwmmOutRunLayer overrides to append the open run's species by name.
 

Static Public Member Functions

static SeriesData readWindow (const OpenSWMM::TimeSeries::TimeSeriesDataset &dataset, const QString &id, QDateTime from, QDateTime to, std::atomic_bool *cancel=nullptr)
 Build one worker-owned display window; also used by deterministic tests.
 
static bool exportCsv (const QVector< QPair< std::shared_ptr< const OpenSWMM::TimeSeries::TimeSeriesDataset >, QString > > &sources, const QString &path, QString *error, std::atomic_bool *cancel=nullptr)
 Stream full-resolution observations to a new CSV; no display buffers are used.
 

Detailed Description

Immutable dataset adapter; GUI calls never perform observation database reads.

Workers own their database handles. Published display buffers are capped at 12000 points per series; exact summaries are computed separately from all selected samples. Raw source times remain in the dataset. Calendar dates use an explicitly labelled calendar axis, without suggesting midnight UTC observations. No model clock or fit pairing is inferred.

Constructor & Destructor Documentation

◆ TimeSeriesRunLayer()

openswmmvis::plot::TimeSeriesRunLayer::TimeSeriesRunLayer ( std::shared_ptr< const OpenSWMM::TimeSeries::TimeSeriesDataset >  dataset)
explicit
Parameters
[in]datasetImmutable validated collection; no plugin lifetime is retained.

◆ ~TimeSeriesRunLayer()

openswmmvis::plot::TimeSeriesRunLayer::~TimeSeriesRunLayer ( )
override

Cancel queued work and join the current bounded-reader worker.

Member Function Documentation

◆ dataReady

void openswmmvis::plot::TimeSeriesRunLayer::dataReady ( )
signal

A display/statistics cache was published on the GUI thread; refresh views.

Here is the caller graph for this function:

◆ dataset()

auto openswmmvis::plot::TimeSeriesRunLayer::dataset ( ) const
inline
Returns
Shared immutable collection used by full-resolution export.
Here is the caller graph for this function:

◆ descriptorFor()

ResultDescriptor openswmmvis::plot::TimeSeriesRunLayer::descriptorFor ( const QString &  id) const
Parameters
[in]idStable source series identity.
Returns
Observation descriptor preserving units/statistic/time basis.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ exportCsv()

bool openswmmvis::plot::TimeSeriesRunLayer::exportCsv ( const QVector< QPair< std::shared_ptr< const OpenSWMM::TimeSeries::TimeSeriesDataset >, QString > > &  sources,
const QString &  path,
QString *  error,
std::atomic_bool *  cancel = nullptr 
)
static

Stream full-resolution observations to a new CSV; no display buffers are used.

Parameters
[in]sourcesDataset/series pairs, independent of plot windows and decimation.
[in]pathDestination CSV; atomically replaced only after successful complete write.
[out]errorFailure or cancellation detail.
[in]cancelCooperative cancellation flag.
Returns
True after atomic publication. Run on a worker.
Here is the call graph for this function:

◆ getSeriesAt() [1/2]

void openswmmvis::plot::TimeSeriesRunLayer::getSeriesAt ( const ObjectRef &  ,
PlotAttribute  ,
SeriesData &  out 
) const
overridevirtual

Fixed attributes are deliberately unsupported for native observations.

Parameters
[in,out]outReceives the unsupported-attribute diagnostic.

Implements openswmmvis::plot::IRunLayer.

◆ getSeriesAt() [2/2]

void openswmmvis::plot::TimeSeriesRunLayer::getSeriesAt ( const ObjectRef &  ref,
const ResultDescriptor &  descriptor,
SeriesData &  out 
) const
overridevirtual

Return a cached display window and schedule missing work without synchronous IO.

Parameters
[in]refObserved reference whose name is a stable series UUID.
[in]descriptorExact descriptor returned by descriptorFor().
[in,out]outReceives cached values or loading/error state.

Reimplemented from openswmmvis::plot::IRunLayer.

Here is the call graph for this function:

◆ hasModelClockMapping()

bool openswmmvis::plot::TimeSeriesRunLayer::hasModelClockMapping ( ) const
inline
Returns
Whether a user supplied a model-clock mapping for comparison with results.

◆ periodCount()

int openswmmvis::plot::TimeSeriesRunLayer::periodCount ( ) const
overridevirtual
Returns
Largest series sample count, clamped to the legacy interface integer range.

Implements openswmmvis::plot::IRunLayer.

◆ persistenceKey()

QString openswmmvis::plot::TimeSeriesRunLayer::persistenceKey ( ) const
overridevirtual
Returns
Native dataset identity URI; never a model/run filename.

Reimplemented from openswmmvis::plot::IRunLayer.

◆ readWindow()

SeriesData openswmmvis::plot::TimeSeriesRunLayer::readWindow ( const OpenSWMM::TimeSeries::TimeSeriesDataset &  dataset,
const QString &  id,
QDateTime  from,
QDateTime  to,
std::atomic_bool *  cancel = nullptr 
)
static

Build one worker-owned display window; also used by deterministic tests.

Parameters
[in]datasetSource metadata; sample IO occurs on the calling thread.
[in]idStable series identity.
[in]fromInclusive display-coordinate range start, invalid for whole coverage.
[in]toInclusive range end.
[in]cancelCooperative cancellation flag.
Returns
Bounded display data; never suitable for model assignment or fit metrics.
Here is the call graph for this function:

◆ reportStepSeconds()

int openswmmvis::plot::TimeSeriesRunLayer::reportStepSeconds ( ) const
inlineoverridevirtual
Returns
Zero: no uniform sampling interval is inferred.

Implements openswmmvis::plot::IRunLayer.

◆ requestWindow()

void openswmmvis::plot::TimeSeriesRunLayer::requestWindow ( const QStringList &  ids,
QDateTime  from = {},
QDateTime  to = {} 
)

Request a bounded display window for selected series.

Parameters
[in]idsStable series identifiers.
[in]fromOptional UTC display coordinate; invalid requests complete coverage.
[in]toOptional inclusive display end; calendar series interpret its date fields.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ scenarioName()

QString openswmmvis::plot::TimeSeriesRunLayer::scenarioName ( ) const
overridevirtual
Returns
Collection display title, empty without metadata.

Implements openswmmvis::plot::IRunLayer.

◆ series()

const SeriesInfo * openswmmvis::plot::TimeSeriesRunLayer::series ( const QString &  id) const
Parameters
[in]idStable source series identity.
Returns
Borrowed immutable metadata, null for an unknown ID.
Here is the caller graph for this function:

◆ setModelClockOffset()

void openswmmvis::plot::TimeSeriesRunLayer::setModelClockOffset ( int  seconds)

Explicitly map UTC observation instants to a fixed-offset model wall clock.

Parameters
[in]secondsSigned UTC offset in [-50400,50400]. Calendar dates retain their date.
Note
Cancels stale queries and discards display caches; source files are unchanged.

◆ startDateJulian()

double openswmmvis::plot::TimeSeriesRunLayer::startDateJulian ( ) const
overridevirtual
Returns
First series display start, or NaN for no series.

Implements openswmmvis::plot::IRunLayer.

Here is the call graph for this function:

◆ supportsAttribute()

bool openswmmvis::plot::TimeSeriesRunLayer::supportsAttribute ( PlotAttribute  ) const
inlineoverridevirtual
Returns
False: native observations use descriptors rather than fixed result attributes.

Reimplemented from openswmmvis::plot::IRunLayer.

◆ unitSystem()

UnitSystem openswmmvis::plot::TimeSeriesRunLayer::unitSystem ( ) const
inlineoverridevirtual
Returns
Legacy family placeholder; native descriptor units always override it.

Implements openswmmvis::plot::IRunLayer.


The documentation for this class was generated from the following files: