Merge pull request #2119 from Bronya-Rand/staging
feat: Third-Party Parser Support
This commit is contained in:
commit
49074effce
|
@ -840,7 +840,13 @@ async function openAttachmentManager() {
|
|||
}
|
||||
|
||||
const buttonTemplate = template.find('.actionButtonTemplate .actionButton').clone();
|
||||
buttonTemplate.find('.actionButtonIcon').addClass(scraper.iconClass);
|
||||
if (scraper.iconAvailable) {
|
||||
buttonTemplate.find('.actionButtonIcon').addClass(scraper.iconClass);
|
||||
buttonTemplate.find('.actionButtonImg').remove();
|
||||
} else {
|
||||
buttonTemplate.find('.actionButtonImg').attr('src', scraper.iconClass);
|
||||
buttonTemplate.find('.actionButtonIcon').remove();
|
||||
}
|
||||
buttonTemplate.find('.actionButtonText').text(scraper.name);
|
||||
buttonTemplate.attr('title', scraper.description);
|
||||
buttonTemplate.on('click', () => {
|
||||
|
|
|
@ -115,8 +115,9 @@
|
|||
</div>
|
||||
|
||||
<div class="actionButtonTemplate">
|
||||
<div class="actionButton list-group-item flex-container flexGap5" title="">
|
||||
<div class="actionButton list-group-item flex-container flexGap5" style="align-items: center;" title="">
|
||||
<i class="actionButtonIcon"></i>
|
||||
<img class="actionButtonImg"/>
|
||||
<span class="actionButtonText"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -9,6 +9,7 @@ import { isValidUrl } from './utils.js';
|
|||
* @property {string} name
|
||||
* @property {string} description
|
||||
* @property {string} iconClass
|
||||
* @property {boolean} iconAvailable
|
||||
* @property {() => Promise<boolean>} isAvailable
|
||||
* @property {() => Promise<File[]>} scrape
|
||||
*/
|
||||
|
@ -19,6 +20,7 @@ import { isValidUrl } from './utils.js';
|
|||
* @property {string} name
|
||||
* @property {string} description
|
||||
* @property {string} iconClass
|
||||
* @property {boolean} iconAvailable
|
||||
*/
|
||||
|
||||
export class ScraperManager {
|
||||
|
@ -45,7 +47,7 @@ export class ScraperManager {
|
|||
* @returns {ScraperInfo[]} List of scrapers available for the Data Bank
|
||||
*/
|
||||
static getDataBankScrapers() {
|
||||
return ScraperManager.#scrapers.map(s => ({ id: s.id, name: s.name, description: s.description, iconClass: s.iconClass }));
|
||||
return ScraperManager.#scrapers.map(s => ({ id: s.id, name: s.name, description: s.description, iconClass: s.iconClass, iconAvailable: s.iconAvailable}));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -87,6 +89,7 @@ class Notepad {
|
|||
this.name = 'Notepad';
|
||||
this.description = 'Create a text file from scratch.';
|
||||
this.iconClass = 'fa-solid fa-note-sticky';
|
||||
this.iconAvailable = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -133,6 +136,7 @@ class WebScraper {
|
|||
this.name = 'Web';
|
||||
this.description = 'Download a page from the web.';
|
||||
this.iconClass = 'fa-solid fa-globe';
|
||||
this.iconAvailable = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -207,6 +211,7 @@ class FileScraper {
|
|||
this.name = 'File';
|
||||
this.description = 'Upload a file from your computer.';
|
||||
this.iconClass = 'fa-solid fa-upload';
|
||||
this.iconAvailable = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -243,6 +248,7 @@ class FandomScraper {
|
|||
this.name = 'Fandom';
|
||||
this.description = 'Download a page from the Fandom wiki.';
|
||||
this.iconClass = 'fa-solid fa-fire';
|
||||
this.iconAvailable = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -349,6 +355,7 @@ class YouTubeScraper {
|
|||
this.name = 'YouTube';
|
||||
this.description = 'Download a transcript from a YouTube video.';
|
||||
this.iconClass = 'fa-brands fa-youtube';
|
||||
this.iconAvailable = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue