Files
greenhouse-MyController/www/controllers/adf-widgets/adf-myc-time/adf-myc-time.js

93 lines
3.0 KiB
JavaScript

/*
* Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com)
* and other contributors as indicated by the @author tags.
*
* Licensed 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.
*/
// don't forget to declare this service module as a dependency in your main app constructor!
//http://js2.coffee/#coffee2js
//https://coderwall.com/p/r_bvhg/angular-ui-bootstrap-alert-service-for-angular-js
'use strict';
angular.module('adf.widget.myc-time', [])
.config(function(dashboardProvider){
dashboardProvider
.widget('mycTime', {
title: 'MyController time',
description: 'Displays date and time of MyController',
templateUrl: 'controllers/adf-widgets/adf-myc-time/view.html?mcv=29',
controller: 'mycTimeController',
controllerAs: 'mycTime',
config: {
datePattern: 'MMM dd, yyyy',
refreshTime:120,
},
edit: {
templateUrl: 'controllers/adf-widgets/adf-myc-time/edit.html?mcv=29'
}
});
})
.controller('mycTimeController', function($scope, $interval, config, mchelper, $filter, StatusFactory){
var mycTime = this;
mycTime.isSyncing = false;
mycTime.showLoading = true;
mycTime.mycTimestamp = {};
function updateDateTime(){
mycTime.time = $filter('date')(mycTime.mycTimestamp.timestamp, mchelper.cfg.timeFormat, mchelper.cfg.timezone);
mycTime.date = $filter('date')(mycTime.mycTimestamp.timestamp, config.datePattern, mchelper.cfg.timezone);
mycTime.timezone = mchelper.cfg.timezone;
mycTime.timezoneString = mchelper.cfg.timezoneString;
};
function getTimestampFromServer(){
mycTime.isSyncing = true;
StatusFactory.getTimestamp(function(response){
mycTime.mycTimestamp = response;
updateDateTime();
mycTime.isSyncing = false;
if(mycTime.showLoading){
mycTime.showLoading = false;
}
});
};
function setDateAndTime(){
if(mycTime.isSyncing){
return;
}
if((mycTime.mycTimestamp.timestamp/1000 | 0) % config.refreshTime == 0){
if(!mycTime.isSyncing){
getTimestampFromServer();
}
}else{
mycTime.mycTimestamp.timestamp += 1000;
updateDateTime();
}
}
getTimestampFromServer();
setDateAndTime();
// refresh every second
var promise = $interval(setDateAndTime, 1000);
// cancel interval on scope destroy
$scope.$on('$destroy', function(){
$interval.cancel(promise);
});
});