@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
97 lines • 10.3 kB
JavaScript
import { Predicate } from './predicate';
import { EditableElementaryPredicate } from './editable-elementary-predicate';
/**
* A predicate wrapper, that can contain a generator of a Predicate.
*
* This class is used to transfer search predicates added by other means into the search GUI.
*/
export class PredicateWithGenerator extends Predicate {
_predicate;
_generator;
/**
* @param _predicate the wrapped predicate
* @param _generator the `Category` instance that generates this predicate.
* If a generator is provided, the predicate is marked as initially hidden.
* @param initiallyVisible overrides the initial visibility inferred from the presence/absence of the generator
*/
constructor(_predicate, _generator, initiallyVisible) {
super();
this._predicate = _predicate;
this._generator = _generator;
this._visible = initiallyVisible ?? !_generator;
this.initializeMetadataGenerator();
this.initializeFilterTextSegmentsGenerator();
}
get query() {
return this._predicate.query;
}
/**
* Can only be called if the wrapped predicate allows setting of the query.
* Throws an error otherwise.
* @param query the new query
*/
set query(query) {
if (this._predicate instanceof EditableElementaryPredicate) {
this._predicate.query = query;
}
else {
throw new Error('The wrapped predicate cannot have its query set');
}
}
/**
* @returns the Category that generates the predicate, or `undefined` if none was provided during the creation of this instance.
*/
get generator() {
return this._generator;
}
/**
* @returns the wrapped Predicate
*/
getWrappedPredicate() {
return this._predicate;
}
/**
* @returns result [getWrappedPredicate()]{@link PredicateWithGenerator#getWrappedPredicate}
*/
get wrappedPredicate() {
return this.getWrappedPredicate();
}
show() {
super.show();
this._predicate.show();
}
/**
* Cleans-up the inner state of this object.
*/
destroy() {
if (this._generator !== undefined) {
this.generator.destroy();
}
}
initializeMetadataGenerator() {
this._metadataGenerator = () => {
try {
return this._predicate.createGeneratorMetadata();
}
catch (e) {
if (this._generator && this._generator.providesPredicate) {
return this._generator.createMetadata();
}
throw e;
}
};
}
initializeFilterTextSegmentsGenerator() {
this._filterTextSegmentsGenerator = () => {
const segments = this._predicate.createFilterTextSegments();
if (segments.length > 0) {
return segments;
}
if (this._generator && this._generator.providesPredicate) {
return this._generator.createFilterTextSegments();
}
return [];
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGljYXRlLXdpdGgtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9zZWFyY2gvbW9kZWxzL3ByZWRpY2F0ZS9wcmVkaWNhdGUtd2l0aC1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUd0QyxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFNBQVM7SUFRM0I7SUFBaUM7SUFOdkQ7Ozs7O09BS0c7SUFDSCxZQUFzQixVQUFxQixFQUFZLFVBQTBCLEVBQUUsZ0JBQTBCO1FBQ3pHLEtBQUssRUFBRSxDQUFDO1FBRFUsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUFZLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBRTdFLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDaEQsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJLEtBQUssQ0FBQyxLQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSwyQkFBMkIsRUFBRTtZQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDakM7YUFBTTtZQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztTQUN0RTtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUk7UUFDQSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDVixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRU8sMkJBQTJCO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDM0IsSUFBSTtnQkFDQSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsQ0FBQzthQUNwRDtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNSLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFO29CQUN0RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQzNDO2dCQUNELE1BQU0sQ0FBQyxDQUFDO2FBQ1g7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8scUNBQXFDO1FBQ3pDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxHQUFHLEVBQUU7WUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzVELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3JCLE9BQU8sUUFBUSxDQUFDO2FBQ25CO1lBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ3RELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2FBQ3JEO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnLi9wcmVkaWNhdGUnO1xuaW1wb3J0IHtDYXRlZ29yeX0gZnJvbSAnLi4vY2F0ZWdvcnkvY2F0ZWdvcnknO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnLi4vcXVlcnkvcXVlcnknO1xuaW1wb3J0IHtFZGl0YWJsZUVsZW1lbnRhcnlQcmVkaWNhdGV9IGZyb20gJy4vZWRpdGFibGUtZWxlbWVudGFyeS1wcmVkaWNhdGUnO1xuXG4vKipcbiAqIEEgcHJlZGljYXRlIHdyYXBwZXIsIHRoYXQgY2FuIGNvbnRhaW4gYSBnZW5lcmF0b3Igb2YgYSBQcmVkaWNhdGUuXG4gKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHRyYW5zZmVyIHNlYXJjaCBwcmVkaWNhdGVzIGFkZGVkIGJ5IG90aGVyIG1lYW5zIGludG8gdGhlIHNlYXJjaCBHVUkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQcmVkaWNhdGVXaXRoR2VuZXJhdG9yIGV4dGVuZHMgUHJlZGljYXRlIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBfcHJlZGljYXRlIHRoZSB3cmFwcGVkIHByZWRpY2F0ZVxuICAgICAqIEBwYXJhbSBfZ2VuZXJhdG9yIHRoZSBgQ2F0ZWdvcnlgIGluc3RhbmNlIHRoYXQgZ2VuZXJhdGVzIHRoaXMgcHJlZGljYXRlLlxuICAgICAqIElmIGEgZ2VuZXJhdG9yIGlzIHByb3ZpZGVkLCB0aGUgcHJlZGljYXRlIGlzIG1hcmtlZCBhcyBpbml0aWFsbHkgaGlkZGVuLlxuICAgICAqIEBwYXJhbSBpbml0aWFsbHlWaXNpYmxlIG92ZXJyaWRlcyB0aGUgaW5pdGlhbCB2aXNpYmlsaXR5IGluZmVycmVkIGZyb20gdGhlIHByZXNlbmNlL2Fic2VuY2Ugb2YgdGhlIGdlbmVyYXRvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcHJlZGljYXRlOiBQcmVkaWNhdGUsIHByb3RlY3RlZCBfZ2VuZXJhdG9yPzogQ2F0ZWdvcnk8YW55PiwgaW5pdGlhbGx5VmlzaWJsZT86IGJvb2xlYW4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGluaXRpYWxseVZpc2libGUgPz8gIV9nZW5lcmF0b3I7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU1ldGFkYXRhR2VuZXJhdG9yKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlclRleHRTZWdtZW50c0dlbmVyYXRvcigpO1xuICAgIH1cblxuICAgIGdldCBxdWVyeSgpOiBRdWVyeSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVkaWNhdGUucXVlcnk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSB3cmFwcGVkIHByZWRpY2F0ZSBhbGxvd3Mgc2V0dGluZyBvZiB0aGUgcXVlcnkuXG4gICAgICogVGhyb3dzIGFuIGVycm9yIG90aGVyd2lzZS5cbiAgICAgKiBAcGFyYW0gcXVlcnkgdGhlIG5ldyBxdWVyeVxuICAgICAqL1xuICAgIHNldCBxdWVyeShxdWVyeTogUXVlcnkpIHtcbiAgICAgICAgaWYgKHRoaXMuX3ByZWRpY2F0ZSBpbnN0YW5jZW9mIEVkaXRhYmxlRWxlbWVudGFyeVByZWRpY2F0ZSkge1xuICAgICAgICAgICAgdGhpcy5fcHJlZGljYXRlLnF1ZXJ5ID0gcXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB3cmFwcGVkIHByZWRpY2F0ZSBjYW5ub3QgaGF2ZSBpdHMgcXVlcnkgc2V0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgQ2F0ZWdvcnkgdGhhdCBnZW5lcmF0ZXMgdGhlIHByZWRpY2F0ZSwgb3IgYHVuZGVmaW5lZGAgaWYgbm9uZSB3YXMgcHJvdmlkZWQgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGlzIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGdldCBnZW5lcmF0b3IoKTogQ2F0ZWdvcnk8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZW5lcmF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgdGhlIHdyYXBwZWQgUHJlZGljYXRlXG4gICAgICovXG4gICAgcHVibGljIGdldFdyYXBwZWRQcmVkaWNhdGUoKTogUHJlZGljYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWRpY2F0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyByZXN1bHQgW2dldFdyYXBwZWRQcmVkaWNhdGUoKV17QGxpbmsgUHJlZGljYXRlV2l0aEdlbmVyYXRvciNnZXRXcmFwcGVkUHJlZGljYXRlfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd3JhcHBlZFByZWRpY2F0ZSgpOiBQcmVkaWNhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRXcmFwcGVkUHJlZGljYXRlKCk7XG4gICAgfVxuXG4gICAgc2hvdygpIHtcbiAgICAgICAgc3VwZXIuc2hvdygpO1xuICAgICAgICB0aGlzLl9wcmVkaWNhdGUuc2hvdygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFucy11cCB0aGUgaW5uZXIgc3RhdGUgb2YgdGhpcyBvYmplY3QuXG4gICAgICovXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9nZW5lcmF0b3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3IuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplTWV0YWRhdGFHZW5lcmF0b3IoKSB7XG4gICAgICAgIHRoaXMuX21ldGFkYXRhR2VuZXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlZGljYXRlLmNyZWF0ZUdlbmVyYXRvck1ldGFkYXRhKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2dlbmVyYXRvciAmJiB0aGlzLl9nZW5lcmF0b3IucHJvdmlkZXNQcmVkaWNhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dlbmVyYXRvci5jcmVhdGVNZXRhZGF0YSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZUZpbHRlclRleHRTZWdtZW50c0dlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyVGV4dFNlZ21lbnRzR2VuZXJhdG9yID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VnbWVudHMgPSB0aGlzLl9wcmVkaWNhdGUuY3JlYXRlRmlsdGVyVGV4dFNlZ21lbnRzKCk7XG4gICAgICAgICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWdtZW50cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9nZW5lcmF0b3IgJiYgdGhpcy5fZ2VuZXJhdG9yLnByb3ZpZGVzUHJlZGljYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dlbmVyYXRvci5jcmVhdGVGaWx0ZXJUZXh0U2VnbWVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=