From 4015e101e6ac64553a3c9608b233adb1fc325ffb Mon Sep 17 00:00:00 2001 From: "13621160019@163.com" <13621160019@163.com> Date: Tue, 20 Jul 2021 18:29:35 +0800 Subject: [PATCH] fixed issue of gitignore in Admin UI --- admin/.gitignore | 1 - .../costcenter/costfile.controller.js | 182 +++++++ .../settings/meter/offlinemeter.controller.js | 302 +++++++++++ .../meter/offlinemeterfile.controller.js | 187 +++++++ .../settings/meter/virtualmeter.controller.js | 494 ++++++++++++++++++ .../settings/costcenter/costfile.service.js | 42 ++ .../settings/meter/offlinemeter.service.js | 59 +++ .../meter/offlinemeterfile.service.js | 68 +++ .../settings/meter/virtualmeter.service.js | 50 ++ 9 files changed, 1384 insertions(+), 1 deletion(-) create mode 100644 admin/app/controllers/settings/costcenter/costfile.controller.js create mode 100644 admin/app/controllers/settings/meter/offlinemeter.controller.js create mode 100644 admin/app/controllers/settings/meter/offlinemeterfile.controller.js create mode 100644 admin/app/controllers/settings/meter/virtualmeter.controller.js create mode 100644 admin/app/services/settings/costcenter/costfile.service.js create mode 100644 admin/app/services/settings/meter/offlinemeter.service.js create mode 100644 admin/app/services/settings/meter/offlinemeterfile.service.js create mode 100644 admin/app/services/settings/meter/virtualmeter.service.js diff --git a/admin/.gitignore b/admin/.gitignore index 1a2a2212..728fc408 100644 --- a/admin/.gitignore +++ b/admin/.gitignore @@ -6,7 +6,6 @@ ## Angular ## # compiled output tmp/ -app/**/*.js app/**/*.js.map # dependencies diff --git a/admin/app/controllers/settings/costcenter/costfile.controller.js b/admin/app/controllers/settings/costcenter/costfile.controller.js new file mode 100644 index 00000000..d475dde0 --- /dev/null +++ b/admin/app/controllers/settings/costcenter/costfile.controller.js @@ -0,0 +1,182 @@ +'use strict'; + +app.controller('CostFileController', function ( + $scope, + $window, + $common, + $translate, + $uibModal, + $interval, + CostFileService, + toaster, + SweetAlert) { + + $scope.cur_user = JSON.parse($window.localStorage.getItem("currentUser")); + + $scope.getAllCostFiles = function () { + CostFileService.getAllCostFiles(function (error, data) { + if (!error) { + $scope.costfiles = data; + } else { + $scope.costfiles = []; + } + }); + }; + + $scope.dzOptions = { + url: getAPI() + 'costfiles', + acceptedFiles: '.xlsx', + dictDefaultMessage: 'Click(or Drop) to add files', + maxFilesize: '100', + headers: { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token } + }; + + $scope.dzCallbacks = { + 'addedfile': function (file) { + console.info('File added.', file); + }, + 'success': function (file, xhr) { + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_add_body.format(file.name); + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + $scope.getAllCostFiles(); + }, + 'error': function (file, xhr) { + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_add_body.format(file.name); + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }; + + $scope.restoreCostFile = function (costfile) { + CostFileService.restoreCostFile(costfile, function (error, data) { + if (!error) { + toaster.pop({ + type: $translate.instant('TOASTER.SUCCESS'), + title: $translate.instant('TOASTER.SUCCESS_TITLE'), + body: $translate.instant('SETTING.RESTORE_SUCCESS'), + showCloseButton: true, + }); + $scope.getAllCostFiles(); + } else { + toaster.pop({ + type: $translate.instant('TOASTER.ERROR'), + title: $translate.instant(error.title), + body: $translate.instant(error.description), + showCloseButton: true, + }); + } + }); + }; + + $scope.deleteCostFile = function (costfile) { + SweetAlert.swal({ + title: $translate.instant($common.sweet.title), + text: $translate.instant($common.sweet.text), + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: $translate.instant($common.sweet.confirmButtonText), + cancelButtonText: $translate.instant($common.sweet.cancelButtonText), + closeOnConfirm: true, + closeOnCancel: true + }, + function (isConfirm) { + if (isConfirm) { + CostFileService.deleteCostFile(costfile, function (error, status) { + if (angular.isDefined(status) && status == 204) { + var templateName = "SETTING.COST_FILE"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + + + $scope.getAllCostFiles(); + } else if (angular.isDefined(status) && status == 400) { + var popType = 'TOASTER.ERROR'; + var popTitle = error.title; + var popBody = error.description; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody); + + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } else { + var templateName = "TOASTER.COST_FILE"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + } + }); + }; + + $scope.getAllCostFiles(); + $interval.cancel(); + + $scope.$on('$destroy', function () { + // Make sure that the interval is destroyed too + if (angular.isDefined($scope.refeshfiles)) { + $interval.cancel($scope.refeshfiles); + $scope.refeshfiles = undefined; + } + }); + $scope.refeshfiles = $interval($scope.getAllCostFiles, 1000 * 8); + +}); \ No newline at end of file diff --git a/admin/app/controllers/settings/meter/offlinemeter.controller.js b/admin/app/controllers/settings/meter/offlinemeter.controller.js new file mode 100644 index 00000000..18c1fb50 --- /dev/null +++ b/admin/app/controllers/settings/meter/offlinemeter.controller.js @@ -0,0 +1,302 @@ +'use strict'; + +app.controller('OfflineMeterController', function($scope, $common, $translate, $uibModal, OfflineMeterService, CategoryService, EnergyItemService, CostCenterService, toaster, SweetAlert) { + $scope.getAllCostCenters = function() { + CostCenterService.getAllCostCenters(function(error, data) { + if (!error) { + $scope.costcenters = data; + } else { + $scope.costcenters = []; + } + }); + }; + + $scope.getAllCategories = function() { + CategoryService.getAllCategories(function(error, data) { + if (!error) { + $scope.categories = data; + } else { + $scope.categories = []; + } + }); + }; + + $scope.getAllEnergyItems = function() { + EnergyItemService.getAllEnergyItems(function(error, data) { + if (!error) { + $scope.energyitems = data; + } else { + $scope.energyitems = []; + } + }); + }; + + $scope.getAllOfflineMeters = function() { + OfflineMeterService.getAllOfflineMeters(function(error, data) { + if (!error) { + $scope.offlinemeters = data; + } else { + $scope.offlinemeters = []; + } + }); + + }; + + $scope.addOfflineMeter = function() { + var modalInstance = $uibModal.open({ + templateUrl: 'views/settings/meter/offlinemeter.model.html', + controller: 'ModalAddOfflineMeterCtrl', + windowClass: "animated fadeIn", + resolve: { + params: function() { + return { + offlinemeters: angular.copy($scope.offlinemeters), + categories: angular.copy($scope.categories), + energyitems: angular.copy($scope.energyitems), + costcenters: angular.copy($scope.costcenters) + }; + } + } + }); + modalInstance.result.then(function(offlinemeter) { + offlinemeter.energy_category_id = offlinemeter.energy_category.id; + if(angular.isDefined(offlinemeter.energy_item)) { + offlinemeter.energy_item_id = offlinemeter.energy_item.id; + } else { + offlinemeter.energy_item_id = undefined; + } + offlinemeter.cost_center_id = offlinemeter.cost_center.id; + OfflineMeterService.addOfflineMeter(offlinemeter, function(error, status) { + if (angular.isDefined(status) && status == 201) { + var templateName = "SETTING.OFFLINE_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_add_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + + $scope.getAllOfflineMeters(); + $scope.$emit('handleEmitOfflineMeterChanged'); + } else { + var templateName = "SETTING.OFFLINE_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_add_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + }, function() { + + }); + }; + + $scope.editOfflineMeter = function(offlinemeter) { + var modalInstance = $uibModal.open({ + windowClass: "animated fadeIn", + templateUrl: 'views/settings/meter/offlinemeter.model.html', + controller: 'ModalEditOfflineMeterCtrl', + resolve: { + params: function() { + return { + offlinemeter: angular.copy(offlinemeter), + offlinemeters: angular.copy($scope.offlinemeters), + categories: angular.copy($scope.categories), + energyitems: angular.copy($scope.energyitems), + costcenters: angular.copy($scope.costcenters) + }; + } + } + }); + + modalInstance.result.then(function(modifiedOfflineMeter) { + modifiedOfflineMeter.energy_category_id = modifiedOfflineMeter.energy_category.id; + if (modifiedOfflineMeter.energy_item != null && modifiedOfflineMeter.energy_item.id != null ) { + modifiedOfflineMeter.energy_item_id = modifiedOfflineMeter.energy_item.id; + } else { + modifiedOfflineMeter.energy_item_id = undefined; + } + modifiedOfflineMeter.cost_center_id = modifiedOfflineMeter.cost_center.id; + OfflineMeterService.editOfflineMeter(modifiedOfflineMeter, function(error, status) { + if (angular.isDefined(status) && status == 200) { + var templateName = "SETTING.OFFLINE_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_update_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + $scope.getAllOfflineMeters(); + $scope.$emit('handleEmitOfflineMeterChanged'); + } else { + var templateName = "SETTING.OFFLINE_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_update_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + }, function() { + //do nothing; + }); + }; + + $scope.deleteOfflineMeter = function(offlinemeter) { + SweetAlert.swal({ + title: $translate.instant($common.sweet.title), + text: $translate.instant($common.sweet.text), + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: $translate.instant($common.sweet.confirmButtonText), + cancelButtonText: $translate.instant($common.sweet.cancelButtonText), + closeOnConfirm: true, + closeOnCancel: true + }, + function(isConfirm) { + if (isConfirm) { + OfflineMeterService.deleteOfflineMeter(offlinemeter, function(error, status) { + if (angular.isDefined(status) && status == 204) { + var templateName = "SETTING.OFFLINE_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + $scope.getAllOfflineMeters(); + $scope.$emit('handleEmitOfflineMeterChanged'); + } else if (angular.isDefined(status) && status == 400) { + var popType = 'TOASTER.ERROR'; + var popTitle = error.title; + var popBody = error.description; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody); + + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } else { + var templateName = "SETTING.OFFLINE_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + } + }); + }; + + $scope.getAllOfflineMeters(); + $scope.getAllCategories(); + $scope.getAllEnergyItems(); + $scope.getAllCostCenters(); +}); + +app.controller('ModalAddOfflineMeterCtrl', function($scope, $uibModalInstance, params) { + + $scope.operation = "SETTING.ADD_OFFLINE_METER"; + $scope.categories = params.categories; + $scope.energyitems = params.energyitems; + $scope.costcenters = params.costcenters; + $scope.offlinemeter = { + is_counted: false + }; + $scope.ok = function() { + $uibModalInstance.close($scope.offlinemeter); + }; + + $scope.cancel = function() { + $uibModalInstance.dismiss('cancel'); + }; +}); + +app.controller('ModalEditOfflineMeterCtrl', function($scope, $uibModalInstance, params) { + $scope.operation = "SETTING.EDIT_OFFLINE_METER"; + $scope.offlinemeter = params.offlinemeter; + $scope.offlinemeters = params.offlinemeters; + $scope.categories = params.categories; + $scope.energyitems = params.energyitems; + $scope.costcenters = params.costcenters; + + $scope.ok = function() { + $uibModalInstance.close($scope.offlinemeter); + }; + + $scope.cancel = function() { + $uibModalInstance.dismiss('cancel'); + }; +}); diff --git a/admin/app/controllers/settings/meter/offlinemeterfile.controller.js b/admin/app/controllers/settings/meter/offlinemeterfile.controller.js new file mode 100644 index 00000000..3bd56270 --- /dev/null +++ b/admin/app/controllers/settings/meter/offlinemeterfile.controller.js @@ -0,0 +1,187 @@ +'use strict'; + +app.controller('OfflineMeterFileController', function( + $scope, + $window, + $common, + $translate, + $uibModal, + $interval, + OfflineMeterFileService, + toaster, + SweetAlert) { + + $scope.cur_user = JSON.parse($window.localStorage.getItem("currentUser")); + + $scope.getAllOfflineMeterFiles = function() { + OfflineMeterFileService.getAllOfflineMeterFiles(function(error, data) { + if (!error) { + $scope.offlinemeterfiles = data; + } else { + $scope.offlinemeterfiles = []; + } + }); + + }; + + $scope.dzOptions = { + url: getAPI() + 'offlinemeterfiles', + acceptedFiles: '.xlsx', + dictDefaultMessage: 'Click(or Drop) to add files', + maxFilesize: '100', + headers: { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token } + }; + + $scope.dzCallbacks = { + 'addedfile': function(file) { + console.info('File added.', file); + }, + 'success': function(file, xhr) { + //console.log('File success to upload from dropzone', file, xhr); + var templateName = file.name; + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_add_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + $scope.getAllOfflineMeterFiles(); + }, + 'error': function (file, xhr) { + var templateName = file.name; + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_add_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }; + + $scope.restoreOfflineMeterFile = function (offlinemeterfile) { + OfflineMeterFileService.restoreOfflineMeterFile(offlinemeterfile, function (error, data) { + if (!error) { + toaster.pop({ + type: $translate.instant('TOASTER.SUCCESS'), + title: $translate.instant('TOASTER.SUCCESS_TITLE'), + body: $translate.instant('SETTING.RESTORE_SUCCESS'), + showCloseButton: true, + }); + $scope.getAllOfflineMeterFiles(); + } else { + toaster.pop({ + type: $translate.instant('TOASTER.ERROR'), + title: $translate.instant(error.title), + body: $translate.instant(error.description), + showCloseButton: true, + }); + } + }); + }; + + $scope.deleteOfflineMeterFile = function(offlinemeterfile) { + SweetAlert.swal({ + title: $translate.instant($common.sweet.title), + text: $translate.instant($common.sweet.text), + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: $translate.instant($common.sweet.confirmButtonText), + cancelButtonText: $translate.instant($common.sweet.cancelButtonText), + closeOnConfirm: true, + closeOnCancel: true + }, + function(isConfirm) { + if (isConfirm) { + OfflineMeterFileService.deleteOfflineMeterFile(offlinemeterfile, function(error, status) { + if (angular.isDefined(status) && status == 204) { + var templateName = "SETTING.OFFLINE_METER_FILE"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + + $scope.getAllOfflineMeterFiles(); + } else if (angular.isDefined(status) && status == 400) { + var popType = 'TOASTER.ERROR'; + var popTitle = error.title; + var popBody = error.description; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody); + + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } else { + var templateName = "SETTING.OFFLINE_METER_FILE"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + } + }); + }; + + $scope.getAllOfflineMeterFiles(); + $interval.cancel(); + + $scope.$on('$destroy', function() { + // Make sure that the interval is destroyed too + if (angular.isDefined($scope.refeshfiles)) { + $interval.cancel($scope.refeshfiles); + $scope.refeshfiles = undefined; + } + }); + $scope.refeshfiles=$interval($scope.getAllOfflineMeterFiles,1000*8); + +}); diff --git a/admin/app/controllers/settings/meter/virtualmeter.controller.js b/admin/app/controllers/settings/meter/virtualmeter.controller.js new file mode 100644 index 00000000..9d2cea56 --- /dev/null +++ b/admin/app/controllers/settings/meter/virtualmeter.controller.js @@ -0,0 +1,494 @@ +'use strict'; + +app.controller('VirtualMeterController', function($scope, $common, $uibModal, $translate, MeterService, VirtualMeterService, OfflineMeterService, CategoryService, EnergyItemService, CostCenterService, toaster, SweetAlert) { + $scope.getAllCostCenters = function() { + CostCenterService.getAllCostCenters(function(error, data) { + if (!error) { + $scope.costcenters = data; + } else { + $scope.costcenters = []; + } + }); + }; + + $scope.getAllCategories = function() { + CategoryService.getAllCategories(function(error, data) { + if (!error) { + $scope.categories = data; + } else { + $scope.categories = []; + } + }); + }; + +$scope.getAllEnergyItems = function() { + EnergyItemService.getAllEnergyItems(function(error, data) { + if (!error) { + $scope.energyitems = data; + } else { + $scope.energyitems = []; + } + }); +}; + + $scope.getAllVirtualMeters = function() { + VirtualMeterService.getAllVirtualMeters(function(error, data) { + if (!error) { + $scope.virtualmeters = data; + } else { + $scope.virtualmeters = []; + } + }); + + }; + $scope.getAllMeters = function() { + MeterService.getAllMeters(function(error, data) { + if (!error) { + $scope.meters = data; + } else { + $scope.meters = []; + } + }); + }; + + $scope.getAllOfflineMeters = function() { + OfflineMeterService.getAllOfflineMeters(function(error, data) { + if (!error) { + $scope.offlinemeters = data; + } else { + $scope.offlinemeters = []; + } + }); + }; + + + + $scope.addVirtualMeter = function() { + var modalInstance = $uibModal.open({ + templateUrl: 'views/settings/meter/virtualmeter.model.html', + controller: 'ModalAddVirtualMeterCtrl', + windowClass: 'animated fadeIn', + size: 'lg', + resolve: { + params: function() { + return { + virtualmeters: angular.copy($scope.virtualmeters), + meters: angular.copy($scope.meters), + offlinemeters: angular.copy($scope.offlinemeters), + categories: angular.copy($scope.categories), + energyitems: angular.copy($scope.energyitems), + costcenters: angular.copy($scope.costcenters) + }; + } + } + }); + modalInstance.result.then(function(virtualmeter) { + virtualmeter.energy_category_id = virtualmeter.energy_category.id; + if(angular.isDefined(virtualmeter.energy_item)) { + virtualmeter.energy_item_id = virtualmeter.energy_item.id; + } else { + virtualmeter.energy_item_id = undefined; + } + virtualmeter.cost_center_id = virtualmeter.cost_center.id; + VirtualMeterService.addVirtualMeter(virtualmeter, function(error, status) { + if (angular.isDefined(status) && status == 201) { + var templateName = "SETTING.VIRTUAL_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_add_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + $scope.getAllVirtualMeters(); + $scope.$emit('handleEmitVirtualMeterChanged'); + } else { + var templateName = "SETTING.VIRTUAL_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_add_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + }, function() { + + }); + }; + + $scope.editVirtualMeter = function(virtualmeter) { + var modalInstance = $uibModal.open({ + windowClass: "animated fadeIn", + templateUrl: 'views/settings/meter/virtualmeter.model.html', + controller: 'ModalEditVirtualMeterCtrl', + size: 'lg', + resolve: { + params: function() { + return { + virtualmeter: angular.copy(virtualmeter), + virtualmeters: angular.copy($scope.virtualmeters), + meters: angular.copy($scope.meters), + offlinemeters: angular.copy($scope.offlinemeters), + categories: angular.copy($scope.categories), + energyitems: angular.copy($scope.energyitems), + costcenters: angular.copy($scope.costcenters) + }; + } + } + }); + + modalInstance.result.then(function(modifiedVirtualMeter) { + modifiedVirtualMeter.energy_category_id = modifiedVirtualMeter.energy_category.id; + if (modifiedVirtualMeter.energy_item != null && modifiedVirtualMeter.energy_item.id != null ) { + modifiedVirtualMeter.energy_item_id = modifiedVirtualMeter.energy_item.id; + } else { + modifiedVirtualMeter.energy_item_id = undefined; + } + modifiedVirtualMeter.cost_center_id = modifiedVirtualMeter.cost_center.id; + VirtualMeterService.editVirtualMeter(modifiedVirtualMeter, function(error, status) { + if (angular.isDefined(status) && status == 200) { + var templateName = "SETTING.VIRTUAL_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_update_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + $scope.getAllVirtualMeters(); + $scope.$emit('handleEmitVirtualMeterChanged'); + } else { + var templateName = "SETTING.VIRTUAL_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_update_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody,{template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + }, function() { + //do nothing; + }); + }; + + $scope.deleteVirtualMeter = function(virtualmeter) { + SweetAlert.swal({ + title: $translate.instant($common.sweet.title), + text: $translate.instant($common.sweet.text), + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: $translate.instant($common.sweet.confirmButtonText), + cancelButtonText: $translate.instant($common.sweet.cancelButtonText), + closeOnConfirm: true, + closeOnCancel: true + }, + function(isConfirm) { + if (isConfirm) { + VirtualMeterService.deleteVirtualMeter(virtualmeter, function(error, status) { + if (angular.isDefined(status) && status == 204) { + var templateName = "SETTING.VIRTUAL_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.SUCCESS'; + var popTitle = $common.toaster.success_title; + var popBody = $common.toaster.success_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + $scope.getAllVirtualMeters(); + $scope.$emit('handleEmitVirtualMeterChanged'); + } else if (angular.isDefined(status) && status == 400) { + var popType = 'TOASTER.ERROR'; + var popTitle = error.title; + var popBody = error.description; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } else { + var templateName = "SETTING.VIRTUAL_METER"; + templateName = $translate.instant(templateName); + + var popType = 'TOASTER.ERROR'; + var popTitle = $common.toaster.error_title; + var popBody = $common.toaster.error_delete_body; + + popType = $translate.instant(popType); + popTitle = $translate.instant(popTitle); + popBody = $translate.instant(popBody, {template: templateName}); + + toaster.pop({ + type: popType, + title: popTitle, + body: popBody, + showCloseButton: true, + }); + } + }); + } + }); + }; + + $scope.getAllMeters(); + $scope.getAllVirtualMeters(); + $scope.getAllOfflineMeters(); + $scope.getAllCategories(); + $scope.getAllEnergyItems(); + $scope.getAllCostCenters(); + + $scope.$on('handleBroadcastMeterChanged', function(event) { + $scope.getAllMeters(); + }); + + $scope.$on('handleBroadcastOfflineMeterChanged', function(event) { + $scope.getAllOfflineMeters(); + }); + + $scope.$on('handleBroadcastVirtualMeterChanged', function(event) { + $scope.getAllVirtualMeters(); + }); + +}); + +app.controller('ModalAddVirtualMeterCtrl', function($timeout, $scope, + $uibModalInstance, + params) { + + $scope.operation = "SETTING.ADD_VIRTUAL_METER"; + $scope.categories = params.categories; + $scope.energyitems = params.energyitems; + $scope.costcenters = params.costcenters; + $scope.meters = params.meters; + $scope.virtualmeters = params.virtualmeters; + $scope.offlinemeters = params.offlinemeters; + $scope.currentMeterType = {}; + $scope.currentMeter = {}; + $scope.virtualmeter = { + is_counted: false, + expression: { + variables: [] + } + }; + $scope.metertypes = [{ + sid: 'meter', + name: 'SETTING.METER' + }, { + sid: 'virtual_meter', + name: 'SETTING.VIRTUAL_METER' + }, { + sid: 'offline_meter', + name: 'SETTING.OFFLINE_METER' + }]; + $scope.metertypemap = { + meter: 'SETTING.METER', + virtual_meter: 'SETTING.VIRTUAL_METER', + offline_meter: 'SETTING.OFFLINE_METER' + }; + $scope.counter = 1; + $scope.ok = function() { + $uibModalInstance.close($scope.virtualmeter); + }; + + $scope.cancel = function() { + $uibModalInstance.dismiss('cancel'); + }; + + $scope.add = function() { + var variable = { + name: 'x' + ($scope.counter), + meter_type: $scope.currentMeterType.selected.sid, + meter_id: $scope.currentMeter.selected.id, + //metertype:$scope.currentMeterType.selected.name, + meter_name: $scope.currentMeter.selected.name + } + if ($scope.virtualmeter.expression.variables.length > 0) { + $scope.virtualmeter.expression.variables.unshift(variable); + } else { + $scope.virtualmeter.expression.variables.push(variable); + } + + $timeout(function() { + angular.element('#variablesTable').trigger('footable_redraw'); + }, 10); + + $scope.counter++; + $scope.currentMeter.selected=undefined; + + }; + $scope.delete = function(key) { + $scope.virtualmeter.expression.variables.splice(key, 1); + $timeout(function() { + angular.element('#variablesTable').trigger('footable_redraw'); + }, 10); + + }; + + $scope.changeMeterType = function() { + switch ($scope.currentMeterType.selected.sid) { + case 'meter': + $scope.currentmeters = $scope.meters; + break; + case 'virtual_meter': + $scope.currentmeters = $scope.virtualmeters; + break; + case 'offline_meter': + $scope.currentmeters = $scope.offlinemeters; + break; + } + }; + + + +}); + +app.controller('ModalEditVirtualMeterCtrl', function($timeout, $scope, $uibModalInstance, params) { + $scope.operation = "SETTING.EDIT_VIRTUAL_METER"; + $scope.virtualmeter = params.virtualmeter; + $scope.virtualmeters = params.virtualmeters; + $scope.meters = params.meters; + $scope.offlinemeters = params.offlinemeters; + $scope.categories = params.categories; + $scope.energyitems = params.energyitems; + $scope.costcenters = params.costcenters; + $scope.currentMeterType = {}; + $scope.currentMeter = {}; + $scope.metertypes = [{ + sid: 'meter', + name: 'SETTING.METER' + }, { + sid: 'virtual_meter', + name: 'SETTING.VIRTUAL_METER' + }, { + sid: 'offline_meter', + name: 'SETTING.OFFLINE_METER' + }]; + $scope.metertypemap = { + meter: 'SETTING.METER', + virtual_meter: 'SETTING.VIRTUAL_METER', + offline_meter: 'SETTING.OFFLINE_METER' + }; + $scope.counter = 1; + if (angular.isUndefined($scope.virtualmeter.expression.variables)) { + $scope.virtualmeter.expression.variables = []; + } else { + if ($scope.virtualmeter.expression.variables.length > 0) { + var arrIndex = []; + angular.forEach($scope.virtualmeter.expression.variables, function(item, index) { + arrIndex.push(parseInt(item.name.substr(1))); + }); + var maxval = Math.max.apply(null, arrIndex); + $scope.counter = maxval + 1; + } + } + $scope.ok = function() { + $uibModalInstance.close($scope.virtualmeter); + }; + + $scope.cancel = function() { + $uibModalInstance.dismiss('cancel'); + }; + + $timeout(function() { + angular.element('#variablesTable').trigger('footable_redraw'); + }, 100); + + $scope.add = function() { + var variable = { + name: 'x' + ($scope.counter), + meter_type: $scope.currentMeterType.selected.sid, + meter_id: $scope.currentMeter.selected.id, + //metertype:$scope.currentMeterType.selected.name, + meter_name: $scope.currentMeter.selected.name + } + if ($scope.virtualmeter.expression.variables.length > 0) { + $scope.virtualmeter.expression.variables.unshift(variable); + } else { + $scope.virtualmeter.expression.variables.push(variable); + } + + $timeout(function() { + angular.element('#variablesTable').trigger('footable_redraw'); + }, 10); + $scope.counter++; + $scope.currentMeter.selected=undefined; + + }; + $scope.delete = function(key) { + $scope.virtualmeter.expression.variables.splice(key, 1); + $timeout(function() { + angular.element('#variablesTable').trigger('footable_redraw'); + }, 10); + + }; + + $scope.changeMeterType = function() { + switch ($scope.currentMeterType.selected.sid) { + case 'meter': + $scope.currentmeters = $scope.meters; + break; + case 'virtual_meter': + $scope.currentmeters = $scope.virtualmeters; + break; + case 'offline_meter': + $scope.currentmeters = $scope.offlinemeters; + break; + } + }; + +}); diff --git a/admin/app/services/settings/costcenter/costfile.service.js b/admin/app/services/settings/costcenter/costfile.service.js new file mode 100644 index 00000000..adac71ec --- /dev/null +++ b/admin/app/services/settings/costcenter/costfile.service.js @@ -0,0 +1,42 @@ +'use strict'; +app.factory('CostFileService', function($http) { + return { + getAllCostFiles:function(callback){ + $http.get(getAPI()+'costfiles') + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + + addCostFile: function(costfile, callback) { + $http.post(getAPI()+'costfiles',{data:costfile}) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + restoreCostFile: function (costfile, callback) { + $http.get(getAPI() + 'costfiles/' + costfile.id + '/restore') + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e, status) { + callback(e, status); + }); + }, + deleteCostFile: function(costfile, callback) { + $http.delete(getAPI()+'costfiles/'+costfile.id) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + } + }; +}); \ No newline at end of file diff --git a/admin/app/services/settings/meter/offlinemeter.service.js b/admin/app/services/settings/meter/offlinemeter.service.js new file mode 100644 index 00000000..5f45bd1f --- /dev/null +++ b/admin/app/services/settings/meter/offlinemeter.service.js @@ -0,0 +1,59 @@ +'use strict'; +app.factory('OfflineMeterService', function($http) { + return { + getAllOfflineMeters:function(callback){ + $http.get(getAPI()+'offlinemeters') + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + searchOfflineMeters: function(query, callback) { + $http.get(getAPI()+'offlinemeters', { params: { q: query } }) + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + addOfflineMeter: function(offlinemeter, callback) { + $http.post(getAPI()+'offlinemeters',{data:offlinemeter}) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + editdOfflineMeter: function(offlinemeter, callback) { + $http.put(getAPI()+'offlinemeters/'+offlinemeter.id,{data:offlinemeter}) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + deleteOfflineMeter: function(offlinemeter, callback) { + $http.delete(getAPI()+'offlinemeters/'+offlinemeter.id) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + getOfflineMeter: function(id, callback) { + $http.get(getAPI()+'offlinemeters/'+id) + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + } + }; +}); \ No newline at end of file diff --git a/admin/app/services/settings/meter/offlinemeterfile.service.js b/admin/app/services/settings/meter/offlinemeterfile.service.js new file mode 100644 index 00000000..94e4b2d7 --- /dev/null +++ b/admin/app/services/settings/meter/offlinemeterfile.service.js @@ -0,0 +1,68 @@ +'use strict'; +app.factory('OfflineMeterFileService', function($http) { + return { + getAllOfflineMeterFiles:function(callback){ + $http.get(getAPI()+'offlinemeterfiles') + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + searchOfflineMeterFiles: function(query, callback) { + $http.get(getAPI()+'offlinemeterfiles', { params: { q: query } }) + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + addOfflineMeterFile: function(offlinemeterfile, callback) { + $http.post(getAPI()+'offlinemeterfiles',{data:offlinemeterfile}) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + editOfflineMeterFile: function(offlinemeterfile, callback) { + $http.put(getAPI()+'offlinemeterfiles/'+offlinemeterfile.id,{data:offlinemeterfile}) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + restoreOfflineMeterFile: function (offlinemeterfile, callback) { + $http.get(getAPI() + 'offlinemeterfiles/' + offlinemeterfile.id + '/restore') + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e, status) { + callback(e, status); + }); + }, + deleteOfflineMeterFile: function(offlinemeterfile, callback) { + $http.delete(getAPI()+'offlinemeterfiles/'+offlinemeterfile.id) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + getOfflineMeterFile: function(id, callback) { + $http.get(getAPI()+'offlinemeterfiles/'+id) + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + } + }; +}); \ No newline at end of file diff --git a/admin/app/services/settings/meter/virtualmeter.service.js b/admin/app/services/settings/meter/virtualmeter.service.js new file mode 100644 index 00000000..03a853c3 --- /dev/null +++ b/admin/app/services/settings/meter/virtualmeter.service.js @@ -0,0 +1,50 @@ +'use strict'; +app.factory('VirtualMeterService', function($http) { + return { + getAllVirtualMeters:function(callback){ + $http.get(getAPI()+'virtualmeters') + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + searchVirtualMeters: function(query, callback) { + $http.get(getAPI()+'virtualmeters', { params: { q: query } }) + .success(function (response, status, headers, config) { + callback(null, response); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + addVirtualMeter: function(virtualmeter, callback) { + $http.post(getAPI()+'virtualmeters',{data:virtualmeter}) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + editVirtualMeter: function(virtualmeter, callback) { + $http.put(getAPI()+'virtualmeters/'+virtualmeter.id,{data:virtualmeter}) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + }, + deleteVirtualMeter: function(virtualmeter, callback) { + $http.delete(getAPI()+'virtualmeters/'+virtualmeter.id) + .success(function (response, status, headers, config) { + callback(null, status); + }) + .error(function (e,status) { + callback(e,status); + }); + } + }; +});