1041 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			1041 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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, time = 2 * 24 * 60 * 60 * 1000) {
 | 
						||
        let expires = new Date();
 | 
						||
        //有效時間保存 2 天 2*24*60*60*1000
 | 
						||
        expires.setTime(expires.getTime() + time);
 | 
						||
        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 + '" style="margin-left: 30px; margin-top: 10px">'
 | 
						||
                                + 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 + '" style="margin-left: 30px; margin-top: 10px">'
 | 
						||
                            + 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);
 | 
						||
//}
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 |