1909 lines
68 KiB
JavaScript
1909 lines
68 KiB
JavaScript
/*
|
||
Logic Solution
|
||
WeeeCarbonFootprint
|
||
Basic Logics
|
||
*/
|
||
function isProductLCA(type, undefine) {
|
||
//console.log('isProductLCA: ', isProductLCA);
|
||
//alert('detecting isProductLCA');
|
||
|
||
if (type == undefine) return false;
|
||
else if (type == null) return false;
|
||
else if (type.indexOf('Product') != -1) return true
|
||
else return false;
|
||
}
|
||
function returnEmptyStringIfObjIsNullorUndefined(obj)
|
||
{
|
||
if (obj) return obj
|
||
else return '';
|
||
}
|
||
|
||
function setOrderIcon(order, order_items) {
|
||
for (var key in order_items) {
|
||
order_items[key].Order_Class = 'Order';
|
||
}
|
||
order_items[order].Order_Class = 'Order_Active'
|
||
}
|
||
|
||
function setSidebar(oi, n) {
|
||
var sidebar = [];
|
||
for (var o = 0; o < n; o++) {
|
||
sidebar.push(oi[o]);
|
||
}
|
||
return sidebar;
|
||
}
|
||
|
||
function aliasCompare(prop, value) {
|
||
if (prop === value)
|
||
return prop;
|
||
if (typeof (prop) === 'undefined' || prop.length == 0)
|
||
return;
|
||
if (prop.substring(prop.length - 1, prop.length) != ')')
|
||
return;
|
||
var i = prop.indexOf('(');
|
||
if (i < 0)
|
||
return;
|
||
var str1 = prop.substring(0, i);
|
||
var str2 = prop.substring(i + 1, prop.length - 1);
|
||
if (str1 == value)
|
||
return str1;
|
||
if (str2 == value)
|
||
return str2;
|
||
}
|
||
|
||
/**
|
||
* Get object key by its value
|
||
* @param {[Object]}
|
||
* @param {[...]} : value
|
||
* @return {[...]} : key
|
||
*/
|
||
function getKeyByValue(object, value) {
|
||
var val2 = value.trim();
|
||
for (var prop in object) {
|
||
if (object.hasOwnProperty(prop)) {
|
||
if (object[prop] === val2) {
|
||
return prop;
|
||
}
|
||
var testAlias = aliasCompare(object[prop], value)
|
||
if (typeof (testAlias) != 'undefined' && testAlias.length>0)
|
||
return prop;
|
||
} else {
|
||
}
|
||
}
|
||
//console.log('getKeyByValue', object, value);
|
||
}
|
||
|
||
/**
|
||
* Get object size of its properites
|
||
* @param {[Object]} obj
|
||
* @return {[Number]}
|
||
*/
|
||
function getObjectSize(obj) {
|
||
var size = 0, key;
|
||
for (key in obj) {
|
||
if (obj.hasOwnProperty(key)) size++;
|
||
}
|
||
return size;
|
||
}
|
||
|
||
// 計算有幾個全型字、中文字
|
||
function countLength(stringToCount) {
|
||
if (typeof stringToCount == 'string') {
|
||
var c = stringToCount.match(/[^ -~]/g);
|
||
return stringToCount.length + (c ? c.length : 0);
|
||
} else if (typeof stringToCount == 'object') {
|
||
var n = 0;
|
||
for (var i = 0; i < stringToCount.length; i++) {
|
||
var c = stringToCount[i][Object.keys(stringToCount[i])].match(/[^ -~]/g);
|
||
n += stringToCount[i][Object.keys(stringToCount[i])].length + (c ? c.length : 0)
|
||
}
|
||
return n;
|
||
}
|
||
}
|
||
|
||
function setTableHeaderAndToolMenu(oi, _st) {
|
||
for (var t = 0; t < oi.Table_Header.length; t++) {
|
||
// 工具列若有圈選項目則顯示
|
||
if (typeof oi.Radio != 'undefined') {
|
||
_st[t].item_radio_content = oi.Radio[t];
|
||
var radio = oi.Radio[0][Object.keys(oi.Radio[0])[0]];
|
||
_st[t].radio = radio[Setkeys(radio)[0]];
|
||
// 表單項目若有圈選項目則剔除非圈選項目之表單欄位
|
||
var table_header = SetTableHeader(oi.Table_Header[t], Object.keys(oi.Radio[t][0])[0]);
|
||
_st[t].Table_Header = table_header.th;
|
||
_st[t].Table_Header_Other = table_header.tho;
|
||
} else {
|
||
_st[t].Table_Header = oi.Table_Header[t];
|
||
}
|
||
// 計算表單總寬
|
||
_st[t].Table_Width = SetTableTotalWidth(_st[t].Table_Header, oi, t);
|
||
}
|
||
}
|
||
|
||
// View Table 若有 Radio 選項,則暫時剃除非選種項目之表單清單
|
||
function SetTableHeader(table_header, radio) {
|
||
var new_table_header = [];
|
||
var new_table_header_other = [];
|
||
for (var j = 0; j < table_header.length; j++) {
|
||
if (typeof table_header[j].Show == 'undefined') {
|
||
new_table_header.push(table_header[j]);
|
||
} else {
|
||
var non = false;
|
||
for (var s = 0; s < table_header[j].Show.length; s++) {
|
||
if (table_header[j].Show[s] == radio) {
|
||
new_table_header.push(table_header[j]);
|
||
non = true;
|
||
break;
|
||
}
|
||
}
|
||
if (!non) {
|
||
table_header[j].key = j;
|
||
new_table_header_other.push(table_header[j]);
|
||
}
|
||
}
|
||
}
|
||
return { th: new_table_header, tho: new_table_header_other };
|
||
}
|
||
|
||
// 設定表單各欄寬,若為0則重新計算
|
||
function SetCellWidth(th) {
|
||
for (var i = 0; i < th.length; i++) {
|
||
for (var j = 0; j < th[i].length; j++) {
|
||
if (th[i][j].Width == 0) {
|
||
th[i][j].Width = countLength(th[i][j].Name) * 13;
|
||
}
|
||
}
|
||
}
|
||
return th;
|
||
}
|
||
|
||
// 欄位寬度加總
|
||
function add(table_header) {
|
||
var t = 0;
|
||
for (var i = 0; i < table_header.length; i++) {
|
||
t += table_header[i].Width;
|
||
}
|
||
return t;
|
||
}
|
||
|
||
// 計算表單總寬
|
||
function SetTableTotalWidth(th, oi, st) {
|
||
var Table_Width = add(th);
|
||
if (typeof st != 'undefined' && st != null) {
|
||
if (oi != null && typeof oi.Table_Left_Title != 'undefined' && oi.Table_Left_Title != null) {
|
||
if (oi.Table_Left_Title[st]) {
|
||
Table_Width += 200;
|
||
}
|
||
}
|
||
}
|
||
return Table_Width;
|
||
}
|
||
|
||
// Set Object order by id
|
||
function Setkeys(obj) {
|
||
return obj ? Object.keys(obj) : [];
|
||
}
|
||
|
||
// 將從 Server 端接收的資料重整為 View Data
|
||
function RewriteDataRowToKey(sd, th, C) {
|
||
var Data_Row = [];
|
||
var thl = th.length;
|
||
for (var j = 0; j < sd.length; j++) {
|
||
var dr = {};
|
||
for (var t = 0, _th = th; t < thl; t++) {
|
||
var keyname = setKeyTitle(_th[t].Keys);
|
||
var tdata = sd[j][keyname];
|
||
dr[keyname] = tdata;
|
||
if (keyname == 'DQI') {
|
||
dr.DQI = C.DQI[tdata];
|
||
} else if (keyname == 'MaterialType') {
|
||
dr.MaterialType = C.MaterialType[tdata];
|
||
}
|
||
dr.ID = sd[j].ID;
|
||
}
|
||
Data_Row.push(dr);
|
||
}
|
||
return Data_Row;
|
||
}
|
||
|
||
// 設定表單最下面的編輯列及上傳列
|
||
function SetTableFooter(oi, f, survey_table, st) {
|
||
var dl = survey_table[st].Table_Header.length;
|
||
var fl = f.toLowerCase();
|
||
if (typeof oi[f] != 'undefined') {
|
||
if (oi[f][st]) {
|
||
var th = survey_table[st].Table_Header;
|
||
survey_table[st][fl] = [];
|
||
for (var fu = 0; fu < dl - 1; fu++) {
|
||
survey_table[st][fl].push(
|
||
{ Type: 'edit', Width: th[fu].Width }
|
||
);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 設定資料陣列各列 edit 狀態是否開啟
|
||
function SetEditState(dr) {
|
||
var editstate = {};
|
||
for (var d in dr) {
|
||
editstate[d] = {};
|
||
editstate[d].edit = false;
|
||
}
|
||
return editstate;
|
||
}
|
||
|
||
// 解析 json 數字串聯陣列
|
||
function mergeNumber(data) {
|
||
var a = 0;
|
||
var temp = '';
|
||
while (typeof data[a] != 'undefined') {
|
||
temp = temp + data[a];
|
||
a++;
|
||
}
|
||
return parseFloat(temp);
|
||
}
|
||
|
||
// 檢查 Product 中某欄位是否有填正確資料
|
||
function ProductCheckNone(pst, type) {
|
||
if (typeof pst != 'undefined' && typeof pst[type] != 'undefined' && pst[type] != null && pst[type] != '') {
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
|
||
// 初始化資料陣列,每頁十筆資料,每十頁為一組
|
||
function pageListItem(all_data, current_page) {
|
||
var total_page = 0;
|
||
if (all_data.length % 10 > 0) {
|
||
total_page = parseInt(all_data.length / 10) + 1;
|
||
} else {
|
||
total_page = all_data.length / 10;
|
||
}
|
||
var page_lists = [];
|
||
if (total_page <= 10) {
|
||
for (var i = 0; i < total_page; i++) {
|
||
page_lists.push(i + 1);
|
||
}
|
||
} else {
|
||
for (var i = 0; i < 10; i++) {
|
||
page_lists.push(i + 1);
|
||
}
|
||
}
|
||
// 若無資料,亦為一頁
|
||
if (page_lists.length == 0) {
|
||
page_lists.push(1);
|
||
}
|
||
|
||
return { total_page: total_page, page_lists: page_lists };
|
||
}
|
||
|
||
// 分頁資料切換
|
||
function pageListItemChange(all_data, current_page) {
|
||
var Data_Row = [];
|
||
var l = all_data.length - (current_page - 1) * 10 < 10 ? all_data.length - (current_page - 1) * 10 : 10;
|
||
for (var i = 0; i < l; i++) {
|
||
Data_Row.push(all_data[i + (current_page - 1) * 10]);
|
||
}
|
||
|
||
return Data_Row;
|
||
}
|
||
|
||
// 計算各月份加總
|
||
function caculateTotal(_st) {
|
||
var Total = [];
|
||
if (_st.Table_Header.length > 0) {
|
||
if (_st.Table_Header[_st.Table_Header.length - 1].Name == 'Total') {
|
||
for (var d = 0, _dr = _st.Data_Row; d < _st.Data_Row.length; d++) {
|
||
var total = 0;
|
||
for (var t = 0, _th = _st.Table_Header; t < _st.Table_Header.length - 1; t++) {
|
||
total += _dr[d][_th[t].Keys[0]];
|
||
}
|
||
Total.push(total);
|
||
}
|
||
}
|
||
}
|
||
return Total;
|
||
}
|
||
|
||
// 取得現階段瀏覽器縮放比例
|
||
// 整個案子沒用到
|
||
function getScreenRatioLevel() {
|
||
var screenCssPixelRatio = (window.outerWidth - 8) / window.innerWidth;
|
||
var zoomLevel = 'unknown';
|
||
var row_height = 30;
|
||
if (screenCssPixelRatio >= .32 && screenCssPixelRatio <= .51) {
|
||
zoomLevel = '-4';
|
||
} else if (screenCssPixelRatio <= .68) {
|
||
zoomLevel = '-3';
|
||
} else if (screenCssPixelRatio <= .76) {
|
||
zoomLevel = '-2';
|
||
} else if (screenCssPixelRatio <= .92) {
|
||
zoomLevel = '-1';
|
||
} else if (screenCssPixelRatio <= 1.0) {
|
||
zoomLevel = '0';
|
||
} else if (screenCssPixelRatio <= 1.11) {
|
||
zoomLevel = '1';
|
||
} else if (screenCssPixelRatio <= 1.26) {
|
||
zoomLevel = '2';
|
||
} else if (screenCssPixelRatio <= 1.51) {
|
||
zoomLevel = '3';
|
||
} else if (screenCssPixelRatio <= 1.76) {
|
||
zoomLevel = '4';
|
||
} else if (screenCssPixelRatio <= 2.02) {
|
||
zoomLevel = '5';
|
||
}
|
||
return row_height;
|
||
}
|
||
|
||
// 檢查必填欄位是否有填正確資料
|
||
function checkFilled(dr, th) {
|
||
var nf = [];
|
||
var st = dr.Data_Row_Edit;
|
||
var all_filled = true;
|
||
for (var t = 0; t < th.length; t++) {
|
||
nf.push(false);
|
||
if (typeof th[t].Require != 'undefined' && th[t].Require) {
|
||
var keyname = setKeyTitle(th[t].Keys);
|
||
if (th[t].Type == 'number') {
|
||
//console.log(keyname);
|
||
//console.log(st);
|
||
if (keyname == 'WaterBOD') {
|
||
var b = st.WaterBOD.data;
|
||
var c = st.WaterCOD.data;
|
||
var m = st.WaterCMD.data;
|
||
if (b == 0 && c == 0) {
|
||
nf[t] = true;
|
||
nf[t + 1] = true;
|
||
all_filled = false;
|
||
if (m == null) nf[t + 2] = true;
|
||
} else {
|
||
if (m == null) {
|
||
nf[t + 2] = true;
|
||
all_filled = false;
|
||
} else {
|
||
if (c != 0) st.Scalar.data = c * m;
|
||
else st.Scalar.data = b * m;
|
||
}
|
||
}
|
||
if (b == null) st.WaterBOD.data = 0;
|
||
if (c == null) st.WaterCOD.data = 0;
|
||
} else if (keyname == 'WaterCOD' || keyname == 'WaterCMD') {
|
||
|
||
} else if (st[keyname].data == null) {
|
||
if ((typeof dr.MaterialType != 'undefined' && dr.MaterialType == '間接材料' && keyname == 'Quantity')
|
||
|| (typeof st[keyname] != 'undefined' && keyname == 'InputParameterValue')) {
|
||
|
||
} else {
|
||
nf[t] = true;
|
||
all_filled = false;
|
||
}
|
||
}
|
||
} else if (th[t].Type == 'select') {
|
||
if (dr[keyname] == null) {
|
||
nf[t] = true;
|
||
all_filled = false;
|
||
}
|
||
} else if (th[t].Type == 'simapro') {
|
||
if (dr[keyname] == null) {
|
||
nf[t] = true;
|
||
all_filled = false;
|
||
}
|
||
} else if (th[t].Type == 'date') {
|
||
if (dr[keyname] == null || new Date(dr[keyname]) == 'Invalid Date') {
|
||
nf[t] = true;
|
||
all_filled = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return { all_filled: all_filled, error_list: nf };
|
||
}
|
||
|
||
// 將 Key 重新串接,讓 Data_Row 降至一階矩陣
|
||
function setKeyTitle(keys) {
|
||
var s = keys[0];
|
||
for (var i = 1; i < keys.length; i++) {
|
||
s += '_' + keys[i];
|
||
}
|
||
return s;
|
||
}
|
||
|
||
// Check CSV 的標題列是否跟當前表格符合,且需符合多國語言
|
||
function checkCSVFileHeader(scope, file_header, file_error_message) {
|
||
var _st = scope.Survey_Table[0];
|
||
var _oi = scope.oi[scope.current_item_id];
|
||
var nonheader = 0;
|
||
var leftheader = 0;
|
||
var _th = _oi.Table_Header[0];
|
||
if (typeof _st.Table_Left_Title != 'undefined') {
|
||
if (file_header[0] != _st.Table_Left_Title[0]) {
|
||
alert(file_error_message);
|
||
return false;
|
||
} else {
|
||
leftheader++;
|
||
}
|
||
}
|
||
|
||
// Radio 判斷
|
||
if (typeof scope.radio_id != 'undefined') {
|
||
var radio = _oi.Radio[0][0];
|
||
var first_header_compare = radio[Setkeys(radio)[0]];
|
||
_th = [];
|
||
for (var t = 0; t < _oi.Table_Header[0].length; t++) {
|
||
if ((typeof _oi.Table_Header[0][t].Show != 'undefined' && _oi.Table_Header[0][t].Show == first_header_compare)
|
||
|| typeof _oi.Table_Header[0][t].Show == 'undefined') {
|
||
_th.push(_oi.Table_Header[0][t]);
|
||
}
|
||
}
|
||
}
|
||
|
||
for (var th = 0; th < _th.length; th++) {
|
||
if (file_header[file_header.length - 1] == '') {
|
||
file_header.splice(file_header.length - 1, 1);
|
||
}
|
||
|
||
if (_th[th].Type == 'no' || _th[th].Type == 'formula' || _th[th].Name == 'Total' || _th[th].Type == 'upload' || _th[th].Type == 'simapro') {
|
||
nonheader++;
|
||
} else {
|
||
if (typeof _th[th].Name != 'undefined' && _th[th].Name != file_header[th - nonheader + leftheader]) {
|
||
alert(file_error_message);
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
return leftheader;
|
||
}
|
||
|
||
// Check CSV Upload 的資料列
|
||
function checkDataRowforTable(result_row, _st, st, scope, leftheader, radio_count) {
|
||
if (typeof result_row != 'undefined' && result_row != null && st != -1) {
|
||
if (result_row[result_row.length - 1] == '') {
|
||
result_row.splice(result_row.length - 1, 1);
|
||
}
|
||
|
||
if (leftheader == 0) {
|
||
return result_row;
|
||
} else if (leftheader == 1) {
|
||
if (typeof _st[st + 1] != 'undefined') {
|
||
if (result_row[0] == _st[st + 1].Table_Left_Title[0]) {
|
||
st++;
|
||
}
|
||
}
|
||
if (result_row[0] != _st[st].Table_Left_Title[0]) {
|
||
result_row.splice(0, 1);
|
||
var null_data = isNullData(result_row, '');
|
||
if (null_data) return null;
|
||
|
||
var total = 0;
|
||
for (var r = 0; r < result_row.length; r++) {
|
||
total += parseFloat(result_row[r]);
|
||
}
|
||
result_row.push(total);
|
||
return result_row;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function getRadioTableCount(result_row, _oi) {
|
||
var check_header = false;
|
||
if (typeof result_row != 'undefined' && typeof _oi.Radio != 'undefined') {
|
||
for (var o = 0; o < Setkeys(_oi.Radio[0][0]).length; o++) {
|
||
for (var t = 0, _th = _oi.Table_Header[0]; t < _oi.Table_Header[0].length; t++) {
|
||
if (typeof _th[t].Show != 'undefined' && result_row[0] == _oi.Radio[0][0][Setkeys(_oi.Radio[0][0])[o]]
|
||
|| typeof _th[t].Show == 'undefined' && result_row[0] == _th[t].Name) {
|
||
check_header = true;
|
||
return { count: 1, check_header: check_header };
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return { count: 0, check_header: check_header };
|
||
}
|
||
|
||
function isNullData(result_row, compare) {
|
||
var null_data = true;
|
||
for (var r = 0; r < result_row.length; r++) {
|
||
if (result_row[r] != compare) null_data = false;
|
||
}
|
||
return null_data;
|
||
}
|
||
|
||
function setCSVDataToDataRow(row, d, _dr, _th, tlt, r, supplier) {
|
||
_dr.push({});
|
||
var nondata = 0;
|
||
if (tlt == null) {
|
||
_dr[d].Type = r;
|
||
for (var th = 0; th < _th.length; th++) {
|
||
var keyname = setKeyTitle(_th[th].Keys);
|
||
if (_th[th].Type == 'no') {
|
||
_dr[d].No = d + 1;
|
||
nondata++;
|
||
} else if (_th[th].Type == 'formula') {
|
||
// WasteWater 的 CMD 也要計算
|
||
// Transport 的 Tom*Km 也要計算
|
||
if (keyname != 'KgCO2e') _dr[d][keyname] = null;
|
||
else if (keyname == 'Scalar') {
|
||
if (_th[th].Name == 'Ton*Km') {
|
||
_dr[d][keyname] = (_dr[d].TransportWeight / 1000) * _dr[d].TransportDistance;
|
||
}
|
||
}
|
||
else _dr[d][keyname] = 0;
|
||
nondata++;
|
||
} else if (_th[th].Type == 'simapro') {
|
||
nondata++;
|
||
} else {
|
||
if (row[th - nondata] == '' || row[th - nondata] == 'null') {
|
||
if (_th[th].Type == 'number' && keyname != 'InputParameterValue') _dr[d][keyname] = 0;
|
||
else _dr[d][keyname] = null;
|
||
} else {
|
||
if (_th[th].Type == 'number') _dr[d][keyname] = parseFloat(row[th - nondata]);
|
||
else if (_th[th].Type == 'allnumber') _dr[d][keyname] = parseFloat(row[th - nondata]);
|
||
else _dr[d][keyname] = row[th - nondata];
|
||
if (keyname == 'SupplierCompany') {
|
||
for (var s in supplier) if (row[th - nondata] == supplier[s].Name) _dr[d][keyname + 'ID'] = supplier[s].ID;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
var total = 0;
|
||
if (tlt == 'WorkRatio' || tlt == 'TotalHour' || tlt == 'TotalPower') {
|
||
for (var da in _dr[d - 1]) {
|
||
if (da != 'Total') {
|
||
if (tlt == 'WorkRatio') {
|
||
_dr[d][da] = _dr[d - 1][da] / 8;
|
||
} else if (tlt == 'TotalHour') {
|
||
_dr[d][da] = _dr[d - 3][da] * _dr[d - 2][da] * _dr[d - 1][da];
|
||
} else if (tlt == 'TotalPower') {
|
||
_dr[d][da] = _dr[d - 4][da] + _dr[d - 3][da] + _dr[d - 1][da] + _dr[d - 1][da];
|
||
}
|
||
total += _dr[d][da];
|
||
}
|
||
}
|
||
_dr[d].Total = total;
|
||
} else {
|
||
for (var th = 0; th < _th.length; th++) {
|
||
if (_th[th].Keys[0] != 'Total') _dr[d][_th[th].Keys[0]] = parseFloat(row[th]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function setSelect(roi, scope, CONSTANTS, _dr, _th, ridx) {
|
||
// 資料來源要重新 load from server
|
||
var _st = scope.Survey_Table[0];
|
||
var parameter_config = setParameterNameAndParameterOptions(roi, scope, ridx);
|
||
var OPS1 = parameter_config.OPS1;
|
||
var OPS2 = parameter_config.OPS2;
|
||
var PIDname1 = parameter_config.PIDname1;
|
||
var PIDname2 = parameter_config.PIDname2;
|
||
for (var d = 0; d < _dr.length; d++) {
|
||
var ContaminationType = '';
|
||
var parameter_value1 = [];
|
||
var parameter_value2 = [];
|
||
if (roi != 'Refrigerant') {
|
||
parameter_value1 = getParameterValueForTable(OPS1, _dr[d][PIDname1]);
|
||
} else {
|
||
parameter_value1 = getParameterValueForTable(OPS1, _dr[d][PIDname1]);
|
||
parameter_value2 = getParameterValueForTable(OPS2, _dr[d][PIDname2]);
|
||
}
|
||
setDataRowSelectOption(_th, _dr[d], OPS1, CONSTANTS, OPS2, scope.Supplier);
|
||
if (typeof parameter_value1 != 'undefined') {
|
||
setDataRowSelectValue(_th, _dr[d], CONSTANTS, parameter_value1, parameter_value2, scope.Supplier);
|
||
}
|
||
}
|
||
}
|
||
|
||
function setParameterNameAndParameterOptions(roi, scope, ridx) {
|
||
var PIDname1 = 'ParameterID';
|
||
var PIDname2 = 'ParameterID2';
|
||
var OPS1 = scope[roi + 'Options'];
|
||
var OPS2 = null;
|
||
if (roi.indexOf('LCI') > -1 || roi.indexOf('High') > -1) {
|
||
PIDname1 = 'ParameterTypeID';
|
||
} else if (roi == 'WorkHour' || roi.indexOf('Usage') > -1) {
|
||
|
||
} else if (roi == 'Refrigerant') {
|
||
OPS1 = scope[roi + 'Options1'];
|
||
OPS2 = scope[roi + 'Options2'];
|
||
} else if (roi == 'Kitchen' || roi == 'Waste') {
|
||
if (roi == 'Waste') {
|
||
OPS1 = scope[roi + 'Options' + (ridx + 1)];
|
||
PIDname1 = 'ParameterID';
|
||
}
|
||
} else {
|
||
if (roi == 'Transport' || roi == 'WasteTransport' || roi == 'FireEquipment' || roi == 'OtherCompound') {
|
||
PIDname1 = 'ParameterID';
|
||
}
|
||
}
|
||
return { PIDname1: PIDname1, PIDname2: PIDname2, OPS1: OPS1, OPS2: OPS2 };
|
||
}
|
||
|
||
function setDataRowSelectOption(_th, _drd, OPS1, CONSTANTS, OPS2, supplier) {
|
||
var ContaminationType = '';
|
||
for (var th = 0; th < _th.length; th++) {
|
||
var keyname = setKeyTitle(_th[th].Keys);
|
||
if (keyname.indexOf('ContaminationType') > -1) {
|
||
ContaminationType = keyname;
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1);
|
||
} else if (keyname.indexOf('ProcessType') > -1) {
|
||
if (typeof _drd[ContaminationType] != 'undefined' && _drd[ContaminationType] != '')
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1[_drd[ContaminationType]]);
|
||
} else if (keyname == 'Area') {
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1);
|
||
} else if (keyname == 'FuelType') {
|
||
if (typeof _drd.Area != 'undefined' && _drd.Area != '')
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1[_drd.Area]);
|
||
} else if (keyname == 'Year') {
|
||
if (typeof _drd.Area != 'undefined' && typeof _drd.FuelType != 'undefined' && _drd.FuelType != '' && _drd.FuelType != '')
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1[_drd.Area][_drd.FuelType]);
|
||
} else if (keyname == 'ParameterType') {
|
||
_drd.ParameterTypeselect = setSelectOptions(OPS1);
|
||
} else if (keyname == 'Unit') {
|
||
_drd.Unitselect = setSelectOptions(OPS2);
|
||
} else if (keyname == 'TransportType') {
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1);
|
||
} else if (keyname == 'VanType') {
|
||
if (typeof _drd.TransportType != 'undefined' && _drd.TransportType != '')
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1[_drd.TransportType]);
|
||
} else if (keyname == 'DQI') {
|
||
_drd[keyname + 'select'] = CONSTANTS[keyname];
|
||
} else if (keyname == 'Source') {
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1);
|
||
} else if (keyname == 'RefrigerantType') {
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS1);
|
||
} else if (keyname == 'EquipmentType') {
|
||
_drd[keyname + 'select'] = setSelectOptions(OPS2);
|
||
} else if (keyname == 'MaterialType') {
|
||
_drd[keyname + 'select'] = CONSTANTS[keyname];
|
||
} else if (keyname == 'Type') {
|
||
_drd[keyname + 'select'] = CONSTANTS[keyname];
|
||
} else if (keyname == 'SupplierCompany') {
|
||
_drd[keyname + 'select'] = supplier;
|
||
}
|
||
}
|
||
}
|
||
|
||
function setDataRowSelectValue(_th, _drd, CONSTANTS, parameter_value1, parameter_value2, supplier) {
|
||
for (var th = 0; th < _th.length; th++) {
|
||
var keyname = setKeyTitle(_th[th].Keys);
|
||
if (keyname.indexOf('ContaminationType') > -1) {
|
||
ContaminationType = keyname;
|
||
_drd[keyname] = parameter_value1[1];
|
||
} else if (keyname.indexOf('ProcessType') > -1) {
|
||
_drd[keyname] = '\"' + parameter_value1[2] + '\"';
|
||
} else if (keyname == 'Area') {
|
||
_drd[keyname] = parameter_value1[1];
|
||
} else if (keyname == 'FuelType') {
|
||
_drd[keyname] = '\"' + parameter_value1[2] + '\"';
|
||
} else if (keyname == 'Year') {
|
||
_drd[keyname] = '\"' + parameter_value1[3] + '\"';
|
||
} else if (keyname == 'ParameterType') {
|
||
_drd.ParameterType = parameter_value1[1];
|
||
} else if (keyname == 'TransportType') {
|
||
_drd[keyname] = parameter_value1[1];
|
||
} else if (keyname == 'VanType') {
|
||
_drd[keyname] = '\"' + parameter_value1[2] + '\"';
|
||
} else if (keyname == 'DQI') {
|
||
_drd[keyname] = CONSTANTS[keyname][_drd[keyname]];
|
||
} else if (keyname == 'Source') {
|
||
_drd[keyname] = parameter_value1[1];
|
||
} else if (keyname == 'RefrigerantType') {
|
||
_drd[keyname] = parameter_value1[1];
|
||
} else if (keyname == 'EquipmentType') {
|
||
_drd[keyname] = parameter_value2[1];
|
||
} else if (keyname == 'Unit') {
|
||
|
||
} else if (keyname == 'MaterialType') {
|
||
_drd[keyname] = CONSTANTS.MaterialType[_drd[keyname]];
|
||
} else if (keyname == 'Type') {
|
||
_drd[keyname] = CONSTANTS.Type[_drd[keyname]];
|
||
} else if (keyname == 'SupplierCompany') {
|
||
for (var i in supplier) {
|
||
if (_drd[keyname + 'ID'] == supplier[i].ID) _drd[keyname] == supplier[i].Name;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function setPageProductName(MyLCAdata, ps, ProductID) {
|
||
Query(MyLCAdata, 'Product', 'Get').then(function (response) {
|
||
ps.Product = response;
|
||
ps.Product_Selected = getUniqueItem(ProductID, response, null, 'ID');
|
||
ps.ProductSelected = getUniqueItem(ProductID, response, null, 'ID');
|
||
});
|
||
}
|
||
|
||
function setTableSelectOptionsToScope(response, scope) {
|
||
var roi = scope.current_item;
|
||
if (roi.indexOf('LCI') > -1 || roi.indexOf('High') > -1) {
|
||
scope.Material = response.materials;
|
||
scope[roi + 'Options'] = getOptionsName(roi, 0, response);
|
||
scope[roi + 'UnitOptions'] = getOptionsName(roi, 1, response);
|
||
} else if (roi == 'WorkHour' || roi.indexOf('Usage') > -1) {
|
||
scope[roi] = response[roi + 's'];
|
||
scope[roi + 'Options'] = getOptionsName(roi, 0, response);
|
||
} else {
|
||
scope[roi] = response[roi + 's'];
|
||
if (typeof scope.oi[scope.current_item_id].Radio != 'undefined') {
|
||
var _radio = scope.oi[scope.current_item_id].Radio[0][0];
|
||
for (var rd = 0; rd < Setkeys(_radio).length; rd++) {
|
||
for (var o in _radio) {
|
||
if (_radio[o] == scope.Survey_Table[0].radio && o == Setkeys(_radio)[rd]) {
|
||
// 有RADIO資料
|
||
scope.radio_id = rd;
|
||
if (roi != 'Kitchen') {
|
||
scope[roi + 'Options'] = getOptionsName(roi, rd, response);
|
||
scope[roi + 'Options1'] = getOptionsName(roi, 0, response);
|
||
scope[roi + 'Options2'] = getOptionsName(roi, 1, response);
|
||
} else {
|
||
scope[roi + 'Options'] = getOptionsName(roi, 0, response);
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 沒有 Radio Button 的表的 Options 解析
|
||
if (roi == 'Transport' || roi == 'WasteTransport' || roi == 'Vehicle' || roi == 'GasolineEquipment' || roi == 'FireEquipment' || roi == 'OtherCompound') {
|
||
scope[roi + 'Options'] = getOptionsName(roi, 0, response);
|
||
} else if (roi == 'Refrigerant') {
|
||
scope[roi + 'Options1'] = getOptionsName(roi, 0, response);
|
||
scope[roi + 'Options2'] = getOptionsName(roi, 1, response);
|
||
}
|
||
}
|
||
}
|
||
|
||
function getParameterValueForTable(OPS, compare) {
|
||
for (var ops1 in OPS) {
|
||
for (var ops2 in OPS[ops1]) {
|
||
for (var ops3 in OPS[ops1][ops2]) {
|
||
if (typeof OPS[ops1][ops2][ops3] == 'string') {
|
||
if (compare == OPS[ops1][ops2][ops3]) {
|
||
return { 1: ops1, 2: ops2 };
|
||
}
|
||
} else {
|
||
for (var ops4 in OPS[ops1][ops2][ops3]) {
|
||
if (compare == OPS[ops1][ops2][ops3][ops4]) {
|
||
return { 1: ops1, 2: ops2, 3: ops3 };
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function setMonthlyTableSendData(scope, st, _tth, _dr) {
|
||
var send_data = {};
|
||
var _st = scope.Survey_Table[st];
|
||
send_data.ID = 0;
|
||
send_data.Index = _tth;
|
||
send_data.Type = st;
|
||
send_data.LCAID = scope.product_survey.LCA.ID;
|
||
var roi = scope.current_item;
|
||
var row_length = 5;
|
||
for (var k = 0, _k = Setkeys(_st.Table_Left_Title) ; k < scope.tempcount; k++) {
|
||
send_data[_k[k + 1]] = _dr[k + st * row_length][Setkeys(_dr[k + st * row_length])[_tth]];
|
||
}
|
||
return send_data;
|
||
}
|
||
|
||
function getOptionsName(roi, n, response) {
|
||
var opname = '';
|
||
if (n == 0) opname = 'options';
|
||
else opname = 'options' + (n + 1);
|
||
|
||
if ((roi.indexOf('LCI') > -1 || roi.indexOf('High') > -1) && n == 0) opname = 'optiontypes';
|
||
else if ((roi.indexOf('LCI') > -1 || roi.indexOf('High') > -1) && n == 1) opname = 'optionunits';
|
||
|
||
if (roi != 'Vehicle' && roi != 'GasolineEquipment' && roi != 'Kitchen' && roi != 'WorkHour' && roi.indexOf('Usage') == -1) return setOptions(response[opname], 2);
|
||
else return setOptions(response[opname], 3);
|
||
}
|
||
|
||
function setOptions(_res, t) {
|
||
var scope = {};
|
||
var k = 0;
|
||
for (var op in _res) {
|
||
if (typeof _res[op] != 'undefined' && _res[op] != null) {
|
||
var t2 = setOptionsArray(_res, op, scope);
|
||
if (t == 2) {
|
||
scope[t2.first][t2.second] = [];
|
||
scope[t2.first][t2.second].push(op);
|
||
} else if (t == 3) {
|
||
var t3 = setOptionsArray(t2.second, null, scope[t2.first]);
|
||
scope[t2.first][t3.first][t3.second] = [];
|
||
scope[t2.first][t3.first][t3.second].push(op);
|
||
}
|
||
}
|
||
}
|
||
return scope;
|
||
}
|
||
|
||
function setOptionsArray(res, op, scope) {
|
||
var str = '';
|
||
var d = -1;
|
||
if (typeof res[op] != 'undefined') str = res[op];
|
||
else str = res;
|
||
|
||
d = str.indexOf(',');
|
||
var ds = distributeString(str, d);
|
||
var first = ds.first;
|
||
var second = ds.second;
|
||
if (typeof scope[first] == 'undefined') scope[first] = [];
|
||
|
||
return { first: first, second: second };
|
||
}
|
||
|
||
function distributeString(str, idx) {
|
||
if (idx > -1) return { first: str.substr(0, idx).trim(), second: str.substr(idx + 1).trim() };
|
||
else return { first: str.trim(), second: str.trim() };
|
||
}
|
||
|
||
function rewriteParameterIDtoParameterType(roi, DR, SD, res, radio_id) {
|
||
var opname = 'options';
|
||
var PIDname = 'ParameterID';
|
||
if (roi == 'Waste' || roi == 'Transport' || roi == 'WasteTransport' || roi == 'FireEquipment' || roi == 'OtherCompound') {
|
||
PIDname = 'ParameterID';
|
||
} else if (roi == 'Refrigerant') {
|
||
splitParameterValue(DR, SD, res[opname], PIDname, opname, roi);
|
||
splitParameterValue(DR, SD, res['options2'], 'ParameterID2', 'options2', roi);
|
||
return false;
|
||
}
|
||
if (typeof radio_id != 'undefined' && roi == 'Waste') {
|
||
if (radio_id == SD.Type) {
|
||
if (SD.Type != 0) opname = opname + (SD.Type + 1);
|
||
}
|
||
}
|
||
splitParameterValue(DR, SD, res[opname], PIDname, opname, roi);
|
||
}
|
||
|
||
function splitParameterValue(DR, SD, options, PIDname, opname, roi) {
|
||
var PID = SD[PIDname];
|
||
if (PID != null) {
|
||
var pv = splitValue(options[PID]);
|
||
var first = pv.first;
|
||
var second = pv.second;
|
||
if (roi == 'Waste' || roi == 'Transport' || roi == 'WasteTransport' || roi == 'FireEquipment' || roi == 'OtherCompound') {
|
||
for (var dre in DR) {
|
||
if (dre.indexOf('ContaminationType') > -1) {
|
||
DR[dre] = first;
|
||
} else if (dre.indexOf('ProcessType') > -1) {
|
||
DR[dre] = second;
|
||
} else if (dre.indexOf('TransportType') > -1) {
|
||
DR[dre] = first;
|
||
} else if (dre.indexOf('VanType') > -1) {
|
||
DR[dre] = second;
|
||
} else if (dre.indexOf('Source') > -1) {
|
||
DR[dre] = first;
|
||
}
|
||
}
|
||
} else if (roi == 'Vehicle' || roi == 'GasolineEquipment' || roi == 'Kitchen') {
|
||
var third = splitValue(second).second;
|
||
second = splitValue(second).first;
|
||
for (var dre in DR) {
|
||
if (dre.indexOf('Area') > -1) {
|
||
DR[dre] = first;
|
||
} else if (dre.indexOf('FuelType') > -1) {
|
||
DR[dre] = second;
|
||
} else if (dre.indexOf('Year') > -1) {
|
||
DR[dre] = third;
|
||
}
|
||
}
|
||
} else if (roi == 'Refrigerant') {
|
||
for (var dre in DR) {
|
||
if (dre.indexOf('RefrigerantType') > -1 && opname == 'options') {
|
||
DR[dre] = first;
|
||
} else if (dre.indexOf('EquipmentType') > -1 && opname == 'options2') {
|
||
DR[dre] = first;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function splitValue(pv) {
|
||
var one = '';
|
||
var two = '';
|
||
if (pv.indexOf(',') > -1) {
|
||
two = pv.substr(pv.indexOf(',') + 1);
|
||
one = pv.substr(0, pv.indexOf(','));
|
||
} else {
|
||
two = pv;
|
||
one = pv;
|
||
}
|
||
return { first: one.trim(), second: two.trim() }
|
||
}
|
||
|
||
function setSelectOptions(options) {
|
||
var ops = [];
|
||
for (var opt in options) {
|
||
var addops = true;
|
||
for (var s = 0; s < ops.length; s++) {
|
||
if (ops[s] == opt) {
|
||
addops = false;
|
||
break;
|
||
}
|
||
}
|
||
if (addops) {
|
||
ops.push(opt);
|
||
}
|
||
}
|
||
return ops;
|
||
}
|
||
|
||
function createCSVUploadElement() {
|
||
var upload = createUploadElement('csv');
|
||
return upload;
|
||
}
|
||
|
||
function createUploadElement(accept_type) {
|
||
var upload = document.createElement('input');
|
||
upload.setAttribute('type', 'file');
|
||
upload.setAttribute('style', '0');
|
||
upload.setAttribute('id', 'getFile');
|
||
if (typeof accept_type != 'undefined') {
|
||
upload.setAttribute('accept', accept_type);
|
||
}
|
||
return upload;
|
||
}
|
||
|
||
function getUniqueItem(currentItem, compareItem, returnParameter, compareItemParameter) {
|
||
if (typeof currentItem != 'undefined') {
|
||
for (var i = 0; i < compareItem.length; i++) {
|
||
if (currentItem == compareItem[i][compareItemParameter]) {
|
||
if (returnParameter != null) return compareItem[i][returnParameter];
|
||
else return compareItem[i];
|
||
}
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
|
||
function setRowDataFromApiData(response) {
|
||
var all = [];
|
||
for (var r = 0; r < response.length; r++) {
|
||
all[r] = {};
|
||
for (var key in response[r]) {
|
||
if (key == 'CreatedDate' || key == 'ReplyDate') {
|
||
if (response[r][key] != null) {
|
||
all[r][key] = new Date(response[r][key]).toLocaleString();
|
||
} else {
|
||
all[r][key] = null;
|
||
}
|
||
} else {
|
||
all[r][key] = response[r][key];
|
||
}
|
||
}
|
||
}
|
||
return all;
|
||
}
|
||
|
||
function setMonthlyTableHeader(ps, MC, table_header) {
|
||
console.log(ps.Start_Date);
|
||
console.log(ps.End_Date);
|
||
if (typeof ps.Start_Date != 'undefined' && typeof ps.End_Date != 'undefined') {
|
||
var sy = parseInt(ps.Start_Date.substr(0, 4));
|
||
var sm = parseInt(ps.Start_Date.substr(5, 2));
|
||
var ey = parseInt(ps.End_Date.substr(0, 4));
|
||
var em = parseInt(ps.End_Date.substr(5, 2));
|
||
var l = (ey - sy) * 12 + (em - sm + 1);
|
||
for (var ad = 0; ad < l; ad++) {
|
||
var m = sm + ad;
|
||
var y = 0;
|
||
while (m > 12) {
|
||
m = m - 12;
|
||
y++;
|
||
}
|
||
var key = sy + y + '-' + (m % 12 != 0 ? m % 12 : 12);
|
||
var mcdata = { "Name": MC[m % 12 != 0 ? m % 12 - 1 : 11].Name, "Type": "number", "Width": 70, "Keys": [key] };
|
||
table_header.push(mcdata);
|
||
}
|
||
table_header.push({ "Name": "Total", "Keys": ["Total"], "Type": "text", "Width": 0 });
|
||
}
|
||
}
|
||
|
||
function setCSVHeader(tlt, th) {
|
||
var csv_header = '';
|
||
if (typeof tlt != 'undefined') {
|
||
table_left_title = Setkeys(tlt);
|
||
csv_header += tlt[table_left_title[0]] + ',';
|
||
}
|
||
for (var t = 0, th; t < th.length; t++) {
|
||
if (th[t].Type != 'no' && th[t].Type != 'formula' && th[t].Type != 'upload' && th[t].Name != 'Total' && th[t].Type != 'simapro') {
|
||
csv_header += th[t].Name + ',';
|
||
}
|
||
}
|
||
return csv_header;
|
||
}
|
||
|
||
function setCSVRow(tlt, th, dr, supplier) {
|
||
var csv_row = '';
|
||
for (var d = 0; d < dr.length; d++) {
|
||
if (typeof tlt != 'undefined') {
|
||
table_left_title = Setkeys(tlt);
|
||
if (table_left_title[d + 1] == 'WorkRatio' || table_left_title[d + 1] == 'TotalHour' || table_left_title[d + 1] == 'TotalPower') {
|
||
break;
|
||
}
|
||
csv_row += tlt[table_left_title[d + 1]] + ',';
|
||
}
|
||
for (var t = 0; t < th.length; t++) {
|
||
var keyname = setKeyTitle(th[t].Keys);
|
||
if (th[t].Type != 'no' && th[t].Type != 'formula' && th[t].Type != 'upload' && th[t].Name != 'Total' && th[t].Type != 'simapro') {
|
||
if (dr[d][keyname] == null) dr[d][keyname] = '';
|
||
if (keyname == 'SupplierCompany') {
|
||
for (var s in supplier) if (dr[d][keyname + 'ID'] == supplier[s].ID) dr[d][keyname] = supplier[s].Name;
|
||
}
|
||
csv_row += dr[d][keyname] + ',';
|
||
}
|
||
}
|
||
csv_row += '\n';
|
||
}
|
||
return csv_row;
|
||
}
|
||
|
||
function setCSVSingleTable(tlt, th, dr, supplier) {
|
||
var csv = '';
|
||
var csv_header = setCSVHeader(tlt, th);
|
||
csv_header += '\n';
|
||
var csv_row = setCSVRow(tlt, th, dr, supplier);
|
||
csv += csv_header + csv_row + '\n';
|
||
return csv;
|
||
}
|
||
|
||
function setCSVSingleHeader(scope, st, rc) {
|
||
var table_header = [];
|
||
var all_header = [];
|
||
var _st = scope.Survey_Table;
|
||
var radio = [scope.current_item];
|
||
if (st > -1) {
|
||
if (typeof scope.radio_id != 'undefined') {
|
||
radio = [];
|
||
var _rad = scope.oi[scope.current_item_id].Radio[0][0];
|
||
radio.push(_rad[Setkeys(_rad)[rc]]);
|
||
}
|
||
all_header = scope.oi[scope.current_item_id].Table_Header[st];
|
||
table_header = setRadioSingleHeader(all_header, radio, st);
|
||
}
|
||
return table_header;
|
||
}
|
||
|
||
function setRadioSingleHeader(all_header, radio, r) {
|
||
var table_header = [];
|
||
if (typeof all_header != 'undefined' && all_header != null) {
|
||
for (var h = 0; h < all_header.length; h++) {
|
||
if (typeof all_header[h].Show == 'undefined' || all_header[h].Show[0] == radio[r]) {
|
||
table_header.push(all_header[h]);
|
||
}
|
||
}
|
||
}
|
||
return table_header;
|
||
}
|
||
|
||
function setCSVSingleRow(roi, all_data, table_header, r) {
|
||
var table_row = [];
|
||
var n = 0;
|
||
for (var d = 0; d < all_data.length; d++) {
|
||
var m = r;
|
||
var type = null;
|
||
var set_row = true;
|
||
if (roi.indexOf('LCI') == -1) {
|
||
type = all_data[d].Type;
|
||
} else {
|
||
if (roi.indexOf('Direct') > -1) m = 0;
|
||
else if (roi.indexOf('Indirect') > -1) m = 1;
|
||
else if (roi.indexOf('Wrap') > -1) m = 2;
|
||
type = all_data[d].MaterialType;
|
||
}
|
||
|
||
if (typeof type != 'undefined' && m != type && roi != 'Vehicle') {
|
||
set_row = false;
|
||
}
|
||
|
||
if (set_row) {
|
||
table_row.push({});
|
||
for (var h = 0; h < table_header.length; h++) {
|
||
for (var key in all_data[d]) {
|
||
table_row[n][key] = all_data[d][key];
|
||
}
|
||
}
|
||
n++;
|
||
}
|
||
}
|
||
return table_row;
|
||
|
||
}
|
||
|
||
function createCSVDownloadLink(csv, roi) {
|
||
var textFileAsBlob = new Blob([csv], { type: 'text;charset=utf-8,' });
|
||
var fileNameToSaveAs = roi + '.txt';
|
||
|
||
var downloadLink = document.createElement("a");
|
||
downloadLink.download = fileNameToSaveAs;
|
||
if (window.webkitURL != null) {
|
||
downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
|
||
}
|
||
else {
|
||
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
|
||
downloadLink.onclick = destroyClickedElement;
|
||
downloadLink.style.display = "none";
|
||
document.body.appendChild(downloadLink);
|
||
}
|
||
return downloadLink;
|
||
}
|
||
|
||
function createEXCELDownloadLink() {
|
||
var downloadLink = document.createElement("a");
|
||
downloadLink.download = 'application/vnd.ms-excel';
|
||
return downloadLink;
|
||
}
|
||
|
||
function getCacheName(roi) {
|
||
if (roi.indexOf('LCI') > -1 || roi.indexOf('High') > -1) return 'Material';
|
||
else return roi;
|
||
}
|
||
|
||
function setApiConfig(roi, LCAID) {
|
||
var parameter_api_config = {};
|
||
var delete_api_config = {};
|
||
var save_all_api_config = {};
|
||
if (roi.indexOf('LCI') > -1 || roi.indexOf('High') > -1) {
|
||
parameter_api_config.Controller = 'Material';
|
||
delete_api_config.Controller = 'Material';
|
||
if (roi.indexOf('Direct') > -1) delete_api_config.pa2 = 0;
|
||
else if (roi.indexOf('Indirect') > -1) delete_api_config.pa2 = 1;
|
||
else if (roi.indexOf('Wrap') > -1) delete_api_config.pa2 = 2;
|
||
save_all_api_config.Controller = 'Material';
|
||
} else if (roi == 'WorkHour' || roi.indexOf('Usage') > -1) {
|
||
delete_api_config.Controller = roi;
|
||
save_all_api_config.Controller = roi;
|
||
} else {
|
||
parameter_api_config.Controller = roi;
|
||
delete_api_config.Controller = roi;
|
||
save_all_api_config.Controller = roi;
|
||
}
|
||
parameter_api_config.Action = 'Get' + parameter_api_config.Controller + 's';
|
||
parameter_api_config.pa1 = LCAID;
|
||
delete_api_config.Action = 'Delete' + delete_api_config.Controller + 's';
|
||
delete_api_config.pa1 = LCAID;
|
||
save_all_api_config.Action = 'Save' + save_all_api_config.Controller + 's';
|
||
return { parameter_api_config: parameter_api_config, delete_api_config: delete_api_config, save_all_api_config: save_all_api_config };
|
||
}
|
||
|
||
// Return array of string values, or NULL if CSV string not well formed.
|
||
function CSVtoArray(text) {
|
||
var re_valid = /^\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*(?:,\s*(?:'[^'\\]*(?:\\[\S\s][^'\\]*)*'|"[^"\\]*(?:\\[\S\s][^"\\]*)*"|[^,'"\s\\]*(?:\s+[^,'"\s\\]+)*)\s*)*$/;
|
||
var re_value = /(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/g;
|
||
// Return NULL if input string is not well formed CSV string.
|
||
console.log(re_valid.test(text));
|
||
if (!re_valid.test(text)) return null;
|
||
var a = []; // Initialize array to receive values.
|
||
text.replace(re_value, // "Walk" the string using replace with callback.
|
||
function (m0, m1, m2, m3) {
|
||
// Remove backslash from \' in single quoted values.
|
||
if (m1 !== undefined) a.push(m1.replace(/\\'/g, "'"));
|
||
// Remove backslash from \" in double quoted values.
|
||
else if (m2 !== undefined) a.push(m2.replace(/\\"/g, '"'));
|
||
else if (m3 !== undefined) a.push(m3);
|
||
return ''; // Return empty string.
|
||
});
|
||
// Handle special case of empty last value.
|
||
if (/,\s*$/.test(text)) a.push('');
|
||
return a;
|
||
}
|
||
|
||
function setUncommonData(roi, _dr, send_data, CONSTANTS) {
|
||
if (roi.indexOf('Transport') > -1) {
|
||
if (typeof _dr.TransportWeight != 'undefined' && _dr.TransportWeight != null) {
|
||
_dr.Scalar = (_dr.TransportWeight / 1000) * _dr.TransportDistance;
|
||
} else {
|
||
_dr.Scalar = 0;
|
||
}
|
||
send_data.Scalar = _dr.Scalar;
|
||
} else if (roi.indexOf('Vehicle') > -1) {
|
||
_dr.Type = CONSTANTS.Type[_dr.Type];
|
||
} else if (roi.indexOf('High') > -1) {
|
||
_dr.MaterialType = CONSTANTS.MaterialType[_dr.MaterialType];
|
||
}
|
||
}
|
||
|
||
function getDataRange(iMPLCA, CONSTANTS) {
|
||
var date_range = 0;
|
||
if (iMPLCA.StartDate != null && iMPLCA.EndDate != null) {
|
||
var sdate = new Date(iMPLCA.StartDate);
|
||
var edate = new Date(iMPLCA.EndDate);
|
||
var sy = sdate.getFullYear();
|
||
var sm = sdate.getMonth();
|
||
var sd = sdate.getDate();
|
||
var ey = edate.getFullYear();
|
||
var em = edate.getMonth();
|
||
var ed = edate.getDate();
|
||
var k = 0;
|
||
for (var y = sy; y < ey + 1; y++) {
|
||
if (y != ey) {
|
||
for (var m = sm; m < 12; m++) {
|
||
date_range += CONSTANTS.days[m];
|
||
}
|
||
} else {
|
||
for (var m = 0; m < em; m++) {
|
||
date_range += CONSTANTS.days[m];
|
||
}
|
||
}
|
||
}
|
||
date_range = date_range - sd + ed + 1;
|
||
}
|
||
date_range = date_range / 365;
|
||
return date_range;
|
||
}
|
||
|
||
function getCONSTANTSIndex(CONSTANTS, keyname, compare) {
|
||
for (var q = 0; q < CONSTANTS[keyname].length; q++) {
|
||
if (compare == CONSTANTS[keyname][q]) return q;
|
||
}
|
||
}
|
||
|
||
function surveyFormHeight(width, dr, footer_upload) {
|
||
var sh = 30;
|
||
if (typeof width != 'undefined' && width > 882) sh += 17;
|
||
|
||
if (typeof dr != 'undefined') {
|
||
for (var d = 0, _dr = dr; d < dr.length; d++) {
|
||
sh += 29;
|
||
if (typeof _dr[d].ChildMaterials != 'undefined' && _dr[d].child_expand) {
|
||
for (var dc = 0, _drc = _dr[d].ChildMaterials; dc < _dr[d].ChildMaterials.length; dc++) {
|
||
sh += 29;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (typeof footer_upload != 'undefined') sh += 31;
|
||
if (sh > 595) sh = 595;
|
||
|
||
sh += 'px';
|
||
return sh;
|
||
}
|
||
|
||
function async($q, multi_language_fn_parameter_config) {
|
||
var deferred = $q.defer();
|
||
|
||
SetMultiLanguageToAllConfig(multi_language_fn_parameter_config, function (success) {
|
||
if (success) {
|
||
deferred.resolve(success);
|
||
} else {
|
||
deferred.reject(success);
|
||
}
|
||
});
|
||
|
||
return deferred.promise;
|
||
}
|
||
|
||
// MultiLanguage
|
||
function SetMultiLanguageToAllConfig(pa, callback) {
|
||
var cookie_culture = pa._culture;
|
||
var SURVEY_MODEL_CONFIG = pa.SURVEY;
|
||
var LCA_MODEL_CONFIG = pa.LCA;
|
||
var SIMAPRO_MODEL_CONFIG = pa.SIMAPRO;
|
||
var CONSTANTS_CONFIG = pa.CONSTANTS;
|
||
var MultiLanguage_CONFIG = pa.MultiLanguage;
|
||
var PRODUCT_MODEL_CONFIG = pa.PRODUCT;
|
||
var FAB_MODEL_CONFIG = pa.FAB;
|
||
var REPORT_MODEL_CONFIG = pa.REPORT;
|
||
var MANAGEMENT_MODEL_CONFIG = pa.MANAGEMENT;
|
||
|
||
var _culture = 'zh-tw';
|
||
var _culture_file_name = 'Root';
|
||
if (typeof cookie_culture != 'undefined') {
|
||
_culture = cookie_culture;
|
||
}
|
||
if (_culture == 'zh-tw') {
|
||
_culture_file_name = 'Root';
|
||
} else if (_culture == 'zh-cn') {
|
||
_culture_file_name = 'zh';
|
||
} else if (_culture == 'en-us') {
|
||
_culture_file_name = 'en';
|
||
}
|
||
|
||
var arr = window.location.href.split("/");
|
||
if (arr[3].indexOf('app') == 0)
|
||
baseUrl = '';
|
||
else
|
||
baseUrl = '/' + arr[3];
|
||
// MultiLanguage Error
|
||
require([baseUrl+'/Scripts/Nls/' + _culture_file_name + '/app-resx.js'],
|
||
function requrieSuccess(mapping_data) {
|
||
for (var config in MultiLanguage_CONFIG) {
|
||
var config_name = config.substr(0, config.indexOf('_'));
|
||
var CONFIG = null;
|
||
if (config_name == 'SURVEY') CONFIG = SURVEY_MODEL_CONFIG;
|
||
else if (config_name == 'LCA') CONFIG = LCA_MODEL_CONFIG;
|
||
else if (config_name == 'SIMAPRO') CONFIG = SIMAPRO_MODEL_CONFIG;
|
||
else if (config_name == 'CONSTANTS') CONFIG = CONSTANTS_CONFIG;
|
||
else if (config_name == 'PRODUCT') CONFIG = PRODUCT_MODEL_CONFIG;
|
||
else if (config_name == 'FAB') CONFIG = FAB_MODEL_CONFIG;
|
||
else if (config_name == 'REPORT') CONFIG = REPORT_MODEL_CONFIG;
|
||
else if (config_name == 'MANAGEMENT') CONFIG = MANAGEMENT_MODEL_CONFIG;
|
||
|
||
if (config.indexOf('HEADER') > -1 && config.indexOf('TABHEADER') == -1) {
|
||
var _config = CONFIG;
|
||
if (config_name != 'SURVEY') _config = CONFIG.SURVEY_ORDER_CONFIG;
|
||
SetMultiLanguageForHeader(MultiLanguage_CONFIG[config], _config, mapping_data);
|
||
} else if (config.indexOf('ORDERITEM') > -1) {
|
||
SetMultiLanguageForOrderItem(MultiLanguage_CONFIG[config], CONFIG, mapping_data);
|
||
} else if (config.indexOf('TABHEADER') > -1) {
|
||
SetMultiLanguageForTabHeader(MultiLanguage_CONFIG[config], CONFIG.tabItems, mapping_data);
|
||
} else if (config.indexOf('CONSTANTS') > -1) {
|
||
SetMultiLanguageForCONSTANTS(MultiLanguage_CONFIG[config], CONFIG, mapping_data);
|
||
} else if (config.indexOf('RADIO') > -1) {
|
||
SetMultiLanguageForRADIO(MultiLanguage_CONFIG[config], CONFIG, mapping_data);
|
||
} else if (config.indexOf('MONTHLY') > -1) {
|
||
SetMultiLanguageForMONTHLY(MultiLanguage_CONFIG[config], CONFIG, mapping_data);
|
||
} else {
|
||
SetMultiLanguageForForm(MultiLanguage_CONFIG[config], CONFIG, mapping_data);
|
||
}
|
||
}
|
||
callback(true);
|
||
},
|
||
function requireError(error) {
|
||
callback(false);
|
||
}
|
||
);
|
||
}
|
||
|
||
function SetMultiLanguageForHeader(mapping, config, mapping_data) {
|
||
for (var mp in mapping) {
|
||
if (typeof mapping[mp] == 'object') {
|
||
getConfigHeader(mapping[mp], config[mp], mapping_data);
|
||
} else if (typeof mapping[mp] == 'string') {
|
||
getConfigHeader(mapping, config, mapping_data);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
function SetMultiLanguageForTabHeader(mapping, config, mapping_data) {
|
||
for (var mp in mapping) {
|
||
for (var t = 0; t < config.length; t++) {
|
||
if (mp == config[t].name) {
|
||
updateConfigMultiLanguage(mapping[mp], config[t], mapping_data);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function SetMultiLanguageForRADIO(mapping, config, mapping_data) {
|
||
for (var mp in mapping) {
|
||
for (var m in mapping[mp]) {
|
||
if (typeof mapping[mp][m] == 'object') {
|
||
for (var i = 0; i < config[mp].Item.length; i++) {
|
||
if (config[mp].Item[i].Name == m) {
|
||
updateConfigMultiLanguage(mapping[mp][m], config[mp].Item[i].Radio[0][0], mapping_data);
|
||
break;
|
||
}
|
||
}
|
||
} else if (typeof mapping[mp][m] == 'string') {
|
||
updateConfigMultiLanguage(mapping[mp], config.SURVEY_ORDER_CONFIG[mp].Radio, mapping_data);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function SetMultiLanguageForCONSTANTS(mapping, config, mapping_data) {
|
||
for (var mp in mapping) {
|
||
for (var m in mapping[mp]) {
|
||
config[mp][m] = mapping_data[mapping[mp][m]];
|
||
}
|
||
}
|
||
}
|
||
|
||
function SetMultiLanguageForMONTHLY(mapping, config, mapping_data) {
|
||
for (var mp in mapping) {
|
||
for (var m in mapping[mp]) {
|
||
for (var i = 0; i < config[mp].Item.length; i++) {
|
||
if (config[mp].Item[i].Name == m) {
|
||
for (var tlt = 0, _tlt = config[mp].Item[i].Table_Left_Title; tlt < config[mp].Item[i].Table_Left_Title.length; tlt++) {
|
||
updateConfigMultiLanguage(mapping[mp][m][tlt], _tlt[tlt], mapping_data);
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function getConfigHeader(mapping, ch, mapping_data) {
|
||
for (var m in mapping) {
|
||
if (typeof mapping[m] == 'object') {
|
||
for (var i = 0; i < ch.Item.length; i++) {
|
||
if (typeof ch.Item[i].Name != 'undefined' && ch.Item[i].Name == m) {
|
||
SetMultiLanguageHeader(mapping[m], ch.Item[i], mapping_data);
|
||
break;
|
||
}
|
||
}
|
||
} else {
|
||
SetMultiLanguageHeader(mapping, ch, mapping_data);
|
||
}
|
||
}
|
||
}
|
||
|
||
function SetMultiLanguageHeader(mapping, ch, mapping_data) {
|
||
for (var c in ch) {
|
||
if (c == 'Table_Header') {
|
||
for (var s = 0; s < ch[c].length; s++) {
|
||
for (var h = 0; h < ch[c][s].length; h++) {
|
||
if (typeof ch[c][s][h].Show != 'undefined' && ch[c][s][h].Keys[0] == 'Scalar') {
|
||
if (ch[c][s][h].Show == 'WasteWater') {
|
||
updateConfigMultiLanguage(mapping['WaterScalar'], ch[c][s][h], mapping_data);
|
||
} else if (ch[c][s][h].Show == 'WasteOther') {
|
||
updateConfigMultiLanguage(mapping['OtherScalar'], ch[c][s][h], mapping_data);
|
||
}
|
||
} else {
|
||
updateConfigMultiLanguage(mapping[setKeyTitle(ch[c][s][h].Keys)], ch[c][s][h], mapping_data);
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
if (typeof ch[c] == 'object') {
|
||
getConfigHeader(mapping, ch[c], mapping_data);
|
||
}
|
||
}
|
||
}
|
||
|
||
function SetMultiLanguageForOrderItem(mapping, config, mapping_data) {
|
||
for (var mp in mapping) {
|
||
if (typeof config[mp] != 'undefined') {
|
||
for (var i = 0; i < config[mp].Item.length; i++) {
|
||
if (typeof mapping[mp][config[mp].Item[i].Name] != 'undefined') {
|
||
updateConfigMultiLanguage(mapping[mp][config[mp].Item[i].Name], config[mp].Item[i], mapping_data)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function SetMultiLanguageForForm(mapping, config, mapping_data) {
|
||
for (var mp in mapping) {
|
||
if (typeof config[mp] != 'undefined') {
|
||
updateConfigMultiLanguage(mapping[mp], config[mp], mapping_data)
|
||
}
|
||
}
|
||
}
|
||
|
||
function updateConfigMultiLanguage(mapping, ch, mapping_data) {
|
||
if (typeof mapping != 'undefined' && mapping != '' && mapping != null) {
|
||
if (typeof ch.ChN != 'undefined') {
|
||
ch.ChN = mapping_data[mapping];
|
||
} else if (typeof ch.Name != 'undefined') {
|
||
ch.Name = mapping_data[mapping];
|
||
} else if (typeof ch.title != 'undefined') {
|
||
ch.title = mapping_data[mapping];
|
||
} else {
|
||
for (var m in mapping) {
|
||
ch[m] = mapping_data[mapping[m]];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function resetLCAState(scope, td) {
|
||
if (typeof td != 'undefined' && td != null) {
|
||
if (typeof scope.targetChildRow == 'undefined' || scope.targetChildRow == -1) {
|
||
var dr = scope.Survey_Table[0].Data_Row[td];
|
||
for (var d in dr.Data_Row_Edit) {
|
||
dr.Data_Row_Edit[d].edit = false;
|
||
dr.Data_Row_Edit[d].required = false;
|
||
}
|
||
} else {
|
||
var cm = scope.Survey_Table[0].Data_Row[scope.targetRow].ChildMaterials;
|
||
for (var c = 0; c < cm.length; c++) {
|
||
for (var d in cm[c].Data_Row_Edit) {
|
||
cm[c].Data_Row_Edit[d].edit = false;
|
||
cm[c].Data_Row_Edit[d].required = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
scope.targetColumn = -1;
|
||
scope.targetRow = -1;
|
||
scope.targetChildRow = -1;
|
||
scope.targetTable = -1;
|
||
scope.Table_Edit_State = false;
|
||
scope.Table_Add_State = false;
|
||
scope.Enable_Add_Child = false;
|
||
scope.Table_Child_Add_State = false;
|
||
scope.Table_Child_Edit_State = false;
|
||
}
|
||
|
||
function setParameterID(sd, scope) {
|
||
var roi = scope.current_item;
|
||
var options = scope[roi + 'Options'];
|
||
var op1 = getOptionsItem(options, sd);
|
||
var op2 = getOptionsItem(options[op1], sd);
|
||
if (roi == 'Waste') {
|
||
if (sd.Type == 0) options = scope[roi + 'Options1'];
|
||
else if (sd.Type == 1) options = scope[roi + 'Options2'];
|
||
op1 = getOptionsItem(options, sd);
|
||
op2 = getOptionsItem(options[op1], sd);
|
||
sd.ParameterID = parseInt(options[op1][op2][0]);
|
||
return sd.ParameterID;
|
||
} else if (roi == 'Transport' || roi == 'WasteTransport' || roi == 'FireEquipment' || roi == 'OtherCompound') {
|
||
if (typeof op1 != 'undefined' && op1 != null && typeof op2 != 'undefined' && op2 != null) {
|
||
sd.ParameterID = parseInt(options[op1][op2][0]);
|
||
} else {
|
||
sd.ParameterID = null;
|
||
}
|
||
return sd.ParameterID;
|
||
} else if (roi == 'Vehicle' || roi == 'GasolineEquipment' || roi == 'Kitchen') {
|
||
var op3 = getOptionsItem(options[op1][op2], sd);
|
||
sd.ParameterID = parseInt(options[op1][op2][op3][0]);
|
||
return sd.ParameterID;
|
||
}
|
||
}
|
||
|
||
function getOptionsItem(options, compare) {
|
||
for (var ops in options) {
|
||
for (var c in compare) {
|
||
if (typeof compare[c] == 'string' && compare[c].substr(0, 1) == '"' && compare[c].substr(compare[c].length - 1) == '"') {
|
||
compare[c] = compare[c].substr(1, compare[c].length - 2);
|
||
}
|
||
if (compare[c] == ops) return ops;
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
|
||
function checkFileType(file, type) {
|
||
var file_type = '';
|
||
if (typeof type != 'undefined') file_type = type;
|
||
if (file.type.indexOf(file_type) > -1) return true;
|
||
return false;
|
||
}
|
||
|
||
function uploadFile(h, f) {
|
||
//console.log('uploadFile', h, f);
|
||
var frm = new FormData();
|
||
frm.append('file', f);
|
||
var arr = window.location.href.split("/");
|
||
if (arr[3].indexOf('app') == 0)
|
||
baseUrl = '';
|
||
else
|
||
baseUrl = '/' + arr[3];
|
||
return h.post(baseUrl+'/api/Upload', frm, {
|
||
transformRequest: angular.identity,
|
||
headers: { 'Content-Type': undefined }
|
||
});
|
||
}
|
||
|
||
|
||
function setOrderItems(SFC, isProductLCA) {
|
||
var order_items = {};
|
||
for (var o in SFC) {
|
||
order_items[o] = {};
|
||
for (var l in SFC[o]) {
|
||
if (l != 'Item') {
|
||
order_items[o][l] = SFC[o][l];
|
||
} else {
|
||
if (isProductLCA) {
|
||
order_items[o][l] = SFC[o][l];
|
||
} else {
|
||
var organization_item = [0, 6, 11, 14, 16];
|
||
order_items[o][l] = [];
|
||
for (var t = 0; t < SFC[o][l].length; t++) {
|
||
for (var oi = 0; oi < organization_item.length; oi++) {
|
||
if (t == organization_item[oi]) {
|
||
order_items[o][l].push(SFC[o][l][t]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return order_items;
|
||
}
|
||
|
||
function setMaterialsServerData(materials, roi) {
|
||
var Server_Data = [];
|
||
var n = 1;
|
||
for (var m = 0; m < materials.length; m++) {
|
||
if (!materials[m].isChild) {
|
||
materials[m].row_height = 30;
|
||
materials[m].No = n;
|
||
if (roi == 'LCI_Direct_Material' && materials[m].MaterialType == 0) {
|
||
Server_Data.push(materials[m]);
|
||
n++;
|
||
} else if (roi == 'LCI_Indirect_Material' && materials[m].MaterialType == 1) {
|
||
Server_Data.push(materials[m]);
|
||
n++;
|
||
} else if (roi == 'LCI_Wrap_Material' && materials[m].MaterialType == 2) {
|
||
Server_Data.push(materials[m]);
|
||
n++;
|
||
} else if (roi == 'High_Level_Analysis') {
|
||
Server_Data.push(materials[m]);
|
||
n++;
|
||
}
|
||
}
|
||
}
|
||
return Server_Data;
|
||
}
|
||
|
||
function setNonMaterialServerData(response, itemname, scope, filter) {
|
||
var n = 1;
|
||
var Server_Data = [];
|
||
for (var m = 0; m < response[itemname].length; m++) {
|
||
var set_server_data = true;
|
||
if (typeof scope.radio_id != 'undefined' && response[itemname][m].Type != scope.radio_id) {
|
||
set_server_data = false;
|
||
}
|
||
if (set_server_data) {
|
||
response[itemname][m].No = n;
|
||
for (var res in response[itemname][m]) {
|
||
if (res.indexOf('Date') > -1) {
|
||
response[itemname][m][res] = filter('date')(new Date(response[itemname][m][res]), 'yyyy/MM/dd');
|
||
}
|
||
}
|
||
Server_Data.push(response[itemname][m]);
|
||
n++;
|
||
}
|
||
}
|
||
return Server_Data;
|
||
}
|
||
|
||
function setMonthlyTableArea(res) {
|
||
var Usage_Area_Selected = null;
|
||
for (var r = 0; r < res.length; r++) {
|
||
if (res[r].Area != null) {
|
||
Usage_Area_Selected = res[r].Area;
|
||
break;
|
||
}
|
||
}
|
||
return Usage_Area_Selected;
|
||
}
|
||
|
||
function setResponseIndex(res, _st, s, th) {
|
||
var res_index = -1;
|
||
for (var r = 0; r < res.length; r++) {
|
||
if (_st.length > 1) {
|
||
if (res[r].Index == th && res[r].Type == s) res_index = r;
|
||
} else {
|
||
if (res[r].Index == th) res_index = r;
|
||
}
|
||
}
|
||
return res_index;
|
||
}
|
||
|
||
function initTableRowData(res, _th, _dr, _st, s, th) {
|
||
for (var l = 1; l < Setkeys(_st[s].Table_Left_Title).length; l++) _dr.push([]);
|
||
for (var th = 0; th < _th.length; th++) {
|
||
var keyname = setKeyTitle(_th[th].Keys);
|
||
var res_index = setResponseIndex(res, _st, s, th);
|
||
|
||
if (res_index != -1) {
|
||
if (res[res_index].Type != 'undefined') {
|
||
_th[th].ID = res[res_index].ID;
|
||
for (var l = 1; l < Setkeys(_st[s].Table_Left_Title).length; l++) {
|
||
if (res[res_index][Setkeys(_st[s].Table_Left_Title)[l]] != null) {
|
||
_dr[l - 1][keyname] = res[res_index][Setkeys(_st[s].Table_Left_Title)[l]];
|
||
} else {
|
||
if (Setkeys(_st[s].Table_Left_Title)[l] != 'Area' && Setkeys(_st[s].Table_Left_Title)[l] != 'Year') {
|
||
_dr[l - 1][keyname] = 0;
|
||
} else {
|
||
_dr[l - 1][keyname] = null;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
for (var d = 0; d < _dr.length; d++) {
|
||
if (Setkeys(_st[s].Table_Left_Title)[d + 1] != 'Area' && Setkeys(_st[s].Table_Left_Title)[d + 1] != 'Year') {
|
||
_dr[d][keyname] = 0;
|
||
} else {
|
||
_dr[d][keyname] = null;
|
||
}
|
||
}
|
||
_th[th].ID = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
function setCSVUploadMonthlyTableData(_tlt, _th, _dr, Table_Edit_State) {
|
||
var send_data = {};
|
||
for (var tlt = 1; tlt < Setkeys(_tlt).length; tlt++) {
|
||
if (typeof _dr[tlt - 1][setKeyTitle(_th.Keys)] != 'undefined' && _dr[tlt - 1][setKeyTitle(_th.Keys)] != null) {
|
||
if (Table_Edit_State) {
|
||
if (Setkeys(_tlt)[tlt] != 'Year') {
|
||
send_data[Setkeys(_tlt)[tlt]] = _dr[tlt - 1].Data_Row_Edit[setKeyTitle(_th.Keys)].data;
|
||
} else {
|
||
send_data[Setkeys(_tlt)[tlt]] = _dr[tlt - 1][setKeyTitle(_th.Keys)];
|
||
}
|
||
} else {
|
||
send_data[Setkeys(_tlt)[tlt]] = _dr[tlt - 1][setKeyTitle(_th.Keys)];
|
||
}
|
||
}
|
||
}
|
||
return send_data;
|
||
}
|
||
|
||
function compare(scope) {
|
||
if (scope.KgCO2e_total_count != 0) {
|
||
var current_percentage = scope.KgCO2e_select_count / scope.KgCO2e_total_count * 100;
|
||
var pcr_percentage = scope.PCR_percentage;
|
||
if (current_percentage < pcr_percentage) {
|
||
scope.percentage_compare = '<';
|
||
} else if (current_percentage == pcr_percentage) {
|
||
scope.percentage_compare = '=';
|
||
} else if (current_percentage > pcr_percentage) {
|
||
scope.percentage_compare = '>';
|
||
}
|
||
} else {
|
||
scope.percentage_compare = '?';
|
||
}
|
||
}
|
||
|
||
function checkTableEditValidation(dr, th) {
|
||
var all_need_filled = true;
|
||
for (var t = 0; t < th.length; t++) {
|
||
var keyname = setKeyTitle(th[t].Keys);
|
||
if (th[t].Require) { // 若欄位為必填
|
||
if (th[t].Type != 'select') {
|
||
if (dr.Data_Row_Edit[keyname].data == '' || dr.Data_Row_Edit[keyname].data == null) {
|
||
dr.Data_Row_Edit[keyname].required = true;
|
||
all_need_filled = false;
|
||
}
|
||
} else {
|
||
if (dr[keyname] == '' || dr[keyname] == null) {
|
||
dr.Data_Row_Edit[keyname].required = true;
|
||
all_need_filled = false;
|
||
}
|
||
}
|
||
} else if (typeof th[t].Require == 'undefined' || !th[t].Require) { // 若欄位為非必填
|
||
if (th[t].Type == 'email') {
|
||
if (typeof dr.Data_Row_Edit[keyname].data != 'undefined' && dr.Data_Row_Edit[keyname].data != '' && dr.Data_Row_Edit[keyname].data != null) {
|
||
if (dr.Data_Row_Edit[keyname].data.indexOf('@') > -1) {
|
||
if (!/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b/.test(dr.Data_Row_Edit[keyname].data)) {
|
||
dr.Data_Row_Edit[keyname].required = true;
|
||
all_need_filled = false;
|
||
} else {
|
||
dr.Data_Row_Edit[keyname].required = false;
|
||
}
|
||
} else {
|
||
dr.Data_Row_Edit[keyname].required = true;
|
||
all_need_filled = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (all_need_filled) return true;
|
||
else return false;
|
||
}
|
||
|
||
function calculateWasteWaterScalar(dre) {
|
||
var b = dre.WaterBOD.data;
|
||
var c = dre.WaterCOD.data;
|
||
var m = dre.WaterCMD.data;
|
||
if (b == 0 && c == 0) {
|
||
|
||
} else {
|
||
if (m == null) {
|
||
|
||
} else {
|
||
if (c != 0) dre.Scalar.data = c * m;
|
||
else dre.Scalar.data = b * m;
|
||
}
|
||
}
|
||
if (b == null) dre.WaterBOD.data = 0;
|
||
if (c == null) dre.WaterCOD.data = 0;
|
||
}
|
||
|
||
function splitCSVFileData(data, _st) {
|
||
var result = [];
|
||
if (data.indexOf('\r\n') > -1) {
|
||
var current = data.substr(0, data.indexOf('\r\n'));
|
||
var last = data.substr(data.indexOf('\r\n') + 1);
|
||
var isheader = true;
|
||
//console.log(data.indexOf(','));
|
||
//console.log(data.indexOf('\r\n'));
|
||
//console.log(current);
|
||
var gg = 0;
|
||
while (last.indexOf(',') > -1) {
|
||
result.push(splitCSVDataRow(current, _st, isheader));
|
||
isheader = false;
|
||
current = last.substr(0, last.indexOf('\r\n'));
|
||
//console.log(current);
|
||
last = last.substr(last.indexOf('\r\n') + 1);
|
||
//gg++;
|
||
//if (gg > 100) break;
|
||
}
|
||
} else {
|
||
var row_data_length = findDataRowLength(_st);
|
||
var row_count = 0;
|
||
var last = data;
|
||
//console.log(row_data_length);
|
||
//var gg = 0;
|
||
while (last.indexOf(',') > -1) {
|
||
result.push([]);
|
||
for (var d = 0; d < row_data_length; d++) {
|
||
var current = last.substr(0, last.indexOf(','));
|
||
last = last.substr(last.indexOf(',') + 1);
|
||
if (d == 0 && current.indexOf('\n') > -1) current = current.substr(current.indexOf('\n') + 1);
|
||
result[row_count].push(current);
|
||
}
|
||
row_count++;
|
||
//gg++;
|
||
//if (gg > 15) break;
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
function splitCSVDataRow(row_data, _st, isheader) {
|
||
var _th = _st[0].Table_Header;
|
||
var nondata = 0;
|
||
var temp = '';
|
||
var row = [];
|
||
var current = row_data.substr(0, row_data.indexOf(','));
|
||
var last = row_data.substr(row_data.indexOf(',') + 1);
|
||
//console.log(current);
|
||
//console.log(last);
|
||
for (var t = 0; t < _th.length; t++) {
|
||
if (_th[t].Type == 'no' || _th[t].Type == 'formula' || _th[t].Name == 'Total' || _th[t].Type == 'upload' || _th[t].Type == 'simapro' || _th[t].Type == 'encoding') {
|
||
nondata++;
|
||
} else {
|
||
if (_th[t].Keys[0] == 'Description') {
|
||
if (isheader) {
|
||
//console.log(last);
|
||
current = current + last.substr(0, last.indexOf('"'));
|
||
row.push(last);
|
||
last = last.substr(last.indexOf('"') + 1);
|
||
} else {
|
||
current = current + last.substr(0, last.indexOf('"'));
|
||
row.push(current);
|
||
last = last.substr(last.indexOf('"') + 1);
|
||
}
|
||
} else {
|
||
//console.log(_th[t].Name);
|
||
//console.log(current);
|
||
//console.log(last, '\r\n');
|
||
//console.log(current.indexOf(','));
|
||
//console.log(current.indexOf('\r\n'));
|
||
row.push(current);
|
||
current = last.substr(0, last.indexOf(','));
|
||
last = last.substr(last.indexOf(',') + 1);
|
||
}
|
||
}
|
||
}
|
||
return row;
|
||
}
|
||
|
||
function findDataRowLength(_st) {
|
||
var nondata = 0;
|
||
var _th = _st[0].Table_Header;
|
||
for (var t = 0; t < _th.length; t++) {
|
||
if (_th[t].Type == 'no' || _th[t].Type == 'formula' || _th[t].Name == 'Total' || _th[t].Type == 'upload' || _th[t].Type == 'simapro' || _th[t].Type == 'encoding') {
|
||
nondata++;
|
||
}
|
||
}
|
||
return _th.length - nondata;
|
||
}
|
||
|
||
function validateDate(testdate) {
|
||
var regx1 = /^\d{4}\/\d{2}\/\d{1}$/;
|
||
var regx2 = /^\d{4}\/\d{2}\/\d{2}$/;
|
||
var regx3 = /^\d{4}\/\d{1}\/\d{1}$/;
|
||
var regx4 = /^\d{4}\/\d{1}\/\d{2}$/;
|
||
var ck1 = regx1.test(testdate);
|
||
var ck2 = regx2.test(testdate);
|
||
var ck3 = regx3.test(testdate);
|
||
var ck4 = regx4.test(testdate);
|
||
return (ck1 || ck2 || ck3 || ck4);
|
||
}
|
||
|
||
function addDays(date, days) {
|
||
var result = new Date(date);
|
||
result.setDate(result.getDate() + days);
|
||
return result;
|
||
} |