Создание перетаскиваемого контейнера HighChart

Кто-нибудь успешно смог добавить возможность перетаскивания highcharts на HTML-страницу?

Я оцениваю HighCharts для использования в рабочем проекте.

Одним из требований будет возможность щелкнуть диаграмму и перетащить всю диаграмму в другое место (div) на странице.

HTML 5 имеет встроенные возможности перетаскивания, где вы просто устанавливаете для свойства draggable объекта значение «true» и устанавливаете несколько событий перетаскивания.

Мне не удалось реализовать это перетаскивание HTML5 на High Chart. Я попытался установить атрибут "draggable" тега DIV контейнера диаграммы в значение true и событие div "ondragstart", но событие начала перетаскивания никогда не запускалось.

Я предполагаю, что объект Highchart обрабатывает события onclick, поэтому событие начала перетаскивания не запускается.

Еще одно требование заключается в том, что пользователь по-прежнему сможет использовать функциональные возможности диаграммы по умолчанию, когда вы щелкаете серию или заголовок легенды. Например, мы позволим пользователю щелкнуть круговую диаграмму, чтобы открыть новое окно для «детализации» в серии, чтобы увидеть связанные данные. Таким образом, событие onclick элементов серии по-прежнему должно нормально функционировать. Я полагаю, что возможность перетаскивать всю диаграмму означало бы сначала щелкнуть в некотором «открытом» пространстве внутри контейнера.

Кто-нибудь успешно смог добавить возможность перетаскивания highcharts на HTML-страницу?

Спасибо

Кортни

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
318
1

Ответы 1

Это можно сделать, переопределив поведение функции Highcharts.Pointer.prototype.drag по умолчанию:

JS:

 (function(H) {
   H.Pointer.prototype.drag = function(e) {
    var container = this.chart.container.parentElement;
      container.style.left = container.offsetLeft + e.movementX + 'px';
      container.style.top = container.offsetTop + e.movementY + 'px';
   }
 })(Highcharts);

 var chart = Highcharts.chart('container', {
   series: [{
     data: [1, 2]
   }]
 });

CSS:

#container {
  width: 300px;
  height: 200px;
  position: absolute;
  left: 100px;
  top: 100px;
}

Живая демонстрация:http://jsfiddle.net/BlackLabel/gtqdheLc/

Другие вопросы по теме