]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/static/AdminLTE-2.3.7/plugins/flot/jquery.flot.selection.min.js
1 (function($){function init(plot
){var selection
={first
:{x
:-1,y
:-1},second
:{x
:-1,y
:-1},show
:false,active
:false};var savedhandlers
={};var mouseUpHandler
=null;function onMouseMove(e
){if(selection
.active
){updateSelection(e
);plot
.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e
){if(e
.which
!=1)return;document
.body
.focus();if(document
.onselectstart
!==undefined&&savedhandlers
.onselectstart
==null){savedhandlers
.onselectstart
=document
.onselectstart
;document
.onselectstart=function(){return false}}if(document
.ondrag
!==undefined&&savedhandlers
.ondrag
==null){savedhandlers
.ondrag
=document
.ondrag
;document
.ondrag=function(){return false}}setSelectionPos(selection
.first
,e
);selection
.active
=true;mouseUpHandler=function(e
){onMouseUp(e
)};$(document
).one("mouseup",mouseUpHandler
)}function onMouseUp(e
){mouseUpHandler
=null;if(document
.onselectstart
!==undefined)document
.onselectstart
=savedhandlers
.onselectstart
;if(document
.ondrag
!==undefined)document
.ondrag
=savedhandlers
.ondrag
;selection
.active
=false;updateSelection(e
);if(selectionIsSane())triggerSelectedEvent();else{plot
.getPlaceholder().trigger("plotunselected",[]);plot
.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane())return null;if(!selection
.show
)return null;var r
={},c1
=selection
.first
,c2
=selection
.second
;$.each(plot
.getAxes(),function(name
,axis
){if(axis
.used
){var p1
=axis
.c2p(c1
[axis
.direction
]),p2
=axis
.c2p(c2
[axis
.direction
]);r
[name
]={from:Math
.min(p1
,p2
),to
:Math
.max(p1
,p2
)}}});return r
}function triggerSelectedEvent(){var r
=getSelection();plot
.getPlaceholder().trigger("plotselected",[r
]);if(r
.xaxis
&&r
.yaxis
)plot
.getPlaceholder().trigger("selected",[{x1
:r
.xaxis
.from,y1
:r
.yaxis
.from,x2
:r
.xaxis
.to
,y2
:r
.yaxis
.to
}])}function clamp(min
,value
,max
){return value
<min
?min
:value
>max
?max
:value
}function setSelectionPos(pos
,e
){var o
=plot
.getOptions();var offset
=plot
.getPlaceholder().offset();var plotOffset
=plot
.getPlotOffset();pos
.x
=clamp(0,e
.pageX
-offset
.left
-plotOffset
.left
,plot
.width());pos
.y
=clamp(0,e
.pageY
-offset
.top
-plotOffset
.top
,plot
.height());if(o
.selection
.mode
=="y")pos
.x
=pos
==selection
.first
?0:plot
.width();if(o
.selection
.mode
=="x")pos
.y
=pos
==selection
.first
?0:plot
.height()}function updateSelection(pos
){if(pos
.pageX
==null)return;setSelectionPos(selection
.second
,pos
);if(selectionIsSane()){selection
.show
=true;plot
.triggerRedrawOverlay()}else clearSelection(true)}function clearSelection(preventEvent
){if(selection
.show
){selection
.show
=false;plot
.triggerRedrawOverlay();if(!preventEvent
)plot
.getPlaceholder().trigger("plotunselected",[])}}function extractRange(ranges
,coord
){var axis
,from,to
,key
,axes
=plot
.getAxes();for(var k
in axes
){axis
=axes
[k
];if(axis
.direction
==coord
){key
=coord
+axis
.n
+"axis";if(!ranges
[key
]&&axis
.n
==1)key
=coord
+"axis";if(ranges
[key
]){from=ranges
[key
].from;to
=ranges
[key
].to
;break}}}if(!ranges
[key
]){axis
=coord
=="x"?plot
.getXAxes()[0]:plot
.getYAxes()[0];from=ranges
[coord
+"1"];to
=ranges
[coord
+"2"]}if(from!=null&&to
!=null&&from>to
){var tmp
=from;from=to
;to
=tmp
}return{from:from,to
:to
,axis
:axis
}}function setSelection(ranges
,preventEvent
){var axis
,range
,o
=plot
.getOptions();if(o
.selection
.mode
=="y"){selection
.first
.x
=0;selection
.second
.x
=plot
.width()}else{range
=extractRange(ranges
,"x");selection
.first
.x
=range
.axis
.p2c(range
.from);selection
.second
.x
=range
.axis
.p2c(range
.to
)}if(o
.selection
.mode
=="x"){selection
.first
.y
=0;selection
.second
.y
=plot
.height()}else{range
=extractRange(ranges
,"y");selection
.first
.y
=range
.axis
.p2c(range
.from);selection
.second
.y
=range
.axis
.p2c(range
.to
)}selection
.show
=true;plot
.triggerRedrawOverlay();if(!preventEvent
&&selectionIsSane())triggerSelectedEvent()}function selectionIsSane(){var minSize
=plot
.getOptions().selection
.minSize
;return Math
.abs(selection
.second
.x
-selection
.first
.x
)>=minSize
&&Math
.abs(selection
.second
.y
-selection
.first
.y
)>=minSize
}plot
.clearSelection
=clearSelection
;plot
.setSelection
=setSelection
;plot
.getSelection
=getSelection
;plot
.hooks
.bindEvents
.push(function(plot
,eventHolder
){var o
=plot
.getOptions();if(o
.selection
.mode
!=null){eventHolder
.mousemove(onMouseMove
);eventHolder
.mousedown(onMouseDown
)}});plot
.hooks
.drawOverlay
.push(function(plot
,ctx
){if(selection
.show
&&selectionIsSane()){var plotOffset
=plot
.getPlotOffset();var o
=plot
.getOptions();ctx
.save();ctx
.translate(plotOffset
.left
,plotOffset
.top
);var c
=$.color
.parse(o
.selection
.color
);ctx
.strokeStyle
=c
.scale("a",.8).toString();ctx
.lineWidth
=1;ctx
.lineJoin
=o
.selection
.shape
;ctx
.fillStyle
=c
.scale("a",.4).toString();var x
=Math
.min(selection
.first
.x
,selection
.second
.x
)+.5,y
=Math
.min(selection
.first
.y
,selection
.second
.y
)+.5,w
=Math
.abs(selection
.second
.x
-selection
.first
.x
)-1,h
=Math
.abs(selection
.second
.y
-selection
.first
.y
)-1;ctx
.fillRect(x
,y
,w
,h
);ctx
.strokeRect(x
,y
,w
,h
);ctx
.restore()}});plot
.hooks
.shutdown
.push(function(plot
,eventHolder
){eventHolder
.unbind("mousemove",onMouseMove
);eventHolder
.unbind("mousedown",onMouseDown
);if(mouseUpHandler
)$(document
).unbind("mouseup",mouseUpHandler
)})}$.plot
.plugins
.push({init
:init
,options
:{selection
:{mode
:null,color
:"#e8cfac",shape
:"round",minSize
:5}},name
:"selection",version
:"1.1"})})(jQuery
);