Создание панели D3 с использованием статистических данных awsconsole. Данные находятся в MongoDB и, похоже, загружаются правильно при маршрутизации в браузер.
Однако при попытке загрузить данные через панель инструментов D3 в консоли генерируется следующая ошибка
Uncaught TypeError: **string.slice is not a function**
at **d3_time_parseFullYear (d3.js:2716)**
at d3_time_parse (d3.js:2519)
at Function.format.parse (d3.js:2495)
Попробовал различные форматы безуспешно, панель инструментов загружается, но данные отсутствуют из-за ошибки среза
Пример фрагмента queue.js
queue()
.defer(d3.json, "/donorschoose/projects")
.defer(d3.json, "static/geojson/us-states.json")
.await(makeGraphs);
function makeGraphs(error, projectsJson, statesJson) {
//Clean projectsJson data
var donorschooseProjects = projectsJson;
// var dateFormat = d3.time.format("%Y-%m-%d");
var dateFormat = d3.time.format("%Y-%m-%d %H:%M:%S");
// var dateFormat = d3.time.format("%Y-%m-%d %X");
donorschooseProjects.forEach(function(d) {
d["date_posted"] = dateFormat.parse(d["date_posted"]);
d["date_posted"].setDate(1);
d["total_donations"] = +d["total_donations"];
});
Пример данных Монго (с отметкой времени)
{
"_id" : ObjectId("5c8933d131a8834ae488c4d6"),
"date_posted" : ISODate("2003-06-18T00:00:00Z"),
"date_completed" : ISODate("2004-01-23T00:00:00Z"),
"date_thank_you_packet_mailed" : ISODate("2004-02-26T00:00:00Z"),
"date_expiration" : ISODate("2004-06-16T00:00:00Z")
}
Пример фрагмента D3.js
}
function d3_time_parseWeekNumberMonday(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i));
return n ? (date.W = +n[0], i + n[0].length) : -1;
}
function d3_time_parseFullYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 4));
return n ? (date.y = +n[0], i + n[0].length) : -1;
}
function d3_time_parseYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.slice(i, i + 2));
return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1;
}
function d3_time_parseZone(date, string, i) {
return /^[+-]\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string,
i + 5) : -1;
}
function d3_time_expandYear(d) {
return d + (d > 68 ? 1900 : 2e3);
}