UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

97 lines 10.3 kB
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=