You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ji...@apache.org on 2021/01/23 02:20:18 UTC

[incubator-pinot] branch master updated: [TE]frontend - Activate the composite anomalies route (#6472)

This is an automated email from the ASF dual-hosted git repository.

jihao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new 830eb94  [TE]frontend - Activate the composite anomalies route (#6472)
830eb94 is described below

commit 830eb94a4c058d41abbaed78a6e918dadfef9d22
Author: Tejas Ajmera <33...@users.noreply.github.com>
AuthorDate: Fri Jan 22 18:20:00 2021 -0800

    [TE]frontend - Activate the composite anomalies route (#6472)
    
    Activating the composite anomalies route for Entity Monitoring.
---
 .../app/pods/manage/explore/route.js               | 56 ++++++++++++----------
 .../app/utils/anomalies-tree-parser.js             |  3 ++
 2 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/thirdeye/thirdeye-frontend/app/pods/manage/explore/route.js b/thirdeye/thirdeye-frontend/app/pods/manage/explore/route.js
index 69fd822..c99e3df 100644
--- a/thirdeye/thirdeye-frontend/app/pods/manage/explore/route.js
+++ b/thirdeye/thirdeye-frontend/app/pods/manage/explore/route.js
@@ -12,9 +12,14 @@ import { formatYamlFilter, redundantParse } from 'thirdeye-frontend/utils/yaml-t
 import moment from 'moment';
 import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
 
+const ANALYSIS_RANGE = [
+  moment().add(1, 'day').subtract(30, 'day').startOf('day').valueOf(),
+  moment().add(1, 'day').startOf('day').valueOf()
+];
+
 export default Route.extend(AuthenticatedRouteMixin, {
   notifications: service('toast'),
-  analysisRange: [moment().add(1, 'day').subtract(30, 'day').startOf('day').valueOf(), moment().add(1, 'day').startOf('day').valueOf()],
+  analysisRange: ANALYSIS_RANGE,
 
   async model(params) {
     const alertId = params.alert_id;
@@ -29,7 +34,7 @@ export default Route.extend(AuthenticatedRouteMixin, {
     const detectionUrl = `/detection/${alertId}`;
     try {
       const detection_result = await fetch(detectionUrl, getProps);
-      const detection_status  = get(detection_result, 'status');
+      const detection_status = get(detection_result, 'status');
       const detection_json = await detection_result.json();
       if (detection_status !== 200) {
         if (detection_status !== 401) {
@@ -52,7 +57,13 @@ export default Route.extend(AuthenticatedRouteMixin, {
             dataset: detection_json.datasetNames,
             filters: formatYamlFilter(detectionInfo.filters),
             dimensionExploration: formatYamlFilter(detectionInfo.dimensionExploration),
-            lastDetectionTime: lastDetection.toDateString() + ", " +  lastDetection.toLocaleTimeString() + " (" + moment().tz(moment.tz.guess()).format('z') + ")",
+            lastDetectionTime:
+              lastDetection.toDateString() +
+              ', ' +
+              lastDetection.toLocaleTimeString() +
+              ' (' +
+              moment().tz(moment.tz.guess()).format('z') +
+              ')',
             rawYaml: detection_json.yaml
           });
 
@@ -65,7 +76,6 @@ export default Route.extend(AuthenticatedRouteMixin, {
             timeWindowSize: detection_json.alertDetailsDefaultWindowSize,
             granularity: detection_json.monitoringGranularity.toString()
           });
-
         }
       }
     } catch (error) {
@@ -76,7 +86,7 @@ export default Route.extend(AuthenticatedRouteMixin, {
     const healthUrl = `/detection/health/${alertId}?start=${analysisRange[0]}&end=${analysisRange[1]}`;
     try {
       const health_result = await fetch(healthUrl, getProps);
-      const health_status  = get(health_result, 'status');
+      const health_status = get(health_result, 'status');
       const health_json = await health_result.json();
       if (health_status !== 200) {
         if (health_status !== 401) {
@@ -90,10 +100,10 @@ export default Route.extend(AuthenticatedRouteMixin, {
     }
 
     //subscription group fetch
-    const subUrl = `/detection/subscription-groups/${alertId}`;//dropdown of subscription groups
+    const subUrl = `/detection/subscription-groups/${alertId}`; //dropdown of subscription groups
     try {
       const settings_result = await fetch(subUrl, getProps);
-      const settings_status  = get(settings_result, 'status');
+      const settings_status = get(settings_result, 'status');
       const settings_json = await settings_result.json();
       if (settings_status !== 200) {
         if (settings_status !== 401) {
@@ -106,16 +116,16 @@ export default Route.extend(AuthenticatedRouteMixin, {
       notifications.error('Retrieving subscription groups failed.', error, toastOptions);
     }
 
-    let subscribedGroups = "";
+    let subscribedGroups = '';
     if (typeof get(this, 'subscriptionGroups') === 'object' && get(this, 'subscriptionGroups').length > 0) {
       const groups = get(this, 'subscriptionGroups');
       for (let key in groups) {
-        if (groups.hasOwnProperty(key)) {
+        if ({}.propertyIsEnumerable.call(groups, key)) {
           let group = groups[key];
-          if (subscribedGroups === "") {
+          if (subscribedGroups === '') {
             subscribedGroups = group.name;
           } else {
-            subscribedGroups = subscribedGroups + ", " + group.name;
+            subscribedGroups = subscribedGroups + ', ' + group.name;
           }
         }
       }
@@ -139,14 +149,12 @@ export default Route.extend(AuthenticatedRouteMixin, {
    *
    * @override
    */
-  redirect() {
-    /**
-     * We will be temporarily redirecting to single-metric-anomalies route for all alerts.
-     * Once the new route is ready for composite anomalies, extract model.alertData.type and
-     * subsequenty navigate to composite-anomalies route if type is 'COMPOSITE_ALERT', else
-     * navigate to single-metric-anomalies route.
-     */
-    this.transitionTo('manage.explore.single-metric-anomalies');
+  redirect({ alertData: { type } = {} } = {}) {
+    if (type === 'COMPOSITE_ALERT') {
+      this.transitionTo('manage.explore.composite-anomalies');
+    } else {
+      this.transitionTo('manage.explore.single-metric-anomalies');
+    }
   },
 
   actions: {
@@ -157,7 +165,7 @@ export default Route.extend(AuthenticatedRouteMixin, {
     willTransition(transition) {
       //saving session url - TODO: add a util or service - lohuynh
       if (transition.intent.name && transition.intent.name !== 'logout') {
-        this.set('session.store.fromUrl', {lastIntentTransition: transition});
+        this.set('session.store.fromUrl', { lastIntentTransition: transition });
       }
     },
 
@@ -166,10 +174,10 @@ export default Route.extend(AuthenticatedRouteMixin, {
     },
 
     /**
-    * Refresh route's model.
-    * @method refreshModel
-    * @return {undefined}
-    */
+     * Refresh route's model.
+     * @method refreshModel
+     * @return {undefined}
+     */
     refreshModel() {
       this.refresh();
     }
diff --git a/thirdeye/thirdeye-frontend/app/utils/anomalies-tree-parser.js b/thirdeye/thirdeye-frontend/app/utils/anomalies-tree-parser.js
index bdb2006..5c3b1f4 100644
--- a/thirdeye/thirdeye-frontend/app/utils/anomalies-tree-parser.js
+++ b/thirdeye/thirdeye-frontend/app/utils/anomalies-tree-parser.js
@@ -572,6 +572,9 @@ export const parseSubtree = (id, input) => {
   if (Array.isArray(input)) {
     for (const entry of input) {
       anomaly = findAnomaly(id, entry);
+      if (!isEmpty(anomaly)) {
+        break;
+      }
     }
   } else {
     anomaly = findAnomaly(id, input);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org