| Current Path : /home/rtorresani/www/pub/static/adminhtml/Magento/backend/en_US/Magento_Paypal/js/ |
| Current File : //home/rtorresani/www/pub/static/adminhtml/Magento/backend/en_US/Magento_Paypal/js/solutions.js |
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
define([
'jquery',
'uiClass',
'Magento_Paypal/js/solution',
'underscore'
], function ($, Class, Solution, _) {
'use strict';
return Class.extend({
defaults: {
/**
* Initialized solutions
*/
solutions: {},
/**
* The elements of created solutions
*/
solutionsElements: {},
/**
* The selector element responsible for configuration of payment method (CSS class)
*/
buttonConfiguration: '.button.action-configure'
},
/**
* Constructor
*
* @param {Object} config
* @returns {exports.initialize}
*/
initialize: function (config) {
this.initConfig(config)
.initSolutions();
return this;
},
/**
* Initialization and configuration solutions
*
* @returns {exports.initSolutions}
*/
initSolutions: function () {
_.each(this.config.solutions, this.addSolution, this);
this.initializeSolutions()
.wipeButtonsConfiguration();
_.each(this.solutions, this.applicationRules);
return this;
},
/**
* The creation and addition of the solution according to the configuration
*
* @param {Object} solution
* @param {String} identifier
*/
addSolution: function (solution, identifier) {
this.solutions[identifier] = new Solution({
config: solution,
buttonConfiguration: this.buttonConfiguration
}, identifier);
this.solutionsElements[identifier] = this.solutions[identifier].$self;
},
/**
* Wiping buttons configuration of the payment method
*/
wipeButtonsConfiguration: function () {
$(this.buttonConfiguration).removeClass('disabled')
.prop('disabled', false);
},
/**
* Application of the rules
*
* @param {Object} solution
*/
applicationRules: function (solution) {
_.each(solution.afterLoadRules, function (rule) {
rule.apply();
});
},
/**
* Initialize solutions
*
* @returns {exports.initializeSolutions}
*/
initializeSolutions: function () {
_.each(this.solutions, function (solution) {
solution.setSolutionsElements(this.solutionsElements)
.initEvents()
.addListeners();
}, this);
return this;
}
});
});