Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 0 additions & 1 deletion Web
Submodule Web deleted from aebc3e
1 change: 1 addition & 0 deletions Web/.github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @hyesngy
23 changes: 23 additions & 0 deletions Web/.github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<!-- PR 제λͺ©μ€ "Create Week{μ£Όμ°¨} Mission{번호}" 으둜 μž‘μ„± -->
<!-- ex) Create Week1 Mission1 -->

## πŸ“ λ―Έμ…˜ 번호
<!-- 주차와 λ―Έμ…˜ 번호λ₯Ό λ„£μ–΄μ£Όμ„Έμš” -->
Nμ£Όμ°¨ Misson N

## πŸ“‹ κ΅¬ν˜„ 사항
<!-- κ΅¬ν˜„ν•œ λ‚΄μš©μ„ bullet point둜 μž‘μ„±ν•΄μ£Όμ„Έμš” -->
-

## πŸ“Ž μŠ€ν¬λ¦°μƒ·
<!-- λ―Έμ…˜ κ΅¬ν˜„ ν™”λ©΄μ˜ μŠ€ν¬λ¦°μƒ·μ„ μ²¨λΆ€ν•΄μ£Όμ„Έμš” -->


## βœ… 체크리슀트
- [ ] Merge ν•˜λ €λŠ” λΈŒλžœμΉ˜κ°€ μ˜¬λ°”λ₯΄κ²Œ μ„€μ •λ˜μ–΄ μžˆλ‚˜μš”?
- [ ] λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν–ˆμ„ λ•Œ μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•Šλ‚˜μš”?
- [ ] λΆˆν•„μš”ν•œ 주석이 μ œκ±°λ˜μ—ˆλ‚˜μš”?
- [ ] μ½”λ“œ μŠ€νƒ€μΌμ΄ μΌκ΄€μ μΈκ°€μš”?

## πŸ€” 질문 사항
<!-- λ‹€λ₯Έ μŠ€ν„°λ””μ›λ“€μ—κ²Œ κΆκΈˆν•œ 점이 μžˆλ‹€λ©΄ μž‘μ„±ν•΄μ£Όμ„Έμš” -->
14 changes: 14 additions & 0 deletions Web/.github/workflows/auto-autor-assign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Auto Author Assign

on:
pull_request_target:
types: [ opened, reopened ]

permissions:
pull-requests: write

jobs:
assign-author:
runs-on: ubuntu-latest
steps:
- uses: toshimaru/[email protected]
3 changes: 3 additions & 0 deletions Web/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
# Keep environment variables out of version control
.env
53 changes: 53 additions & 0 deletions Web/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# πŸ€ HSU UMC 8th Web πŸ€


## πŸ‘€Β μŠ€ν„°λ””μ›
**πŸ‘΄πŸΌSenior**


