123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- define([
- 'underscore',
- 'Magento_Ui/js/dynamic-rows/dynamic-rows-grid'
- ], function (_, dynamicRowsGrid) {
- 'use strict';
- return dynamicRowsGrid.extend({
- defaults: {
- label: '',
- columnsHeader: false,
- columnsHeaderAfterRender: true,
- addButton: false,
- isDefaultFieldScope: 'is_default',
- defaultRecords: {
- use: [],
- moreThanOne: false,
- state: {}
- },
- listens: {
- inputType: 'onInputTypeChange',
- isDefaultValue: 'onIsDefaultValue'
- }
- },
- /**
- * Handler for type select.
- *
- * @param {String} inputType - changed.
- */
- onInputTypeChange: function (inputType) {
- if (this.defaultRecords.moreThanOne && (inputType === 'radio' || inputType === 'select')) {
- _.each(this.defaultRecords.use, function (index, counter) {
- this.source.set(
- this.dataScope + '.bundle_selections.' + index + '.' + this.isDefaultFieldScope,
- counter ? '0' : '1'
- );
- }.bind(this));
- }
- },
- /**
- * Handler for is_default field.
- *
- * @param {Object} data - changed data.
- */
- onIsDefaultValue: function (data) {
- var cb,
- use = 0;
- this.defaultRecords.use = [];
- cb = function (elem, key) {
- if (~~elem) {
- this.defaultRecords.use.push(key);
- use++;
- }
- this.defaultRecords.moreThanOne = use > 1;
- }.bind(this);
- _.each(data, cb);
- },
- /**
- * Initialize elements from grid
- *
- * @param {Array} data
- *
- * @returns {Object} Chainable.
- */
- initElements: function (data) {
- var newData = this.getNewData(data),
- recordIndex;
- this.parsePagesData(data);
- if (newData.length) {
- if (this.insertData().length) {
- recordIndex = data.length - newData.length - 1;
- _.each(newData, function (newRecord) {
- this.processingAddChild(newRecord, ++recordIndex, newRecord[this.identificationProperty]);
- }, this);
- }
- }
- return this;
- },
- /**
- * Mapping value from grid
- *
- * @param {Array} data
- */
- mappingValue: function (data) {
- if (_.isEmpty(data)) {
- return;
- }
- this._super();
- }
- });
- });
|