UNPKG

gy-foo

Version:

A library that contains all models for the gy-web-project.

96 lines 12.2 kB
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5RGVmLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZ3ktZm9vLyIsInNvdXJjZXMiOlsibGliL21vZGVscy9lbnRpdHlEZWYubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUdoRCxNQUFNLE9BQU8sU0FBUztJQU1wQixZQUFZLFNBQXVHO1FBQ2pILElBQUksU0FBUyxZQUFZLFNBQVMsRUFBRTtZQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTO2dCQUNyQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO3FCQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDbEQsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBa0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUN2RyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsR0FBVztRQUNsQixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNqRTthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsT0FBNkQ7UUFDeEUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFekMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUNoQixNQUFNLFNBQVMsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDdkMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO29CQUNqQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUNoRixDQUFDO2lCQUNIO3FCQUFNO29CQUNMLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQzNFLENBQUM7aUJBQ0g7YUFDRjtZQUVELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7Z0JBQ3BCLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO29CQUM5RCxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7aUJBQzdCO2dCQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNwQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVcsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxPQUFPLFlBQVksSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVcsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxPQUFPLFlBQVksSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZCwgRmllbGREZWYgfSBmcm9tICcuL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkTGlzdCB9IGZyb20gJy4vZmllbGRMaXN0Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEVudGl0eURlZiB7XG4gIHByaXZhdGUgZmllbGRzOiBGaWVsZExpc3Q7XG4gIHByaXZhdGUgYWx0ZGVmPzogbnVtYmVyO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHZhcmlhYmxlLW5hbWVcbiAgcHJpdmF0ZSBpbml0PzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGVudGl0eURlZj86IHsgZmllbGRzOiB7IFtmbGQ6IHN0cmluZ106IEZpZWxkIHwgRmllbGREZWYgfTsgYWx0ZGVmPzogbnVtYmVyOyBpbml0PzogbnVtYmVyIH0gfCBFbnRpdHlEZWYpIHtcbiAgICBpZiAoZW50aXR5RGVmIGluc3RhbmNlb2YgRW50aXR5RGVmKSB7XG4gICAgICB0aGlzLmZpZWxkcyA9IGVudGl0eURlZi5nZXRGaWVsZHMoKTtcbiAgICAgIHRoaXMuYWx0ZGVmID0gZW50aXR5RGVmLmdldEFsdGRlZigpO1xuICAgICAgdGhpcy5pbml0ID0gZW50aXR5RGVmLmdldEluaXRNb2RlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRzID0gZW50aXR5RGVmXG4gICAgICAgID8gT2JqZWN0LmVudHJpZXMoZW50aXR5RGVmLmZpZWxkcylcbiAgICAgICAgICAgIC5tYXAoKFtmbGRuYW1lLCBmbGRdKSA9PiBbZmxkbmFtZSwgbmV3IEZpZWxkKGZsZCldKVxuICAgICAgICAgICAgLnJlZHVjZSgoZmllbGRzLCBbZmxkbmFtZSwgZmxkXTogW3N0cmluZywgRmllbGRdKSA9PiBPYmplY3QuYXNzaWduKGZpZWxkcywgeyBbZmxkbmFtZV06IGZsZCB9KSwge30pXG4gICAgICAgIDoge307XG4gICAgICB0aGlzLmFsdGRlZiA9IGVudGl0eURlZiA/IGVudGl0eURlZi5hbHRkZWYgfHwgMCA6IDA7XG4gICAgICB0aGlzLmluaXQgPSBlbnRpdHlEZWYgPyBlbnRpdHlEZWYuaW5pdCB8fCAwIDogMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZmllbGRzIG9mIHRoaXMgRW50aXR5IERlZmluaXRpb25cbiAgICovXG4gIGdldEZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBmaWVsZCBmcm9tIHRoaXMgRW50aXR5IERlZmluaXRpb25cbiAgICogQHBhcmFtIGZsZCB0aGUgbmFtZSBvZiB0aGUgZmllbGRcbiAgICovXG4gIGdldEZpZWxkKGZsZDogc3RyaW5nKTogRmllbGQge1xuICAgIGlmICh0eXBlb2YgZmxkID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuZmllbGRzID8gdGhpcy5maWVsZHNbZmxkLnRvVXBwZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGFsbCBmaWVsZHMsIHRoYXQgY2FuIGJlIHNlZW4uXG4gICAqIEBwYXJhbSB0eXBlICAnbHN0JyBmb3IgbGlzdCB2aWV3cyAodGFibGUpLCAnb2NjJyBmb3IgZGV0YWlsIHZpZXdzLCBlbXB0eSBmb3IgcmVhZGluZyB3aXRob3V0IGZpbHRlclxuICAgKiBAcGFyYW0gd3JpdGUgcmVhZCBhbmQgd3JpdGUgcmlnaHRzIGFyZSBuZWVkZWRcbiAgICogQHJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgZmllbGRzIHRoYXQgZml0cyB0aGUgcmlndGhzXG4gICAqL1xuICBnZXRGaWVsZExpc3Qob3B0aW9uczogeyB0eXBlPzogc3RyaW5nOyB3cml0ZT86IGJvb2xlYW47IG1ldGE/OiBGaWVsZExpc3QgfSk6IHsgZmxkOiBzdHJpbmc7IGJlejogc3RyaW5nIH1bXSB7XG4gICAgaWYgKHRoaXMuZmllbGRzKSB7XG4gICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXModGhpcy5maWVsZHMpO1xuXG4gICAgICBpZiAob3B0aW9ucy50eXBlKSB7XG4gICAgICAgIGNvbnN0IGNoZWNrVHlwZSA9ICdhcl8nICsgb3B0aW9ucy50eXBlO1xuICAgICAgICBpZiAob3B0aW9ucy53cml0ZSkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKFtmbGQsIGZpZWxkXSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2FuUmVhZFdyaXRlKGZsZCwgY2hlY2tUeXBlLCBvcHRpb25zLm1ldGEgPyBvcHRpb25zLm1ldGFbZmxkXSA6IHVuZGVmaW5lZClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKFtmbGQsIGZpZWxkXSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2FuUmVhZChmbGQsIGNoZWNrVHlwZSwgb3B0aW9ucy5tZXRhID8gb3B0aW9ucy5tZXRhW2ZsZF0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0Lm1hcCgoW2ZsZCwgZmllbGRdKSA9PiB7XG4gICAgICAgIGxldCBiZXogPSBmaWVsZC5iZXo7XG4gICAgICAgIGlmIChvcHRpb25zLm1ldGEgJiYgb3B0aW9ucy5tZXRhW2ZsZF0gJiYgb3B0aW9ucy5tZXRhW2ZsZF0uYmV6KSB7XG4gICAgICAgICAgYmV6ID0gb3B0aW9ucy5tZXRhW2ZsZF0uYmV6O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGZsZCwgYmV6IH07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGFsdGRlZiBmbGFnIGlzIHNldC5cbiAgICovXG4gIGdldEFsdGRlZigpIHtcbiAgICByZXR1cm4gdGhpcy5hbHRkZWYgIT0gbnVsbCA/IHRoaXMuYWx0ZGVmIDogMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGluaXQgZmxhZyBpcyBzZXQuXG4gICAqL1xuICBnZXRJbml0TW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbml0ICE9IG51bGwgPyB0aGlzLmluaXQgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gZmllbGQgY2FuIGJlIHNlZW4gaW4gYSBsaXN0XG4gICAqIEBwYXJhbSBmbGQgdGhlIG5hbWUgb2YgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZCBhbiBhbHRlcm5hdGl2ZSBmaWVsZCBkZWZpbml0aW9uXG4gICAqL1xuICBsaXN0Q2FuUmVhZChmbGQ6IHN0cmluZywgZmllbGQ/OiBGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhblJlYWQoZmxkLCAnYXJfbHN0JywgZmllbGQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5SZWFkKGZsZDogc3RyaW5nLCBjaGVja1R5cGU6IHN0cmluZywgZmllbGQ/OiBGaWVsZCkge1xuICAgIGNvbnN0IGRlZmF1bHRGaWVsZCA9IHRoaXMuZ2V0RmllbGQoZmxkKTtcbiAgICByZXR1cm4gZGVmYXVsdEZpZWxkICYmIGRlZmF1bHRGaWVsZC5jYW5SZWFkKGNoZWNrVHlwZSwgZmllbGQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5SZWFkV3JpdGUoZmxkOiBzdHJpbmcsIGNoZWNrVHlwZTogc3RyaW5nLCBmaWVsZD86IEZpZWxkKSB7XG4gICAgY29uc3QgZGVmYXVsdEZpZWxkID0gdGhpcy5nZXRGaWVsZChmbGQpO1xuICAgIHJldHVybiBkZWZhdWx0RmllbGQgJiYgZGVmYXVsdEZpZWxkLmNhblJlYWRXcml0ZShjaGVja1R5cGUsIGZpZWxkKTtcbiAgfVxufVxuIl19