2015-05-06 2 views
0

Мы работаем над созданием биржевой диаграммы, показывающей несколько пунктов, даже считающихся и их относительный процент с течением времени. Данные проводятся ежемесячно, и у нас есть селектор диапазона, настроенный на 6 месяцев, 9 месяцев, 1 год и все данные. При начальной загрузке мы выбираем 6-месячный диапазон. Мы замечаем некоторые странные эффекты. Ниже приведен пример jsFiddle, представляющий вопросы: http://jsfiddle.net/wergeld/wq7eavq4/HighStock Начало Месяц rangeSelector И series.compare Не работает с начальной загрузкой

Код rangeSelector:

rangeSelector: { 
    inputEnabled: false, 
    allButtonsEnabled: false, 
    buttons: [{ 
     type: 'month', 
     count: 6, 
     text: '6 Months' 
    }, { 
     type: 'month', 
     count: 9, 
     text: '9 Months' 
    }, { 
     type: 'year', 
     count: 1, 
     text: 'Year' 
    }, { 
     type: 'all', 
     text: 'All' 
    }], 
    buttonTheme: { 
     width: 60 
    }, 
    selected: 0 
}, 

1) На начальной нагрузке 0% «старт» происходит в точках данных октября 2014 года и относительно одного изменения цента рассчитывается с этой точки. Тем не менее, первый пункт, показанный на графике, на самом деле - сентябрь 2014 года. Это имеет некоторое процентное изменение от (я предполагаю) октябрь 2014 года.

2) Когда мы меняем выделение на селектор диапазона 9 месяцев, мы видим, что первая точка на июнь 2014 года - это 0%. Затем, если мы вернемся к значению селектора диапазона за 6 месяцев, вы увидите, что теперь у нас есть сентябрь 2014 года, так как 0% и процентные различия для более поздних времен все разные, чем при начальной загрузке.

Мои вопросы:

a. Почему есть 7 месяцев, когда я устанавливаю счет для этого rangeSelector до 6 и почему есть 10 месяцев, которые показываются, когда я установил его для 9 месяцев для другого селектора диапазона? По существу для данного rangeSelector.count я получаю 1 больше, чем ожидаю.

b. Почему значение 0% отличается от начальной загрузки, чем когда я выхожу из этого диапазона и обратно в этот диапазон?

+1

** a) ** Я тоже был смущен в начале, но это шесть полных месяцев. Начиная с 1 сентября, добавьте шесть месяцев и вернитесь 1 марта. Пример кода: last point = 'new Date (Date.UTC (2015, 2))' -> 1 марта, первая точка = 'новая дата (Date.UTC (2015, 2-6))' -> 1 сентября . ** b) ** Я почти уверен, что была ошибка, связанная с различной шкалой по осям между начальной загрузкой и более поздней управляющей диаграммой. Позвольте мне найти его и вернуться к вам. –

+0

Я могу иметь дело с a) 6 месяцев назад, включая последний месяц, так что 7 месяцев. Но, б) быть нехорошим вообще, когда сравнение точек происходит на 6-м месяце, а не на 7 ... затем переходит к месяцу 7 при последующем нажатии. Если я выбираю однолетний диапазон при загрузке init, это правильно. Это (для меня) только селектор месяца, который всегда неверен. – wergeld

+1

На самом деле это зависит от данных - в некоторых случаях это месяцы, иногда это годы. Связанные билеты: [a) # 966] (https://github.com/highslide-software/highcharts.com/issues/966) и [b) # 4147] (https://github.com/highslide-software/ highcharts.com/issues/4147). Что касается ** b) **, сообщается со столбцом, но на самом деле это одно и то же: http://jsfiddle.net/wq7eavq4/2/ –

ответ

1

Это связано с двумя ошибками:

И это вызвано установкой экстремумы в ядре, прежде чем график полностью оказаны. Возможно временное решение отказаться от selected опции и создать свой собственный вариант, чтобы справиться с этим: http://jsfiddle.net/wq7eavq4/6/

chart: { 
    events: { 
     load: function() { 
      var selected = this.options.rangeSelector.selectedAfter, 
       undefined; 

      if (selected !== undefined) this.rangeSelector.clickButton(selected, true); //set when defined 
     } 
    } 
}, 
rangeSelector: { 
    selectedAfter: 1 // custom param 
}, 

Единственный недостаток отсутствует первоначальный анимации.

Смежные вопросы