Fix get position when browser shrinking (#343)
This commit is contained in:
parent
0f62eb30b5
commit
6af1757084
4 changed files with 112 additions and 40 deletions
|
@ -80,24 +80,14 @@ Y.extend(Rearrange, Y.Base, {
|
|||
this.elements = params[2];
|
||||
|
||||
// Set the PDF dimensions.
|
||||
this.pdfx = Y.one('#pdf').getX();
|
||||
this.pdfy = Y.one('#pdf').getY();
|
||||
this.pdfwidth = parseFloat(Y.one('#pdf').getComputedStyle('width'));
|
||||
this.pdfheight = parseFloat(Y.one('#pdf').getComputedStyle('height'));
|
||||
this.setPdfDimensions();
|
||||
|
||||
// Set the boundaries.
|
||||
this.pdfleftboundary = this.pdfx;
|
||||
if (this.page.leftmargin) {
|
||||
this.pdfleftboundary += parseInt(this.page.leftmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
|
||||
this.pdfrightboundary = this.pdfx + this.pdfwidth;
|
||||
if (this.page.rightmargin) {
|
||||
this.pdfrightboundary -= parseInt(this.page.rightmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
this.setBoundaries();
|
||||
|
||||
this.setpositions();
|
||||
this.createevents();
|
||||
window.addEventListener("resize", this.checkWindownResize.bind(this));
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -130,6 +120,40 @@ Y.extend(Rearrange, Y.Base, {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the PDF dimensions.
|
||||
*/
|
||||
setPdfDimensions: function() {
|
||||
this.pdfx = Y.one('#pdf').getX();
|
||||
this.pdfy = Y.one('#pdf').getY();
|
||||
this.pdfwidth = parseFloat(Y.one('#pdf').getComputedStyle('width'));
|
||||
this.pdfheight = parseFloat(Y.one('#pdf').getComputedStyle('height'));
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the boundaries.
|
||||
*/
|
||||
setBoundaries: function() {
|
||||
this.pdfleftboundary = this.pdfx;
|
||||
if (this.page.leftmargin) {
|
||||
this.pdfleftboundary += parseInt(this.page.leftmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
|
||||
this.pdfrightboundary = this.pdfx + this.pdfwidth;
|
||||
if (this.page.rightmargin) {
|
||||
this.pdfrightboundary -= parseInt(this.page.rightmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Check browser resize and reset position.
|
||||
*/
|
||||
checkWindownResize: function() {
|
||||
this.setPdfDimensions();
|
||||
this.setBoundaries();
|
||||
this.setpositions();
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates the JS events for changing element positions.
|
||||
*/
|
||||
|
|
|
@ -1 +1 @@
|
|||
YUI.add("moodle-mod_customcert-rearrange",function(e,t){var n=function(){n.superclass.constructor.apply(this,[arguments])};e.extend(n,e.Base,{templateid:0,page:[],elements:[],pdfx:0,pdfy:0,pdfwidth:0,pdfheight:0,elementxy:0,pdfleftboundary:0,pdfrightboundary:0,pixelsinmm:3.779527559055,initializer:function(t){this.templateid=t[0],this.page=t[1],this.elements=t[2],this.pdfx=e.one("#pdf").getX(),this.pdfy=e.one("#pdf").getY(),this.pdfwidth=parseFloat(e.one("#pdf").getComputedStyle("width")),this.pdfheight=parseFloat(e.one("#pdf").getComputedStyle("height")),this.pdfleftboundary=this.pdfx,this.page.leftmargin&&(this.pdfleftboundary+=parseInt(this.page.leftmargin*this.pixelsinmm,10)),this.pdfrightboundary=this.pdfx+this.pdfwidth,this.page.rightmargin&&(this.pdfrightboundary-=parseInt(this.page.rightmargin*this.pixelsinmm,10)),this.setpositions(),this.createevents()},setpositions:function(){for(var t in this.elements){var n=this.elements[t],r=this.pdfx+n.posx*this.pixelsinmm,i=this.pdfy+n.posy*this.pixelsinmm,s=parseFloat(e.one("#element-"+n.id).getComputedStyle("width")),o=n.width*this.pixelsinmm;o&&s>o&&(s=o);switch(n.refpoint){case"1":r-=s/2;break;case"2":r=r-s+2}e.one("#element-"+n.id).setX(r),e.one("#element-"+n.id).setY(i)}},createevents:function(){e.one(".savepositionsbtn [type=submit]").on("click",function(e){this.savepositions(e)},this),e.one(".applypositionsbtn [type=submit]").on("click",function(e){this.savepositions(e),e.preventDefault()},this);var t=new e.DD.Delegate({container:"#pdf",nodes:".element"});t.on("drag:start",function(){var e=t.get("currentNode");this.elementxy=e.getXY()},this),t.on("drag:end",function(){var e=t.get("currentNode");this.isoutofbounds(e)&&e.setXY(this.elementxy)},this)},isoutofbounds:function(e){var t=parseFloat(e.getComputedStyle("width")),n=parseFloat(e.getComputedStyle("height")),r=e.getX(),i=r+t,s=e.getY(),o=s+n;return r<this.pdfleftboundary||i>this.pdfrightboundary?!0:s<this.pdfy||o>this.pdfy+this.pdfheight?!0:!1},savepositions:function(t){var n={tid:this.templateid,values:[]};for(var r in this.elements){var i=this.elements[r],s=e.one("#element-"+i.id),o=s.getX()-this.pdfx,u=s.getY()-this.pdfy,a=s.getData("refpoint"),f=parseFloat(s.getComputedStyle("width"));switch(a){case"1":o+=f/2;break;case"2":o+=f}n.values.push({id:i.id,posx:Math.round(parseFloat(o/this.pixelsinmm)),posy:Math.round(parseFloat(u/this.pixelsinmm))})}n.values=JSON.stringify(n.values),e.io(M.cfg.wwwroot+"/mod/customcert/ajax.php",{method:"POST",data:n,on:{failure:function(e,t){this.ajaxfailure(t)},success:function(){var e=t.currentTarget.ancestor("form",!0),n=e.getAttribute("action"),r=e.one("[name=pid]");if(r){var i=r.get("value");window.location=n+"?pid="+i}else{var s=e.one("[name=tid]").get("value");window.location=n+"?tid="+s}}},context:this}),t.preventDefault()},ajaxfailure:function(e){var t={name:e.status+" "+e.statusText,message:e.responseText};return new M.core.exception(t)}}),e.namespace("M.mod_customcert.rearrange").init=function(e,t,r){new n(e,t,r)}},"@VERSION@",{requires:["dd-delegate","dd-drag"]});
|
||||
YUI.add("moodle-mod_customcert-rearrange",function(e,t){var n=function(){n.superclass.constructor.apply(this,[arguments])};e.extend(n,e.Base,{templateid:0,page:[],elements:[],pdfx:0,pdfy:0,pdfwidth:0,pdfheight:0,elementxy:0,pdfleftboundary:0,pdfrightboundary:0,pixelsinmm:3.779527559055,initializer:function(e){this.templateid=e[0],this.page=e[1],this.elements=e[2],this.setPdfDimensions(),this.setBoundaries(),this.setpositions(),this.createevents(),window.addEventListener("resize",this.checkWindownResize.bind(this))},setpositions:function(){for(var t in this.elements){var n=this.elements[t],r=this.pdfx+n.posx*this.pixelsinmm,i=this.pdfy+n.posy*this.pixelsinmm,s=parseFloat(e.one("#element-"+n.id).getComputedStyle("width")),o=n.width*this.pixelsinmm;o&&s>o&&(s=o);switch(n.refpoint){case"1":r-=s/2;break;case"2":r=r-s+2}e.one("#element-"+n.id).setX(r),e.one("#element-"+n.id).setY(i)}},setPdfDimensions:function(){this.pdfx=e.one("#pdf").getX(),this.pdfy=e.one("#pdf").getY(),this.pdfwidth=parseFloat(e.one("#pdf").getComputedStyle("width")),this.pdfheight=parseFloat(e.one("#pdf").getComputedStyle("height"))},setBoundaries:function(){this.pdfleftboundary=this.pdfx,this.page.leftmargin&&(this.pdfleftboundary+=parseInt(this.page.leftmargin*this.pixelsinmm,10)),this.pdfrightboundary=this.pdfx+this.pdfwidth,this.page.rightmargin&&(this.pdfrightboundary-=parseInt(this.page.rightmargin*this.pixelsinmm,10))},checkWindownResize:function(){this.setPdfDimensions(),this.setBoundaries(),this.setpositions()},createevents:function(){e.one(".savepositionsbtn [type=submit]").on("click",function(e){this.savepositions(e)},this),e.one(".applypositionsbtn [type=submit]").on("click",function(e){this.savepositions(e),e.preventDefault()},this);var t=new e.DD.Delegate({container:"#pdf",nodes:".element"});t.on("drag:start",function(){var e=t.get("currentNode");this.elementxy=e.getXY()},this),t.on("drag:end",function(){var e=t.get("currentNode");this.isoutofbounds(e)&&e.setXY(this.elementxy)},this)},isoutofbounds:function(e){var t=parseFloat(e.getComputedStyle("width")),n=parseFloat(e.getComputedStyle("height")),r=e.getX(),i=r+t,s=e.getY(),o=s+n;return r<this.pdfleftboundary||i>this.pdfrightboundary?!0:s<this.pdfy||o>this.pdfy+this.pdfheight?!0:!1},savepositions:function(t){var n={tid:this.templateid,values:[]};for(var r in this.elements){var i=this.elements[r],s=e.one("#element-"+i.id),o=s.getX()-this.pdfx,u=s.getY()-this.pdfy,a=s.getData("refpoint"),f=parseFloat(s.getComputedStyle("width"));switch(a){case"1":o+=f/2;break;case"2":o+=f}n.values.push({id:i.id,posx:Math.round(parseFloat(o/this.pixelsinmm)),posy:Math.round(parseFloat(u/this.pixelsinmm))})}n.values=JSON.stringify(n.values),e.io(M.cfg.wwwroot+"/mod/customcert/ajax.php",{method:"POST",data:n,on:{failure:function(e,t){this.ajaxfailure(t)},success:function(){var e=t.currentTarget.ancestor("form",!0),n=e.getAttribute("action"),r=e.one("[name=pid]");if(r){var i=r.get("value");window.location=n+"?pid="+i}else{var s=e.one("[name=tid]").get("value");window.location=n+"?tid="+s}}},context:this}),t.preventDefault()},ajaxfailure:function(e){var t={name:e.status+" "+e.statusText,message:e.responseText};return new M.core.exception(t)}}),e.namespace("M.mod_customcert.rearrange").init=function(e,t,r){new n(e,t,r)}},"@VERSION@",{requires:["dd-delegate","dd-drag"]});
|
||||
|
|
|
@ -80,24 +80,14 @@ Y.extend(Rearrange, Y.Base, {
|
|||
this.elements = params[2];
|
||||
|
||||
// Set the PDF dimensions.
|
||||
this.pdfx = Y.one('#pdf').getX();
|
||||
this.pdfy = Y.one('#pdf').getY();
|
||||
this.pdfwidth = parseFloat(Y.one('#pdf').getComputedStyle('width'));
|
||||
this.pdfheight = parseFloat(Y.one('#pdf').getComputedStyle('height'));
|
||||
this.setPdfDimensions();
|
||||
|
||||
// Set the boundaries.
|
||||
this.pdfleftboundary = this.pdfx;
|
||||
if (this.page.leftmargin) {
|
||||
this.pdfleftboundary += parseInt(this.page.leftmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
|
||||
this.pdfrightboundary = this.pdfx + this.pdfwidth;
|
||||
if (this.page.rightmargin) {
|
||||
this.pdfrightboundary -= parseInt(this.page.rightmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
this.setBoundaries();
|
||||
|
||||
this.setpositions();
|
||||
this.createevents();
|
||||
window.addEventListener("resize", this.checkWindownResize.bind(this));
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -130,6 +120,40 @@ Y.extend(Rearrange, Y.Base, {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the PDF dimensions.
|
||||
*/
|
||||
setPdfDimensions: function() {
|
||||
this.pdfx = Y.one('#pdf').getX();
|
||||
this.pdfy = Y.one('#pdf').getY();
|
||||
this.pdfwidth = parseFloat(Y.one('#pdf').getComputedStyle('width'));
|
||||
this.pdfheight = parseFloat(Y.one('#pdf').getComputedStyle('height'));
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the boundaries.
|
||||
*/
|
||||
setBoundaries: function() {
|
||||
this.pdfleftboundary = this.pdfx;
|
||||
if (this.page.leftmargin) {
|
||||
this.pdfleftboundary += parseInt(this.page.leftmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
|
||||
this.pdfrightboundary = this.pdfx + this.pdfwidth;
|
||||
if (this.page.rightmargin) {
|
||||
this.pdfrightboundary -= parseInt(this.page.rightmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Check browser resize and reset position.
|
||||
*/
|
||||
checkWindownResize: function() {
|
||||
this.setPdfDimensions();
|
||||
this.setBoundaries();
|
||||
this.setpositions();
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates the JS events for changing element positions.
|
||||
*/
|
||||
|
|
50
yui/src/rearrange/js/rearrange.js
vendored
50
yui/src/rearrange/js/rearrange.js
vendored
|
@ -78,24 +78,14 @@ Y.extend(Rearrange, Y.Base, {
|
|||
this.elements = params[2];
|
||||
|
||||
// Set the PDF dimensions.
|
||||
this.pdfx = Y.one('#pdf').getX();
|
||||
this.pdfy = Y.one('#pdf').getY();
|
||||
this.pdfwidth = parseFloat(Y.one('#pdf').getComputedStyle('width'));
|
||||
this.pdfheight = parseFloat(Y.one('#pdf').getComputedStyle('height'));
|
||||
this.setPdfDimensions();
|
||||
|
||||
// Set the boundaries.
|
||||
this.pdfleftboundary = this.pdfx;
|
||||
if (this.page.leftmargin) {
|
||||
this.pdfleftboundary += parseInt(this.page.leftmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
|
||||
this.pdfrightboundary = this.pdfx + this.pdfwidth;
|
||||
if (this.page.rightmargin) {
|
||||
this.pdfrightboundary -= parseInt(this.page.rightmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
this.setBoundaries();
|
||||
|
||||
this.setpositions();
|
||||
this.createevents();
|
||||
window.addEventListener("resize", this.checkWindownResize.bind(this));
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -128,6 +118,40 @@ Y.extend(Rearrange, Y.Base, {
|
|||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the PDF dimensions.
|
||||
*/
|
||||
setPdfDimensions: function() {
|
||||
this.pdfx = Y.one('#pdf').getX();
|
||||
this.pdfy = Y.one('#pdf').getY();
|
||||
this.pdfwidth = parseFloat(Y.one('#pdf').getComputedStyle('width'));
|
||||
this.pdfheight = parseFloat(Y.one('#pdf').getComputedStyle('height'));
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets the boundaries.
|
||||
*/
|
||||
setBoundaries: function() {
|
||||
this.pdfleftboundary = this.pdfx;
|
||||
if (this.page.leftmargin) {
|
||||
this.pdfleftboundary += parseInt(this.page.leftmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
|
||||
this.pdfrightboundary = this.pdfx + this.pdfwidth;
|
||||
if (this.page.rightmargin) {
|
||||
this.pdfrightboundary -= parseInt(this.page.rightmargin * this.pixelsinmm, 10);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Check browser resize and reset position.
|
||||
*/
|
||||
checkWindownResize: function() {
|
||||
this.setPdfDimensions();
|
||||
this.setBoundaries();
|
||||
this.setpositions();
|
||||
},
|
||||
|
||||
/**
|
||||
* Creates the JS events for changing element positions.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue