All files / web/bundles/pimui/js/form/common save-buttons.js

100% Statements 17/17
50% Branches 1/2
100% Functions 4/4
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                  544x                   544x                         706x     706x   706x   706x             818x 818x 818x         818x   818x                 713x 713x 713x   713x 713x 713x          
'use strict';
/**
 * Save buttons extension
 *
 * @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',
        'underscore',
        'backbone',
        'oro/mediator',
        'pim/form',
        'pim/template/form/save-buttons'
    ],
    function ($, _, Backbone, mediator, BaseForm, template) {
        return BaseForm.extend({
            className: 'AknTitleContainer-rightButton',
            template: _.template(template),
            buttonDefaults: {
                priority: 100,
                events: {}
            },
            events: {},
 
            /**
             * {@inheritdoc}
             */
            initialize: function () {
                this.model = new Backbone.Model({
                    buttons: []
                });
                this.events = {};
 
                this.on('save-buttons:add-button', this.addButton.bind(this));
 
                BaseForm.prototype.initialize.apply(this, arguments);
            },
 
            /**
             * {@inheritdoc}
             */
            render: function () {
                var buttons = this.model.get('buttons');
                Eif (buttons.length > 0) {
                    this.$el.html(this.template({
                        primaryButton: _.first(buttons),
                        secondaryButtons: buttons.slice(1)
                    }));
                }
                this.delegateEvents();
 
                return this;
            },
 
            /**
             * Add a button to the main button
             *
             * @param {Object} options
             */
            addButton: function (options) {
                var button = _.extend({}, this.buttonDefaults, options);
                this.events = _.extend(this.events, button.events);
                var buttons = this.model.get('buttons');
 
                buttons.push(button);
                buttons = _.sortBy(buttons, 'priority').reverse();
                this.model.set('buttons', buttons);
            }
        });
    }
);