Я новичок в программировании, поэтому, пожалуйста, пройдите, если я не понимаю, с моим объяснением ... В представлении Web2Py у меня есть div с id = "convgraphdata "содержащие числа, которые я хотел бы построить с ChartJS. Цифры варьируются в зависимости от ввода, но выглядят следующим образом: [4,6,7,3,20,46, ...]. Поскольку я хочу создавать динамические данные, я бы хотел, чтобы ChartJS взял текст из div, преобразовал его в массив, а затем построил данные в массиве. Я пробовал так много способов захватить данные из div и не могу заставить его работать.Захват массива из текста div в график с помощью ChartJS
Например, код ChartJS является:
var lineChartData = {
labels : days(),
datasets : [
{
label: "My First dataset",
fillColor : "rgba(220,220,220,0.2)",
strokeColor : "rgba(220,220,220,1)",
pointColor : "rgba(220,220,220,1)",
pointStrokeColor : "#fff",
pointHighlightFill : "#fff",
pointHighlightStroke : "rgba(220,220,220,1)",
data : convdata()
}]}
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx).Line(lineChartData, {
responsive: true
});
}
function days() {
var days = [];
for (var i = 1; i <= 365; i++) {days.push(i);};
return days;}
И функция convdata(), где у меня возникли проблемы. Мой код:
function convdata() {
var convdata = [];
var data1 = document.getElementById("convgraphdata").textContent.slice(1, -1);
var convdata = data1.split(",").map(Number);
return convdata;}
Я также пробовал множество других методов. Граф не загружается, когда я включаю код для захвата текста из div. Не уверен, что это полезно, но содержимое div является результатом вызова AJAX в Web2Py. Web2Py любит возвращать результаты в HTML-элемент, но если есть другой способ отправить его прямо в массив ChartJS, это также может работать. Любая помощь очень ценится.
Anthony, в ответ на ваш вопрос, полная функция длинная и сложная, поэтому я объясню здесь краткое объяснение ... Функция javascript подбирает данные внутри входных данных javascript, а затем отправляет их на сервер, используя стандарт Web2Py функция Ajax в формате:
function conv_model(){
ajax(['graph'],['select1', 'rate1', 'waittime1'], 'convgraphdata');}
функция на стороне сервера в питоне проходит расчет на данных и возвращает результат в стороне клиента DIV с идентификатором и именем «convgraphdata». Эти данные - это то, что я хочу на графике в ChartJS.
на сторону сервера, функция питона в формате:
def graph():
# numerous calculations on user inputs
return dict(totalN=totalN)
Существует также вид называется graph.html, который содержит код:
{{=totalN}}
Надеется, что это достаточно подробно.
Там нет необходимости иметь web2py записать результаты Ajax в div (есть другие варианты). Пожалуйста, покажите вызов Ajax, а также код Python, который генерирует ответ. – Anthony