Skip to content

Commit 4bf306c

Browse files
committed
chore: fix message (#850)
1 parent 974c2ee commit 4bf306c

File tree

13 files changed

+104
-20
lines changed

13 files changed

+104
-20
lines changed

service/vspo-schedule/v2/web/public/locales/cn/schedule.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@
3535
"tabs": {
3636
"all": "全部",
3737
"allWithDate": "全部 ({{date}})"
38-
}
39-
}
38+
},
39+
"noLivestreams": "暂无直播计划,请查看前一天的安排。"
40+
}

service/vspo-schedule/v2/web/public/locales/en/schedule.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@
3535
"tabs": {
3636
"all": "All",
3737
"allWithDate": "All ({{date}})"
38-
}
39-
}
38+
},
39+
"noLivestreams": "No scheduled streams. Please check the previous day's schedule."
40+
}

service/vspo-schedule/v2/web/public/locales/ja/schedule.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@
3535
"tabs": {
3636
"all": "すべて",
3737
"allWithDate": "すべて ({{date}})"
38-
}
39-
}
38+
},
39+
"noLivestreams": "配信予定がありません、前日の予定をご覧ください。"
40+
}

service/vspo-schedule/v2/web/public/locales/ko/schedule.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@
3535
"tabs": {
3636
"all": "전체",
3737
"allWithDate": "전체 ({{date}})"
38-
}
39-
}
38+
},
39+
"noLivestreams": "예정된 방송이 없습니다. 전날 일정을 확인해주세요."
40+
}

service/vspo-schedule/v2/web/public/locales/tw/schedule.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@
3535
"tabs": {
3636
"all": "全部",
3737
"allWithDate": "全部 ({{date}})"
38-
}
39-
}
38+
},
39+
"noLivestreams": "沒有配信預定,請查看前一天的行程。"
40+
}

service/vspo-schedule/v2/web/src/features/clips/components/presenters/ClipSectionPresenter.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,17 @@ import {
1010
Grid,
1111
Typography,
1212
} from "@mui/material";
13-
import { styled } from "@mui/material/styles";
13+
import { styled, type Theme } from "@mui/material/styles";
1414
import { useTranslation } from "next-i18next";
1515
import type React from "react";
1616
import type { Clip } from "@/features/shared/domain";
1717
import { useVideoModalContext } from "@/hooks/video-modal";
1818

