import { escape, whenReady } from './dom'; import { DataTable, dumbFilterCallback } from './data_tables'; 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 tags = rowData.tags.map((tagData) => { let tagColorClass; if (tagData.name.indexOf('nsfw') !== -1) { tagColorClass = 'is-danger'; } else if (tagData.name.indexOf('safe') !== -1) { tagColorClass = 'is-success'; } else if (tagData.name.indexOf('/') !== -1) { tagColorClass = 'is-primary'; } else { tagColorClass = 'is-info'; } return ` ${escape(tagData.name)} `; }).join(''); const userData = getUserInfo(); const deleteElem = true ? `
` : ''; return ` ${escape(rowData.title)} ${rowData.created_at} ${rowData.visibility} ${rowData.views || 0} ${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 tags = rowData.tags.map((tagData) => { let tagColorClass; if (tagData.name.indexOf('nsfw') !== -1) { tagColorClass = 'is-danger'; } else if (tagData.name.indexOf('safe') !== -1) { tagColorClass = 'is-success'; } else if (tagData.name.indexOf('/') !== -1) { tagColorClass = 'is-primary'; } else { tagColorClass = 'is-info'; } return ` ${escape(tagData.name)} `; }).join(''); const recentUpdate = rowData.recently_updated ? `` : ``; // ${escape(rowData.author)} return ` ${escape(rowData.title)} ${rowData.favourited_at} ${recentUpdate} ${tags} `; }, filterCallback: dumbFilterCallback }); faveTable.attach(); });