From a4588938fc562b4812c4e7d7de7078123feaf0ae Mon Sep 17 00:00:00 2001 From: Hugh Messenger Date: Tue, 9 Sep 2014 23:56:54 -0500 Subject: [PATCH] Fixing issue with slider element in repet group. Refectored slider creation in to makeSlider(), added cloned() method to delete cloned object and make new one. --- plugins/fabrik_element/slider/slider-min.js | 2 +- plugins/fabrik_element/slider/slider.js | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/plugins/fabrik_element/slider/slider-min.js b/plugins/fabrik_element/slider/slider-min.js index 4b19dc39c03..876d23c53b6 100644 --- a/plugins/fabrik_element/slider/slider-min.js +++ b/plugins/fabrik_element/slider/slider-min.js @@ -1 +1 @@ -var FbSlider=new Class({Extends:FbElement,initialize:function(d,c){this.parent(d,c);this.plugin="slider";var b=false;if(typeOf(this.options.value)==="null"||this.options.value===""){this.options.value="";b=true}this.options.value=this.options.value===""?"":this.options.value.toInt();var a=this.options.value;if(this.options.editable===true){if(typeOf(this.element)==="null"){fconsole("no element found for slider");return}this.output=this.element.getElement(".fabrikinput");this.output2=this.element.getElement(".slider_output");this.output.value=this.options.value;this.output2.set("text",this.options.value);this.mySlide=new Slider(this.element.getElement(".fabrikslider-line"),this.element.getElement(".knob"),{onChange:function(e){this.output.value=e;this.options.value=e;this.output2.set("text",e);this.output.fireEvent("blur",new Event.Mock(this.output,"blur"));this.callChange()}.bind(this),onComplete:function(e){this.output.fireEvent("blur",new Event.Mock(this.output,"change"));this.element.fireEvent("change",new Event.Mock(this.element,"change"))}.bind(this),steps:this.options.steps}).set(a);if(b){this.output.value="";this.output2.set("text","");this.options.value=""}this.watchClear()}},watchClear:function(){this.element.addEvent("click:relay(.clearslider)",function(b,a){b.preventDefault();this.mySlide.set(0);this.output.value="";this.output.fireEvent("blur",new Event.Mock(this.output,"change"));this.output2.set("text","")}.bind(this))},getValue:function(){return this.options.value},callChange:function(){typeOf(this.changejs)==="function"?this.changejs.delay(0):eval(this.changejs)},addNewEvent:function(a,b){if(a==="load"){this.loadEvents.push(b);this.runLoadEvent(b);return}if(a==="change"){this.changejs=b}}}); \ No newline at end of file +var FbSlider=new Class({Extends:FbElement,initialize:function(b,a){this.parent(b,a);this.plugin="slider";this.makeSlider()},makeSlider:function(){var b=false;if(typeOf(this.options.value)==="null"||this.options.value===""){this.options.value="";b=true}this.options.value=this.options.value===""?"":this.options.value.toInt();var a=this.options.value;if(this.options.editable===true){if(typeOf(this.element)==="null"){fconsole("no element found for slider");return}this.output=this.element.getElement(".fabrikinput");this.output2=this.element.getElement(".slider_output");this.output.value=this.options.value;this.output2.set("text",this.options.value);this.mySlide=new Slider(this.element.getElement(".fabrikslider-line"),this.element.getElement(".knob"),{onChange:function(c){this.output.value=c;this.options.value=c;this.output2.set("text",c);this.output.fireEvent("blur",new Event.Mock(this.output,"blur"));this.callChange()}.bind(this),onComplete:function(c){this.output.fireEvent("blur",new Event.Mock(this.output,"change"));this.element.fireEvent("change",new Event.Mock(this.element,"change"))}.bind(this),steps:this.options.steps}).set(a);if(b){this.output.value="";this.output2.set("text","");this.options.value=""}this.watchClear()}},watchClear:function(){this.element.addEvent("click:relay(.clearslider)",function(b,a){b.preventDefault();this.mySlide.set(0);this.output.value="";this.output.fireEvent("blur",new Event.Mock(this.output,"change"));this.output2.set("text","")}.bind(this))},getValue:function(){return this.options.value},callChange:function(){typeOf(this.changejs)==="function"?this.changejs.delay(0):eval(this.changejs)},addNewEvent:function(a,b){if(a==="load"){this.loadEvents.push(b);this.runLoadEvent(b);return}if(a==="change"){this.changejs=b}},cloned:function(a){delete this.mySlide;this.makeSlider();this.parent(a)}}); \ No newline at end of file diff --git a/plugins/fabrik_element/slider/slider.js b/plugins/fabrik_element/slider/slider.js index 95149a42a1e..b14f0b7a73a 100644 --- a/plugins/fabrik_element/slider/slider.js +++ b/plugins/fabrik_element/slider/slider.js @@ -10,6 +10,10 @@ var FbSlider = new Class({ initialize: function (element, options) { this.parent(element, options); this.plugin = 'slider'; + this.makeSlider(); + }, + + makeSlider: function () { var isNull = false; if (typeOf(this.options.value) === 'null' || this.options.value === '') { this.options.value = ''; @@ -24,10 +28,10 @@ var FbSlider = new Class({ } this.output = this.element.getElement('.fabrikinput'); this.output2 = this.element.getElement('.slider_output'); - + this.output.value = this.options.value; this.output2.set('text', this.options.value); - + this.mySlide = new Slider( this.element.getElement('.fabrikslider-line'), this.element.getElement('.knob'), @@ -47,7 +51,7 @@ var FbSlider = new Class({ steps : this.options.steps } ).set(v); - + if (isNull) { this.output.value = ''; this.output2.set('text', ''); @@ -56,7 +60,7 @@ var FbSlider = new Class({ this.watchClear(); } }, - + watchClear: function () { this.element.addEvent('click:relay(.clearslider)', function (e, target) { e.preventDefault(); @@ -84,5 +88,12 @@ var FbSlider = new Class({ if (action === 'change') { this.changejs = js; } + }, + + cloned: function (c) { + delete this.mySlide; + this.makeSlider(); + this.parent(c); } -}); \ No newline at end of file + +});