support original date display and sort (#1488)

This commit is contained in:
jeffvli
2026-01-04 01:49:51 -08:00
parent e34d84deee
commit af055ab6dd
11 changed files with 164 additions and 26 deletions
@@ -10,9 +10,11 @@ import {
formatDateRelative,
formatHrDateTime,
} from '/@/renderer/utils/format';
import { SEPARATOR_STRING } from '/@/shared/api/utils';
import { Stack } from '/@/shared/components/stack/stack';
import { Text } from '/@/shared/components/text/text';
import { Tooltip } from '/@/shared/components/tooltip/tooltip';
import { TableColumn } from '/@/shared/types/types';
const getDateTooltipLabel = (utcString: string) => {
return (
@@ -54,6 +56,47 @@ export const AbsoluteDateColumn = (props: ItemTableListInnerColumn) => {
props.columns[props.columnIndex].id
];
if (props.type === TableColumn.RELEASE_DATE) {
const item = (props.data as (any | undefined)[])[props.rowIndex];
if (item && 'releaseDate' in item && item.releaseDate) {
const releaseDate = item.releaseDate;
const originalDate =
'originalDate' in item && item.originalDate && item.originalDate !== releaseDate
? item.originalDate
: null;
if (originalDate) {
const formattedOriginalDate = formatDateAbsoluteUTC(originalDate);
const formattedReleaseDate = formatDateAbsoluteUTC(releaseDate);
const displayText = `${formattedOriginalDate}${SEPARATOR_STRING}${formattedReleaseDate}`;
return (
<TableColumnTextContainer {...props}>
<Tooltip label={getDateTooltipLabel(releaseDate)} multiline={false}>
<span>{displayText}</span>
</Tooltip>
</TableColumnTextContainer>
);
}
if (typeof releaseDate === 'string' && releaseDate) {
return (
<TableColumnTextContainer {...props}>
<Tooltip label={getDateTooltipLabel(releaseDate)} multiline={false}>
<span>{formatDateAbsoluteUTC(releaseDate)}</span>
</Tooltip>
</TableColumnTextContainer>
);
}
}
if (row === null) {
return <ColumnNullFallback {...props} />;
}
return <ColumnSkeletonFixed {...props} />;
}
if (typeof row === 'string' && row) {
return (
<TableColumnTextContainer {...props}>
@@ -0,0 +1,41 @@
import {
ColumnNullFallback,
ColumnSkeletonFixed,
ItemTableListInnerColumn,
TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { SEPARATOR_STRING } from '/@/shared/api/utils';
export const YearColumn = (props: ItemTableListInnerColumn) => {
const item = (props.data as (any | undefined)[])[props.rowIndex];
if (item && 'releaseYear' in item && item.releaseYear !== null) {
const releaseYear = item.releaseYear;
const originalYear =
'originalYear' in item && item.originalYear !== null ? item.originalYear : null;
if (originalYear !== null && originalYear !== releaseYear) {
return (
<TableColumnTextContainer {...props}>
{originalYear}
{SEPARATOR_STRING}
{releaseYear}
</TableColumnTextContainer>
);
}
if (typeof releaseYear === 'number') {
return <TableColumnTextContainer {...props}>{releaseYear}</TableColumnTextContainer>;
}
}
const row: number | undefined = (props.data as (any | undefined)[])[props.rowIndex]?.[
props.columns[props.columnIndex].id
];
if (row === null) {
return <ColumnNullFallback {...props} />;
}
return <ColumnSkeletonFixed {...props} />;
};