/* ** Views/Partial/LCA/DetailSurveyForm/RiskAssmtForm/WaterUsage.cshtml is using this controller */ var arr = window.location.href.split("/"); if (arr[3].indexOf('app') == 0) baseUrl = ''; else baseUrl = '/' + arr[3]; angular.module('CarbonFootprint') .controller('WaterUsageController', ['$q', '$scope', '$http', '$routeParams', 'ParameterCacheService', 'LCADetailCacheService', 'DATE_CONSTANTS', 'UploadFile', 'MultiLanguageService', function ($q, $scope, $http, $routeParams, ParameterCacheService, LCADetailCacheService, DATE_CONSTANTS, UploadFile, MultiLanguageService) { // Multi-language resource object var Resource, inited = false; // this property controlls modal form , will be passed to table-edit-modal directive $scope.modalFormOption = {}; $scope.Editable = false; $scope.yearSelected = {}; // set $scope.baseUrl var baseUrl = $scope.baseUrl; if (typeof (baseUrl) === 'undefined' || baseUrl == null) { var arr = window.location.href.split("/"); if (arr[3].indexOf('app') == 0) baseUrl = ''; else baseUrl = '/' + arr[3]; $scope.baseUrl = baseUrl; } /* modelBuilder for create & export */ $scope.modelBuilder = { create: function (data, LCAID) { try { var model = { // importing only depends on the order of data, not month Scalar: parseFloat(data[1]) ? data[1] : 0, Comment: data[2], ReferenceFileLink: data[3], LCAID: LCAID }; // check imported data length and model length (-1 for LCAID) // remove -1 because we add 1 new column(month) for display if (data.length !== getObjectSize(model)) throw Resource['EXCELFileFormatWrong']; return model; } catch (err) { return { error: err }; } }, export: function (list) { var csv = '\uFEFF'; // header csv += Resource['StaticLabelGlobal_Month'] + '\t' + Resource['WaterUsage'] + '\t' + Resource['DescriptionAndExplanation'] + '\t' + Resource['StaticLabelEvidenceOfElectronicFile'] + Resource['StaticLabelEvidenceOfElectronicFileDescription']; // body angular.forEach(list, function (entry) { csv += '\r\n'; //column 1 csv += entry.Month + '\t' //column 2 csv += entry.Scalar + '\t'; //column 3 csv += entry.Comment + '\t' //column 4 csv += entry.ReferenceFileLink; }) require([baseUrl+'/Scripts/FileSaver.js'], function requrieSuccess(SaveAs) { var textFileAsBlob = new Blob([csv], { type: 'text;charset=utf-8,' }); saveAs(textFileAsBlob, "Export_WaterUsage.txt") }, function requireError(error) { } ); } } /* file import options & modal control */ $scope.fileImportOptions = { modelBuilder: $scope.modelBuilder, saveAsync: batchCreateAndUpdateCache }; $scope.fileImportModal = { show: false } /* quote options & modal control */ $scope.quoteOptions = { queryDataAsyncFn: function (LCAID) { var deferred = $q.defer(); getAllDataAsync(LCAID).then(function (data) { deferred.resolve(data[1].data.WaterUsages); }) return deferred.promise; }, saveAsyncFn: batchCreateAndUpdateCache } $scope.quoteModal = { show: false }; $scope.$on('changeSelectedTab', function (event, args) { if (!inited && args.selectedTab == 'WaterUsage') { inited = true; // Get data and prepare $scope.model getAllDataAsync($routeParams.LCAID) .then(function (response) { var lcaDetail = response[0]; var waterUsages = response[1].data.WaterUsages; var sheetHeader = response[1].data.SheetHeader ? response[1].data.SheetHeader : {}; var sources = response[1].data.options; // prepare area and correspondent year var area = []; var yearSource = {}; var areaYear = []; for (var key in sources) { var items = sources[key].split(','); if (area.indexOf(items[0]) === -1) area.push(items[0]); if (typeof yearSource[items[0]] === 'undefined') yearSource[items[0]] = []; yearSource[items[0]].push({ Year: items[2], ParameterID: parseInt(key) }); } var startDate = new Date(lcaDetail.StartDate); var endDate = new Date(lcaDetail.EndDate); // 將起訖日期改為同年第一與最後一天 startDate.setMonth(0, 1); endDate.setMonth(11, 31); // prepare row data var steamModel = []; var currentDate = startDate; var i = 0; while (currentDate < endDate) { if (waterUsages.length > 0 && (waterUsages.length - i - 1) >= 0) { var row = waterUsages[waterUsages.length - i - 1]; row.Month = DATE_CONSTANTS.months[currentDate.getMonth()]; row.newYear = { Year: row.Year, ParameterID: row.ParameterID }; steamModel[i++] = row; } else { steamModel[i++] = { ID: 0, Index: i, Year: 0, newYear: {}, Scalar: 0, Month: DATE_CONSTANTS.months[currentDate.getMonth()], ReferenceFileLink: '', LCAID: $routeParams.LCAID, KgCO2e: 0, Comment: "" }; } currentDate.setMonth(currentDate.getMonth() + 1); } $scope.model = steamModel; $scope.area = area; $scope.areaYear = areaYear; $scope.changeYear = function (area) { $scope.areaYear = yearSource[area]; }; $scope.sources = sources; calculateSum(); // initial year if (waterUsages.length > 0) { $scope.areaSelected = waterUsages[0].Area; $scope.changeYear($scope.areaSelected); $scope.yearSelected.Year = waterUsages[0].Year; $scope.yearSelected.ParameterID = waterUsages[0].ParameterID; } // $scope.sheetHeader is parent's object $scope.sheetHeader.SheetFillerName = sheetHeader.SheetFillerName; $scope.sheetHeader.Phone = sheetHeader.Phone; $scope.sheetHeader.Department = sheetHeader.Department; }, function (error) { console.log(error); }); // Get the lca status LCADetailCacheService.getLCADetailAsync($routeParams.LCAID) .then(function (lcaDetail) { // int 0, 1, 2, 3, 4 $scope.lcaStatus = lcaDetail.Status; // $scope.modalFormOption.editable = $scope.lcaStatus == 0; }, function (error) { console.log(error); }); // Get multilanguage resource MultiLanguageService.getResourceAsync() .then(function (resource) { Resource = resource; }, function (error) { console.log(error); }); } }); // Sync 'ParameterID' based on 'Source', because ngModel of