From 7f5a3ebaded9ec1bd3c389446255c54ad644b059 Mon Sep 17 00:00:00 2001 From: Elisabeth Heinrich-Josties Date: Sat, 25 Jan 2020 05:00:45 +0000 Subject: [PATCH 1/2] Update percent complete for repeat types in tooltip --- static/js/request_detail.vue | 38 ++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/static/js/request_detail.vue b/static/js/request_detail.vue index 035d8b71..0edc2ad9 100644 --- a/static/js/request_detail.vue +++ b/static/js/request_detail.vue @@ -410,27 +410,45 @@ let fail_reason = ''; for (let csIndex in that.observationData[observationIdx].configuration_statuses) { let configurationStatus = that.observationData[observationIdx].configuration_statuses[csIndex]; - if (!_.isEmpty(configurationStatus.summary)) { - time_completed += configurationStatus.summary.time_completed; - if (fail_reason === '' && configurationStatus.summary.reason !== 'N/A') { - fail_reason = configurationStatus.summary.reason; - } - } + // Find the configuration that goes with this configuration status + let configuration = that.request.configurations[0]; for (let cIndex in that.request.configurations) { if (that.request.configurations[cIndex].id === configurationStatus.configuration) { - for (let icIndex in that.request.configurations[cIndex].instrument_configs) { - let instConfig = that.request.configurations[cIndex].instrument_configs[icIndex]; - total_time += instConfig.exposure_time * instConfig.exposure_count; - } + configuration = that.request.configurations[cIndex]; break; } } + if (_.startsWith(configuration.type, 'REPEAT') && configuration.repeat_duration) { + if (!_.isEmpty(configurationStatus.summary)) { + let start = new Date(configurationStatus.summary.start); + let end = new Date(configurationStatus.summary.end); + time_completed += (end - start) / 1000; + fail_reason = that.getFailReason(fail_reason, configurationStatus.summary.reason); + } + total_time += configuration.repeat_duration; + } else { + if (!_.isEmpty(configurationStatus.summary)) { + time_completed += configurationStatus.summary.time_completed; + fail_reason = that.getFailReason(fail_reason, configurationStatus.summary.reason); + } + for (let icIndex in configuration.instrument_configs) { + let instConfig = configuration.instrument_configs[icIndex]; + total_time += instConfig.exposure_time * instConfig.exposure_count; + } + } } that.observationData[observationIdx].percent_completed = (time_completed / total_time) * 100.0; that.observationData[observationIdx].fail_reason = fail_reason; } }); }, + getFailReason: function(currentFailReason, newFailReason) { + let failReason = ''; + if (currentFailReason === '' && newFailReason !== 'N/A') { + failReason = newFailReason; + } + return failReason; + }, loadAirmassData: function() { if (this.hasTarget) { let that = this; From e29c7d662ef1d9c389f2331c3eb9b45e7517869f Mon Sep 17 00:00:00 2001 From: Elisabeth Heinrich-Josties Date: Sun, 2 Feb 2020 02:48:55 +0000 Subject: [PATCH 2/2] Do not show wrong configuration if a matching one is not found --- static/js/components/observationhistory.vue | 7 +++- static/js/request_detail.vue | 44 ++++++++++++--------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/static/js/components/observationhistory.vue b/static/js/components/observationhistory.vue index 6b390e7a..8ed8efd7 100644 --- a/static/js/components/observationhistory.vue +++ b/static/js/components/observationhistory.vue @@ -101,10 +101,13 @@ } observation.state = state; - if (observation.fail_reason !== '') { + if (_.isString(observation.fail_reason) && observation.fail_reason !== '') { observation.fail_reason = '
reason: ' + observation.fail_reason; + } else { + observation.fail_reason = ''; } - if (observation.percent_completed > 0) { + + if (_.isFinite(observation.percent_completed) && observation.percent_completed > 0) { observation.percent_completed = '
percent completed: ' + observation.percent_completed.toFixed(1); } else { diff --git a/static/js/request_detail.vue b/static/js/request_detail.vue index 0edc2ad9..d85df02b 100644 --- a/static/js/request_detail.vue +++ b/static/js/request_detail.vue @@ -410,34 +410,42 @@ let fail_reason = ''; for (let csIndex in that.observationData[observationIdx].configuration_statuses) { let configurationStatus = that.observationData[observationIdx].configuration_statuses[csIndex]; + let summaryExists = !_.isEmpty(configurationStatus.summary); + if (summaryExists) { + fail_reason = that.getFailReason(fail_reason, configurationStatus.summary.reason); + } // Find the configuration that goes with this configuration status - let configuration = that.request.configurations[0]; + let configuration; for (let cIndex in that.request.configurations) { if (that.request.configurations[cIndex].id === configurationStatus.configuration) { configuration = that.request.configurations[cIndex]; break; } } - if (_.startsWith(configuration.type, 'REPEAT') && configuration.repeat_duration) { - if (!_.isEmpty(configurationStatus.summary)) { - let start = new Date(configurationStatus.summary.start); - let end = new Date(configurationStatus.summary.end); - time_completed += (end - start) / 1000; - fail_reason = that.getFailReason(fail_reason, configurationStatus.summary.reason); - } - total_time += configuration.repeat_duration; - } else { - if (!_.isEmpty(configurationStatus.summary)) { - time_completed += configurationStatus.summary.time_completed; - fail_reason = that.getFailReason(fail_reason, configurationStatus.summary.reason); - } - for (let icIndex in configuration.instrument_configs) { - let instConfig = configuration.instrument_configs[icIndex]; - total_time += instConfig.exposure_time * instConfig.exposure_count; + if (configuration) { + if (_.startsWith(configuration.type, 'REPEAT') && configuration.repeat_duration) { + if (summaryExists) { + let start = new Date(configurationStatus.summary.start); + let end = new Date(configurationStatus.summary.end); + time_completed += (end - start) / 1000; + } + total_time += configuration.repeat_duration; + } else { + if (summaryExists) { + time_completed += configurationStatus.summary.time_completed; + } + for (let icIndex in configuration.instrument_configs) { + let instConfig = configuration.instrument_configs[icIndex]; + total_time += instConfig.exposure_time * instConfig.exposure_count; + } } } } - that.observationData[observationIdx].percent_completed = (time_completed / total_time) * 100.0; + let percentCompleted; + if (total_time > 0) { + percentCompleted = (time_completed / total_time) * 100.0; + } + that.observationData[observationIdx].percent_completed = percentCompleted; that.observationData[observationIdx].fail_reason = fail_reason; } });