-
{{ annoation.alias }}
-
{{ annotation.alias }}
-
- {{ annotation.display_value | numberOrText}}
+
+
OK
+
Warning
+
Critical
+
No data
+
Disabled
+
+
-
+
+
+
-
-
-
{{ crit.alias }}
-
{{ crit.alias }}
-
- {{ crit.display_value | numberOrText }}
-
+
+
-
-
{{ warn.alias }}
-
{{ warn.alias }}
-
- {{ warn.display_value | numberOrText }}
-
+
+
{{ crit.alias }}
+
{{ crit.alias }}
+
- {{ crit.display_value | numberOrText }}
+
+
+
+
{{ warn.alias }}
+
{{ warn.alias }}
+
- {{ warn.display_value | numberOrText }}
+
-
+
diff --git a/dist/status_ctrl.js b/dist/status_ctrl.js
index 2aa5505a..1e4c0d81 100644
--- a/dist/status_ctrl.js
+++ b/dist/status_ctrl.js
@@ -80,6 +80,8 @@ System.register(["app/plugins/sdk", "app/plugins/panel/graph/legend", "app/plugi
_this.aggregations = ['Last', 'First', 'Max', 'Min', 'Sum', 'Avg'];
_this.displayTypes = ['Regular', 'Annotation'];
+ _this.panel.flipTime = _this.panel.flipTime || 5;
+
/** Bind events to functions **/
_this.events.on('render', _this.onRender.bind(_this));
_this.events.on('refresh', _this.postRefresh.bind(_this));
@@ -146,7 +148,8 @@ System.register(["app/plugins/sdk", "app/plugins/panel/graph/legend", "app/plugi
}, {
key: "setElementHeight",
value: function setElementHeight() {
- this.$panelContainer.find('.status-panel').css('height', this.$panelContoller.height + 'px');
+ this.$panelContainer.find('.status-panel').css('min-height', this.$panelContoller.height + 'px');
+ this.minHeight = this.$panelContoller.height - 10;
}
}, {
key: "setTextMaxWidth",
@@ -172,6 +175,12 @@ System.register(["app/plugins/sdk", "app/plugins/panel/graph/legend", "app/plugi
this.panel.displayName = "";
}
+ if (this.panel.flipCard) {
+ this.$panelContainer.addClass("effect-hover");
+ } else {
+ this.$panelContainer.removeClass("effect-hover");
+ }
+
var targets = this.panel.targets;
this.crit = [];
@@ -242,6 +251,7 @@ System.register(["app/plugins/sdk", "app/plugins/panel/graph/legend", "app/plugi
this.display = [];
}
+ this.autoFlip();
this.handleCssDisplay();
this.parseUri();
}
@@ -368,10 +378,28 @@ System.register(["app/plugins/sdk", "app/plugins/panel/graph/legend", "app/plugi
this.crit = [];
this.warn = [];
}
+ }, {
+ key: "$onDestroy",
+ value: function $onDestroy() {
+ if (this.timeoutId) clearInterval(this.timeoutId);
+ }
+ }, {
+ key: "autoFlip",
+ value: function autoFlip() {
+ var _this6 = this;
+
+ if (this.timeoutId) clearInterval(this.timeoutId);
+ if (this.panel.flipCard && (this.crit.length > 0 || this.warn.length > 0 || this.disabled.length > 0)) {
+ this.timeoutId = setInterval(function () {
+ _this6.$panelContainer.toggleClass("flipped");
+ }, this.panel.flipTime * 1000);
+ }
+ }
}, {
key: "link",
value: function link(scope, elem, attrs, ctrl) {
this.$panelContainer = elem.find('.panel-container');
+ this.$panelContainer.addClass("st-card");
this.$panelContoller = ctrl;
}
}], [{
diff --git a/dist/status_ctrl.js.map b/dist/status_ctrl.js.map
index 030b47a1..925f718d 100644
--- a/dist/status_ctrl.js.map
+++ b/dist/status_ctrl.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../src/status_ctrl.js"],"names":["MetricsPanelCtrl","_","TimeSeries","coreModule","StatusPluginCtrl","$scope","$injector","$log","$filter","annotationsSrv","filter","valueHandlers","aggregations","displayTypes","events","on","onRender","bind","postRefresh","onDataError","onDataReceived","onInitEditMode","addFilters","numberOrTextFilter","input","angular","isNumber","$stateful","panel","fixedSpan","span","measurements","targets","duplicates","measurement","hide","each","m","res","alias","target","length","addEditorTab","$panelContainer","find","css","$panelContoller","height","tail","panelWidth","innerWidth","isNaN","parseInt","slice","maxWidth","setElementHeight","setTextMaxWidth","upgradeOldVersion","clusterName","displayName","replace","RegExp","namePrefix","crit","warn","disabled","display","annotation","series","s","url","displayType","value","aggregation","max","datapoints","point","stats","min","total","avg","display_value","valueHandler","handleThresholdStatus","handleDisabledStatus","handleTextOnly","handleCssDisplay","parseUri","thresholds","parseThresholds","inverted","isCritical","isWarning","isCheckRanges","warnIsNumber","critIsNumber","push","disabledValue","removeClass","addClass","undefined","isGrayOnNoData","links","uri","dashUri","params","dataList","map","seriesHandler","render","scope","elem","attrs","ctrl","metricOptions","seriesData","flotpairs","getFlotPairs","templateUrl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAQA,mB,kBAAAA,gB;;AAGDC,I;;AACAC,a;;AACAC,a;;;;;;;;;;;;;;;;;;;;;+BAIMC,gB;;;AACZ;AACA,8BAAYC,MAAZ,EAAoBC,SAApB,EAA+BC,IAA/B,EAAqCC,OAArC,EAA8CC,cAA9C,EAA8D;AAAA;;AAAA,qIACvDJ,MADuD,EAC/CC,SAD+C;;AAG7D;AACA,WAAKI,MAAL,GAAcF,OAAd;;AAEA,WAAKG,aAAL,GAAqB,CAAC,WAAD,EAAc,kBAAd,EAAkC,WAAlC,CAArB;AACA,WAAKC,YAAL,GAAoB,CAAC,MAAD,EAAS,OAAT,EAAkB,KAAlB,EAAyB,KAAzB,EAAgC,KAAhC,EAAuC,KAAvC,CAApB;AACA,WAAKC,YAAL,GAAoB,CAAC,SAAD,EAAY,YAAZ,CAApB;;AAEA;AACA,WAAKC,MAAL,CAAYC,EAAZ,CAAe,QAAf,EAAyB,MAAKC,QAAL,CAAcC,IAAd,OAAzB;AACA,WAAKH,MAAL,CAAYC,EAAZ,CAAe,SAAf,EAA0B,MAAKG,WAAL,CAAiBD,IAAjB,OAA1B;AACA,WAAKH,MAAL,CAAYC,EAAZ,CAAe,YAAf,EAA6B,MAAKI,WAAL,CAAiBF,IAAjB,OAA7B;AACA,WAAKH,MAAL,CAAYC,EAAZ,CAAe,eAAf,EAAgC,MAAKK,cAAL,CAAoBH,IAApB,OAAhC;AACA,WAAKH,MAAL,CAAYC,EAAZ,CAAe,oBAAf,EAAqC,MAAKK,cAAL,CAAoBH,IAApB,OAArC;AACA,WAAKH,MAAL,CAAYC,EAAZ,CAAe,gBAAf,EAAiC,MAAKM,cAAL,CAAoBJ,IAApB,OAAjC;;AAEA,WAAKK,UAAL;AAlB6D;AAmB7D;;;;kCAEY;AAAA;;AACZnB,iBAAWO,MAAX,CAAkB,cAAlB,EAAkC,YAAM;AACvC,WAAIa,qBAAqB,SAArBA,kBAAqB,CAACC,KAAD,EAAW;AACnC,YAAGC,QAAQC,QAAR,CAAiBF,KAAjB,CAAH,EAA4B;AAC3B,gBAAO,OAAKd,MAAL,CAAY,QAAZ,EAAsBc,KAAtB,CAAP;AACA,SAFD,MAEO;AACN,gBAAOA,KAAP;AACA;AACD,QAND;;AAQAD,0BAAmBI,SAAnB,GAA+B,IAA/B;AACA,cAAOJ,kBAAP;AACA,OAXD;AAYA;;;mCAEa;AAAA;;AACb,UAAI,KAAKK,KAAL,CAAWC,SAAf,EAA0B;AACzB,YAAKD,KAAL,CAAWE,IAAX,GAAkB,KAAKF,KAAL,CAAWC,SAA7B;AACA;;AAED,WAAKE,YAAL,GAAoB,KAAKH,KAAL,CAAWI,OAA/B;;AAEA;AACA,WAAKC,UAAL,GAAkB,KAAlB;;AAEA,WAAKF,YAAL,GAAoB9B,EAAES,MAAF,CAAS,KAAKqB,YAAd,EAA4B,UAACG,WAAD,EAAiB;AAChE,cAAO,CAACA,YAAYC,IAApB;AACA,OAFmB,CAApB;;AAIAlC,QAAEmC,IAAF,CAAO,KAAKL,YAAZ,EAA0B,UAACM,CAAD,EAAO;AAChC,WAAIC,MAAMrC,EAAES,MAAF,CAAS,OAAKqB,YAAd,EAA4B,UAACG,WAAD,EAAiB;AACtD,eAAO,CAACG,EAAEE,KAAF,IAAWL,YAAYK,KAAvB,IAAiCF,EAAEG,MAAF,IAAYN,YAAYM,MAAxB,IAAkCH,EAAEG,MAAtE,KAAkF,CAACH,EAAEF,IAA5F;AACA,QAFS,CAAV;;AAIA,WAAIG,IAAIG,MAAJ,GAAa,CAAjB,EAAoB;AACnB,eAAKR,UAAL,GAAkB,IAAlB;AACA;AACD,OARD;AASA;;;sCAEgB;AAChB,WAAKS,YAAL,CAAkB,SAAlB,EAA6B,gDAA7B,EAA+E,CAA/E;AACA;;;wCAEkB;AAClB,WAAKC,eAAL,CAAqBC,IAArB,CAA0B,eAA1B,EAA2CC,GAA3C,CAA+C,QAA/C,EAAyD,KAAKC,eAAL,CAAqBC,MAArB,GAA8B,IAAvF;AACA;;;uCAEiB;AACjB,UAAIC,OAAO,IAAX;AACA,UAAIC,aAAa,KAAKN,eAAL,CAAqBO,UAArB,EAAjB;AACA,UAAIC,MAAMF,UAAN,CAAJ,EACCA,aAAaG,SAASH,WAAWI,KAAX,CAAiB,CAAjB,EAAoB,CAAC,CAArB,CAAT,EAAkC,EAAlC,IAAwC,EAArD;AACDJ,mBAAaA,aAAa,EAA1B;AACA,WAAKK,QAAL,GAAgBL,UAAhB;AACA;;;gCAEU;AAAA;;AACV,WAAKM,gBAAL;AACA,WAAKC,eAAL;AACA,WAAKC,iBAAL;;AAEA,UAAI,KAAK7B,KAAL,CAAW8B,WAAf,EAA4B;AAC3B,YAAK9B,KAAL,CAAW+B,WAAX,GACC,KAAKjD,MAAL,CAAY,yBAAZ,EAAuC,KAAKkB,KAAL,CAAW8B,WAAlD,EAA+D,KAAKrD,MAApE,EACEuD,OADF,CACU,IAAIC,MAAJ,CAAW,KAAKjC,KAAL,CAAWkC,UAAtB,EAAkC,GAAlC,CADV,EACkD,EADlD,CADD;AAGA,OAJD,MAIO;AACN,YAAKlC,KAAL,CAAW+B,WAAX,GAAyB,EAAzB;AACA;;AAED,UAAI3B,UAAU,KAAKJ,KAAL,CAAWI,OAAzB;;AAEA,WAAK+B,IAAL,GAAY,EAAZ;AACA,WAAKC,IAAL,GAAY,EAAZ;AACA,WAAKC,QAAL,GAAgB,EAAhB;AACA,WAAKC,OAAL,GAAe,EAAf;AACA,WAAKC,UAAL,GAAkB,EAAlB;;AAEAlE,QAAEmC,IAAF,CAAO,KAAKgC,MAAZ,EAAoB,UAACC,CAAD,EAAO;AAC1B,WAAI7B,SAASvC,EAAE2C,IAAF,CAAOZ,OAAP,EAAgB,UAACQ,MAAD,EAAY;AACxC,eAAOA,OAAOD,KAAP,IAAgB8B,EAAE9B,KAAlB,IAA2BC,OAAOA,MAAP,IAAiB6B,EAAE9B,KAArD;AACA,QAFY,CAAb;;AAIA,WAAI,CAACC,MAAL,EAAa;AACZ;AACA;;AAED6B,SAAE9B,KAAF,GAAUC,OAAOD,KAAjB;AACA8B,SAAEC,GAAF,GAAQ9B,OAAO8B,GAAf;AACAD,SAAEH,OAAF,GAAY,IAAZ;AACAG,SAAEE,WAAF,GAAgB/B,OAAO+B,WAAvB;;AAEA,WAAIC,cAAJ;AACA,eAAQhC,OAAOiC,WAAf;AACC,aAAK,KAAL;AACCD,iBAAQvE,EAAEyE,GAAF,CAAML,EAAEM,UAAR,EAAoB,UAACC,KAAD,EAAW;AAAE,iBAAOA,MAAM,CAAN,CAAP;AAAkB,UAAnD,EAAqD,CAArD,CAAR;AACAJ,iBAAQH,EAAEQ,KAAF,CAAQH,GAAhB;AACA;AACD,aAAK,KAAL;AACCF,iBAAQvE,EAAE6E,GAAF,CAAMT,EAAEM,UAAR,EAAoB,UAACC,KAAD,EAAW;AAAE,iBAAOA,MAAM,CAAN,CAAP;AAAkB,UAAnD,EAAqD,CAArD,CAAR;AACAJ,iBAAQH,EAAEQ,KAAF,CAAQC,GAAhB;AACA;AACD,aAAK,KAAL;AACCN,iBAAQ,CAAR;AACAvE,WAAEmC,IAAF,CAAOiC,EAAEM,UAAT,EAAqB,UAACC,KAAD,EAAW;AAAEJ,mBAASI,MAAM,CAAN,CAAT;AAAmB,UAArD;AACAJ,iBAAQH,EAAEQ,KAAF,CAAQE,KAAhB;AACA;AACD,aAAK,KAAL;AACCP,iBAAQH,EAAEQ,KAAF,CAAQG,GAAhB;AACA;AACD,aAAK,OAAL;AACCR,iBAAQH,EAAEM,UAAF,CAAa,CAAb,EAAgB,CAAhB,CAAR;AACA;AACD;AACCH,iBAAQH,EAAEM,UAAF,CAAaN,EAAEM,UAAF,CAAalC,MAAb,GAAsB,CAAnC,EAAsC,CAAtC,CAAR;AArBF;;AAwBA4B,SAAEY,aAAF,GAAkBT,KAAlB;;AAEA,WAAIhC,OAAO0C,YAAP,IAAuB,WAA3B,EAAwC;AACvC,eAAKC,qBAAL,CAA2Bd,CAA3B,EAA8B7B,MAA9B;AACA,QAFD,MAGK,IAAIA,OAAO0C,YAAP,IAAuB,kBAA3B,EAA+C;AACnD,eAAKE,oBAAL,CAA0Bf,CAA1B,EAA4B7B,MAA5B;AACA,QAFI,MAGA,IAAIA,OAAO0C,YAAP,IAAuB,WAA3B,EAAwC;AAC5C,eAAKG,cAAL,CAAoBhB,CAApB,EAAuB7B,MAAvB;AACA;AACD,OAlDD;;AAoDA,UAAG,KAAKyB,QAAL,CAAcxB,MAAd,GAAuB,CAA1B,EAA6B;AAC5B,YAAKsB,IAAL,GAAY,EAAZ;AACA,YAAKC,IAAL,GAAY,EAAZ;AACA,YAAKE,OAAL,GAAe,EAAf;AACA;;AAED,WAAKoB,gBAAL;AACA,WAAKC,QAAL;AACA;;;yCAEmB;AAAA;;AACnB,UAAIvD,UAAU,KAAKJ,KAAL,CAAWI,OAAzB;;AAEA;AACA/B,QAAEmC,IAAF,CAAOJ,OAAP,EAAgB,UAACQ,MAAD,EAAY;AAC3B,WAAGA,OAAO0C,YAAP,IAAuB,IAA1B,EAAgC;AAC/B1C,eAAO0C,YAAP,GAAsB1C,OAAO+B,WAA7B;AACA,YAAG/B,OAAO0C,YAAP,IAAuB,YAA1B,EAAwC;AACvC1C,gBAAO0C,YAAP,GAAsB,WAAtB;AACA;AACD1C,eAAO+B,WAAP,GAAqB,OAAK1D,YAAL,CAAkB,CAAlB,CAArB;AACA;AACD,OARD;AASA;;;2CAEqBuD,M,EAAQ5B,M,EAAQ;AACrC4B,aAAOoB,UAAP,GAAoBpF,iBAAiBqF,eAAjB,CAAiCjD,MAAjC,CAApB;AACA4B,aAAOsB,QAAP,GAAkBtB,OAAOoB,UAAP,CAAkBzB,IAAlB,GAAyBK,OAAOoB,UAAP,CAAkBxB,IAA7D;AACAI,aAAOF,OAAP,GAAiB1B,OAAO0B,OAAxB;;AAEA,UAAIyB,aAAa,KAAjB;AACA,UAAIC,YAAY,KAAhB;AACA,UAAIC,gBAAgBzB,OAAOoB,UAAP,CAAkBM,YAAlB,IAAkC1B,OAAOoB,UAAP,CAAkBO,YAAxE;AACA,UAAIF,aAAJ,EAAmB;AAClB,WAAI,CAACzB,OAAOsB,QAAZ,EAAsB;AACrB,YAAItB,OAAOa,aAAP,IAAwBb,OAAOoB,UAAP,CAAkBzB,IAA9C,EAAoD;AACnD4B,sBAAa,IAAb;AACA,SAFD,MAEO,IAAIvB,OAAOa,aAAP,IAAwBb,OAAOoB,UAAP,CAAkBxB,IAA9C,EAAoD;AAC1D4B,qBAAY,IAAZ;AACA;AACD,QAND,MAMO;AACN,YAAIxB,OAAOa,aAAP,IAAwBb,OAAOoB,UAAP,CAAkBzB,IAA9C,EAAoD;AACnD4B,sBAAa,IAAb;AACA,SAFD,MAEO,IAAIvB,OAAOa,aAAP,IAAwBb,OAAOoB,UAAP,CAAkBxB,IAA9C,EAAoD;AAC1D4B,qBAAY,IAAZ;AACA;AACD;AACD,OAdD,MAcO;AACN,WAAIxB,OAAOa,aAAP,IAAwBb,OAAOoB,UAAP,CAAkBzB,IAA9C,EAAoD;AACnD4B,qBAAa,IAAb;AACA,QAFD,MAEO,IAAIvB,OAAOa,aAAP,IAAwBb,OAAOoB,UAAP,CAAkBxB,IAA9C,EAAoD;AAC1D4B,oBAAY,IAAZ;AACA;AACD;;AAED,UAAGD,UAAH,EAAe;AACd,YAAK5B,IAAL,CAAUiC,IAAV,CAAe5B,MAAf;AACAA,cAAOG,WAAP,GAAqB,KAAK1D,YAAL,CAAkB,CAAlB,CAArB;AACA,OAHD,MAGO,IAAG+E,SAAH,EAAc;AACpB,YAAK5B,IAAL,CAAUgC,IAAV,CAAe5B,MAAf;AACAA,cAAOG,WAAP,GAAqB,KAAK1D,YAAL,CAAkB,CAAlB,CAArB;AACA,OAHM,MAGA,IAAIuD,OAAOF,OAAX,EAAoB;AAC1B,WAAGE,OAAOG,WAAP,IAAsB,YAAzB,EAAuC;AACtC,aAAKJ,UAAL,CAAgB6B,IAAhB,CAAqB5B,MAArB;AACA,QAFD,MAEO;AACN,aAAKF,OAAL,CAAa8B,IAAb,CAAkB5B,MAAlB;AACA;AACD;AACD;;;0CAEoBA,M,EAAQ5B,M,EAAQ;AACpC4B,aAAOG,WAAP,GAAqB,KAAK1D,YAAL,CAAkB,CAAlB,CAArB;AACAuD,aAAO6B,aAAP,GAAuBzD,OAAOyD,aAA9B;;AAEA,UAAI7B,OAAOa,aAAP,IAAwBb,OAAO6B,aAAnC,EAAkD;AACjD,YAAKhC,QAAL,CAAc+B,IAAd,CAAmB5B,MAAnB;AACA;AACD;;;oCAEcA,M,EAAQ5B,M,EAAQ;AAC9B,UAAG4B,OAAOG,WAAP,IAAsB,YAAzB,EAAuC;AACtC,YAAKJ,UAAL,CAAgB6B,IAAhB,CAAqB5B,MAArB;AACA,OAFD,MAEO;AACN,YAAKF,OAAL,CAAa8B,IAAb,CAAkB5B,MAAlB;AACA;AACD;;;wCAEkB;AAClB,WAAKzB,eAAL,CAAqBuD,WAArB,CAAiC,8DAAjC;;AAEA,UAAG,KAAKjE,UAAR,EAAoB;AACnB,YAAKU,eAAL,CAAqBwD,QAArB,CAA8B,aAA9B;AACA,OAFD,MAEO,IAAI,KAAKlC,QAAL,CAAcxB,MAAd,GAAuB,CAA3B,EAA8B;AACpC,YAAKE,eAAL,CAAqBwD,QAArB,CAA8B,gBAA9B;AACA,OAFM,MAEA,IAAI,KAAKpC,IAAL,CAAUtB,MAAV,GAAmB,CAAvB,EAA0B;AAChC,YAAKE,eAAL,CAAqBwD,QAArB,CAA8B,aAA9B;AACA,OAFM,MAEA,IAAI,KAAKnC,IAAL,CAAUvB,MAAV,GAAmB,CAAvB,EAA0B;AAChC,YAAKE,eAAL,CAAqBwD,QAArB,CAA8B,YAA9B;AACA,OAFM,MAEA,IAAG,CAAC,KAAK/B,MAAL,IAAegC,SAAf,IAA4B,KAAKhC,MAAL,CAAY3B,MAAZ,IAAsB,CAAnD,KAAyD,KAAKb,KAAL,CAAWyE,cAAvE,EAAuF;AAC7F,YAAK1D,eAAL,CAAqBwD,QAArB,CAA8B,eAA9B;AACA,OAFM,MAEA;AACN,YAAKxD,eAAL,CAAqBwD,QAArB,CAA8B,UAA9B;AACA;AACD;;;gCAEU;AACV,UAAI,KAAKvE,KAAL,CAAW0E,KAAX,IAAoB,KAAK1E,KAAL,CAAW0E,KAAX,CAAiB7D,MAAjB,GAA0B,CAAlD,EAAqD;AACpD,YAAK8D,GAAL,GAAW,KAAK3E,KAAL,CAAW0E,KAAX,CAAiB,CAAjB,EAAoBE,OAApB,GAA8B,GAA9B,GAAoC,KAAK5E,KAAL,CAAW0E,KAAX,CAAiB,CAAjB,EAAoBG,MAAnE;AACA,OAFD,MAEO;AACN,YAAKF,GAAL,GAAWH,SAAX;AACA;AACD;;;oCAacM,Q,EAAU;AACxB,WAAKtC,MAAL,GAAcsC,SAASC,GAAT,CAAavG,iBAAiBwG,aAAjB,CAA+B3F,IAA/B,CAAoC,IAApC,CAAb,CAAd;AACA,WAAK4F,MAAL;AACA;;;mCAEa;AACb,WAAK9C,IAAL,GAAY,EAAZ;AACA,WAAKC,IAAL,GAAY,EAAZ;AACA;;;0BAaI8C,K,EAAOC,I,EAAMC,K,EAAOC,I,EAAM;AAC9B,WAAKtE,eAAL,GAAuBoE,KAAKnE,IAAL,CAAU,kBAAV,CAAvB;AACA,WAAKE,eAAL,GAAuBmE,IAAvB;AACA;;;qCAnCsBC,a,EAAe;AACrC,UAAI5E,MAAM,EAAV;;AAEAA,UAAI0B,IAAJ,GAAWkD,cAAclD,IAAzB;AACA1B,UAAIwD,YAAJ,GAAmBrE,QAAQC,QAAR,CAAiBY,IAAI0B,IAArB,CAAnB;AACA1B,UAAIyB,IAAJ,GAAWmD,cAAcnD,IAAzB;AACAzB,UAAIyD,YAAJ,GAAmBtE,QAAQC,QAAR,CAAiBY,IAAIyB,IAArB,CAAnB;;AAEA,aAAOzB,GAAP;AACA;;;mCAYoB6E,U,EAAY;AAChC,UAAI/C,SAAS,IAAIlE,UAAJ,CAAe;AAC3ByE,mBAAYwC,WAAWxC,UADI;AAE3BpC,cAAO4E,WAAW3E;AAFS,OAAf,CAAb;;AAKA4B,aAAOgD,SAAP,GAAmBhD,OAAOiD,YAAP,CAAoB,WAApB,CAAnB;;AAEA,aAAOjD,MAAP;AACA;;;;KAxSoCpE,gB;;;;AAgTtCI,oBAAiBkH,WAAjB,GAA+B,aAA/B","file":"status_ctrl.js","sourcesContent":["import {MetricsPanelCtrl} from \"app/plugins/sdk\";\nimport \"app/plugins/panel/graph/legend\";\nimport \"app/plugins/panel/graph/series_overrides_ctrl\";\nimport _ from \"lodash\";\nimport TimeSeries from \"app/core/time_series2\";\nimport coreModule from \"app/core/core_module\"\n\nimport './css/status_panel.css!';\n\nexport class StatusPluginCtrl extends MetricsPanelCtrl {\n\t/** @ngInject */\n\tconstructor($scope, $injector, $log, $filter, annotationsSrv) {\n\t\tsuper($scope, $injector);\n\n\t\t//this.log = $log.debug;\n\t\tthis.filter = $filter;\n\n\t\tthis.valueHandlers = ['Threshold', 'Disable Criteria', 'Text Only'];\n\t\tthis.aggregations = ['Last', 'First', 'Max', 'Min', 'Sum', 'Avg'];\n\t\tthis.displayTypes = ['Regular', 'Annotation'];\n\n\t\t/** Bind events to functions **/\n\t\tthis.events.on('render', this.onRender.bind(this));\n\t\tthis.events.on('refresh', this.postRefresh.bind(this));\n\t\tthis.events.on('data-error', this.onDataError.bind(this));\n\t\tthis.events.on('data-received', this.onDataReceived.bind(this));\n\t\tthis.events.on('data-snapshot-load', this.onDataReceived.bind(this));\n\t\tthis.events.on('init-edit-mode', this.onInitEditMode.bind(this));\n\n\t\tthis.addFilters()\n\t}\n\n\taddFilters() {\n\t\tcoreModule.filter('numberOrText', () => {\n\t\t\tlet numberOrTextFilter = (input) => {\n\t\t\t\tif(angular.isNumber(input)) {\n\t\t\t\t\treturn this.filter('number')(input);\n\t\t\t\t} else {\n\t\t\t\t\treturn input;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tnumberOrTextFilter.$stateful = true;\n\t\t\treturn numberOrTextFilter;\n\t\t});\n\t}\n\n\tpostRefresh() {\n\t\tif (this.panel.fixedSpan) {\n\t\t\tthis.panel.span = this.panel.fixedSpan;\n\t\t}\n\n\t\tthis.measurements = this.panel.targets;\n\n\t\t/** Duplicate alias validation **/\n\t\tthis.duplicates = false;\n\n\t\tthis.measurements = _.filter(this.measurements, (measurement) => {\n\t\t\treturn !measurement.hide;\n\t\t});\n\n\t\t_.each(this.measurements, (m) => {\n\t\t\tlet res = _.filter(this.measurements, (measurement) => {\n\t\t\t\treturn (m.alias == measurement.alias || (m.target == measurement.target && m.target)) && !m.hide;\n\t\t\t});\n\n\t\t\tif (res.length > 1) {\n\t\t\t\tthis.duplicates = true;\n\t\t\t}\n\t\t});\n\t}\n\n\tonInitEditMode() {\n\t\tthis.addEditorTab('Options', 'public/plugins/vonage-status-panel/editor.html', 2);\n\t}\n\n\tsetElementHeight() {\n\t\tthis.$panelContainer.find('.status-panel').css('height', this.$panelContoller.height + 'px');\n\t}\n\n\tsetTextMaxWidth() {\n\t\tlet tail = ' …';\n\t\tlet panelWidth = this.$panelContainer.innerWidth();\n\t\tif (isNaN(panelWidth))\n\t\t\tpanelWidth = parseInt(panelWidth.slice(0, -2), 10) / 12;\n\t\tpanelWidth = panelWidth - 20;\n\t\tthis.maxWidth = panelWidth;\n\t}\n\n\tonRender() {\n\t\tthis.setElementHeight();\n\t\tthis.setTextMaxWidth();\n\t\tthis.upgradeOldVersion();\n\n\t\tif (this.panel.clusterName) {\n\t\t\tthis.panel.displayName =\n\t\t\t\tthis.filter('interpolateTemplateVars')(this.panel.clusterName, this.$scope)\n\t\t\t\t\t.replace(new RegExp(this.panel.namePrefix, 'i'), '');\n\t\t} else {\n\t\t\tthis.panel.displayName = \"\";\n\t\t}\n\n\t\tlet targets = this.panel.targets;\n\n\t\tthis.crit = [];\n\t\tthis.warn = [];\n\t\tthis.disabled = [];\n\t\tthis.display = [];\n\t\tthis.annotation = [];\n\n\t\t_.each(this.series, (s) => {\n\t\t\tlet target = _.find(targets, (target) => {\n\t\t\t\treturn target.alias == s.alias || target.target == s.alias;\n\t\t\t});\n\n\t\t\tif (!target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ts.alias = target.alias;\n\t\t\ts.url = target.url;\n\t\t\ts.display = true;\n\t\t\ts.displayType = target.displayType;\n\n\t\t\tlet value;\n\t\t\tswitch (target.aggregation) {\n\t\t\t\tcase 'Max':\n\t\t\t\t\tvalue = _.max(s.datapoints, (point) => { return point[0]; })[0];\n\t\t\t\t\tvalue = s.stats.max;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Min':\n\t\t\t\t\tvalue = _.min(s.datapoints, (point) => { return point[0]; })[0];\n\t\t\t\t\tvalue = s.stats.min;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Sum':\n\t\t\t\t\tvalue = 0;\n\t\t\t\t\t_.each(s.datapoints, (point) => { value += point[0] });\n\t\t\t\t\tvalue = s.stats.total;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Avg':\n\t\t\t\t\tvalue = s.stats.avg;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'First':\n\t\t\t\t\tvalue = s.datapoints[0][0];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = s.datapoints[s.datapoints.length - 1][0];\n\t\t\t}\n\n\t\t\ts.display_value = value;\n\n\t\t\tif (target.valueHandler == \"Threshold\") {\n\t\t\t\tthis.handleThresholdStatus(s, target);\n\t\t\t}\n\t\t\telse if (target.valueHandler == \"Disable Criteria\") {\n\t\t\t\tthis.handleDisabledStatus(s,target);\n\t\t\t}\n\t\t\telse if (target.valueHandler == \"Text Only\") {\n\t\t\t\tthis.handleTextOnly(s, target);\n\t\t\t}\n\t\t});\n\n\t\tif(this.disabled.length > 0) {\n\t\t\tthis.crit = [];\n\t\t\tthis.warn = [];\n\t\t\tthis.display = [];\n\t\t}\n\n\t\tthis.handleCssDisplay();\n\t\tthis.parseUri();\n\t}\n\n\tupgradeOldVersion() {\n\t\tlet targets = this.panel.targets;\n\n\t\t//Handle legacy code\n\t\t_.each(targets, (target) => {\n\t\t\tif(target.valueHandler == null) {\n\t\t\t\ttarget.valueHandler = target.displayType;\n\t\t\t\tif(target.valueHandler == \"Annotation\") {\n\t\t\t\t\ttarget.valueHandler = \"Text Only\"\n\t\t\t\t}\n\t\t\t\ttarget.displayType = this.displayTypes[0];\n\t\t\t}\n\t\t});\n\t}\n\n\thandleThresholdStatus(series, target) {\n\t\tseries.thresholds = StatusPluginCtrl.parseThresholds(target);\n\t\tseries.inverted = series.thresholds.crit < series.thresholds.warn;\n\t\tseries.display = target.display;\n\n\t\tlet isCritical = false;\n\t\tlet isWarning = false;\n\t\tlet isCheckRanges = series.thresholds.warnIsNumber && series.thresholds.critIsNumber;\n\t\tif (isCheckRanges) {\n\t\t\tif (!series.inverted) {\n\t\t\t\tif (series.display_value >= series.thresholds.crit) {\n\t\t\t\t\tisCritical = true\n\t\t\t\t} else if (series.display_value >= series.thresholds.warn) {\n\t\t\t\t\tisWarning = true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (series.display_value <= series.thresholds.crit) {\n\t\t\t\t\tisCritical = true\n\t\t\t\t} else if (series.display_value <= series.thresholds.warn) {\n\t\t\t\t\tisWarning = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (series.display_value == series.thresholds.crit) {\n\t\t\t\tisCritical = true\n\t\t\t} else if (series.display_value == series.thresholds.warn) {\n\t\t\t\tisWarning = true\n\t\t\t}\n\t\t}\n\n\t\tif(isCritical) {\n\t\t\tthis.crit.push(series);\n\t\t\tseries.displayType = this.displayTypes[0]\n\t\t} else if(isWarning) {\n\t\t\tthis.warn.push(series);\n\t\t\tseries.displayType = this.displayTypes[0]\n\t\t} else if (series.display) {\n\t\t\tif(series.displayType == \"Annotation\") {\n\t\t\t\tthis.annotation.push(series);\n\t\t\t} else {\n\t\t\t\tthis.display.push(series);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleDisabledStatus(series, target) {\n\t\tseries.displayType = this.displayTypes[0];\n\t\tseries.disabledValue = target.disabledValue;\n\n\t\tif (series.display_value == series.disabledValue) {\n\t\t\tthis.disabled.push(series);\n\t\t}\n\t}\n\n\thandleTextOnly(series, target) {\n\t\tif(series.displayType == \"Annotation\") {\n\t\t\tthis.annotation.push(series);\n\t\t} else {\n\t\t\tthis.display.push(series);\n\t\t}\n\t}\n\n\thandleCssDisplay() {\n\t\tthis.$panelContainer.removeClass('error-state warn-state disabled-state ok-state no-data-state');\n\n\t\tif(this.duplicates) {\n\t\t\tthis.$panelContainer.addClass('error-state');\n\t\t} else if (this.disabled.length > 0) {\n\t\t\tthis.$panelContainer.addClass('disabled-state');\n\t\t} else if (this.crit.length > 0) {\n\t\t\tthis.$panelContainer.addClass('error-state');\n\t\t} else if (this.warn.length > 0) {\n\t\t\tthis.$panelContainer.addClass('warn-state');\n\t\t} else if((this.series == undefined || this.series.length == 0) && this.panel.isGrayOnNoData) {\n\t\t\tthis.$panelContainer.addClass('no-data-state');\n\t\t} else {\n\t\t\tthis.$panelContainer.addClass('ok-state');\n\t\t}\n\t}\n\n\tparseUri() {\n\t\tif (this.panel.links && this.panel.links.length > 0) {\n\t\t\tthis.uri = this.panel.links[0].dashUri + \"?\" + this.panel.links[0].params;\n\t\t} else {\n\t\t\tthis.uri = undefined;\n\t\t}\n\t}\n\n\tstatic parseThresholds(metricOptions) {\n\t\tlet res = {};\n\n\t\tres.warn = metricOptions.warn;\n\t\tres.warnIsNumber = angular.isNumber(res.warn);\n\t\tres.crit = metricOptions.crit;\n\t\tres.critIsNumber = angular.isNumber(res.crit);\n\n\t\treturn res;\n\t}\n\n\tonDataReceived(dataList) {\n\t\tthis.series = dataList.map(StatusPluginCtrl.seriesHandler.bind(this));\n\t\tthis.render();\n\t}\n\n\tonDataError() {\n\t\tthis.crit = [];\n\t\tthis.warn = [];\n\t}\n\n\tstatic seriesHandler(seriesData) {\n\t\tvar series = new TimeSeries({\n\t\t\tdatapoints: seriesData.datapoints,\n\t\t\talias: seriesData.target\n\t\t});\n\n\t\tseries.flotpairs = series.getFlotPairs(\"connected\");\n\n\t\treturn series;\n\t}\n\n\tlink(scope, elem, attrs, ctrl) {\n\t\tthis.$panelContainer = elem.find('.panel-container');\n\t\tthis.$panelContoller = ctrl;\n\t}\n}\n\nStatusPluginCtrl.templateUrl = 'module.html';\n"]}
\ No newline at end of file
+{"version":3,"sources":["../src/status_ctrl.js"],"names":["MetricsPanelCtrl","_","TimeSeries","coreModule","StatusPluginCtrl","$scope","$injector","$log","$filter","annotationsSrv","filter","valueHandlers","aggregations","displayTypes","panel","flipTime","events","on","onRender","bind","postRefresh","onDataError","onDataReceived","onInitEditMode","addFilters","numberOrTextFilter","input","angular","isNumber","$stateful","fixedSpan","span","measurements","targets","duplicates","measurement","hide","each","m","res","alias","target","length","addEditorTab","$panelContainer","find","css","$panelContoller","height","minHeight","tail","panelWidth","innerWidth","isNaN","parseInt","slice","maxWidth","setElementHeight","setTextMaxWidth","upgradeOldVersion","clusterName","displayName","replace","RegExp","namePrefix","flipCard","addClass","removeClass","crit","warn","disabled","display","annotation","series","s","url","displayType","value","aggregation","max","datapoints","point","stats","min","total","avg","display_value","valueHandler","handleThresholdStatus","handleDisabledStatus","handleTextOnly","autoFlip","handleCssDisplay","parseUri","thresholds","parseThresholds","inverted","isCritical","isWarning","isCheckRanges","warnIsNumber","critIsNumber","push","disabledValue","undefined","isGrayOnNoData","links","uri","dashUri","params","dataList","map","seriesHandler","render","timeoutId","clearInterval","setInterval","toggleClass","scope","elem","attrs","ctrl","metricOptions","seriesData","flotpairs","getFlotPairs","templateUrl"],"mappings":"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","file":"status_ctrl.js","sourcesContent":["import {MetricsPanelCtrl} from \"app/plugins/sdk\";\nimport \"app/plugins/panel/graph/legend\";\nimport \"app/plugins/panel/graph/series_overrides_ctrl\";\nimport _ from \"lodash\";\nimport TimeSeries from \"app/core/time_series2\";\nimport coreModule from \"app/core/core_module\"\n\nimport './css/status_panel.css!';\n\nexport class StatusPluginCtrl extends MetricsPanelCtrl {\n\t/** @ngInject */\n\tconstructor($scope, $injector, $log, $filter, annotationsSrv) {\n\t\tsuper($scope, $injector);\n\n\t\t//this.log = $log.debug;\n\t\tthis.filter = $filter;\n\n\t\tthis.valueHandlers = ['Threshold', 'Disable Criteria', 'Text Only'];\n\t\tthis.aggregations = ['Last', 'First', 'Max', 'Min', 'Sum', 'Avg'];\n\t\tthis.displayTypes = ['Regular', 'Annotation'];\n\n\t\tthis.panel.flipTime = this.panel.flipTime || 5;\n\n\t\t/** Bind events to functions **/\n\t\tthis.events.on('render', this.onRender.bind(this));\n\t\tthis.events.on('refresh', this.postRefresh.bind(this));\n\t\tthis.events.on('data-error', this.onDataError.bind(this));\n\t\tthis.events.on('data-received', this.onDataReceived.bind(this));\n\t\tthis.events.on('data-snapshot-load', this.onDataReceived.bind(this));\n\t\tthis.events.on('init-edit-mode', this.onInitEditMode.bind(this));\n\n\t\tthis.addFilters()\n\t}\n\n\taddFilters() {\n\t\tcoreModule.filter('numberOrText', () => {\n\t\t\tlet numberOrTextFilter = (input) => {\n\t\t\t\tif(angular.isNumber(input)) {\n\t\t\t\t\treturn this.filter('number')(input);\n\t\t\t\t} else {\n\t\t\t\t\treturn input;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tnumberOrTextFilter.$stateful = true;\n\t\t\treturn numberOrTextFilter;\n\t\t});\n\t}\n\n\tpostRefresh() {\n\t\tif (this.panel.fixedSpan) {\n\t\t\tthis.panel.span = this.panel.fixedSpan;\n\t\t}\n\n\t\tthis.measurements = this.panel.targets;\n\n\t\t/** Duplicate alias validation **/\n\t\tthis.duplicates = false;\n\n\t\tthis.measurements = _.filter(this.measurements, (measurement) => {\n\t\t\treturn !measurement.hide;\n\t\t});\n\n\t\t_.each(this.measurements, (m) => {\n\t\t\tlet res = _.filter(this.measurements, (measurement) => {\n\t\t\t\treturn (m.alias == measurement.alias || (m.target == measurement.target && m.target)) && !m.hide;\n\t\t\t});\n\n\t\t\tif (res.length > 1) {\n\t\t\t\tthis.duplicates = true;\n\t\t\t}\n\t\t});\n\t}\n\n\tonInitEditMode() {\n\t\tthis.addEditorTab('Options', 'public/plugins/vonage-status-panel/editor.html', 2);\n\t}\n\n\tsetElementHeight() {\n\t\tthis.$panelContainer.find('.status-panel').css('min-height', this.$panelContoller.height + 'px');\n\t\tthis.minHeight = this.$panelContoller.height-10;\n\t}\n\n\tsetTextMaxWidth() {\n\t\tlet tail = ' …';\n\t\tlet panelWidth = this.$panelContainer.innerWidth();\n\t\tif (isNaN(panelWidth))\n\t\t\tpanelWidth = parseInt(panelWidth.slice(0, -2), 10) / 12;\n\t\tpanelWidth = panelWidth - 20;\n\t\tthis.maxWidth = panelWidth;\n\t}\n\n\tonRender() {\n\t\tthis.setElementHeight();\n\t\tthis.setTextMaxWidth();\n\t\tthis.upgradeOldVersion();\n\n\t\tif (this.panel.clusterName) {\n\t\t\tthis.panel.displayName =\n\t\t\t\tthis.filter('interpolateTemplateVars')(this.panel.clusterName, this.$scope)\n\t\t\t\t\t.replace(new RegExp(this.panel.namePrefix, 'i'), '');\n\t\t} else {\n\t\t\tthis.panel.displayName = \"\";\n\t\t}\n\n\t\tif(this.panel.flipCard){\n\t\t this.$panelContainer.addClass(\"effect-hover\");\n\t\t} else {\n\t\t this.$panelContainer.removeClass(\"effect-hover\");\n\t\t}\n\n\t\tlet targets = this.panel.targets;\n\n\t\tthis.crit = [];\n\t\tthis.warn = [];\n\t\tthis.disabled = [];\n\t\tthis.display = [];\n\t\tthis.annotation = [];\n\n\t\t_.each(this.series, (s) => {\n\t\t\tlet target = _.find(targets, (target) => {\n\t\t\t\treturn target.alias == s.alias || target.target == s.alias;\n\t\t\t});\n\n\t\t\tif (!target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ts.alias = target.alias;\n\t\t\ts.url = target.url;\n\t\t\ts.display = true;\n\t\t\ts.displayType = target.displayType;\n\n\t\t\tlet value;\n\t\t\tswitch (target.aggregation) {\n\t\t\t\tcase 'Max':\n\t\t\t\t\tvalue = _.max(s.datapoints, (point) => { return point[0]; })[0];\n\t\t\t\t\tvalue = s.stats.max;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Min':\n\t\t\t\t\tvalue = _.min(s.datapoints, (point) => { return point[0]; })[0];\n\t\t\t\t\tvalue = s.stats.min;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Sum':\n\t\t\t\t\tvalue = 0;\n\t\t\t\t\t_.each(s.datapoints, (point) => { value += point[0] });\n\t\t\t\t\tvalue = s.stats.total;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Avg':\n\t\t\t\t\tvalue = s.stats.avg;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'First':\n\t\t\t\t\tvalue = s.datapoints[0][0];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = s.datapoints[s.datapoints.length - 1][0];\n\t\t\t}\n\n\t\t\ts.display_value = value;\n\n\t\t\tif (target.valueHandler == \"Threshold\") {\n\t\t\t\tthis.handleThresholdStatus(s, target);\n\t\t\t}\n\t\t\telse if (target.valueHandler == \"Disable Criteria\") {\n\t\t\t\tthis.handleDisabledStatus(s,target);\n\t\t\t}\n\t\t\telse if (target.valueHandler == \"Text Only\") {\n\t\t\t\tthis.handleTextOnly(s, target);\n\t\t\t}\n\t\t});\n\n\t\tif(this.disabled.length > 0) {\n\t\t\tthis.crit = [];\n\t\t\tthis.warn = [];\n\t\t\tthis.display = [];\n\t\t}\n\n\t\tthis.autoFlip();\n\t\tthis.handleCssDisplay();\n\t\tthis.parseUri();\n\t}\n\n\tupgradeOldVersion() {\n\t\tlet targets = this.panel.targets;\n\n\t\t//Handle legacy code\n\t\t_.each(targets, (target) => {\n\t\t\tif(target.valueHandler == null) {\n\t\t\t\ttarget.valueHandler = target.displayType;\n\t\t\t\tif(target.valueHandler == \"Annotation\") {\n\t\t\t\t\ttarget.valueHandler = \"Text Only\"\n\t\t\t\t}\n\t\t\t\ttarget.displayType = this.displayTypes[0];\n\t\t\t}\n\t\t});\n\t}\n\n\thandleThresholdStatus(series, target) {\n\t\tseries.thresholds = StatusPluginCtrl.parseThresholds(target);\n\t\tseries.inverted = series.thresholds.crit < series.thresholds.warn;\n\t\tseries.display = target.display;\n\n\t\tlet isCritical = false;\n\t\tlet isWarning = false;\n\t\tlet isCheckRanges = series.thresholds.warnIsNumber && series.thresholds.critIsNumber;\n\t\tif (isCheckRanges) {\n\t\t\tif (!series.inverted) {\n\t\t\t\tif (series.display_value >= series.thresholds.crit) {\n\t\t\t\t\tisCritical = true\n\t\t\t\t} else if (series.display_value >= series.thresholds.warn) {\n\t\t\t\t\tisWarning = true\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (series.display_value <= series.thresholds.crit) {\n\t\t\t\t\tisCritical = true\n\t\t\t\t} else if (series.display_value <= series.thresholds.warn) {\n\t\t\t\t\tisWarning = true\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (series.display_value == series.thresholds.crit) {\n\t\t\t\tisCritical = true\n\t\t\t} else if (series.display_value == series.thresholds.warn) {\n\t\t\t\tisWarning = true\n\t\t\t}\n\t\t}\n\n\t\tif(isCritical) {\n\t\t\tthis.crit.push(series);\n\t\t\tseries.displayType = this.displayTypes[0]\n\t\t} else if(isWarning) {\n\t\t\tthis.warn.push(series);\n\t\t\tseries.displayType = this.displayTypes[0]\n\t\t} else if (series.display) {\n\t\t\tif(series.displayType == \"Annotation\") {\n\t\t\t\tthis.annotation.push(series);\n\t\t\t} else {\n\t\t\t\tthis.display.push(series);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleDisabledStatus(series, target) {\n\t\tseries.displayType = this.displayTypes[0];\n\t\tseries.disabledValue = target.disabledValue;\n\n\t\tif (series.display_value == series.disabledValue) {\n\t\t\tthis.disabled.push(series);\n\t\t}\n\t}\n\n\thandleTextOnly(series, target) {\n\t\tif(series.displayType == \"Annotation\") {\n\t\t\tthis.annotation.push(series);\n\t\t} else {\n\t\t\tthis.display.push(series);\n\t\t}\n\t}\n\n\thandleCssDisplay() {\n\t\tthis.$panelContainer.removeClass('error-state warn-state disabled-state ok-state no-data-state');\n\n\t\tif(this.duplicates) {\n\t\t\tthis.$panelContainer.addClass('error-state');\n\t\t} else if (this.disabled.length > 0) {\n\t\t\tthis.$panelContainer.addClass('disabled-state');\n\t\t} else if (this.crit.length > 0) {\n\t\t\tthis.$panelContainer.addClass('error-state');\n\t\t} else if (this.warn.length > 0) {\n\t\t\tthis.$panelContainer.addClass('warn-state');\n\t\t} else if((this.series == undefined || this.series.length == 0) && this.panel.isGrayOnNoData) {\n\t\t\tthis.$panelContainer.addClass('no-data-state');\n\t\t} else {\n\t\t\tthis.$panelContainer.addClass('ok-state');\n\t\t}\n\t}\n\n\tparseUri() {\n\t\tif (this.panel.links && this.panel.links.length > 0) {\n\t\t\tthis.uri = this.panel.links[0].dashUri + \"?\" + this.panel.links[0].params;\n\t\t} else {\n\t\t\tthis.uri = undefined;\n\t\t}\n\t}\n\n\tstatic parseThresholds(metricOptions) {\n\t\tlet res = {};\n\n\t\tres.warn = metricOptions.warn;\n\t\tres.warnIsNumber = angular.isNumber(res.warn);\n\t\tres.crit = metricOptions.crit;\n\t\tres.critIsNumber = angular.isNumber(res.crit);\n\n\t\treturn res;\n\t}\n\n\tonDataReceived(dataList) {\n\t\tthis.series = dataList.map(StatusPluginCtrl.seriesHandler.bind(this));\n\t\tthis.render();\n\t}\n\n\tonDataError() {\n\t\tthis.crit = [];\n\t\tthis.warn = [];\n\t}\n\n\tstatic seriesHandler(seriesData) {\n\t\tvar series = new TimeSeries({\n\t\t\tdatapoints: seriesData.datapoints,\n\t\t\talias: seriesData.target\n\t\t});\n\n\t\tseries.flotpairs = series.getFlotPairs(\"connected\");\n\n\t\treturn series;\n\t}\n\n\t$onDestroy() {\n\t\tif(this.timeoutId) clearInterval(this.timeoutId);\n\t}\n\n\tautoFlip() {\n\t\tif (this.timeoutId) clearInterval(this.timeoutId);\n\t\tif (this.panel.flipCard && (this.crit.length > 0 || this.warn.length > 0 || this.disabled.length > 0)) {\n\t\t\tthis.timeoutId = setInterval(() => {\n\t\t\t\tthis.$panelContainer.toggleClass(\"flipped\");\n\t\t\t}, this.panel.flipTime * 1000);\n\t\t}\n\t}\n\n\tlink(scope, elem, attrs, ctrl) {\n\t\tthis.$panelContainer = elem.find('.panel-container');\n\t\tthis.$panelContainer.addClass(\"st-card\");\n\t\tthis.$panelContoller = ctrl;\n\t}\n}\n\nStatusPluginCtrl.templateUrl = 'module.html';\n"]}
\ No newline at end of file
diff --git a/src/css/status_panel.scss b/src/css/status_panel.scss
index ae61869b..9e1abb25 100644
--- a/src/css/status_panel.scss
+++ b/src/css/status_panel.scss
@@ -1,53 +1,121 @@
.status-panel {
- display: table;
position: relative;
width: 100%;
+ height: 100%;
text-align: center;
- .status-panel-annotation_row {
- display: table-row;
- height: 25%;
- text-align: left;
- font-size: 0.85rem;
+ h1 {
+ font-size: 1.5rem;
}
- .status_name_row {
- display: table-row;
- height: 10%;
+ .st-card-front {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-content: center;
}
- .status_alerts_row {
- display: table-row;
+ .st-card-back {
+ .top_section {
+ .status-panel-annotation_row {
+ text-align: left;
+ font-size: 0.85rem;
+ padding-bottom: 10px;
+
+ .row-overflow {
+ max-width: 150px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+ }
+
+ .bottom_section {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-content: center;
+
+ .status_name_row {
+ }
+
+ .status_alerts_row {
+ min-height: 1px;
+ }
+ }
}
- h1 {
- font-size: 1.5rem;
+ .st-card-front,
+ .st-card-back {
+ backface-visibility: hidden;
+ transition: transform 0.5s;
}
}
-.row-overflow {
- max-width: 150px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
+.st-card-front {
+ .ok-text, .warning-text, .fail-text, .no-data-text, .disabled-text {
+ display: none;
+ font-size: 2.0rem;
+ }
}
-.error-state {
- background-color: red;
+.ok-state {
+ background-color: green;
+
+ .ok-text {
+ display: block;
+ }
}
.warn-state {
background-color: orange;
+ .warning-text {
+ display: block;
+ }
}
-.ok-state {
- background-color: green;
+.error-state {
+ background-color: red;
+ .fail-text {
+ display: block;
+ }
}
.no-data-state {
background-color: gray;
+
+ .no-data-text {
+ display: block;
+ }
}
.disabled-state {
background-color: gray;
+ .disabled-text {
+ display: block;
+ }
+}
+
+.st-card.effect-hover .st-card-back {
+ -webkit-transform: rotateY(-180deg);
+ transform: rotateY(-180deg);
+}
+
+.st-card.effect-hover:hover:not(.no-data-state) .st-card-front, .st-card.effect-hover.flipped:not(.no-data-state) .st-card-front {
+ -webkit-transform: rotateY(-180deg);
+ transform: rotateY(-180deg);
+}
+
+.st-card.effect-hover:hover:not(.no-data-state) .st-card-back, .st-card.effect-hover.flipped:not(.no-data-state) .st-card-back {
+ -webkit-transform: rotateY(0);
+ transform: rotateY(0);
+}
+
+.st-card:not(.effect-hover):not(.no-data-state) .st-card-front {
+ display: none;
}
diff --git a/src/editor.html b/src/editor.html
index 53d6faba..b62a17c2 100644
--- a/src/editor.html
+++ b/src/editor.html
@@ -24,6 +24,16 @@
{{ measurement.alias }}