Files
P42_UI/app/models/system/MarklogicModel.js
T
2025-08-27 07:03:09 +00:00

184 lines
5.5 KiB
JavaScript

class MarklogicModel extends EICModel {
entityTypes = [
{
ref: '',
label: '(entity)',
icon: '',
filters: [ ]
},
{
ref: 'person',
label: 'Person',
icon: '',
filters: [ 'id', 'euLogin', 'email' ]
},
{
ref: 'application',
label: 'App',
icon: '',
filters: [ ]
},
{
ref: 'evaluation',
label: 'SP Evaluation',
icon: '',
filters: [ ]
},
{
ref: 'organisation',
label: 'Organisation',
icon: '',
filters: [ 'id', 'pic' ]
}
]
payload = {
entities: [],
relations: []
};
constructor(privileges) {
super('explorer', privileges);
}
getType(type) { return this.entityTypes.find(item => item.ref == type) || this.entityTypes.find(item => item.ref == ''); }
filters() {
//if(!this.hasPrivilege('list')) return( new Promise((resolve, reject) => reject()))
let endpoint = this.getApiEndpoint('filters');
return (
this.request(endpoint.uri, endpoint.method)
.then( async serverData => {
return serverData.payload;
})
)
}
search(filters) {
//if(!this.hasPrivilege('list')) return( new Promise((resolve, reject) => reject()))
let endpoint = this.getApiEndpoint('search');
return (
this.request(endpoint.uri, endpoint.method, filters)
.then( async serverData => {
return serverData.payload;
})
)
}
}
app.registerClass('MarklogicModel', MarklogicModel);
/* Leftovers
addPerson() {
let fnames = ['Mike', 'Marc', 'Nico', 'John', 'Jack', 'Sam', 'Steve', 'Mary', 'July']
let lnames = ['Myers', 'Vandenbroek', 'Dumoulin', 'Smith', 'Yamaha', 'Roland', 'Jones', 'Flintstone', 'Moog']
let fname = fnames[Math.floor(Math.random() * fnames.length)]
let lname = lnames[Math.floor(Math.random() * lnames.length)]
let item = {
id: crypto.randomUUID().substring(0,8),
label: fname + ' ' + lname,
type: 'person',
userProfile: {
euLogin: lname.substring(0,5).toLowerCase() + fname.substring(0,2).toLowerCase(),
roles: [
{
role: [
{
referenceItemKey: {
key: "dK1kTbD_kSAS64tAxGB4LoQ",
_value: "ByPass Project Officer"
}
},
{
referenceItemKey: {
key: "dlcsLwB2vQMOPEXN5D8PUQg",
_value: "EIC Developer"
}
},
{
referenceItemKey: {
key: "d3XJP_8OETQyb4Qqmip2ypw",
_value: "EIC_Admin"
}
}
]
}
]
},
information: {
gender: {
referenceItemKey: {
key: "dKQGjloGhSbGlOKIiABV8eQ",
_value: "M"
}
},
name: {
firstName: fname,
lastName: lname
},
contacts: {
email: fname + '.' + lname + '@someemail.com',
phone: '+324' + Math.random().toString().slice(2,8)
},
}
}
this.payload.entities.push(item);
return item;
}
addOrg() {
let fnames = ['co', 'glass', 'alu', 'art', 'steel', 'eco', 'son', 'digit', 'net', 'tech', 'bio', 'nano', 'tron']
let lnames = ['sprl', 'ltd', 'inc.', 'gmbh', 'intl.', 'sa']
let name = fnames[Math.floor(Math.random() * fnames.length)] + fnames[Math.floor(Math.random() * fnames.length)] + ' ' + lnames[Math.floor(Math.random() * lnames.length)]
let item = {
id: crypto.randomUUID().substring(0,8),
label: name,
type: 'organisation',
information: {
pic: '8' + Math.random().toString().slice(2,8),
legalName: name
},
statusHistory: [
{
status: {
value: "created",
dateTime: "2023-07-18T15:27:06.397381Z",
changedByKey: "d4rP8zgrURMiAAv-StY9YKQ"
}
}
]
}
this.payload.entities.push(item);
return item;
}
addLink(org, person) {
if(!this.payload.relations.find(
item => (item.source == org.id && item.target == person.id) || (item.target == org.id && item.source == person.id))) {
let relation = {
source: org.id,
target: person.id
}
this.payload.relations.push(relation)
}
}
*/