📄 zoomscrolldemo2.php
字号:
{
// Check if the Javascript ChartViewer library is loaded
if (!window.JsChartViewer)
return;
// Get the Javascript ChartViewer object
var viewer = JsChartViewer.get('<?php echo $viewer->getId()?>');
// Connect the mouse usage buttons to the Javascript ChartViewer object
connectViewerMouseUsage('ViewerMouseUsage1', viewer);
// Connect the view port window navigation pad to the Javascript ChartViewer object
connectViewerViewPort('ViewerViewPort1', viewer);
// Detect if browser is capable of support partial update (AJAX chart update)
if (JsChartViewer.canSupportPartialUpdate())
// Browser can support partial update, so connect the view port change event to
// trigger a partial update
viewer.attachHandler("ViewPortChanged", viewer.partialUpdate);
else
// Browser cannot support partial update - so use full page update
viewer.attachHandler("ViewPortChanged", function() { document.forms[0].submit(); });
}
</script>
<form method="post">
<table cellSpacing="0" cellPadding="0" border="0">
<tr>
<td align="right" bgColor="#000088" colSpan="2">
<div style="padding-bottom:2px; padding-right:3px; font-weight:bold; font-size:10pt; font-style:italic; font-family:Arial;">
<A style="color:#FFFF00; text-decoration:none" href="http://www.advsofteng.com/">Advanced Software Engineering</a>
</div>
</td>
</tr>
<tr valign="top">
<td style="border-left:black 1px solid; border-top:black 1px solid; border-bottom:black 1px solid;" width="130" bgColor="#e0e0e0">
<!-- The following table is to create 3 cells for 3 buttons. The buttons are used to control
the mouse usage mode of the Javascript ChartViewer. -->
<table id="ViewerMouseUsage1" cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr>
<td class="chartPushButton">
<div class="chartPushButton" id="ViewerMouseUsage1_Scroll" title="Pointer">
<img src="pointer.gif" align="absMiddle" width="16" height="16"> Pointer
</div>
</td>
</tr>
<tr>
<td class="chartPushButton">
<div class="chartPushButton" id="ViewerMouseUsage1_ZoomIn" title="Zoom In">
<img src="zoomInIcon.gif" align="absMiddle" width="16" height="16"> Zoom In
</div>
</td>
</tr>
<tr>
<td class="chartPushButton">
<div class="chartPushButton" id="ViewerMouseUsage1_ZoomOut" title="Zoom Out">
<img src="zoomOutIcon.gif" align="absMiddle" width="16" height="16"> Zoom Out
</div>
</td>
</tr>
</table>
<script>
// Connect the mouse usage buttons to the Javascript ChartViewer
function connectViewerMouseUsage(controlId, viewer)
{
// A cross browser utility to get the object by id.
function getObj(id) { return document.getElementById ? document.getElementById(id) : document.all[id]; }
// Set the button styles (colors) based on mouse usage mode
function syncButtons()
{
getObj(controlId + "_Scroll").className = (viewer.getMouseUsage() == JsChartViewer.Scroll) ?
"chartPushButtonSelected" : "chartPushButton";
getObj(controlId + "_ZoomIn").className = (viewer.getMouseUsage() == JsChartViewer.ZoomIn) ?
"chartPushButtonSelected" : "chartPushButton";
getObj(controlId + "_ZoomOut").className = (viewer.getMouseUsage() == JsChartViewer.ZoomOut) ?
"chartPushButtonSelected" : "chartPushButton";
}
syncButtons();
// Run syncButtons whenever the Javascript ChartViewer is updated
viewer.attachHandler("PostUpdate", syncButtons);
// Set the Javascript ChartViewer mouse usage mode if the buttons are clicked.
getObj(controlId + "_Scroll").onclick = function() { viewer.setMouseUsage(JsChartViewer.Scroll); syncButtons(); }
getObj(controlId + "_ZoomIn").onclick = function() { viewer.setMouseUsage(JsChartViewer.ZoomIn); syncButtons(); }
getObj(controlId + "_ZoomOut").onclick = function() { viewer.setMouseUsage(JsChartViewer.ZoomOut); syncButtons(); }
}
</script>
<br><br><br><br>
<!-- The following DIV blocks constitute the view port navigation pad. -->
<div id="ViewerViewPort1" style="margin: 10px 5px; text-align: center">
<div style="border:black 1px solid; padding:0px; margin:0px; width:120px; height:120px; background-color:#c0c0ff;
text-align:left">
<div id="ViewerViewPort1_ViewPort" style="border:black 1px solid; padding:0px; margin:0px; visibility:hidden;
width:60px; height:60px; position:relative; background-color:#c0c0c0">
<img style="display:none" height="1" width="1">
</div>
</div>
</div>
<script>
// Connect the view port navigation pad to the Javascript ChartViewer
function connectViewerViewPort(controlId, viewer)
{
// A cross browser utility to get the object by id.
function getObj(id) { return document.getElementById ? document.getElementById(id) : document.all[id]; }
// Get the inner rectangle representing the visible view port
var p = getObj(controlId + "_ViewPort");
// Set up the mouse down event handler
p.onmousedown = ViewerViewPort_startDrag;
p.viewer = viewer;
// Remember the width and height of the outer container of the navigation pad. The exact definition of
// width and height differs depending on browsers (some includes the borders and some exclude the borders).
var parent = p.parentElement || p.parentNode;
p.parentW = parent.offsetWidth - (document.all ? 2 : 4);
p.parentH = parent.offsetHeight - (document.all ? 2 : 4);
// Connect the view port to the viewer PostUpdate handler
connectViewPortHandler(controlId, viewer);
// The navigation pad has been set up, so can display it now.
p.style.visibility = "visible";
}
// Connect the view port to the viewer PostUpdate handler
function connectViewPortHandler(controlId, viewer)
{
// Set the navigation pad size and position depending on the Javascript ChartViewer view port state
var syncViewPort = function()
{
// A cross browser utility to get the object by id.
function getObj(id) { return document.getElementById ? document.getElementById(id) : document.all[id]; }
// Get the inner rectangle representing the visible view port
var p = getObj(controlId + "_ViewPort");
// Set the size and position based on Javascript ChartViewer view port state
p.currentWidth = p.style.width = Math.round(p.parentW * viewer.getViewPortWidth());
p.currentHeight = p.style.height = Math.round(p.parentH * viewer.getViewPortHeight());
p.currentX = p.style.left = Math.round(p.parentW * viewer.getViewPortLeft());
p.currentY = p.style.top = Math.round(p.parentH * viewer.getViewPortTop());
}
syncViewPort();
// Run syncViewPort whenever the Javascript ChartViewer is updated
viewer.attachHandler("PostUpdate", syncViewPort);
}
// Mouse down event handler
function ViewerViewPort_startDrag(e)
{
if (document.onmousemove != ViewerViewPort_mouseMove)
{
// Remember the current onmousemove and onmouseup event handler and replace them
// with our own handler
document.ViewerViewPort_onmousemovesave = document.onmousemove;
document.ViewerViewPort_onmouseupsave = document.onmouseup;
document.onmousemove = ViewerViewPort_mouseMove;
document.onmouseup = ViewerViewPort_endDrag;
}
// Remember the mouse down position
document.ViewerViewPort_dragObj = this;
this.refX = this.currentX - (window.event || e).clientX;
this.refY = this.currentY - (window.event || e).clientY;
}
// Mouse move event handler
function ViewerViewPort_mouseMove(e)
{
// Set the position of the navigation pad depending on how far the mouse has been dragged
var obj = document.ViewerViewPort_dragObj;
obj.currentX = obj.style.left =
Math.max(0, Math.min(obj.refX + (window.event || e).clientX, obj.parentW - obj.currentWidth));
obj.currentY = obj.style.top =
Math.max(0, Math.min(obj.refY + (window.event || e).clientY, obj.parentH - obj.currentHeight));
return false;
}
// Mouse up event handler
function ViewerViewPort_endDrag(e)
{
// Restore the previous nmousemove and onmouseup event handler
document.onmousemove = document.ViewerViewPort_onmousemovesave;
document.onmouseup = document.ViewerViewPort_onmouseupsave;
// Set the new view port position based on the mouse position
var obj = document.ViewerViewPort_dragObj;
var newVpLeft = obj.currentX / (obj.parentW - obj.currentWidth) * (1 - obj.viewer.getViewPortWidth());
var newVpTop = obj.currentY / (obj.parentH - obj.currentHeight) * (1 - obj.viewer.getViewPortHeight());
// Change the view port only when the new view port position is really different from
// existing position (to avoid unnecessary partial or full update)
if ((Math.abs(obj.viewer.getViewPortLeft() - newVpLeft) > 0.0000001) ||
(Math.abs(obj.viewer.getViewPortTop() - newVpTop) > 0.0000001))
{
obj.viewer.setViewPortLeft(newVpLeft);
obj.viewer.setViewPortTop(newVpTop);
obj.viewer.applyHandlers("ViewPortChanged");
}
}
</script>
</td>
<td style="border: black 1px solid; background-color: #c0c0ff">
<div style="padding:5px">
<!-- ****** Here is the chart image ****** -->
<?php echo $viewer->renderHTML()?>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -