import { escape, whenReady } from './dom'; import { DataTable, dumbFilterCallback } from './data_tables'; import { tagsToHtml } from "./utils"; import { globalSetup } from './main'; const getUserInfo = () => { const elem = document.getElementById('js-data-holder'); if (!elem) { return { userId: null, csrfToken: null }; } return { userId: elem.dataset.userId, csrfToken: elem.dataset.csrfToken }; }; const parsePasteInfo = (elem) => { if (!elem.dataset.pasteInfo) { return null; } return JSON.parse(elem.dataset.pasteInfo); }; whenReady(() => { globalSetup(); const urlParams = new URLSearchParams(window.location.search); const myParam = urlParams.get('q'); const myPastesElem = document.getElementById('archive'); const table = new DataTable(myPastesElem, { ajaxCallback: (resolve) => { resolve({ data: Array.prototype.map.call(myPastesElem.querySelectorAll('tbody > tr'), parsePasteInfo) }); }, rowCallback: (rowData) => { const userData = getUserInfo(); const deleteElem = true ? `
` : ''; const pasteCreatedAt = new Date(rowData.created_at).toLocaleString(); return ` ${escape(rowData.title)} ${pasteCreatedAt} ${rowData.visibility} ${rowData.views || 0} ${tagsToHtml(rowData.tags)} ${deleteElem} `; }, filterCallback: dumbFilterCallback, preFilter: myParam }); table.attach(); const myFavesElem = document.getElementById('favs'); if (!myFavesElem) { return; } const faveTable = new DataTable(myFavesElem, { ajaxCallback: (resolve) => { resolve({ data: Array.prototype.map.call(myFavesElem.querySelectorAll('tbody > tr'), parsePasteInfo) }); }, rowCallback: (rowData) => { const recentUpdate = rowData.recently_updated ? `` : ``; const pasteFavedAt = new Date(rowData.favourited_at).toLocaleString(); // ${escape(rowData.author)} return ` ${escape(rowData.title)} ${pasteFavedAt} ${recentUpdate} ${tagsToHtml(rowData.tags)} `; }, filterCallback: dumbFilterCallback }); faveTable.attach(); });