diff --git a/devfront/src/features/dashboard/DashboardPage.tsx b/devfront/src/features/dashboard/DashboardPage.tsx index 468cd347..70062067 100644 --- a/devfront/src/features/dashboard/DashboardPage.tsx +++ b/devfront/src/features/dashboard/DashboardPage.tsx @@ -139,13 +139,12 @@ function summarizeSeries(rows: RPUsageDailyMetric[]): SeriesSummary[] { ); bySeries.set(key, current); } - return Array.from(bySeries.values()) - .sort( - (left, right) => - right.loginRequests + - right.otherRequests - - (left.loginRequests + left.otherRequests), - ); + return Array.from(bySeries.values()).sort( + (left, right) => + right.loginRequests + + right.otherRequests - + (left.loginRequests + left.otherRequests), + ); } function buildMultiLineSeries(rows: RPUsageDailyMetric[]): MultiLineSeries[] { @@ -427,40 +426,39 @@ function RPUsageMixedChart({
- - {t("ui.dev.dashboard.chart.x_axis", "X축: 기간")} - - - {t("ui.dev.dashboard.chart.y_axis", "Y축: 로그인 요청 수")} - + {t("ui.dev.dashboard.chart.x_axis", "X축: 기간")} + {t("ui.dev.dashboard.chart.y_axis", "Y축: 로그인 요청 수")}
{multiLinePoints && multiLinePoints.length > 0 ? (
- {multiLinePoints.map((item) => ( -
- - {item.clientLabel} - {seriesByKey.get(item.key) ? ( - - {t( - "ui.dev.dashboard.chart.series", - "로그인 {{login}} / 사용자 {{subjects}}", - { - login: seriesByKey.get(item.key)!.loginRequests.toLocaleString(), - subjects: seriesByKey.get(item.key)!.uniqueSubjects.toLocaleString(), - }, - )} - - ) : null} -
- ))} + {multiLinePoints.map((item) => { + const seriesItem = seriesByKey.get(item.key); + return ( +
+ + {item.clientLabel} + {seriesItem ? ( + + {t( + "ui.dev.dashboard.chart.series", + "로그인 {{login}} / 사용자 {{subjects}}", + { + login: seriesItem.loginRequests.toLocaleString(), + subjects: seriesItem.uniqueSubjects.toLocaleString(), + }, + )} + + ) : null} +
+ ); + })}
) : topSeries.length > 0 ? (
@@ -498,10 +496,7 @@ function DashboardPage() { const [period, setPeriod] = useState("day"); const [selectedClientIds, setSelectedClientIds] = useState([]); const usageDays = period === "day" ? 14 : period === "week" ? 84 : 90; - const { - data: requestStatus, - isLoading: isLoadingRequestStatus, - } = useQuery({ + const { data: requestStatus, isLoading: isLoadingRequestStatus } = useQuery({ queryKey: ["developer-request", tenantId], queryFn: () => fetchDeveloperRequestStatus(tenantId), enabled: hasAccessToken && role === "user", @@ -625,10 +620,7 @@ function DashboardPage() { setSelectedClientIds([]); }; - if ( - (role === "user" || role === "tenant_member") && - isLoadingRequestStatus - ) { + if ((role === "user" || role === "tenant_member") && isLoadingRequestStatus) { return (
{t("ui.common.loading", "Loading...")} @@ -672,14 +664,8 @@ function DashboardPage() { onClick={() => navigate("/developer-requests")} > {isDeveloperRequestPending - ? t( - "ui.dev.nav.developer_request", - "개발자 권한 신청", - ) - : t( - "ui.dev.welcome.btn_request", - "개발자 등록 신청하기", - )} + ? t("ui.dev.nav.developer_request", "개발자 권한 신청") + : t("ui.dev.welcome.btn_request", "개발자 등록 신청하기")} )}
diff --git a/locales/en.toml b/locales/en.toml index 648e1126..d5dd34d8 100644 --- a/locales/en.toml +++ b/locales/en.toml @@ -553,6 +553,10 @@ openid = "Openid" profile = "Profile" [msg.dev.dashboard] +access_denied = "Overview is available only to users with developer access." +access_denied_detail = "Submit a request on the developer access page and wait for approval." +access_pending = "Your developer access request is under review." +access_pending_detail = "You can use the overview and developer features after a super admin approves it." description = "Review RP composition and authentication operations in one place." [msg.dev.dashboard.hero] @@ -2210,21 +2214,21 @@ registry = "RP registry" rp_synced = "RP registry synced" [ui.dev.dashboard.distribution] -headless = "Headless Login" +headless_hint = "{{count}} with Headless Login enabled" pkce = "PKCE" private = "Server side App" title = "Application Distribution" [ui.dev.dashboard.chart] +x_axis = "X-axis: Period" +y_axis = "Y-axis: Login requests" aria = "RP request overview" filter_all = "All" -login_requests = "Login requests" -other_requests = "Other requests" period_day = "Day" period_month = "Month" period_week = "Week" -series = "Login {{login}} / Other {{other}} / Users {{subjects}}" -title = "Login and other requests by application" +series = "Login {{login}} / Users {{subjects}}" +title = "Login requests by application" [ui.dev.dashboard.next] subtitle = "Ship the RP controls" @@ -2267,6 +2271,7 @@ plane = "Dev Plane" subtitle = "Manage your applications" [ui.dev.nav] +overview = "Overview" clients = "Connected Application" logout = "Logout" developer_request = "Developer Access Request" diff --git a/locales/ko.toml b/locales/ko.toml index f4396f76..440b0d02 100644 --- a/locales/ko.toml +++ b/locales/ko.toml @@ -405,6 +405,7 @@ pending = "준비 중" success = "성공" [ui.dev.nav] +overview = "개요" clients = "연동 앱" logout = "로그아웃" developer_request = "개발자 권한 신청" @@ -1044,6 +1045,10 @@ openid = "OIDC 인증 필수 스코프" profile = "기본 프로필 정보 접근" [msg.dev.dashboard] +access_denied = "개요는 개발자 권한이 있어야 볼 수 있습니다." +access_denied_detail = "개발자 권한 신청 페이지에서 신청을 등록한 뒤 승인을 받아주세요." +access_pending = "개발자 권한 신청을 검토 중입니다." +access_pending_detail = "super admin이 승인하면 개요와 개발자 기능을 사용할 수 있습니다." description = "연동 앱 구성과 인증 운영 지표를 한 곳에서 확인합니다." [msg.dev.dashboard.hero] @@ -2672,21 +2677,21 @@ registry = "RP registry" rp_synced = "RP registry synced" [ui.dev.dashboard.distribution] -headless = "Headless Login" +headless_hint = "이 중 Headless Login 사용 {{count}}" pkce = "PKCE" private = "Server side App" title = "애플리케이션 구성 요약" [ui.dev.dashboard.chart] +x_axis = "X축: 기간" +y_axis = "Y축: 로그인 요청 수" aria = "RP 요청 현황" filter_all = "전체" -login_requests = "로그인 요청" -other_requests = "기타 요청" period_day = "일" period_month = "월" period_week = "주" -series = "로그인 {{login}} / 기타 {{other}} / 사용자 {{subjects}}" -title = "애플리케이션별 로그인요청/기타 요청 현황" +series = "로그인 {{login}} / 사용자 {{subjects}}" +title = "애플리케이션별 로그인 요청 현황" [ui.dev.dashboard.next] subtitle = "Ship the RP controls" diff --git a/locales/template.toml b/locales/template.toml index f82577aa..0d25ebd8 100644 --- a/locales/template.toml +++ b/locales/template.toml @@ -908,6 +908,10 @@ openid = "" profile = "" [msg.dev.dashboard] +access_denied = "" +access_denied_detail = "" +access_pending = "" +access_pending_detail = "" description = "" [msg.dev.dashboard.hero] @@ -2551,16 +2555,16 @@ registry = "" rp_synced = "" [ui.dev.dashboard.distribution] -headless = "" +headless_hint = "" pkce = "" private = "" title = "" [ui.dev.dashboard.chart] +x_axis = "" +y_axis = "" aria = "" filter_all = "" -login_requests = "" -other_requests = "" period_day = "" period_month = "" period_week = "" @@ -2608,6 +2612,7 @@ plane = "" subtitle = "" [ui.dev.nav] +overview = "" clients = "" logout = ""