demo20230512/Browser_Local/js/LCA/DetailSurveyForm/LCAReportController.js
2023-05-12 10:20:28 +08:00

452 lines
19 KiB
JavaScript

/*
2nd level route entry point
this controller is responsible for Routing Organization LCA , Product LCA with or without PCR selected
and the stutus of a LCA
---------------------------------
*/
angular.module('CarbonFootprint')
.config(function ($locationProvider, $routeProvider, CONSTANTS) {
$routeProvider.when('/LCA/Report/:LCAID', {
templateUrl: CONSTANTS.PB + 'LCA-DetailSurveyForm-Report',
controller: 'LCAReportController'
})
})
.controller('LCAReportController',
['$scope', '$location', 'LCADetailCacheService', '$routeParams', 'CONSTANTS', '$q', 'MultiLanguageService', '$http', '$timeout',
function ($scope, $location, LCADetailCacheService, $routeParams, CONSTANTS, $q, MultiLanguageService, $http, $timeout) {
// Hide sheet header in Detail page
if ($routeParams.DetailType == 'Detail' ||
$routeParams.DetailType == 'HighLevelAnalyze' ||
$routeParams.DetailType == 'ProductUsageStage' ||
$routeParams.DetailType == 'AbandonedStage') {
$scope.isHideSheetHeader = true;
}
// 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;
}
var resource;
MultiLanguageService.getResourceAsync().then(function (result) {
resource = result;
$scope.toWaitState = function () {
if (confirm(resource.DoubleCheckSendToWait))
LCADetailCacheService.setLCAStatusFromProcessToWaitAsync($routeParams.LCAID, 1);
}
});
// 要從後端取得是否啟用思納捷
$scope.InsynergerOn = false;
$http.get($scope.baseUrl+'/api/LCA/InsynergerIsOn')
.success(function (data, status, header, config) {
//console.log(data);
$scope.InsynergerOn = data;
});
$scope.toInsynergerHome = function () {
window.location.href = '/Insynerger';
}
$scope.toProcessState = function () {
LCADetailCacheService.setLCAStatusFromRejectToProcessAsync($routeParams.LCAID);
};
$scope.toCompleteState = function () {
LCADetailCacheService.setLCAStatusFromConfirmToCompleteAsync($routeParams.LCAID)
.then(function () {
$location.path('/Report/Index');
});
};
// 產生產品型報表2
$scope.toGenerateProductReport = function () {
//產生產品型報表
LCADetailCacheService.setLCAStatusFromProcessToWaitAsync($routeParams.LCAID, 0)
.then(res => {
//console.log('產生產品型報表1', res);
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
//.then(function () {
// $location.path('/Report/Index');
//});
};
// 產生所有報表 CFT-89
$scope.toGenerateReport = function () {
LCADetailCacheService.GenerateReport($routeParams.LCAID).then(res => {
if (res != null) {
let arr = res.slice(1, res.length-1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
// 產生產品型盤查表
//$scope.toGenerateProductLCAdata = function () {
// console.log('產生產品型盤查表');
// 用 toGenerateLCAdataReport 組織型產品型一起
//};
// 產生高階分析表
//$scope.toGenerateHighLevelAnalysis = function () {
// console.log('產生高階分析表');
//};
// 產生敏感性分析表
$scope.toGenerateSensitivityAnalysis = function () {
//console.log('產生敏感性分析表');
LCADetailCacheService.GenerateSensitivityAnalysis($routeParams.LCAID).then(res => {
//console.log('敏感性分析表',res);
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
//產生盤查表
$scope.toGenerateLCAdataReport = function () {
//console.log('產生盤查表');
LCADetailCacheService.GenerateLCAdataReport($routeParams.LCAID).then(res => {
//console.log('盤查表',res);
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
//產生清冊
$scope.toGenerateLCAlistReport = function () {
//console.log('產生清冊');
LCADetailCacheService.GenerateLCAlistReport($routeParams.LCAID).then(res => {
//console.log('清冊', res);
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
if (url.length >= 3 && url.substring(0, 3) == 'err') {
alert(decodeURI(url));
return false;
}
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
//產生報告書
$scope.toGenerateLCAreport = function () {
LCADetailCacheService.GenerateLCAreport($routeParams.LCAID).then(res => {
//console.log('產生報告書2', res);
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
//產生風險評估報表
$scope.toGenerateRiskAssessmentReport = function () {
LCADetailCacheService.GenerateRiskAssessmentReport($routeParams.LCAID).then(res => {
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
if (url.length >= 3 && url.substring(0, 3) == 'err') {
alert(decodeURI(url));
return false;
}
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
//產生合併清冊
$scope.toGenerateMergedLCAlistReport = function () {
LCADetailCacheService.GenerateMergedLCAlistReport($routeParams.LCAID).then(res => {
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
if (url.length >= 3 && url.substring(0, 3) == 'err') {
alert(decodeURI(url));
return false;
}
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
//產生合併報告書
$scope.toGenerateMergedLCAreport = function () {
LCADetailCacheService.GenerateMergedLCAreport($routeParams.LCAID).then(res => {
if (res != null) {
let arr = res.slice(1, res.length - 1).split(',');
for (let i = 0; i < arr.length; i++) {
var url = arr[i];
var elemIF = document.createElement("iframe");
elemIF.src = url;
elemIF.style.display = "none";
document.body.appendChild(elemIF);
}
}
});
};
$scope.reportUploadOption = {};
$scope.uploadZipReport = function (id, isProductLCA) {
var selectedFiles = {};
$scope.reportUploadOption.show = true;
let p0 = document.getElementById("upload-file-result-msg");
if (p0 != null)
p0.innerHTML = "";
$scope.reportUploadOption.selectFile = function (files) {
selectedFiles = files;
};
$scope.uploadZipReportPost = function () {
var formData = new FormData();
formData.append('file', selectedFiles);
formData.append('lcaId', id);
let p0 = document.getElementById("upload-file-result-msg");
if (p0 != null)
p0.innerHTML = "";
// to do: Should refactor
$http.post($scope.baseUrl+'/api/UploadLcaFiles/' + isProductLCA, formData, {
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
}).success(function (data) {
if (data != null) {
let p = document.getElementById("upload-file-result-msg");
if (p != null) {
p.innerHTML = data.Msg != null ? data.Msg : "";
if (data.Success == true) {
document.getElementById("upload-file-result-msg").style.color = "green";
}
else {
document.getElementById("upload-file-result-msg").style.color = "red";
}
}
}
}).error(function (data, status) {
//console.log(status);
});
};
};
$scope.downloadZipReport = function (id) {
LCADetailCacheService.downloadZipReport(id).then(res => {
if (res != null) {
let url = res.slice(1, res.length - 1);
if (url != "") {
//for (let i = 0; i < arr.length; i++) {
let a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', url);
a.click();
//}
} else {
alert('無上傳檔案');
}
}
});
};
$scope.downloadZipReplyReport = function (id) {
LCADetailCacheService.downloadZipReplyReport(id).then(res => {
if (res != null) {
let url = res.slice(1, res.length - 1);
if (url != "") {
//for (let i = 0; i < arr.length; i++) {
let a = document.createElement('a');
a.setAttribute('download', '');
a.setAttribute('href', url);
a.click();
//}
} else {
alert('验证单位未回复压缩文档');
}
}
});
};
$scope.templateImportOption = {};
//End
if ($routeParams.SearchText) {
$scope.searchText = $routeParams.SearchText
}
getAllDataAsync($routeParams.LCAID)
.then(function (response) {
var sheetHeader = response.SheetHeader ? response.SheetHeader : {};
// $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);
});
function getAllDataAsync(LCAID) {
var deferred = $q.defer();
$http.get($scope.baseUrl+'/api/LCA/GetReportSheetHeaderByLcaId/' + LCAID)
.success(function (data) {
deferred.resolve(data);
})
.error(function () {
deferred.resolve(null);
})
return deferred.promise;
}
// save sheetHeader
$scope.saveSheetHeader = function () {
$scope.isCheckOnce = true;
if ($scope.headerForm.$invalid) return;
$scope.sheetHeaderForm.resultMsg = '';
var newSheetHeader = $scope.sheetHeader;
newSheetHeader.LCAID = $routeParams.LCAID;
$http.post($scope.baseUrl+'/api/' + $routeParams.DetailType + '/SaveSheetHeader', newSheetHeader)
.success(function (data) {
$scope.sheetHeaderForm.resultMsg = resource['UpdateSuccess'];
})
.error(function (error) {
$scope.cancelEditSheetHeader();
$scope.sheetHeaderForm.resultMsg = resource['UpdateFail'];
//console.log(error);
})
.finally(function () {
// set timeout
$timeout(function () { $scope.sheetHeaderForm.resultMsg = '' }, 3000);
// switch to uneditable
$scope.sheetHeaderForm.editable = false;
});
}
// edit sheetheader
$scope.editSheetHeader = function () {
$scope.tempSheetHeader = angular.copy($scope.sheetHeader);
$scope.sheetHeaderForm.editable = true;
}
// canael edit sheetheader
$scope.cancelEditSheetHeader = function () {
$scope.headerForm.$setPristine();
$scope.sheetHeader = angular.copy($scope.tempSheetHeader);
$scope.sheetHeaderForm.editable = false;
}
const CHARTID1 = 'canvasPie';
const CHARTID2 = 'canvasPie2';
var makeChart = function (chartID, labels, data, backgroundColor ) {
var ctx = document.getElementById(chartID).getContext('2d');
var pieChart = new Chart(ctx, {
type: 'pie',
data: {
labels: labels,
datasets: [{
data: data,
backgroundColor: backgroundColor,
}],
},
options: {
plugins: {
tooltip: {
callbacks: {
label: function (context) {
return `${context.label}: ${context.formattedValue} kgCO2e`
}
}
}
}
}
});
return pieChart;
}
var labels1 = ['第一類排放', '第二類排放', '第三類排放', '第四類排放', '第五類排放', '第六類排放'];
var labels2 = ['固定式燃燒之直接排放', '移動式燃燒之直接排放', '工業製程之直接排放量及移除量', '人為系統中釋放之溫室氣體的直接逸散性排放', '土地使用、土地使用變更和林業的直接排放和移除'];
var data1 = [10, 10, 10, 10, 10, 10];
var data2 = [50, 100, 50, 100, 50];
var backgroundColor1 = ["#DC9EE9", "#92A1F0", "#7283E1", "#2B93BD", "#3C8830", "#99663A"];
var backgroundColor2 = ["#2B6F25", "#8A9D34", "#376AA4", "#4B37A4", "#BF4640"];
$scope.getChartData = function () {
$http.get($scope.baseUrl+'/api/LCA/GetChartData/' + $routeParams.LCAID)
.then(function (ret) {
//console.log(ret);
if (typeof (ret) === 'undefined' || ret == null || ret.data==null || ret.data=='null')
return;
data1 = ret.data.list;
data2 = ret.data.lcaDAta;
for (var i = 5; i >= 0; i--) {
if (data1[i] == 0) {
labels1.splice(i, 1);
data1.splice(i, 1);
backgroundColor1.splice(i, 1);
}
}
for (var i = 4; i >= 0; i--) {
if (data2[i] == 0) {
labels2.splice(i, 1);
data2.splice(i, 1);
backgroundColor2.splice(i, 1);
}
}
if (data1.length > 0)
makeChart(CHARTID1, labels1, data1, backgroundColor1);
if (data2.length > 0)
makeChart(CHARTID2, labels2, data2, backgroundColor2);
});
}
$scope.getChartData();
}]);