From cac68b4cf1680432fddc7363a49cf75ec949ebc4 Mon Sep 17 00:00:00 2001 From: yena <50291995+nyj001012@users.noreply.github.com> Date: Thu, 18 Jan 2024 18:00:21 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=A0=84?= =?UTF-8?q?=EC=A0=81=20=ED=8E=98=EC=9D=B4=EC=A7=80=20(=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=20=EC=A7=80=EC=A0=95=20=EA=B2=8C=EC=9E=84=EC=9D=98=20?= =?UTF-8?q?1=20VS=201=20=EB=AA=A8=EB=93=9C=20=EA=B0=9C=EC=9A=94=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80)=20css=20=EA=B5=AC=ED=98=84=20(#61)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(index): header script 추가 및 reformat * feat(common): header 렌더링하는 자바스크립트 파일 추가 * feat(users): 전적 중, 사용자 지정 게임 1 vs 1 모드를 보여주는 자바스크립트 추가 * chore(gitignore): .idea 디렉토리 추가 * feat(assets): font 추가 - Galmuri11 Normal, Bold, Condensed 추가 * feat(assets): header의 뒤로가기 이미지 추가 * feat(assets): 사용자 지정 게임 전적 검색 전용 css 추가 * feat(assets): 헤더 전용 css 추가 * feat(common): 헤더를 렌더링하는 js 파일 추가 * feat(index):
추가 * feat(assets): 이미지 파일 추가 * feat(users): 전적 페이지 헤더 함수 프로토타입 구현 * chore: package-lock.json의 name value 변경 * chore: package-lock.json의 name value 변경 * feat(index): mini reset css 적용 * chore(common): header js 파일 이동 * feat(main): header를 렌더링하게 함 * feat(users): 사용자 전적 헤더 프로토타입 선언 * feat(common): body 전용 css 추가 * feat(histories): 파일 이동 및 one_on_one_list.js 프로토타입 구현 * feat(router): histories 라우터에 등록 * chore(common): import 경로 변경 * chore: 파일 경로 변경 * feat: body 배경색 추가 * feat(index): body css link * chore: 경로 변경 * feat(css): body width, height 뷰포트를 기준으로 변경 * feat(css): histories의 header css 프로토타입 추가 * refactor: /users/histories 대신 /histories 사용 * feat(images): 이미지 해상도 변경 * feat(histories): 헤더에 x버튼 추가 * feat(index): #app의 height를 80vh로 축소 * feat(css): 프레임 배경 이미지를 content-wrapper에 적용 * feat(header): histories의 header는 동적으로 css 파일을 가져와서 head에 link * feat(header): 검색창 구현 * feat(header): 아바타 추가 * build(header): header 파일 pages/header로 이동 * feat(header): histories header flex로 감싸게 함 * build(histories): one_on_one_list에서 pages로 파일명 변경 * build(histories): one_on_one_list에서 pages로 파일명 변경 * feat(images): 설정, 개요 아이콘 추가 * refactor(css): css 경로 변경 * feat(histories): 사용자 전적 페이지 기본 레이아웃 작성 * feat(histories): 페이지네이션 및 하단 편의 버튼 추가 * feat(histories): 사용자 전적 목록 보여주는 함수 구현 * refactor(histories): 전적 리스트 렌더링하는 함수 분리 * refactor(histories): 전적 페이지의 레이아웃 렌더링하는 함수 분리 - 함수 분리 - 주석 추가 * refactor(histories): list 비율 수정 * build: header 파일 경로 변경 * refactor: pages.js에서 page.js로 파일명 변경 * refactor(histories): page.js export명 변경 사항 적용 * refactor(histories): a태그 대신 div태그로 변경 * chore(css): 불필요한 css 제거 * feat(utils): hover 이벤트 리스너 모듈 추가 * feat(utils): hover 시 cursor 변경하는 모듈 추가 * refactor(utils): hover 시 cursor 변경은 hoverCursor에서 관리 * refactor(histories): hover는 이벤트리스너로 관리 * feat(histories): click 이벤트 리스너 추가하는 함수 추가 * refactor(header): histories 헤더에서 a 태그 삭제 * style(header): 주석 추가 * chore: 프로젝트 파일 변경사항 추가 --- .idea/transcendence.iml | 1 + frontend/assets/css/common/header.css | 61 +++++- frontend/assets/css/histories.css | 150 ++++++++++++++ frontend/assets/css/histories/one_on_one.css | 12 -- frontend/assets/images/avatar/blue.png | Bin 0 -> 18642 bytes frontend/assets/images/avatar/green.png | Bin 0 -> 10792 bytes frontend/assets/images/avatar/pink.png | Bin 0 -> 20940 bytes frontend/assets/images/avatar/red.png | Bin 0 -> 19875 bytes frontend/assets/images/avatar/yellow.png | Bin 0 -> 22187 bytes frontend/assets/images/custom_summary.png | Bin 0 -> 1649 bytes frontend/assets/images/pagination.png | Bin 0 -> 1067 bytes frontend/assets/images/search.png | Bin 0 -> 1832 bytes frontend/assets/images/setting.png | Bin 0 -> 8419 bytes frontend/index.html | 13 +- frontend/main.js | 2 + .../node_modules/.vite/deps/_metadata.json | 6 +- frontend/src/constants/routeInfo.js | 13 +- frontend/src/header/header.js | 29 +++ frontend/src/header/historiesHeader.js | 48 +++++ frontend/src/pages/histories/page.js | 196 +++++++++++++++++- frontend/src/utils/clickEvent.js | 4 + frontend/src/utils/hoverEvent.js | 58 ++++++ nginx/config/owasp-crs/CHANGES.md | 4 +- .../rules/REQUEST-921-PROTOCOL-ATTACK.conf | 2 +- nginx/config/owasp-crs/rules/iis-errors.data | 2 +- 25 files changed, 565 insertions(+), 36 deletions(-) create mode 100644 frontend/assets/css/histories.css delete mode 100644 frontend/assets/css/histories/one_on_one.css create mode 100644 frontend/assets/images/avatar/blue.png create mode 100644 frontend/assets/images/avatar/green.png create mode 100644 frontend/assets/images/avatar/pink.png create mode 100644 frontend/assets/images/avatar/red.png create mode 100644 frontend/assets/images/avatar/yellow.png create mode 100644 frontend/assets/images/custom_summary.png create mode 100644 frontend/assets/images/pagination.png create mode 100644 frontend/assets/images/search.png create mode 100644 frontend/assets/images/setting.png create mode 100644 frontend/src/header/header.js create mode 100644 frontend/src/header/historiesHeader.js create mode 100644 frontend/src/utils/clickEvent.js create mode 100644 frontend/src/utils/hoverEvent.js diff --git a/.idea/transcendence.iml b/.idea/transcendence.iml index 24643cc3..260d9929 100644 --- a/.idea/transcendence.iml +++ b/.idea/transcendence.iml @@ -8,5 +8,6 @@ + \ No newline at end of file diff --git a/frontend/assets/css/common/header.css b/frontend/assets/css/common/header.css index b7a32344..942eadba 100644 --- a/frontend/assets/css/common/header.css +++ b/frontend/assets/css/common/header.css @@ -19,11 +19,70 @@ header { width: fit-content; } +.header-wrapper .histories#left-side, .header-wrapper .histories#right-side { + display: flex; + align-items: center; + flex-direction: row; + width: 30%; + height: 100%; +} + +.header-wrapper .histories#left-side { + justify-content: flex-start; +} + +.header-wrapper .histories#right-side { + justify-content: flex-end; +} + +.header-wrapper .histories#left-side > img { + width: 3rem; + height: 3rem; + margin-right: 10px; +} + +.header-wrapper .histories#search-box { + display: flex; + width: fit-content; + height: 100%; + justify-content: center; + align-items: center; +} + +.header-wrapper .histories#search-box > input { + width: 15rem; + height: 50%; + border-radius: 1rem; + border: 4px #FF79C5 solid; + background: none; + color: white; + font-size: 1.5rem; + padding: 0 1rem; + font-family: Galmuri11, system-ui; +} + .header-wrapper .histories#title { + text-align: center; color: #29ABE2; } -.header-wrapper .histories#close-button a { +.header-wrapper .histories#user-avatar { + position: relative; + width: 4rem; + height: 4rem; + border: 4px solid white; + overflow: hidden; + margin-right: 5rem; +} + +.header-wrapper .histories#user-avatar > img { + position: absolute; + width: 6rem; + height: 6rem; + border-radius: 50%; +} + +.header-wrapper .histories#close-button { display: block; background-image: url("../../images/close.png"); background-position: center; diff --git a/frontend/assets/css/histories.css b/frontend/assets/css/histories.css new file mode 100644 index 00000000..bc835500 --- /dev/null +++ b/frontend/assets/css/histories.css @@ -0,0 +1,150 @@ +.histories#content-wrapper { + display: flex; + justify-content: center; + flex-direction: column; + height: 100%; + background-color: black; + background-image: url("../images/histories_frame.png"); + background-size: 100% 100%; + background-position: bottom; + background-repeat: no-repeat; + overflow: hidden; +} + +/************* Histories List *************/ + +.histories#list { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 66.6vh; + color: white; + padding: 10vh 6vw 3vh 6vw; +} + +.histories#list-wrapper { + display:grid; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: repeat(2, 1fr); + justify-content: center; + justify-items: center; + align-items: center; + grid-gap: 1vh; + width: 80%; + height: 100%; +} + +.histories.list-item { + display: flex; + justify-content: center; + align-items: baseline; + flex-direction: row; + border: 3px transparent solid; + border-radius: 1vw; + text-decoration: none; + width: 80%; + padding: 1vh 1vw; +} + +.histories.list-item:visited, .histories.list-item:link, .histories.list-item:active { + color: white; +} + +.histories.list-item .player { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + width: 10vw; + border-radius: 1vh; +} + +.histories.list-item .player > div:not(:first-child) { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 50%; +} + +.histories.list-item .histories.avatar { + display: flex; + justify-content: center; + align-items: center; + position: relative; + width: 8vw; + height: 8vw; + overflow: hidden; +} + +.histories.list-item .histories.avatar > img { + position: absolute; + top: 0.1vw; + width: 12vw; + height: 12vw; +} + +.histories.list-item .player > div:not(:last-child) { + margin-bottom: 1vh; +} + +.histories.list-item .game-mode { + width: 20%; +} + +.histories.list-item .histories.nickname { + font-family: Galmuri11-Bold, serif; + font-size: 1.3em; +} + +.histories.list-item .histories.rating { + font-family: Galmuri11, serif; + font-size: 1.1em; + text-align: center; +} + +/********** Histories Pagination **********/ + +.histories#pagination, .histories#pagination div { + display: inline-block; + height: 6vh; + text-align: center; +} + +.histories#pagination > .histories img { + height: 100%; + margin: 0 0.5vw; +} + +.histories#pagination > .histories#prev img { + transform: rotate(180deg); +} + +.histories#pagination#next { +} + +/********** Histories Mode Select **********/ + +.histories#mode { + display: flex; + justify-content: space-evenly; + align-items: center; + flex-direction: row; + height: 15.5vh; + font-size: 2em; +} + +.histories#mode div { + display: flex; + justify-content: center; + align-items: center; + color: white; + font-family: Galmuri11, serif; + text-decoration: none; +} + +.histories#mode > div img { + width: 7vh; + margin-right: 2vh; +} diff --git a/frontend/assets/css/histories/one_on_one.css b/frontend/assets/css/histories/one_on_one.css deleted file mode 100644 index 0696a7b9..00000000 --- a/frontend/assets/css/histories/one_on_one.css +++ /dev/null @@ -1,12 +0,0 @@ -.histories#content-wrapper { - display: flex; - justify-content: center; - flex-direction: column; - height: 100%; - background-color: black; - background-image: url("../../images/histories_frame.png"); - background-size: 100% 100%; - background-position: bottom; - background-repeat: no-repeat; - overflow: hidden; -} diff --git a/frontend/assets/images/avatar/blue.png b/frontend/assets/images/avatar/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..686dd3f5709fe5c4d74d50d78ad88af1d8e93f9b GIT binary patch literal 18642 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 d)dO$${|BAEP(m4<&-Q7&-&JmKr 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 literal 0 HcmV?d00001 diff --git a/frontend/assets/images/avatar/pink.png b/frontend/assets/images/avatar/pink.png new file mode 100644 index 0000000000000000000000000000000000000000..a9484eb8a6a3cd71d7dfcede2fc99d073e6f7135 GIT binary patch literal 20940 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

@(mQ8BxeYm#oN~MFi~k>HYT&+QKUD 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 DrmMhG literal 0 HcmV?d00001 diff --git a/frontend/assets/images/custom_summary.png b/frontend/assets/images/custom_summary.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4bc781161d967ce44e0a375fa6b6dd21cf531e GIT binary patch literal 1649 zcmZuy2{hDO9R6pgWQjZz(jeQxqsS7Hv5Xi)CW77nuz6aWbT03ZmpgxIs! zi0$CxVb9G*ND6!5LY;&<@UcfYpJxnv&mUlU76kyDA=|MF_b#%Nos>kIIiXMcd!sSP zATI!e!Kh#U(+A~&4DeF-54xDXa2x~x+zU{Mi9_i9zcXxo#Sl{Mgv#2=BWkjv=Zb8s ztmnAv8chmYmMl(3@;|w80puhrqW*dyEmU|F?vV(Q&*bBI`kM2qy7J*h~tJa=$|U|R_B6|kUYefnyy~CHN*M>WmGJ7g*9LoNp%^=8V1Gl?>Nwj1O0E6 zz<+2-#o`R(l4Wd1MMOCSxq)bo2-97S*#Hd=1SkQzDfY#a8R(L8`b_MzNYBb#GP=Gz zo9v*OOe)*UO7PZlHJKg=(KQa8Tz?`O^)a!6k5*G^Rq&QOgRUE&XI~_0=HTkmpWI%D ze*`&Xc>NThD+Wjj0DHgP6U*i2zBN`oR61%Ml0NsOx=gr-GN(GZc&pIDpOj zdZ{=veoBLK7Y9&8_-%SKJ%&XFmzUe*9)_fQ_c2`?W>>Oh%enW{hPpgiVF%YRX>;-< zXyAEAxA6xV;O6!=Jf5B#(Tm`{_Q1@u6K?CQ{$`21cHcooL0en9EpQV(&m%%S!4bg! z^V8XtQgIQbh*QxCG6vcR$FZ^clS!}g$^}{GE)Ypk@Es)SQiaw=$;+34e&s%c_4FG2 zW(}-AxQbs|nj#Uuu8_PgK*K&uRKE9OrGjB2L*yluY2nXbC9;%HV`I`8Yp zgK63Ks3%iSrHQ!t4o-4XlFXx;~>jQ|Aou z>Px~S6{Z(ynI`%l7yI=3sKb|v-7WkAr7WCf;)cwGZd%_i>=_xbbKYPatGGfhoqs66 z$;qh|x^94r>U~Q(9L9or1Z?RLhq#A6K)`mjSGqv-ji6t_xD{=JNr)L)w{gp?MYIH1 znv6hW_7KW68p6h^`3bw;q(aOW#YOikOU&LfnrbtY6&V)=guY4SyA*dSXJ;C=MCA>& z1|5*PoMB)HKd>5{OwcH=@7^0O9Vhsi^~K7jmCNaw?~TVUI=S|v5^-iL9zhJsd#mW> zfnW0eRiOnJ46bfXjai;CC+YcN`}QJQ$^M5%YUt25iVwxdr|CmqUxyH3N=}%lHmo5@ z@W%xDSi|;os(L_P%rcEs6$y1EYE&`*6vJUxB@YO_Sz(9rf2u#Pta@r|%W;iw(`_So ztqap*T%fvmDa@P))1{2}Y)LK6LvsB#bq5?*UUU zbQO0xV={`|D4IpIn$GuLODykZgs!ZO@|K1R=N;@8_{l2RfN^#6#@JK~`NbbQF#kAg zI#q4(zKSKe(9b5#m(B)=Td~Ky=?orKhm9_R`PSf+;O_R<|^~)eW+IWB&QKj zEfZUuI(3)PUkG3=F?O@-G+| zN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?gFHN;HUHMdLYGF;1O92q!YmSL$=d-AcMWc z)7O>#1tS|9zv=J1hqVk0%srkijv*Dd-rlkAz7r~P{9&uf>MPZrqR0+PhdfH1zm!_we1jzkf@c&tK8Gal`EG z$0QzqDEPMXLFk&ae1;kB3<@(C91Iv65||hcvM@ApGO!3UaBMTKX1<;EMI!l2(&TBj zyLKO+QLA@D%iEu6-qiHx$0d@>%fEd;T2{!4s!NSQzz1%eTci0A{rMrGvHSjfxt{9Y zqc2xduK!&_YqsjY&9ZjaSPIxpG7-F6}g5wd&gIulMiXeSYrj zz4JQjkV6MKuz_}+(J+vH*uH)Bs&{uP-ydGJ%Dvxj_q~(x`fiQs^K{#{c z$B##Q-@W_$H&|c7`tSdEdGe5#TwXQi5P8=vzj_rP|MaN$%ga}-nrAb!Rxi%?{JjG?k9XeuJ>%JiRaxoF z*O!*hpL6CO-+z7lfmY%C=TB^}RCTp{%*v>uE8Et8T@|jzz-elBWb^0bo{hV$fB#O} zy@LrOA;RJzr(^rS6@e%7#ScYBR3*KCw$|`i#Jj1n7T*6Daq4l{@Wb74|IVP$uMZ9e oy|&#K7+P9m^E(EVQ5XXLGpzcyPNB|o@gfk{)78&qol`;+0LD|I7XSbN literal 0 HcmV?d00001 diff --git a/frontend/assets/images/search.png b/frontend/assets/images/search.png new file mode 100644 index 0000000000000000000000000000000000000000..24b88a2ea4c8a86de3b8a1c04cedaf2610e2ba3d GIT binary patch literal 1832 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 KrtqNO<$nMI3CF4c literal 0 HcmV?d00001 diff --git a/frontend/index.html b/frontend/index.html index f4cf5b29..e4f40278 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1,12 +1,13 @@ - - - ping pong - - - + + + ping pong + + + +

diff --git a/frontend/main.js b/frontend/main.js index 9227678e..3d2f513a 100644 --- a/frontend/main.js +++ b/frontend/main.js @@ -1,6 +1,8 @@ import App from "./src/app.js"; +import Header from "./src/header/header.js"; import { $ } from "./src/utils/querySelector.js"; window.addEventListener("DOMContentLoaded", (e) => { + new Header($("#header")); new App($("#app")); }); diff --git a/frontend/node_modules/.vite/deps/_metadata.json b/frontend/node_modules/.vite/deps/_metadata.json index 708fd277..0b637970 100644 --- a/frontend/node_modules/.vite/deps/_metadata.json +++ b/frontend/node_modules/.vite/deps/_metadata.json @@ -1,8 +1,8 @@ { - "hash": "e742593a", - "configHash": "1bafe92a", + "hash": "84ee4730", + "configHash": "d00396b8", "lockfileHash": "09cce371", - "browserHash": "97f0dd92", + "browserHash": "a49f98bc", "optimized": {}, "chunks": {} } \ No newline at end of file diff --git a/frontend/src/constants/routeInfo.js b/frontend/src/constants/routeInfo.js index 409d5c14..86427981 100644 --- a/frontend/src/constants/routeInfo.js +++ b/frontend/src/constants/routeInfo.js @@ -1,15 +1,16 @@ import GameMode from '../pages/game-mode/page.js'; import Main from '../pages/main/page.js'; import Nickname from '../pages/nickname/page.js'; -import histories from "../pages/histories/page.js"; +import Histories from "../pages/histories/page.js"; import errorHeader from '../header/errorHeader/header.js'; +import HistoriesHeader from "../header/historiesHeader.js"; export const BASE_URL = 'http://localhost:3000'; /** * 원하는 경로에 따라 렌더링할 컴포넌트를 정의합니다. */ export const routes = [ - { path: /^\/$/, page: Main, header: errorHeader }, - { path: /^\/nickname$/, page: Nickname, header: errorHeader }, - { path: /^\/gamemode$/, page: GameMode, header: errorHeader }, - {path: /^\/histories$/, page: histories, header: errorHeader} -] \ No newline at end of file + { path: /^\/$/, page: Main, header: errorHeader }, + { path: /^\/nickname$/, page: Nickname, header: errorHeader }, + { path: /^\/gamemode$/, page: GameMode, header: errorHeader }, + { path: /^\/histories$/, page: Histories, header: HistoriesHeader} +] diff --git a/frontend/src/header/header.js b/frontend/src/header/header.js new file mode 100644 index 00000000..9d92bcea --- /dev/null +++ b/frontend/src/header/header.js @@ -0,0 +1,29 @@ +import Router from "../router.js"; +import HistoriesHeader from "./historiesHeader.js"; + +/** + * header 컴포넌트 + * @param {HTMLElement} $container + */ +export default function header($container) { + this.$container = $container; + + const init = () => { + new Router($container); + }; + + const render = () => { + this.$container.innerHTML = ` + `; + } + + init(); + switch (location.pathname) { + case "/histories": + new HistoriesHeader($container); + break; + default: + render(); + break; + } +} \ No newline at end of file diff --git a/frontend/src/header/historiesHeader.js b/frontend/src/header/historiesHeader.js new file mode 100644 index 00000000..cb2522c0 --- /dev/null +++ b/frontend/src/header/historiesHeader.js @@ -0,0 +1,48 @@ +import {click} from "../utils/clickEvent.js"; +import {hoverChangeCursor} from "../utils/hoverEvent.js"; + +/** + * 사용자 전적 페이지에 사용하는 header 컴포넌트 + * @param {HTMLElement} $container + */ +export default function HistoriesHeader($container) { + this.$container = $container; + + this.setState = () => { + this.render(); + } + + this.render = () => { + this.$container.innerHTML = ` +
+
+ + +
+
너의 기록은
+
+
+ +
+
+
+
+ ` + } + + /** + * 헤더의 레이아웃에 이벤트 리스너를 추가합니다. + */ + this.addEventListenersToLayout = () => { + const $closeButton = document.getElementById("close-button"); + click($closeButton, function () { + console.log("전적 창 닫기"); + }); + hoverChangeCursor($closeButton, "pointer"); + } + + this.render(); + this.addEventListenersToLayout(); +} diff --git a/frontend/src/pages/histories/page.js b/frontend/src/pages/histories/page.js index 0192c81d..97f498a3 100644 --- a/frontend/src/pages/histories/page.js +++ b/frontend/src/pages/histories/page.js @@ -1,4 +1,7 @@ -export default function histories($container) { +import {hoverChangeBorder, hoverChangeColor, hoverChangeCursor, hoverChangeFont} from "../../utils/hoverEvent.js"; +import {click} from "../../utils/clickEvent.js"; + +export default function Histories($container) { this.$container = $container; this.setState = () => { @@ -6,17 +9,202 @@ export default function histories($container) { } this.render = () => { + this.renderLayout(); + this.renderList(); + } + + /** + * 헤더, 그리고 개요-사용자 지정 모드-토너먼트 모드를 선택할 수 있는 버튼들을 렌더링합니다. + * 이는 전적 리스트의 페이지의 레이아웃으로 추후 공통 모듈로 분리할 수 있습니다. + */ + this.renderLayout = () => { if (document.getElementsByTagName("head") !== null) { document.getElementsByTagName("head")[0].insertAdjacentHTML( "beforeend", - '' + '' ); } this.$container.innerHTML = ` -
d +
+
+ +
+
+ summary + 개요 +
+
+ custom-mode + 사용자 지정 모드 +
+
+ tournament + 토너먼트 모드 +
+
+
+ `; + } + + /** + * 사용자 지정 모드의 전적 리스트를 렌더링합니다. + * 1. 플레이어 1의 정보를 렌더링합니다. + * 2. 게임 모드(1 vs 1 로고 또는 토너먼트 로고)를 렌더링합니다. + * 3. 플레이어 2의 정보를 렌더링합니다. + */ + this.renderList = () => { + let list = document.getElementById("list"); + list.innerHTML = ` +
+ ` + let listWrapper = document.getElementById("list-wrapper"); + listWrapper.innerHTML = ''; + let mockData = [ + { + player1: { + nickname: "hyojocho", + avatar: "../../../assets/images/avatar/red.png", + rating: 2130, + is_winner: true, + }, + player2: { + nickname: "yena", + avatar: "../../../assets/images/avatar/blue.png", + rating: 110, + is_winner: false, + }, + }, + { + player1: { + nickname: "hyojocho", + avatar: "../../../assets/images/avatar/red.png", + rating: 2130, + is_winner: true, + }, + player2: { + nickname: "yena", + avatar: "../../../assets/images/avatar/blue.png", + rating: 110, + is_winner: false, + }, + }, + { + player1: { + nickname: "hyojocho", + avatar: "../../../assets/images/avatar/red.png", + rating: 2130, + is_winner: true, + }, + player2: { + nickname: "yena", + avatar: "../../../assets/images/avatar/blue.png", + rating: 110, + is_winner: false, + }, + }, + { + player1: { + nickname: "hyojocho", + avatar: "../../../assets/images/avatar/red.png", + rating: 2130, + is_winner: true, + }, + player2: { + nickname: "donghyk2", + avatar: "../../../assets/images/avatar/green.png", + rating: 2120, + is_winner: false, + }, + }, + ]; // TODO: 백엔드로부터 데이터 받아오기 + for (let data of mockData) { + const listItemDiv = document.createElement("div"); + listItemDiv.className = "histories list-item"; + this.renderPlayer(listItemDiv, data.player1); + this.renderGameMode(listItemDiv); + this.renderPlayer(listItemDiv, data.player2); + hoverChangeBorder(listItemDiv, "3px solid transparent", "3px solid #29ABE2"); + hoverChangeCursor(listItemDiv, "pointer"); + listItemDiv.addEventListener("click", () => { + console.log("TODO => 전적 상세 페이지로 이동") + }); + listWrapper.appendChild(listItemDiv); + } + } + + /** + * 전적 리스트의 플레이어 정보를 렌더링합니다. + * @param listItemDiv 전적 리스트의 플레이어 정보를 렌더링할 리스트 아이템
엘리먼트 + * @param data 전적 리스트의 플레이어 정보 + */ + this.renderPlayer = (listItemDiv, data) => { + const playerDiv = document.createElement("div"); + playerDiv.className = "histories player"; + playerDiv.innerHTML = ` +
+ player1-avatar
+
${data.nickname}
+
Rating: ${data.rating}
`; + listItemDiv.appendChild(playerDiv); + } + + /** + * 전적 리스트의 게임 모드(1 vs 1 로고 또는 토너먼트 로고)를 렌더링합니다. + * @param listItemDiv 전적 리스트의 게임 모드를 렌더링할 리스트 아이템
엘리먼트 + */ + this.renderGameMode = (listItemDiv) => { + const gameModeDiv = document.createElement("div"); + gameModeDiv.className = "histories game-mode"; + gameModeDiv.innerHTML = ` + 1v1 + `; + listItemDiv.appendChild(gameModeDiv); + } + + /** + * 레이아웃 엘리먼트에 이벤트 리스너를 추가합니다. + */ + this.addEventListenersToLayout = () => { + const summary = document.getElementById("summary"); + const custom = document.getElementById("custom"); + const tournament = document.getElementById("tournament"); + const prev = document.getElementById("prev"); + const next = document.getElementById("next"); + + // 폰트 색상 변경 + hoverChangeColor(summary, "#ffffff", "#29ABE2"); + hoverChangeColor(custom, "#ffffff", "#29ABE2"); + hoverChangeColor(tournament, "#ffffff", "#29ABE2"); + + // 폰트 변경 + hoverChangeFont(summary, "Galmuri11, serif", "Galmuri11-Bold, serif"); + hoverChangeFont(custom, "Galmuri11, serif", "Galmuri11-Bold, serif"); + hoverChangeFont(tournament, "Galmuri11, serif", "Galmuri11-Bold, serif"); + + // 커서 변경 + hoverChangeCursor(summary, "pointer"); + hoverChangeCursor(custom, "pointer"); + hoverChangeCursor(tournament, "pointer"); + hoverChangeCursor(prev, "pointer"); + hoverChangeCursor(next, "pointer"); + + // click 이벤트 + click(summary, function () {console.log("TODO => 개요 페이지로 이동")}); + click(custom, function () {console.log("TODO => 사용자 지정 모드 페이지로 이동")}); + click(tournament, function () {console.log("TODO => 토너먼트 모드 페이지로 이동")}); + click(prev, function () {console.log("TODO => 이전 페이지로 이동")}); + click(next, function () {console.log("TODO => 다음 페이지로 이동")}); } this.render(); -} \ No newline at end of file + this.addEventListenersToLayout(); +} diff --git a/frontend/src/utils/clickEvent.js b/frontend/src/utils/clickEvent.js new file mode 100644 index 00000000..088a2c59 --- /dev/null +++ b/frontend/src/utils/clickEvent.js @@ -0,0 +1,4 @@ +// TODO => click 시의 동작은 여기서 정의 +export const click = (element, func) => { + element.addEventListener("click", func); +} diff --git a/frontend/src/utils/hoverEvent.js b/frontend/src/utils/hoverEvent.js new file mode 100644 index 00000000..5366dec4 --- /dev/null +++ b/frontend/src/utils/hoverEvent.js @@ -0,0 +1,58 @@ +/** + * 마우스 hover 시 폰트 색상 변경 + * @param element hover 효과를 넣고 싶은 html 엘리먼트 + * @param originalColor 원래 색상 + * @param hoverColor hover 시 색상 + */ +export const hoverChangeColor = (element, originalColor, hoverColor) => { + element.addEventListener("mouseover", () => { + element.style.color = hoverColor; + }); + element.addEventListener("mouseout", () => { + element.style.color = originalColor; + }); +} + +/** + * 마우스 hover 시 폰트 변경 + * @param element hover 효과를 넣고 싶은 html 엘리먼트 + * @param originalFont 원래 폰트 + * @param hoverFont hover 시 폰트 + */ +export const hoverChangeFont = (element, originalFont, hoverFont) => { + element.addEventListener("mouseover", () => { + element.style.fontFamily = hoverFont; + }); + element.addEventListener("mouseout", () => { + element.style.fontFamily = originalFont; + }); +} + +/** + * 마우스 hover 시 border 변경 + * @param element hover 효과를 넣고 싶은 html 엘리먼트 + * @param originalBorder 원래 border + * @param hoverBorder hover 시 border + */ +export const hoverChangeBorder = (element, originalBorder, hoverBorder) => { + element.addEventListener("mouseover", () => { + element.style.border = hoverBorder; + }); + element.addEventListener("mouseout", () => { + element.style.border = originalBorder; + }); +} + +/** + * 마우스 hover 시 cursor 변경 + * @param element hover 효과를 넣고 싶은 html 엘리먼트 + * @param cursor hover 시 cursor + */ +export const hoverChangeCursor = (element, cursor) => { + element.addEventListener("mouseover", () => { + element.style.cursor = cursor; + }); + element.addEventListener("mouseout", () => { + element.style.cursor = "default"; + }); +} diff --git a/nginx/config/owasp-crs/CHANGES.md b/nginx/config/owasp-crs/CHANGES.md index 9ad99c47..700bdb4c 100644 --- a/nginx/config/owasp-crs/CHANGES.md +++ b/nginx/config/owasp-crs/CHANGES.md @@ -562,7 +562,7 @@ Fixes and improvements: * Avoid embedded anchors in CRS rule 942330 (Allan Boll) * Update 942450 for less false positives, more tests (#1662) (Will Woodson) * Ensure single ranges are also checked (#1661) (Federico G. Schwindt) - * WordPress: also exclude posts/pages endpoint in subdirectories (Walter Hop) + * WordPress: also exclude posts/page endpoint in subdirectories (Walter Hop) * For bugs, also ask for the environment (#1657) (Federico G. Schwindt) * XenForo: fix incorrect escape (Walter Hop) * XenForo: additional exclusions (Walter Hop) @@ -761,7 +761,7 @@ Fixes and improvements: * Update RESPONSE-950-DATA-LEAKAGES.conf (Christoph Hansen) * Update RESPONSE-959-BLOCKING-EVALUATION.conf (Christoph Hansen) * Wordpress: add support for Gutenberg editor (siric_, Walter Hop) - * Wordpress: allow searching for any term in admin posts/pages overview (Walter Hop) + * Wordpress: allow searching for any term in admin posts/page overview (Walter Hop) * WordPress: exclude Gutenberg via rest_route (Walter Hop) * WordPress: exclude some more profile.php fields from RFI rule (Walter Hop) * WordPress: exclude SQL comment rule from _wp_http_referer (Walter Hop) diff --git a/nginx/config/owasp-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf b/nginx/config/owasp-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf index 5861bf5a..5ea74544 100644 --- a/nginx/config/owasp-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf +++ b/nginx/config/owasp-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf @@ -383,7 +383,7 @@ SecRule TX:DETECTION_PARANOIA_LEVEL "@lt 3" "id:921016,phase:2,pass,nolog,skipAf # Forbid Request Range Header # -# It is possible abuse the HTTP Request Range Header to leak error pages +# It is possible abuse the HTTP Request Range Header to leak error page # and other information in very small snippets. # The easiest way to fight this is to deny the use of this header. # This is a viable option since the header is only used in rare circumstances diff --git a/nginx/config/owasp-crs/rules/iis-errors.data b/nginx/config/owasp-crs/rules/iis-errors.data index 4449d6ac..f1905589 100644 --- a/nginx/config/owasp-crs/rules/iis-errors.data +++ b/nginx/config/owasp-crs/rules/iis-errors.data @@ -1,4 +1,4 @@ -# This list comes from the default IIS error pages +# This list comes from the default IIS error page # To renerate get the files from a default installation and use: # grep -h '