Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2018, 03:26   #1
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
Радость dojichart. Создание однотипных индикаторов в одном графике. Что бы не перерисовывался новым старый. На примере RSI

Привет Друзья Форумчане,
воспользовался инструментом dojichart-master для отрисовки рыночных графиков.
Создан дополнительный индикатор RSI => "RSI2" на панели для Графика.

первый RSI отрисовывется отлично(вначале), с period=3
второй (почему?)отрисовывается с period=22 поверх первого и второго

дошел до предположения, что Дело в контекстах(?)
dist/dojichart.js => RSILayer key: "draw", 10656 строка(просто индикаторы в компанованном коде)

Вопрос:
Экземпляр 2, когда рисует с контекстом, почему то одновременно рисует и на первом контексте тоже, штришок за штришком.
// т.е. получается он затирает в конкретном моменте времени предыдущее состояние - RSI1 и рисует новое - RSI2


Как исправить?

Изображение:приложено(вниз);

файл в папке:
>> QUESTIONFORFORUMPROGRAMMIST.js
Цитата:
Код:
//add RSI panel
var rsi_chart_panel = new DojiChart.panel.TimeValuePanel({
  height: 68,
  grid: {
    value: {
      lines: [30, 70]
    }
  },
  primaryLayer: new DojiChart.layer.indicator.RSILayer({period:3
  })
});

dojichart.addComponent("rsi", rsi_chart_panel, true); // true to refresh layout - ensure region instance is created

//add RSI2 Panel
var rsi_chart_panel2 = new DojiChart.panel.TimeValuePanel({
  height: 68,
  grid: {
    value: {
      lines: [30, 70]
    }
  },
  primaryLayer: new DojiChart.layer.indicator.RSILayer({period:22
  })
});
dojichart.addComponent("rsi2", rsi_chart_panel2, true); // true to refresh layout - ensure region instance is created
код в компоненте RSILayer
Цитата:
Код:
  }, {
    key: "draw",
    value: function draw(data, count, offset, valueToPixel, indexToPixel) {
         
      var  context= this._getContext(); 
      var field_map = data.getFieldMap();
      var data_arr = data.getRawData();
      this.elements = [];
      var prev_arc = null;

//если здесь в цикл вставить стоп, то при прорисовке по второму заходу RSI2, будет перерисовывать одновременно на обоих Panel RSI. - каждый один time
      for (var i = offset >= 0 ? offset : 0; i < offset + count && i < data_arr.length; i++) {
        var dat = data_arr[i]; 
        var arc = new Arc(this, i, dat[field_map.time], dat[this.output], prev_arc);
        this.elements.push(arc);
        arc.draw(context, valueToPixel, indexToPixel, this);

        prev_arc = arc;
      } 
    }
  }]);
А это код получения контекста(кратко):
Цитата:
Код:
 SET:
      this._parent_component = comp;
GET:
      _getContext == this._parent_component.getContext();
Изображения
Тип файла: png example.png (63.4 Кб, 135 просмотров)
Вложения
Тип файла: zip dojichart-master for forum.zip (983.9 Кб, 13 просмотров)
Don't worry be happy

Последний раз редактировалось Izhic; 27.02.2018 в 11:02. Причина: изенилась суть вопроса.
Izhic вне форума Ответить с цитированием
Старый 27.02.2018, 10:12   #2
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

добавил вот такую строку, как бы наименовал слой.
Код:
rsi_chart_panel.primaryLayer.output="rsi_test";
появились оба Индикатора. Проблема была вроде не в context как таковом.
А то, что записывались дуги в один массив. Обнулялись и по новой записывались.
По умолчанию стоит rsi_chart_panel.primaryLayer.output =="_rsi", в config.
На GitHub и на сайте разработчика информации не предоставлено, и в примерах. Случай
Кто бы на GitHub коммент добавил, всем бы помог про назначение .output
Обновлено: Добавил на GitHub like issue


Я пока еще потестю, раз в одном месте заработало, не значит что в другом месте не сломалось.
//хотя да, походу так. не зря он в config_default стоит. Ведь default - то что следует менять. Предполагается разработчиками.
Don't worry be happy

Последний раз редактировалось Izhic; 28.02.2018 в 06:09.
Izhic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связка таблиц в Delphi при помощи master source и master field dzuga Помощь студентам 1 01.05.2014 22:07
MediaPlayer.create(Context context, Uri uri) - какой Context? motorway Мобильные ОС (Android, iOS, Windows Phone) 14 12.07.2013 01:16
Как вернуть имя предыдущего месяца? valerij Microsoft Office Excel 7 14.03.2013 12:21
Canvas не перерисовывается после того, как зайдёт за границу экрана TwiX Мультимедиа в Delphi 10 05.03.2010 10:21
Как закрыть форму индикатора процесса после завершения цикла? SkAndrew Общие вопросы Delphi 11 03.02.2010 07:39