Expanded date fields (#2276)

* added missing date/year fields for other song references

* added year table column & sorting

* added navidrome track date view for grid, detail & table.

* update table column config

* Displays date & release date using formatPartialIsoDateUTC, and displays respective year field if no date present
added releaseYear player filter
Made fullscreen player show formatted date
fixed minor year/release year value mismatches
added subsonic date/year field to enable the fields in folder view for navidrome using subsonic year field

---------

Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
This commit is contained in:
ermmmwafle
2026-08-03 19:54:16 -07:00
committed by GitHub
parent fd9380a149
commit 64dc3c1bc2
30 changed files with 418 additions and 81 deletions
@@ -48,12 +48,14 @@ import { NumericColumn } from '/@/renderer/components/item-list/item-table-list/
import { PathColumn } from '/@/renderer/components/item-list/item-table-list/columns/path-column';
import { PlaylistReorderColumn } from '/@/renderer/components/item-list/item-table-list/columns/playlist-reorder-column';
import { RatingColumn } from '/@/renderer/components/item-list/item-table-list/columns/rating-column';
import { ReleaseYearColumn } from '/@/renderer/components/item-list/item-table-list/columns/release-year-column';
import { RowIndexColumn } from '/@/renderer/components/item-list/item-table-list/columns/row-index-column';
import { SizeColumn } from '/@/renderer/components/item-list/item-table-list/columns/size-column';
import { TextColumn } from '/@/renderer/components/item-list/item-table-list/columns/text-column';
import { TitleArtistColumn } from '/@/renderer/components/item-list/item-table-list/columns/title-artist-column';
import { TitleColumn } from '/@/renderer/components/item-list/item-table-list/columns/title-column';
import { TitleCombinedColumn } from '/@/renderer/components/item-list/item-table-list/columns/title-combined-column';
import { TrackDateColumn } from '/@/renderer/components/item-list/item-table-list/columns/track-date-column';
import { TrackNumberColumn } from '/@/renderer/components/item-list/item-table-list/columns/track-number-column';
import { YearColumn } from '/@/renderer/components/item-list/item-table-list/columns/year-column';
import { useItemDragDropState } from '/@/renderer/components/item-list/item-table-list/hooks/use-item-drag-drop-state';
@@ -248,6 +250,11 @@ const ItemTableListColumnBase = (props: ItemTableListColumn) => {
case TableColumn.COMPOSER:
return <ComposerColumn {...props} {...dragProps} controls={controls} type={type} />;
case TableColumn.DATE:
return (
<TrackDateColumn {...props} {...dragProps} controls={controls} type={type} />
);
case TableColumn.DATE_ADDED:
return <DateColumn {...props} {...dragProps} controls={controls} type={type} />;
@@ -281,6 +288,11 @@ const ItemTableListColumnBase = (props: ItemTableListColumn) => {
<AbsoluteDateColumn {...props} {...dragProps} controls={controls} type={type} />
);
case TableColumn.RELEASE_YEAR:
return (
<ReleaseYearColumn {...props} {...dragProps} controls={controls} type={type} />
);
case TableColumn.ROW_INDEX:
return <RowIndexColumn {...props} {...dragProps} controls={controls} type={type} />;
@@ -1268,6 +1280,9 @@ export const columnLabelMap: Record<TableColumn, ReactNode | string> = {
[TableColumn.COMPOSER]: i18n.t('table.config.label.composer', {
postProcess: 'upperCase',
}) as string,
[TableColumn.DATE]: i18n.t('table.column.date', {
postProcess: 'upperCase',
}) as string,
[TableColumn.DATE_ADDED]: i18n.t('table.column.dateAdded', {
postProcess: 'upperCase',
}) as string,
@@ -1304,6 +1319,9 @@ export const columnLabelMap: Record<TableColumn, ReactNode | string> = {
[TableColumn.RELEASE_DATE]: i18n.t('table.column.releaseDate', {
postProcess: 'upperCase',
}) as string,
[TableColumn.RELEASE_YEAR]: i18n.t('table.column.releaseYear', {
postProcess: 'upperCase',
}) as string,
[TableColumn.ROW_INDEX]: (
<Flex className={styles.headerIconWrapper}>
<Icon icon="hash" />
@@ -1339,7 +1357,7 @@ export const columnLabelMap: Record<TableColumn, ReactNode | string> = {
<Icon icon="star" />
</Flex>
),
[TableColumn.YEAR]: i18n.t('table.column.releaseYear', { postProcess: 'upperCase' }) as string,
[TableColumn.YEAR]: i18n.t('table.column.year', { postProcess: 'upperCase' }) as string,
};
export const ColumnNullFallback = (props: ItemTableListInnerColumn) => {