fix: usage: datepicker item disabled issue
This commit is contained in:
@@ -35,6 +35,8 @@ const useStyles = createStyles(({ css }) => ({
|
|||||||
white-space: pre-line;
|
white-space: pre-line;
|
||||||
span {
|
span {
|
||||||
color: var(--ant-color-text);
|
color: var(--ant-color-text);
|
||||||
|
display: flex;
|
||||||
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
}));
|
}));
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ const ExportData: React.FC<{
|
|||||||
} = useUsageData<{
|
} = useUsageData<{
|
||||||
items: TableRow[];
|
items: TableRow[];
|
||||||
}>({
|
}>({
|
||||||
url: DASHBOARD_USAGE_API
|
url: DASHBOARD_USAGE_API,
|
||||||
|
disabledDate: false
|
||||||
});
|
});
|
||||||
|
|
||||||
const exportTableColumns: TableColumnType[] = [
|
const exportTableColumns: TableColumnType[] = [
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ const UsageInner: FC<{ paddingRight: string }> = ({ paddingRight }) => {
|
|||||||
const { usageData, handleOnCancel, handleExport, FilterBar, init, open } =
|
const { usageData, handleOnCancel, handleExport, FilterBar, init, open } =
|
||||||
useUsageData<DashboardUsageData>({
|
useUsageData<DashboardUsageData>({
|
||||||
url: DASHBOARD_STATS_API,
|
url: DASHBOARD_STATS_API,
|
||||||
|
disabledDate: true,
|
||||||
defaultData: {
|
defaultData: {
|
||||||
api_request_history: [],
|
api_request_history: [],
|
||||||
completion_token_history: [],
|
completion_token_history: [],
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ const legendData = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
const RequestTokenInner: React.FC<RequestTokenInnerProps> = (props) => {
|
const RequestTokenInner: React.FC<RequestTokenInnerProps> = (props) => {
|
||||||
const { requestData, tokenData, xAxisData, onExport } = props;
|
const { requestData, tokenData, xAxisData } = props;
|
||||||
|
|
||||||
const totalData = useMemo(() => {
|
const totalData = useMemo(() => {
|
||||||
const data: Record<string, number> = {
|
const data: Record<string, number> = {
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ interface RequestTokenData {
|
|||||||
xAxisData: string[];
|
xAxisData: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TopUserData {
|
const DefaultDateConfig = {
|
||||||
userData: { name: string; value: number }[];
|
maxRange: 60,
|
||||||
topUserList: string[];
|
defaultRange: 30
|
||||||
}
|
};
|
||||||
|
|
||||||
const getLast30Days = () => {
|
const getLast30Days = () => {
|
||||||
const dates: string[] = [];
|
const dates: string[] = [];
|
||||||
@@ -94,14 +94,16 @@ const generateData = (dateRage: string[], valueMap: Map<string, number>) => {
|
|||||||
export default function useUseageData<T>(config: {
|
export default function useUseageData<T>(config: {
|
||||||
url: string;
|
url: string;
|
||||||
defaultData?: T;
|
defaultData?: T;
|
||||||
|
disabledDate?: boolean;
|
||||||
}) {
|
}) {
|
||||||
const { url, defaultData } = config || {};
|
const { url, defaultData, disabledDate = false } = config || {};
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
const { TagRender } = useSelectRender({
|
const { TagRender } = useSelectRender({
|
||||||
maxTagWidth: 100
|
maxTagWidth: 100
|
||||||
});
|
});
|
||||||
const { disabledRangeDaysDate, rangePresets } = useRangePickerPreset({
|
const { disabledRangeDaysDate, rangePresets } = useRangePickerPreset({
|
||||||
range: 60
|
range: DefaultDateConfig.maxRange,
|
||||||
|
disabledDate: disabledDate
|
||||||
});
|
});
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
const [result, setResult] = useState<{
|
const [result, setResult] = useState<{
|
||||||
@@ -109,7 +111,9 @@ export default function useUseageData<T>(config: {
|
|||||||
end_date?: string;
|
end_date?: string;
|
||||||
data: T;
|
data: T;
|
||||||
}>({
|
}>({
|
||||||
start_date: dayjs().subtract(30, 'days').format('YYYY-MM-DD'),
|
start_date: dayjs()
|
||||||
|
.subtract(DefaultDateConfig.defaultRange, 'days')
|
||||||
|
.format('YYYY-MM-DD'),
|
||||||
end_date: dayjs().format('YYYY-MM-DD'),
|
end_date: dayjs().format('YYYY-MM-DD'),
|
||||||
data: defaultData as T
|
data: defaultData as T
|
||||||
});
|
});
|
||||||
@@ -120,7 +124,9 @@ export default function useUseageData<T>(config: {
|
|||||||
model_ids: number[];
|
model_ids: number[];
|
||||||
user_ids: number[];
|
user_ids: number[];
|
||||||
}>({
|
}>({
|
||||||
start_date: dayjs().subtract(30, 'days').format('YYYY-MM-DD'),
|
start_date: dayjs()
|
||||||
|
.subtract(DefaultDateConfig.defaultRange, 'days')
|
||||||
|
.format('YYYY-MM-DD'),
|
||||||
end_date: dayjs().format('YYYY-MM-DD'),
|
end_date: dayjs().format('YYYY-MM-DD'),
|
||||||
model_ids: [],
|
model_ids: [],
|
||||||
user_ids: []
|
user_ids: []
|
||||||
@@ -318,11 +324,15 @@ export default function useUseageData<T>(config: {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const FilterBar = () => {
|
const FilterBar = () => {
|
||||||
|
const filterOptions = (inputValue: any, option: any) => {
|
||||||
|
return option.label?.toLowerCase().includes(inputValue.toLowerCase());
|
||||||
|
};
|
||||||
return (
|
return (
|
||||||
<FilterWrapper>
|
<FilterWrapper>
|
||||||
<div className="selection">
|
<div className="selection">
|
||||||
<DatePicker.RangePicker
|
<DatePicker.RangePicker
|
||||||
defaultValue={[dayjs().add(-30, 'd'), dayjs()]}
|
maxDate={dayjs()}
|
||||||
|
defaultValue={[dayjs().add(-29, 'd'), dayjs()]}
|
||||||
disabledDate={disabledRangeDaysDate}
|
disabledDate={disabledRangeDaysDate}
|
||||||
presets={rangePresets}
|
presets={rangePresets}
|
||||||
allowClear={false}
|
allowClear={false}
|
||||||
@@ -332,9 +342,11 @@ export default function useUseageData<T>(config: {
|
|||||||
></DatePicker.RangePicker>
|
></DatePicker.RangePicker>
|
||||||
<Select
|
<Select
|
||||||
allowClear
|
allowClear
|
||||||
|
showSearch
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
options={userList}
|
options={userList}
|
||||||
maxTagCount={1}
|
maxTagCount={1}
|
||||||
|
filterOption={filterOptions}
|
||||||
tagRender={TagRender}
|
tagRender={TagRender}
|
||||||
placeholder={intl.formatMessage({
|
placeholder={intl.formatMessage({
|
||||||
id: 'dashboard.usage.selectuser'
|
id: 'dashboard.usage.selectuser'
|
||||||
@@ -345,10 +357,12 @@ export default function useUseageData<T>(config: {
|
|||||||
></Select>
|
></Select>
|
||||||
<Select
|
<Select
|
||||||
allowClear
|
allowClear
|
||||||
|
showSearch
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
options={modelList}
|
options={modelList}
|
||||||
maxTagCount={1}
|
maxTagCount={1}
|
||||||
tagRender={TagRender}
|
tagRender={TagRender}
|
||||||
|
filterOption={filterOptions}
|
||||||
placeholder={intl.formatMessage({
|
placeholder={intl.formatMessage({
|
||||||
id: 'dashboard.usage.selectmodel'
|
id: 'dashboard.usage.selectmodel'
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import dayjs, { type Dayjs } from 'dayjs';
|
|||||||
|
|
||||||
interface RangePickerPreset {
|
interface RangePickerPreset {
|
||||||
range: number;
|
range: number;
|
||||||
|
disabledDate?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function useRangePickerPreset(options?: RangePickerPreset): {
|
export default function useRangePickerPreset(options?: RangePickerPreset): {
|
||||||
@@ -14,7 +15,7 @@ export default function useRangePickerPreset(options?: RangePickerPreset): {
|
|||||||
}[];
|
}[];
|
||||||
range: number;
|
range: number;
|
||||||
} {
|
} {
|
||||||
const { range = 60 } = options || {};
|
const { range = 60, disabledDate } = options || {};
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
|
||||||
const getYearMonth = (date: Dayjs) => date.year() * 12 + date.month();
|
const getYearMonth = (date: Dayjs) => date.year() * 12 + date.month();
|
||||||
@@ -23,9 +24,8 @@ export default function useRangePickerPreset(options?: RangePickerPreset): {
|
|||||||
current,
|
current,
|
||||||
{ from, type }
|
{ from, type }
|
||||||
) => {
|
) => {
|
||||||
// before 2025 is not allowed
|
if (!disabledDate) {
|
||||||
if (current.year() < 2025) {
|
return false;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (from) {
|
if (from) {
|
||||||
@@ -45,10 +45,9 @@ export default function useRangePickerPreset(options?: RangePickerPreset): {
|
|||||||
);
|
);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return Math.abs(current.diff(from, 'days')) > range;
|
return current.isBefore(minDate) || current.isAfter(maxDate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -58,19 +57,19 @@ export default function useRangePickerPreset(options?: RangePickerPreset): {
|
|||||||
}[] = [
|
}[] = [
|
||||||
{
|
{
|
||||||
label: intl.formatMessage({ id: 'dashboard.usage.datePicker.last7days' }),
|
label: intl.formatMessage({ id: 'dashboard.usage.datePicker.last7days' }),
|
||||||
value: [dayjs().add(-7, 'd'), dayjs()]
|
value: [dayjs().add(-6, 'd'), dayjs()]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: intl.formatMessage({
|
label: intl.formatMessage({
|
||||||
id: 'dashboard.usage.datePicker.last30days'
|
id: 'dashboard.usage.datePicker.last30days'
|
||||||
}),
|
}),
|
||||||
value: [dayjs().add(-30, 'd'), dayjs()]
|
value: [dayjs().add(-29, 'd'), dayjs()]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: intl.formatMessage({
|
label: intl.formatMessage({
|
||||||
id: 'dashboard.usage.datePicker.last60days'
|
id: 'dashboard.usage.datePicker.last60days'
|
||||||
}),
|
}),
|
||||||
value: [dayjs().add(-60, 'd'), dayjs()]
|
value: [dayjs().add(-59, 'd'), dayjs()]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user