| <img src="https://avatars.githubusercontent.com/u/165576376?s=96&v=4" width=100> | <img src="https://avatars.githubusercontent.com/u/113487989?s=96&v=4" width=100> | <img src="https://avatars.githubusercontent.com/u/180927161?s=96&v=4" width=100> |<img src="https://avatars.githubusercontent.com/u/139767837?s=96&v=4" width=100> | <img src="https://avatars.githubusercontent.com/u/146899497?s=96&v=4" width=100> | <img src="https://avatars.githubusercontent.com/u/147235267?s=96&v=4" width=100> |
| :---: | :---: | :---: | :---: | :---: | :---: |
| [μœ€ν˜œμ„±](https://github.com/hyesngy) | [μ–‘μΈμ„œ](https://github.com/sheepyis) | [μš°μ •ν˜](https://github.com/woojo230) | [μœ€μƒν˜](https://github.com/ysh2002m) | [쑰희연](https://github.com/joyeeon) | [μž„μ„±ν›ˆ](https://github.com/PocheonLim) |

**πŸ‘ΆπŸΌJunior**

| <img src="https://avatars.githubusercontent.com/u/158552165?s=96&v=4" width=100> | <img src="https://avatars.githubusercontent.com/u/147246023?s=96&v=4" width=100> | <img src="https://avatars.githubusercontent.com/u/160628390?s=96&v=4" width=100> | <img src="https://avatars.githubusercontent.com/u/163666284?s=96&v=4" width=100> |<img src="https://avatars.githubusercontent.com/u/202471958?s=96&v=4" width=100> |
| :---: | :---: | :---: | :---: | :---: |
| [λ°•μ„Έμ›…](https://github.com/hardwoong) | [μ›μ€€μ˜](https://github.com/geg222) | [μž„ν˜œλ―Έ](https://github.com/wendy0802) | [μœ μƒμ™„](https://github.com/wantkdd) | [정동열](https://github.com/dongyeol02) |

<br>


## πŸ€™πŸΌ μ»¨λ²€μ…˜
### πŸ’‘μ»€λ°‹ λ©”μ‹œμ§€
βœ… **feat: Create Week{μ£Όμ°¨} Mission{번호}**

ex) 1μ£Όμ°¨ λ―Έμ…˜ 1 μ™„λ£Œν•œ 경우
<br>
`feat: Create Week1 Mission1`

<br>

βœ… **{컀밋 νƒœκ·Έ}: {λ©”μ‹œμ§€}**

ex) `feat: λŒ“κΈ€ 등둝 κΈ°λŠ₯ μΆ”κ°€`


<br>

### πŸ’« commit νƒœκ·Έ

| νƒœκ·Έ | μ„€λͺ… |
| --- | --- |
| feat | μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€ |
| fix | 버그 μˆ˜μ • |
| docs | λ¬Έμ„œ μˆ˜μ • |
| style | μ½”λ“œ μŠ€νƒ€μΌ μˆ˜μ • |
| refactor | μ½”λ“œ λ¦¬νŒ©ν† λ§ |
| design | UI, CSS μˆ˜μ • 및 λ””μžμΈ λ³€κ²½ |
| comment | 주석 μΆ”κ°€(μ½”λ“œ λ³€κ²½ X) ν˜Ήμ€ μ˜€νƒ€ μˆ˜μ • |
| rename | 파일, 폴더λͺ… μˆ˜μ • ν˜Ήμ€ 이동 |
| remove | 파일, 폴더 μ‚­μ œ
<br>


Empty file added Web/Week0/dongyeol02/.gitkeep
Empty file.
38 changes: 38 additions & 0 deletions Web/Week0/dongyeol02/1μ£Όμ°¨/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="./style.css" />
<script type="module" src="./dist/script.js" defer></script>
<title>UMC TODO</title>
</head>
<body>
<main>
<div class="todo-container">
<h1 class="todo-container__header">YONG TODO</h1>
<form id="todo-form" class="todo-container__form">
<input
type="text"
id="todo-input"
class="todo-container__input"
placeholder="ν•  일을 μž…λ ₯ν•΄μ£Όμ„Έμš”"
required
/>
<!--λ²„νŠΌμ΄ λˆŒλ Έμ„λ•Œ μ–΄λ– ν•œ 행동을 μ·¨ν•˜κΈ° μœ„ν•΄μ„œ type="submit -->
<button type="submit" class="todo-container__button">ν•  일 μΆ”κ°€</button>
</form>
<div class="render-container">
<div class="render-container__section">
<h2 class="render-container__title">ν•  일</h2>
<ul id="todo-list" class="render-container__list"></ul>
</div>
<div class="render-container__section">
<h2 class="render-container__title">μ™„ 료</h2>
<ul id="done-list" class="render-container__list">
</ul>
</div>
</div>
</main>
</body>
</html>
91 changes: 91 additions & 0 deletions Web/Week0/dongyeol02/1μ£Όμ°¨/src/script.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
//1. HTML μš”μ†Œ 선택
const todoInput = document.getElementById("todo-input") as HTMLInputElement;
const todoForm = document.getElementById("todo-form") as HTMLFormElement;
const todoList = document.getElementById("todo-list") as HTMLUListElement;
const doneList = document.getElementById("done-list") as HTMLUListElement;

