ibms-dome/Frontend/js/yourteam/yourteam.utility.class.js
2022-12-09 15:37:15 +08:00

1041 lines
39 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var YourTeam = YourTeam || {};
YourTeam.Utility = YourTeam.Utility || {};
class UrlHelper {
constructor() {
}
/* @deprecated since version 0.2
* @description get the param value
* @param {String} sName url param name
* @return {String}
* @author Darren Chen
* @date 2018/04/18
*/
param = function (sName) {
this._sName = sName;
let sReg = new RegExp("(^|&)" + _sName + "=([^&]*)(&|$)"); //創建一個含有目標参数的正則表達式對象
let sMatchTarget = window.location.search.substr(1).match(sReg); //匹配目標参數
if (sMatchTarget !== null) {
return unescape(sMatchTarget[2]);
}
return null; //返回参數值
}
/* @deprecated since version 0.2
* @description get the param value form the page`s url
* @param {String} sName url param name
* @param {String} sPageName url page name
* @return {String}
* @author Darren Chen
* @date 2018/04/18
*/
paramForPage = function (sName, sPageName) {
this.prototype = fnGetUrlParam;
let str = this.prototype(sName);
this._sPageName = sPageName;
if (str !== null && window.location.href.indexOf(_sPageName) !== -1) {
return str;
}
//if (location.pathname) {
// var sReg = new RegExp("(^|&)" + sName + "=([^&]*)(&|$)"); //創建一個含有目標参数的正則表達式對象
// var sMatchTarget = window.location.search.substr(1).match(sReg); //匹配目標参數
// if (sMatchTarget !== null && window.location.href.indexOf(sPageName) !== -1) {
// return unescape(sMatchTarget[2]);
// }
//}
return null; //返回参數值
}
}
YourTeam.Utility.Url = YourTeam.Utility.Url || UrlHelper;
class UIOperat {
constructor() {
}
/* @deprecated since version 0.1
* @description disabled all element in the page (close out some element)
* @param {Array} aOutElementId close out element array
* @return
* @author Darren Chen
* @date 2018/04/22
*/
disabledAllElement = function (aOutElementId) {
let aElement = document.getElementsByTagName("input");
fnSetAllElementDisabled(aElement, aOutElementId);
aElement = document.getElementsByTagName("textarea");
fnSetAllElementDisabled(aElement, aOutElementId);
aElement = document.getElementsByTagName("select");
fnSetAllElementDisabled(aElement, aOutElementId);
aElement = document.getElementsByTagName("button");
fnSetAllElementDisabled(aElement, aOutElementId);
//aElement = document.getElementsByTagName("label");
//for (var i = 0; i < aElement.length; i++) {
// for (var ii = 0; ii < aOutElementId.length; ii++) {
// if (aElement[i] != aOutElementId[ii])
// aElement[i].setAttribute("style", "pointer-events:none;display:block;");
// }
//}
}
/* @deprecated since version 0.1
* @description set all element disabled (close out some element)
* @param {Array} aElement element array
* @param {Array} aOutElementId close out element array
* @return
* @author Darren Chen
* @date 2018/04/22
*/
setAllElementDisabled = function (aElement, aOutElementId) {
for (let i = 0; i < aElement.length; i++) {
for (let ii = 0; ii < aOutElementId.length; ii++) {
if (aElement[i] !== aOutElementId[ii])
aElement[i].disabled = true;
}
}
}
/* @deprecated since version 0.1
* @description get checked checkboxs (array) for this project
* @param {string} checkBoxName the delete checkbox`s element name
* @return
* @author Darren Chen
* @date 2018/07/24
*/
getCheckedArray(checkBoxName = "id") {
return $('input:checkbox[name=' + checkBoxName + ']:checked').map(function () {
return $(this).val();
}).get();
}
}
YourTeam.Utility.UIOperat = YourTeam.Utility.UIOperat || UIOperat;
class UIData {
constructor() {
}
/* @deprecated since version 0.1
* @description get checked checkboxs
* @param {String} checkBoxName the delete checkbox`s element name
* @return ex."551,676,991,188,457,125"
* @author Darren Chen
* @date 2018/07/24
*/
checkBoxValueJoin = function (checkBoxName) {
return $('input:checkbox[name=' + checkBoxName + ']:checked').map(function () {
return $(this).val();
}).get().join(',');
}
/* @deprecated since version 0.1
* @description get checked checkboxs
* @param {String} checkBoxName the delete checkbox`s element name
* @return ex."551,676,991,188,457,125"
* @author Darren Chen
* @date 2018/07/24
*/
checkBoxValueArray = function (checkBoxName) {
let ary = [];
$('input:checkbox[name=' + checkBoxName + ']:checked').each(function (index, element) {
ary.push($(element).val());
});
return ary;
}
/* @deprecated since version 0.1
* @description Convrt Int To Float
* @param {String} number ori number
* @param {String} keepNum keep number after .
* @return {String}
* @author Darren Chen
* @date 2019/12/31
*/
convrtIntToFloat = function (number, keepNum) {
let zeroNumber = fnPaddingRight("1", keepNum + 1, "0");
zeroNumber = parseInt(zeroNumber);
return Math.round(parseFloat(number) * zeroNumber) / zeroNumber;
}
/* @deprecated since version 0.1
* @description The string Padding Left char
* @param {String} str ori string
* @param {Number} lenght will get string`s lenght
* @param {String} add char
* @return {String}
* @author Darren Chen
* @date 2019/12/31
*/
paddingLeft = function (str, lenght, char) {
if (str.length >= lenght)
return str;
else
return fnPaddingLeft(char + str, lenght);
}
/* @deprecated since version 0.1
* @description The string Padding Right char
* @param {String} str ori string
* @param {Number} lenght will get string`s lenght
* @param {String} add char
* @return {String}
* @author Darren Chen
* @date 2019/12/31
*/
paddingRight = function (str, lenght, char) {
if (str.length >= lenght)
return str;
else
return fnPaddingRight(str + char, lenght);
}
}
YourTeam.Utility.UIData = YourTeam.Utility.UIData || UIData;
class CookieHelper {
constructor() {
}
/* @deprecated since version 0.1
* @description Create a simple cookie (The duration is preset to 2 days)
* @param {String} name name with the cookie
* @param {String} value value with the cookie
* @return
* @author Darren Chen
* @date 2018/07/24
*/
create = function (name, value) {
let expires = new Date();
//有效時間保存 2 天 2*24*60*60*1000
expires.setTime(expires.getTime() + 172800000);
document.cookie = name + "=" + escape(value) + ";expires=" + expires.toGMTString();
}
/* @deprecated since version 0.1
* @description Get the cookie value by cookie name
* @param {String} name name with the cookie
* @return {String}
* @author Darren Chen
* @date 2018/07/24
*/
get(name) {
let arg = escape(name) + "=";
let nameLen = arg.length;
let cookieLen = document.cookie.length;
let i = 0;
while (i < cookieLen) {
let j = i + nameLen;
if (document.cookie.substring(i, j) === arg) return this.getByIndex(j);
i = document.cookie.indexOf(" ", i) + 1;
if (i === 0) break;
}
return null;
}
/* @deprecated since version 0.1
* @description Get the cookie value by index
* @param {Number} index name with the cookie
* @return {String}
* @author Darren Chen
* @date 2018/07/24
*/
getByIndex(startIndex) {
let endIndex = document.cookie.indexOf(";", startIndex);
if (endIndex === -1) endIndex = document.cookie.length;
return unescape(document.cookie.substring(startIndex, endIndex));
}
/* @deprecated since version 0.1
* @description Remove the cookie by cookie name
* @param {String} name name with the cookie
* @return {Boolean}
* @author Darren Chen
* @date 2021/05/27
*/
remove(name) {
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:01 GMT;";
if (this.get(name) === null || this.get(name) === "undefined") {
return true;
}
return false;
}
}
YourTeam.Utility.Cookie = YourTeam.Utility.Cookie || CookieHelper;
var mathHelperRandomNotRepeatNum = [];
class MathHelper {
constructor() {
}
/*
* @deprecated since version 0.1
* @description 取得隨機值
* @param {Number} min 最小值
* @param {Number} max 最大值
* @returns {Number}
*/
random(min, max) {
return Math.floor(Math.random() * max) + min;
}
/*
* @deprecated since version 0.1
* @description 取得GUID
* @param {String} str 分隔符號,預設值'-'。
* @param {Boolean} isUpperCase 是否大寫預設值true。
* @returns {String}
*/
guid(str = null, isUpperCase = true) {
let strGuid = 'xxxxxxxx-xxxx-0xxx-yxyx-xxxxxxxxxxxx';
if (str) {
strGuid = strGuid.replace('-', str);
}
strGuid = strGuid.replace(/[xy]/g, function (c) {
var string = Math.random() * 16 | 0, v = c === 'x' ? string : (string & 0x3 | 0x8);
return string.toString(16);
});
if (isUpperCase) {
strGuid.toUpperCase();
}
return strGuid;
}
/*
* @deprecated since version 0.1
* @description 四捨五入取小數點後2位
* @param {Number} num 數值
* @returns {Number}
*/
roundRight2p(num) {
return +(Math.round(num + "e+2") + "e-2");
}
/*
* @deprecated since version 0.1
* @description 四捨五入取小數點後2位
* @param {Number} num 數值
* @returns {Number}
*/
roundRight2p2(num) {
let m = Number((Math.abs(num) * 100).toPrecision(15));
return Math.round(m) / 100 * Math.sign(num);
}
}
YourTeam.Utility.Math = YourTeam.Utility.Math || MathHelper;
class DateHelper {
constructor() {
}
/*
* @deprecated since version 0.1
* @description 取得現在時間(yyyy-MM-dd)
* @param {Boolean} isTwYear it`s Taiwan year?
* @returns {String}
*/
getNow = function (isTwYear = false) {
let d = new Date();
let year = isTwYear ? d.getFullYear() - 1911 : d.getFullYear();
let month = d.getMonth() + 1;
let day = d.getDate();
let now = year + '-' +
(month < 10 ? '0' : '') + month + '-' +
(day < 10 ? '0' : '') + day;
return now;
}
/*
* @deprecated since version 0.1
* @description 取得日期時間(2020/02/02 PM 18:05:25)
* @param {Boolean} isTwYear it`s Taiwan year?
* @param {String} dateInterval 最小值
* @param {Boolean} isPadZero 最大值
* @param {Number} timeTagType 時間前戳標記 1:AM/PM 2:上午/下午
* @returns {String}
*/
getNowHaveTimeTag = function (isTwYear = false, dateInterval = '/', isPadZero = true, timeTagType = 1) {
let now = new Date();
let years = isTwYear ? now.getFullYear() - 1911 : now.getFullYear();
let months = now.getMonth();
let days = now.getDay();
let hours = now.getHours();
let minutes = now.getMinutes();
let seconds = now.getSeconds();
let dateValue = years;
let timeValue = ((hours >= 12) ? "下午 " : "上午 ");
if (timeTagType === 2) timeValue = ((hours >= 12) ? "AM " : "PM ");
if (isPadZero) {
dateValue += (dateInterval + ((months < 10) ? "0" : "") + months);
dateValue += (dateInterval + ((days < 10) ? "0" : "") + days);
timeValue += ((hours > 12) ? "0" + (hours - 12) : hours);
timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
}
else {
dateValue += (dateInterval + months);
dateValue += (dateInterval + days);
timeValue += ((hours > 12) ? hours - 12 : hours);
timeValue += minutes;
timeValue += seconds;
}
return dateValue + " " + timeValue;
}
/*
* @deprecated since version 0.1
* @description 取得日期時間(2020/02/02 18:05:25)
* @param {Boolean} isTwYear it`s Taiwan year?
* @param {String} dateInterval 日期間隔字元
* @param {Boolean} isPadZero 是否補0
* @returns {String} 回傳時間字串
*/
getNowChangeInterval = function (isTwYear = false, dateInterval = '/', isPadZero = true) {
let today = new Date();
let year = isTwYear ? today.getFullYear() - 1911 : today.getFullYear();
let currentDateTime =
year + dateInterval + ((isPadZero && today.getMonth() + 1 < 10) ? '0' : '') +
(today.getMonth() + 1) + dateInterval + ((isPadZero && today.getDate() < 10) ? '0' : '') +
today.getDate() + ' ' + ((isPadZero && today.getHours() < 10) ? '0' : '') +
today.getHours() + ':' + ((isPadZero && today.getMinutes() < 10) ? '0' : '') +
today.getMinutes();
return currentDateTime;
}
/*
* @deprecated since version 0.1
* @description 取得加減的日期時間(2020/02/02 18:05:25)
* @param {Boolean} isTwYear it`s Taiwan year?
* @param {String} dateInterval 日期間隔字元
* @param {Boolean} isPadZero 是否補0
* @returns {String} 回傳時間字串
*/
getChangeDateTime(isTwYear = false, dateInterval = '/', addYears = 0, addMonths = 0, addDays = 0, isPadZero = true) {
let today = new Date();
let year = isTwYear ? today.getFullYear() - 1911 : today.getFullYear();
if (addYears > year || addMonths > today.getMonth() || addDays > today.getDate()) {
return false;
}
let date =
(year + addYears) + dateInterval + ((isPadZero && today.getMonth() + addMonths + 1 < 10) ? '0' : '') +
(today.getMonth() + addMonths + 1) + dateInterval + ((isPadZero && today.getDate() + addDays < 10) ? '0' : '') +
(today.getDate() + addDays);
return date;
}
/*
* @deprecated since version 0.1
* @description 取得禮拜/週幾(禮拜五)
* @param {String} dayPreString 前置詞 (禮拜/週/周)
* @returns {String} 回傳時間字串
*/
getWeekDay(dayPreString = "") {
let day = "";
let day_list = ['日', '一', '二', '三', '四', '五', '六'];
let today = new Date();
let dayGet = today.getDay(); // or "new Date().getDay()";
if (dayPreString === "") {
day = "(" + day_list[dayGet] + ")";
} else {
day = dayPreString + day_list[dayGet];
}
return day;
}
/*
* @deprecated since version 0.1
* @description 取得月份天數
* @param {Number} year 年份 (def null)
* @param {Number} month 月份 (def null)
* @returns {Number} 回傳月份天數
*/
getMonthDayCount(year=null,month=null) {
let myYear = year;
let myMonth = month;
let myDate,myDayCount;
if (!myYear) {
myYear = new Date().getFullYear();
}
if (!myMonth) {
myMonth = new Date().getMonth();
}
//宣告日期物件
myDate = new Date(myYear, myMonth+1, 0);
//取得天數
myDayCount = myDate.getDate();
return daycount;
}
/*
* @deprecated since version 0.1
* @description 取得月份最後一天的日期字串
* @param {Number} year 年份 (def null)
* @param {Number} month 月份 (def null)
* @returns {String} 回傳月份天數字串
*/
getMonthLastDateStr(year = null, month = null) {
let myYear = year;
let myMonth = month;
let daycount;
if (!myYear) {
myYear = new Date().getFullYear();
}
if (!myMonth) {
myMonth = new Date().getMonth();
}
daycount = this.getMonthDayCount(year, month);
let myMonthLastDate = myYear + "/"
+ (myMonth < 10) ? "0" : "" + myMonth + "/"
+ (daycount < 10) ? "0" : "" + daycount;
return myMonthLastDate;
}
}
YourTeam.Utility.DateHelper = YourTeam.Utility.DateHelper || DateHelper;
class File {
constructor() {
}
readAndPreviewImages(files, containerId, imgWidth = null, imgHeight = null, frontHtml = null, backHtml = null, funDoSomeThing = null, limitMaxSize = null, limitMinSize = 0,limitFun = null) {
let htmlImg = "";
let container = document.getElementById(containerId);
let width = imgWidth ? imgWidth + "px" : "auto";
let height = imgHeight ? imgHeight + "px" : "auto";
let myMath = new YourTeam.Utility.Math();
let myFile = new YourTeam.Utility.File();
let strExtName = "", strOrgName = "";
if (files.length > 0) {
for (let i = 0; i < files.length; i++) {
let file = files[i];
if (limitMaxSize != null) {
if (file.size / 1024 < limitMinSize || file.size / 1024 > limitMaxSize) {
limitFun ? limitFun() : "";
return false
}
}
htmlImg = "";
let guid = myMath.guid().replace(' ', '');
file.guid = guid;
if (/\.(jpe?g|png|gif)$/i.test(file.name)) {
let reader = new FileReader();
reader.addEventListener("load", function () {
let image = new Image();
let src = this.result;
image.src = this.result;
image.onload = function () {
strExtName = myFile.getFileExtension(file.name);
strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
htmlImg = frontHtml + '<img data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + guid + '" data-extname="' + strExtName
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '">'
+ backHtml;
container.insertAdjacentHTML("afterBegin", htmlImg);
//$("[name=" + removeClickTagName + "]").on("click", function (e) {
// e.preventDefault();
// $(this).closest(removeTag).remove();
//});
if (i === files.length - 1 && funDoSomeThing) {
funDoSomeThing();
}
}
});
reader.readAsDataURL(file);
} else {
if (showAlert) {
showAlert("danger", "只支援圖片格式");
}
else {
alert("只支援圖片格式");
}
}
}
}
else {
let file = files;
if (limitMaxSize != null) {
if (file.size / 1024 < limitMinSize || file.size / 1024 > limitMaxSize) {
limitFun ? limitFun() : "";
return false
}
}
htmlImg = "";
let guid = myMath.guid().replace(' ', '');
file.guid = guid;
if (/\.(jpe?g|png|gif)$/i.test(file.name)) {
let reader = new FileReader();
reader.addEventListener("load", function () {
let image = new Image();
let src = this.result;
image.src = this.result;
image.onload = function () {
strExtName = myFile.getFileExtension(file.name);
strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
htmlImg = frontHtml + '<img data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + guid + '" data-extname="' + strExtName
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '">'
+ backHtml;
container.insertAdjacentHTML("afterBegin", htmlImg);
//$("[name=" + removeClickTagName + "]").on("click", function (e) {
// e.preventDefault();
// $(this).closest(removeTag).remove();
//});
if (funDoSomeThing) {
funDoSomeThing();
}
}
});
reader.readAsDataURL(file);
} else {
if (showAlert) {
showAlert("danger", "只支援圖片格式");
}
else {
alert("只支援圖片格式");
}
}
}
}
readAndPreviewFiles(files, containerId, imgWidth = null, imgHeight = null, frontHtml = null, backHtml = null, funDoSomeThing = null) {
let htmlImg = "";
let container = document.getElementById(containerId);
let width = imgWidth ? imgWidth + "px" : "128px";
let height = imgHeight ? imgHeight + "px" : "86px";
let myMath = new YourTeam.Utility.Math();
let myFile = new YourTeam.Utility.File();
let strExtName = "", strOrgName = "", strSaveName = "";
if (files.length) {
for (let i = 0; i < files.length; i++) {
let file = files[i];
htmlImg = "";
let guid = myMath.guid().replace(' ', '');
file.guid = guid;
//alert(/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(file.name));
if (/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(file.name)) {
if (file.size == 0) { //檔案大小為0時不會產生base64需防呆
showAlert("danger", "無法上傳大小為0的檔案");
return false;
}
//先新增a標籤 在套上src 可能解決多檔案上傳時無法讀取到最後上傳檔案的問題
strSaveName = guid;
strExtName = myFile.getFileExtension(file.name);
strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
htmlImg = frontHtml + '<a id="' + strSaveName + '" data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + strSaveName + '" data-extname="' + strExtName
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" download="' + strOrgName + '.' + strExtName + '" target="_blank">' + strOrgName + '.' + strExtName + '</a>'
+ backHtml;
container.insertAdjacentHTML("afterBegin", htmlImg);
let reader = new FileReader();
reader.addEventListener("load", function (event) {
$($(container).find("a")[i]).attr("href", this.result);
if (i === files.length - 1 && funDoSomeThing) {
funDoSomeThing();
}
});
reader.readAsDataURL(file);
} else {
if (showAlert) {
showAlert("danger", "只支援文件格式");
} else {
alert("只支援文件格式");
}
}
}
}
else {
let file = files;
htmlImg = "";
let guid = myMath.guid().replace(' ', '');
file.guid = guid;
//alert(/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(file.name));
if (/\.(xls?x|doc?x|ptt?x|pdf|zip|rar|7zip|txt|odt|xml|rtf|ods|odp|pps?x)$/i.test(file.name)) {
if (file.size == 0) { //檔案大小為0時不會產生base64需防呆
showAlert("danger", "無法上傳大小為0的檔案");
return false;
}
//先新增a標籤 在套上src 可能解決多檔案上傳時無法讀取到最後上傳檔案的問題
strSaveName = guid;
strExtName = myFile.getFileExtension(file.name);
strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
htmlImg = frontHtml + '<a id="' + strSaveName + '" data-filename="' + file.name + '" data-orgname="' + strOrgName + '" data-savename="' + strSaveName + '" data-extname="' + strExtName
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" download="' + strOrgName + '.' + strExtName + '" target="_blank">' + strOrgName + '.' + strExtName + '</a>'
+ backHtml;
container.insertAdjacentHTML("afterBegin", htmlImg);
let reader = new FileReader();
reader.addEventListener("load", function (event) {
$($(container).find("a")).attr("href", this.result);
if (funDoSomeThing) {
funDoSomeThing();
}
});
reader.readAsDataURL(file);
} else {
if (showAlert) {
showAlert("danger", "只支援文件格式");
} else {
alert("只支援文件格式");
}
}
}
}
async getBase64Image(path, callback) {
//生成canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = path;
img.setAttribute("crossOrigin", "Anonymous");
img.onload = await function () {
return new Promise((resolve) => {
//默認按比例壓縮
var w = this.width,
h = this.height;
var quality = 0.95; // 默認圖片質量為0.7
// 創建屬性節點
canvas.setAttribute("width", w);
canvas.setAttribute("height", h);
ctx.drawImage(this, 0, 0, w, h);
// quality值越小所繪制出的圖像越模糊
var base64 = canvas.toDataURL('image/jpeg', quality);
// 回調函數返回base64的值
callback(base64);
resolve();
})
};
}
getFileExtension(filename) {
return filename.slice((filename.lastIndexOf(".") - 1 >>> 0) + 2).toLowerCase();
}
}
YourTeam.Utility.File = YourTeam.Utility.File || File;
/* @deprecated since version 0.1
* @description jQuery Ajax Cors Setings (JSONP)
* @return
* @author Darren Chen
* @date 2018/07/24
*/
///// <reference path="/Scripts/YourTeam/js/yourteam.jq.ajax.cors.js" />
//var script = document.createElement("script"); //Make a script DOM node
//script.src = "/Scripts/YourTeam/js/yourteam.jq.ajax.cors.js"; //Set it's src to the provided URL
//document.head.appendChild(script); //Add it to the end of the head section of the page (could change 'head' to 'body' to add it to the end of the body section instead)
///* @deprecated since version 0.2
//* @description get the param value
//* @param {String} sName url param name
//* @return {String}
//* @author Darren Chen
//* @date 2018/04/18
//*/
//function fnGetUrlParam(sName) {
// this._sName = sName;
// let sReg = new RegExp("(^|&)" + _sName + "=([^&]*)(&|$)"); //創建一個含有目標参数的正則表達式對象
// let sMatchTarget = window.location.search.substr(1).match(sReg); //匹配目標参數
// if (sMatchTarget !== null) {
// return unescape(sMatchTarget[2]);
// }
// return null; //返回参數值
//}
///* @deprecated since version 0.2
//* @description get the param value form the page`s url
//* @param {String} sName url param name
//* @param {String} sPageName url page name
//* @return {String}
//* @author Darren Chen
//* @date 2018/04/18
//*/
//function fnGetUrlParamForPage(sName, sPageName) {
// this.prototype = fnGetUrlParam;
// let str = this.prototype(sName);
// this._sPageName = sPageName;
// if (str !== null && window.location.href.indexOf(_sPageName) !== -1) {
// return str;
// }
// //if (location.pathname) {
// // var sReg = new RegExp("(^|&)" + sName + "=([^&]*)(&|$)"); //創建一個含有目標参数的正則表達式對象
// // var sMatchTarget = window.location.search.substr(1).match(sReg); //匹配目標参數
// // if (sMatchTarget !== null && window.location.href.indexOf(sPageName) !== -1) {
// // return unescape(sMatchTarget[2]);
// // }
// //}
// return null; //返回参數值
//}
///* @deprecated since version 0.1
//* @description disabled all element in the page (close out some element)
//* @param {Array} aOutElementId close out element array
//* @return
//* @author Darren Chen
//* @date 2018/04/22
//*/
//function fnDisabledAllElement(aOutElementId) {
// let aElement = document.getElementsByTagName("input");
// fnSetAllElementDisabled(aElement, aOutElementId);
// aElement = document.getElementsByTagName("textarea");
// fnSetAllElementDisabled(aElement, aOutElementId);
// aElement = document.getElementsByTagName("select");
// fnSetAllElementDisabled(aElement, aOutElementId);
// aElement = document.getElementsByTagName("button");
// fnSetAllElementDisabled(aElement, aOutElementId);
// //aElement = document.getElementsByTagName("label");
// //for (var i = 0; i < aElement.length; i++) {
// // for (var ii = 0; ii < aOutElementId.length; ii++) {
// // if (aElement[i] != aOutElementId[ii])
// // aElement[i].setAttribute("style", "pointer-events:none;display:block;");
// // }
// //}
//}
///* @deprecated since version 0.1
//* @description set all element disabled (close out some element)
//* @param {Array} aElement element array
//* @param {Array} aOutElementId close out element array
//* @return
//* @author Darren Chen
//* @date 2018/04/22
//*/
//function fnSetAllElementDisabled(aElement, aOutElementId) {
// for (let i = 0; i < aElement.length; i++) {
// for (let ii = 0; ii < aOutElementId.length; ii++) {
// if (aElement[i] !== aOutElementId[ii])
// aElement[i].disabled = true;
// }
// }
//}
///* @deprecated since version 0.1
//* @description get checked checkboxs
//* @param {String} checkBoxName the delete checkbox`s element name
//* @return
//* @author Darren Chen
//* @date 2018/07/24
//*/
//function fnGetCheckedValue(checkBoxName) {
// return $('input:checkbox[name=' + checkBoxName + ']:checked').map(function () {
// return $(this).val();
// }).get().join(',');
//}
///* @deprecated since version 0.1
//* @description Create a simple cookie (The duration is preset to 2 days)
//* @param {String} name name with the cookie
//* @param {String} value value with the cookie
//* @return
//* @author Darren Chen
//* @date 2018/07/24
//*/
//function fnCreateCookie(name, value) {
// let expires = new Date();
// //有效時間保存 2 天 2*24*60*60*1000
// expires.setTime(expires.getTime() + 172800000);
// document.cookie = name + "=" + escape(value) + ";expires=" + expires.toGMTString();
//}
///* @deprecated since version 0.1
//* @description Get the cookie value by cookie name
//* @param {String} name name with the cookie
//* @return
//* @author Darren Chen
//* @date 2018/07/24
//*/
//function fnGetCookie(name) {
// let arg = escape(name) + "=";
// let nameLen = arg.length;
// let cookieLen = document.cookie.length;
// let i = 0;
// while (i < cookieLen) {
// let j = i + nameLen;
// if (document.cookie.substring(i, j) === arg) return getCookieValueByIndex(j);
// i = document.cookie.indexOf(" ", i) + 1;
// if (i === 0) break;
// }
// return null;
//}
///* @deprecated since version 0.1
//* @description Get the cookie value by index
//* @param {Number} index name with the cookie
//* @return
//* @author Darren Chen
//* @date 2018/07/24
//*/
//function fnGetCookieValueByIndex(startIndex) {
// let endIndex = document.cookie.indexOf(";", startIndex);
// if (endIndex === -1) endIndex = document.cookie.length;
// return unescape(document.cookie.substring(startIndex, endIndex));
//}
///*
//* @deprecated since version 0.1
//* @description 取得隨機值
//* @param {Number} min 最小值
//* @param {Number} max 最大值
//* @returns {Number}
//*/
//function fnGetRandom(min, max) {
// return Math.floor(Math.random() * max) + min;
//}
///*
// * @deprecated since version 0.1
// * @description 取得現在時間(yyyy-MM-dd)
// * @param {Boolean} isTwYear it`s Taiwan year?
// * @returns {String}
// */
//function fnGetNow(isTwYear = false) {
// let d = new Date();
// let year = isTwYear ? d.getFullYear() - 1911 : d.getFullYear();
// let month = d.getMonth() + 1;
// let day = d.getDate();
// let now = year + '-' +
// (month < 10 ? '0' : '') + month + '-' +
// (day < 10 ? '0' : '') + day;
// return now;
//}
///*
// * @deprecated since version 0.1
// * @description 取得日期時間(2020/02/02 PM 18:05:25)
// * @param {Boolean} isTwYear it`s Taiwan year?
// * @param {String} dateInterval 最小值
// * @param {Boolean} isPadZero 最大值
// * @param {Number} timeTagType 時間前戳標記 1:AM/PM 2:上午/下午
// * @returns {String}
// */
//function fnShowDateTimeNow(isTwYear = false, dateInterval = '/', isPadZero = true, timeTagType = 1) {
// let now = new Date();
// let years = isTwYear ? now.getFullYear() - 1911 : now.getFullYear();
// let months = now.getMonth();
// let days = now.getDay();
// let hours = now.getHours();
// let minutes = now.getMinutes();
// let seconds = now.getSeconds();
// let dateValue = years;
// let timeValue = ((hours >= 12) ? "下午 " : "上午 ");
// if (timeTagType === 2) timeValue = ((hours >= 12) ? "AM " : "PM ");
// if (isPadZero) {
// dateValue += (dateInterval + ((months < 10) ? "0" : "") + months);
// dateValue += (dateInterval + ((days < 10) ? "0" : "") + days);
// timeValue += ((hours > 12) ? "0" + (hours - 12) : hours);
// timeValue += ((minutes < 10) ? ":0" : ":") + minutes;
// timeValue += ((seconds < 10) ? ":0" : ":") + seconds;
// }
// else {
// dateValue += (dateInterval + months);
// dateValue += (dateInterval + days);
// timeValue += ((hours > 12) ? hours - 12 : hours);
// timeValue += minutes;
// timeValue += seconds;
// }
// return dateValue + " " + timeValue;
//}
///*
// * @deprecated since version 0.1
// * @description 取得日期時間(2020/02/02 18:05:25)
// * @param {Boolean} isTwYear it`s Taiwan year?
// * @param {String} dateInterval 日期間隔字元
// * @param {Boolean} isPadZero 是否補0
// * @returns {string} 回傳時間字串
// */
//function fnGetDateTimeNow(isTwYear = false, dateInterval = '/', isPadZero = true) {
// let today = new Date();
// let year = isTwYear ? today.getFullYear() - 1911 : today.getFullYear();
// let currentDateTime =
// year + dateInterval + ((isPadZero && today.getMonth() + 1 < 10) ? '0' : '') +
// (today.getMonth() + 1) + dateInterval + ((isPadZero && today.getDate() < 10) ? '0' : '') +
// today.getDate() + ' ' + ((isPadZero && today.getHours() < 10) ? '0' : '') +
// today.getHours() + ':' + ((isPadZero && today.getMinutes() < 10) ? '0' : '') +
// today.getMinutes();
// return currentDateTime;
//}
///*
// * @deprecated since version 0.1
// * @description 取得加減的日期時間(2020/02/02 18:05:25)
// * @param {Boolean} isTwYear it`s Taiwan year?
// * @param {String} dateInterval 日期間隔字元
// * @param {Boolean} isPadZero 是否補0
// * @returns {string} 回傳時間字串
// */
//function fnGetDate(isTwYear = false, dateInterval = '/', addYears = 0, addMonths = 0, addDays = 0, isPadZero = true) {
// let today = new Date();
// let year = isTwYear ? today.getFullYear() - 1911 : today.getFullYear();
// if (addYears > year || addMonths > today.getMonth() || addDays > today.getDate()) {
// return false;
// }
// let date =
// (year + addYears) + dateInterval + ((isPadZero && today.getMonth() + addMonths + 1 < 10) ? '0' : '') +
// (today.getMonth() + addMonths + 1) + dateInterval + ((isPadZero && today.getDate() + addDays < 10) ? '0' : '') +
// (today.getDate() + addDays);
// return date;
//}
///*
// * @deprecated since version 0.1
// * @description 取得禮拜/週幾(禮拜五)
// * @param {String} dayPreString 前置詞 (禮拜/週/周)
// * @returns {string} 回傳時間字串
// */
//function fnGetDay(dayPreString = "") {
// let day = "";
// let day_list = ['日', '一', '二', '三', '四', '五', '六'];
// let today = new Date();
// let dayGet = today.getDay(); // or "new Date().getDay()";
// if (dayPreString === "") {
// day = "(" + day_list[dayGet] + ")";
// } else {
// day = dayPreString + day_list[dayGet];
// }
// return day;
//}
///* @deprecated since version 0.1
//* @description Convrt Int To Float
//* @param {String} number ori number
//* @param {String} keepNum keep number after .
//* @return {String}
//* @author Darren Chen
//* @date 2019/12/31
//*/
//function fnConvrtIntToFloat(number, keepNum) {
// let zeroNumber = fnPaddingRight("1", keepNum + 1, "0");
// zeroNumber = parseInt(zeroNumber);
// return Math.round(parseFloat(number) * zeroNumber) / zeroNumber;
//}
///* @deprecated since version 0.1
//* @description The string Padding Left char
//* @param {String} str ori string
//* @param {Number} lenght will get string`s lenght
//* @param {String} add char
//* @return {String}
//* @author Darren Chen
//* @date 2019/12/31
//*/
//function fnPaddingLeft(str, lenght, char) {
// if (str.length >= lenght)
// return str;
// else
// return fnPaddingLeft(char + str, lenght);
//}
///* @deprecated since version 0.1
//* @description The string Padding Right char
//* @param {String} str ori string
//* @param {Number} lenght will get string`s lenght
//* @param {String} add char
//* @return {String}
//* @author Darren Chen
//* @date 2019/12/31
//*/
//function fnPaddingRight(str, lenght, char) {
// if (str.length >= lenght)
// return str;
// else
// return fnPaddingRight(str + char, lenght);
//}