Index: bower.json
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- bower.json (revision fd08df43b83fa2d751f4b0711fe1828cf2bd3b8c)
+++ bower.json (revision )
@@ -45,7 +45,8 @@
"d3": "3.4.8",
"moment": ">2.9.0",
"d3-tip": "0.6.6",
- "numeral": "1.5.3"
+ "numeral": "1.5.3",
+ "hawkular-charts": "~0.3.2"
},
"homepage": "https://github.com/hawkular/hawkular-charts",
"moduleType": [
Index: tester.html
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- tester.html (revision fd08df43b83fa2d751f4b0711fe1828cf2bd3b8c)
+++ tester.html (revision )
@@ -32,6 +32,7 @@
+
Index: hawkular-charts.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- hawkular-charts.js (revision fd08df43b83fa2d751f4b0711fe1828cf2bd3b8c)
+++ hawkular-charts.js (revision )
@@ -68,15 +68,23 @@
svg = chart.append("g").attr("width", width + margin.left + margin.right).attr("height", innerChartHeight).attr("transform", "translate(" + margin.left + "," + (adjustedChartHeight2) + ")");
}
function determineAvailScale(dataPoints) {
- var adjustedTimeRange;
+ var adjustedTimeRange = [];
+ var oneHourAgo = +moment().subtract('hours', 1);
if (dataPoints) {
+ // Data points only have the start
if (dataPoints.length > 1) {
- adjustedTimeRange = d3.extent(dataPoints, function (d) {
+ adjustedTimeRange[0] = d3.min(dataPoints, function (d) {
return d.start;
});
+ // TODO adjust the start time to date range picker
+ if (adjustedTimeRange[0] < oneHourAgo) {
+ adjustedTimeRange[0] = oneHourAgo;
- }
+ }
+ // Provide "now" as end // TODO adjust to date range picker
+ adjustedTimeRange[1] = +moment();
+ }
else {
- adjustedTimeRange = [+moment(), +moment().subtract('hours', 1)]; // default to 1 hour same as graph
+ adjustedTimeRange = [+moment(), oneHourAgo]; // default to 1 hour same as graph
}
yScale = d3.scale.linear().clamp(true).rangeRound([innerChartHeight, 0]).domain([0, 175]);
yAxis = d3.svg.axis().scale(yScale).ticks(0).tickSize(0, 0).orient("left");
@@ -95,26 +103,25 @@
}
function formatTransformedDataPoints(inAvailData) {
var outputData = [];
- if (inAvailData && inAvailData[0].timestamp) {
- var previousItem;
- _.each(inAvailData, function (availItem, i) {
- if (i === 0) {
- ///@todo: this logic could use some more work
- if (inAvailData.length > 1) {
- /// on this first point we only know when it ended, we have no idea when it started
- outputData.push(new TransformedAvailDataPoint(availItem.timestamp - 60 * 1000, availItem.timestamp, availItem.value));
+ if (inAvailData && inAvailData.length > 0 && inAvailData[0].timestamp) {
+ var items = inAvailData.length;
+ var now = new Date().getTime();
+ if (items === 1) {
+ var availItem = inAvailData[0];
+ // we only have one item with start time. Assume unknown for the time before (last 1h) TODO adjust to time picker
+ outputData.push(new TransformedAvailDataPoint(now - 60 * 60 * 1000, availItem.timestamp, 'unknown'));
+ // and the determined value up until the end.
+ outputData.push(new TransformedAvailDataPoint(availItem.timestamp, now, availItem.value));
- }
- else {
+ }
+ else {
- /// we only have one point for a range so default to the 1 hour range default
- outputData.push(new TransformedAvailDataPoint(availItem.timestamp - 60 * 60 * 1000, availItem.timestamp, availItem.value));
- outputData.push(new TransformedAvailDataPoint(availItem.timestamp, new Date().getTime(), 'unknown'));
+ var endTime;
+ var i;
+ endTime = now;
+ for (i = items; i > 0; i--) {
+ outputData.push(new TransformedAvailDataPoint(inAvailData[i - 1].timestamp, endTime, inAvailData[i - 1].value));
+ endTime = inAvailData[i - 1].timestamp;
- }
- }
+ }
+ }
- else {
- previousItem = inAvailData[i - 1];
- outputData.push(new TransformedAvailDataPoint(previousItem.timestamp, availItem.timestamp, availItem.value));
- }
- });
}
return outputData;
}
Index: src/chart/avail-chart-directive.ts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/chart/avail-chart-directive.ts (revision fd08df43b83fa2d751f4b0711fe1828cf2bd3b8c)
+++ src/chart/avail-chart-directive.ts (revision )
@@ -126,17 +126,27 @@
function determineAvailScale(dataPoints:ITransformedAvailDataPoint[]) {
- var adjustedTimeRange;
+ var adjustedTimeRange:number[] = [] ;
+ var oneHourAgo = +moment().subtract('hours', 1);
+
if (dataPoints) {
+ // Data points only have the start
if (dataPoints.length > 1) {
- adjustedTimeRange = d3.extent(dataPoints, (d:ITransformedAvailDataPoint) => {
+ adjustedTimeRange[0] = d3.min(dataPoints, (d:ITransformedAvailDataPoint) => {
return d.start;
});
+ // TODO adjust the start time to date range picker
+ if (adjustedTimeRange[0]< oneHourAgo) {
+ adjustedTimeRange[0] = oneHourAgo;
+ }
+
+ // Provide "now" as end // TODO adjust to date range picker
+ adjustedTimeRange[1] = +moment();
} else {
- adjustedTimeRange = [+moment(), +moment().subtract('hours', 1)]; // default to 1 hour same as graph
+ adjustedTimeRange = [+moment(), oneHourAgo]; // default to 1 hour same as graph
}
yScale = d3.scale.linear()
@@ -177,26 +187,28 @@
function formatTransformedDataPoints(inAvailData:IAvailDataPoint[]):ITransformedAvailDataPoint[] {
var outputData:ITransformedAvailDataPoint[] = [];
- if (inAvailData && inAvailData[0].timestamp) {
- var previousItem:IAvailDataPoint;
+ if (inAvailData && inAvailData.length>0 && inAvailData[0].timestamp) {
+ var items = inAvailData.length;
+ var now = new Date().getTime();
- _.each(inAvailData, (availItem:IAvailDataPoint, i:number) => {
- if (i === 0) {
- ///@todo: this logic could use some more work
- if (inAvailData.length > 1) {
- /// on this first point we only know when it ended, we have no idea when it started
- outputData.push(new TransformedAvailDataPoint(availItem.timestamp - 60 * 1000, availItem.timestamp, availItem.value));
- } else {
- /// we only have one point for a range so default to the 1 hour range default
- outputData.push(new TransformedAvailDataPoint(availItem.timestamp - 60 * 60 * 1000, availItem.timestamp, availItem.value));
- outputData.push(new TransformedAvailDataPoint(availItem.timestamp, new Date().getTime(), 'unknown'));
+ if (items===1) {
+ var availItem=inAvailData[0];
+
+ // we only have one item with start time. Assume unknown for the time before (last 1h) TODO adjust to time picker
+ outputData.push(new TransformedAvailDataPoint(now - 60 * 60 * 1000, availItem.timestamp, 'unknown'));
+ // and the determined value up until the end.
+ outputData.push(new TransformedAvailDataPoint(availItem.timestamp, now, availItem.value));
- }
+ }
- } else {
- previousItem = inAvailData[i - 1];
- outputData.push(new TransformedAvailDataPoint(previousItem.timestamp, availItem.timestamp, availItem.value));
- }
+ else {
- });
+ var endTime:number;
+ var i:number;
+ endTime = now;
+ for (i = items; i > 0; i--) {
+ outputData.push(new TransformedAvailDataPoint(inAvailData[i-1].timestamp,endTime,inAvailData[i-1].value));
+ endTime = inAvailData[i-1].timestamp;
+ }
+ }
}
return outputData;
}