All files / web/bundles/pimui/js/form/common/fields multi-select-async.js

88.24% Statements 15/17
50% Branches 2/4
80% Functions 4/5
88.24% Lines 15/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              105x                 105x         21x 21x   21x             6x 6x 6x 6x         6x 6x     6x 6x 6x             6x            
/**
 * @author    Pierre Allard <pierre.allard@akeneo.com>
 * @copyright 2018 Akeneo SAS (http://www.akeneo.com)
 * @license   http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 */
'use strict';
 
define(
    [
        'jquery',
        'pim/form/common/fields/simple-select-async'
    ],
    function (
        $,
        SimpleSelectAsync
    ) {
        return SimpleSelectAsync.extend({
            /**
             * {@inheritdoc}
             */
            getSelect2Options() {
                const parent = SimpleSelectAsync.prototype.getSelect2Options.apply(this, arguments);
                parent.multiple = true;
 
                return parent;
            },
 
            /**
             * {@inheritdoc}
             */
            select2InitSelection(element, callback) {
                const strValues = $(element).val();
                const values = strValues.split(',');
                Eif (values.length > 0) {
                    $.ajax({
                        url: this.choiceUrl,
                        data: { options: { identifiers: strValues } },
                        type: this.choiceVerb
                    }).then(response => {
                        let selecteds = Object.values(response.results).filter((item) => {
                            return values.indexOf(item.code) > -1;
                        });
 
                        Eif (selecteds.length === 0) {
                            selecteds = Object.values(response.results).filter((item) => {
                                return values.indexOf(item.id) > -1;
                            });
                        } else {
                            selecteds = selecteds.map((selected) => {
                                return this.convertBackendItem(selected);
                            });
                        }
                        callback(selecteds);
                    });
                }
            }
        });
    });