%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/js/report/js/visualconstructor/ |
| Current File : //home/bitrix/www/bitrix/js/report/js/visualconstructor/basefield.js |
;(function(){
"use strict";
BX.namespace("BX.Report.VisualConstructor.Field");
BX.Report.VisualConstructor.Field.Base = function(options)
{
this.form = options.form || null;
this.events = options.events || [];
this.behaviours = options.behaviours || [];
this.fieldScope = options.fieldScope || null;
if (this.fieldScope)
{
this.form = BX.findParent(this.fieldScope, {
tag: 'form'
});
}
for (var b = 0; b < this.behaviours.length; b++)
{
var behaviour = this.behaviours[b];
BX.addCustomEvent(this.fieldScope, behaviour['eventName'], this.baseEventHandler.bind(this, behaviour));
}
BX.Report.VisualConstructor.Field.InitFieldRepository.add(this);
};
BX.Report.VisualConstructor.Field.Base.prototype = {
baseEventHandler: function(event, ownerElement, optionsFromEvent)
{
var currentFieldDomeElement = this.getForm().querySelector(event['behaviorOwnerSelector']);
var options = {
action: event['handlerParams']['action'],
currentField: currentFieldDomeElement,
ownerField: ownerElement.fieldScope,
additionalParams: event['handlerParams']['additionalParams'] || [],
currentFieldObject: this.findElementInRenderedElementsRepository(currentFieldDomeElement),
ownerFieldObject: ownerElement,
optionsFromEvent: optionsFromEvent
};
var eventHandler = null;
if (event.handlerParams.class)
{
var callbackClass = BX.Report.VC.Core.getClass(event.handlerParams.class);
if (callbackClass)
{
eventHandler = new callbackClass(options);
eventHandler.process();
}
else
{
throw "Class with name: " + event.handlerParams.class + " not exist";
}
}
else
{
eventHandler = new BX.Report.VisualConstructor.Field.BaseHandler(options);
eventHandler.process();
}
},
findElementInRenderedElementsRepository: function(domElement)
{
return BX.Report.VisualConstructor.Field.InitFieldRepository.getByDomElement(domElement);
},
getForm: function()
{
return this.form;
}
};
BX.Report.VisualConstructor.Field.BaseHandler = function(options)
{
this.action = options.action || '';
this.currentField = options.currentField || {};
this.currentFieldObject = options.currentFieldObject || {};
this.ownerField = options.ownerField || {};
this.ownerFieldObject = options.ownerFieldObject || {};
this.additionalParams = options.additionalParams || {};
this.optionsFromEvent = options.optionsFromEvent || {};
};
BX.Report.VisualConstructor.Field.BaseHandler.prototype = {
//TODO: refactor to map @important
process: function()
{
switch (this.action)
{
case 'setValue':
this.setValue();
break;
}
},
setValue: function()
{
this.currentField.value = this.additionalParams.value;
}
};
BX.Report.VisualConstructor.Field.InitFieldRepository = {
fields: [],
add: function(field)
{
this.fields.push(field)
},
getByDomElement: function(element)
{
for (var i in this.fields)
{
if (this.fields[i].fieldScope === element)
{
return this.fields[i];
}
}
return null;
}
}
})();