π μ¬μ©μ λ©λ΄μΌ :: WIKI λ°λ‘ κ°κΈ°
Care the Uncared Service
DropCareλ νμμ IV(Intra Venous) μ£Όμ μν λλ μλ³ μ 보μ λν λ°μ΄ν°λ₯Ό μ€μκ°μΌλ‘ μμ§ λ° λͺ¨λν°λ§ νλ IoT μλΉμ€μ λλ€.
DropCareλ λ³λμ μλ μλ£ κ°λ μ μ¬κ° μ§λμ μλ μ£Όμ λ°μ΄ν°λ₯Ό μμ§νμ¬ νμμ μ΄μ μ§λ³μ λν μμΈ‘ λ° κ²μΆκΈ° μν μ νλλ‘ μ€κ³λμμ΅λλ€.
λν κ°νΈμ¬μ μ 무 λΆλ΄μ ν¬κ² μ€μ΄κ³ μμ¬κ° λΉ λ₯΄κ³ μ νν κ²°μ μ λ΄λ¦¬λλ‘ λμ μ§ λμ μλ£λ₯Ό μ 곡νλ©°, κΆκ·Ήμ μΌλ‘ νμμ μλͺ μ ꡬν μ μμ κ²μ΄λΌ κΈ°λν©λλ€.
λ³μ€μ IoT κΈ°κΈ°λ νμμ IVλ°± λλ μλ³λ°±μ μ€μΉλμ΄ μ 보λ₯Ό Gatewayλ‘ μ‘μ νκ³ μ΄ λ°μ΄ν°λ₯Ό μΉμ ν΅νμ¬ μμ ν©λλ€.
π [SKT IMPACTUPS] λ₯ν°μ€νΉ μ ν¬λΈ μμ
-
VAC ν¨ν΄ (
components/.../~View.tsx)Box/BoxViewμ»΄ν¬λνΈ λ±, μ¬λ¬ μ»΄ν¬λνΈμμ View μ»΄ν¬λνΈλ₯Ό λΆλ¦¬νμ¬ UI μμ κ³Ό state κ΄λ¦¬, handlingμ λΆλ¦¬νμ¬ κ°μ Έκ°λ€- VAT λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄ μ»΄ν¬λνΈ μμ±μ΄ νΈλ¦¬νμκ³ , ν΄λΉ λμμΈ ν¨ν΄μΌλ‘
μ μ§ λ³΄μ μμ μ΄ μ©μ΄νμλ€ - νμ§λ§, μ΄μ μν΄ props drilling νμμ μΌκΈ°νκ³ λ€λμ prop μ΄ λκΉμΌλ‘μ¨ λ¨μ μ΄ μ‘΄μ¬νλ€λ κ²μ κΉ¨λ¬μλ€
- μ΄ν μ»΄ν¬λνΈμ ꡬμ±μ λ°λΌ μ μ ν μ»΄ν¬λνΈ λΆλ¦¬ ν¨ν΄μ κ°μ§κ³ κ°λ°νκ² λ κ²μ΄λΌκ³ μκ°νλ€
-
useCallback κ³Ό React.memo (
components/aBox/BoxChartView.tsx)- λΆλͺ¨ μ»΄ν¬λνΈμ Stateκ° νλλΌλ λ°λλ©΄, μμ μ»΄ν¬λνΈ λͺ¨λκ° λ¦¬λ λλ§λλ λ¬Έμ (1μ΄λΉ λ°λλ λ°μ΄ν°λ‘ μ¬κ°ν μ±λ₯ λ¬Έμ λ₯Ό μΌκΈ°νλ κ²μ νμΈν μ μμλ€)
- propμ΄ λ°λμ§ μμ λ 리λ λλ§μ λ§λ
React.memo(μ€μκ° λ³ννλ μ»΄ν¬λνΈκ° μλ κ³³, νΉνμ°¨νΈλ₯Ό 보μ¬μ£Όλ ChartView μ»΄ν¬λνΈμ memo μ¬μ©νμλ€) - memo λ₯Ό μν props ν¨μμλ useCallback μ¬μ©νμ¬ λΉν¨μ¨μ μΈ λ¦¬λ λλ§μ΄ μΌμ΄λμ§ μλλ‘ κ΅¬ννμλ€
- μ§μ μ μΈ μ±λ₯ λΉκ΅λ₯Ό ν΅ν μ±λ₯ κ°μ μ΄ νμνλ€κ³ μκ°νμ§λ§,
μ±λ₯ κΈ°λ‘ λꡬλ€μ λ§μ΄ νμ©νμ§ λͺ»ν΄ μμ¬μ΄ λ§μμ΄ μλ€
-
SWR vs React Query
π [React][λΉκ΅] SWR vs React Query vs Recoil selector ?
- 1μ΄μ ν λ²μ©μ μ¦μ 리ν¨μΉμ΄ νμνμ¬, ν¨μΉ λΌμ΄λΈλ¬λ¦¬λ‘
React Queryλ₯Ό κ²°μ νμλ€ - React Queryλ‘ μ 보λ₯Ό
1~2μ΄λ§λ€ λΆλ¬μ¨λ€- ν΄λΉνλ μ 보λ₯Ό λ°μ€ λ΄μ μλ§κ² 보μ¬μ£Όκ³ ,
μ 보μ ν΄λΉνλ λ§κ±° λ° μλ³ μ λ³΄κ° μ¬μ©μκ° μ€μ ν μ ν λ²μμμ λ²μ΄λκ² λλ€λ©΄, ν΄λΉνλ μλ¬(
isAlertFromRangeValue)λ₯Ό νμΈνκ³ κ²½κ³ μλμ νμ(isAlarmCycle,isAlertAnywhere)νλλ‘ κ΅¬ννμλ€
- ν΄λΉνλ μ 보λ₯Ό λ°μ€ λ΄μ μλ§κ² 보μ¬μ£Όκ³ ,
μ 보μ ν΄λΉνλ λ§κ±° λ° μλ³ μ λ³΄κ° μ¬μ©μκ° μ€μ ν μ ν λ²μμμ λ²μ΄λκ² λλ€λ©΄, ν΄λΉνλ μλ¬(
- React Queryλ‘ λ€νΈμν¬ λκΉ νμΈνκΈ° (
components/aBox/hooks/useFetchJsonData.ts)- useQueryλ axios λ₯Ό ν΅ν fetchλ₯Ό μ§ννκ³ , κ·Έ κ²°κ³Όλ₯Ό queryλ‘ λ°ννλ€
- μλ£ λͺ¨λν°λ§μ νλ μλΉμ€ νΉμ±μ, λ μ μνκ²
10μ΄ μ΄μ μ°κ²°μ μ€ν¨νμ λ μ°λ¦¬λ λ€νΈμν¬κΈ° λκΈ΄ connection lost μν(isFetchError)λ₯Ό κ²½κ³ νλ κ²μ΄ νμμ μ΄μλ€ - μ΄λ₯Ό μν΄
axios μ timeoutκ°μ 11μ΄λ‘ μ§μ ν΄μ£Όμκ³ ,react-queryμ failureCount μμ±μ μ΄μ©νμ¬ 11μ΄λμ 1λ² timeoutμ΄ μΌμ΄λ¬μ λλΆν° κ²½κ³ νλλ‘ κ΅¬ννμλ€
- 1μ΄μ ν λ²μ©μ μ¦μ 리ν¨μΉμ΄ νμνμ¬, ν¨μΉ λΌμ΄λΈλ¬λ¦¬λ‘
-
κ·Έλν μ°¨νΈ (
components/aBox/chart/chartConfig.ts)- JSON & CSV
1μ΄μ ν λ²μ© νμ μ 보λ₯Ό λ°κΈ° μν΄JSON ν΅μμ νμκ³ ,μΆμ λ λ°μ΄ν°λ₯Ό μ°¨νΈλ‘ κ°μννκΈ° μν΄μCSV ν μ΄λΈμ ν΅μνμ¬ μμ νμλ€ λ§μ μμ λ°μ΄ν°λ₯Ό CSV ν μ΄λΈλ‘ λ°μμ΄μΌλ‘μ¨ λ³΄λ€ λ μμ μ©λμΌλ‘ μ²λ¦¬ν μ μμλ€ - μ°¨νΈ λΌμ΄λΈλ¬λ¦¬λ‘, Zoom in & out κΈ°λ₯μ΄ νΈλ¦¬νκ² κ΅¬νλμ΄ μλ apexchart λΌμ΄λΈλ¬λ¦¬ μ¬μ©νμμΌλ,
ν° λͺ¨λ ν¬κΈ°λ‘ νμΈν
μκ°μ΄ λ°©λνμ¬
chartjs λΌμ΄λΈλ¬λ¦¬μ¬μ©νμ¬ μ§ννμλ€ react-chartjs-2λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬stateλ₯Ό νμ©νμ¬ μ€μ μ 보λ₯Ό ꡬμ±νκ³ λ λλ§νμλ€- μ§μ
panningκ³ΌzoomκΈ°λ₯μ λ²νΌ ν΄λ¦μ μ΄μ©νμ¬ κ΅¬ννμλ€ μ°¨νΈ λ°μ΄ν° λ°°μ΄ μ²λ¦¬μDOMμμ useRef νμ μ¬μ©ν΄,CSV νμΌκ³Ό PDF νμΌ λ€μ΄λ‘λλ₯Ό ꡬννμλ€
- JSON & CSV
-
Recoilκ³ΌLocal Storageκ΄λ¦¬μ μ΄μRecoil: λ°μ€ 리μ€νΈμ κ΅¬μ± μ 보λ€μ λ΄κ³ 첫 λ λλ§ μμ μ΄λ₯Ό νμ©ν μ μλλ‘ νλ state- μ΄λ₯Ό ν΅ν΄
λ°μ€ 리μ€νΈλ₯Ό μΉμ
μ μλ§κ² μ λ ¬νμ¬ λ³΄μ¬μ€κ³Ό λμμ
μΉμ
μ’
λ₯λ₯Ό λ°κΏ μ μλ
λͺ¨λ 체μΈμ§κΈ°λ₯κ³Όλ°μ€ 리μ€νΈμ νμ±ν μ 무λ₯Ό ν κΈλ§νλ κΈ°λ₯ λ± μ ꡬννμλ€
- μ΄λ₯Ό ν΅ν΄
λ°μ€ 리μ€νΈλ₯Ό μΉμ
μ μλ§κ² μ λ ¬νμ¬ λ³΄μ¬μ€κ³Ό λμμ
μΉμ
μ’
λ₯λ₯Ό λ°κΏ μ μλ
Local Storage: κ° λ°μ€λ€μ λΉνλ°μ± μ 보λ€μ λ΄κ³ 첫 λ λλ§ μμ μ΄κΈ°κ°λ€μ μ€μ νλλ‘ νλ string κ°
-
λλκ·Έ μ€ λλ (
components/main/MainBoxSection.tsx)react-beautiful-dndλΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νμλ€- λ°μ€μ ν€λλ₯Ό μ‘κ³ λλκ·Ένμ¬ μνλ μμΉλ‘ μ΄λμν¬ μ μλλ‘ κ΅¬ννμλ€
- DragDropContext 컨νμ€νΈ λ΄μμ DropResult μ λλκΉ μ΄λ²€νΈλ₯Ό μ μνλ€ Droppable λ°μ€λ₯Ό λ°°μΉν΄μ£Όκ³ κ·Έ λ΄μμ λ°μ€λ§λ€μ Draggable μ»΄ν¬λνΈλ₯Ό μ μν΄μ£Όμ΄ μ¬μ©νλ€ μ΄ λ Draggable μ»΄ν¬λνΈ λ΄μμ λ°μ€λ₯Ό μ μνλ©΄μ provided.dragHandleProps λ₯Ό λ°μ€μ ν€λμ μ λ¬νμ¬ μ‘κ³ λλκ·Έ ν μ μλ μμ±μ λΆμ¬νλ€
PM & Design @nayoung
Develop @SNUPI
Main Layout Design @jihyun
22/03 ~ 22/05, upper than 400 commits
.
βββsrc
β βββ assets
β β βββ icons
β β β βββ ...
β β βββ images
β β β βββ ...
β β βββ assets.d.ts
β βββ styles
β β βββ aBox
β β β βββ ...
β β βββ popUp.ts
β βββ utils
β β βββ libs
β β β βββ fetchJsonData.ts
β β βββ tempCsvData.ts
β β βββ initialJsonData.ts
β β βββ atoms.ts
β β βββ types.ts
β βββ components
β β βββ Router.tsx
β β βββ pages
β β β βββ Error404.tsx
β β β βββ PreMain.tsx
β β β βββ Main.tsx
β β βββ hooks
β β β βββ useClosingModal.ts
β β βββ main
β β β βββ popUp
β β β β βββ ...
β β β βββ ...
β β βββ aBox
β β β βββ common
β β β β βββ ...
β β β βββ fluidBox
β β β β βββ ...
β β β βββ urineBox
β β β β βββ ...
β β β βββ popUp
β β β β βββ ...
β β β βββ chart
β β β β βββ BoxChart.tsx
β β β β βββ BoxChartView.tsx
β β β β βββ chartConfig.ts
β β β β βββ ...
β β β βββ util
β β β β βββ parseToDoubleDigits.ts
β β β βββ hooks
β β β β βββ useRangeValueInput.ts
β β β β βββ useFetchJsonData.ts
β β β βββ ABox.tsx
β β β΄ βββ ABoxView.tsx
βββ .eslintrc.json
βββ .prettierrc
βββ tsconfig.json
