mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2025-06-13 01:20:41 +00:00
Merge branch 'development' of gitlab.ub.uni-bielefeld.de:sfb1288inf/nopaque into development
This commit is contained in:
@ -1,70 +0,0 @@
|
||||
class PublicCorporaList extends RessourceList {
|
||||
static instances = [];
|
||||
|
||||
static getInstance(elem) {
|
||||
return PublicCorporaList.instances.find((instance) => {
|
||||
return instance.listjs.list === elem;
|
||||
});
|
||||
}
|
||||
|
||||
static autoInit() {
|
||||
for (let publicCorporaListElement of document.querySelectorAll('.public-corpora-list:not(.no-autoinit)')) {
|
||||
new PublicCorporaList(publicCorporaListElement);
|
||||
}
|
||||
}
|
||||
|
||||
static options = {
|
||||
initialHtmlGenerator: (id) => {
|
||||
return `
|
||||
<div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="${id}-search" class="search" type="search"></input>
|
||||
<label for="${id}-search">Search corpus</label>
|
||||
</div>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Title</th>
|
||||
<th>Description</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="list"></tbody>
|
||||
</table>
|
||||
<ul class="pagination"></ul>
|
||||
`.trim();
|
||||
},
|
||||
item: `
|
||||
<tr class="clickable hoverable">
|
||||
<td><a class="btn-floating disabled"><i class="material-icons service-color darken" data-service="corpus-analysis">book</i></a></td>
|
||||
<td><b class="title"></b></td>
|
||||
<td><i class="description"></i></td>
|
||||
</tr>
|
||||
`.trim(),
|
||||
ressourceMapper: (corpus) => {
|
||||
return {
|
||||
'id': corpus.id,
|
||||
'creation-date': corpus.creation_date,
|
||||
'description': corpus.description,
|
||||
'title': corpus.title
|
||||
};
|
||||
},
|
||||
sortArgs: ['creation-date', {order: 'desc'}],
|
||||
valueNames: [
|
||||
{data: ['id']},
|
||||
{data: ['creation-date']},
|
||||
'description',
|
||||
'title'
|
||||
]
|
||||
};
|
||||
|
||||
constructor(listElement, options = {}) {
|
||||
super(listElement, {...PublicCorporaList.options, ...options});
|
||||
PublicCorporaList.instances.push(this);
|
||||
}
|
||||
|
||||
init(user) {
|
||||
this._init(user.corpora.is_public);
|
||||
}
|
||||
}
|
@ -10,7 +10,6 @@ class RessourceList {
|
||||
JobList.autoInit();
|
||||
JobInputList.autoInit();
|
||||
JobResultList.autoInit();
|
||||
PublicCorporaList.autoInit();
|
||||
SpaCyNLPPipelineModelList.autoInit();
|
||||
TesseractOCRPipelineModelList.autoInit();
|
||||
UserList.autoInit();
|
||||
@ -31,11 +30,11 @@ class RessourceList {
|
||||
...{pagination: {item: `<li><a class="page" href="#${listElement.id}"></a></li>`}},
|
||||
...options
|
||||
}
|
||||
if ('ressourceMapper' in options) {
|
||||
if ('ressourceMapper' in options && typeof options.ressourceMapper === 'function') {
|
||||
this.ressourceMapper = options.ressourceMapper;
|
||||
delete options.ressourceMapper;
|
||||
}
|
||||
if ('initialHtmlGenerator' in options) {
|
||||
if ('initialHtmlGenerator' in options && typeof options.initialHtmlGenerator === 'function') {
|
||||
this.initialHtmlGenerator = options.initialHtmlGenerator;
|
||||
listElement.innerHTML = this.initialHtmlGenerator(listElement.id);
|
||||
delete options.initialHtmlGenerator;
|
||||
|
102
app/static/js/XMLtoObject.js
Normal file
102
app/static/js/XMLtoObject.js
Normal file
@ -0,0 +1,102 @@
|
||||
/**
|
||||
* XMLtoObject - Converts XML into a JavaScript value or object.
|
||||
* GitHub: https://github.com/Pevtrick/XMLtoObject
|
||||
* by Patrick Jentsch: https://github.com/Pevtrick
|
||||
*/
|
||||
|
||||
/**
|
||||
* The XMLDocument.toObject() method converts the XMLDocument into a JavaScript value or object.
|
||||
* @param {String} [attributePrefix=] - A Prefix, which is added to all properties generated by XML attributes.
|
||||
* @returns {Object} - The converted result.
|
||||
*/
|
||||
XMLDocument.prototype.toObject = function(attributePrefix='') {
|
||||
let obj = {};
|
||||
|
||||
obj[this.documentElement.nodeName] = this.documentElement.toObject(attributePrefix);
|
||||
|
||||
return obj;
|
||||
};
|
||||
|
||||
/**
|
||||
* The Node.toObject() method converts the Node into a JavaScript value or object.
|
||||
* @param {String} [attributePrefix=] - A Prefix, which is added to all properties generated by XML attributes.
|
||||
* @returns {Object|String|null} - The converted result.
|
||||
*/
|
||||
Node.prototype.toObject = function(attributePrefix='') {
|
||||
let obj = null;
|
||||
|
||||
switch (this.nodeType) {
|
||||
case Node.ELEMENT_NODE:
|
||||
let hasAttributes = this.attributes.length > 0;
|
||||
let hasChildNodes = this.childNodes.length > 0;
|
||||
|
||||
/* Stop conversion if the Node doesn't contain any attributes or child nodes */
|
||||
if (!(hasAttributes || hasChildNodes)) {
|
||||
break;
|
||||
}
|
||||
|
||||
obj = {};
|
||||
|
||||
/* Convert attributes */
|
||||
for (let attribute of this.attributes) {
|
||||
obj[`attributePrefix${attribute.name}`] = attribute.value;
|
||||
}
|
||||
|
||||
/* Convert child nodes */
|
||||
for (let childNode of this.childNodes) {
|
||||
switch (childNode.nodeType) {
|
||||
case Node.ELEMENT_NODE:
|
||||
break;
|
||||
case Node.TEXT_NODE:
|
||||
/* Check whether the child text node is the only child of the current node. */
|
||||
if (!hasAttributes && this.childNodes.length === 1) {
|
||||
obj = childNode.toObject(attributePrefix);
|
||||
continue;
|
||||
}
|
||||
if (childNode.data.trim() === '') {continue;}
|
||||
break;
|
||||
default:
|
||||
/* This recursion leads to a console message. */
|
||||
childNode.toObject(attributePrefix);
|
||||
continue;
|
||||
}
|
||||
/**
|
||||
* If the child node is the first of its type in this childset,
|
||||
* process it and add it directly as a property to the return object.
|
||||
* If not add it to an array which is set as a property of the return object.
|
||||
*/
|
||||
if (childNode.nodeName in obj) {
|
||||
if (!Array.isArray(obj[childNode.nodeName])) {
|
||||
obj[childNode.nodeName] = [obj[childNode.nodeName]];
|
||||
}
|
||||
obj[childNode.nodeName].push(childNode.toObject(attributePrefix));
|
||||
} else {
|
||||
obj[childNode.nodeName] = childNode.toObject(attributePrefix);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Node.TEXT_NODE:
|
||||
if (this.data.trim() !== '') {obj = this.data;}
|
||||
break;
|
||||
case Node.COMMENT_NODE:
|
||||
console.log('Skipping comment node:');
|
||||
console.log(node);
|
||||
break;
|
||||
case Node.DOCUMENT_NODE:
|
||||
obj = {};
|
||||
obj[this.documentElement.nodeName] = this.documentElement.toObject(attributePrefix);
|
||||
break;
|
||||
default:
|
||||
/**
|
||||
* The following node types are not processed because they don't offer data, which has to be stored in the object:
|
||||
* Node.PROCESSING_INSTRUCTION_NODE, Node.DOCUMENT_TYPE_NODE, Node.DOCUMENT_FRAGMENT_NODE
|
||||
* The following node types are deprecated and therefore not supported by this function:
|
||||
* Node.ATTRIBUTE_NODE, Node.CDATA_SECTION_NODE, Node.ENTITY_REFERENCE_NODE, Node.ENTITY_NODE, Node.NOTATION_NODE
|
||||
*/
|
||||
console.log(`Node type: '${this.nodeType}' is not supported.`);
|
||||
console.log(node);
|
||||
break;
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
Reference in New Issue
Block a user