Pārlūkot izejas kodu

AMBARI-14035. $.timeago for alert instance and alert definitions should use not converted with timezone timestamps (onechiporenko)

Oleg Nechiporenko 10 gadi atpakaļ
vecāks
revīzija
ed6f3ab01a

+ 2 - 1
ambari-web/app/mappers/alert_definition_summary_mapper.js

@@ -48,7 +48,8 @@ App.alertDefinitionSummaryMapper = App.QuickDataMapper.create({
         });
         summaryMap[alertDefinitionSummary.definition_id] = {
           summary: summary,
-          lastTriggered: App.dateTimeWithTimeZone(parseInt(timestamp))
+          lastTriggered: App.dateTimeWithTimeZone(parseInt(timestamp)),
+          lastTriggeredRaw: timestamp
         };
       }
     });

+ 1 - 0
ambari-web/app/mappers/alert_definitions_mapper.js

@@ -122,6 +122,7 @@ App.alertDefinitionsMapper = App.QuickDataMapper.create({
           // new values will be parsed in the another mapper, so for now just use old values
           alertDefinition.summary = oldAlertDefinition.get('summary');
           alertDefinition.last_triggered = oldAlertDefinition.get('lastTriggered');
+          alertDefinition.last_triggered_raw = oldAlertDefinition.get('lastTriggeredRaw');
         }
 
         alertDefinitionsToDelete = alertDefinitionsToDelete.without(alertDefinition.id);

+ 1 - 0
ambari-web/app/mappers/alert_instances_mapper.js

@@ -35,6 +35,7 @@ App.alertInstanceMapper = App.QuickDataMapper.create({
     host_name: 'Alert.host_name',
     scope: 'Alert.scope',
     original_timestamp: 'Alert.original_timestamp',
+    original_raw_timestamp: 'Alert.original_timestamp',
     latest_timestamp: 'Alert.latest_timestamp',
     maintenance_state: 'Alert.maintenance_state',
     instance: 'Alert.instance',

+ 5 - 4
ambari-web/app/models/alerts/alert_definition.js

@@ -41,6 +41,7 @@ App.AlertDefinition = DS.Model.extend({
   groups: DS.hasMany('App.AlertGroup'),
   reporting: DS.hasMany('App.AlertReportDefinition'),
   lastTriggered: DS.attr('number'),
+  lastTriggeredRaw: DS.attr('number'),
 
   //relates only to SCRIPT-type alert definition
   location: DS.attr('string'),
@@ -102,9 +103,9 @@ App.AlertDefinition = DS.Model.extend({
    * @type {string}
    */
   lastTriggeredAgoFormatted: function () {
-    var lastTriggered = this.get('lastTriggered');
+    var lastTriggered = this.get('lastTriggeredRaw');
     return lastTriggered ? $.timeago(new Date(lastTriggered)) : '';
-  }.property('lastTriggered'),
+  }.property('lastTriggeredRaw'),
 
   lastTriggeredVerboseDisplay: function () {
     var lastTriggered = this.get('lastTriggered');
@@ -116,7 +117,7 @@ App.AlertDefinition = DS.Model.extend({
    * @type {string}
    */
   lastTriggeredForFormatted: function () {
-    var lastTriggered = this.get('lastTriggered');
+    var lastTriggered = this.get('lastTriggeredRaw');
     var previousSuffixAgo = $.timeago.settings.strings.suffixAgo;
     var previousPrefixAgo = $.timeago.settings.strings.prefixAgo;
     $.timeago.settings.strings.suffixAgo = null;
@@ -125,7 +126,7 @@ App.AlertDefinition = DS.Model.extend({
     $.timeago.settings.strings.suffixAgo = previousSuffixAgo;
     $.timeago.settings.strings.prefixAgo = previousPrefixAgo;
     return triggeredFor;
-  }.property('lastTriggered'),
+  }.property('lastTriggeredRaw'),
 
   /**
    * Formatted displayName for <code>componentName</code>

+ 3 - 2
ambari-web/app/models/alerts/alert_instance.js

@@ -31,6 +31,7 @@ App.AlertInstance = DS.Model.extend({
   hostName: DS.attr('string'),
   scope: DS.attr('string'),
   originalTimestamp: DS.attr('number'),
+  originalRawTimestamp: DS.attr('number'),
   latestTimestamp: DS.attr('number'),
   maintenanceState: DS.attr('string'),
   instance: DS.attr('string'),
@@ -89,7 +90,7 @@ App.AlertInstance = DS.Model.extend({
    * @type {string}
    */
   lastTriggeredAgoFormatted: function () {
-    var lastTriggered = this.get('originalTimestamp');
+    var lastTriggered = this.get('originalRawTimestamp');
     return lastTriggered ? $.timeago(new Date(lastTriggered)) : '';
   }.property('originalTimestamp'),
 
@@ -106,7 +107,7 @@ App.AlertInstance = DS.Model.extend({
    * @type {string}
    */
   lastTriggeredForFormatted: function () {
-    var lastTriggered = this.get('originalTimestamp');
+    var lastTriggered = this.get('originalRawTimestamp');
     var previousSuffixAgo = $.timeago.settings.strings.suffixAgo;
     var previousPrefixAgo = $.timeago.settings.strings.prefixAgo;
     $.timeago.settings.strings.suffixAgo = null;

+ 2 - 2
ambari-web/test/models/alerts/alert_definition_test.js

@@ -162,12 +162,12 @@ describe('App.AlertDefinition', function () {
   describe('#lastTriggeredAgoFormatted', function () {
 
     it('should be empty', function () {
-      model.set('lastTriggered', 0);
+      model.set('lastTriggeredRaw', 0);
       expect(model.get('lastTriggeredAgoFormatted')).to.equal('');
     });
 
     it('should not be empty', function () {
-      model.set('lastTriggered', new Date().getTime() - 61000);
+      model.set('lastTriggeredRaw', new Date().getTime() - 61000);
       expect(model.get('lastTriggeredAgoFormatted')).to.equal('about a minute ago');
     });