From 3d71befbad329089073e55c0ac0691c5e0b116a7 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Sat, 19 May 2018 14:43:16 +0200 Subject: [PATCH] filter gallery items by max value and average --- .../pdbui/domain/PlotResponseStats.java | 2 +- .../main/resources/resources/css/design.css | 4 + pdb-ui/src/main/resources/resources/js/ui.js | 127 ++++++++++++++++-- 3 files changed, 118 insertions(+), 15 deletions(-) diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotResponseStats.java b/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotResponseStats.java index bd42262..e6cd888 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotResponseStats.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/domain/PlotResponseStats.java @@ -92,7 +92,7 @@ public class PlotResponseStats { dataSerie.getMaxValue(), dataSerie.getAverage())); } - final double average = DataSeriesStats.average(dataSeriesStats); + final double average = Math.round(DataSeriesStats.average(dataSeriesStats)); return new PlotResponseStats(maxValue, values, plottedValues, average, dataSeriesStats); } diff --git a/pdb-ui/src/main/resources/resources/css/design.css b/pdb-ui/src/main/resources/resources/css/design.css index 83f8bb6..deae86e 100644 --- a/pdb-ui/src/main/resources/resources/css/design.css +++ b/pdb-ui/src/main/resources/resources/css/design.css @@ -264,3 +264,7 @@ input:required:invalid { .clickable { cursor: pointer; } + +.time { + font-family: monospace; +} \ No newline at end of file diff --git a/pdb-ui/src/main/resources/resources/js/ui.js b/pdb-ui/src/main/resources/resources/js/ui.js index b54cbb5..4719736 100644 --- a/pdb-ui/src/main/resources/resources/js/ui.js +++ b/pdb-ui/src/main/resources/resources/js/ui.js @@ -260,8 +260,31 @@ Vue.component('result-view-gallery-item', { data.gallery.image = this.galleryItem.imageUrl; } }, + computed: { + showItem: function(){ + const predicate = data.gallery.filter.threshold.comparator + ? function(a, b) { return a <= b; } + : function(a, b) { return a >= b; }; + const value = timeUnitToMillis(data.gallery.filter.threshold.value, data.gallery.filter.threshold.unit); + switch(data.gallery.filter.option){ + case 'NONE': + return true; + case 'MAX_VALUE': + return predicate(this.galleryItem.stats.maxValue, value); + case 'AVG': + return predicate(this.galleryItem.stats.average, value); + } + throw "unhandled option: " + data.gallery.filter.option; + }, + maxValue: function(){ + return formatMs(this.galleryItem.stats.maxValue); + }, + average: function(){ + return formatMs(this.galleryItem.stats.average); + } + }, template: ` - -