var projectTable; var projectDataTable; var projectPos; var projectRow; var urlTable; var urlDataTable; var urlPos; var urlRow; var user_perm; var user_uid; var user_name; var deledUsers; (function ($, document) { if ($.cookie) { $.cookieKey = function (CookieName, KeyName, Value, Options) { var reg = new RegExp("(?:([^=]+)=([^&]*)&?)", "ig"), match = null, matches = []; var cookieVal = $.cookie(CookieName); while (match = reg.exec(cookieVal)) { if (KeyName.toLowerCase() === match[1].toLowerCase()) { if (Value) { //we are updating, collect all values matches.push([match[1], Value]); } else { return match[2]; //we are getting, sub key found just return it } } else if (Value) { //we are updating, collect all values matches.push([match[1], match[2]]); } } if (Value) { //we are updating, update values updatedValue = "", sep = ""; for (i = 0; i < matches; i++) { updatedValue += sep + matches[i][0] + "=" + matches[i][1]; sep = "&"; } $.cookie(CookieName, updatedValue, Options); } else return null;//we are getting, value not found } } })(jQuery, document); Date.prototype.yyyymmdd = function () { var mm = this.getMonth() + 1; // getMonth() is zero-based var dd = this.getDate(); return [this.getFullYear(), (mm > 9 ? '' : '0') + mm, (dd > 9 ? '' : '0') + dd ].join('/'); }; $(document).ready(function () { $(".input-daterange").datepicker({ format: "yyyy/mm/dd", orientation: "bottom auto", language: "zh-TW", autoclose: true }); $('#url_fbImage_image').slim({ ratio: '720:405', forceSize: { width: 720, height: 405 }, minSize: { width: 300, height: 300 }, download: true, label: 'Click or Drop your photo here', maxFileSize: 4, forceType: 'png', meta: { picType: 'url_fbImage', picChange: 'N' }, didReceiveServerError: function (error) { console.log(error); }, didThrowError: function (error) { console.log(error); } }); $('#urlDiv').hide(); $('#url_header').text(location.protocol + "//" + location.host + "/"); $('textarea[data-limit-rows=true]') .on('keypress', function (event) { var textarea = $(this), text = textarea.val(), numberOfLines = (text.match(/\n/g) || []).length + 1, maxRows = parseInt(textarea.attr('rows')); if (event.which === 13 && numberOfLines === maxRows) { return false; } }); user_uid = $.cookieKey("token", "uid"); user_name = $.cookieKey("token", "name"); function setLimitedStatus() { var d = new Date(); if ($('#project_limited').prop('checked')) { $('#project_limited_div').addClass('form-group'); $('#project_end_div').show(); $('#end_desc_div').show(); $('#project_endToRedirect_div').show(); if (($('#method').val() === 'add') && ($('#project_enddate').val() === '')){ $('#project_enddate').val(d.yyyymmdd()); $('#project_endToRedirect').val(''); } } else { $('#project_enddate').val(d.yyyymmdd()); $('#project_limited_div').removeClass('form-group'); $('#project_end_div').hide(); $('#end_desc_div').hide(); $('#project_endToRedirect_div').hide(); } } //期限限制開關初始值設定 setLimitedStatus(); //專案是否有期限限制開關切換 $('#project_limited').change(function () { setLimitedStatus(); }); //切換gif連結div function setGifTagStatus() { if ($('#url_gifTag').prop('checked')) { $('#url_fbTag').prop("checked", false); setFbTagStatus(); $('#gifData_div').addClass('form-group'); $('#gifData_div').show(); } else { $('#gifData_div').removeClass('form-group'); $('#gifData_div').hide(); } } //切換fb縮圖div function setFbTagStatus() { if ($('#url_fbTag').prop('checked')) { $('#url_gifTag').prop("checked", false); setGifTagStatus(); if ($('#url_directToUrl').val() !== '' && $('#url_fbTitle').val() === '') { loadMeta($('#url_directToUrl').val()); } $('#fbTag_div').addClass('form-group'); $('#fbTagData_div').show(); } else { $('#fbTag_div').removeClass('form-group'); $('#fbTagData_div').hide(); } } //切換fb Pixel div function setFbPixelStatus() { if ($('#url_fbPixel').prop('checked')) { $('#fbPixel_div').addClass('form-group'); $('#fbPixelData_div').show(); } else { $('#fbPixel_div').removeClass('form-group'); $('#fbPixelData_div').hide(); } } //切換 Google AW div function setGoogleAdStatus() { if ($('#url_googleAds').prop('checked')) { $('#googleAds_div').addClass('form-group'); $('#googleAdsData_div').show(); } else { $('#googleAds_div').removeClass('form-group'); $('#googleAdsData_div').hide(); } } function setUploadStatus() { var tmpUploadUrl = $("#uploadFileUrl").val().trim(); var targetUrl = $("#url_directToUrl").val().trim(); if ($('#url_upload').prop('checked')) { $('#uploadBtn_div').addClass('form-group'); $('#uploadBtnData_div').show(); if (tmpUploadUrl != '') { $("#uploadList").show(); $("#url_directToUrl").val(tmpUploadUrl); } } else { $('#uploadBtn_div').removeClass('form-group'); $('#uploadBtnData_div').hide(); $("#uploadList").hide(); if (tmpUploadUrl == targetUrl) { $("#url_directToUrl").val(''); } } } function loadMeta(url) { waitingDialog.show('載入中...', { dialogSize: 'lg', progressType: 'info' }); setTimeout(function () { waitingDialog.hide(); }, 2500); var formData = { url: url } $.ajax({ url: "api/getMeta.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { $('#url_fbTitle').val(data.ogTitle); $('#url_fbDescript').val(data.ogDescript); if (data.ogImage !== '') { $('#url_fbImage_image').slim('load', data.ogImage); } } waitingDialog.hide(); }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); waitingDialog.hide(); } }); } setGifTagStatus(); //切換fb開關初始值設定 setFbTagStatus(); setFbPixelStatus(); setGoogleAdStatus(); setUploadStatus(); //專案是否有期限限制開關切換 $('#url_gifTag').change(function () { setGifTagStatus(); }); $('#url_fbTag').change(function () { setFbTagStatus(); }); $('#url_fbPixel').change(function () { setFbPixelStatus(); }); $('#url_googleAds').change(function () { setGoogleAdStatus(); }); $('#url_upload').change(function () { setUploadStatus(); }); $('#url_code').change(function () { var url_header = $('#url_header').text(); var url_code = $(this).val().trim(); const qrCode = new QRCodeStyling({ width: 150, height: 150, type: "png", data: url_header + url_code, qrOptions: { typeNumber: "0", mode: "Byte", errorCorrectionLevel: "Q" }, image: "../pics/logo_bremen_red.png", imageOptions: { hideBackgroundDots: true, imageSize: 0.4, margin: 0 }, cornersDotOptions: { type: "Square", color: "#6a1a4c" }, cornersSquareOptions: { type: "extra-rounded", color: "#6a1a4c" }, dotsOptions: { color: "#6a1a4c", type: "dots" }, backgroundOptions: { color: "#ffffff", } }); $("#qr_canvas").empty(); qrCode.append(document.getElementById("qr_canvas")); }); $('#qr_download').click(function () { var url_header = $('#url_header').text(); var url_code = $('#url_code').val().trim(); const qrCode = new QRCodeStyling({ width: 1024, height: 1024, type: "png", data: url_header + url_code, qrOptions: { typeNumber: "0", mode: "Byte", errorCorrectionLevel: "Q" }, image: "../pics/logo_bremen_red.png", imageOptions: { hideBackgroundDots: true, imageSize: 0.4, margin: 0 }, cornersDotOptions: { type: "Square", color: "#6a1a4c" }, cornersSquareOptions: { type: "extra-rounded", color: "#6a1a4c" }, dotsOptions: { color: "#6a1a4c", type: "dots" }, backgroundOptions: { color: "#ffffff", } }); qrCode.download({ name: "qr-" + url_code, extension: "png" }); }); var dataTables = { init: function init() { this.bindUIActions(); }, bindUIActions: function bindUIActions() { this.table = this.handleDataTables(); // add buttons this.table.buttons().container().appendTo('#dt-buttons').unwrap(); }, handleDataTables: function handleDataTables() { $('#myTable').append(""); return $('#myTable').DataTable({ dom: '<\'text-muted\'Bi>\n <\'table-responsive\'trl>\n <\'mt-4\'p>', lengthChange: true, lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]], pageLength: 25, info: false, "scrollX": true, buttons: [ { text: '新增專案', action: function (e, dt, node, config) { projectAdd(); } }], language: { paginate: { previous: '', next: '' } }, autoWidth: false, ajax: { url: 'api/projectsList.ashx', dataSrc: function (result) { if (result.ret === "no") { alert(result.message); location.href = "login.html"; } else { user_perm = result.user_perm; return result.projectlist; } } }, rowId: 'project_uid', deferRender: true, initComplete: function () { $('#alert-info').show(); $('#urlDiv').hide(); if (user_perm === 'N') { var table = $('#myTable').DataTable(); table.buttons(0).remove(); } $('#myTable').on('click', 'a', function (e) { var type = this.getAttribute('data-method'); if (type !== 'open') { e.preventDefault(); e.stopPropagation(); buttonClick(this); } }).on('click', 'tr', function (e) { var table = $('#myTable').DataTable(); var d = table.row(this).data(); $('#urlTitle').text('[' + d.project_name + ']的短網址列表'); var id = this.id; $('#selected_project_uid').val(id); $('#myUrlTable').DataTable().ajax.reload(); Looper.toggleSidebar(); //alert(id); if ($(this).hasClass('selected')) { //$(this).removeClass('selected'); //$('#alert-info').show(); //$('#urlDiv').hide(); } else { projectDataTable.$('tr.selected').removeClass('selected'); $(this).addClass('selected'); $('#alert-info').hide(); $('#urlDiv').show(); } }); $('#myTable').on('change', 'input[name="selectedRow[]"]', function () { checkboxClick(this); }); }, columns: [{ data: 'project_uid', className: 'align-middle' }, { data: 'project_name', className: 'align-middle' }, { data: 'project_createdateString', className: 'align-middle' }], columnDefs: [{ targets: 0, width: '40px', render: function render(data, type, row, meta) { var edithtml = ""; edithtml += '\n '; if (user_perm !== 'N') { edithtml += ''; } return edithtml; } }, { targets: 1, width: '250px', render: function render(data, type, row, meta) { return ' ' + row.project_name + ''; } }] }); } }; dataTables.init(); projectDataTable = $('#myTable').DataTable(); var urlTables = { init: function init() { this.bindUIActions(); this.handleSearchRecords(); }, bindUIActions: function bindUIActions() { this.table = this.handleDataTables(); // add buttons this.table.buttons().container().appendTo('#url-buttons').unwrap(); }, handleDataTables: function handleDataTables() { $('#myUrlTable').append(""); return $('#myUrlTable').DataTable({ dom: '<\'text-muted\'Bi>\n <\'table-responsive\'trl>\n <\'mt-4\'p>', lengthChange: true, lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]], pageLength: 25, info: false, buttons: [ { text: '新增短網址', className: 'btn btn-secondary btn-xs', action: function (e, dt, node, config) { urlAdd(); } }], language: { paginate: { previous: '', next: '' } }, autoWidth: false, ajax: { url: 'api/urlsList.ashx', type: 'POST', data: function (d) { Object.assign(d, { project_uid: $("#selected_project_uid").val() }); return d; }, dataSrc: function (result) { if (result.ret === "no") { alert(result.message); location.href = "login.html"; } else { user_perm = result.user_perm; return result.urllist; } } }, rowId: 'url_uid', deferRender: true, initComplete: function () { $('#myUrlTable').on('click', 'a', function (e) { urlTableButtonClick(this); }); }, columns: [{ data: 'url_uid', className: 'align-middle' }, { data: 'url_descript', className: 'align-middle' }, { data: 'url_shortUrl', className: 'align-middle' }, { data: 'url_directToUrl', className: 'align-middle' }], columnDefs: [{ targets: 0, render: function render(data, type, row, meta) { var edithtml = ""; edithtml += '\n '; edithtml += '\n '; edithtml += ''; return edithtml; } }, { targets: 2, render: function render(data, type, row, meta) { var url_shortUrl = row.url_shortUrl; return '  ' + url_shortUrl + ''; } }, { targets: 3, render: function render(data, type, row, meta) { var url_directToUrl = row.url_directToUrl; if (url_directToUrl.length > 30) { url_directToUrl = url_directToUrl.substr(0, 17) + '.....' + url_directToUrl.substr((url_directToUrl.length - 6), 6); } return ' ' + url_directToUrl + ''; } }] }); }, handleSearchRecords: function handleSearchRecords() { var self = this; $('#table-search, #filterBy').on('keyup change focus', function (e) { var filterBy = $('#filterBy').val(); var hasFilter = filterBy !== ''; var value = $('#table-search').val(); // clear selected rows //if (value.length && (e.type === 'keyup' || e.type === 'change')) { // self.clearSelectedRows(); //} // reset search term self.table.search('').columns().search('').draw(); if (hasFilter) { self.table.columns(filterBy).search(value).draw(); } else { self.table.search(value).draw(); } }); } }; urlTables.init(); urlDataTable = $('#myUrlTable').DataTable(); /* 複製內容功能設定 */ var clipboard = new ClipboardJS('.fa-copy'); //複製成功執行 clipboard.on('success', function (e) { e.clearSelection(); alert("複製成功,您複製的內容為\n\n「" + e.text + "」"); }); //複製失敗執行 clipboard.on('error', function (e) { alert("複製失敗"); }); function urlAdd() { $('#url_code').prop('readonly', false); urlTable = $('#myUrlTable').dataTable(); $.ajax({ url: "api/getShortCode.ashx", type: "POST", data: null, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { $('#uploadList').hide(); $('#url_header').text(data.urlHeader); $('#url_code').val(data.shorCode).trigger('change'); $('#url_method').val('add'); $('#url_fbTag').prop("checked", false); $('#url_fbImage_image').slim('remove'); setGifTagStatus(); setFbTagStatus(); setFbPixelStatus(); setGoogleAdStatus(); $('#url_fbPixelCode').change(); $('#url_googleAwConversionId').change(); $('#project_name').change(); $('#project_enddate').change(); $('#url_gifLink').change(); $('#myUrlModal').modal('toggle'); } else { alert(data.message); location.href = "login.html"; } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); } }); } function projectAdd() { $('#myModal').modal('toggle'); deledUsers = []; projectTable = $('#myTable').dataTable(); $('#method').val('add'); $('#project_name').change(); $('#project_enddate').change(); $('#project_apiId').val(getRandom(100000000000, 999999999999)).change(); $('#project_apiKey').val(getRandomString(32)).change(); $('#nestable02 [data-name=user_uid] option').remove(); $("#nestable02 [data-mark=111]").remove(); $.ajax({ url: "api/usersList.ashx", type: "POST", data: null, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { var nowDate = new Date(); $("[data-name=user_uid]").append($("").attr("value", user_uid).attr("data-row", user_uid).text(user_name)); $("[data-name=user_uid]").append($("").attr("value", "").attr("data-row", "").text("請選擇成員")); if (data.userlist.length > 0) { $.each(data.userlist, function (i, item) { if (item.user_uid !== user_uid) { $("[data-name=user_uid]").append($("").attr("value", item.user_uid).attr("data-row", item.user_uid).text(item.user_name)); } }); } $("[data-name=user_uid]").attr("disabled", true); $("[data-name=user-del]").css("display", "none"); if (user_perm === 'N') { $('#saveBtn').prop('disabled', true); } else { $('#saveBtn').prop('disabled', false); } } else { alert(data.message); location.href = "login.html"; } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); } }); } function buttonClick(obj) { var type = obj.getAttribute('data-method'); var uid = obj.getAttribute('data-uid'); tr = $(this).parents("tr"); projectTable = $('#myTable').dataTable(); var rowID = $('#' + uid); projectPos = projectTable.fnGetPosition($('#' + uid)[0]); projectRow = projectTable.api().row(rowID); $("#project_uid").val(uid); if (type === 'del') { if (confirm('確定刪除此專案? 刪除後,此專案的短網址將全部失效!')) { var formData = { project_uid: uid, method: 'delete' }; $.ajax({ url: "api/projectData.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { var row = projectTable.api().row(rowID).remove().draw(false); alert('刪除成功'); } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); $('#myModal').modal('toggle'); } }); } } if (type === 'edit') { deledUsers = []; $('#method').val('edit'); $("#project_uid").val(uid); $("#nestable02 [data-mark=111]").remove(); $.ajax({ url: "api/usersList.ashx", type: "POST", success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { $("[data-name=user_uid]").append($("").attr("value", user_uid).attr("data-row", user_uid).text(user_name)); $("[data-name=user_uid]").append($("").attr("value", "").attr("data-row", "").text("請選擇成員")); if (data.userlist.length > 0) { $.each(data.userlist, function (i, item) { if (item.user_uid !== user_uid) { $("[data-name=user_uid]").append($("").attr("value", item.user_uid).attr("data-row", item.user_uid).text(item.user_name)); } }); } $("[data-name=user_uid]").attr("disabled", true); $("[data-name=user-del]").css("display", "none"); var formData = { project_uid: uid, method: 'get' }; $.ajax({ url: "api/projectData.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { var projData = data.data; $('#project_name').val(projData.project_name).trigger("change"); $('#project_descript').val(projData.project_descript); if (projData.project_dateLimit === 'Y') { $('#project_limited').prop('checked', true); setLimitedStatus(); $('#project_enddate').val(moment.utc(projData.project_endDate).format('YYYY/MM/DD')).change(); $('#project_endToRedirect').val(projData.project_endToRedirect).trigger("change"); } else { $('#project_limited').prop('checked', false); setLimitedStatus(); } $.each(projData.project_users, function (i, item) { var clonedEle; if (i === 0) { clonedEle = $("#nestable02 .dd-list .dd-item:first"); clonedEle.attr("data-id", item.user_uid); clonedEle.find("[data-name=user_uid]").prop("disabled", true); clonedEle.find("[data-name=user_uid]").val(item.user_uid); clonedEle.find("[data-name=user-del]").css("display", "none"); } else { clonedEle = $("#nestable02 .dd-list .dd-item:first").clone(); clonedEle.attr("data-mark", "111"); clonedEle.attr("data-id", item.user_uid); clonedEle.find("[data-name=user_uid]").prop("disabled", true); clonedEle.find("[data-name=user-del]").css("display", ""); clonedEle.find("[data-name=user_uid]").val(item.user_uid); $("#nestable02 .dd-list").append(clonedEle); } }); $('#project_apiId').val(projData.project_apiId).trigger("change"); $('#project_apiKey').val(projData.project_apiKey).trigger("change"); $.each(projData.projectApi_domains, function (i, item) { $("#projectApiDomain_name").val($("#projectApiDomain_name").val() + item.projectApiDomain_address + "\n"); }); $.each(projData.projectApi_ips, function (i, item) { $("#projectApiDomain_ip").val($("#projectApiDomain_ip").val() + item.projectApiDomain_address + "\n"); }); if (user_perm === 'N') { $('#saveBtn').prop('disabled', true); } else { $('#saveBtn').prop('disabled', false); } $('#myModal').modal('toggle'); } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); $('#myModal').modal('toggle'); } }); } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); } }); } } function urlTableButtonClick(obj) { var type = obj.getAttribute('data-method'); var uid = obj.getAttribute('data-uid'); tr = $(this).parents("tr"); urlTable = $('#myUrlTable').dataTable(); var rowID = $('#' + uid); urlPos = urlTable.fnGetPosition($('#' + uid)[0]); urlRow = urlTable.api().row(rowID); $("#url_uid").val(uid); if (type === 'del') { if (confirm('確定刪除此短網址? 刪除後,此短網址將失效!')) { var formData = { project_uid: $('#selected_project_uid').val(), url_uid: uid, method: 'delete' }; $.ajax({ url: "api/urlData.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { var row = urlTable.api().row(rowID).remove().draw(false); alert('刪除成功'); } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); } }); } } if (type === 'edit') { $('#url_method').val('edit'); $("#url_uid").val(uid); var formData = { url_uid: uid, method: 'get' }; $.ajax({ url: "api/urlData.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { $('#uploadList').hide(); var urlData = data.data; $('#url_code').prop('readonly', true); $('#url_descript').val(urlData.url_descript).trigger("change"); $('#url_code').val(urlData.url_Code).trigger('change'); $('#url_directToUrl').val(urlData.url_directToUrl).trigger("change"); if (urlData.url_gifTag === 'Y') { $('#url_gifTag').prop("checked", true); $('#url_gifLink').val(urlData.url_gifLink); } else { $('#url_gifTag').prop("checked", false); $('#url_gifLink').val(''); } if (urlData.url_fbTag === 'Y') { $('#url_fbTag').prop("checked", true); $('#url_fbTitle').val(urlData.url_fbTitle); $('#url_fbDescript').val(urlData.url_fbDescript); $('#url_fbImage_image').slim('load', urlData.url_fbImageUrl); $('#url_fbImage_oldimage').val(urlData.url_fbImageUrl); if (urlData.url_playBtn === 'Y') { $('#url_playBtn').prop("checked", true); } else { $('#url_playBtn').prop("checked", false); } } else { $('#url_fbTag').prop("checked", false); $('#url_fbTitle').val(''); $('#url_fbDescript').val(''); $('#url_fbImage_image').slim('remove'); $('#url_fbImage_oldimage').val(''); $('#url_playBtn').prop("checked", false); } if (urlData.url_fbPixel === 'Y') { $('#url_fbPixel').prop("checked", true); $('#url_fbPixelCode').val(urlData.url_fbPixelCode); } else { $('#url_fbPixel').prop("checked", false); $('#url_fbPixelCode').val(''); } if (urlData.url_googleAds === 'Y') { $('#url_googleAds').prop("checked", true); $('#url_googleAwConversionId').val(urlData.url_googleAwConversionId); } else { $('#url_googleAds').prop("checked", false); $('#url_googleAwConversionId').val(''); } if (urlData.url_uploadFile === 'Y') { $('#url_upload').prop("checked", true).trigger('change'); $('#uploadFileLinkName').val(urlData.url_uploadFileLinkName); $('#uploadFileClientName').val(urlData.url_uploadFileClientName); $('#uploadFileType').val(urlData.url_uploadFileType); $('#uploadFileUrl').val(urlData.fileUrl); if (urlData.url_uploadFileType == "application/pdf") { $('#filespan').attr("class", "fa fa-file-pdf"); } else { $('#filespan').attr("class", "fa fa-file-image"); } $('#filebody').html("" + urlData.url_uploadFileClientName + ""); } $('#url_gifLink').change(); $('#url_fbPixelCode').change(); $('#url_googleAwConversionId').change(); setGifTagStatus(); setFbTagStatus(); setFbPixelStatus(); setGoogleAdStatus(); setUploadStatus(); $('#myUrlModal').modal('toggle'); } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); $('#myUrlModal').modal('toggle'); } }); } if (type === 'data') { $('#range_date').change(); var s = moment().subtract(7, 'days').format("YYYY/MM/DD"); var d = moment().format("YYYY/MM/DD"); $("#startDate").val(s); $("#endDate").val(d); $("#count_uid").val(uid); load_count(); $('#myDataModal').modal('toggle'); } } $("#addMember").click(function () { var clonedEle = $("#nestable02 .dd-list .dd-item:first").clone(); clonedEle.attr("data-id", "111"); clonedEle.attr("data-mark", "111"); clonedEle.find("[data-name=user_uid] option[value='" + user_uid + "']").remove(); clonedEle.find("[data-name=user_uid]").prop("disabled", false); clonedEle.find("[data-name=user-del]").css("display", ""); $("#nestable02 .dd-list").append(clonedEle); }); $("#saveBtn").click(function () { var errmsg = ""; var method = $('#method').val(); var project_name = $('#project_name').val(); var project_uid = $('#project_uid').val(); var project_descript = $('#project_descript').val(); var project_dateLimit = 'N'; var project_enddate = ''; var project_endToRedirect = ''; var project_apiId = $('#project_apiId').val(); var project_apiKey = $('#project_apiKey').val(); var domainArray = $("#projectApiDomain_name").val().split("\n"); var domainList = JSON.stringify(domainArray); var ipArray = $("#projectApiDomain_ip").val().split("\n"); var ipList = JSON.stringify(ipArray); var userList = []; $("#nestable02 .dd-list .dd-item").each(function () { item = {}; var user_uid = $(this).find("[data-name='user_uid']").val(); if (user_uid === "") { errmsg += "沒有選擇成員! \n"; } item["user_uid"] = user_uid; userList.push(item); }); var set = new Set(); var result = userList.filter(item => !set.has(item["user_uid"]) ? set.add(item["user_uid"]) : false); if (result.length !== userList.length) { errmsg += "成員有重複! 請確認! \n"; } var userJson = JSON.stringify(userList); if ($('#project_limited').prop('checked')) { project_dateLimit = 'Y'; project_enddate = $('#project_enddate').val(); project_endToRedirect = $('#project_endToRedirect').val(); if (project_endToRedirect === '') { errmsg += '請輸入專案結束導向網址!\n'; } } if (project_name === '') { errmsg += '請輸入專案名稱!\n'; } var delUserJson = ""; if (method === "edit") { delUserJson = JSON.stringify(deledUsers); } if (errmsg.length > 0) { alert(errmsg); return; } var formData = { method: method, project_name: project_name, project_uid: project_uid, project_descript: project_descript, project_dateLimit: project_dateLimit, project_enddate: project_enddate, project_endToRedirect: project_endToRedirect, project_apiId: project_apiId, project_apiKey: project_apiKey, domainList: domainList, ipList: ipList, userList: userJson, delUserJson: delUserJson }; $.ajax({ url: "api/projectData.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { if (method === "add") { alert('新增成功'); $('#myModal').modal('toggle'); var obj = data.data; projectTable.fnAddData(obj); } if (method === "edit") { waitingDialog.hide(); alert('儲存完成'); $('#myModal').modal('toggle'); var obj = data.data; projectTable.fnUpdate(obj, projectPos); waitingDialog.hide(); } } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); waitingDialog.hide(); } }); }); $("#saveUrlBtn").click(function () { var errmsg = ""; var method = $('#url_method').val(); var url_uid = $('#url_uid').val(); var project_uid = $('#selected_project_uid').val(); var url_descript = $('#url_descript').val(); var url_directToUrl = $('#url_directToUrl').val(); var url_Code = $('#url_code').val(); var url_gifTag = "N"; var url_gifLink = ""; var url_fbTag = "N"; var url_fbTitle = ""; var url_fbDescript = ""; var url_playBtn = "N"; var url_fbPixel = "N"; var url_fbPixelCode = ""; var url_googleAds = "N"; var url_googleAwConversionId = ""; var url_uploadFile = "N"; var url_uploadFileClientName = ""; var url_uploadFileLinkName = ""; var url_uploadFileType = ""; var uploadFileUrl = $('#uploadFileUrl').val(); var fbImage_JsonData; var fbImage_Data; if (/^([0-9a-zA-Z]+[0-9a-zA-Z\_\-]+[0-9a-zA-Z]+)$/.test(url_Code) === false) { errmsg += '短網址參數限定大小寫英文與 _(底線) 符號組成,且符號不得於字首與字尾!\n'; } if ($('#url_gifTag').prop('checked')) { url_gifTag = "Y"; url_gifLink = $('#url_gifLink').val(); } if ($('#url_fbPixel').prop('checked')) { url_fbPixel = "Y"; url_fbPixelCode = $('#url_fbPixelCode').val(); } if ($('#url_googleAds').prop('checked')) { url_googleAds = "Y"; url_googleAwConversionId = $('#url_googleAwConversionId').val(); } if ($('#url_upload').prop('checked')) { url_uploadFile = "Y"; url_uploadFileClientName = $('#uploadFileClientName').val(); url_uploadFileLinkName = $('#uploadFileLinkName').val(); url_uploadFileType = $('#uploadFileType').val(); } if ($('#url_fbTag').prop('checked')) { url_fbTag = "Y"; url_fbTitle = $('#url_fbTitle').val(); url_fbDescript = $('#url_fbDescript').val(); fbImage_JsonData = $('#url_fbImage_image').slim('data'); fbImage_Data = $('#url_fbImage_image').slim('dataBase64'); var picSplit = $('[data-name=url_fbImage_oldimage]').attr("img_src").split("/"); var oldname = picSplit[picSplit.length - 1]; if (fbImage_JsonData[0].input.name !== oldname) { $('#url_fbImage_image').slim('data')[0].meta.picChange = "Y"; fbImage_Data = $('#url_fbImage_image').slim('dataBase64'); } if ($('#url_playBtn').prop('checked')) { url_playBtn = "Y"; } } if (url_fbTag === 'Y') { if (url_fbTitle === '') { errmsg += '無FB預覽標題!\n'; } if (url_fbDescript === '') { errmsg += '無FB預覽描述內容!\n'; } if (fbImage_JsonData[0].input.name === null) { errmsg += "請挑選一張FB預覽圖片!\n"; } console.log(fbImage_JsonData[0].input.name); } if (url_fbPixel === 'Y' && url_fbPixelCode === '') { errmsg += '無FB 像素編號!\n'; } if (url_googleAds === 'Y' && url_googleAwConversionId === '') { errmsg += '無Google Adwords代碼!\n'; } if (method === '') { errmsg += '無方法值!\n'; } if (project_uid === '') { errmsg += '無project_uid!\n'; } if (url_descript === '') { errmsg += '無短網址說明!\n'; } if (url_directToUrl === '') { errmsg += '無目的地網址!\n'; } if (url_Code === '') { errmsg += '無短網址碼!\n'; } if (errmsg.length > 0) { alert(errmsg); return; } if (url_uploadFile == 'Y' && (url_directToUrl != uploadFileUrl)) { alert("要縮短的網址與所上傳的pdf或照片網址不同!"); return; } waitingDialog.show('載入中...', { dialogSize: 'lg', progressType: 'info' }); setTimeout(function () { waitingDialog.hide(); }, 5000); var formData = { method: method, url_uid: url_uid, project_uid: project_uid, url_descript: url_descript, url_directToUrl: url_directToUrl, url_Code: url_Code, url_gifTag: url_gifTag, url_gifLink: url_gifLink, url_fbTag: url_fbTag, url_fbTitle: url_fbTitle, url_fbDescript: url_fbDescript, url_playBtn: url_playBtn, url_fbPixel: url_fbPixel, url_fbPixelCode: url_fbPixelCode, url_googleAds: url_googleAds, url_googleAwConversionId: url_googleAwConversionId, url_uploadFile: url_uploadFile, url_uploadFileClientName: url_uploadFileClientName, url_uploadFileLinkName: url_uploadFileLinkName, url_uploadFileType: url_uploadFileType, pic_data: JSON.stringify(fbImage_Data) }; $.ajax({ url: "api/urlData.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { urlTable = $('#myUrlTable').dataTable(); if (method === "add") { alert('新增成功'); $('#myUrlModal').modal('toggle'); var obj = data.data; urlTable.fnAddData(obj); } if (method === "edit") { alert('儲存完成'); $('#myUrlModal').modal('toggle'); var obj = data.data; urlTable.fnUpdate(obj, urlPos); } } else { alert(data.message); waitingDialog.hide(); } waitingDialog.hide(); }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); waitingDialog.hide(); } }); }); $('#countBtn').click(function () { load_count(); }); $('#countExcelBtn').click(function () { var startDate = $('#startDate').val(); var endDate = $('#endDate').val(); var type = $('#range_type').val(); var url_uid = $("#count_uid").val(); var url = "api/exportCountReport.ashx?type=" + type + "&startDate=" + startDate + "&endDate=" + endDate + "&url_uid=" + url_uid; window.open(url); }); }); function load_count() { waitingDialog.show('載入中...', { dialogSize: 'lg', progressType: 'info' }); setTimeout(function () { waitingDialog.hide(); }, 500); var startDate = $('#startDate').val(); var endDate = $('#endDate').val(); var type = $('#range_type').val(); var url_uid = $("#count_uid").val(); var formData = { type: type, url_uid: url_uid, startDate: startDate, endDate: endDate }; $.ajax({ url: "api/getCountData.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { $("#total_list [data-mark=111]").remove(); urlTable = $('#myUrlTable').dataTable(); $.each(data.data, function (i, item) { var clonedEle = $("#total_list .list-group-item:first").clone(); clonedEle.attr("data-mark", "111"); clonedEle.css("display", ""); clonedEle.find("[class=list-group-item-text]").text(item.title); clonedEle.find("[data-name='total_num']").text(item.num); $("#total_list").append(clonedEle); }); } else { alert(data.message); } waitingDialog.hide(); }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); waitingDialog.hide(); } }); } function item_del(obj) { if (confirm('確定刪除此項目資料?')) { var eleID = $(obj).closest('[class=dd]').attr('id'); if (eleID === "nestable02") { var delID = $(obj).closest('[class=dd-item]').find("[data-name=user_uid]").val(); item = {}; item["user_uid"] = delID; deledUsers.push(item); } $(obj).closest('[class=dd-item]').find(""); $(obj).closest('[class=dd-item]').remove(); } } function readURL(input) { var errmsg = ''; $.each(input.files, function (index) { var reader = new FileReader(); reader.onload = function (e) { var picFile = e.target.result; var filename = e.target.fileName; var filetype = e.target.result.split(',')[0].split(';')[0].split(':')[1]; var formData = { picFile: picFile, filename: filename, filetype: filetype } $.ajax({ url: "api/uploadPDFImage.ashx", type: "POST", data: formData, success: function (data, textStatus, jqXHR) { if (data.ret === "yes") { $('#uploadList').show(); $('#filebody').html("" + data.fileName + ""); if (data.fileType == "application/pdf") { $('#filespan').attr("class", "fa fa-file-pdf"); } else { $('#filespan').attr("class", "fa fa-file-image"); } $("#uploadFileBase64").val(e.target.result); $("#uploadFileLinkName").val(data.fileLinkName); $("#uploadFileType").val(data.fileType); $("#uploadFileClientName").val(data.fileName); $("#uploadFileUrl").val(data.fileUrl); $("#url_directToUrl").val(data.fileUrl).trigger('change'); } else { alert(data.message); } }, error: function (jqXHR, textStatus, errorThrown) { alert('网絡或伺服器发生错误,请稍后重试!'); waitingDialog.hide(); } }); //clonedEle.find("[class=media-body]").html('' + filename + ''); //clonedEle.find("[data-name=file_pdfpng_base64]").val(e.target.result); //clonedEle.find("[data-name=file_pdfpng_filetype]").val(filetype); //clonedEle.find("[data-name=file_pdfpng_filename]").val(filename); //$("#files_list .dd-list").append(clonedEle); }; reader.fileName = input.files[index].name; reader.readAsDataURL(input.files[index]); }); }