From 8940b41362b45fd6b5c8553eebf2fb5d9b0fdf9a Mon Sep 17 00:00:00 2001 From: ryo4004 Date: Fri, 26 Apr 2024 21:01:29 +0900 Subject: [PATCH 1/2] =?UTF-8?q?terms=E3=83=AA=E3=83=9D=E3=82=B8=E3=83=88?= =?UTF-8?q?=E3=83=AA=E3=81=8B=E3=82=89=E8=A6=8F=E7=B4=84=E3=82=92=E5=8F=96?= =?UTF-8?q?=E5=BE=97=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/index.ts | 1 + src/features/setting/api/getWindsTerms.ts | 14 + .../setting/components/TermsDetail.tsx | 440 +----------------- src/library/fetch.ts | 4 + 4 files changed, 28 insertions(+), 431 deletions(-) create mode 100644 src/features/setting/api/getWindsTerms.ts diff --git a/src/config/index.ts b/src/config/index.ts index 51815aa2..131e4a50 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -3,3 +3,4 @@ export const APP_API_URL = process.env.REACT_APP_APP_API_URL as string export const SCORE_API_URL = process.env.REACT_APP_SCORE_API_URL as string export const API_PATH = process.env.REACT_APP_API_PATH as string export const VERSION = process.env.REACT_APP_VERSION as string +export const GITHUB_WINDS_TERMS = 'https://raw.githubusercontent.com/winds-nagaoka/terms/master/terms.txt' diff --git a/src/features/setting/api/getWindsTerms.ts b/src/features/setting/api/getWindsTerms.ts new file mode 100644 index 00000000..2cd05ab9 --- /dev/null +++ b/src/features/setting/api/getWindsTerms.ts @@ -0,0 +1,14 @@ +import { useQuery } from 'react-query' +import { GITHUB_WINDS_TERMS } from '../../../config' +import { getTextApi } from '../../../library/fetch' + +const getWindsTerms = async () => { + return await getTextApi(GITHUB_WINDS_TERMS) +} + +export const useWindsTerms = () => { + return useQuery({ + queryKey: ['winds-terms'], + queryFn: async () => await getWindsTerms(), + }) +} diff --git a/src/features/setting/components/TermsDetail.tsx b/src/features/setting/components/TermsDetail.tsx index c32dbb61..c629c353 100644 --- a/src/features/setting/components/TermsDetail.tsx +++ b/src/features/setting/components/TermsDetail.tsx @@ -1,12 +1,16 @@ -import { ContentsBox, Text } from '../../../components/ContentsBox' +import { ContentsBox } from '../../../components/ContentsBox' import { ReactComponent as Logo } from '../../../assets/hr.svg' import styles from './TermsDetail.module.scss' import { useStyle } from '../../../utilities/useStyle' import clsx from 'clsx' +import { useWindsTerms } from '../api/getWindsTerms' export const TermsDetail = () => { const pc = useStyle() + + const windsTermsQuery = useWindsTerms() + return (
@@ -20,436 +24,10 @@ export const TermsDetail = () => {
- -
-
-

目的並びに会の設置

-
-
-

第一条

-
-
-

- 音楽を通じて自己の情操の育成を図るとともに、仲間との友好を深め、長岡市および地域住民の公共的活動に寄与し、各種演奏活動を通じて地域および個人の音楽技術の向上を図ることを目的とし、ザ・ウィンド・アンサンブル(以下ウィンズという)を設置する。 -

-
-
-
-
-

名称

-
-
-

第二条

-
-
-

- ウィンズの正式名称はザ・ウィンド・アンサンブルであるが、対外的な事等でどこの団体かはっきりさせた方が良い場合などは、長岡ザ・ウィンド・アンサンブルと呼ぶ場合もある。また、愛称としてウィンズと呼ぶ場合もある。 -

-
-
-
-
-

組織

-
-
-

第三条

-
-
-

ウィンズは第一条の目的を理解し、入会した者をもって組織する。

-
-
-
-
-

事務局

-
-
-

第四条

-
-
-

ウィンズの事務局は長岡市在住の役員の家に置く。

-
-
-
-
-

役員

-
-
-

第五条

-
-
-

ウィンズに次の役員を置く。

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
代表1名
代表代行1名
事務局長1名
ステージマネージャー(演奏会総括)1名
会計1名
トレーナー1名
-
-
-

-
-
-

役員はザ・ウィンド・アンサンブル会員(以下会員という)の中から選出して決定する。

-
-
-
-
-

役員会

-
-
-

第五条二

-
-
-

ウィンズの運営を行うため第五条の役員をもって役員会を構成する。

-
-
-

-
-
-

役員会は代表が招集する。

-
-
-
-
-

役員の任期

-
-
-

第六条

-
-
-

役員の任期は一年とし、毎年総会にて決定する。ただし再任を妨げない。

-
-
-

-
-
-

役員に欠員が生じた場合は、十四日以内に前任者の指名もしくは会員の選出で補充する。

-
-
-
-
-

役員の任務

-
-
-

第七条

-
-
-

代表はウィンズを代表し、活動を統轄する。

-
-
-

-
-
-

代表代行は代表を補佐するとともに、不在の時これを代行する。

-
-
-

-
-
-

事務局長は事務局を運営し、通常活動における事務を担当する。

-
-
-

-
-
-

ステージマネージャーは演奏会活動における事務を担当する。また、演奏会に関する会議を招集する。

-
-
-

-
-
-

会計は運営資金の出納、出納簿の管理を行う。

-
-
-

-
-
-

- トレーナーは指揮者を補佐するとともに、不在の時はこれを代行する。また、指揮者が会員で無い場合は音楽全般について統轄する。 -

-
-
-
-
-

指揮者

-
-
-

第八条

-
-
-

- 上記役員とは別に、指揮者を置く。指揮者は音楽全般について統轄する。また、指揮者が必要と認めたとき、副指揮者、トレーナー等を指名することができる。 -

-
-
-
-
-

-
-
-

第九条

-
-
-

上記役員の他に必要に応じて次の係を置くことができる。統轄は事務局とする。

-

会場予約、楽譜、受付、お弁当、打ち上げ、ポスター、チケット、パートマネージャー 等

-
-
-
-
-

会員の義務

-
-
-

第十条

-
-
-

会員は常に音楽技術の向上に努めなければならない。

-
-
-

-
-
-

練習中および演奏中は規律ある態度のもとに全力を挙げてこれに専念しなければならない。

-
-
-

-
-
-

会員は自々の本業に著しく支障をきたす活動を行ったり、これを強要してはいけない。

-
-
-

-
-
-

- 会員は特殊な事情の無い限り定期演奏会に出演することとし、その時運営資金として役員会が決定した金額を収めなければならない。 -

-
-
-
-
-

義務違反

-
-
-

第十一条

-
-
-

- 代表は会員が前条の会員の義務に反し、若しくはウィンズの規律を乱しウィンズ会員として好ましくないと認めた時は退団を命ずることができる。 -

-
-
-
-
-

欠席等の届け出

-
-
-

第十二条

-
-
-

会員は出演日に欠席しようとするときはあらかじめ代表もしくはパートマネージャーに届け出るものとする。

-
-
-
-
-

服装

-
-
-

第十三条

-
-
-

会員は出演するときは定められた服装を着用するものとする。

-
-
-
-
-

運営資金

-
-
-

第十四条

-
-
-

ウィンズの運営資金は会費から徴収する運営資金と演奏活動収益金をもってこれに充てる。

-
-
-

-
-
-

運営資金の会計年度は毎年3月1日から翌年2月末までとし、総会にて決算報告をするものとする。

-
-
-

-
-
-

会計監査を設置し、会計の実施した出納に関して監査を行うものとする。

-
-
-
-
-

演奏

-
-
-

第十五条

-
-
-

ウィンズは次の場合に演奏する。

-

ただし会員の都合等で演奏不能と代表が認めた場合はこの限りではない。

-
    -
  1. - ウィンズの定期演奏会および各種演奏会。 -
  2. -
  3. - 公共的諸行事で演奏の依頼を受けたとき。 -
  4. -
  5. - 代表が特に必要と認めるとき。 -
  6. -
-
-
-
-
-

演奏中の心得

-
-
-

第十六条

-
-
-

会員は演奏するとき次の事項を守らねばならない。

-
    -
  1. - 代表の命に従い、規律ある団体行動をすること。 -
  2. -
  3. - 容姿を端正にし品位の保持に努めること。 -
  4. -
-
-
-
-
-

会議

-
-
-

第十七条

-
-
-

- 会議は総会および特別会とし、総会は年一回の定例会の他必要に応じて開催し、特別会は必要の都度代表が指名したものを招集し開催する。 -

-
-
-

-
-
-

総会は在籍会員の過半数の出席(委任状含む)がなければ開催することができない。

-
-
-

-
-
-

会議の議長は、会議ごとに、出席した会員の中から選任する。

-
-
-
-
-

入会手続き

-
-
-

第十八条

-
-
-

ウィンズの入会を希望するものは代表にその旨届出、受理されたのち会員となる。

-

入会希望届の管理、届出の受理および処理について事務局長がこれを担当する。

-
-
-

-
-
-

入会したものはすみやかにザ・ウィンド・アンサンブル会員名簿に登載される。

-
-
-
-
-

入会資格

-
-
-

第十九条

-
-
-

- ウィンズの入会資格は長岡市内に居住または、関係のある者で、満十八歳以上(高校生を除く)の者でなければならない。ただし、ウィンズの編成等により特に代表が必要と認めた場合はこの限りではない。 -

-
-
-
-
-

簿冊

-
-
-

第二十条

-
-
-

ウィンズに次の簿冊を備える。

-
    -
  1. - ザ・ウィンド・アンサンブル会員名簿 -
  2. -
  3. - 備品台帳 -
  4. -
  5. - 楽譜台帳 -
  6. -
  7. - 出納簿 -
  8. -
-
-
-
-
-

規約の改正

-
-
-

第二十一条

-
-
-

この規約を改正しようとするときは、総会出席会員の過半数(委任状含む)の賛成を得なければならない。

-
-
-
-

付則

-
    -
  1. この規約は、昭和62年11月1日より施行する。
  2. -
  3. この規約は、平成23年3月21日より改制する。
  4. -
  5. この規約は、平成30年3月17日より改制する。
  6. -
  7. この規約は、平成31年3月9日より改制する。
  8. -
  9. この規約は、令和元年12月9日より改制する。
  10. -
-
-
+ {windsTermsQuery.isLoading && <>読み込み中} + {windsTermsQuery.data?.split('\n').map((line,index) => ( +
{line}
+ ))}
) diff --git a/src/library/fetch.ts b/src/library/fetch.ts index 4e2dc63f..8d4d68a4 100644 --- a/src/library/fetch.ts +++ b/src/library/fetch.ts @@ -42,3 +42,7 @@ export const fetchApiWithFormData = async (path: string export const getApi = async (path: string) => { return await fetch(path, { method: 'GET' }).then(handleApiResponse) } + +export const getTextApi = async (path: string) => { + return await fetch(path, { method: 'GET' }).then((response) => response.text()) +} From 65ca79859c84cf1f06ca9264136d94c6dba7bd27 Mon Sep 17 00:00:00 2001 From: ryo4004 Date: Fri, 26 Apr 2024 21:01:29 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E5=8F=96=E5=BE=97=E3=81=97=E3=81=9F?= =?UTF-8?q?=E8=A6=8F=E7=B4=84=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/TermsDetail.module.scss | 159 +----------------- .../setting/components/TermsDetail.tsx | 36 +++- 2 files changed, 37 insertions(+), 158 deletions(-) diff --git a/src/features/setting/components/TermsDetail.module.scss b/src/features/setting/components/TermsDetail.module.scss index 9b7266b7..3069f04f 100644 --- a/src/features/setting/components/TermsDetail.module.scss +++ b/src/features/setting/components/TermsDetail.module.scss @@ -44,163 +44,16 @@ } } - .provision { - margin: 16px 0; - - display: grid; - grid-template-columns: 64px 1fr; - grid-template-columns: max-content 1fr; - - .sub-title { - grid-row: 1/2; - grid-column: 1/3; - } - - & > div { - margin: 2px 0; - } - - .list-number { - grid-row: 2/3; - grid-column: 1/2; - text-align: left; - - & + div { - grid-row: 2/3; - grid-column: 2/3; - } - } - - .list-number-second { - grid-row: 3/4; - grid-column: 1/2; - text-align: right; - - & + div { - grid-row: 3/4; - grid-column: 2/3; - } - } - - .list-number-third { - grid-row: 4/5; - grid-column: 1/2; - text-align: right; - - & + div { - grid-row: 4/5; - grid-column: 2/3; - } - } - - .list-number-fourth { - grid-row: 5/6; - grid-column: 1/2; - text-align: right; - - & + div { - grid-row: 5/6; - grid-column: 2/3; - } - } - - .list-number-fifth { - grid-row: 6/7; - grid-column: 1/2; - text-align: right; - - & + div { - grid-row: 6/7; - grid-column: 2/3; - } - } - - .list-number-sixth { - grid-row: 7/8; - grid-column: 1/2; - text-align: right; - - & + div { - grid-row: 7/8; - grid-column: 2/3; - } - } + .monospaced { + font-family: 'Courier New', Consolas, monospace; } - .supplementary-provision { + .sub-title { h3 { - font-weight: bold; - color: #333; - - &:before { - content: none; - } - - &:after { - content: none; - } - } - } - - h3 { - margin: 0; - font-weight: normal; - font-size: 14px; - color: #666; - - &:before { - content: '('; - } - - &:after { - content: ')'; - } - } - - h2 { - margin: 0 0.5em 0 0; - font-weight: bold; - font-size: 14px; - } - - p { - margin: 0; - font-size: 14px; - } - - table { - font-size: 14px; - text-align: left; - - th { - padding: 0 0.5em 0 0; + margin: 0; font-weight: normal; - } - - td { - padding: 0; - } - } - - ol { - margin: 0; - padding: 0; - // list-style-type: cjk-ideographic; - list-style-type: none; - font-size: 14px; - - li { - span { - margin-right: 0.5em; - - &:before { - content: '('; - } - - &:after { - content: ')'; - } - } + font-size: 14px; + color: #666; } } } diff --git a/src/features/setting/components/TermsDetail.tsx b/src/features/setting/components/TermsDetail.tsx index c629c353..8b9692b9 100644 --- a/src/features/setting/components/TermsDetail.tsx +++ b/src/features/setting/components/TermsDetail.tsx @@ -1,4 +1,4 @@ -import { ContentsBox } from '../../../components/ContentsBox' +import { ContentsBox, ContentsLoading, Text } from '../../../components/ContentsBox' import { ReactComponent as Logo } from '../../../assets/hr.svg' import styles from './TermsDetail.module.scss' @@ -24,11 +24,37 @@ export const TermsDetail = () => { - {windsTermsQuery.isLoading && <>読み込み中} - {windsTermsQuery.data?.split('\n').map((line,index) => ( -
{line}
- ))} + {windsTermsQuery.isLoading && } + {windsTermsQuery.data && ( + +
+ {windsTermsQuery.data.split('\n').map((line, index) => ( + {line} + ))} +
+
+ )} ) } + +const TermsLine = ({ children }: { children: string }) => { + if (children === '') { + return
 
+ } + + if (/^(.*)/.test(children)) { + return ( +
+

{children}

+
+ ) + } + + if (/^付則$/.test(children.trim())) { + return
{children}
+ } + + return
{children}
+}