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