19+
const doubleBorderRadius = (theme: Theme) =>
20+
typeof theme.shape.borderRadius === "number"
21+
? theme.shape.borderRadius * 2
22+
: `calc(${theme.shape.borderRadius} * 2)`;
23+
1924
// Styled components
2025
const SectionTitle = styled(Typography)(({ theme }) => ({
2126
fontWeight: 700,
@@ -59,7 +64,7 @@ const SingleRowContainer = styled(Box)(({ theme }) => ({
5964
// Modern card style
6065
const ModernCard = styled(Card)(({ theme }) => ({
6166
overflow: "hidden",
62-
borderRadius: theme.shape.borderRadius * 2,
67+
borderRadius: doubleBorderRadius(theme),
6368
transition: "transform 0.3s ease, box-shadow 0.3s ease",
6469
height: "100%",
6570
"&:hover": {
@@ -88,7 +93,7 @@ const CardOverlay = styled(Box)(({ theme }) => ({
8893

8994
const ShortsCard = styled(Card)(({ theme }) => ({
9095
overflow: "hidden",
91-
borderRadius: theme.shape.borderRadius * 2,
96+
borderRadius: doubleBorderRadius(theme),
9297
height: "100%",
9398
aspectRatio: "9/16",
9499
transition: "transform 0.3s ease, box-shadow 0.3s ease",

service/vspo-schedule/v2/web/src/features/multiview/components/presenters/LayoutSelectorPresenter.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,22 @@ import {
1818
styled,
1919
useMediaQuery,
2020
useTheme,
21+
type Theme,
2122
} from "@mui/material";
2223
import { useTranslation } from "next-i18next";
2324
import type { TFunction } from "next-i18next";
2425
import React from "react";
2526
import { LayoutType } from "../../hooks/useMultiviewLayout";
2627

28+
const scaledBorderRadius = (theme: Theme, scale: number) =>
29+
typeof theme.shape.borderRadius === "number"
30+
? theme.shape.borderRadius * scale
31+
: `calc(${theme.shape.borderRadius} * ${scale})`;
32+
2733
const SelectorContainer = styled(Paper)(({ theme }) => ({
2834
padding: theme.spacing(2.5),
2935
backgroundColor: "white",
30-
borderRadius: theme.shape.borderRadius * 1.5,
36+
borderRadius: scaledBorderRadius(theme, 1.5),
3137
boxShadow: theme.shadows[2],
3238
border: `1px solid ${theme.palette.divider}`,
3339
[theme.breakpoints.down("md")]: {
@@ -59,7 +65,7 @@ const LayoutButton = styled(IconButton, {
5965
border: `2px solid ${
6066
isSelected ? theme.palette.primary.main : theme.palette.divider
6167
}`,
62-
borderRadius: theme.shape.borderRadius * 1.5,
68+
borderRadius: scaledBorderRadius(theme, 1.5),
6369
backgroundColor: isSelected
6470
? alpha(theme.palette.primary.main, 0.08)
6571
: "transparent",

service/vspo-schedule/v2/web/src/features/multiview/components/presenters/MultiviewGridPresenter.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
styled,
77
useMediaQuery,
88
useTheme,
9+
type Theme,
910
} from "@mui/material";
1011
import { useTranslation } from "next-i18next";
1112
import React, { useState, useCallback, useRef, useEffect } from "react";
@@ -15,12 +16,17 @@ import "react-resizable/css/styles.css";
1516
import { MultiviewLayout } from "../../hooks/useMultiviewLayout";
1617
import { VideoPlayer } from "../containers";
1718

19+
const scaledBorderRadius = (theme: Theme, scale: number) =>
20+
typeof theme.shape.borderRadius === "number"
21+
? theme.shape.borderRadius * scale
22+
: `calc(${theme.shape.borderRadius} * ${scale})`;
23+
1824
const GridContainer = styled(Paper)<{ isFullscreen?: boolean }>(
1925
({ theme, isFullscreen }) => ({
2026
minHeight: isFullscreen ? "100vh" : "600px",
2127
padding: theme.spacing(isFullscreen ? 0 : 1),
2228
backgroundColor: "white",
23-
borderRadius: isFullscreen ? 0 : theme.shape.borderRadius * 2,
29+
borderRadius: isFullscreen ? 0 : scaledBorderRadius(theme, 2),
2430
boxShadow: isFullscreen ? "none" : theme.shadows[4],
2531
border: isFullscreen ? "none" : `1px solid ${theme.palette.divider}`,
2632
position: isFullscreen ? "fixed" : "relative",

service/vspo-schedule/v2/web/src/features/multiview/pages/MultiviewPage/presenter.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
styled,
2424
useMediaQuery,
2525
useTheme,
26+
type Theme,
2627
} from "@mui/material";
2728
import { useTranslation } from "next-i18next";
2829
import React from "react";
@@ -36,6 +37,11 @@ import {
3637
} from "../../components/containers";
3738
import { LayoutType, useMultiviewLayout } from "../../hooks/useMultiviewLayout";
3839

40+
const scaledBorderRadius = (theme: Theme, scale: number) =>
41+
typeof theme.shape.borderRadius === "number"
42+
? theme.shape.borderRadius * scale
43+
: `calc(${theme.shape.borderRadius} * ${scale})`;
44+
3945
// Styled components
4046
const HeaderSection = styled(Paper)(({ theme }) => ({
4147
padding: theme.spacing(2),
@@ -87,7 +93,7 @@ const ControlsPanel = styled(Paper)<{ collapsed?: boolean }>(
8793
backgroundColor: "rgba(255, 255, 255, 0.95)",
8894
backdropFilter: "blur(10px)",
8995
boxShadow: theme.shadows[8],
90-
borderRadius: theme.shape.borderRadius * 2,
96+
borderRadius: scaledBorderRadius(theme, 2),
9197
border: `1px solid ${theme.palette.grey[300]}`,
9298
zIndex: 1100,
9399
transition: theme.transitions.create(["right", "opacity"], {

service/vspo-schedule/v2/web/src/features/schedule/pages/ScheduleStatus/components/LivestreamContent/presenter.tsx

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ export const LivestreamContentPresenter: React.FC<LivestreamContentProps> = ({
8282
livestreamsByDate,
8383
timeZone,
8484
);
85+
const hasLivestreams = Object.keys(livestreamsByTimeBlock).length > 0;
86+
const selectedDate =
87+
typeof router.query.date === "string"
88+
? router.query.date
89+
: format(utcToZonedTime(new Date(), timeZone), "yyyy-MM-dd");
8590

8691
const navigateToDate = (date: string, daysToAdd: number) => {
8792
const currentDate = new Date(date);
@@ -101,6 +106,47 @@ export const LivestreamContentPresenter: React.FC<LivestreamContentProps> = ({
101106
);
102107
};
103108

109+
if (!hasLivestreams) {
110+
return (
111+
<ContentSection>
112+
<DateHeader>
113+
<Typography
114+
variant="h5"
115+
sx={(theme) => ({
116+
fontWeight: 600,
117+
color: theme.vars.palette.text.primary,
118+
})}
119+
>
120+
{formatDate(selectedDate, "MM/dd (EEE)", { timeZone })}
121+
</Typography>
122+
<DateNavigation>
123+
<NavButton
124+
size="small"
125+
variant="outlined"
126+
onClick={() => navigateToDate(selectedDate, -1)}
127+
startIcon={<ChevronLeftIcon fontSize="small" />}
128+
>
129+
{t("navigation.previousDay")}
130+
</NavButton>
131+
<NavButton
132+
size="small"
133+
variant="outlined"
134+
onClick={() => navigateToDate(selectedDate, 1)}
135+
endIcon={<ChevronRightIcon fontSize="small" />}
136+
>
137+
{t("navigation.nextDay")}
138+
</NavButton>
139+
</DateNavigation>
140+
</DateHeader>
141+
<Box sx={{ px: 2, py: 1 }}>
142+
<Typography variant="body1" color="text.secondary">
143+
{t("noLivestreams")}
144+
</Typography>
145+
</Box>
146+
</ContentSection>
147+
);
148+
}
149+
104150
return (
105151
<Box>
106152
{Object.entries(livestreamsByTimeBlock).map(([date, timeBlocks]) => (

0 commit comments

Comments
 (0)