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

xhsun 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 9ec6b5b  [TE] frontend - harleyjj/manage-alerts - remove old alerts 
from results and display type correctly (#3968)
9ec6b5b is described below

commit 9ec6b5b5f3e8bfdb43d3c1739f85d2c49fe792d7
Author: Harley Jackson <harleyy...@gmail.com>
AuthorDate: Wed Mar 13 18:54:44 2019 -0700

    [TE] frontend - harleyjj/manage-alerts - remove old alerts from results and 
display type correctly (#3968)
---
 .../app/mirage/endpoints/selfserve.js              | 17 ++++--
 .../app/mirage/factories/alert.js                  | 60 ++++++++++++----------
 .../self-serve-alert-details/template.hbs          | 12 ++---
 .../app/pods/manage/alerts/index/route.js          | 39 ++++++--------
 .../tests/acceptance/edit-alert-test.js            | 39 --------------
 .../acceptance/self-serve-alert-tuning-test.js     | 32 +-----------
 6 files changed, 64 insertions(+), 135 deletions(-)

diff --git a/thirdeye/thirdeye-frontend/app/mirage/endpoints/selfserve.js 
b/thirdeye/thirdeye-frontend/app/mirage/endpoints/selfserve.js
index 957237a..64ad90c 100644
--- a/thirdeye/thirdeye-frontend/app/mirage/endpoints/selfserve.js
+++ b/thirdeye/thirdeye-frontend/app/mirage/endpoints/selfserve.js
@@ -76,7 +76,7 @@ export default function (server) {
   /**
    * Returns the email config by id
    */
-  server.get('/thirdeye/email/function/:id', (schema, request) => {
+  server.get('/thirdeye/email/function/:id', () => {
     return [alertConfig[1]];
   });
 
@@ -160,7 +160,7 @@ export default function (server) {
   /**
    * Mocks a list of alerts, displayed in the /manage/alerts page
    */
-  server.get('/thirdeye/entity/ANOMALY_FUNCTION', (schema) => {
+  server.get('/yaml/list', (schema) => {
     return schema.alerts.all().models;
   });
 
@@ -215,9 +215,16 @@ export default function (server) {
   });
 
   /**
-   * get request for list yaml configs
+   * get request for detection config
    */
-  server.get('/yaml/list', () => {
+  server.get('/detection/:id', () => {
     return [];
-  })
+  });
+
+  /**
+   * get request for subscription groups of given alert
+   */
+  server.get('/detection/subscription-groups/:id', () => {
+    return [];
+  });
 }
diff --git a/thirdeye/thirdeye-frontend/app/mirage/factories/alert.js 
b/thirdeye/thirdeye-frontend/app/mirage/factories/alert.js
index 0d00e9c..5cdfcc0 100644
--- a/thirdeye/thirdeye-frontend/app/mirage/factories/alert.js
+++ b/thirdeye/thirdeye-frontend/app/mirage/factories/alert.js
@@ -1,33 +1,39 @@
 import { Factory } from 'ember-cli-mirage';
 
 export default Factory.extend({
-  version: 1,
-  createdBy: null,
-  updatedBy: null,
-  collection(i) { return `test_collection_${i+1}`; },
-  functionName(i) { return `test_function_${i+1}`; },
   metric(i) { return `test_metric_${i+1}`; },
-  metrics(i) { return [`test_metric_${i+1}`]; },
-  properties(i) { return `test_properties_${i+1}`; },
-  cron(i) { return `test_cron_${i+1}`; },
-  metricFunction: "SUM",
-  type: "WEEK_OVER_WEEK_RULE",
-  isActive: true,
-  globalMetric: null,
-  globalMetricFilters: null,
-  frequency: {
-    size: 1,
-    unit: "DAYS"
+  functionName(i) { return `test_function_${i+1}`; },
+  createdBy : null,
+  detectionName(i) { return `test_function_${i+1}`; },
+  rules : [ {
+    detection : [ {
+      name : "detection_rule_2",
+      type : "ABSOLUTE_CHANGE_RULE",
+      params : {
+        offset : "wo1w",
+        change : 1,
+        pattern : null
+      }
+    }, {
+      name : "filter_rule_2",
+      type : "ALGORITHM_FILTER",
+      params : {
+        configuration : {
+          bucketPeriod : null
+        }
+      }
+    } ]
+  } ],
+  filters : {
+    dimensionName1 : [ "dimensionValue1", "dimensionValue2" ],
+    dimensionName2 : [ "dimensionValue3" ]
   },
-  bucketSize: 1,
-  bucketUnit: "DAYS",
-  windowSize: 7,
-  windowUnit: "DAYS",
-  metricId: 0,
-  dataFilter: null,
-  alertFilter: null,
-  anomalyMergeConfig: null,
-  requiresCompletenessCheck: true,
-  topicMetric: "test_metric",
-  toCalculateGlobalMetric: false
+  pipelineType : "Composite",
+  isActive : true,
+  dataset : null,
+  dimensionExploration : {
+    dimensions : [ "dimensionName" ],
+    minContribution : 0.05,
+    k : 10
+  }
 });
diff --git 
a/thirdeye/thirdeye-frontend/app/pods/components/self-serve-alert-details/template.hbs
 
b/thirdeye/thirdeye-frontend/app/pods/components/self-serve-alert-details/template.hbs
index 560fa7c..b4548e7 100644
--- 
a/thirdeye/thirdeye-frontend/app/pods/components/self-serve-alert-details/template.hbs
+++ 
b/thirdeye/thirdeye-frontend/app/pods/components/self-serve-alert-details/template.hbs
@@ -12,15 +12,9 @@
         {{/if}}
       </div>
       {{#if (eq displayMode "list")}}
-        {{#if alertData.isNewPipeline}}
-          {{#link-to "manage.explore" alertData.id}}
-            <div class="te-search-results__title-name" 
title={{alertData.functionName}}>{{alertData.functionName}}</div>
-          {{/link-to}}
-        {{else}}
-          {{#link-to "manage.alert" alertData.id}}
-            <div class="te-search-results__title-name" 
title={{alertData.functionName}}>{{alertData.functionName}}</div>
-          {{/link-to}}
-        {{/if}}
+        {{#link-to "manage.explore" alertData.id}}
+          <div class="te-search-results__title-name" 
title={{alertData.functionName}}>{{alertData.functionName}}</div>
+        {{/link-to}}
       {{/if}}
     </div>
   </div>
diff --git a/thirdeye/thirdeye-frontend/app/pods/manage/alerts/index/route.js 
b/thirdeye/thirdeye-frontend/app/pods/manage/alerts/index/route.js
index 34ce8f0..df31451 100644
--- a/thirdeye/thirdeye-frontend/app/pods/manage/alerts/index/route.js
+++ b/thirdeye/thirdeye-frontend/app/pods/manage/alerts/index/route.js
@@ -1,7 +1,6 @@
 import { hash } from 'rsvp';
 import Route from '@ember/routing/route';
 import fetch from 'fetch';
-import { isPresent } from '@ember/utils';
 import { get, getWithDefault } from '@ember/object';
 import { inject as service } from '@ember/service';
 import { checkStatus } from 'thirdeye-frontend/utils/utils';
@@ -24,7 +23,6 @@ export default Route.extend({
 
   model() {
     return hash({
-      rawAlerts: fetch('/thirdeye/entity/ANOMALY_FUNCTION').then(checkStatus),
       subscriberGroups: 
fetch('/thirdeye/entity/ALERT_CONFIG').then(checkStatus),
       applications: fetch('/thirdeye/entity/APPLICATION').then(checkStatus),
       detectionAlertConfig: 
fetch('/thirdeye/entity/DETECTION_ALERT_CONFIG').then(checkStatus),
@@ -34,23 +32,6 @@ export default Route.extend({
 
   afterModel(model) {
     this._super(model);
-    // Work only with valid alerts - with metric association
-    let alerts = model.rawAlerts.filter(alert => isPresent(alert.metric));
-
-    // Iterate through config groups to enhance all alerts with extra 
properties (group name, application)
-    for (let config of model.subscriberGroups) {
-      let groupFunctionIds = config.emailConfig && 
config.emailConfig.functionIds ? config.emailConfig.functionIds : [];
-      for (let id of groupFunctionIds) {
-        let foundAlert = alerts.find(alert => alert.id === id);
-        if (foundAlert) {
-          Object.assign(foundAlert, {
-            application: config.application,
-            group: foundAlert.group ? foundAlert.group + ", " + config.name : 
config.name
-          });
-        }
-      }
-    }
-
     // format Yaml configs
     const yamlAlerts = model.detectionYaml;
     for (let yamlAlert of yamlAlerts) {
@@ -65,7 +46,7 @@ export default Route.extend({
       Object.assign(yamlAlert, {
         functionName: yamlAlert.detectionName,
         collection: yamlAlert.dataset,
-        type: yamlAlert.pipelineType,
+        type: this._detectionType(yamlAlert),
         exploreDimensions: dimensions,
         filters: this._formatYamlFilter(yamlAlert.filters),
         isNewPipeline: true
@@ -86,8 +67,7 @@ export default Route.extend({
       }
     }
 
-    // concat legacy alerts and yaml alerts
-    alerts = alerts.concat(yamlAlerts);
+    const alerts = yamlAlerts;
 
     // Perform initial filters for our 'primary' filter types and add counts
     const user = getWithDefault(get(this, 'session'), 
'data.authenticated.name', null);
@@ -99,8 +79,7 @@ export default Route.extend({
     Object.assign(model, { alerts, ownedAlerts, subscribedAlerts, totalCounts 
});
   },
 
-  setupController(controller, model, transition) {
-    const { queryParams } = transition;
+  setupController(controller, model) {
 
     // This filter category is "global" in nature. When selected, they reset 
the rest of the filters
     const filterBlocksGlobal = [
@@ -187,6 +166,18 @@ export default Route.extend({
   },
 
   /**
+   * Grab detection type if available, else return yamlAlert.pipelineType
+   */
+  _detectionType(yamlAlert) {
+    if (yamlAlert.rules && Array.isArray(yamlAlert.rules) && 
yamlAlert.rules.length > 0) {
+      if (yamlAlert.rules[0].detection && 
Array.isArray(yamlAlert.rules[0].detection) && 
yamlAlert.rules[0].detection.length > 0) {
+        return yamlAlert.rules[0].detection[0].type;
+      }
+    }
+    return yamlAlert.pipelineType;
+  },
+
+  /**
    * The yaml filters formatter. Convert filters in the yaml file in to a 
legacy filters string
    * For example, filters = {
    *   "country": ["us", "cn"],
diff --git a/thirdeye/thirdeye-frontend/tests/acceptance/edit-alert-test.js 
b/thirdeye/thirdeye-frontend/tests/acceptance/edit-alert-test.js
deleted file mode 100644
index b440002..0000000
--- a/thirdeye/thirdeye-frontend/tests/acceptance/edit-alert-test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import { module, test } from 'qunit';
-import { setupApplicationTest } from 'ember-qunit';
-import { visit, fillIn, click, currentURL } from '@ember/test-helpers';
-import { selfServeConst } from 'thirdeye-frontend/tests/utils/constants';
-import $ from 'jquery';
-
-module('Acceptance | edit alert', function(hooks) {
-  setupApplicationTest(hooks);
-
-  test(`visiting ${selfServeConst.EDIT_LINK} and checking that fields render 
correctly and edit is successful`, async (assert) => {
-    const alert = server.create('alert');
-    const editSuccessMsg = `Edit Alert Success! You have successfully edited 
alert ${alert.id}`;
-    const editNotificationButtonText = 'Edit Notification Settings';
-
-    await visit(`/manage/alert/${alert.id}/edit`);
-
-    assert.equal(
-      currentURL(),
-      `/manage/alert/1/edit`,
-      'correctly redirects to edit alerts page'
-    );
-    assert.equal(
-      $(selfServeConst.ALERT_NAME_INPUT).get(0).value,
-      'test_function_1',
-      'alert name is correct');
-    assert.ok(
-      $(`button:contains(${editNotificationButtonText})`).get(0),
-      'Subscription group button renders ok');
-
-/*  TODO: Test completion needed for new notification settings modal
-    await fillIn(selfServeConst.ALERT_NAME_INPUT, 
selfServeConst.NEW_FUNC_NAME);
-    await click(selfServeConst.STATUS_TOGGLER);
-    await click(selfServeConst.SUBMIT_BUTTON);
-    assert.ok(
-      
$(selfServeConst.IMPORT_SUCCESS).get(0).innerText.includes(editSuccessMsg),
-      'after edit, alert is saved successfully');
-*/
-  });
-});
diff --git 
a/thirdeye/thirdeye-frontend/tests/acceptance/self-serve-alert-tuning-test.js 
b/thirdeye/thirdeye-frontend/tests/acceptance/self-serve-alert-tuning-test.js
index ef520ea..55ccfcf 100644
--- 
a/thirdeye/thirdeye-frontend/tests/acceptance/self-serve-alert-tuning-test.js
+++ 
b/thirdeye/thirdeye-frontend/tests/acceptance/self-serve-alert-tuning-test.js
@@ -26,6 +26,7 @@ module('Acceptance | tune alert settings', function(hooks) {
     server.createList('alert', 5);
     await visit(`/manage/alerts`);
     const $targetAlertLink = 
$(`${selfServeConst.RESULTS_LINK}:contains(${alertLinkTitle})`);
+    const problem = $(selfServeConst.RESULTS_TITLE).get(0).innerText.trim();
 
     // Verify default search results
     assert.equal(
@@ -33,37 +34,6 @@ module('Acceptance | tune alert settings', function(hooks) {
       'Alerts (5)',
       'Number of alerts displayed and title are correct.'
     );
-
-    // Click into Alert Page for first listed alert
-    await click($targetAlertLink.get(0));
-    const alertPropsElementArray = 
Object.values($(selfServeConst.ALERT_PROPS_ITEM)).filter(el => el.nodeName 
==='DIV');
-    const alertPropLabelsArray = alertPropsElementArray.map(el => 
el.innerText.trim());
-
-    // Verify transition to Alert Page
-    assert.ok(
-      currentURL().includes(`/manage/alert/1/explore?duration=3m`),
-      'Navigation to alert page succeeded'
-    );
-
-    // Verify all alert property labels are present
-    assert.ok(
-      alertPropLabelsArray.join() === alertProps.join(),
-      'All needed labels are displayed in header for Alert Page'
-    );
-
-    // Change the default date range, confirm it is cached in tuning page
-    await click($(selfServeConst.RANGE_PILL_SELECTOR_TRIGGER).get(0));
-    await click($(selfServeConst.RANGE_PILL_PRESET_OPTION).get(0));
-    const urlCustomTune = currentURL().replace('explore', 'tune');
-
-    // Navigate to tuning page, verify time range options in URL are the same
-    await click($(selfServeConst.LINK_TUNE_ALERT).get(0));
-
-    assert.equal(
-      currentURL(),
-      urlCustomTune,
-      'In transition to tuning page, the user-selected custom date range was 
persisted'
-    );
   });
 
   /**


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

Reply via email to