응용 프로그램 서버에서 실행중인 서비스의 수를 모니터링하는 응용 프로그램을 작성 중입니다. 실행중인 서비스에 대한 정보는 데이터베이스에 저장되며 해당 정보 중 일부를 웹 페이지에 표시하려고합니다. 이 시점에서 나는 단지 데이터베이스가 업데이트 될 때 동적으로 업데이트되는 서비스의 수를 그래픽으로 표현하고자합니다. 목표는 ekg 판독 값과 비슷한 실행중인 서비스 수에 대한 가장 최근의 10 개 (또는 그 이상)의 값을 표시하는 간단한 차트를 만드는 것입니다. dojox.charting.Chart 위젯을 사용하고 있지만 차트를 제대로 업데이트하는 데 문제가있어서 numFailedAttempts에 대한 가장 최근의 10 개의 값 ("0") 만 표시합니다. 지금 당장 차트에 모든 값이 표시되고 x 축 값은 계속 가까워지고 가까이 다가가 모든 것을 고취시킵니다. dojo api 레퍼런스와 dojotoolkit.org에 대한 문서를 바탕으로 dojox.charting.Chart의 "displayRange"속성이이 문제를 해결할 것으로 생각했습니다. 그래서 내 질문은, 내가 뭘 잘못하고 있니? 여기 코드는 다음과 같습니다 저도 같은 문제로 어려움을 겪고있다dojox.charting.Chart dataRange 차트의 x 축을 올바르게 제한하지 않음
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/resources/dojo.css">
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js" data-dojo-config="isDebug: true, parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dojox.charting.StoreSeries");
dojo.require("dojox.charting.Chart2D");
dojo.require("dojo.store.Memory");
dojo.require("dojo.store.Observable");
dojo.require("dojox.charting.Chart");
dojo.require("dojox.charting.plot2d.Areas");
dojo.ready(function(){renderDataChart()});
function renderDataChart(){
//data from a database
var dataChartData = {
itentifier: 'id',
items:
[
{id: 1, serviceName:"service1", startDate:"today", endDate:"today", numFailedAttempts:"1", errorTime:"null", errorMessage:"null", suppressError:"null"},
{id: 2, serviceName:"service2", startDate:"today", endDate:"today", numFailedAttempts:"1", errorTime:"now", errorMessage:"broken", suppressError:"click"},
{id: 3, serviceName:"service3", startDate:"today", endDate:"today", numFailedAttempts:"0", errorTime:"now", errorMessage:"broken", suppressError:"click"},
{id: 4, serviceName:"service4", startDate:"today", endDate:"today", numFailedAttempts:"1", errorTime:"now", errorMessage:"broken", suppressError:"click"},
{id: 5, serviceName:"service5", startDate:"today", endDate:"today", numFailedAttempts:"0", errorTime:"null", errorMessage:"null", suppressError:"null"}
]
};
//data store
var dataChartStore = dojo.store.Observable(new dojo.store.Memory({
data: {
identifier: "id",
label: "runningServices",
items: dataChartData
}
}));
var dataChart = new dojox.charting.Chart("myDataChart", {
displayRange: 10,
stretchToFit: false,
scrolling: true,
fieldName: "runningServices",
type: dojox.charting.plot2d.Areas
});
dataChart.addAxis("x", {microTickStep: 1, minorTickStep: 1});
dataChart.addAxis("y", {vertical: true, minorTickStep: 1, natural: true});
dataChart.addSeries("y", new dojox.charting.StoreSeries(dataChartStore, {query: {numFailedAttempts: 0}}, "value"));
dataChart.render();
//update datastore to simulate new data
var startNumber = dataChartData.length;
var interval = setInterval(function(){
dataChartStore.notify({value: Math.ceil(Math.random()*29), id: ++startNumber, numFailedAttempts: 0});
}, 1000);
}
</script>
</head>
<body>
<div id="myDataChart" style="width: 500px; height: 200px;"></div>
</body>