JavaScript
// Define tasks
var data = [
{
Equipment: 'A',
statuses: [{
name: 'Up',
intervals: [{ // From-To pairs
from: Date.UTC(0, 0, 0, 0),
to: Date.UTC(0, 0, 0, 2)
}, {
from: Date.UTC(0, 0, 0, 22),
to: Date.UTC(0, 0, 0, 24)
}]
}, {
name: 'Down',
intervals: [{ // From-To pairs
from: Date.UTC(0, 0, 0, 2),
to: Date.UTC(0, 0, 0, 22)
}]
}]
},
{
Equipment: 'B',
statuses: [{
name: 'Up',
intervals: [{ // From-To pairs
from: Date.UTC(0, 0, 0, 0),
to: Date.UTC(0, 0, 0, 7)
}, {
from: Date.UTC(0, 0, 0, 16),
to: Date.UTC(0, 0, 0, 24)
}]
}, {
name: 'Down',
intervals: [{ // From-To pairs
from: Date.UTC(0, 0, 0, 7),
to: Date.UTC(0, 0, 0, 16)
}]
}]
}, {
Equipment: 'C',
statuses: [{
name: 'Up',
intervals: [{ // From-To pairs
from: Date.UTC(0, 0, 0, 0),
to: Date.UTC(0, 0, 0, 4)
}, {
from: Date.UTC(0, 0, 0, 12),
to: Date.UTC(0, 0, 0, 24)
}]
}, {
name: 'Down',
intervals: [{ // From-To pairs
from: Date.UTC(0, 0, 0, 4),
to: Date.UTC(0, 0, 0, 12)
}]
}]
}
];
var statusDict = {};
// re-structure the tasks into line seriesvar series = [];
var series = [];
var height = 0;
$.each(data.reverse(), function (i, eq) {
var equipmentName = eq.Equipment;
height = i;
$.each(eq.statuses, function (j, statusData) {
var status = {
name: statusData.name,
data: []
};
$.each(statusData.intervals, function (k, interval) {
status.data.push({
name: status.name,
x: interval.from,
y: height,
from: interval.from,
to: interval.to
...