//2. ν•  일이 μ–΄λ–¨κ²Œ 생긴건지 Type μ •μ˜
type Todo = {
id: number;
text: string;
};
let todos: Todo[] = [];
let doneTasks: Todo[] = [];

//-ν•  일 λͺ©λ‘ λ Œλ”λ§ ν•˜λŠ” ν•¨μˆ˜ μ •μ˜
const renderTasks = (): void => {
todoList.innerHTML = "";
doneList.innerHTML = "";

todos.forEach((todo): void => {
const li = createTodoElement(todo, false);
todoList.appendChild(li);
});

doneTasks.forEach((todo) => {
const li = createTodoElement(todo, true);
doneList.appendChild(li);
});
};

//3. ν•  일 ν…μŠ€νŠΈ μž…λ ₯ 처리 ν•¨μˆ˜ (곡백 자λ₯΄κΈ°)
/*const getTodoText = (): string => {
return todoInput.value.trim();
};*/

const getTodoText = (): string => todoInput.value.trim();

//4.ν•  일 μΆ”κ°€ 처리 ν•¨μˆ˜
const addTodo = (text: string): void => {
todos.push({ id: Date.now(), text: text });
todoInput.value = "";
renderTasks();
};
//5.ν•  일 μƒνƒœ λ³€κ²½ (*μ™„λ£Œ 이동)
const completeTodo = (todo: Todo): void => {
todos = todos.filter((t): boolean => t.id !== todo.id);
doneTasks.push(todo);
renderTasks();
};
//6. μ™„λ£Œλ­ ν•  일 μ‚­μ œ ν•¨μˆ˜
const deleteTodo = (todo: Todo): void => {
doneTasks = doneTasks.filter((t): boolean => t.id !== todo.id);
renderTasks();
};

//7. 할일 아이쳄 생성 ν•¨μˆ˜ (μ™„λ£Œ 여뢀에 따라 λ²„νŠΌ ν…μŠ€νŠΈλ‚˜ 색상 μ„€μ •)
const createTodoElement = (todo: Todo, isDone: boolean): HTMLLIElement => {
const li = document.createElement("li");
li.classList.add("render-container__item");
li.textContent = todo.text;
const button = document.createElement("button");
button.classList.add("render-container__item-button");

if (isDone) {
button.textContent = "μ‚­μ œ";
button.style.backgroundColor = "#dc3545";
} else {
button.textContent = "μ™„λ£Œ";
button.style.backgroundColor = "#28a745";
}

button.addEventListener("click", (): void => {
if (isDone) {
deleteTodo(todo);
} else {
completeTodo(todo);
}
});

li.appendChild(button);
return li;
};

//8. 폼 제좜 이벀트 λ¦¬μŠ€λ„ˆ!
todoForm.addEventListener("submit", (event: Event): void => {
event.preventDefault();
const text = getTodoText();
if (text) {
addTodo(text);
}
});
113 changes: 113 additions & 0 deletions Web/Week0/dongyeol02/1μ£Όμ°¨/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

body {
font-family: "Roboto", sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh; /*VH(Viewport Height) : 뷰포트 λ†’μ΄μ˜ 1% 길이와 λ™μΌν•©λ‹ˆλ‹€.*/
background-color: #f1f1f1;
}

.todo-container {
background-color: white;
padding: 20px;
border-radius: 12px;
width: 350px;
text-align: center;
}

.todo-container__header {
font-size: 24px;
margin-bottom: 16px;
}

.todo-container__form {
display: flex;
gap: 10px;
margin-bottom: 20px;
}

