All files / web/bundles/pimui/js/product-model/form add-child.js

100% Statements 11/11
100% Branches 2/2
100% Functions 2/2
100% Lines 11/11

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                    15x                               15x             35x 35x       35x                 35x 35x   35x                     14x   14x       6x            
'use strict';
 
/**
 * Modal to create a product model child.
 *
 * @author    Damien Carcel <damien.carcel@akeneo.com>
 * @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)
 */
define(
    [
        'jquery',
        'underscore',
        'oro/translator',
        'pim/form',
        'routing',
        'pim/template/product-model-edit-form/add-child-form'
    ], (
        $,
        _,
        __,
        BaseForm,
        Routing,
        template
    ) => {
        return BaseForm.extend({
            template: _.template(template),
 
            /**
             * {@inheritdoc}
             */
            render() {
                const illustrationClass = this.getIllustrationClass();
                this.$el.html(this.template({
                    illustrationClass,
                    okText: __('pim_common.save'),
                }));
                this.renderExtensions();
            },
 
            /**
             * Get the correct illustration class for products or product models
             *
             * @return {String}
             */
            getIllustrationClass() {
                const formData = this.getFormData();
                const hasFamilyVariant = formData.hasOwnProperty('family_variant');
 
                return hasFamilyVariant ? 'product-model' : 'products';
            },
 
            /**
             * Save the product model child in the backend.
             *
             * @param {String} route
             *
             * @return {Promise}
             */
            saveProductModelChild(route) {
                this.trigger('pim_enrich:form:entity:pre_save');
 
                return $.post(
                    Routing.generate(route),
                    JSON.stringify(this.getFormData())
                ).fail((xhr) => {
                    this.trigger('pim_enrich:form:entity:validation_error', xhr.responseJSON.values);
                });
            }
        });
    }
);