class Pinterest { constructor() { this.token = $("meta[name='csrf-token']").attr("content"); } /** * */ listPinterest() { new DataTable('#pinterestList', { debug: true, processing: true, serverSide: true, dom: 'lfptip', // l: length selector, f: search box, p: pagination trên, t: table, i: info, p: pagination dưới ajax: { data: {_token: this.token}, url: '/pinterest', type: 'POST', "dataSrc": function (json) { return json.data; // đảm bảo dữ liệu của bạn nằm trong mảng `data` } }, columns: [ {data: 'title'}, {data: 'imageintro'}, {data: 'imagestep'}, {data: 'language'}, {data: 'view'}, {data: 'category'}, {data: 'copyright'}, {data: 'updated_at'}, ], columnDefs: [ { targets: 0, className: 'tdCenter', 'render': function (data, value, meta, key) { return `${data}
`; }, }, { targets: 1, className: 'tdCenter', 'render': function (data, value, meta, key) { let string = ''; if(meta.imageintro?.['237']?.url && meta.imageintro['237'].url !== undefined && meta.imageintro['237'].url != null){ string = ``; }else{ string = "ko thấy ảnh" } return string; }, }, { targets: 2, className: 'tdCenter', 'render': function (data, value, meta, key) { let string = ''; $.each(meta.imagestep, function (key, value) { if(key < 4 ){ if (value?.url && value.url !== undefined) { string += ``; }else{ string += "ko thấy ảnh" } } }); return string; }, }, { targets: 3, className: 'tdCenter', 'render': function (data, value, meta, key) { let string = ''; let language = Pinterest.languageList(); $.each(language, function (key, value) { let checked = ''; if (key === data) { checked = 'checked'; } string += `
`; }); return string; }, }, { targets: 4, className: 'tdCenter', 'render': function (data, value, meta, key) { return data; }, }, { targets: 5, className: 'tdCenter', 'render': function (data, value, meta, key) { const categories = ['chart', 'food', 'flat-patterns']; let string = ''; categories.forEach(category => { const checked = (data === category) ? 'checked' : ''; const categoryId = category.replace('-', ''); // chuyển flat-chat thành flatchat cho ID string += `
`; }); return string; }, }, { targets: 6, className: 'tdCenter', 'render': function (data, value, meta, key) { let checked = ''; let copyright = 0; if (data == 1) { copyright = 1; checked = 'checked'; } return `
`; }, }, { targets: 7, className: 'tdCenter', 'render': function (data, value, meta, key) { console.log(meta); let updateAt = Pinterest.convertToVietNamTime(data); let createAt = Pinterest.convertToVietNamTime(meta.created_at); let deleteButton = `` return updateAt + '
' + createAt + '
' + deleteButton ; }, }, ] }); } /** * @description chuyển ngày tháng iso sang ngày tháng việt nam * @param isoTimeString * @returns {string} */ static convertToVietNamTime(isoTimeString) { // Tạo đối tượng Date từ chuỗi thời gian const dateObject = new Date(isoTimeString); // Chuyển múi giờ sang múi giờ Việt Nam (UTC+7) dateObject.setHours(dateObject.getHours() + 7); // Lấy thông tin ngày, tháng, năm, giờ, phút, giây const day = dateObject.getDate(); const month = dateObject.getMonth() + 1; // Tháng tính từ 0 (0 = tháng 1) const year = dateObject.getFullYear(); const hours = dateObject.getHours(); const minutes = dateObject.getMinutes(); const seconds = dateObject.getSeconds(); // Định dạng lại chuỗi thời gian theo định dạng Việt Nam const vietnamTimeString = `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`; return vietnamTimeString; } /** * @author thuypv * @description change status of post to copyright and opposite (ngược lại) */ copyright() { $('#pinterestList').on('change', '.copyright', function () { let token = $("meta[name='csrf-token']").attr("content"); let checked = 0; if (this.checked === true) { checked = 1; } let id = $(this).attr('id'); jQuery.ajax({ url: '/change-copyright', data: {_token: token, _id: id, copyright: checked}, type: "POST", timeout: 30000, success: function (data) { Pinterest.showToast("Save Success", 'success'); }, error: function () { Pinterest.showToast("Can't connect server, please try again", 'error'); } }); }); } categoryChange() { let token = this.token; $('#pinterestList').on('change', '.categoryRadio', function () { let id = $(this).attr('data-id'); let category = $(this).attr('value'); jQuery.ajax({ url: '/change-category', data: {_token: token, _id: id, category: category}, type: "POST", timeout: 30000, success: function (data) { Pinterest.showToast("Save Success", 'success'); }, error: function () { Pinterest.showToast("Can't connect server, please try again", 'error'); } }); }); } /** * @description list of language and it's key * @returns array */ static languageList() { let language = { vi: 'Việt Nam', en: 'English', cn: 'China', rus: 'Rusia', es: 'Tây ban nha(Spanish)', tr: 'Thổ nhĩ kỳ(Turkish)', fr: 'Pháp(French)', por: 'Bồ đào nha (Portuguese)', }; return language; } /** * @description change language */ changeLanguage() { let token = this.token; $('#pinterestList').on('change', '.languageRadio', function () { let id = $(this).attr('data-id'); let language = $(this).attr('value'); jQuery.ajax({ url: '/change-language', data: {_token: token, _id: id, language: language}, type: "POST", timeout: 30000, success: function (data) { Pinterest.showToast('success', 'success'); }, error: function () { Pinterest.showToast('error', 'error'); } }); console.log(id); console.log(language); }); } editTitle() { $('#pinterestList').on('keyup', '.titlePost', function () { clearTimeout(window.timer); // Đặt lại timer mới let title = $(this).val(); let id = $(this).attr('id'); let token = $("meta[name='csrf-token']").attr("content"); console.log('thuy'); window.timer = setTimeout(function () { // Gửi request tới server ở đây jQuery.ajax({ url: '/change-title', data: {_token: token, _id: id, title: title}, type: "POST", timeout: 30000, success: function (data) { Pinterest.showToast('success', 'success'); }, error: function (data) { Pinterest.showToast(data.responseJSON.message, 'error'); } }); }, 1000); }); } static showToast(msg, type) { let typeToast = { success: "linear-gradient(to right, #00b09b, #96c93d)", error: "red", warning: "yellow", }; Toastify({ text: msg, duration: 3000, close: true, gravity: "top", // `top` or `bottom` position: "right", // `left`, `center` or `right` stopOnFocus: true, // Prevents dismissing of toast on hover style: { background: typeToast[type], }, onClick: function () { } // Callback after click }).showToast(); } deletePost() { let token = this.token; $('#pinterestList').on('click', '.delete', function () { if (confirm("Are you sure to delete this post?")) { let id = $(this).attr('data'); jQuery.ajax({ url: '/pinterest/delete-post', data: {_token: token, _id: id}, type: "POST", timeout: 30000, success: function (data) { Pinterest.showToast("Delete Success", 'success'); // reload table $('#pinterestList').DataTable().ajax.reload(); }, error: function () { Pinterest.showToast("Can't connect server, please try again", 'error'); } }); } }); } } $(function () { let PinterestData = new Pinterest(); PinterestData.listPinterest(); PinterestData.copyright(); PinterestData.changeLanguage(); PinterestData.editTitle(); PinterestData.categoryChange(); PinterestData.deletePost(); });