define([], function () {
return function (dashboard) {
var model = new Backbone.Model();
model.wire(['source', 'dataSet', 'query'], function (source, dataSet, query) {define([], function () {
return function (dashboard) {
var model = new Backbone.Model();
model.wire(['source', 'dataSet', 'query'], function (source, dataSet, query) {Get the data component from the dashboard configuration,
which is responsible for loading data sources.
dashboard.getComponent('data', function (dataComponent) {Extract the UDC context from the data component.
var udc = dataComponent.udc;Wait for the data set to load.
udc.waitFor(source, dataSet, function () {Query the data cube for the X dimension domain.
/* TODO refactor the API so (source, dataSet) are not needed */
var xDomainCodes = udc.getDomain(source, dataSet, query.x),
xDomainCodeList = udc.getCodeList(source, dataSet, query.x),
/* TODO generalize handling of X dimensions, special case Time */Parse X dimension domain values into JS Date objects.
xDomainDates = xDomainCodes.map( function (yearStr) {
return new Date(yearStr, 0);
}),Use the slice option as the basis for the current cell.
cell = _.clone(query.slices);
model.set('result', xDomainCodes.map(function (code, i) {Set the X dimension value for the current cell to the X domain value.
cell[query.x] = {
code: code,
codeList: xDomainCodeList
};Map X domain objects to data element objects with
return {x The date corresponding to the X domain value. x: xDomainDates[i],y The measure value from the data cube for
the current cell and the configured Y measure. y: udc.getValue(source, dataSet, cell, query.y)
};
}));
});
});
});
return model;
};
});