Skip to content

Commit

Permalink
Merge pull request #20 from Sports-day/feature/bare-minimum-24apr
Browse files Browse the repository at this point in the history
Feature/bare minimum 24apr
  • Loading branch information
1nayu authored Apr 21, 2024
2 parents 07d9134 + 83f21ee commit 7c75fb4
Show file tree
Hide file tree
Showing 18 changed files with 310 additions and 175 deletions.
11 changes: 3 additions & 8 deletions app/(auth)/login/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import {Button, Stack, Typography} from "@mui/material";
import LoginButton from "@/components/auth/LoginButton";
import Image from "next/image";
import WiderLogo from "@/components/svg/wider";
import Link from "next/link";
import PrivacyPolicyDrawer from "@/components/layout/privacyPolicyDrawer";

export default function Login() {
return (
Expand All @@ -10,14 +12,7 @@ export default function Login() {
<Image src={"/logo/logo_admin.png"} height={"24"} width={"302"} alt={"SPORTSDAY Admin"}/>
<Typography pb={3} fontSize={"14px"} fontWeight={"600"} color={"#EFF0F8"}>球技大会の進行管理アプリケーション</Typography>
<LoginButton/>
<Button
variant="contained"
color="primary"
sx={{py:1.5, width:"100%"}}
disableElevation
>
プライバシーポリシー
</Button>
<PrivacyPolicyDrawer/>
<Typography fontSize={"13px"} fontWeight={"400"} color={"#9aa6e5"}>SPORTSDAYを使うにはCookieが必要です</Typography>
<Button>
<Stack direction={"row"} spacing={0.5}>
Expand Down
12 changes: 10 additions & 2 deletions app/(authenticated)/league/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
import {Stack, Typography} from "@mui/material";
import {Breadcrumbs, Link, Stack, Typography} from "@mui/material";
import CardBackground from "@/components/layout/cardBackground";
import LeagueDnd from "@/components/league/leagueDnd";

export default function LeagueTestPage() {
return (
<Stack spacing={2} mx={2} my={3}>
<Typography pl={2} fontWeight={"600"}>リーグを編成・管理する</Typography>
<Breadcrumbs aria-label="breadcrumb" sx={{pl:2}}>
<Link underline="hover" color="inherit" href="/">
管理者のダッシュボード
</Link>
<Link underline="hover" color="inherit" href="/league">
リーグ管理
</Link>
<Typography color="text.primary">競技名</Typography>
</Breadcrumbs>
<CardBackground title={"どの競技のリーグを管理しますか?"}>
<LeagueDnd/>
</CardBackground>
Expand Down
9 changes: 7 additions & 2 deletions app/(authenticated)/league/page.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import {Stack, Grid, Typography} from "@mui/material";
import {Stack, Grid, Typography, Link, Breadcrumbs} from "@mui/material";
import CardBackground from "@/components/layout/cardBackground";
import CardLarge from "@/components/layout/cardLarge";
import {ButtonLarge} from "@/components/layout/buttonLarge";

export default function LeaguePage() {
return (
<Stack spacing={2} mx={2} my={3}>
<Typography pl={2} fontWeight={"600"}>リーグを編成・管理する</Typography>
<Breadcrumbs aria-label="breadcrumb" sx={{pl:2}}>
<Link underline="hover" color="inherit" href="/">
管理者のダッシュボード
</Link>
<Typography color="text.primary">リーグ管理</Typography>
</Breadcrumbs>
<CardBackground title={"どの競技のリーグを管理しますか?"}>
<Grid container spacing={1}>
<ButtonLarge img={"a"}>
Expand Down
6 changes: 4 additions & 2 deletions app/(authenticated)/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Grid, Stack, Typography} from "@mui/material";
import {Breadcrumbs, Grid, Link, Stack, Typography} from "@mui/material";
import CardBackground from "@/components/layout/cardBackground";
import {ButtonLarge} from "@/components/layout/buttonLarge";
import CardLarge from "@/components/layout/cardLarge";
Expand All @@ -7,7 +7,9 @@ import CardList from "@/components/layout/cardList";
export default function Home() {
return (
<Stack spacing={2} mx={2} my={3}>
<Typography pl={2} fontWeight={"600"}>何を管理しますか?</Typography>
<Breadcrumbs aria-label="breadcrumb" sx={{pl:2}}>
<Typography color="text.primary">管理者のダッシュボード</Typography>
</Breadcrumbs>
<CardBackground title={"競技を選ぶ"} button={"競技を作成・編集する"} link={"users"}>
<Grid container spacing={1}>
<ButtonLarge img={"a"}>
Expand Down
40 changes: 40 additions & 0 deletions app/(authenticated)/sports/[id]/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import CardBackground from "@/components/layout/cardBackground";
import {SportInfoField} from "@/components/sports/sportInfoField";
import {Accordion, AccordionSummary, AccordionDetails, Stack, Grid, Link, Typography, Breadcrumbs} from "@mui/material";
import {ButtonLarge} from "@/components/layout/buttonLarge";
import {HiChevronDown} from "react-icons/hi2";

export default function SportPage() {
return(
<Stack spacing={1} mx={2} my={3}>
<Breadcrumbs aria-label="breadcrumb" sx={{pl:2}}>
<Link underline="hover" color="inherit" href="/">
管理者のダッシュボード
</Link>
<Link underline="hover" color="inherit" href="/sports">
競技管理
</Link>
<Typography color="text.primary">競技名</Typography>
</Breadcrumbs>
<CardBackground title={"競技名"}>
<Accordion sx={{backgroundColor:"primary.main", color:"secondary.main", borderRadius:"10px"}}>
<AccordionSummary
aria-controls="panel-content"
id="panel-header"
>
<Typography>詳細を見る・編集する</Typography>
</AccordionSummary>
<AccordionDetails>
<SportInfoField/>
</AccordionDetails>
</Accordion>
</CardBackground>
<CardBackground title={"リーグ一覧"} button={"編集"}>
<Grid container spacing={1}>
<ButtonLarge>Aリーグ</ButtonLarge>
<ButtonLarge>Bリーグ</ButtonLarge>
</Grid>
</CardBackground>
</Stack>
)
}
9 changes: 7 additions & 2 deletions app/(authenticated)/sports/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {Grid, Stack, Typography} from "@mui/material";
import {Breadcrumbs, Grid, Link, Stack, Typography} from "@mui/material";
import CardBackground from "@/components/layout/cardBackground";
import CardLarge from "@/components/layout/cardLarge";
import {ButtonLarge} from "@/components/layout/buttonLarge";
Expand All @@ -7,7 +7,12 @@ import {SportInfoField} from "@/components/sports/sportInfoField";
export default function SportsPage() {
return (
<Stack spacing={2} mx={2} my={3}>
<Typography pl={2} fontWeight={"600"}>競技を作成・編集する</Typography>
<Breadcrumbs aria-label="breadcrumb" sx={{pl:2}}>
<Link underline="hover" color="inherit" href="/">
管理者のダッシュボード
</Link>
<Typography color="text.primary">競技管理</Typography>
</Breadcrumbs>
<CardBackground title={"競技一覧"}>
<Grid container spacing={1}>
<ButtonLarge img={"a"}>
Expand Down
19 changes: 19 additions & 0 deletions app/(authenticated)/teams/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import {Breadcrumbs, Link, Stack, Typography} from "@mui/material";
import CardBackground from "@/components/layout/cardBackground";
import TeamsAgGrid from "@/components/teams/teamsTable";

export default function TeamPage() {
return (
<Stack spacing={1} mx={2} my={3}>
<Breadcrumbs aria-label="breadcrumb" sx={{pl:2}}>
<Link underline="hover" color="inherit" href="/">
管理者のダッシュボード
</Link>
<Typography color="text.primary">チーム管理</Typography>
</Breadcrumbs>
<CardBackground title={"すべてのチーム"} button={"CSVで一括作成"}>
<TeamsAgGrid/>
</CardBackground>
</Stack>
)
}
11 changes: 8 additions & 3 deletions app/(authenticated)/tournament/page.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
import {Stack, Grid, Typography} from "@mui/material";
import {Stack, Grid, Typography, Link, Breadcrumbs} from "@mui/material";
import CardBackground from "@/components/layout/cardBackground";
import CardLarge from "@/components/layout/cardLarge";
import {ButtonLarge} from "@/components/layout/buttonLarge";

export default function LeaguePage() {
return (
<Stack spacing={2} mx={2} my={3}>
<Typography pl={2} fontWeight={"600"}>リーグを編成・管理する</Typography>
<CardBackground title={"どの競技のトーナメントを管理しますか?"}>
<Breadcrumbs aria-label="breadcrumb" sx={{pl:2}}>
<Link underline="hover" color="inherit" href="/">
管理者のダッシュボード
</Link>
<Typography color="text.primary">トーナメント管理</Typography>
</Breadcrumbs>
<CardBackground title={"どの競技のトーナメントを管理しますか?"}>
<Grid container spacing={1}>
<ButtonLarge img={"a"}>
フットサル
Expand Down
5 changes: 2 additions & 3 deletions app/(authenticated)/users/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {Stack, Breadcrumbs, Button, Link, Typography, Card} from "@mui/material";
import {Stack, Breadcrumbs, Link, Typography} from "@mui/material";
import CardBackground from "@/components/layout/cardBackground";
import UsersTable from "@/components/users/usersTable";
import UsersAgGrid from "@/app/(authenticated)/users/usersAgGrid";
import UsersAgGrid from "@/components/users/usersAgGrid";

export default function UsersPage() {
return (
Expand Down
2 changes: 1 addition & 1 deletion components/layout/cardBackground.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ type CardProps = {
const CardBackground: React.FC<CardProps> = ({ title, button, link, children }) => {
return (
<>
<Card raised sx={{py:2, px:2}}>
<Card sx={{py:2, px:2}}>
<Stack pb={2} spacing={1} direction={"row"} justifyContent={"flex-start"} alignItems="center">
{title && <Typography color={"primary.light"}>{title}</Typography>}
{button && <Button variant={"contained"} href={link}>{button}</Button>}
Expand Down
2 changes: 1 addition & 1 deletion components/layout/navigation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const Navigation = () => {
position="fixed"
sx={{
zIndex: (theme) => theme.zIndex.drawer + 1,
background:"rgba(62,78,179, 0.9)",
background:"rgba(62,78,179,0.8)",
backdropFilter: 'blur(4px)',
}}>
<Toolbar>
Expand Down
140 changes: 140 additions & 0 deletions components/layout/privacyPolicyDrawer.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
'use client'
import {Container, Button, Card, Stack, Typography, AppBar, Box, SwipeableDrawer, Divider} from "@mui/material";
import React from 'react';
import {HiXMark} from "react-icons/hi2";
import WiderLogo from "@/components/svg/wider";

const PrivacyPolicyDrawer = () => {
const [open, setOpen] = React.useState(false);

const toggleDrawer = (newOpen: boolean) => () => {
setOpen(newOpen);
};

const DrawerList = (
<>
<AppBar sx={{position:"fixed", zIndex:"999"}}>
<Box
sx={{
width: '100vw', height: 'auto', overflow: 'scrollable', my:1.5
}}
>
<Container maxWidth={"xl"}>
<Button
sx={{width:"100%"}}
color="inherit"
onClick={toggleDrawer(false)}
aria-label="close"
startIcon={<HiXMark/>}
>
閉じる
</Button>
</Container>
</Box>
</AppBar>
<Box
sx={{
width: '100vw', height: 'auto', overflow: 'scrollable', mt: 10, mb: 4
}}
role="presentation"
onClick={toggleDrawer(false)}
onKeyDown={toggleDrawer( false)}
>
<Container maxWidth={"xl"}>
<Stack spacing={2}>
<Typography variant={"h4"}>SPORTSDAYの個人情報取り扱い方針</Typography>
<Divider/>
<Typography variant={"h6"}>どのような情報を収集しますか?</Typography>
<Typography>当サイトを利用すると、以下の情報が収集されることがあります。</Typography>
<Card variant={"outlined"} sx={{p:2}}>
<Stack spacing={1}>
<Typography fontWeight={"600"}>基本的なアカウント情報</Typography>
<Divider/>
<Typography>当サイトを利用するためには、Microsoftアカウントの基本的な情報(名前・アイコン)を取得します。また、参加する競技やチーム・リーグ・トーナメント・得点状況といった大会進行にしたがって必要な情報は、SPORTSDAY Adminを用いて登録されます。これらの情報は他のSPORTSDAYユーザーに公開されます。</Typography>
</Stack>
</Card>
<Card variant={"outlined"} sx={{p:2}}>
<Stack spacing={1}>
<Typography fontWeight={"600"}>Cookie</Typography>
<Divider/>
<Typography>当サイトを利用すると、お使いのブラウザのCookieを利用します。CookieはSPORTSDAYの利用に伴う情報のみが保存・利用されます。Cookieが許可されていなければ、SPORTSDAYが正常に動作しない可能性があります。</Typography>
</Stack>
</Card>
<Card variant={"outlined"} sx={{p:2}}>
<Stack spacing={1}>
<Typography fontWeight={"600"}>その他のデータ</Typography>
<Divider/>
<Typography>アンケートや基本的な使用状況(アクセス数)は、SPORTSDAYの管理者(大会運営者)が閲覧することがあります。</Typography>
</Stack>
</Card>
<Divider/>
<Typography variant={"h6"}>情報は何に使用されますか?</Typography>
<Typography>収集した情報は次のように使用されることがあります。</Typography>
<Card variant={"outlined"} sx={{p:2}}>
<Stack spacing={1}>
<Typography fontWeight={"600"}>SPORTSDAYのコア機能の提供</Typography>
<Divider/>
<Typography>基本的なアカウント情報は大会実施期間に限り、他のユーザーに競技一覧や進行状況として見ることで、大会の現況を把握することができるようにするために使用されます。また、大会運営者が大会前にリーグ・トーナメント・試合時間の調整を行う際や、大会進行時に競技の得点を入力する際に、ユーザーまたはチームを識別するために最低限の情報を表示することがあります。</Typography>
</Stack>
</Card>
<Card variant={"outlined"} sx={{p:2}}>
<Stack spacing={1}>
<Typography fontWeight={"600"}>ログイン状態の識別</Typography>
<Divider/>
<Typography>Cookieは、主にSPORTSDAYにログインしているかどうかを識別するために利用されます。</Typography>
</Stack>
</Card>
<Card variant={"outlined"} sx={{p:2}}>
<Stack spacing={1}>
<Typography fontWeight={"600"}>SPORTSDAYの改善</Typography>
<Divider/>
<Typography>当サイトでは、一部でアクセス解析ツールであるGoogle Analyticsを使用しており、そのためにCookieを利用することがあります。アンケートの回答結果やアクセス数などの情報は、SPORTSDAYの開発者や運営者が今後のシステム改善のためだけに閲覧することがあります。</Typography>
</Stack>
</Card>
<Divider/>
<Typography variant={"h6"}>情報をどのように保護しますか?</Typography>
<Typography>SPORTSDAY開発者は、ユーザーが入力・送信する際や自身の情報にアクセスする際に個人情報を安全に保つため、さまざまなセキュリティ上の対策を実施しています。アプリケーションとユーザーの間の通信はSSL/TLSによって保護されます。また、ログイン処理はOIDCを用いており、SPORTSDAY開発者はパスワードなどの情報を一切収集することができません。</Typography>
<Divider/>
<Typography variant={"h6"}>データの保持はどのように行われますか?</Typography>
<Typography>SPORTSDAY開発者は誠意を持って次のように努めます:大会を通して収集されたアンケート結果以外のデータは、大会期間(大会当日の前後約1ヶ月)のみサーバーに保持されます。大会期間を過ぎると直ちに削除され、サーバーのストレージを完全にクリーンな状態にして安全に処理します。</Typography>
<Divider/>
<Typography variant={"h6"}>何らかの情報を外部に提供していますか?</Typography>
<Typography>SPORTSDAY開発者は、個人を特定できるいかなる情報を外部へ提供・流出することはありません。ただし、アンケート結果から得られた評価など、実際の大会で得られたデータのうち個人の特定が不可能な情報のみをSPORTSDAYのプロモーションや発表のために利用する場合があります。</Typography>
<Divider/>
<Typography variant={"h6"}>プライバシーポリシーの変更について</Typography>
<Typography>プライバシーポリシーの変更があった場合、このページに変更を掲載します。</Typography>
<Typography>最終更新:2024年4月17日</Typography>
<Stack direction={"row"} spacing={0.5}>
<Typography fontWeight={"600"} color={"#99a5d6"}>(C)2024</Typography>
<WiderLogo/>
</Stack>
</Stack>
</Container>
</Box>
</>
);

return (
<>
<Button
variant="contained"
color="primary"
sx={{py:1.5, width:"100%"}}
disableElevation
onClick={toggleDrawer(true)}
>
プライバシーポリシー
</Button>
<SwipeableDrawer
open={open}
onClose={toggleDrawer(false)}
onOpen={toggleDrawer(true)}
anchor={"bottom"}
>
{DrawerList}
</SwipeableDrawer>
</>
);
};

export default PrivacyPolicyDrawer;
Loading

0 comments on commit 7c75fb4

Please sign in to comment.