All files / web/bundles/pimui/js/product/field price-collection-field.js

100% Statements 17/17
100% Branches 4/4
100% Functions 7/7
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                  167x               167x           492x 34x     458x   458x     248x 248x 248x 508x 508x 508x           248x     494x       492x   492x       19x        
'use strict';
/**
 * Price collection field
 *
 * @author    Julien Sanchez <julien@akeneo.com>
 * @author    Filips Alpe <filips@akeneo.com>
 * @copyright 2015 Akeneo SAS (http://www.akeneo.com)
 * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */
define([
        'jquery',
        'pim/field',
        'underscore',
        'pim/fetcher-registry',
        'pim/template/product/field/price-collection'
    ],
    function ($, Field, _, FetcherRegistry, fieldTemplate) {
    return Field.extend({
        fieldTemplate: _.template(fieldTemplate),
        events: {
            'change .field-input:first input[type="text"]': 'updateModel'
        },
        renderInput: function (context) {
            if (undefined === context.value) {
                return null;
            }
 
            context.value.data = _.sortBy(context.value.data, 'currency');
 
            return this.fieldTemplate(context);
        },
        updateModel: function () {
            var prices = [];
            var inputs = this.$('.field-input:first .price-input input');
            _.each(inputs, function (input) {
                var $input = $(input);
                var inputData = $input.val();
                prices.push({
                    amount: '' === inputData ? null : inputData,
                    currency: $input.data('currency')
                });
            }.bind(this));
 
            this.setCurrentValue(_.sortBy(prices, 'currency'));
        },
        getTemplateContext: function () {
            return $.when(
                Field.prototype.getTemplateContext.apply(this, arguments),
                FetcherRegistry.getFetcher('currency').fetchAll()
            ).then(function (templateContext, currencies) {
                templateContext.currencies = currencies;
 
                return templateContext;
            });
        },
        setFocus: function () {
            this.$('input[type="text"]:first').focus();
        }
    });
});