create error page script
This commit is contained in:
parent
0f39fbdc12
commit
f98a70b714
1 changed files with 122 additions and 0 deletions
122
scripts/pages/error.js
Normal file
122
scripts/pages/error.js
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
/*
|
||||||
|
Display the error screen details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Page from "/scripts/pages/page.js";
|
||||||
|
import Tabs from "/scripts/GUI/tabs.js";
|
||||||
|
|
||||||
|
import {global, observe} from "/scripts/secretariat.js";
|
||||||
|
import pointer from "/scripts/data/pointer.js";
|
||||||
|
|
||||||
|
import logging from "/scripts/logging.js";
|
||||||
|
|
||||||
|
class Page_Error extends Page {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.content();
|
||||||
|
this.background();
|
||||||
|
this.events();
|
||||||
|
};
|
||||||
|
|
||||||
|
async background() {
|
||||||
|
// Wait until a change in the session storage.
|
||||||
|
observe(async (changes) => {
|
||||||
|
await this.update();
|
||||||
|
this.fill();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Update the data.
|
||||||
|
*/
|
||||||
|
async update() {
|
||||||
|
// Set the reference website when overriding or unset.
|
||||||
|
if (!this[`ref`]) {this[`ref`] = await pointer.read(`URL`)};
|
||||||
|
|
||||||
|
// Get all the data to be used here.
|
||||||
|
let STORAGE_DATA = await global.read([`sites`, this[`ref`], `status`], -1)
|
||||||
|
|
||||||
|
// Update all other data.
|
||||||
|
this[`status`] = ((STORAGE_DATA != null && (typeof STORAGE_DATA).includes(`obj`)) ? (Object.keys(STORAGE_DATA).length) : false)
|
||||||
|
? STORAGE_DATA
|
||||||
|
// Accomodate data erasure.
|
||||||
|
: ((this[`status`])
|
||||||
|
? this[`status`]
|
||||||
|
: {});
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Extract the contents of the page.
|
||||||
|
*/
|
||||||
|
content () {
|
||||||
|
this[`elements`] = (this[`elements`]) ? this[`elements`] : {};
|
||||||
|
|
||||||
|
const error_display = () => {
|
||||||
|
this[`elements`][`error display`] = {};
|
||||||
|
let ERROR_CONTENTS = document.querySelectorAll(`[data-error]`);
|
||||||
|
|
||||||
|
ERROR_CONTENTS.forEach((ELEMENT) => {
|
||||||
|
let PROPERTY = ELEMENT.getAttribute(`data-error`).trim();
|
||||||
|
this[`elements`][`error display`][PROPERTY] = ELEMENT;
|
||||||
|
|
||||||
|
// Remove properties used to construct since it is already saved.
|
||||||
|
ELEMENT.removeAttribute(`data-error`);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
error_display();
|
||||||
|
this.fill();
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Fill in the content of the page.
|
||||||
|
*/
|
||||||
|
fill () {
|
||||||
|
this.update();
|
||||||
|
|
||||||
|
console.log(this);
|
||||||
|
|
||||||
|
(this[`elements`][`error display`] && this[`status`][`error`])
|
||||||
|
? (Object.keys(this[`elements`][`error display`]).forEach((KEY) => {
|
||||||
|
this[`elements`][`error display`][KEY].innerText = String(this[`status`][`error`][KEY])
|
||||||
|
}))
|
||||||
|
: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Add event listeners to the page.
|
||||||
|
*/
|
||||||
|
events () {
|
||||||
|
this[`elements`] = (this[`elements`]) ? this[`elements`] : {};
|
||||||
|
this[`elements`][`button`] = {};
|
||||||
|
|
||||||
|
document.querySelectorAll(`[data-action]`).forEach((ELEMENT) => {
|
||||||
|
let ACTION = ELEMENT.getAttribute(`data-action`);
|
||||||
|
this[`elements`][`button`][ACTION] = ELEMENT;
|
||||||
|
|
||||||
|
// Remove the data-action attribute.
|
||||||
|
ELEMENT.removeAttribute(`data-action`);
|
||||||
|
})
|
||||||
|
|
||||||
|
// Add an event listener to the refresh button.
|
||||||
|
this[`elements`][`button`][`refresh`].addEventListener(`click`, () => {
|
||||||
|
this.send();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Send a request to the content script to scrape the page.
|
||||||
|
*/
|
||||||
|
send() {
|
||||||
|
try {
|
||||||
|
// Send a message to the content script.
|
||||||
|
Tabs.query(null, 0).then((TAB) => {
|
||||||
|
chrome.tabs.sendMessage(TAB.id, {"refresh": true});
|
||||||
|
});
|
||||||
|
} catch(err) {
|
||||||
|
logging.error(err.name, err.message, err.stack);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
new Page_Error()
|
Loading…
Add table
Add a link
Reference in a new issue