mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-16 11:00:41 +00:00
Better auto initialization method for forms and resource displays
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
ResourceDisplays.CorpusDisplay = class CorpusDisplay extends ResourceDisplays.BaseDisplay {
|
||||
static htmlClass = 'corpus-display';
|
||||
|
||||
constructor(displayElement) {
|
||||
super(displayElement);
|
||||
this.corpusId = displayElement.dataset.corpusId;
|
||||
|
@ -1,6 +1,28 @@
|
||||
var ResourceDisplays = {};
|
||||
|
||||
ResourceDisplays.autoInit = () => {
|
||||
console.log('ResourceDisplays.autoInit');
|
||||
for (let propertyName in ResourceDisplays) {
|
||||
let property = ResourceDisplays[propertyName];
|
||||
// Call autoInit of all properties that are subclasses of `ResourceDisplays.BaseDisplay`.
|
||||
// This does not include `ResourceDisplays.BaseDisplay` itself.
|
||||
if (property.prototype instanceof ResourceDisplays.BaseDisplay) {
|
||||
console.log(property);
|
||||
// Check if the static `htmlClass` property is defined.
|
||||
if (property.htmlClass === undefined) {return;}
|
||||
// Gather all HTML elements that have the `this.htmlClass` class
|
||||
// and do not have the `no-autoinit` class.
|
||||
let displayElements = document.querySelectorAll(`.${property.htmlClass}:not(.no-autoinit)`);
|
||||
console.log(displayElements);
|
||||
// Create an instance of this class for each display element.
|
||||
for (let displayElement of displayElements) {new property(displayElement);}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ResourceDisplays.BaseDisplay = class BaseDisplay {
|
||||
static htmlClass;
|
||||
|
||||
constructor(displayElement) {
|
||||
this.displayElement = displayElement;
|
||||
this.userId = this.displayElement.dataset.userId;
|
||||
|
@ -1,4 +1,6 @@
|
||||
ResourceDisplays.JobDisplay = class JobDisplay extends ResourceDisplays.BaseDisplay {
|
||||
static htmlClass = 'job-display';
|
||||
|
||||
constructor(displayElement) {
|
||||
super(displayElement);
|
||||
this.jobId = this.displayElement.dataset.jobId;
|
||||
|
Reference in New Issue
Block a user