Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Включить один json в другой (https://javascript.ru/forum/misc/33366-vklyuchit-odin-json-v-drugojj.html)

ksevelyar 20.11.2012 19:37

Включить один json в другой [решено]
 
Очень новичковый вопрос, но видимо гуглю не по тем словам.

Как включить в chart1_flot_options массив опций flot_options?

var flot_options = {
    series: {
      lines: { show: true },
      points: { show: true }
    },
    xaxis:{
      mode: "time",
      timeformat: "%d",
      ticks: 31,
      minTickSize: [1, "day"],
      min: (new Date(prev_date)).getTime() + 14400000,
      max: (new Date(cur_date)).getTime() + 14400000,
    },
    grid: {
      borderWidth: 0
    }
  };

  var chart1_flot_options = {
    grid: {
      borderWidth: 2
    }
  };

- unless @chart1_data.empty?
  :javascript
    $.plot($("#chart1"), [#{@chart1_plot}], chart1_flot_options);

Magneto 20.11.2012 20:34

Нужно видеть эти два файла и то что нужно в итоге получить, а то так не очень получается помочь.

ksevelyar 20.11.2012 20:42

Цитата:

Сообщение от Magneto (Сообщение 216935)
Нужно видеть эти два файла и то что нужно в итоге получить, а то так не очень получается помочь.

Это не файлы, это опции flot_options и chart1_flot_options. Они в коде первого поста.

Смысл в том, чтобы написать один общий для всех графиков flot_options и для отдельных графиков просто включать его в chart_n_flot_options.

Таким образом общие настройки будут в одном месте, а те которые отличаются для разных графиков будут переопределены в массивах настроек графиков chart_n_flot_options.

dmitriymar 20.11.2012 21:13

var sumJSON="["+ яснон1+","+ ясон2+"]"


или
var flot_options = {
series: {
lines: { show: true },
points: { show: true }
},
xaxis:{
mode: "time",
timeformat: "%d",
ticks: 31,
minTickSize: [1, "day"],
min: (new Date(prev_date)).getTime() + 14400000,
max: (new Date(cur_date)).getTime() + 14400000,
},
grid: {
borderWidth: 0
}
};

var chart1_flot_options = {
grid: {
borderWidth: 2
}
};
flot_options[chart1_flot_options]=chart1_flot_options;
......

ksevelyar 20.11.2012 21:48

Цитата:

Сообщение от dmitriymar (Сообщение 216940)
flot_options[chart1_flot_options]=chart1_flot_options;

Не могли бы вы пояснить последнюю строчку? Она у меня к сожалению не работает.

И так тоже не работает:

chart1_flot_options[flot_options]=flot_options;

Хотя бы ключевые слова — погуглю о присваиваниях/переопределниях в js или как это называется.

lord2kim 20.11.2012 21:55

ksevelyar,
var obj = { series: { x:1, y:2 }, x: { x:3, y:4 }, y: { x:5, y:6 } };
alert(obj["series"]+"\n"+obj["x"]+"\n"+obj["y"]+"\n"+obj["obj1"]);
var obj1 = { grid: { border:1 } };
obj["obj1"] = obj1;
alert(obj["series"]+"\n"+obj["x"]+"\n"+obj["y"]+"\n"+obj["obj1"]);

и это не массивы, а объекты

dmitriymar 20.11.2012 21:57

Цитата:

Сообщение от ksevelyar
Хотя бы ключевые слова — погуглю о присваиваниях/переопределниях в js или как это называется.

какие ключевые слова? это добавление в объект chart1_flot_options свойства flot_options, которое содержит объект flot_options

ksevelyar 20.11.2012 22:12

Цитата:

Сообщение от dmitriymar (Сообщение 216946)
какие ключевые слова? это добавление в объект chart1_flot_options свойства flot_options, которое содержит объект flot_options

Например то, что это объекты :) Спасибо.

ksevelyar 21.11.2012 01:38

Вопрос решён:

...
  var flot_options = {
    series: {
      lines: { show: true },
      points: { show: true },
    },
    colors: ["#000", "#dba255", "#919733"],
    xaxis:{
      mode: "time",
      timeformat: "%d",
      ticks: 31,
      minTickSize: [1, "day"],
      min: (new Date(prev_date)).getTime() + 14400000,
      max: (new Date(cur_date)).getTime() + 14400000,
    },
    grid: {
      borderWidth: 0
    }
  };

  var chart1_flot_options = { colors: ["#2fbd8d"] };

  var chart1_flot_options = $.extend({}, flot_options, chart1_flot_options);

- unless @data_1.empty?
  :javascript
    $.plot($("#chart_1"), [#{@data_1}], chart1_flot_options);


Часовой пояс GMT +3, время: 19:02.