open-orchestra/open-orchestra-cms-bundle

View on GitHub
BackofficeBundle/Resources/public/ecmascript/OpenOrchestra/Application/View/Area/SelectLanguageNodeModalView.js

Summary

Maintainability
A
0 mins
Test Coverage
import ModalView          from 'OpenOrchestra/Service/Modal/View/ModalView'
import ApplicationError   from 'OpenOrchestra/Service/Error/ApplicationError'

/**
 * @class SelectLanguageNodeModalView
 */
class SelectLanguageNodeModalView extends ModalView
{
    /**
     * Pre initialize
     *
     * @param options
     */
    preinitialize(options) {
        super.preinitialize(options);
        this.events['click .copy-language'] = '_selectNodeCopy'
    }

    /**
     * Initialize
     * @param {Nodes}    nodes
     * @param {Function} callbackCopyBlock
     */
    initialize({nodes, callbackCopyBlock}) {
        this._nodes = nodes;
        this._callbackCopyBlock = callbackCopyBlock;
    }

    /**
     * Render modal select node copy block
     */
    render() {
        let template = this._renderTemplate('Area/selectLanguageNodeModalView', {
            nodes: this._nodes
        });
        this.$el.append(template);

        return this;
    }

    /**
     * @param {Object} event
     *
     * @returns {boolean}
     * @private
     */
    _selectNodeCopy(event) {
        let language = $(event.currentTarget).attr('data-language');
        let node = this._nodes.findWhere({language: language});

        if (typeof node === 'undefined') {
            throw new ApplicationError('Node with language ' + language + ' for copy not found');
        }
        this._callbackCopyBlock(node);
        this.hide();
    }
}

export default SelectLanguageNodeModalView;