open-orchestra/open-orchestra-cms-bundle

View on GitHub
BackofficeBundle/Resources/public/ecmascript/OpenOrchestra/Application/Router/Keyword/KeywordRouter.js

Summary

Maintainability
A
0 mins
Test Coverage
import OrchestraRouter from 'OpenOrchestra/Application/Router/OrchestraRouter'
import Application     from 'OpenOrchestra/Application/Application'
import FormBuilder     from 'OpenOrchestra/Service/Form/Model/FormBuilder'

import KeywordsView    from 'OpenOrchestra/Application/View/Keyword/KeywordsView'
import KeywordFormView from 'OpenOrchestra/Application/View/Keyword/KeywordFormView'

import Keywords        from 'OpenOrchestra/Application/Collection/Keyword/Keywords'

/**
 * @class KeywordRouter
 */
class KeywordRouter extends OrchestraRouter
{
    /**
     * @inheritdoc
     */
    preinitialize() {
        this.routes = {
            'keyword/new'            : 'newKeyword',
            'keyword/edit/:keywordId': 'editKeyword',
            'keyword/list(/:page)'   : 'listKeyword'
        };
    }

    /**
     * @inheritdoc
     */
    getBreadcrumb() {
        return [
            {
                label: Translator.trans('open_orchestra_backoffice.menu.platform.title')
            },
            {
                label: Translator.trans('open_orchestra_backoffice.menu.platform.tag'),
                link: '#'+Backbone.history.generateUrl('listKeyword')
            }
        ]
    }

    /**
     * @inheritdoc
     */
    getMenuHighlight() {
        return {
            '*' : 'navigation-keyword'
        };
    }

    /**
     * New Keyword
     */
    newKeyword() {
        let url = Routing.generate('open_orchestra_backoffice_keyword_new');
        this._displayLoader(Application.getRegion('content'));
        FormBuilder.createFormFromUrl(url, (form) => {
            let keywordFormView = new KeywordFormView({
                form: form
            });
            Application.getRegion('content').html(keywordFormView.render().$el);
        });
    }

    /**
     * Edit Keyword
     *
     * @param {String} keywordId
     */
    editKeyword(keywordId) {
        let url = Routing.generate('open_orchestra_backoffice_keyword_form', {keywordId: keywordId});
        this._displayLoader(Application.getRegion('content'));
        FormBuilder.createFormFromUrl(url, (form) => {
            let keywordFormView = new KeywordFormView({
                form: form,
                keywordId: keywordId
            });
            Application.getRegion('content').html(keywordFormView.render().$el);
        });
    }

    /**
     * List Keyword
     *
     * @param {int} page
     */
    listKeyword(page = 1) {
        if (null === page) {
            page = 1
        }
        this._displayLoader(Application.getRegion('content'));
        let pageLength = Application.getConfiguration().getParameter('datatable').pageLength;
        page = Number(page) - 1;
        new Keywords().fetch({
            data : {
                start: page * pageLength,
                length: pageLength
            },
            success: (keywords) => {
                let keywordView = new KeywordsView({
                    collection: keywords,
                    settings: {
                        page: page,
                        deferLoading: [keywords.recordsTotal, keywords.recordsFiltered],
                        data: keywords.models,
                        pageLength: pageLength
                    }
                });
                let el = keywordView.render().$el;
                Application.getRegion('content').html(el);
            }
        });
    }
}

export default KeywordRouter;