gy-foo
Version:
A library that contains all models for the gy-web-project.
96 lines • 12.2 kB
JavaScript
import { Field } from './field.model';
export class EntityDef {
constructor(entityDef) {
if (entityDef instanceof EntityDef) {
this.fields = entityDef.getFields();
this.altdef = entityDef.getAltdef();
this.init = entityDef.getInitMode();
}
else {
this.fields = entityDef
? Object.entries(entityDef.fields)
.map(([fldname, fld]) => [fldname, new Field(fld)])
.reduce((fields, [fldname, fld]) => Object.assign(fields, { [fldname]: fld }), {})
: {};
this.altdef = entityDef ? entityDef.altdef || 0 : 0;
this.init = entityDef ? entityDef.init || 0 : 0;
}
}
/**
* Gets the fields of this Entity Definition
*/
getFields() {
return this.fields;
}
/**
* Get the given field from this Entity Definition
* @param fld the name of the field
*/
getField(fld) {
if (typeof fld === 'string') {
return this.fields ? this.fields[fld.toUpperCase()] : undefined;
}
else {
return undefined;
}
}
/**
* Get a list of all fields, that can be seen.
* @param type 'lst' for list views (table), 'occ' for detail views, empty for reading without filter
* @param write read and write rights are needed
* @returns an array with all fields that fits the rigths
*/
getFieldList(options) {
if (this.fields) {
let result = Object.entries(this.fields);
if (options.type) {
const checkType = 'ar_' + options.type;
if (options.write) {
result = result.filter(([fld, field]) => this.canReadWrite(fld, checkType, options.meta ? options.meta[fld] : undefined));
}
else {
result = result.filter(([fld, field]) => this.canRead(fld, checkType, options.meta ? options.meta[fld] : undefined));
}
}
return result.map(([fld, field]) => {
let bez = field.bez;
if (options.meta && options.meta[fld] && options.meta[fld].bez) {
bez = options.meta[fld].bez;
}
return { fld, bez };
});
}
else {
return [];
}
}
/**
* Checks if the altdef flag is set.
*/
getAltdef() {
return this.altdef != null ? this.altdef : 0;
}
/**
* Checks if the init flag is set.
*/
getInitMode() {
return this.init != null ? this.init : 0;
}
/**
* Checks if the given field can be seen in a list
* @param fld the name of the field
* @param field an alternative field definition
*/
listCanRead(fld, field) {
return this.canRead(fld, 'ar_lst', field);
}
canRead(fld, checkType, field) {
const defaultField = this.getField(fld);
return defaultField && defaultField.canRead(checkType, field);
}
canReadWrite(fld, checkType, field) {
const defaultField = this.getField(fld);
return defaultField && defaultField.canReadWrite(checkType, field);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5RGVmLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZ3ktZm9vLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9lbnRpdHlEZWYubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdoRCxNQUFNLE9BQU8sU0FBUztJQU1wQixZQUFZLFNBQXVHO1FBQ2pILElBQUksU0FBUyxZQUFZLFNBQVMsRUFBRTtZQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTO2dCQUNyQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO3FCQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDbEQsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBa0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN2RyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBSSxD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QyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVcsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxPQUFPLFlBQVksSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVcsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxPQUFPLFlBQVksSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZCwgRmllbGREZWYgfSBmcm9tICcuL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkTGlzdCB9IGZyb20gJy4vZmllbGRMaXN0Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEVudGl0eURlZiB7XG4gIHByaXZhdGUgZmllbGRzOiBGaWVsZExpc3Q7XG4gIHByaXZhdGUgYWx0ZGVmPzogbnVtYmVyO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBpbml0PzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGVudGl0eURlZj86IHsgZmllbGRzOiB7IFtmbGQ6IHN0cmluZ106IEZpZWxkIHwgRmllbGREZWYgfTsgYWx0ZGVmPzogbnVtYmVyOyBpbml0PzogbnVtYmVyIH0gfCBFbnRpdHlEZWYpIHtcbiAgICBpZiAoZW50aXR5RGVmIGluc3RhbmNlb2YgRW50aXR5RGVmKSB7XG4gICAgICB0aGlzLmZpZWxkcyA9IGVudGl0eURlZi5nZXRGaWVsZHMoKTtcbiAgICAgIHRoaXMuYWx0ZGVmID0gZW50aXR5RGVmLmdldEFsdGRlZigpO1xuICAgICAgdGhpcy5pbml0ID0gZW50aXR5RGVmLmdldEluaXRNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRzID0gZW50aXR5RGVmXG4gICAgICAgID8gT2JqZWN0LmVudHJpZXMoZW50aXR5RGVmLmZpZWxkcylcbiAgICAgICAgICAgIC5tYXAoKFtmbGRuYW1lLCBmbGRdKSA9PiBbZmxkbmFtZSwgbmV3IEZpZWxkKGZsZCldKVxuICAgICAgICAgICAgLnJlZHVjZSgoZmllbGRzLCBbZmxkbmFtZSwgZmxkXTogW3N0cmluZywgRmllbGRdKSA9PiBPYmplY3QuYXNzaWduKGZpZWxkcywgeyBbZmxkbmFtZV06IGZsZCB9KSwge30pXG4gICAgICAgIDoge307XG4gICAgICB0aGlzLmFsdGRlZiA9IGVudGl0eURlZiA/IGVudGl0eURlZi5hbHRkZWYgfHwgMCA6IDA7XG4gICAgICB0aGlzLmluaXQgPSBlbnRpdHlEZWYgPyBlbnRpdHlEZWYuaW5pdCB8fCAwIDogMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZmllbGRzIG9mIHRoaXMgRW50aXR5IERlZmluaXRpb25cbiAgICovXG4gIGdldEZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBmaWVsZCBmcm9tIHRoaXMgRW50aXR5IERlZmluaXRpb25cbiAgICogQHBhcmFtIGZsZCB0aGUgbmFtZSBvZiB0aGUgZmllbGRcbiAgICovXG4gIGdldEZpZWxkKGZsZDogc3RyaW5nKTogRmllbGQge1xuICAgIGlmICh0eXBlb2YgZmxkID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuZmllbGRzID8gdGhpcy5maWVsZHNbZmxkLnRvVXBwZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGFsbCBmaWVsZHMsIHRoYXQgY2FuIGJlIHNlZW4uXG4gICAqIEBwYXJhbSB0eXBlICAnbHN0JyBmb3IgbGlzdCB2aWV3cyAodGFibGUpLCAnb2NjJyBmb3IgZGV0YWlsIHZpZXdzLCBlbXB0eSBmb3IgcmVhZGluZyB3aXRob3V0IGZpbHRlclxuICAgKiBAcGFyYW0gd3JpdGUgcmVhZCBhbmQgd3JpdGUgcmlnaHRzIGFyZSBuZWVkZWRcbiAgICogQHJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgZmllbGRzIHRoYXQgZml0cyB0aGUgcmlndGhzXG4gICAqL1xuICBnZXRGaWVsZExpc3Qob3B0aW9uczogeyB0eXBlPzogc3RyaW5nOyB3cml0ZT86IGJvb2xlYW47IG1ldGE/OiBGaWVsZExpc3QgfSk6IHsgZmxkOiBzdHJpbmc7IGJlejogc3RyaW5nIH1bXSB7XG4gICAgaWYgKHRoaXMuZmllbGRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXModGhpcy5maWVsZHMpO1xuXG4gICAgICBpZiAob3B0aW9ucy50eXBlKSB7XG4gICAgICAgIGNvbnN0IGNoZWNrVHlwZSA9ICdhcl8nICsgb3B0aW9ucy50eXBlO1xuICAgICAgICBpZiAob3B0aW9ucy53cml0ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKFtmbGQsIGZpZWxkXSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2FuUmVhZFdyaXRlKGZsZCwgY2hlY2tUeXBlLCBvcHRpb25zLm1ldGEgPyBvcHRpb25zLm1ldGFbZmxkXSA6IHVuZGVmaW5lZClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKFtmbGQsIGZpZWxkXSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2FuUmVhZChmbGQsIGNoZWNrVHlwZSwgb3B0aW9ucy5tZXRhID8gb3B0aW9ucy5tZXRhW2ZsZF0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0Lm1hcCgoW2ZsZCwgZmllbGRdKSA9PiB7XG4gICAgICAgIGxldCBiZXogPSBmaWVsZC5iZXo7XG4gICAgICAgIGlmIChvcHRpb25zLm1ldGEgJiYgb3B0aW9ucy5tZXRhW2ZsZF0gJiYgb3B0aW9ucy5tZXRhW2ZsZF0uYmV6KSB7XG4gICAgICAgICAgYmV6ID0gb3B0aW9ucy5tZXRhW2ZsZF0uYmV6O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGZsZCwgYmV6IH07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGFsdGRlZiBmbGFnIGlzIHNldC5cbiAgICovXG4gIGdldEFsdGRlZigpIHtcbiAgICByZXR1cm4gdGhpcy5hbHRkZWYgIT0gbnVsbCA/IHRoaXMuYWx0ZGVmIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGluaXQgZmxhZyBpcyBzZXQuXG4gICAqL1xuICBnZXRJbml0TW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbml0ICE9IG51bGwgPyB0aGlzLmluaXQgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmllbGQgY2FuIGJlIHNlZW4gaW4gYSBsaXN0XG4gICAqIEBwYXJhbSBmbGQgdGhlIG5hbWUgb2YgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZCBhbiBhbHRlcm5hdGl2ZSBmaWVsZCBkZWZpbml0aW9uXG4gICAqL1xuICBsaXN0Q2FuUmVhZChmbGQ6IHN0cmluZywgZmllbGQ/OiBGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhblJlYWQoZmxkLCAnYXJfbHN0JywgZmllbGQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5SZWFkKGZsZDogc3RyaW5nLCBjaGVja1R5cGU6IHN0cmluZywgZmllbGQ/OiBGaWVsZCkge1xuICAgIGNvbnN0IGRlZmF1bHRGaWVsZCA9IHRoaXMuZ2V0RmllbGQoZmxkKTtcbiAgICByZXR1cm4gZGVmYXVsdEZpZWxkICYmIGRlZmF1bHRGaWVsZC5jYW5SZWFkKGNoZWNrVHlwZSwgZmllbGQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5SZWFkV3JpdGUoZmxkOiBzdHJpbmcsIGNoZWNrVHlwZTogc3RyaW5nLCBmaWVsZD86IEZpZWxkKSB7XG4gICAgY29uc3QgZGVmYXVsdEZpZWxkID0gdGhpcy5nZXRGaWVsZChmbGQpO1xuICAgIHJldHVybiBkZWZhdWx0RmllbGQgJiYgZGVmYXVsdEZpZWxkLmNhblJlYWRXcml0ZShjaGVja1R5cGUsIGZpZWxkKTtcbiAgfVxufVxuIl19