У меня есть игровая площадка для вас здесь . Чтобы иметь несколько цветов для баров, вы должны закомментировать раздел Palette
и добавить paletteMode="Item"
в вашу серию баров.
Также Legend работает нормально, так как они представляют тип серии, и вы можете модифицировать legendTitle для каждой серии. Если вы хотите несколько легенд, вам нужно добавить несколько серий баров (для каждого крупного рогатого скота в вашем случае.)
Мое текущее решение является подробным и на основе этот поток , но я открыт для лучших решений.
function getSelection(inputBox) {
if ("selectionStart" in inputBox) {
return {
start: inputBox.selectionStart,
end: inputBox.selectionEnd
}
}
//and now, the blinkered IE way
var bookmark = document.selection.createRange().getBookmark()
var selection = inputBox.createTextRange()
selection.moveToBookmark(bookmark)
var before = inputBox.createTextRange()
before.collapse(true)
before.setEndPoint("EndToStart", selection)
var beforeLength = before.text.length
var selLength = selection.text.length
return {
start: beforeLength,
end: beforeLength + selLength
}
}
Реализация Диапазона IE является slithy ужасом. Это действительно хочет, чтобы Вы использовали отвратительный интерфейс execCommand вместо чего-либо индексация вовлечения в текст.
существует два подхода, о которых я знаю для получения индексов, и у них обоих есть проблемы. Первое использование range.text как в Вашем примере кода. К сожалению, range.text имеет привычку к снятию изоляции с ведущих и запаздывающих новых строк, что означает, ли каре/выбор в начале строки кроме первой, beforeLength будет выключен (количество newlines*2) символы, и Вы получите неправильный выделенный текст.
второй подход должен использовать range.moveStart/End (на дублированном диапазоне), как обрисовано в общих чертах в ответе на этот вопрос: Символьное смещение в Internet Explorer TextRange (однако, поскольку Вы используете известного родителя текстовой области, можно проигнорировать материал о нахождении узла). Это не имеет той же проблемы, но она действительно сообщает обо всех индексах, как будто новые строки были простыми символами LF, даже при том, что textarea.value и range.text возвратят их как последовательности CRLF! Таким образом, Вы не можете использовать их непосредственно для индексации в текстовую область, но можно или согласовать их с набором подсчета новой строки или просто строковой замены далеко весь CRS от значения перед использованием его.