Files
greenhouse-MyController/www/app.js

870 lines
29 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.
*/
'use strict';
// Declare app level module which depends on views, and components
var myControllerModule = angular.module('myController',[
'ui.router',
'ui.bootstrap',
'ngResource',
'ngCookies',
'ui.bootstrap.datetimepicker',
'base64',
'colorpicker.module',
'ngFileSaver',
'pascalprecht.translate',
'ngSanitize',
'nvd3',
'patternfly',
'patternfly.charts',
'patternfly.select',
'patternfly.views',
'patternfly.filters',
'patternfly.card',
'patternfly.toolbars',
'frapontillo.bootstrap-switch',
'xeditable',
'angularUtils.directives.dirPagination',
'frapontillo.bootstrap-duallistbox',
'angularMoment',
'adf',
'adf.structures.base',
'adf.widget.myc-a-sensor-graph',
'adf.widget.myc-custom-widget',
'adf.widget.myc-dsi',
'adf.widget.myc-sensors-grouped-graph',
'adf.widget.myc-groups',
'adf.widget.myc-heat-map',
'adf.widget.myc-sensors-mixed-graph',
'adf.widget.myc-time',
'adf.widget.news',
'adf.widget.myc-os-commands',
'adf.widget.myc-custom-buttons',
'adf.widget.myc-sen-vars',
'adf.widget.myc-sensors-bullet-graph',
'adf.widget.myc-sunrisetime',
'ngMap',
'kubernetesUI',
]);
myControllerModule.constant("mchelper", {
internal:{},
cfg:{},
languages:{},
user:{},
userSettings:{},
});
myControllerModule.config(function($stateProvider, $urlRouterProvider) {
//For any unmatched url, redirect to /dashboard
$urlRouterProvider.otherwise('/dashboard');
$stateProvider
/* Dashboard */
.state('dashboardMain', {
url:"/dashboard",
templateUrl: "partials/dashboard/dashboard.html?mcv=29",
controller: "DashboardListController",
data: {
requireLogin: true
}
}).state('dashboardRoomsSensorsList', {
url:"/dashboard/rooms/list/:id",
templateUrl: "partials/rooms/rooms-sensors-list.html?mcv=29",
controller: "RoomsSensorsControllerList",
data: {
requireLogin: true
}
}).state('dashboardTopology', {
url:"/dashboard/topology/:resourceType/:resourceId",
templateUrl: "partials/topology/topology.html?mcv=29",
controller: "TopologyController",
data: {
requireLogin: true
}
})
/* Resources */
.state('gatewaysList', {
url:"/resources/gateways/list",
templateUrl: "partials/gateways/gateways-list.html?mcv=29",
controller: "GatewaysController",
data: {
requireLogin: true
}
}).state('gatewaysAddEdit', {
url:"/resources/gateways/addedit/:id",
templateUrl: "partials/gateways/gateway-add-edit.html?mcv=29",
controller: "GatewaysControllerAddEdit",
data: {
requireLogin: true
}
}).state('gatewaysDetail', {
url:"/resources/gateways/detail/:id",
templateUrl: "partials/gateways/gateways-detail.html?mcv=29",
controller: "GatewaysControllerDetail",
data: {
requireLogin: true
}
}).state('nodesList', {
url:"/resources/nodes/list/:gatewayId",
templateUrl: "partials/nodes/nodes-list.html?mcv=29",
controller: "NodesController",
data: {
requireLogin: true
}
}).state('nodesAddEdit', {
url:"/resources/nodes/addedit/:id",
templateUrl: "partials/nodes/node-add-edit.html?mcv=29",
controller: "NodesControllerAddEdit",
data: {
requireLogin: true
}
}).state('nodesDetail', {
url:"/resources/nodes/detail/:id",
templateUrl: "partials/nodes/node-detail.html?mcv=29",
controller: "NodesControllerDetail",
data: {
requireLogin: true
}
}).state('sensorsList', {
url:"/resources/sensors/list/:nodeId",
templateUrl: "partials/sensors/sensors-list.html?mcv=29",
controller: "SensorsController",
data: {
requireLogin: true
}
}).state('sensorsAddEdit', {
url:"/resources/sensors/addedit/:id",
templateUrl: "partials/sensors/sensor-add-edit.html?mcv=29",
controller: "SensorsControllerAddEdit",
data: {
requireLogin: true
}
}).state('sensorVariablePurge', {
url:"/resources/sensorvariable/purge/:id",
templateUrl: "partials/sensors/sensor-variable-purge.html?mcv=29",
controller: "SensorVariableControllerPurge",
data: {
requireLogin: true
}
}).state('sensorVariableEdit', {
url:"/resources/sensorvariable/edit/:id",
templateUrl: "partials/sensors/sensor-variable-edit.html?mcv=29",
controller: "SensorVariableControllerEdit",
data: {
requireLogin: true
}
}).state('sensorsDetail', {
url:"/resources/sensors/detail/:id",
templateUrl: "partials/sensors/sensors-detail.html?mcv=29",
controller: "SensorsControllerDetail",
data: {
requireLogin: true
}
}).state('rulesList', {
url:"/resources/rules/list/:resourceType/:resourceId",
templateUrl: "partials/rule-engine/rules-list.html?mcv=29",
controller: "RuleEngineController",
data: {
requireLogin: true
}
}).state('rulesAddEdit', {
url:"/resources/rules/addedit/:id/:action",
templateUrl: "partials/rule-engine/rules-add-edit.html?mcv=29",
controller: "RuleEngineControllerAddEdit",
data: {
requireLogin: true
}
}).state('operationsList', {
url:"/resources/operations/list",
templateUrl: "partials/operations/operations-list.html?mcv=29",
controller: "OperationsController",
data: {
requireLogin: true
}
}).state('operationsAddEdit', {
url:"/resources/operations/addedit/:id/:action",
templateUrl: "partials/operations/operations-add-edit.html?mcv=29",
controller: "OperationsControllerAddEdit",
data: {
requireLogin: true
}
}).state('forwardPayloadList', {
url:"/resources/forwardpayload/list/:sensorId",
templateUrl: "partials/forward-payload/forward-payload-list.html?mcv=29",
controller: "ForwardPayloadController",
data: {
requireLogin: true
}
}).state('forwardPayloadAddEdit', {
url:"/resources/forwardpayload/addedit/:id",
templateUrl: "partials/forward-payload/forward-payload-add-edit.html?mcv=29",
controller: "ForwardPayloadControllerAddEdit",
data: {
requireLogin: true
}
}).state('resourcesGroupList', {
url:"/resources/groups/list/:resourceType/:resourceId",
templateUrl: "partials/resources-group/resources-group-list.html?mcv=29",
controller: "ResourcesGroupController",
data: {
requireLogin: true
}
}).state('resourcesGroupAddEdit', {
url:"/resources/groups/addedit/:id",
templateUrl: "partials/resources-group/resources-group-add-edit.html?mcv=29",
controller: "ResourcesGroupControllerAddEdit",
data: {
requireLogin: true
}
}).state('timersList', {
url:"/resources/timers/list/:resourceType/:resourceId",
templateUrl: "partials/timers/timers-list.html?mcv=29",
controller: "TimersController",
data: {
requireLogin: true
}
}).state('timersAddEdit', {
url:"/resources/timers/addedit/:id/:action",
templateUrl: "partials/timers/timer-add-edit.html?mcv=29",
controller: "TimersControllerAddEdit",
data: {
requireLogin: true
}
}).state('resourcesGroupMapList', {
url:"/resources/groups/map/list/:id",
templateUrl: "partials/resources-group/resources-group-map-list.html?mcv=29",
controller: "ResourcesGroupMapController",
data: {
requireLogin: true
}
}).state('resourcesGroupMapAddEdit', {
url:"/resources/groups/map/addedit/:groupId/:id",
templateUrl: "partials/resources-group/resources-group-map-add-edit.html?mcv=29",
controller: "ResourcesGroupMapControllerAddEdit",
data: {
requireLogin: true
}
}).state('roomsList', {
url:"/resources/rooms/list",
templateUrl: "partials/rooms/rooms-list.html?mcv=29",
controller: "RoomsControllerList",
data: {
requireLogin: true
}
}).state('roomsAddEdit', {
url:"/resources/rooms/addedit/:id",
templateUrl: "partials/rooms/rooms-add-edit.html?mcv=29",
controller: "RoomsControllerAddEdit",
data: {
requireLogin: true
}
})
/* Action board */
.state('actionBoardSensorsList', {
url:"/actionboard/sensorsaction/list",
templateUrl: "partials/action-board/sensors-action-list.html?mcv=29",
controller: "SensorsActionControllerList",
data: {
requireLogin: true
}
}).state('sendRawMessage', {
url:"/actionboard/sendrawmessage",
templateUrl: "partials/send-raw-message/send-raw-message.html?mcv=29",
controller: "SendRawMessageController",
data: {
requireLogin: true
}
})
/* Status */
.state('aboutMyController', {
url:"/status/about",
templateUrl: "partials/status/about.html?mcv=29",
controller: "McAboutController",
data: {
requireLogin: true
}
}).state('statusSystem', {
url:"/status/system",
templateUrl: "partials/status/system-status.html?mcv=29",
controller: "StatusSystemController",
data: {
requireLogin: true
}
}).state('resourcesLogsList', {
url:"/status/resourceslogs/:resourceType/:resourceId",
templateUrl: "partials/resources-logs/resources-logs-list.html?mcv=29",
controller: "ResourcesLogsController",
data: {
requireLogin: true
}
}).state('resourcesLogsPurge', {
url:"/status/resourceslogs/purge",
templateUrl: "partials/resources-logs/resources-logs-purge.html?mcv=29",
controller: "ResourcesLogsPurgeController",
data: {
requireLogin: true
}
}).state('mycontrollerLogList', {
url:"/status/log/mycontroller",
templateUrl: "partials/status/mc-log-list.html?mcv=29",
controller: "StatusMcLogController",
data: {
requireLogin: true
}
})
/* Utilities */
.state('scriptsList', {
url:"/utilities/scripts/list",
templateUrl: "partials/scripts/scripts-list.html?mcv=29",
controller: "ScriptsController",
data: {
requireLogin: true
}
}).state('scriptsAddEdit', {
url:"/utilities/scripts/addedit/:name",
templateUrl: "partials/scripts/scripts-add-edit.html?mcv=29",
controller: "ScriptsControllerAddEdit",
data: {
requireLogin: true
}
}).state('templatesList', {
url:"/utilities/templates/list",
templateUrl: "partials/templates/templates-list.html?mcv=29",
controller: "TemplatesController",
data: {
requireLogin: true
}
}).state('templatesAddEdit', {
url:"/utilities/templates/addedit/:name",
templateUrl: "partials/templates/templates-add-edit.html?mcv=29",
controller: "TemplatesControllerAddEdit",
data: {
requireLogin: true
}
}).state('additionalHeadersUpdate', {
url:"/utilities/additionalheaders/update",
templateUrl: "partials/additional-headers/additional-headers-update.html?mcv=29",
controller: "AdditionalHeadersUpdateController",
data: {
requireLogin: true
}
}).state('variablesRepositoryList', {
url:"/utilities/variables/list",
templateUrl: "partials/variables-repository/variables-list.html?mcv=29",
controller: "VariablesRepositoryController",
data: {
requireLogin: true
}
}).state('variablesRepositoryAddEdit', {
url:"/utilities/variables/addedit/:id",
templateUrl: "partials/variables-repository/variables-add-edit.html?mcv=29",
controller: "VariablesRepositoryControllerAddEdit",
data: {
requireLogin: true
}
}).state('firmwaresList', {
url:"/utilities/firmwares/list",
templateUrl: "partials/firmwares/firmwares-list.html?mcv=29",
controller: "FirmwaresController",
data: {
requireLogin: true
}
}).state('firmwaresAddEdit', {
url:"/utilities/firmwares/addedit/:id",
templateUrl: "partials/firmwares/firmwares-add-edit.html?mcv=29",
controller: "FirmwaresControllerAddEdit",
data: {
requireLogin: true
}
}).state('firmwaresTypeList', {
url:"/utilities/firmwares/type/list",
templateUrl: "partials/firmwares/firmwares-type-list.html?mcv=29",
controller: "FirmwaresTypeController",
data: {
requireLogin: true
}
}).state('firmwaresTypeAddEdit', {
url:"/utilities/firmwares/type/addedit/:id",
templateUrl: "partials/firmwares/firmwares-type-add-edit.html?mcv=29",
controller: "FirmwaresTypeControllerAddEdit",
data: {
requireLogin: true
}
}).state('firmwaresVersionList', {
url:"/utilities/firmwares/version/list",
templateUrl: "partials/firmwares/firmwares-version-list.html?mcv=29",
controller: "FirmwaresVersionController",
data: {
requireLogin: true
}
}).state('firmwaresVersionAddEdit', {
url:"/utilities/firmwares/version/addedit/:id",
templateUrl: "partials/firmwares/firmwares-version-add-edit.html?mcv=29",
controller: "FirmwaresVersionControllerAddEdit",
data: {
requireLogin: true
}
}).state('uidTagsList', {
url:"/utilities/uidtags/list",
templateUrl: "partials/uid-tags/uid-tags-list.html?mcv=29",
controller: "UidTagsController",
data: {
requireLogin: true
}
}).state('uidTagsAddEdit', {
url:"/utilities/uidtags/addedit/:id",
templateUrl: "partials/uid-tags/uid-tags-add-edit.html?mcv=29",
controller: "UidTagsControllerAddEdit",
data: {
requireLogin: true
}
}).state('resourcesDataList', {
url:"/utilities/resourcesdata/list",
templateUrl: "partials/resources-data/resources-data-list.html?mcv=29",
controller: "ResourcesDataController",
data: {
requireLogin: true
}
}).state('resourcesDataAddEdit', {
url:"/utilities/resourcesdata/addedit/:id",
templateUrl: "partials/resources-data/resources-data-add-edit.html?mcv=29",
controller: "ResourcesDataControllerAddEdit",
data: {
requireLogin: true
}
}).state('externalServersList', {
url:"/utilities/externalserver/list",
templateUrl: "partials/external-servers/external-servers-list.html?mcv=29",
controller: "ExternalServerController",
data: {
requireLogin: true
}
}).state('externalServersAddEdit', {
url:"/utilities/externalserver/addedit/:id",
templateUrl: "partials/external-servers/external-server-add-edit.html?mcv=29",
controller: "ExternalServersControllerAddEdit",
data: {
requireLogin: true
}
})
/* Settings */
.state('settingsProfileUpdate', {
url:"/settings/profile/update",
templateUrl: "partials/users-roles/profile-update.html?mcv=29",
controller: "ProfileControllerUpdate",
data: {
requireLogin: true
}
}).state('settingsSystem', {
url:"/settings/system",
templateUrl: "partials/settings/settings-system.html?mcv=29",
controller: "SettingsSystemController",
data: {
requireLogin: true
}
}).state('settingsNotifications', {
url:"/settings/notifications",
templateUrl: "partials/settings/settings-notifications.html?mcv=29",
controller: "SettingsNotificationsController",
data: {
requireLogin: true
}
}).state('settingsMqttBroker', {
url:"/settings/mqttbroker",
templateUrl: "partials/settings/settings-mqtt-broker.html?mcv=29",
controller: "SettingsMqttBrokerController",
data: {
requireLogin: true
}
}).state('settingsMetrics', {
url:"/settings/metrics",
templateUrl: "partials/settings/settings-metrics.html?mcv=29",
controller: "SettingsMetricsController",
data: {
requireLogin: true
}
}).state('settingsMySensors', {
url:"/settings/mysensors",
templateUrl: "partials/settings/settings-mysensors.html?mcv=29",
controller: "SettingsSystemMySensors",
data: {
requireLogin: true
}
}).state('settingsVariablesMapperList', {
url:"/settings/variablesmapper/list",
templateUrl: "partials/variables-mapper/variables-mapper-list.html?mcv=29",
controller: "VariablesMapperListController",
data: {
requireLogin: true
}
}).state('settingsVariablesMapperEdit', {
url:"/settings/variablesmapper/edit/:sensorType",
templateUrl: "partials/variables-mapper/variables-mapper-edit.html?mcv=29",
controller: "VariablesMapperEditController",
data: {
requireLogin: true
}
}).state('settingsUsersList', {
url:"/settings/users/list",
templateUrl: "partials/users-roles/users-list.html?mcv=29",
controller: "UsersControllerList",
data: {
requireLogin: true
}
}).state('settingsUsersAddEdit', {
url:"/settings/users/addedit/:id",
templateUrl: "partials/users-roles/users-add-edit.html?mcv=29",
controller: "UsersControllerAddEdit",
data: {
requireLogin: true
}
}).state('settingsRolesList', {
url:"/settings/roles/list",
templateUrl: "partials/users-roles/roles-list.html?mcv=29",
controller: "RolesControllerList",
data: {
requireLogin: true
}
}).state('settingsRolesAddEdit', {
url:"/settings/roles/addedit/:id",
templateUrl: "partials/users-roles/roles-add-edit.html?mcv=29",
controller: "RolesControllerAddEdit",
data: {
requireLogin: true
}
}).state('settingsBackupList', {
url:"/settings/backup/list",
templateUrl: "partials/backup/backup-list.html?mcv=29",
controller: "BackupControllerList",
data: {
requireLogin: true
}
}).state('settingsBackupAuto', {
url:"/settings/backup/settings",
templateUrl: "partials/backup/automatic-backup-settings.html?mcv=29",
controller: "BackupControllerAutoSettings",
data: {
requireLogin: true
}
})
/* Login */
.state('login', {
url:"/login",
templateUrl: "partials/authentication/login.html?mcv=29",
controller: "LoginController",
data: {
requireLogin: false
},
params: {
'toState': 'dashboardMain', // default state to proceed to after login
'toParams': {}
},
});
});
//McNavCtrl
myControllerModule.controller('McNavBarCtrl', function($scope, $location, $translate, $state, mchelper, SettingsFactory, CommonServices) {
$scope.isCollapsed = true;
$scope.mchelper = mchelper;
$scope.$state = $state;
$scope.isAuthenticated = function () {
return mchelper.internal.currentUser;
};
$scope.changeLanguage = function (lang) {
$translate.use(lang.id);
$scope.languageId = lang.id;
mchelper.cfg.languageId = lang.id;
mchelper.cfg.language = lang.displayName;
//Update selected language
if(mchelper.user.permission === 'Super admin'){
SettingsFactory.updateLanguage(lang.displayName);
}
//Update mchelper
CommonServices.saveMchelper(mchelper);
};
//Show hide main menu
$scope.showHideMainMenu = function () {
if(mchelper.userSettings.hideMenu){
mchelper.userSettings.hideMenu = false;
}else{
mchelper.userSettings.hideMenu = true;
}
//Update mchelper
CommonServices.saveMchelper(mchelper);
};
});
myControllerModule.run(function ($rootScope, $state, $location, $http, mchelper, $translate, editableOptions, CommonServices, $window) {
//Load mchelper from cookies
CommonServices.loadMchelper();
// keep user logged in after page refresh
if(!mchelper){
CommonServices.saveMchelper(CommonServices.loadMchelper());
};
if(mchelper.cfg){
$translate.use(mchelper.cfg.languageId);
}
if (mchelper.internal.currentUser) {
$http.defaults.headers.common['Authorization'] = 'Basic ' + mchelper.internal.currentUser.authdata; // jshint ignore:line
}
// initialise google analytics and send browser details, if enabled
if(mchelper.cfg.googleAnalyticsEnabled){
$window.ga('create', mchelper.cfg.googleAnalyticsTid, 'auto');
$window.ga('send', 'pageview', "/");
}
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
//alert(angular.toJson(toState));
if(toState.name.indexOf('login') === 0){
angular.element( document.querySelector( '#rootId' ) ).addClass( "login-pf" );
angular.element( document.querySelector( '#rootView' ) ).removeClass( "container-fluid top-buffer-m top-buffer-nm" );
}else{
angular.element( document.querySelector( '#rootId' ) ).removeClass( "login-pf" );
if(!mchelper.userSettings.hideMenu){
angular.element( document.querySelector( '#rootView' ) ).addClass( "container-fluid top-buffer-m");
}else{
angular.element( document.querySelector( '#rootView' ) ).addClass( "container-fluid top-buffer-nm");
}
}
var requireLogin = toState.data.requireLogin;
// redirect to login page if not logged in
if (requireLogin && !mchelper.internal.currentUser) {
event.preventDefault();
//return $state.go('login');
return $state.go('login', {'toState': toState.name, 'toParams': toParams});
}
});
//update xeditable theme
editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'
});
myControllerModule.controller('LoginController',
function ($state, $scope, $rootScope, AuthenticationService, ReadFileFactory, alertService, StatusFactory, TypesFactory, SettingsFactory, displayRestError, CommonServices, mchelper, $translate, $filter) {
// load login page settings
$scope.loginSettings = {};
// reset login status
AuthenticationService.ClearCredentials();
// remove mchelper cookies
//CommonServices.clearCookies();
//Update login page details
ReadFileFactory.getConfigFile(function(configFile){
$scope.loginSettings = configFile;
//Update language
$translate.use($scope.loginSettings.languageId);
});
$scope.login = function () {
$scope.dataLoading = true;
AuthenticationService.Login($scope.username, $scope.password, function(authResponse) {
if(authResponse.success) {
AuthenticationService.SetCredentials($scope.username, $scope.password);
mchelper.user = authResponse.user;//Update user details
StatusFactory.getConfig(function(response) {
mchelper.cfg = response;//Update config
//Update language
$translate.use(mchelper.cfg.languageId);
TypesFactory.getLanguages(function(langResponse){
mchelper.languages = langResponse;
SettingsFactory.getUserSettings(function(userNativeSettings){
mchelper.userSettings = userNativeSettings;
mchelper.userSettings.hideMenu = false;
//Store all the configurations locally
CommonServices.saveMchelper(mchelper);
});
});
},function(error){
displayRestError.display(error);
});
//$state.go('dashboard');
$state.go($state.params.toState, $state.params.toParams);
} else {
if(authResponse.message){
alertService.danger(authResponse.message);
}else{
alertService.danger($filter('translate')('INVALID_USERNAME_OR_PASSWORD'));
}
$scope.dataLoading = false;
}
});
};
});
myControllerModule.filter('millSecondsToTimeString', function() {
return function(millseconds) {
var seconds = Math.floor(millseconds / 1000);
var tmpSeconds = seconds % 60;
var days = Math.floor(seconds / 86400);
var hours = Math.floor((seconds % 86400) / 3600);
var minutes = Math.floor(((seconds % 86400) % 3600) / 60);
var timeString = '';
if(days > 0){
timeString += (days > 1) ? (days + " days ") : (days + " day ");
}
if(hours >0){
timeString += (hours > 1) ? (hours + " hours ") : (hours + " hour ");
}
if(minutes > 0){
timeString += (minutes >1) ? (minutes + " minutes ") : (minutes + " minute ");
}
if(tmpSeconds >= 0){
timeString += (tmpSeconds >1) ? (tmpSeconds + " seconds ") : (tmpSeconds + " second ");
}
return timeString;
}
});
myControllerModule.filter('byteToMBsizeConvertor', function() {
return function(sizeInByte) {
if(sizeInByte < 0){
return "n/a";
}
return Math.floor(sizeInByte /(1024 * 1024)) + " MB";
}
});
myControllerModule.filter('byteToFriendlyConvertor', function() {
return function(sizeInByte) {
if(sizeInByte < 0){
return "n/a";
}else if((sizeInByte /(1024 * 1024)) > 1024){
return (sizeInByte /(1024 * 1024 * 1024)).toFixed(2) + " GB";
}else if((sizeInByte /(1024)) > 1024){
return (sizeInByte /(1024 * 1024)).toFixed(2) + " MB";
}else if(sizeInByte > 1024){
return (sizeInByte /1024).toFixed(2) + " KB";
}
return sizeInByte + " Bytes";
}
});
myControllerModule.filter('mcResourceRepresentation', function() {
return function(text){
if(text === undefined){
return undefined;
}
return text.replace(/>>>/g, '<i class="fa fa-forward"></i>')
.replace(/>>/g, '<i class="fa fa-chevron-right"></i>')
.replace(/\[RG\]:/g, '<i class="pficon pficon-replicator fa-lg mc-margin-icon"></i> ')
.replace(/\[G\]:/g, '<i class="fa fa-plug"></i> ')
.replace(/\[N\]:/g, '<i class="fa fa-sitemap"></i> ')
.replace(/\[S\]:/g, '<i class="fa fa-eye"></i> ')
.replace(/\[SV\]:/g, '')
.replace(/\[T\]:/g, '<i class="fa fa-clock-o"></i> ')
.replace(/\[RD\]:/g, '<i class="fa fa-cogs"></i> ');
}
});
myControllerModule.filter('mcHtml', function($sce) {
return function(htmlText) {
return $sce.trustAsHtml(htmlText);
//return htmlText
};
});
myControllerModule.filter('slice', function() {
return function(arr, start, end) {
return (arr || []).slice(start, end);
};
});
/**
* i18n Language support
* */
myControllerModule.config(function($translateProvider) {
// Enable escaping of HTML
//$translateProvider.useSanitizeValueStrategy('sanitize');
$translateProvider.useSanitizeValueStrategy(null);
$translateProvider.useStaticFilesLoader({
prefix: 'languages/mc_locale_gui-',
suffix: '.json'
});
$translateProvider.preferredLanguage('en_us');
});
//Dashboard custom layouts
myControllerModule.config(function(dashboardProvider){
dashboardProvider
.structure('4-4-4/12', {
rows: [{
columns: [{
styleClass: 'col-md-4'
}, {
styleClass: 'col-md-4'
}, {
styleClass: 'col-md-4'
}]
}, {
columns: [{
styleClass: 'col-md-12'
}]
}]
}).structure('6-6/12', {
rows: [{
columns: [{
styleClass: 'col-md-6'
}, {
styleClass: 'col-md-6'
}]
}, {
columns: [{
styleClass: 'col-md-12'
}]
}]
});
});
//Items Delete Modal
myControllerModule.controller('ControllerDeleteModal', function ($scope, $uibModalInstance, $sce, $filter) {
$scope.header = $filter('translate')('DELETE_ITEMS');
$scope.deleteMsg = $filter('translate')('DELETE_MESSAGE');
$scope.remove = function() {
$uibModalInstance.close();
};
$scope.cancel = function () { $uibModalInstance.dismiss('cancel'); }
});
/*
//Global exception handler
myControllerModule.factory('$exceptionHandler', function () {
return function errorCatcherHandler(exception, cause) {
console.log('Exception cause:'+cause+', Exception:'+angular.toJson(exception));
//throw exception;
};
});
*/