From 880bff02c65b7423db050fe5008585de95f70c6e Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Wed, 13 Apr 2016 13:50:02 +0200 Subject: [PATCH] JobItem duration sec.msec is added to the list of properties --- GUI/coregui/Models/JobItem.cpp | 14 ++++++++++++++ GUI/coregui/Models/JobItem.h | 3 +++ GUI/coregui/Models/JobQueueData.cpp | 17 +---------------- GUI/coregui/Models/JobQueueData.h | 2 -- GUI/coregui/Models/JobRunner.cpp | 8 ++++++++ GUI/coregui/Models/JobRunner.h | 3 +++ 6 files changed, 29 insertions(+), 18 deletions(-) diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp index 6d61407d1a1..76425ee540a 100644 --- a/GUI/coregui/Models/JobItem.cpp +++ b/GUI/coregui/Models/JobItem.cpp @@ -24,6 +24,7 @@ #include "JobResultsPresenter.h" #include "SimulationOptionsItem.h" #include "GUIHelpers.h" +#include <QDateTime> #include <QDebug> const QString JobItem::P_IDENTIFIER = "Identifier"; @@ -33,6 +34,7 @@ const QString JobItem::P_WITH_FITTING = "With Fitting"; const QString JobItem::P_STATUS = "Status"; const QString JobItem::P_BEGIN_TIME = "Begin Time"; const QString JobItem::P_END_TIME = "End Time"; +const QString JobItem::P_DURATION = "Duration"; const QString JobItem::P_COMMENTS = "Comments"; const QString JobItem::P_PROGRESS = "Progress"; const QString JobItem::T_SAMPLE = "Sample Tag"; @@ -58,6 +60,11 @@ JobItem::JobItem() addProperty(P_BEGIN_TIME, QString())->setEditable(false); addProperty(P_END_TIME, QString())->setEditable(false); + + SessionItem *durationItem = addProperty(P_DURATION, QString()); + durationItem->setEditable(false); + durationItem->setToolTip(QStringLiteral("Duration of DWBA simulation in sec.msec format")); + addProperty(P_COMMENTS, QString())->setVisible(false); addProperty(P_PROGRESS, 0)->setVisible(false); @@ -162,6 +169,13 @@ void JobItem::setEndTime(const QString &end_time) setItemValue(P_END_TIME, end_time); } +void JobItem::setDuration(int duration) +{ + QString str; + str.sprintf("%6.3f", duration/1000.); + setItemValue(P_DURATION, str.simplified()); +} + QString JobItem::getComments() const { return getItemValue(P_COMMENTS).toString(); diff --git a/GUI/coregui/Models/JobItem.h b/GUI/coregui/Models/JobItem.h index 6e2302c7488..5572086342e 100644 --- a/GUI/coregui/Models/JobItem.h +++ b/GUI/coregui/Models/JobItem.h @@ -37,6 +37,7 @@ public: static const QString P_STATUS; static const QString P_BEGIN_TIME; static const QString P_END_TIME; + static const QString P_DURATION; static const QString P_COMMENTS; static const QString P_PROGRESS; static const QString T_SAMPLE; @@ -66,6 +67,8 @@ public: void setEndTime(const QString &end_time); + void setDuration(int duration); + QString getComments() const; void setComments(const QString &comments); diff --git a/GUI/coregui/Models/JobQueueData.cpp b/GUI/coregui/Models/JobQueueData.cpp index 7766217c234..2ae18b0bc85 100644 --- a/GUI/coregui/Models/JobQueueData.cpp +++ b/GUI/coregui/Models/JobQueueData.cpp @@ -78,22 +78,6 @@ bool JobQueueData::hasUnfinishedJobs() return m_simulations.size(); } -//void JobQueueData::setResults(JobItem *jobItem, const GISASSimulation *simulation) -//{ -// if(!simulation) -// throw GUIHelpers::Error("NJobItem::setResults() -> Error. Null simulation."); - -// jobItem->setResults(simulation); -//// IntensityDataItem *intensityItem = jobItem->getIntensityDataItem(); - -//// if(!intensityItem) { -//// intensityItem = static_cast<IntensityDataItem *>(m_jobModel->insertNewItem(Constants::IntensityDataType, m_jobModel->indexOfItem(jobItem))); -//// } -//// intensityItem->setNameFromProposed(jobItem->itemName()); -////// intensityItem->setOutputData(simulation->getDetectorIntensity()); -//// intensityItem->setResults(simulation); -//} - void JobQueueData::runJob(const QString &identifier) { qDebug() << "JobQueueData::runJob(const QString &identifier)"; @@ -207,6 +191,7 @@ void JobQueueData::onFinishedJob() QString end_time = QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss"); jobItem->setEndTime(end_time); + jobItem->setDuration(runner->getSimulationDuration()); // propagating status of runner diff --git a/GUI/coregui/Models/JobQueueData.h b/GUI/coregui/Models/JobQueueData.h index 11836f5f9e9..6f940688aaa 100644 --- a/GUI/coregui/Models/JobQueueData.h +++ b/GUI/coregui/Models/JobQueueData.h @@ -43,8 +43,6 @@ public: bool hasUnfinishedJobs(); -// void setResults(JobItem *jobItem, const GISASSimulation *simulation); - signals: void globalProgress(int); void focusRequest(const QString &identifier); diff --git a/GUI/coregui/Models/JobRunner.cpp b/GUI/coregui/Models/JobRunner.cpp index 727776c5876..e76324b73e7 100644 --- a/GUI/coregui/Models/JobRunner.cpp +++ b/GUI/coregui/Models/JobRunner.cpp @@ -21,6 +21,7 @@ #include "item_constants.h" #include <functional> #include <QTimer> +#include <QDateTime> #include <QDebug> @@ -30,6 +31,7 @@ JobRunner::JobRunner(QString identifier, GISASSimulation *simulation) , m_progress(0) , m_job_status(Constants::STATUS_IDLE) , m_terminate_request_flag(false) + , m_simulation_duration(0) { } @@ -50,6 +52,7 @@ void JobRunner::start() { qDebug() << "JobRunner::start() " << m_simulation; m_terminate_request_flag = false; + m_simulation_duration = 0; emit started(); if(m_simulation) { @@ -61,9 +64,14 @@ void JobRunner::start() m_job_status = Constants::STATUS_RUNNING; try { + QDateTime beginTime = QDateTime::currentDateTime(); m_simulation->runSimulation(); if(m_job_status != Constants::STATUS_CANCELED) m_job_status = Constants::STATUS_COMPLETED; + + QDateTime endTime = QDateTime::currentDateTime(); + m_simulation_duration = beginTime.msecsTo(endTime); + } catch(const std::exception &ex) { diff --git a/GUI/coregui/Models/JobRunner.h b/GUI/coregui/Models/JobRunner.h index 46c44323c1e..eea8c01068d 100644 --- a/GUI/coregui/Models/JobRunner.h +++ b/GUI/coregui/Models/JobRunner.h @@ -45,6 +45,8 @@ public: QString getFailureMessage() const { return m_failure_message; } + int getSimulationDuration() const { return m_simulation_duration; } + signals: void started(); void finished(); @@ -65,6 +67,7 @@ private: bool m_terminate_request_flag; QString m_failure_message; + int m_simulation_duration; }; -- GitLab