ibms-dome/Frontend/js/yourteam/yourteam.utility.class.js

1041 lines
39 KiB
JavaScript
Raw Normal View History

2022-11-15 12:59:27 +08:00
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) {
2022-11-15 12:59:27 +08:00
let expires = new Date();
//有效時間保存 2 天 2*24*60*60*1000
expires.setTime(expires.getTime() + time);
2022-11-15 12:59:27 +08:00
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 = "";
2022-12-09 15:37:15 +08:00
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
2022-12-10 16:23:02 +08:00
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '" style="margin-left: 30px; margin-top: 10px">'
2022-12-09 15:37:15 +08:00
+ 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;
2022-11-15 12:59:27 +08:00
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;
2022-11-15 12:59:27 +08:00
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
2022-12-10 16:23:02 +08:00
+ '" data-size="' + file.size + '" width="' + width + '" height="' + height + '" src="' + src + '" style="margin-left: 30px; margin-top: 10px">'
2022-11-15 12:59:27 +08:00
+ backHtml;
2022-11-15 12:59:27 +08:00
container.insertAdjacentHTML("afterBegin", htmlImg);
//$("[name=" + removeClickTagName + "]").on("click", function (e) {
// e.preventDefault();
// $(this).closest(removeTag).remove();
//});
2022-12-09 15:37:15 +08:00
if (funDoSomeThing) {
2022-11-15 12:59:27 +08:00
funDoSomeThing();
}
}
});
reader.readAsDataURL(file);
} else {
2022-12-09 15:37:15 +08:00
if (showAlert) {
2022-11-15 12:59:27 +08:00
showAlert("danger", "只支援圖片格式");
}
else {
alert("只支援圖片格式");
}
}
2022-12-09 15:37:15 +08:00
}
2022-11-15 12:59:27 +08:00
}
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 = "";
2022-12-09 15:37:15 +08:00
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;
2022-11-15 12:59:27 +08:00
htmlImg = "";
2022-12-09 15:37:15 +08:00
let guid = myMath.guid().replace(' ', '');
file.guid = guid;
2022-11-15 12:59:27 +08:00
//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 可能解決多檔案上傳時無法讀取到最後上傳檔案的問題
2022-12-09 15:37:15 +08:00
strSaveName = guid;
2022-11-15 12:59:27 +08:00
strExtName = myFile.getFileExtension(file.name);
strOrgName = (strExtName === null || strExtName === "") ? file.name : file.name.replace('.' + strExtName, '');
2022-12-09 15:37:15 +08:00
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>'
2022-11-15 12:59:27 +08:00
+ backHtml;
container.insertAdjacentHTML("afterBegin", htmlImg);
let reader = new FileReader();
reader.addEventListener("load", function (event) {
2022-12-09 15:37:15 +08:00
$($(container).find("a")).attr("href", this.result);
if (funDoSomeThing) {
2022-11-15 12:59:27 +08:00
funDoSomeThing();
}
});
reader.readAsDataURL(file);
2022-12-09 15:37:15 +08:00
2022-11-15 12:59:27 +08:00
} else {
if (showAlert) {
showAlert("danger", "只支援文件格式");
} else {
alert("只支援文件格式");
}
}
2022-12-09 15:37:15 +08:00
}
2022-11-15 12:59:27 +08:00
}
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);
//}