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