12.06.2015, 23:32
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
как сформировать свойство функции
Есть свойство функции
data: [
{ year: '2008', value: 20 },
{ year: '2009', value: 10 },
{ year: '2010', value: 5 },
{ year: '2011', value: 5 },
{ year: '2012', value: 20 } */
],
как его записать в таком виде из следующего массива array? Чтобы получать это свойство динамически?
'0' :
'year' => "4"
'value' => "100"
'1' :
'year' => "100"
'value' => "200"
'2' :
'year' => "8"
'value' => "100"
'3' :
'year' => "19"
'value' => "300"
|
|
13.06.2015, 09:05
|
|
Профессор
|
|
Регистрация: 16.07.2014
Сообщений: 267
|
|
imedia,
Я в php не силён, но думаю массив нужно пробегать foreach, который будет формировать новый ассоциативный массив и для значений year запускать функцию, которая будет их в года преобразовывать. Только входящий массив странный какой-то, вот это 'year' => "100" в какой год должно преобразоваться?
Далее echo json_encode($arr); На клиенте JSON.parse(str) и присобачиваете полученный массив объектов как свойство своей функции.
|
|
13.06.2015, 10:06
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
это javascript, а вопрос именно в том как присобачить
new Morris.Line({
// ID of the element in which to draw the chart.
element: 'myfirstchart',
// Chart data records -- each entry in this array corresponds to a point on
// the chart.
data: [
{ year: '2008', value: 20 },
{ year: '2009', value: 10 },
{ year: '2010', value: 5 },
{ year: '2011', value: 5 },
{ year: '2012', value: 20 } */
],
// The name of the data record attribute that contains x-values.
xkey: 'year',
// A list of names of data record attributes that contain y-values.
ykeys: ['value'],
// Labels for the ykeys -- will be displayed when you hover over the
// chart.
labels: ['Value']
});
года странные в массиве но это не имеет значение, просто числа там проходят
Последний раз редактировалось imedia, 13.06.2015 в 10:11.
|
|
13.06.2015, 11:01
|
|
Профессор
|
|
Регистрация: 16.07.2014
Сообщений: 267
|
|
imedia,
data это не свойство функции, а свойство объекта, который передаётся конструктору Morris.Line в качестве аргумента. Изменить этот объект можно до передачи его в функцию. Как-то так:
var options = {
// ID of the element in which to draw the chart.
element: 'myfirstchart',
// Chart data records -- each entry in this array corresponds to a point on
// the chart.
data: [
{ year: '2008', value: 20 },
{ year: '2009', value: 10 },
{ year: '2010', value: 5 },
{ year: '2011', value: 5 },
{ year: '2012', value: 20 }
],
// The name of the data record attribute that contains x-values.
xkey: 'year',
// A list of names of data record attributes that contain y-values.
ykeys: ['value'],
// Labels for the ykeys -- will be displayed when you hover over the
// chart.
labels: ['Value']
};
options.data = [
{ year: '2013', value: 25 },
{ year: '2009', value: 10 },
{ year: '3010', value: 50 },
{ year: '2051', value: 4 },
{ year: '2012', value: 20 }
];
new Morris.Line( options );
|
|
13.06.2015, 11:45
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
да но у меня есть массив array
'0' :
'year' => "4"
'value' => "100"
'1' :
'year' => "100"
'value' => "200"
'2' :
'year' => "8"
'value' => "100"
'3' :
'year' => "19"
'value' => "300"
как именно его прировнять к этому options.data формату, и к тому же ваш вариант не переопределяет массив значений
Последний раз редактировалось imedia, 13.06.2015 в 11:49.
|
|
13.06.2015, 12:34
|
|
Профессор
|
|
Регистрация: 16.07.2014
Сообщений: 267
|
|
Сообщение от imedia
|
и к тому же ваш вариант не переопределяет массив значений
|
А это что тогда?:
options.data = [
{ year: '2013', value: 25 },
{ year: '2009', value: 10 },
{ year: '3010', value: 50 },
{ year: '2051', value: 4 },
{ year: '2012', value: 20 }
];
Сообщение от imedia
|
как именно его прировнять к этому options.data формату
|
Посылаете ajax запрос, на сервере через json_encode($arr) превращаете ваш массив в строку и отсылаете клиенту, в браузере через JSON.parse(request.responseText) получаете массив и присваиваете options.data
|
|
13.06.2015, 13:05
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
массив уже в яваскрипте как его присвоить option.data ? покажите на примере он же с основными ключами, и у вас все таки option.data не переопределяет, сейчас выложу сам фреймворк по построению графиков
|
|
13.06.2015, 13:06
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
<div id="myfirstchart" style="height: 250px;"></div>
<script>
new Morris.Line({
// ID of the element in which to draw the chart.
element: 'myfirstchart',
// Chart data records -- each entry in this array corresponds to a point on
// the chart.
data: [
{ year: '2008', value: 20 },
{ year: '2009', value: 10 },
{ year: '2010', value: 5 },
{ year: '2011', value: 5 },
{ year: '2012', value: 20 }
],
// The name of the data record attribute that contains x-values.
xkey: 'year',
// A list of names of data record attributes that contain y-values.
ykeys: ['value'],
// Labels for the ykeys -- will be displayed when you hover over the
// chart.
labels: ['Value']
});
options.data = [
{ year: '2013', value: 25 },
{ year: '2009', value: 10 },
{ year: '3010', value: 50 },
{ year: '2051', value: 4 },
{ year: '2012', value: 20 }
];
new Morris.Line( options );
</script>
Видите нет переопределения
|
|
13.06.2015, 13:26
|
|
Профессор
|
|
Регистрация: 16.07.2014
Сообщений: 267
|
|
imedia,
Вот так надо:
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
<div id="myfirstchart" style="height: 250px;"></div>
<script>
var options = {
// ID of the element in which to draw the chart.
element: 'myfirstchart',
// Chart data records -- each entry in this array corresponds to a point on
// the chart.
data: [
{ year: '2008', value: 20 },
{ year: '2009', value: 10 },
{ year: '2010', value: 5 },
{ year: '2011', value: 5 },
{ year: '2012', value: 20 }
],
// The name of the data record attribute that contains x-values.
xkey: 'year',
// A list of names of data record attributes that contain y-values.
ykeys: ['value'],
// Labels for the ykeys -- will be displayed when you hover over the
// chart.
labels: ['Value']
};
options.data = [
{ year: '2013', value: 25 },
{ year: '2009', value: 10 },
{ year: '3010', value: 50 },
{ year: '2051', value: 4 },
{ year: '2012', value: 20 }
];
new Morris.Line( options );
</script>
|
|
13.06.2015, 13:29
|
|
Профессор
|
|
Регистрация: 16.07.2014
Сообщений: 267
|
|
imedia,
'0' :
'year' => "4"
'value' => "100"
'1' :
'year' => "100"
'value' => "200"
'2' :
'year' => "8"
'value' => "100"
'3' :
'year' => "19"
'value' => "300"
Такая форма массива характерна только для php, js ошибку выдаст, он не знает что такое =>.
|
|
|
|