Code coverage report for app/views/main/dashboard/widgets/uptime_text_widget.js

Statements: 77.78% (14 / 18)      Branches: 75% (3 / 4)      Functions: 60% (3 / 5)      Lines: 77.78% (14 / 18)      Ignored: none     

All files » app/views/main/dashboard/widgets/ » uptime_text_widget.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95    1                                     1 1   1                                                             2 2                                     2 2 1 1 1 1   1         1              
'use strict';
 
;require.register("views/main/dashboard/widgets/uptime_text_widget", function (exports, require, module) {
  /**
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
 
  var App = require('app');
  var date = require('utils/date/date');
 
  App.UptimeTextDashboardWidgetView = App.TextDashboardWidgetView.extend({
 
    templateName: require('templates/main/dashboard/widgets/uptime'),
 
    timeUnit: null,
 
    hiddenInfoClass: "hidden-info-three-line",
 
    maxValue: 'infinity',
 
    component: null,
 
    /**
     * Value received from model that's used to calculate data and content
     * Should be defined in every child
     */
    modelValue: null,
 
    data: null,
 
    content: Em.computed.alias('data'),
 
    isGreen: function () {
      return !Em.isNone(this.get('data'));
    }.property('data'),
 
    isOrange: false,
 
    isRed: false,
 
    timeConverter: function timeConverter(timestamp) {
      var m = moment(new Date(timestamp));
      return [m.format('ddd MMM DD YYYY'), m.format('HH:mm:ss')];
    },
 
    /**
     * All children should have such code
     * <code>
     * didInsertElement: function() {
     *   this._super();
     *   this.calc();
     * }
     * </code>
     */
    didInsertElement: function didInsertElement() {
      this._super();
      this.calculate();
      this.addObserver('modelValue', this, this.calculate);
    },
 
    calculate: function calculate() {
      var uptime = this.get('modelValue');
      if (uptime) {
        var diff = App.dateTimeWithTimeZone() - App.dateTimeWithTimeZone(uptime);
        diff = diff < 0 ? 0 : diff;
        var formatted = date.timingFormat(diff);
        var uptimeString = this.timeConverter(uptime);
 
        this.setProperties({
          data: formatted,
          hiddenInfo: [formatted, uptimeString[0], uptimeString[1]]
        });
      } else {
        this.setProperties({
          data: null,
          hiddenInfo: [this.get('component'), Em.I18n.t('services.service.summary.notRunning')]
        });
      }
    }
  });
});