diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index baaec52ff2..379369c64b 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1574,12 +1574,13 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components return '

' + datetime.getDisplayRunningTime(ticks) + '

'; }; - nowPlayingPositionSlider.getChapterFractions = function () { + nowPlayingPositionSlider.getChapterNamesAndFractions = function () { showOsd(); const item = currentItem; if (item && item.Chapters && item.Chapters.length) { + const chapterNames = []; const chapterFractions = []; const runtimeDuration = item.RunTimeTicks; @@ -1588,12 +1589,13 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components const fraction = currentChapter.StartPositionTicks / runtimeDuration; chapterFractions.push(fraction); + chapterNames.push(currentChapter.Name); } - return chapterFractions; + return [chapterNames, chapterFractions]; } - return []; + return [[], []]; }; view.querySelector('.btnPreviousTrack').addEventListener('click', function () { diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 8af342deb9..3ade526569 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -173,15 +173,23 @@ import '../emby-input/emby-input'; } function addChapterMarks(range) { + range.chapterNames = []; range.chapterFractions = []; - if (range.getChapterFractions) { - range.chapterFractions = range.getChapterFractions(); + if (range.getChapterNamesAndFractions) { + [range.chapterNames, range.chapterFractions] = range.getChapterNamesAndFractions(); } - const htmlToInsert = ''; + function htmlToInsert(chapterName) { + let classChapterName = ''; + if (typeof chapterName === 'string' && chapterName.length) { + // limit the class length in case the name contains half a novel + classChapterName = `scm-${chapterName.substring(0, 100).toLowerCase().replace(' ', '-')}`; + } + return ``; + } - range.chapterFractions.forEach(() => { - range.chapterMarkContainerElement.insertAdjacentHTML('beforeend', htmlToInsert); + range.chapterNames.forEach(chapterName => { + range.chapterMarkContainerElement.insertAdjacentHTML('beforeend', htmlToInsert(chapterName || '')); }); range.chapterMarkElements = range.chapterMarkContainerElement.querySelectorAll('.sliderChapterMark');