Я использую модуль директивы Google Chart Tools , чтобы нарисовать линейную диаграмму / диаграмму с областями в моем приложении Angularjs из данных rdf, полученных с помощью запросов sparql и доступных в приложении, в формате json.
В основном контроллере я объявил свою функцию рисования следующим образом:
$scope.createChart = function () {
var json1 = $scope.entities // here I have my data
var rows = []
// populate rows with data:
for (var key in json1) {
// json1 has extra data I don't need
if (json1[key]['sdmx-dimension:refTime'] && json1[key]['dpc:deads']) {
var date = new Date(json1[key]['sdmx-dimension:refTime']);
var deads = json1[key]['dpc:deads']
rows.push({ c: [ { v:date }, { v:deads } ] })
}
}
$scope.myChartObject = {
"type": "AreaChart",
"data": {
"cols": [
{
"id": "date",
"label": "Date",
"type": "date"
},
{
"id": "deaths",
"label": "Deaths",
"type": "number"
}
]
},
"options": {
"title": "Deaths trend",
"height": 400,
"width": 600,
"vAxis": {
"title": "Deaths",
},
"hAxis": {
"title": "Date"
}
}
}
// attach the rows to the chart object
$scope.myChartObject.data.rows = rows
// template containing the chart
$scope.callTemplate('drawChart', '#right', true)
}
// wait for sparql query to retrieve data before create chart
// otherwise an empty chart will be drawn!
window.setTimeout( function(){ $scope.createChart() }, 3000);
С помощью этого решения я могу рисовать диаграмму с данными, но проблема: даты не отсортированы правильно, поэтому линия тренда зигзагообразна по графику:
![area chart](https://i.stack.imgur.com/xNsf8.png)
Я пытался используйте функцию сортировки в массиве строк:
rows.sort([{column:0}])
, но окончательный порядок даже хуже, чем начальный.
И я не могу использовать сортировку для объекта диаграммы следующим образом:
$scope.myChartObject.data.sort([{column:0}])
, потому что это не массив.
Даты бывают в следующем формате: 'yyyy-mm-dd'
(например, '2020-02-24'
), и ничего не улучшается, даже если я изменю его на 'yyyy, mm, dd'
раньше новая Дата присвоение.
Здесь console.log(myCharObject)
:
![enter image description here](https://i.stack.imgur.com/VnUu5.png)
и здесь если я напечатаю {{myCharObject}}
переменную в шаблоне html:
![enter image description here](https://i.stack.imgur.com/SNHkt.png)
Как отсортировать эти даты? Следует ли мне использовать другой способ определения моей диаграммы, как описано здесь ?