const component = () => { return { empty: true, titles: [], entries: [], loading: true, load() { this.loading = true; this.request('GET', `${base_url}api/admin/titles/missing`, data => { this.titles = data.titles; this.request('GET', `${base_url}api/admin/entries/missing`, data => { this.entries = data.entries; this.loading = false; this.empty = this.entries.length === 0 && this.titles.length === 0; }); }); }, rm(event) { const rawID = event.currentTarget.closest('tr').id; const [type, id] = rawID.split('-'); const url = `${base_url}api/admin/${type === 'title' ? 'titles' : 'entries'}/missing/${id}`; this.request('DELETE', url, () => { this.load(); }); }, request(method, url, cb) { console.log(url); $.ajax({ type: method, url: url, contentType: 'application/json' }) .done(data => { if (data.error) { alert('danger', `Failed to ${method} ${url}. Error: ${data.error}`); return; } if (cb) cb(data); }) .fail((jqXHR, status) => { alert('danger', `Failed to ${method} ${url}. Error: [${jqXHR.status}] ${jqXHR.statusText}`); }); } }; };