@@ -110,7 +111,7 @@ function isMoreThanTwoWords(stationName) {
}
}
-function isNotDuplicateSatationName(stationName, stations) {
+function isNotDuplicateSatationName(stationName, stations = []) {
if (!stations.includes(stationName)) {
return true;
}
From 8450b1faf0e2051e377c2083563c904c0bc6166c Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Sun, 13 Dec 2020 23:53:12 +0900
Subject: [PATCH 21/52] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/StationManager.js | 11 -----------
1 file changed, 11 deletions(-)
diff --git a/src/pages/StationManager.js b/src/pages/StationManager.js
index 7ef22681e..57706f46b 100644
--- a/src/pages/StationManager.js
+++ b/src/pages/StationManager.js
@@ -33,17 +33,6 @@ export default class StationManager extends Component {
};
}
- setState(state) {
- this.state = state;
- dispatchReRender();
- }
-
- setStore(store) {
- this.store = store;
- localStorage.setItem("store", JSON.stringify(store));
- dispatchReRender();
- }
-
mount() {
const stationNameInput = document.getElementById(
elementMap.stationNameInput
From 056450bd86a91f419edc50388236df7ae0a00a8e Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Sun, 13 Dec 2020 23:55:32 +0900
Subject: [PATCH 22/52] =?UTF-8?q?feat:=20=EC=85=80=EB=A0=89=ED=84=B0?=
=?UTF-8?q?=EC=97=90=20=EB=A1=9C=EC=BB=AC=EC=8A=A4=ED=86=A0=EB=A6=AC?=
=?UTF-8?q?=EC=A7=80=20=EC=A0=95=EB=B3=B4=20=EA=B0=80=EC=A0=B8=EC=98=A4?=
=?UTF-8?q?=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=20=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/core/Component.js | 14 +++++++++++++
src/index.js | 2 ++
src/pages/LineManager.js | 45 ++++++++++++++++++++--------------------
3 files changed, 38 insertions(+), 23 deletions(-)
diff --git a/src/core/Component.js b/src/core/Component.js
index cfcb559ef..f0a04bc46 100644
--- a/src/core/Component.js
+++ b/src/core/Component.js
@@ -6,9 +6,23 @@ export default class Component {
this.store = {};
}
+ setState(state) {
+ this.state = state;
+ dispatchReRender();
+ }
+
setStore(store) {
this.store = store;
localStorage.setItem("store", JSON.stringify(store));
dispatchReRender();
}
+
+ create() {
+ const store = localStorage.getItem("store");
+ if (store) {
+ this.store = JSON.parse(store);
+ }
+ }
+
+ afterCreate() {}
}
diff --git a/src/index.js b/src/index.js
index 8f7bbf783..8b79a579d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -23,6 +23,8 @@ lineManagerButton.addEventListener("click", () => {
});
function reRenderPage() {
+ page.create();
+ page.afterCreate();
pages.innerHTML = page.render();
page.mount();
}
diff --git a/src/pages/LineManager.js b/src/pages/LineManager.js
index bfa77b5fc..c6190b8b1 100644
--- a/src/pages/LineManager.js
+++ b/src/pages/LineManager.js
@@ -1,6 +1,5 @@
import { dispatchReRender } from "../utils/events.js";
-
-const stations = ["μΈμ²", "μμμ°", "μμ²", "μ λλ¦Ό", "λν", "μ€κΈ"];
+import Component from "../core/Component.js";
const elementMap = {
lineNameInput: "line-name-input",
@@ -10,41 +9,41 @@ const elementMap = {
lineDeleteButton: "line-delete-button",
};
-export default class LineManager {
+export default class LineManager extends Component {
constructor() {
+ super();
this.state = {
lineName: "",
- lineStartStation: stations[0],
- lineEndStation: stations[0],
- lines: [],
+ lineStartStation: "",
+ lineEndStation: "",
};
this.handleLineAddButton = () => {
- const { lineEndStation, lineStartStation, lineName, lines } = this.state;
- const newLine = {
- name: lineName,
- start: lineStartStation,
- end: lineEndStation,
+ const line = {
+ name: this.state.lineName,
+ start: this.state.lineStartStation,
+ end: this.state.lineEndStation,
};
- console.log(this.state.lines);
- if (isDuplicateLine(lines, lineName)) {
+ const lines = this.store.lines ? [...this.store.lines, line] : [line];
+ if (isDuplicateLine(this.store.lines, line.name)) {
alert("μ€λ³΅λ λ
Έμ μ΄ μ‘΄μ¬ν©λλ€");
} else {
- this.setState({ ...this.state, lines: [...this.state.lines, newLine] });
- console.log(this.state.lines);
+ this.setStore({ ...this.store, lines });
}
};
this.handleLineDeleteButton = (index) => {
- this.state.lines.splice(index, 1);
- this.setState({ ...this.state });
+ this.store.lines.splice(index, 1);
+ this.setStore({ ...this.store });
};
}
- setState(state) {
- this.state = state;
- console.log(this.state);
- dispatchReRender();
+ afterCreate() {
+ const { lineStartStation, lineEndStation } = this.state;
+ const { stations } = this.store;
+ if (lineStartStation.length === 0)
+ this.state.lineStartStation = stations[0];
+ if (lineEndStation.length === 0) this.state.lineEndStation = stations[0];
}
mount() {
@@ -58,7 +57,6 @@ export default class LineManager {
lineStartStationSelector.addEventListener("change", (event) => {
this.setState({ ...this.state, lineStartStation: event.target.value });
});
-
const lineEndStationSelector = document.getElementById(
elementMap.lineEndStationSelector
);
@@ -80,7 +78,8 @@ export default class LineManager {
}
render() {
- const { lineName, lineStartStation, lineEndStation, lines } = this.state;
+ const { lines = [], stations = [] } = this.store;
+ const { lineName, lineStartStation, lineEndStation } = this.state;
return `
λ
Έμ μ΄λ¦
From 14fd2733294320ed9b37b412a0934b6534445a8c Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Sun, 13 Dec 2020 23:59:20 +0900
Subject: [PATCH 23/52] =?UTF-8?q?refactor:=20=EC=BB=B4=ED=8F=AC=EB=84=8C?=
=?UTF-8?q?=ED=8A=B8=EC=97=90=20mount,=20render=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/core/Component.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/core/Component.js b/src/core/Component.js
index f0a04bc46..4fb87f321 100644
--- a/src/core/Component.js
+++ b/src/core/Component.js
@@ -25,4 +25,8 @@ export default class Component {
}
afterCreate() {}
+
+ mount() {}
+
+ render() {}
}
From 8091eb2356b044c5b53c17261d4ff61488f402d0 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 11:43:07 +0900
Subject: [PATCH 24/52] Update README.md
---
README.md | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/README.md b/README.md
index 1d4c699de..4c4f0b695 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,18 @@
- λ
Έμ μΆκ° λ²νΌ ν΄λ¦ μ λ
Έμ μΆκ°
- μμ λ²νΌ ν΄λ¦ μ λ
Έμ μμ
+### 3. κ΅¬κ° κ΄λ¦¬ νμ΄μ§
+
+#### 1) λ
Έμ μ ν
+
+- λ‘컬μ€ν 리μ§μμ λ
Έμ μ λ°μμ λ²νΌμΌλ‘ μμ±
+
+#### 2) μ§νμ² κ΅¬κ° λͺ©λ‘ κ΄λ¦¬
+
+- λ
Έμ μ λ±λ‘λ μ μ κ±°
+- μ’
μ μ κ±° μ λ€μ μμ΄ μ’
μ
+- λ
Έμ μ ν¬ν¨λ μμ΄ 2κ° μ΄νμΌ λ, μ μ κ±° λΆκ°
+
## π κΈ°λ₯ μꡬμ¬ν
### μ§νμ² μ κ΄λ ¨ κΈ°λ₯
From 9fedab0892d896de2681486e68ab2f2114f6e812 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 12:10:53 +0900
Subject: [PATCH 25/52] =?UTF-8?q?style:=20=ED=85=8C=EC=9D=B4=EB=B8=94=20?=
=?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.html b/index.html
index 390b3420f..f2318dd3c 100644
--- a/index.html
+++ b/index.html
@@ -9,7 +9,7 @@
}
td {
padding: 2px;
- border: 1px solid black;
+ border: 3px double black;
}
thead {
From 7187f3d012fd17227502dea258a06f2a6fd83aac Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 12:12:34 +0900
Subject: [PATCH 26/52] =?UTF-8?q?feat:=20=EA=B5=AC=EA=B0=84=20=EA=B4=80?=
=?UTF-8?q?=EB=A6=AC=20=EB=B2=84=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C?=
=?UTF-8?q?=20=ED=99=94=EB=A9=B4=20=EC=97=B0=EA=B2=B0=20=EA=B8=B0=EB=8A=A5?=
=?UTF-8?q?=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/index.js | 11 ++++++++--
src/pages/SectionManager.js | 43 +++++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+), 2 deletions(-)
create mode 100644 src/pages/SectionManager.js
diff --git a/src/index.js b/src/index.js
index 8b79a579d..af0937148 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,16 +1,18 @@
import LineManager from "./pages/lineManager.js";
+import SectionManager from "./pages/SectionManager.js";
import StationManager from "./pages/StationManager.js";
import { dispatchReRender, RE_RENDER_EVENT } from "./utils/events.js";
const stationManager = new StationManager();
const lineManager = new LineManager();
+const sectionManager = new SectionManager();
const pages = document.querySelector("#app");
+let page;
const stationManagerButton = document.getElementById("station-manager-button");
const lineManagerButton = document.getElementById("line-manager-button");
-
-let page;
+const sectionManagerButton = document.getElementById("section-manager-button");
stationManagerButton.addEventListener("click", () => {
page = stationManager;
@@ -22,6 +24,11 @@ lineManagerButton.addEventListener("click", () => {
dispatchReRender();
});
+sectionManagerButton.addEventListener("click", () => {
+ page = sectionManager;
+ dispatchReRender();
+});
+
function reRenderPage() {
page.create();
page.afterCreate();
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
new file mode 100644
index 000000000..e30f9f57e
--- /dev/null
+++ b/src/pages/SectionManager.js
@@ -0,0 +1,43 @@
+import Component from "../core/Component.js";
+
+export default class SectionManager extends Component {
+ constructor() {
+ super();
+ }
+
+ render() {
+ return `
+
+
ꡬκ°μ μμ ν λ
Έμ μ μ νν΄μ£ΌμΈμ.
+
+
+
+
+
+
1νΈμ κ΄λ¦¬
+ κ΅¬κ° λ±λ‘
+
+
+
+
+
+
+
+ | μμ |
+ μ΄λ¦ |
+ μ€μ |
+
+
+
+
+ | 0 |
+ μΈμ² |
+
+
+ |
+
+
+
+ `;
+ }
+}
From b06a08173e81f8451a6d6c7510bf69198b3e3937 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 12:40:33 +0900
Subject: [PATCH 27/52] =?UTF-8?q?feat:=20=EB=85=B8=EC=84=A0=20=EC=84=A0?=
=?UTF-8?q?=ED=83=9D=20=EB=B2=84=ED=8A=BC=EA=B3=BC=20=EC=85=80=EB=A0=89?=
=?UTF-8?q?=ED=8A=B8=20=ED=83=9C=EA=B7=B8=EC=97=90=20=EB=A1=9C=EC=BB=AC?=
=?UTF-8?q?=EC=8A=A4=ED=86=A0=EB=A6=AC=EC=A7=80=20=EC=A0=95=EB=B3=B4=20?=
=?UTF-8?q?=EB=B6=80=EC=97=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 35 ++++++++++++++++++++++++++++-------
1 file changed, 28 insertions(+), 7 deletions(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index e30f9f57e..de2704e5c 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -1,24 +1,43 @@
import Component from "../core/Component.js";
+const elementMap = {
+ sectionLineMenuButton: "section-line-menu-button",
+ sectionStationSelector: "section-station-selector",
+ sectionOrderInput: "section-order-input",
+ sectionAddButton: "section-add-button",
+ sectionDeleteButton: "section-delete-button",
+};
export default class SectionManager extends Component {
constructor() {
super();
}
render() {
+ const { stations = [], lines = [] } = this.store;
+ console.log(stations, lines);
return `
ꡬκ°μ μμ ν λ
Έμ μ μ νν΄μ£ΌμΈμ.
-
-
-
+ ${lines
+ .map(
+ (line) =>
+ ``
+ )
+ .join("")}
1νΈμ κ΄λ¦¬
κ΅¬κ° λ±λ‘
-
-
-
+
+
+
@@ -33,7 +52,9 @@ export default class SectionManager extends Component {
| 0 |
μΈμ² |
-
+
|
From a2ed6203754d966193e6745c0534711e3d73ec09 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 14:32:34 +0900
Subject: [PATCH 28/52] =?UTF-8?q?feat:=20=EB=85=B8=EC=84=A0=20=EC=84=A0?=
=?UTF-8?q?=ED=83=9D=20=EB=B2=84=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C?=
=?UTF-8?q?=20=EA=B5=AC=EA=B0=84=20=EA=B4=80=EB=A6=AC=20=ED=99=94=EB=A9=B4?=
=?UTF-8?q?=20=EC=97=B0=EA=B2=B0=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 55 ++++++++++++++++++++++++++-----------
1 file changed, 39 insertions(+), 16 deletions(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index de2704e5c..dafb141ae 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -10,24 +10,34 @@ const elementMap = {
export default class SectionManager extends Component {
constructor() {
super();
+ this.state = {
+ selectedLine: null,
+ };
+ this.handleLineButtonClick = (index) => {
+ const line = this.store.lines[index];
+ this.setState({ ...this.state, selectedLine: line });
+ console.log(this.state.selectedLine);
+ };
+ }
+
+ mount() {
+ const sectionLineMenuButtons = document.getElementsByClassName(
+ elementMap.sectionLineMenuButton
+ );
+ [...sectionLineMenuButtons].forEach((button, index) => {
+ button.addEventListener("click", () => {
+ this.handleLineButtonClick(index);
+ });
+ });
}
render() {
const { stations = [], lines = [] } = this.store;
- console.log(stations, lines);
- return `
-
-
ꡬκ°μ μμ ν λ
Έμ μ μ νν΄μ£ΌμΈμ.
- ${lines
- .map(
- (line) =>
- ``
- )
- .join("")}
-
+ const { selectedLine } = this.state;
+ console.log(Boolean(selectedLine));
+ let section = `
-
1νΈμ κ΄λ¦¬
+ ${selectedLine ? selectedLine.name : ""} κ΄λ¦¬
κ΅¬κ° λ±λ‘
- | 0 |
- μΈμ² |
+ |
+ |
|
-
+
+ `;
+ return `
+
+
ꡬκ°μ μμ ν λ
Έμ μ μ νν΄μ£ΌμΈμ.
+ ${lines
+ .map(
+ (line) =>
+ ``
+ )
+ .join("")}
+
+ ${selectedLine ? section : `
`}
`;
}
}
From 8cc6e62e017be1c3814e16b69b9ec9a89f021b3c Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 15:43:29 +0900
Subject: [PATCH 29/52] =?UTF-8?q?feat:=20=EB=85=B8=EC=84=A0=20=EB=B2=84?=
=?UTF-8?q?=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20=ED=91=9C=EC=97=90?=
=?UTF-8?q?=20=EB=A1=9C=EC=BB=AC=20=EC=8A=A4=ED=86=A0=EB=A6=AC=EC=A7=80=20?=
=?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EB=B6=88=EB=9F=AC=EC=98=A4=EA=B8=B0=20?=
=?UTF-8?q?=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 55 ++++++++++++++++++++++++-------------
1 file changed, 36 insertions(+), 19 deletions(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index dafb141ae..2d9a3c4ab 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -11,11 +11,16 @@ export default class SectionManager extends Component {
constructor() {
super();
this.state = {
- selectedLine: null,
+ selectedLineName: null,
+ selectedLineStation: null,
};
this.handleLineButtonClick = (index) => {
const line = this.store.lines[index];
- this.setState({ ...this.state, selectedLine: line });
+ this.setState({
+ ...this.state,
+ selectedLineName: [line.name],
+ selectedLineStation: [line.start, line.end],
+ });
console.log(this.state.selectedLine);
};
}
@@ -33,18 +38,23 @@ export default class SectionManager extends Component {
render() {
const { stations = [], lines = [] } = this.store;
- const { selectedLine } = this.state;
- console.log(Boolean(selectedLine));
+ const { selectedLineName = [], selectedLineStation = [] } = this.state;
+
+ console.log(selectedLineStation);
let section = `
-
${selectedLine ? selectedLine.name : ""} κ΄λ¦¬
+ ${
+ selectedLineName ? selectedLineName[selectedLineName.length - 1] : null
+ } κ΄λ¦¬
κ΅¬κ° λ±λ‘
@@ -58,15 +68,22 @@ export default class SectionManager extends Component {
-
- |
- |
-
-
- |
-
+ ${
+ selectedLineStation
+ ? selectedLineStation
+ .map(
+ (line, index) =>
+ `
+ | ${index} |
+ ${line} |
+
+
+ |
+
`
+ )
+ .join("")
+ : null
+ }
`;
@@ -81,7 +98,7 @@ export default class SectionManager extends Component {
)
.join("")}
- ${selectedLine ? section : `
`}
+ ${selectedLineName && selectedLineStation ? section : `
`}
`;
}
}
From 275238f5b8eebaead858ee6aa4c82a1c68c5447d Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 16:30:46 +0900
Subject: [PATCH 30/52] =?UTF-8?q?feat:=20=EB=93=B1=EB=A1=9D=20=EB=B2=84?=
=?UTF-8?q?=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20=EA=B5=AC=EA=B0=84?=
=?UTF-8?q?=20=EC=B6=94=EA=B0=80=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index 2d9a3c4ab..e6d47beba 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -14,6 +14,7 @@ export default class SectionManager extends Component {
selectedLineName: null,
selectedLineStation: null,
};
+
this.handleLineButtonClick = (index) => {
const line = this.store.lines[index];
this.setState({
@@ -23,6 +24,13 @@ export default class SectionManager extends Component {
});
console.log(this.state.selectedLine);
};
+
+ this.handleAddButtonClick = (station, order) => {
+ this.state.selectedLineStation.splice(order, 0, station);
+ this.setState({ ...this.state });
+ console.log(station, order);
+ console.log(this.state.selectedLineStation);
+ };
}
mount() {
@@ -34,6 +42,24 @@ export default class SectionManager extends Component {
this.handleLineButtonClick(index);
});
});
+
+ const sectionStationSelector = document.getElementById(
+ elementMap.sectionStationSelector
+ );
+
+ const sectionOrderInput = document.getElementById(
+ elementMap.sectionOrderInput
+ );
+
+ const sectionAddButton = document.getElementById(
+ elementMap.sectionAddButton
+ );
+ sectionAddButton.addEventListener("click", () => {
+ this.handleAddButtonClick(
+ sectionStationSelector.value,
+ sectionOrderInput.value
+ );
+ });
}
render() {
From 986f74eb759854fd04ca3f3b894e04bbf0f770b2 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 16:38:01 +0900
Subject: [PATCH 31/52] =?UTF-8?q?feat:=20=EC=A0=9C=EA=B1=B0=20=EB=B2=84?=
=?UTF-8?q?=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20=EA=B5=AC=EA=B0=84?=
=?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index e6d47beba..f66c9bb09 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -28,8 +28,11 @@ export default class SectionManager extends Component {
this.handleAddButtonClick = (station, order) => {
this.state.selectedLineStation.splice(order, 0, station);
this.setState({ ...this.state });
- console.log(station, order);
- console.log(this.state.selectedLineStation);
+ };
+
+ this.handleDeleteButtonClick = (index) => {
+ this.state.selectedLineStation.splice(index, 1);
+ this.setState({ ...this.state });
};
}
@@ -60,6 +63,15 @@ export default class SectionManager extends Component {
sectionOrderInput.value
);
});
+
+ const sectionDeleteButtons = document.getElementsByClassName(
+ elementMap.sectionDeleteButton
+ );
+ [...sectionDeleteButtons].forEach((button, index) => {
+ button.addEventListener("click", () => {
+ this.handleDeleteButtonClick(index);
+ });
+ });
}
render() {
From a06e61b24ed9cb1027303ccbd40fe9bc34a3d2b7 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 21:33:41 +0900
Subject: [PATCH 32/52] =?UTF-8?q?fix:=20=EB=A1=9C=EC=BB=AC=EC=8A=A4?=
=?UTF-8?q?=ED=86=A0=EB=A6=AC=EC=A7=80=EC=97=90=20=EC=A0=95=EB=B3=B4?=
=?UTF-8?q?=EB=A5=BC=20=EB=84=98=EA=B8=B0=EA=B3=A0=20=EB=B0=9B=EC=95=84?=
=?UTF-8?q?=EC=98=A4=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 102 ++++++++++++++++++++----------------
1 file changed, 58 insertions(+), 44 deletions(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index f66c9bb09..f244ee854 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -11,28 +11,27 @@ export default class SectionManager extends Component {
constructor() {
super();
this.state = {
- selectedLineName: null,
- selectedLineStation: null,
+ selectedLine: null,
};
this.handleLineButtonClick = (index) => {
- const line = this.store.lines[index];
- this.setState({
- ...this.state,
- selectedLineName: [line.name],
- selectedLineStation: [line.start, line.end],
- });
- console.log(this.state.selectedLine);
+ this.setState({ selectedLine: index });
};
- this.handleAddButtonClick = (station, order) => {
- this.state.selectedLineStation.splice(order, 0, station);
- this.setState({ ...this.state });
+ this.handleAddButtonClick = (order, station) => {
+ const { selectedLine } = this.state;
+ if (order.length === 0) {
+ alert("μμλ₯Ό μ
λ ₯νμΈμ");
+ return;
+ }
+
+ this.store.lines[selectedLine].stations.splice(order, 0, station);
+ deepClone();
};
this.handleDeleteButtonClick = (index) => {
- this.state.selectedLineStation.splice(index, 1);
- this.setState({ ...this.state });
+ this.store.lines[this.state.selectedLine].stations.splice(index, 1);
+ deepClone();
};
}
@@ -57,33 +56,30 @@ export default class SectionManager extends Component {
const sectionAddButton = document.getElementById(
elementMap.sectionAddButton
);
- sectionAddButton.addEventListener("click", () => {
+ sectionAddButton?.addEventListener("click", () => {
this.handleAddButtonClick(
- sectionStationSelector.value,
- sectionOrderInput.value
+ sectionOrderInput.value,
+ sectionStationSelector.value
);
});
const sectionDeleteButtons = document.getElementsByClassName(
elementMap.sectionDeleteButton
);
- [...sectionDeleteButtons].forEach((button, index) => {
- button.addEventListener("click", () => {
- this.handleDeleteButtonClick(index);
+ sectionDeleteButtons &&
+ [...sectionDeleteButtons].forEach((button, index) => {
+ button.addEventListener("click", () => {
+ this.handleDeleteButtonClick(index);
+ });
});
- });
}
render() {
const { stations = [], lines = [] } = this.store;
- const { selectedLineName = [], selectedLineStation = [] } = this.state;
-
- console.log(selectedLineStation);
- let section = `
+ const { selectedLine } = this.state;
+ const Section = () => `
-
${
- selectedLineName ? selectedLineName[selectedLineName.length - 1] : null
- } κ΄λ¦¬
+ ${lines[selectedLine]?.name} κ΄λ¦¬
κ΅¬κ° λ±λ‘
-
+
@@ -107,24 +105,23 @@ export default class SectionManager extends Component {
${
- selectedLineStation
- ? selectedLineStation
- .map(
- (line, index) =>
- `
- | ${index} |
- ${line} |
-
-
- |
-
`
- )
- .join("")
- : null
+ lines[selectedLine]?.stations
+ .map(
+ (station, index) =>
+ `
+ | ${index} |
+ ${station} |
+
+
+ |
+
`
+ )
+ .join("") || ""
}
`;
+
return `
ꡬκ°μ μμ ν λ
Έμ μ μ νν΄μ£ΌμΈμ.
@@ -136,7 +133,24 @@ export default class SectionManager extends Component {
)
.join("")}
- ${selectedLineName && selectedLineStation ? section : `
`}
+ ${isNull(selectedLine) ? "" : Section()}
`;
}
}
+
+function isEmpty(value) {
+ if (typeof value === "number") {
+ return false;
+ }
+ return Boolean(value);
+}
+
+function isNull(value) {
+ if (String(value) === "null") return true;
+ if (String(value) === "undefined") return true;
+}
+
+function deepClone() {
+ const store = JSON.stringify(this.store);
+ this.setStore(JSON.parse(store));
+}
From f420627ec4349785e1af9be7800ca56020fe6126 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 21:38:50 +0900
Subject: [PATCH 33/52] =?UTF-8?q?fix:=20=EC=8A=A4=ED=86=A0=EC=96=B4?=
=?UTF-8?q?=EC=9D=98=20=EB=9D=BC=EC=9D=B8=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?=
=?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/LineManager.js | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/pages/LineManager.js b/src/pages/LineManager.js
index c6190b8b1..6f92fa588 100644
--- a/src/pages/LineManager.js
+++ b/src/pages/LineManager.js
@@ -21,11 +21,11 @@ export default class LineManager extends Component {
this.handleLineAddButton = () => {
const line = {
name: this.state.lineName,
- start: this.state.lineStartStation,
- end: this.state.lineEndStation,
+ stations: [this.state.lineStartStation, this.state.lineEndStation],
};
const lines = this.store.lines ? [...this.store.lines, line] : [line];
- if (isDuplicateLine(this.store.lines, line.name)) {
+
+ if (isDuplicateLine(this.store.lines, this.state.lineName)) {
alert("μ€λ³΅λ λ
Έμ μ΄ μ‘΄μ¬ν©λλ€");
} else {
this.setStore({ ...this.store, lines });
@@ -134,8 +134,8 @@ export default class LineManager extends Component {
(line) =>
`
| ${line.name} |
- ${line.start} |
- ${line.end} |
+ ${line.stations[0]} |
+ ${line.stations[1]} |
|
@@ -149,6 +149,8 @@ export default class LineManager extends Component {
}
}
-function isDuplicateLine(lines, lineName) {
+function isDuplicateLine(lines = [], lineName) {
return lines.find((line) => line.name === lineName);
}
+
+// λ
Έμ μ΄λ¦ 곡백 λΆκ°λ₯ νλλ‘
From 2e443ba4c42895dc32a62cf4b01e6b44bcf99f85 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 22:13:46 +0900
Subject: [PATCH 34/52] Update README.md
---
README.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/README.md b/README.md
index 4c4f0b695..0173c7482 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,12 @@
- μ’
μ μ κ±° μ λ€μ μμ΄ μ’
μ
- λ
Έμ μ ν¬ν¨λ μμ΄ 2κ° μ΄νμΌ λ, μ μ κ±° λΆκ°
+### 4. μ§νμ² λ
Έμ λ μΆλ ₯
+
+#### 1)
+
+- μ§νμ² λ
Έμ λ μΆλ ₯ λ²νΌμ λλ₯΄λ©΄ `` νκ·Έλ₯Ό λ§λ€κ³ ν΄λΉ νκ·Έ λ΄λΆμ λ
Έμ λλ₯Ό μΆλ ₯νλ€.
+
## π κΈ°λ₯ μꡬμ¬ν
### μ§νμ² μ κ΄λ ¨ κΈ°λ₯
From 6df5e5c8f8e06925e21fd9318905d7bb1d0ca80c Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Mon, 14 Dec 2020 22:44:46 +0900
Subject: [PATCH 35/52] =?UTF-8?q?feat:=20=EC=A7=80=ED=95=98=EC=B2=A0=20?=
=?UTF-8?q?=EB=85=B8=EC=84=A0=EB=8F=84=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0?=
=?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/index.js | 9 +++++++++
src/pages/PrintSubwayLine.js | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
create mode 100644 src/pages/PrintSubwayLine.js
diff --git a/src/index.js b/src/index.js
index af0937148..e4ae27a05 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,4 +1,5 @@
import LineManager from "./pages/lineManager.js";
+import PrintSubwayLine from "./pages/PrintSubwayLine.js";
import SectionManager from "./pages/SectionManager.js";
import StationManager from "./pages/StationManager.js";
import { dispatchReRender, RE_RENDER_EVENT } from "./utils/events.js";
@@ -6,6 +7,7 @@ import { dispatchReRender, RE_RENDER_EVENT } from "./utils/events.js";
const stationManager = new StationManager();
const lineManager = new LineManager();
const sectionManager = new SectionManager();
+const printSubwayLine = new PrintSubwayLine();
const pages = document.querySelector("#app");
let page;
@@ -13,6 +15,9 @@ let page;
const stationManagerButton = document.getElementById("station-manager-button");
const lineManagerButton = document.getElementById("line-manager-button");
const sectionManagerButton = document.getElementById("section-manager-button");
+const printSubwayLineButton = document.getElementById(
+ "map-print-manager-button"
+);
stationManagerButton.addEventListener("click", () => {
page = stationManager;
@@ -29,6 +34,10 @@ sectionManagerButton.addEventListener("click", () => {
dispatchReRender();
});
+printSubwayLineButton.addEventListener("click", () => {
+ page = printSubwayLine;
+ dispatchReRender();
+});
function reRenderPage() {
page.create();
page.afterCreate();
diff --git a/src/pages/PrintSubwayLine.js b/src/pages/PrintSubwayLine.js
new file mode 100644
index 000000000..f128f9c81
--- /dev/null
+++ b/src/pages/PrintSubwayLine.js
@@ -0,0 +1,34 @@
+import Component from "../core/Component.js";
+
+export default class PrintSubwayLine extends Component {
+ constructor() {
+ super();
+ }
+
+ render() {
+ const { lines } = this.store;
+ console.log(lines);
+ return `
+
+ ${lines
+ .map(
+ (line) => `
+
+
${line.name}
+
+ ${line.stations
+ .map(
+ (station) => `
+ - ${station}
+ `
+ )
+ .join("")}
+
+
+ `
+ )
+ .join("")}
+
+ `;
+ }
+}
From 42b8b32dcd49af8feec43887a1296b0243d0532c Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 00:22:46 +0900
Subject: [PATCH 36/52] =?UTF-8?q?feat:=202=EA=B0=9C=20=EC=9D=B4=ED=95=98?=
=?UTF-8?q?=EC=9D=98=20=EC=97=AD=20=EC=A0=9C=EA=B1=B0=20=EA=B8=88=EC=A7=80?=
=?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 27 ++++++++++++---------------
1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index f244ee854..af097eeb4 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -24,14 +24,18 @@ export default class SectionManager extends Component {
alert("μμλ₯Ό μ
λ ₯νμΈμ");
return;
}
-
this.store.lines[selectedLine].stations.splice(order, 0, station);
- deepClone();
+ this.setStore(cloneDeep(this.store));
};
this.handleDeleteButtonClick = (index) => {
- this.store.lines[this.state.selectedLine].stations.splice(index, 1);
- deepClone();
+ const stations = this.store.lines[this.state.selectedLine].stations;
+ if (isLessThanTwoStation(stations)) {
+ stations.splice(index, 1);
+ this.setStore(cloneDeep(this.store));
+ } else {
+ alert("2κ° μ΄νλ μ§μΈ μ μμ΅λλ€.");
+ }
};
}
@@ -138,19 +142,12 @@ export default class SectionManager extends Component {
}
}
-function isEmpty(value) {
- if (typeof value === "number") {
- return false;
- }
- return Boolean(value);
+function isLessThanTwoStation(stations) {
+ return stations.length > 2;
}
function isNull(value) {
- if (String(value) === "null") return true;
- if (String(value) === "undefined") return true;
+ return String(value) === "null" || String(value) === "undefined";
}
-function deepClone() {
- const store = JSON.stringify(this.store);
- this.setStore(JSON.parse(store));
-}
+const cloneDeep = (value) => JSON.parse(JSON.stringify(value));
From d70eb89c0fae85bca16bf7f01c80cfca8330f259 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 01:11:12 +0900
Subject: [PATCH 37/52] =?UTF-8?q?refactor:=20mount=ED=95=A8=EC=88=98=20?=
=?UTF-8?q?=EB=B6=84=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/LineManager.js | 18 ++++++++++++++++++
src/pages/SectionManager.js | 24 ++++++++++++++++--------
src/pages/StationManager.js | 11 +++++++++++
3 files changed, 45 insertions(+), 8 deletions(-)
diff --git a/src/pages/LineManager.js b/src/pages/LineManager.js
index 6f92fa588..ef108ff55 100644
--- a/src/pages/LineManager.js
+++ b/src/pages/LineManager.js
@@ -47,26 +47,44 @@ export default class LineManager extends Component {
}
mount() {
+ this.mountNameInput();
+ this.mountStartSelector();
+ this.mountEndSelector();
+ this.mountAddButton();
+ this.mountDeleteButton();
+ }
+
+ mountNameInput() {
const lineNameInput = document.getElementById(elementMap.lineNameInput);
lineNameInput.addEventListener("blur", (event) => {
this.setState({ ...this.state, lineName: event.target.value });
});
+ }
+
+ mountStartSelector() {
const lineStartStationSelector = document.getElementById(
elementMap.lineStartStationSelector
);
lineStartStationSelector.addEventListener("change", (event) => {
this.setState({ ...this.state, lineStartStation: event.target.value });
});
+ }
+
+ mountEndSelector() {
const lineEndStationSelector = document.getElementById(
elementMap.lineEndStationSelector
);
lineEndStationSelector.addEventListener("change", (event) => {
this.setState({ ...this.state, lineEndStation: event.target.value });
});
+ }
+ mountAddButton() {
const lineAddButton = document.getElementById(elementMap.lineAddButton);
lineAddButton.addEventListener("click", this.handleLineAddButton);
+ }
+ mountDeleteButton() {
const lineDeleteButtons = document.getElementsByClassName(
elementMap.lineDeleteButton
);
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index af097eeb4..ea15f0455 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -40,6 +40,18 @@ export default class SectionManager extends Component {
}
mount() {
+ const sectionStationSelector = document.getElementById(
+ elementMap.sectionStationSelector
+ );
+ const sectionOrderInput = document.getElementById(
+ elementMap.sectionOrderInput
+ );
+ this.mountLineMenuButton();
+ this.mountAddButton(sectionOrderInput, sectionStationSelector);
+ this.mountDeleteButton();
+ }
+
+ mountLineMenuButton() {
const sectionLineMenuButtons = document.getElementsByClassName(
elementMap.sectionLineMenuButton
);
@@ -48,15 +60,9 @@ export default class SectionManager extends Component {
this.handleLineButtonClick(index);
});
});
+ }
- const sectionStationSelector = document.getElementById(
- elementMap.sectionStationSelector
- );
-
- const sectionOrderInput = document.getElementById(
- elementMap.sectionOrderInput
- );
-
+ mountAddButton(sectionOrderInput, sectionStationSelector) {
const sectionAddButton = document.getElementById(
elementMap.sectionAddButton
);
@@ -66,7 +72,9 @@ export default class SectionManager extends Component {
sectionStationSelector.value
);
});
+ }
+ mountDeleteButton() {
const sectionDeleteButtons = document.getElementsByClassName(
elementMap.sectionDeleteButton
);
diff --git a/src/pages/StationManager.js b/src/pages/StationManager.js
index 57706f46b..013db9afe 100644
--- a/src/pages/StationManager.js
+++ b/src/pages/StationManager.js
@@ -34,15 +34,26 @@ export default class StationManager extends Component {
}
mount() {
+ this.mountNameInput();
+ this.mountAddButton();
+ this.mountDeleteButton();
+ }
+ mountNameInput() {
const stationNameInput = document.getElementById(
elementMap.stationNameInput
);
+ }
+
+ mountAddButton() {
const stationAddButton = document.getElementById(
elementMap.stationAddButton
);
stationAddButton.addEventListener("click", () => {
this.handleAddButtonClick(stationNameInput.value);
});
+ }
+
+ mountDeleteButton() {
const stationDeleteButtons = document.getElementsByClassName(
elementMap.stationDeleteButton
);
From 309aeecfae2745fcac4457a2de6c3d0a18d5e6d1 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 01:30:31 +0900
Subject: [PATCH 38/52] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=20?=
=?UTF-8?q?=EB=A6=AC=ED=84=B4=20=EA=B0=92=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/StationManager.js | 27 ++++++++-------------------
1 file changed, 8 insertions(+), 19 deletions(-)
diff --git a/src/pages/StationManager.js b/src/pages/StationManager.js
index 013db9afe..c133ab8b2 100644
--- a/src/pages/StationManager.js
+++ b/src/pages/StationManager.js
@@ -34,17 +34,14 @@ export default class StationManager extends Component {
}
mount() {
- this.mountNameInput();
- this.mountAddButton();
- this.mountDeleteButton();
- }
- mountNameInput() {
const stationNameInput = document.getElementById(
elementMap.stationNameInput
);
+ this.mountAddButton(stationNameInput);
+ this.mountDeleteButton();
}
- mountAddButton() {
+ mountAddButton(stationNameInput) {
const stationAddButton = document.getElementById(
elementMap.stationAddButton
);
@@ -106,21 +103,15 @@ export default class StationManager extends Component {
}
function isMoreThanTwoWords(stationName) {
- if (stationName.length > 1) {
- return true;
- }
+ return stationName.length > 1;
}
function isNotDuplicateSatationName(stationName, stations = []) {
- if (!stations.includes(stationName)) {
- return true;
- }
+ return !stations.includes(stationName);
}
function hasNotSpaceInStationName(stationName) {
- if (![...stationName].includes(" ")) {
- return true;
- }
+ return ![...stationName].includes(" ");
}
function isOnlyWord(stationName) {
@@ -129,12 +120,10 @@ function isOnlyWord(stationName) {
const check_spc = /[~!@#$%^&*()_+|<>?:{}]/;
const check_kor = /[γ±-γ
|γ
-γ
£|κ°-ν£]/;
- if (
+ return (
check_kor.test(stationName) &&
!check_eng.test(stationName) &&
!check_num.test(stationName) &&
!check_spc.test(stationName)
- ) {
- return true;
- }
+ );
}
From b803079a1e3fd0ad548a592eaf0d2dcec4dd119e Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 01:34:55 +0900
Subject: [PATCH 39/52] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/LineManager.js | 1 -
src/pages/StationManager.js | 1 -
2 files changed, 2 deletions(-)
diff --git a/src/pages/LineManager.js b/src/pages/LineManager.js
index ef108ff55..60672c63a 100644
--- a/src/pages/LineManager.js
+++ b/src/pages/LineManager.js
@@ -1,4 +1,3 @@
-import { dispatchReRender } from "../utils/events.js";
import Component from "../core/Component.js";
const elementMap = {
diff --git a/src/pages/StationManager.js b/src/pages/StationManager.js
index c133ab8b2..f3b88ca5c 100644
--- a/src/pages/StationManager.js
+++ b/src/pages/StationManager.js
@@ -1,4 +1,3 @@
-import { dispatchReRender } from "../utils/events.js";
import Component from "../core/Component.js";
const elementMap = {
From 13a5dde9612bf223711f96cc3a843f602ae130f3 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 01:54:03 +0900
Subject: [PATCH 40/52] =?UTF-8?q?refactor:=20=EC=97=90=EB=9F=AC=EB=A9=94?=
=?UTF-8?q?=EC=8B=9C=EC=A7=80=20=ED=8C=8C=EC=9D=BC=20=EB=B6=84=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/LineManager.js | 3 ++-
src/pages/SectionManager.js | 5 +++--
src/pages/StationManager.js | 3 ++-
src/utils/errors.js | 6 ++++++
4 files changed, 13 insertions(+), 4 deletions(-)
create mode 100644 src/utils/errors.js
diff --git a/src/pages/LineManager.js b/src/pages/LineManager.js
index 60672c63a..33067fd81 100644
--- a/src/pages/LineManager.js
+++ b/src/pages/LineManager.js
@@ -1,4 +1,5 @@
import Component from "../core/Component.js";
+import { ERROR } from "../utils/errors.js";
const elementMap = {
lineNameInput: "line-name-input",
@@ -25,7 +26,7 @@ export default class LineManager extends Component {
const lines = this.store.lines ? [...this.store.lines, line] : [line];
if (isDuplicateLine(this.store.lines, this.state.lineName)) {
- alert("μ€λ³΅λ λ
Έμ μ΄ μ‘΄μ¬ν©λλ€");
+ alert(ERROR.RE_TYPING_LINE);
} else {
this.setStore({ ...this.store, lines });
}
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index ea15f0455..d828cc948 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -1,4 +1,5 @@
import Component from "../core/Component.js";
+import { ERROR } from "../utils/errors.js";
const elementMap = {
sectionLineMenuButton: "section-line-menu-button",
@@ -21,7 +22,7 @@ export default class SectionManager extends Component {
this.handleAddButtonClick = (order, station) => {
const { selectedLine } = this.state;
if (order.length === 0) {
- alert("μμλ₯Ό μ
λ ₯νμΈμ");
+ alert(ERROR.RE_TYPING_ORDER);
return;
}
this.store.lines[selectedLine].stations.splice(order, 0, station);
@@ -34,7 +35,7 @@ export default class SectionManager extends Component {
stations.splice(index, 1);
this.setStore(cloneDeep(this.store));
} else {
- alert("2κ° μ΄νλ μ§μΈ μ μμ΅λλ€.");
+ alert(ERROR.NOT_DELETE);
}
};
}
diff --git a/src/pages/StationManager.js b/src/pages/StationManager.js
index f3b88ca5c..3c92f3adb 100644
--- a/src/pages/StationManager.js
+++ b/src/pages/StationManager.js
@@ -1,4 +1,5 @@
import Component from "../core/Component.js";
+import { ERROR } from "../utils/errors.js";
const elementMap = {
stationNameInput: "station-name-input",
@@ -22,7 +23,7 @@ export default class StationManager extends Component {
: [newStation];
this.setStore({ ...this.store, stations });
} else {
- alert("λ€μ μ
λ ₯ν΄ μ£ΌμΈμ");
+ alert(ERROR.RE_TYPING_STATION);
}
};
diff --git a/src/utils/errors.js b/src/utils/errors.js
new file mode 100644
index 000000000..30e1d0541
--- /dev/null
+++ b/src/utils/errors.js
@@ -0,0 +1,6 @@
+export const ERROR = {
+ RE_TYPING_STATION: "μ μ΄λ¦μ λ€μ μ
λ ₯ν΄ μ£ΌμΈμ",
+ RE_TYPING_LINE: "μ€λ³΅λ λ
Έμ μ΄ μ‘΄μ¬ν©λλ€",
+ RE_TYPING_ORDER: "μμλ₯Ό μ
λ ₯νμΈμ",
+ NOT_DELETE: "2κ° μ΄νλ μ§μΈ μ μμ΅λλ€",
+};
From 9e40ce6e5b4165a54f64ca1e9320a691c81a8cea Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 11:57:15 +0900
Subject: [PATCH 41/52] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=20?=
=?UTF-8?q?=ED=86=B5=EC=9D=BC=EC=84=B1=20=EB=A7=9E=EC=B6=94=EA=B8=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index d828cc948..d9c9c5d1c 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -21,6 +21,7 @@ export default class SectionManager extends Component {
this.handleAddButtonClick = (order, station) => {
const { selectedLine } = this.state;
+
if (order.length === 0) {
alert(ERROR.RE_TYPING_ORDER);
return;
@@ -159,4 +160,6 @@ function isNull(value) {
return String(value) === "null" || String(value) === "undefined";
}
-const cloneDeep = (value) => JSON.parse(JSON.stringify(value));
+function cloneDeep(value) {
+ return JSON.parse(JSON.stringify(value));
+}
From 3e5d70a3ba42124daf106be67dc1a6aa71dcb944 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 14:26:47 +0900
Subject: [PATCH 42/52] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?=
=?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/PrintSubwayLine.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/pages/PrintSubwayLine.js b/src/pages/PrintSubwayLine.js
index f128f9c81..d0dceed43 100644
--- a/src/pages/PrintSubwayLine.js
+++ b/src/pages/PrintSubwayLine.js
@@ -7,7 +7,6 @@ export default class PrintSubwayLine extends Component {
render() {
const { lines } = this.store;
- console.log(lines);
return `
${lines
From 23c580407747d9c6a6e674d42636ab0274d3c400 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 14:27:47 +0900
Subject: [PATCH 43/52] =?UTF-8?q?refactor:=20elementMap=20=ED=8C=8C?=
=?UTF-8?q?=EC=9D=BC=20=EB=B6=84=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/config.js | 23 +++++++++++++++++++
src/index.js | 62 ++++++++++++++-------------------------------------
2 files changed, 40 insertions(+), 45 deletions(-)
create mode 100644 src/config.js
diff --git a/src/config.js b/src/config.js
new file mode 100644
index 000000000..aeb4b6135
--- /dev/null
+++ b/src/config.js
@@ -0,0 +1,23 @@
+import LineManager from "./pages/lineManager.js";
+import PrintSubwayLine from "./pages/PrintSubwayLine.js";
+import SectionManager from "./pages/SectionManager.js";
+import StationManager from "./pages/StationManager.js";
+
+export const elementMap = [
+ {
+ page: StationManager,
+ button: document.getElementById("station-manager-button"),
+ },
+ {
+ page: LineManager,
+ button: document.getElementById("line-manager-button"),
+ },
+ {
+ page: SectionManager,
+ button: document.getElementById("section-manager-button"),
+ },
+ {
+ page: PrintSubwayLine,
+ button: document.getElementById("map-print-manager-button"),
+ },
+];
diff --git a/src/index.js b/src/index.js
index e4ae27a05..dc01061c1 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,48 +1,20 @@
-import LineManager from "./pages/lineManager.js";
-import PrintSubwayLine from "./pages/PrintSubwayLine.js";
-import SectionManager from "./pages/SectionManager.js";
-import StationManager from "./pages/StationManager.js";
import { dispatchReRender, RE_RENDER_EVENT } from "./utils/events.js";
-
-const stationManager = new StationManager();
-const lineManager = new LineManager();
-const sectionManager = new SectionManager();
-const printSubwayLine = new PrintSubwayLine();
-
-const pages = document.querySelector("#app");
-let page;
-
-const stationManagerButton = document.getElementById("station-manager-button");
-const lineManagerButton = document.getElementById("line-manager-button");
-const sectionManagerButton = document.getElementById("section-manager-button");
-const printSubwayLineButton = document.getElementById(
- "map-print-manager-button"
-);
-
-stationManagerButton.addEventListener("click", () => {
- page = stationManager;
- dispatchReRender();
-});
-
-lineManagerButton.addEventListener("click", () => {
- page = lineManager;
- dispatchReRender();
-});
-
-sectionManagerButton.addEventListener("click", () => {
- page = sectionManager;
- dispatchReRender();
-});
-
-printSubwayLineButton.addEventListener("click", () => {
- page = printSubwayLine;
- dispatchReRender();
-});
-function reRenderPage() {
- page.create();
- page.afterCreate();
- pages.innerHTML = page.render();
- page.mount();
+import { elementMap } from "./config.js";
+import reRenderPage from "./utils/reRenderPage.js";
+
+function init() {
+ const app = document.querySelector("#app");
+ let page;
+
+ elementMap.forEach((element) => {
+ const managerPage = new element.page();
+ element.button.addEventListener("click", () => {
+ page = managerPage;
+ dispatchReRender();
+ });
+ });
+
+ window.addEventListener(RE_RENDER_EVENT, () => reRenderPage(app, page));
}
-window.addEventListener(RE_RENDER_EVENT, reRenderPage);
+init();
From f0dd5da5126115a9b40b879deedea93f687a1a86 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 14:28:09 +0900
Subject: [PATCH 44/52] =?UTF-8?q?refactor:=20reRenderPage=20=ED=95=A8?=
=?UTF-8?q?=EC=88=98=20=ED=8C=8C=EC=9D=BC=20=EB=B6=84=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/utils/reRenderPage.js | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 src/utils/reRenderPage.js
diff --git a/src/utils/reRenderPage.js b/src/utils/reRenderPage.js
new file mode 100644
index 000000000..b7fead00d
--- /dev/null
+++ b/src/utils/reRenderPage.js
@@ -0,0 +1,6 @@
+export default function reRenderPage(app, page) {
+ page.create();
+ page.afterCreate();
+ app.innerHTML = page.render();
+ page.mount();
+}
From 2c0406cd57aaa76d9420bd21f5d1727a73d80dc1 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 14:42:16 +0900
Subject: [PATCH 45/52] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=20?=
=?UTF-8?q?=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/SectionManager.js | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/pages/SectionManager.js b/src/pages/SectionManager.js
index d9c9c5d1c..fca148a9f 100644
--- a/src/pages/SectionManager.js
+++ b/src/pages/SectionManager.js
@@ -8,6 +8,7 @@ const elementMap = {
sectionAddButton: "section-add-button",
sectionDeleteButton: "section-delete-button",
};
+
export default class SectionManager extends Component {
constructor() {
super();
@@ -20,24 +21,26 @@ export default class SectionManager extends Component {
};
this.handleAddButtonClick = (order, station) => {
- const { selectedLine } = this.state;
-
if (order.length === 0) {
alert(ERROR.RE_TYPING_ORDER);
return;
}
+
+ const { selectedLine } = this.state;
this.store.lines[selectedLine].stations.splice(order, 0, station);
this.setStore(cloneDeep(this.store));
};
this.handleDeleteButtonClick = (index) => {
- const stations = this.store.lines[this.state.selectedLine].stations;
- if (isLessThanTwoStation(stations)) {
- stations.splice(index, 1);
- this.setStore(cloneDeep(this.store));
- } else {
+ const isLessThanTwoStation = stations.length < 2;
+ if (isLessThanTwoStation) {
alert(ERROR.NOT_DELETE);
+ return;
}
+
+ const stations = this.store.lines[this.state.selectedLine].stations;
+ stations.splice(index, 1);
+ this.setStore(cloneDeep(this.store));
};
}
@@ -152,10 +155,6 @@ export default class SectionManager extends Component {
}
}
-function isLessThanTwoStation(stations) {
- return stations.length > 2;
-}
-
function isNull(value) {
return String(value) === "null" || String(value) === "undefined";
}
From 7ca1c363ebd06b30ceb89bca5282abcdca828caa Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 14:55:54 +0900
Subject: [PATCH 46/52] =?UTF-8?q?feat:=20=EB=85=B8=EC=84=A0=20=EC=9D=B4?=
=?UTF-8?q?=EB=A6=84=20=EA=B3=B5=EB=B0=B1=20=EB=B6=88=EA=B0=80=20=EA=B8=B0?=
=?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/LineManager.js | 8 +++++++-
src/utils/errors.js | 1 +
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/pages/LineManager.js b/src/pages/LineManager.js
index 33067fd81..4425b6fa7 100644
--- a/src/pages/LineManager.js
+++ b/src/pages/LineManager.js
@@ -57,6 +57,10 @@ export default class LineManager extends Component {
mountNameInput() {
const lineNameInput = document.getElementById(elementMap.lineNameInput);
lineNameInput.addEventListener("blur", (event) => {
+ if (haveSpaceInLineName(event.target.value)) {
+ alert(ERROR.RE_TYPING_LINENAME);
+ return;
+ }
this.setState({ ...this.state, lineName: event.target.value });
});
}
@@ -171,4 +175,6 @@ function isDuplicateLine(lines = [], lineName) {
return lines.find((line) => line.name === lineName);
}
-// λ
Έμ μ΄λ¦ 곡백 λΆκ°λ₯ νλλ‘
+function haveSpaceInLineName(lineName) {
+ return [...lineName].includes(" ");
+}
diff --git a/src/utils/errors.js b/src/utils/errors.js
index 30e1d0541..e1000f94b 100644
--- a/src/utils/errors.js
+++ b/src/utils/errors.js
@@ -1,6 +1,7 @@
export const ERROR = {
RE_TYPING_STATION: "μ μ΄λ¦μ λ€μ μ
λ ₯ν΄ μ£ΌμΈμ",
RE_TYPING_LINE: "μ€λ³΅λ λ
Έμ μ΄ μ‘΄μ¬ν©λλ€",
+ RE_TYPING_LINENAME: "λ
Έμ μ΄λ¦μ κ³΅λ°±μ΄ μ‘΄μ¬ν©λλ€",
RE_TYPING_ORDER: "μμλ₯Ό μ
λ ₯νμΈμ",
NOT_DELETE: "2κ° μ΄νλ μ§μΈ μ μμ΅λλ€",
};
From ece0d18bff2ae772c673cf18e280789ad11b0bcb Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 15:06:30 +0900
Subject: [PATCH 47/52] =?UTF-8?q?refactor:=20=EC=BD=94=EB=93=9C=20?=
=?UTF-8?q?=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/utils/events.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/utils/events.js b/src/utils/events.js
index 410353ca8..94eb7023b 100644
--- a/src/utils/events.js
+++ b/src/utils/events.js
@@ -1,4 +1,5 @@
+export { dispatchReRender, RE_RENDER_EVENT, reRenderEvent };
+
const RE_RENDER_EVENT = "customRender";
const reRenderEvent = new CustomEvent(RE_RENDER_EVENT);
const dispatchReRender = () => window.dispatchEvent(reRenderEvent);
-export { dispatchReRender, RE_RENDER_EVENT, reRenderEvent };
From 7ca1db5b2f8a755a16a99e820477204736e0c6ed Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 16:41:40 +0900
Subject: [PATCH 48/52] Update README.md
---
README.md | 86 +++++++++++++++++++------------------------------------
1 file changed, 29 insertions(+), 57 deletions(-)
diff --git a/README.md b/README.md
index 0173c7482..8e7a7d8b0 100644
--- a/README.md
+++ b/README.md
@@ -6,88 +6,60 @@
#### 1) μμ μ΄λ¦ μ ν¨μ± κ²μ¬
-- μ€λ³΅λ μ μ΄λ¦ κΈμ§
-- μ μ΄λ¦ 2κΈμ μ΄μ
-- μ μ΄λ¦ 곡백 κΈμ§
-- μ μ΄λ¦ νκΈλ§ κ°λ₯
-- μμ μ΄λ¦ μ¬λ°λ₯΄μ§ μμ μ alert λ©μμ§ μΆλ ₯
+- μ€λ³΅λ μμ μ΄λ¦μ λ±λ‘ν μ μλ€.
+- μμ μ΄λ¦μ 2κΈμ μ΄μμΌλ‘ νλ€.
+- μμ μ΄λ¦μ κ³΅λ°±μ΄ λ€μ΄κ° μ μλ€.
+- μμ μ΄λ¦μ νκΈλ‘λ§ μμ± κ°λ₯νλ€.
+- μμ μ΄λ¦μ΄ μ¬λ°λ₯΄μ§ μμ μ, alert λ©μμ§ μΆλ ₯νλ€.
#### 2) μ§νμ² μ λͺ©λ‘ κ΄λ¦¬
-- μ κ΄λ¦¬ λ²νΌ ν΄λ¦ μ μ κ΄λ¦¬ νμ΄μ§ μ°κ²°
-- μ μΆκ° λ²νΌ ν΄λ¦ μ μ μΆκ°
-- μ μμ λ²νΌ ν΄λ¦ μ μ μμ
+- μ κ΄λ¦¬ λ²νΌ ν΄λ¦ μ, μ κ΄λ¦¬ νμ΄μ§λ₯Ό μΆλ ₯νλ€.
+- μ μΆκ° λ²νΌ ν΄λ¦ μ, μμ μΆκ°νλ€.
+- μ μμ λ²νΌ ν΄λ¦ μ, μμ μμ νλ€.
+- μμ μΆκ°μ μμ μ, μμ λͺ©λ‘μ μΆλ ₯νλ€.
+- μ κ΄λ¦¬κ° λλ μμ λͺ©λ‘μ λ‘컬μ€ν 리μ§μ μ μ₯νλ€.
### 2. λ
Έμ κ΄λ¦¬ νμ΄μ§
#### 1) λ
Έμ μ μ΄λ¦ μ ν¨μ± κ²μ¬
-- μ€λ³΅λ λ
Έμ μ΄λ¦ κΈμ§
+- μ€λ³΅λ λ
Έμ μ μ΄λ¦μ λ±λ‘ν μ μλ€.
+- λ
Έμ μ μ΄λ¦μ κ³΅λ°±μ΄ λ€μ΄κ° μ μλ€.
+- λ
Έμ μ μ΄λ¦μ΄ μ¬λ°λ₯΄μ§ μμ μ, alert λ©μμ§λ₯Ό μΆλ ₯νλ€.
#### 2) μ§νμ² λ
Έμ λͺ©λ‘ κ΄λ¦¬
-- λ
Έμ κ΄λ¦¬ λ²νΌ ν΄λ¦ μ λ
Έμ κ΄λ¦¬ νμ΄μ§ μ°κ²°
-- μ§νμ² λ
Έμ μ μ΄λ¦μ μ
λ ₯λ°λ κΈ°λ₯
-- μν μ’
μ μ μ
λ ₯λ°λ κΈ°λ₯
-- νν μ’
μ μ μ
λ ₯λ°λ κΈ°λ₯
-- λ
Έμ μΆκ° λ²νΌ ν΄λ¦ μ λ
Έμ μΆκ°
-- μμ λ²νΌ ν΄λ¦ μ λ
Έμ μμ
+- λ
Έμ κ΄λ¦¬ λ²νΌ ν΄λ¦ μ, λ
Έμ κ΄λ¦¬ νμ΄μ§λ₯Ό μΆλ ₯νλ€.
+- λ
Έμ μΆκ° λ²νΌ ν΄λ¦ μ, λ
Έμ μ μΆκ°νλ€.
+- μμ λ²νΌ ν΄λ¦ μ, λ
Έμ μ μμ νλ€.
+- λ
Έμ μΆκ°μ μμ μ, λ
Έμ λͺ©λ‘μ μΆλ ₯νκ³ λ‘컬μ€ν 리μ§μ λ
Έμ λͺ©λ‘μ μ μ₯νλ€.
### 3. κ΅¬κ° κ΄λ¦¬ νμ΄μ§
#### 1) λ
Έμ μ ν
-- λ‘컬μ€ν 리μ§μμ λ
Έμ μ λ°μμ λ²νΌμΌλ‘ μμ±
+- λ‘컬μ€ν 리μ§μμ λ
Έμ μ λ°μμ λ
Έμ λ©λ΄ λ²νΌμ μμ±νλ€.
+- κ° λ
Έμ μ λ²νΌμ ν΄λ¦ μ, ν΄λΉ λ
Έμ μ μ 보λ₯Ό μΆλ ₯νλ€.
#### 2) μ§νμ² κ΅¬κ° λͺ©λ‘ κ΄λ¦¬
-- λ
Έμ μ λ±λ‘λ μ μ κ±°
-- μ’
μ μ κ±° μ λ€μ μμ΄ μ’
μ
-- λ
Έμ μ ν¬ν¨λ μμ΄ 2κ° μ΄νμΌ λ, μ μ κ±° λΆκ°
-
-### 4. μ§νμ² λ
Έμ λ μΆλ ₯
-
-#### 1)
-
-- μ§νμ² λ
Έμ λ μΆλ ₯ λ²νΌμ λλ₯΄λ©΄ `
` νκ·Έλ₯Ό λ§λ€κ³ ν΄λΉ νκ·Έ λ΄λΆμ λ
Έμ λλ₯Ό μΆλ ₯νλ€.
-
-## π κΈ°λ₯ μꡬμ¬ν
-
-### μ§νμ² μ κ΄λ ¨ κΈ°λ₯
-
-- μ§νμ² μμ λ±λ‘νκ³ μμ ν μ μλ€. (λ¨, λ
Έμ μ λ±λ‘λ μμ μμ ν μ μλ€)
-- μ€λ³΅λ μ§νμ² μ μ΄λ¦μ΄ λ±λ‘λ μ μλ€.
-- μ§νμ² μμ 2κΈμ μ΄μμ΄μ΄μΌ νλ€.
-- μ§νμ² μμ λͺ©λ‘μ μ‘°νν μ μλ€.
-
-### μ§νμ² λ
Έμ κ΄λ ¨ κΈ°λ₯
-
-- μ§νμ² λ
Έμ μ λ±λ‘νκ³ μμ ν μ μλ€.
-- μ€λ³΅λ μ§νμ² λ
Έμ μ΄λ¦μ΄ λ±λ‘λ μ μλ€.
-- λ
Έμ λ±λ‘ μ μν μ’
μ μκ³Ό νν μ’
μ μμ μ
λ ₯λ°λλ€.
-- μ§νμ² λ
Έμ μ λͺ©λ‘μ μ‘°νν μ μλ€.
-
-### μ§νμ² κ΅¬κ° μΆκ° κΈ°λ₯
-
- μ§νμ² λ
Έμ μ ꡬκ°μ μΆκ°νλ κΈ°λ₯μ λ
Έμ μ μμ μΆκ°νλ κΈ°λ₯μ΄λΌκ³ λ ν μ μλ€.
- - μκ³Ό μμ¬μ΄λ₯Ό ꡬκ°μ΄λΌ νκ³ μ΄ κ΅¬κ°λ€μ λͺ¨μμ΄ λ
Έμ μ΄λ€.
+- μκ³Ό μμ¬μ΄λ₯Ό ꡬκ°μ΄λΌ νκ³ μ΄ κ΅¬κ°λ€μ λͺ¨μμ΄ λ
Έμ μ΄λ€.
- νλμ μμ μ¬λ¬κ°μ λ
Έμ μ μΆκ°λ μ μλ€.
- μκ³Ό μ μ¬μ΄μ μλ‘μ΄ μμ΄ μΆκ° λ μ μλ€.
- λ
Έμ μμ κ°λκΈΈμ μκΈΈ μ μλ€.
+- μΆκ°λ μμ μ΄λ¦κ³Ό μμλ₯Ό μ
λ ₯ λ°λλ€.
+- λ±λ‘ λ²νΌ ν΄λ¦ μ, λ
Έμ μ μμ μΆκ°νλ€.
+- λ
Έμ μμ μ κ±° λ²νΌ ν΄λ¦ μ, λ
Έμ μ μμ μ κ±°νλ€.
+- λ
Έμ μ λ±λ‘κ³Ό μ κ±° μ, κ΅¬κ° λͺ©λ‘μ μΆλ ₯νκ³ λ‘컬μ€ν 리μ§μ λ
Έμ λͺ©λ‘μ μ μ₯νλ€.
+- μ’
μ μ κ±° μ λ€μ μμ΄ μ’
μ μ΄ λλ€.
+- λ
Έμ μ ν¬ν¨λ μμ΄ 2κ° μ΄νμΌ λ, μμ μ κ±°ν μ μλ€.
+- μΆκ°ν μμ μμλ₯Ό μ
λ ₯νμ§ μμΌλ©΄ alertλ©μμ§λ₯Ό μΆλ ₯νλ€.
-

-
-### μ§νμ² κ΅¬κ° μμ κΈ°λ₯
-
-- λ
Έμ μ λ±λ‘λ μμ μ κ±°ν μ μλ€.
-- μ’
μ μ μ κ±°ν κ²½μ° λ€μ μμ΄ μ’
μ μ΄ λλ€.
-- λ
Έμ μ ν¬ν¨λ μμ΄ λκ° μ΄νμΌ λλ μμ μ κ±°ν μ μλ€.
-
-

-
-### μ§νμ² λ
Έμ μ λ±λ‘λ μ μ‘°ν κΈ°λ₯
+### 4. μ§νμ² λ
Έμ λ μΆλ ₯
-- λ
Έμ μ μν μ’
μ λΆν° νν μ’
μ κΉμ§ μ°κ²°λ μμλλ‘ μ λͺ©λ‘μ μ‘°νν μ μλ€.
+- λ‘컬μ€ν 리μ§μ μ μ₯λ λ
Έμ λλ₯Ό νλ©΄μ μΆλ ₯νλ€.
From ba654483a00e40a6963be5551cf1effe9d8ece8e Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 17:41:22 +0900
Subject: [PATCH 49/52] Update README.md
---
README.md | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/README.md b/README.md
index 8e7a7d8b0..97dc32a81 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,39 @@
# π μ§νμ² λ
Έμ λ λ―Έμ
+## π¦ λλ ν 리 ꡬ쑰
+```
+βββ LICENSE
+βββ README.md
+βββ images
+β βββ line_manager.gif
+β βββ map_print_manager.gif
+β βββ section1.png
+β βββ section2.png
+β βββ section_manager.gif
+β βββ station_manager.gif
+βββ index.html
+βββ src
+ βββ config.js
+ βββ core
+ β βββ Component.js
+ βββ index.js
+ βββ pages
+ β βββ LineManager.js
+ β βββ PrintSubwayLine.js
+ β βββ SectionManager.js
+ β βββ StationManager.js
+ βββ utils
+ βββ errors.js
+ βββ events.js
+ βββ reRenderPage.js
+```
+- config: μ 체 νμ΄μ§μ νμν νκ·Έλ₯Ό λ°λ‘ κ΄λ¦¬νκΈ° μν΄ μ€μ νμΌλ‘ λΆλ¦¬
+- core: μνλ‘ HTMLμ λ λλ§νκΈ° μν΄ μ¬μ©λλ λ©μλλ€μ μ»΄ν¬λνΈ ν΄λμ€λ₯Ό μ¬μ©νμ¬ μ μ
+- pages: κ°κ°μ νλ©΄λ€μ ν ν΄λμμ κ΄λ¦¬νκΈ° μν΄ pages ν΄λμ λΆλ¦¬
+- utils: μλ¬λ©μμ§, μ΄λ²€νΈ, νμ΄μ§λ₯Ό λ€μ κ·Έλ €μ£Όλ ν¨μλ₯Ό utils ν΄λμ λΆλ¦¬
+
+
+
## π κΈ°λ₯ μꡬμ¬ν
### 1. μ κ΄λ¦¬ νμ΄μ§
@@ -63,6 +97,12 @@
+## π₯ λ―Έν‘νλ μ
+
+- [data]: νμ¬ κ΅¬μ‘°μμ μ΄λ»κ² [data]μμ±μ μ¬μ©ν΄μΌ ν μ§ νμ
μ νμ§ λͺ»νμ΅λλ€.
+
+
+
## π» νλ‘κ·Έλ¨ μ€ν κ²°κ³Ό
### μκ΄λ¦¬
From c1689ff5092019f9ec566f8cda6e9e17e84e4b9b Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 17:44:57 +0900
Subject: [PATCH 50/52] =?UTF-8?q?fix:=20=EB=85=B8=EC=84=A0=20=EC=B6=9C?=
=?UTF-8?q?=EB=A0=A5=20=ED=99=94=EB=A9=B4=EC=9D=98=20=ED=83=9C=EA=B7=B8?=
=?UTF-8?q?=EC=97=90=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A5=BC=20map=EC=9C=BC?=
=?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/PrintSubwayLine.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pages/PrintSubwayLine.js b/src/pages/PrintSubwayLine.js
index d0dceed43..8113cd70f 100644
--- a/src/pages/PrintSubwayLine.js
+++ b/src/pages/PrintSubwayLine.js
@@ -8,7 +8,7 @@ export default class PrintSubwayLine extends Component {
render() {
const { lines } = this.store;
return `
-
+
${lines
.map(
(line) => `
From 35c8cff6b9260eebfd50f2a4e720b75dca698d36 Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 19:18:44 +0900
Subject: [PATCH 51/52] Update README.md
---
README.md | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 97dc32a81..34a400c7b 100644
--- a/README.md
+++ b/README.md
@@ -97,9 +97,19 @@
-## π₯ λ―Έν‘νλ μ
+## π₯ λ―Έν‘νλ μ & κ³ μνλ μ
- [data]: νμ¬ κ΅¬μ‘°μμ μ΄λ»κ² [data]μμ±μ μ¬μ©ν΄μΌ ν μ§ νμ
μ νμ§ λͺ»νμ΅λλ€.
+- μλ‘μ΄ κ΅¬μ‘°λ‘ μ½λ©μ νλ€ λ³΄λ λ§νλ λΆλΆμ΄ λ§μκ³ , κ·Έλ‘ μΈν΄ μκ°μ μ«κ²¨ λ λ§μ μμΈμ¬νμ λν κ³ λ―Όμ΄ λΆμ‘±νμ΅λλ€.
+- μνκ° λ³ν λ λ§λ€ μ 체 νλ©΄μ λ λλ§νλ κ΅¬μ‘°λ‘ μ½λ©μ νμ¬, λ³ννμ§ μλ λΆλΆλ λ€μ κ·Έλ €μΌ νμ΅λλ€.
+- κ° νμ΄μ§λ§λ€ νλμ ν΄λμ€ μμ λ§μ λ©μλκ° μ‘΄μ¬νμ¬ μ½κΈ° λΆνΈνλ€κ³ μκ°μ΄ λ€μμ΅λλ€.
+- eslintμ prettierμ μ
ν
μ μλν°μμλ§ μ€μ νκ³ , νμΌλ‘ λ³Ό μ μλλ‘ νμ§ λͺ»ν μ μ΄ μμ½μ΅λλ€.
+- λ ν¨μ¨μ μΈ μ½λλ₯Ό μμ±νμ§ λͺ»νκ³ , λ¨μν 15λΌμΈμ λμ§ μκΈ° μν΄ μ΅μ§λ‘ λΆλ¦¬ν λ―ν λΆλΆμ΄ μμ΄ μμ½μ΅λλ€.
+- μ΄λ ν μ΄μ λ‘ μλ¬λ©μμ§κ° νλ©΄μ λ¬ κ±΄μ§ μν©λ§λ€ λ λͺ
ννκ² μ€λͺ
μ νμ§ λͺ»νμ΅λλ€. λ€λ₯Έ λΆμ prμ λ³΄κ³ try catchλ¬Έμ μ¬μ©νλ©΄ λ λͺ
ννκ² μ€λͺ
μ ν μ μλ€λ κ²μ λ°°μΈ μ μμμ΅λλ€.
+- mapμΌλ‘ νλ©΄μ 그릴 λ, νλ©΄μ κ³μ μλμΉ μμ ν
μ€νΈκ° λ°μνμ¬ μμΈμ μ°Ύλλ° κ½€ μ€λ κ±Έλ Έμ΅λλ€. κ²°κ³Όμ μΌλ‘ λ°°μ΄μΈλ° joinμ μ¬μ©νμ§ μμ λ°μν λ¬Έμ μμ΅λλ€.
+- ν
νλ¦Ώ 리ν°λ΄μ μ¬μ©ν΄ μΌμΌν νλ©΄μ κ·Έλ¦¬λ€ λ³΄λ νκ·Έλ€μ μμ±νλλ° ν·κ°λ¦¬λ λΆλΆμ΄ λ§μ κ³ μνμ΅λλ€. νμ₯λꡬλ₯Ό μ΄μ©νμ¬ λ νΈνκ² ν μ μλ€λ κ²μ λμ€μ μκ² λμμ΅λλ€.
+- μ΄λ€ κ°μ μμλ‘ κ΄λ¦¬ν΄μΌ νλ μ§ νλ¨νλ κ²μ΄ μ΄λ €μ μ΅λλ€. ν¨μμμμλ§ μ¬μ©νκ³ μλ―Έκ° λͺ
νν΄ λ³΄μ΄λ κ°λ€λ μμ μ²λ¦¬ ν΄μΌ νλ μ§ μλ¬Έμ΄ λ€μμ΅λλ€.
+- μνμ’
μ κ³Ό ννμ’
μ μ κ°μ μ μ₯ν λ νλμ λ°°μ΄μ μ μ₯νμ§ μκ³ λ°λ‘ μ μ₯νμ΅λλ€. κ·Έλ‘ μΈν΄ ꡬκ°μμ λͺ©λ‘μ μΆκ°νκ³ μμ ν λ, λ°μ΄ν° λ³κ²½νλ λΆλΆμ΄ λ무 μ΄λ €μ μ΅λλ€. κ²°κ΅ λ€μ λμκ° λ κ°λ€μ νλμ λ°°μ΄λ‘ κ΄λ¦¬νλλ‘ μμ νμκ³ , λ¬Έμ λ₯Ό ν΄κ²°ν μ μμμ΅λλ€.
From e2b903cc2bc7111b97522c782ba9531c2ed8ad3d Mon Sep 17 00:00:00 2001
From: JinsuBaek <71721270+junsubaek@users.noreply.github.com>
Date: Tue, 15 Dec 2020 19:21:37 +0900
Subject: [PATCH 52/52] Update README.md
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 34a400c7b..46040b0eb 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@
- μμ μ΄λ¦μ 2κΈμ μ΄μμΌλ‘ νλ€.
- μμ μ΄λ¦μ κ³΅λ°±μ΄ λ€μ΄κ° μ μλ€.
- μμ μ΄λ¦μ νκΈλ‘λ§ μμ± κ°λ₯νλ€.
-- μμ μ΄λ¦μ΄ μ¬λ°λ₯΄μ§ μμ μ, alert λ©μμ§ μΆλ ₯νλ€.
+- μμ μ΄λ¦μ΄ μ¬λ°λ₯΄μ§ μμ μ, `alert` λ©μμ§λ₯Ό μΆλ ₯νλ€.
#### 2) μ§νμ² μ λͺ©λ‘ κ΄λ¦¬
@@ -60,7 +60,7 @@
- μ€λ³΅λ λ
Έμ μ μ΄λ¦μ λ±λ‘ν μ μλ€.
- λ
Έμ μ μ΄λ¦μ κ³΅λ°±μ΄ λ€μ΄κ° μ μλ€.
-- λ
Έμ μ μ΄λ¦μ΄ μ¬λ°λ₯΄μ§ μμ μ, alert λ©μμ§λ₯Ό μΆλ ₯νλ€.
+- λ
Έμ μ μ΄λ¦μ΄ μ¬λ°λ₯΄μ§ μμ μ, `alert` λ©μμ§λ₯Ό μΆλ ₯νλ€.
#### 2) μ§νμ² λ
Έμ λͺ©λ‘ κ΄λ¦¬
@@ -89,7 +89,7 @@
- λ
Έμ μ λ±λ‘κ³Ό μ κ±° μ, κ΅¬κ° λͺ©λ‘μ μΆλ ₯νκ³ λ‘컬μ€ν 리μ§μ λ
Έμ λͺ©λ‘μ μ μ₯νλ€.
- μ’
μ μ κ±° μ λ€μ μμ΄ μ’
μ μ΄ λλ€.
- λ
Έμ μ ν¬ν¨λ μμ΄ 2κ° μ΄νμΌ λ, μμ μ κ±°ν μ μλ€.
-- μΆκ°ν μμ μμλ₯Ό μ
λ ₯νμ§ μμΌλ©΄ alertλ©μμ§λ₯Ό μΆλ ₯νλ€.
+- μΆκ°ν μμ μμλ₯Ό μ
λ ₯νμ§ μμΌλ©΄ `alert` λ©μμ§λ₯Ό μΆλ ₯νλ€.
### 4. μ§νμ² λ
Έμ λ μΆλ ₯
@@ -106,7 +106,7 @@
- eslintμ prettierμ μ
ν
μ μλν°μμλ§ μ€μ νκ³ , νμΌλ‘ λ³Ό μ μλλ‘ νμ§ λͺ»ν μ μ΄ μμ½μ΅λλ€.
- λ ν¨μ¨μ μΈ μ½λλ₯Ό μμ±νμ§ λͺ»νκ³ , λ¨μν 15λΌμΈμ λμ§ μκΈ° μν΄ μ΅μ§λ‘ λΆλ¦¬ν λ―ν λΆλΆμ΄ μμ΄ μμ½μ΅λλ€.
- μ΄λ ν μ΄μ λ‘ μλ¬λ©μμ§κ° νλ©΄μ λ¬ κ±΄μ§ μν©λ§λ€ λ λͺ
ννκ² μ€λͺ
μ νμ§ λͺ»νμ΅λλ€. λ€λ₯Έ λΆμ prμ λ³΄κ³ try catchλ¬Έμ μ¬μ©νλ©΄ λ λͺ
ννκ² μ€λͺ
μ ν μ μλ€λ κ²μ λ°°μΈ μ μμμ΅λλ€.
-- mapμΌλ‘ νλ©΄μ 그릴 λ, νλ©΄μ κ³μ μλμΉ μμ ν
μ€νΈκ° λ°μνμ¬ μμΈμ μ°Ύλλ° κ½€ μ€λ κ±Έλ Έμ΅λλ€. κ²°κ³Όμ μΌλ‘ λ°°μ΄μΈλ° joinμ μ¬μ©νμ§ μμ λ°μν λ¬Έμ μμ΅λλ€.
+- mapμΌλ‘ νλ©΄μ 그릴 λ, νλ©΄μ κ³μ μλμΉ μμ ν
μ€νΈκ° λ°μνμ¬ μμΈμ μ°Ύλλ° κ½€ μ€λ κ±Έλ Έμ΅λλ€. κ²°κ³Όμ μΌλ‘ λ°°μ΄μΈλ° `join` μ μ¬μ©νμ§ μμ λ°μν λ¬Έμ μμ΅λλ€.
- ν
νλ¦Ώ 리ν°λ΄μ μ¬μ©ν΄ μΌμΌν νλ©΄μ κ·Έλ¦¬λ€ λ³΄λ νκ·Έλ€μ μμ±νλλ° ν·κ°λ¦¬λ λΆλΆμ΄ λ§μ κ³ μνμ΅λλ€. νμ₯λꡬλ₯Ό μ΄μ©νμ¬ λ νΈνκ² ν μ μλ€λ κ²μ λμ€μ μκ² λμμ΅λλ€.
- μ΄λ€ κ°μ μμλ‘ κ΄λ¦¬ν΄μΌ νλ μ§ νλ¨νλ κ²μ΄ μ΄λ €μ μ΅λλ€. ν¨μμμμλ§ μ¬μ©νκ³ μλ―Έκ° λͺ
νν΄ λ³΄μ΄λ κ°λ€λ μμ μ²λ¦¬ ν΄μΌ νλ μ§ μλ¬Έμ΄ λ€μμ΅λλ€.
- μνμ’
μ κ³Ό ννμ’
μ μ κ°μ μ μ₯ν λ νλμ λ°°μ΄μ μ μ₯νμ§ μκ³ λ°λ‘ μ μ₯νμ΅λλ€. κ·Έλ‘ μΈν΄ ꡬκ°μμ λͺ©λ‘μ μΆκ°νκ³ μμ ν λ, λ°μ΄ν° λ³κ²½νλ λΆλΆμ΄ λ무 μ΄λ €μ μ΅λλ€. κ²°κ΅ λ€μ λμκ° λ κ°λ€μ νλμ λ°°μ΄λ‘ κ΄λ¦¬νλλ‘ μμ νμκ³ , λ¬Έμ λ₯Ό ν΄κ²°ν μ μμμ΅λλ€.