.todo-container__input {
flex: 1; /*속성값이 1 이상이면 flex item의 μ›λž˜ 크기에 상관없이 flex containerλ₯Ό μ±„μš°λ„λ‘ flex item의 크기가 컀진닀.*/
padding: 10px;
border: 1px black solid;
border-radius: 6px;
font-size: 14px;
}

.todo-container__button {
background-color: greenyellow;
color: white;
border: none;
padding: 8px 12px;
cursor: pointer; /*μ»€μ„œ λ°”κΎΈκΈ°*/
border-radius: 6px;
transition: backgrond-color 0.3s ease;
}

.todo-container__button:hover {
background-color: green;
}
.render-container {
display: flex;
justify-content: space-between; /*쒌우둜 μ°’μ–΄μ§€κ²Œλ” 배치!!*/
gap: 20px;
}
.render-container__title {
font-size: 18px;
margin-bottom: 10px;
display: flex;
flex-direction: row;
justify-content: center;
}

.render-container__section {
width: 100%;
text-align: left;
}
.render-container__list {
list-style: none;
margin: 0;
padding: 0;
}

.render-container__item {
display: flex;
justify-content: space-between;
align-items: center;

padding: 8px;
border-bottom: 1px solid skyblue;
background-color: #f1f1f1;

border-radius: 6px;
margin-bottom: 6px;

width: 100%;
}

.render-container__item-text {
flex: 1;
}

.render-container__item-button {
background-color: red;
color: white;
border: none;
padding: 6px, 10px;

cursor: pointer;
border-radius: 3px;
font-size: 12px;
transition: background-color 0.3s ease;
width: 30%;
height: 25px;
}
.render-container__item-button:hover {
background-color: rgb(217, 79, 79);
}
19 changes: 19 additions & 0 deletions Web/Week0/dongyeol02/1μ£Όμ°¨/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es2016", // ECMAScript 2016으둜 컴파일
"module": "ES2015", // ES2015 λͺ¨λ“ˆ μ‹œμŠ€ν…œ μ‚¬μš©
"rootDir": "./src", // μ†ŒμŠ€ 파일의 루트 디렉토리
"outDir": "./dist", // 컴파일된 파일이 μ €μž₯될 디렉토리
"esModuleInterop": true, // ES λͺ¨λ“ˆ ν˜Έν™˜μ„± μ„€μ •
"forceConsistentCasingInFileNames": true, // 파일 μ΄λ¦„μ˜ λŒ€μ†Œλ¬Έμž 일관성 κ°•μ œ
"strict": true, // μ—„κ²©ν•œ νƒ€μž… 검사
"skipLibCheck": true, // 라이브러리 파일 검사 κ±΄λ„ˆλœ€
"removeComments": true, // 컴파일된 μ½”λ“œμ—μ„œ 주석 제거
"noEmitOnError": false, // 컴파일 μ—λŸ¬ λ°œμƒ μ‹œ 파일 생성 μ•ˆ 함
"noUnusedLocals": true, // μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ§€μ—­ λ³€μˆ˜μ— λŒ€ν•΄ μ—λŸ¬ λ°œμƒ
"noUnusedParameters": true, // μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ§€κ°œλ³€μˆ˜μ— λŒ€ν•΄ μ—λŸ¬ λ°œμƒ
"noImplicitReturns": true, // ν•¨μˆ˜μ—μ„œ λͺ…μ‹œμ μœΌλ‘œ 값을 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” 경우 μ—λŸ¬ λ°œμƒ
"noFallthroughCasesInSwitch": true, // switch λ¬Έμ—μ„œ fallthrough λ°©μ§€
"noUncheckedIndexedAccess": true // 인덱슀 μ ‘κ·Ό μ‹œ μ²΄ν¬λ˜μ§€ μ•Šμ€ 경우 μ—λŸ¬ λ°œμƒ
}
}
Loading