#highcharts
#highcharts
Вопрос:
У меня есть полный код, размещенный здесь: https://jsfiddle.net/delux123/kr7ojvLw/36 / где вы можете нарисовать форму круга и форму стрелки. После рисования вы можете выбрать фигуру, и появится всплывающее окно (с пользовательским интерфейсом). Оттуда вы можете выбрать «цвет заливки», «цвет линии (обводки)» и «ширину линии (обводки)», и после нажатия кнопки «Сохранить» настройки будут применены к выбранной фигуре.
Если вы попробуете выше над формой круга, это сработает. Таким образом, фактическое обновление обрабатывается с помощью кода:
function () {
var fillColor = document.querySelectorAll(
'.highcharts-popup-annotations input[name="fill-color"]'
)[0].value;
var lineColor = document.querySelectorAll(
'.highcharts-popup-annotations input[name="line-color"]'
)[0].value;
var lineWidth = document.querySelectorAll(
'.highcharts-popup-annotations input[name="line-width"]'
)[0].value;
// Update the circle
thischart.currentAnnotation.update({
shapes: [{
fill: fillColor,
stroke: lineColor,
strokeWidth: lineWidth
}]
});
// Close the popup
thischart.annotationsPopupContainer.style.display = 'none';
}
Проблема здесь в том, что все то же самое, но когда дело доходит до сегмента стрелки, примененные цвета и ширины не применяются, а сегмент стрелки всегда сохраняет исходные цвета / ширины, которые предварительно определены в navigation -> annotationsOptions -> shapeOptions
При выборе сегмента стрелки и изменении значений во всплывающем окне нам нужно, чтобы сегмент стрелки обновлялся так же, как это работает для формы круга.
Ответ №1:
Прямое обновление массива фигур — это решение вашей проблемы.
Демонстрация: https://jsfiddle.net/BlackLabel/tfzvhjcq /
// Update the annotation
thischart.currentAnnotation.shapes[0].update({
fill: fillColor,
stroke: lineColor,
strokeWidth: lineWidth
});
Комментарии:
1. и как мы можем сохранить выбранные значения, чтобы после выбора обновить общие настройки
navigation -> annotationsOptions -> shapeOptions
для всех будущих нарисованных кругов и сегментов, чтобы сохранить цвет в качестве цвета по умолчанию?2. @delux Как я понял, вы хотели бы добиться чего-то подобного, что сделано в прилагаемой демонстрации? jsfiddle.net/BlackLabel/zosbh4uL
3. да, мне это нужно. Единственная проблема заключается в том, что «цвет заливки» для «сегмента стрелки» по-прежнему не сохраняется в приведенном вами примере.
4.
The only remining issue is that "fill color" for "arrow segment" is still not preserved in the example you provided.
Что вы имеете в виду? Не могли бы вы предоставить шаги для воспроизведения проблемы?5. та же демонстрация, которую вы предоставили jsfiddle.net/BlackLabel/zosbh4uL попробуйте это: нарисуйте «линию» (которая на самом деле является стрелкой), выделите ее, измените цвет заливки с помощью пользовательского всплывающего окна, примените изменения при сохранении (посмотрите, как маркер стрелки имеет новый цвет заливки). Затем нарисуйте новую стрелку и посмотрите, как у маркера сохраняется цвет обводки, а не цвет заливки. Выберите вторую строку и просто примените значения из всплывающего окна и посмотрите, как теперь применяется цвет заливки. Это означает, что: цвет заливки для стрелок не сохраняется с помощью метода обновления, с которым вы мне помогли. Это работает для фигур.