diff --git a/dist/plex-meets-homeassistant.js b/dist/plex-meets-homeassistant.js index 5651bed..72c2807 100644 --- a/dist/plex-meets-homeassistant.js +++ b/dist/plex-meets-homeassistant.js @@ -20817,12 +20817,10 @@ class PlexMeetsHomeAssistantEditor extends HTMLElement { } this.libraryName.disabled = false; this.libraryName.value = this.config.libraryName; - let libraryType = ''; let libraryKey = ''; // eslint-disable-next-line consistent-return lodash.forEach(this.sections, section => { if (lodash.isEqual(section.title, this.libraryName.value)) { - libraryType = section.type; libraryKey = section.key; return false; } @@ -20864,50 +20862,34 @@ class PlexMeetsHomeAssistantEditor extends HTMLElement { this.config.displayType = ''; this.displayType.value = ''; } + let displayTypeIndex = 0; + if (this.config.displayType) { + lodash.forEach(types, (sectionType, sectionKey) => { + const key = sectionType.key.split('type=')[1]; + if (key === parseInt(this.config.displayType, 10)) { + displayTypeIndex = parseInt(sectionKey, 10); + } + }); + } + const sortFields = lodash.get(libraryData, `[0].Meta.Type[${displayTypeIndex}].Sort`); + if (!lodash.isNil(sortFields) && sortFields.length > 0) { + lodash.forEach(sortFields, (sortField) => { + sortItems.appendChild(addDropdownItem(sortField.key)); + }); + this.sort.style.display = 'block'; + this.sortOrder.style.display = 'block'; + } + else { + this.sort.style.display = 'none'; + this.sortOrder.style.display = 'none'; + this.config.sort = ''; + } } else { this.displayType.style.display = 'none'; this.config.displayType = ''; this.displayType.value = ''; } - if (lodash.isEqual(libraryType, 'show')) { - sortItems.appendChild(addDropdownItem('titleSort')); - sortItems.appendChild(addDropdownItem('title')); - sortItems.appendChild(addDropdownItem('year')); - sortItems.appendChild(addDropdownItem('originallyAvailableAt')); - sortItems.appendChild(addDropdownItem('rating')); - sortItems.appendChild(addDropdownItem('audienceRating')); - sortItems.appendChild(addDropdownItem('userRating')); - sortItems.appendChild(addDropdownItem('contentRating')); - sortItems.appendChild(addDropdownItem('unviewedLeafCount')); - sortItems.appendChild(addDropdownItem('episode.addedAt')); - sortItems.appendChild(addDropdownItem('addedAt')); - sortItems.appendChild(addDropdownItem('lastViewedAt')); - this.sort.style.display = 'block'; - this.sortOrder.style.display = 'block'; - } - else if (lodash.isEqual(libraryType, 'movie')) { - sortItems.appendChild(addDropdownItem('titleSort')); - sortItems.appendChild(addDropdownItem('title')); - sortItems.appendChild(addDropdownItem('originallyAvailableAt')); - sortItems.appendChild(addDropdownItem('rating')); - sortItems.appendChild(addDropdownItem('audienceRating')); - sortItems.appendChild(addDropdownItem('userRating')); - sortItems.appendChild(addDropdownItem('duration')); - sortItems.appendChild(addDropdownItem('viewOffset')); - sortItems.appendChild(addDropdownItem('viewCount')); - sortItems.appendChild(addDropdownItem('addedAt')); - sortItems.appendChild(addDropdownItem('lastViewedAt')); - sortItems.appendChild(addDropdownItem('mediaHeight')); - sortItems.appendChild(addDropdownItem('mediaBitrate')); - this.sort.style.display = 'block'; - this.sortOrder.style.display = 'block'; - } - else { - this.sort.style.display = 'none'; - this.sortOrder.style.display = 'none'; - this.config.sort = ''; - } if (lodash.isEmpty(this.config.sort)) { this.sort.value = ''; this.sortOrder.value = ''; diff --git a/src/editor.ts b/src/editor.ts index d23b9e8..fd71032 100644 --- a/src/editor.ts +++ b/src/editor.ts @@ -781,12 +781,10 @@ class PlexMeetsHomeAssistantEditor extends HTMLElement { this.libraryName.disabled = false; this.libraryName.value = this.config.libraryName; - let libraryType = ''; let libraryKey = ''; // eslint-disable-next-line consistent-return _.forEach(this.sections, section => { if (_.isEqual(section.title, this.libraryName.value)) { - libraryType = section.type; libraryKey = section.key; return false; } @@ -826,49 +824,34 @@ class PlexMeetsHomeAssistantEditor extends HTMLElement { this.config.displayType = ''; this.displayType.value = ''; } + + let displayTypeIndex = 0; + if (this.config.displayType) { + _.forEach(types, (sectionType: Record, sectionKey) => { + const key = sectionType.key.split('type=')[1]; + if (key === parseInt(this.config.displayType, 10)) { + displayTypeIndex = parseInt(sectionKey, 10); + } + }); + } + const sortFields = _.get(libraryData, `[0].Meta.Type[${displayTypeIndex}].Sort`); + if (!_.isNil(sortFields) && sortFields.length > 0) { + _.forEach(sortFields, (sortField: Record) => { + sortItems.appendChild(addDropdownItem(sortField.key)); + }); + this.sort.style.display = 'block'; + this.sortOrder.style.display = 'block'; + } else { + this.sort.style.display = 'none'; + this.sortOrder.style.display = 'none'; + this.config.sort = ''; + } } else { this.displayType.style.display = 'none'; this.config.displayType = ''; this.displayType.value = ''; } - if (_.isEqual(libraryType, 'show')) { - sortItems.appendChild(addDropdownItem('titleSort')); - sortItems.appendChild(addDropdownItem('title')); - sortItems.appendChild(addDropdownItem('year')); - sortItems.appendChild(addDropdownItem('originallyAvailableAt')); - sortItems.appendChild(addDropdownItem('rating')); - sortItems.appendChild(addDropdownItem('audienceRating')); - sortItems.appendChild(addDropdownItem('userRating')); - sortItems.appendChild(addDropdownItem('contentRating')); - sortItems.appendChild(addDropdownItem('unviewedLeafCount')); - sortItems.appendChild(addDropdownItem('episode.addedAt')); - sortItems.appendChild(addDropdownItem('addedAt')); - sortItems.appendChild(addDropdownItem('lastViewedAt')); - this.sort.style.display = 'block'; - this.sortOrder.style.display = 'block'; - } else if (_.isEqual(libraryType, 'movie')) { - sortItems.appendChild(addDropdownItem('titleSort')); - sortItems.appendChild(addDropdownItem('title')); - sortItems.appendChild(addDropdownItem('originallyAvailableAt')); - sortItems.appendChild(addDropdownItem('rating')); - sortItems.appendChild(addDropdownItem('audienceRating')); - sortItems.appendChild(addDropdownItem('userRating')); - sortItems.appendChild(addDropdownItem('duration')); - sortItems.appendChild(addDropdownItem('viewOffset')); - sortItems.appendChild(addDropdownItem('viewCount')); - sortItems.appendChild(addDropdownItem('addedAt')); - sortItems.appendChild(addDropdownItem('lastViewedAt')); - sortItems.appendChild(addDropdownItem('mediaHeight')); - sortItems.appendChild(addDropdownItem('mediaBitrate')); - this.sort.style.display = 'block'; - this.sortOrder.style.display = 'block'; - } else { - this.sort.style.display = 'none'; - this.sortOrder.style.display = 'none'; - this.config.sort = ''; - } - if (_.isEmpty(this.config.sort)) { this.sort.value = ''; this.sortOrder.value = '';