All files / web/bundles/pimui/js/controller/attribute create.js

88% Statements 22/25
50% Branches 3/6
100% Functions 8/8
88% Lines 22/25

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              29x             29x         30x       30x 30x 30x   30x   30x     30x   30x 30x       30x 10x     30x   30x   30x                         30x 30x       30x 30x       30x                 30x                  
/**
 * @author    Yohan Blain <yohan.blain@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)
 */
'use strict';
 
define([
    'underscore',
    'pim/controller/front',
    'pim/form-builder',
    'pim/fetcher-registry'
],
function (_, BaseController, FormBuilder, fetcherRegistry) {
    return BaseController.extend({
        /**
         * {@inheritdoc}
         */
        renderForm: function () {
            Iif (!this.active) {
                return;
            }
 
            fetcherRegistry.getFetcher('attribute-group').clear();
            fetcherRegistry.getFetcher('locale').clear();
            fetcherRegistry.getFetcher('measure').clear();
 
            var type = this.getQueryParam(location.href, 'attribute_type');
 
            return FormBuilder.getFormMeta('pim-attribute-create-form')
                .then(FormBuilder.buildForm)
                .then((form) => {
                    form.setType(type);
 
                    return form.configure().then(() => {
                        return form;
                    });
                })
                .then((form) => {
                    this.on('pim:controller:can-leave', (event) => {
                        form.trigger('pim_enrich:form:can-leave', event);
                    });
 
                    form.setData(this.getNewAttribute(type));
 
                    form.setElement(this.$el).render();
 
                    return form;
                });
        },
 
        /**
         * Extracts the value of a given parameter from the query string.
         *
         * @param {String} url
         * @param {String} paramName
         *
         * @return  {String}
         */
        getQueryParam: function (url, paramName) {
            var params = url.substr(url.lastIndexOf('?') + 1);
            Iif (!params) {
                return null;
            }
 
            var paramsList = params.split('=');
            Iif (!_.contains(paramsList, paramName)) {
                return null;
            }
 
            return paramsList[paramsList.indexOf(paramName) + 1];
        },
 
        /**
         * @param {String} type
         *
         * @return {Object}
         */
        getNewAttribute: function (type) {
            return {
                code: '',
                labels: {},
                type: type,
                available_locales: []
            };
        }
    });
});