All files / web/bundles/pimui/js/form/common/creation job.js

94.44% Statements 17/18
50% Branches 3/6
100% Functions 3/3
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96                10x                                               10x                         10x 10x       10x 10x 10x               9x 9x   9x                       11x   11x 11x   11x         1x       11x   11x        
/**
 * Group type select2 to be added in a creation form
 *
 * @author    Tamara Robichet <tamara.robichet@akeneo.com>
 * @copyright 2017 Akeneo SAS (http://www.akeneo.com)
 * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */
 
define([
    'jquery',
    'underscore',
    'backbone',
    'routing',
    'pim/form',
    'pim/user-context',
    'pim/i18n',
    'oro/translator',
    'pim/template/form/creation/job',
    'pim/base-fetcher'
], function(
        $,
        _,
        Backbone,
        Routing,
        BaseForm,
        UserContext,
        i18n,
        __,
        template,
        BaseFetcher
    ) {
 
    return BaseForm.extend({
        options: {},
        template: _.template(template),
        events: {
            'change select': 'updateModel'
        },
 
        /**
         * Configure the form
         *
         * @return {Promise}
         */
        configure() {
            const jobType = this.options.config.type;
            const fetcher = new BaseFetcher({
                urls: { list: this.options.config.url }
            });
 
            return fetcher.search({ jobType }).then((jobs) => {
                this.jobs = jobs;
                BaseForm.prototype.configure.apply(this, arguments)
            })
        },
 
        /**
         * Model update callback
         */
        updateModel(event) {
            const option = this.$(event.target);
            const optionParent = $(':selected', option).closest('optgroup');
 
            this.getFormModel().set({
                'alias':  option.val(),
                'connector': optionParent.attr('label')
            });
        },
 
        /**
         * Renders the form
         *
         * @return {Promise}
         */
        render() {
            Iif (!this.configured) return this;
 
            const errors = this.getRoot().validationErrors || [];
            const identifier = this.options.config.identifier || 'alias';
 
            this.$el.html(this.template({
                label: __(this.options.config.label),
                jobs: this.jobs,
                required: __('pim_common.required_label'),
                selectedJobType: this.getFormData().alias,
                errors: errors.filter(error => error.path === identifier),
                __
            }));
 
            this.$el.find('.job-input').select2();
 
            this.delegateEvents();
        }
    });
});