add content switching for popup
This commit is contained in:
		
							parent
							
								
									b61100af02
								
							
						
					
					
						commit
						a3749c71d2
					
				
					 1 changed files with 50 additions and 2 deletions
				
			
		|  | @ -3,7 +3,7 @@ | ||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| // Import modules.
 | // Import modules.
 | ||||||
| import {session} from "/scripts/secretariat.js"; | import {session, observe} from "/scripts/secretariat.js"; | ||||||
| import Window from "/scripts/GUI/window.js"; | import Window from "/scripts/GUI/window.js"; | ||||||
| import Page from "/scripts/pages/page.js"; | import Page from "/scripts/pages/page.js"; | ||||||
| import Loader from "/scripts/GUI/loader.js"; | import Loader from "/scripts/GUI/loader.js"; | ||||||
|  | @ -13,10 +13,58 @@ class Page_Popup extends Page { | ||||||
| 		super(); | 		super(); | ||||||
| 		(this.events) ? this.events() : false; | 		(this.events) ? this.events() : false; | ||||||
| 		this.content(); | 		this.content(); | ||||||
|  | 		this.background(); | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	content() { | 	async background() { | ||||||
|  | 		observe(() => {this.content();}); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	async loading() { | ||||||
| 		this.loading = new Loader(); | 		this.loading = new Loader(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	async switch() { | ||||||
|  | 		// Get the last edited site. 
 | ||||||
|  | 		let SITE = {}; | ||||||
|  | 		SITE.url = await session.read([`last`]); | ||||||
|  | 		SITE.details = await session.read([`sites`, SITE.url]); | ||||||
|  | 		 | ||||||
|  | 		let PAGES = { | ||||||
|  | 			"results": "results.htm", | ||||||
|  | 			"loading": "load.htm", | ||||||
|  | 			"error": "error.htm" | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		console.log(PAGES); | ||||||
|  | 		// Set the relative chrome URLs
 | ||||||
|  | 		(Object.keys(PAGES)).forEach(PAGE => { | ||||||
|  | 			PAGES[PAGE] = chrome.runtime.getURL(`pages/popup/${PAGES[PAGE]}`); | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 		// Check if the site is available.
 | ||||||
|  | 		if (SITE.details == null) { | ||||||
|  | 			this.elements[`frame`].src = PAGES[`loading`]; | ||||||
|  | 		} else if (SITE.details.error) { | ||||||
|  | 			// Set the iframe src to display the error. 
 | ||||||
|  | 			this.elements[`frame`].src = PAGES[`error`]; | ||||||
|  | 		} else { | ||||||
|  | 			// Set the iframe src to display the results. 
 | ||||||
|  | 			this.elements[`frame`].src = PAGES[`results`]; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	async content() { | ||||||
|  | 		this.elements = {}; | ||||||
|  | 		this.elements[`frame`] = document.querySelectorAll(`iframe.viewer`); | ||||||
|  | 
 | ||||||
|  | 		// Check if the frame is available.
 | ||||||
|  | 		if (this.elements[`frame`].length) { | ||||||
|  | 			this.switch() | ||||||
|  | 		} else { | ||||||
|  | 			this.loading(); | ||||||
|  | 		} | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	events() { | 	events() { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue