open-orchestra/open-orchestra-cms-bundle

View on GitHub
BackofficeBundle/Resources/public/ecmascript/OpenOrchestra/Service/SearchFormGroup/Manager.js

Summary

Maintainability
A
0 mins
Test Coverage
import AbstractSearchFormGroup from 'OpenOrchestra/Service/SearchFormGroup/AbstractSearchFormGroup'

/**
 * @class Manager
 */
class Manager
{
    /**
     * Constructor
     */
    constructor() {
        this._fieldSearchs = [];
    }

    /**
     * @param {Object} fieldSearch
     */
    add(fieldSearch) {
        if (!(fieldSearch instanceof AbstractSearchFormGroup)) {
            throw TypeError("Manager accept only instance of AbstractSearchFormGroup");
        }
        this._fieldSearchs.push(fieldSearch);
    }

    /**
     * render field search
     *
     * @param {Object} field
     */
    render(field) {
        for (let fieldSearch of this._fieldSearchs) {
            if (fieldSearch.support(field)) {
                return fieldSearch.render(field);
            }
        }
        
        throw new Error('No rendering founded for search of type ' + field.type + ' define in field ' + field.label);
    }
}

// unique instance of Manager
export default (new Manager);