Skip to content

Commit 86531f3

Browse files
authored
Merge pull request #5 from WhiteShark23/module4-task1
2 parents 6047b53 + 3c15483 commit 86531f3

File tree

9 files changed

+353
-108
lines changed

9 files changed

+353
-108
lines changed

package-lock.json

Lines changed: 214 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
"@babel/preset-env": "7.21.4",
2121
"babel-loader": "9.1.2",
2222
"copy-webpack-plugin": "11.0.0",
23+
"css-loader": "6.7.3",
2324
"eslint": "8.38.0",
2425
"eslint-config-htmlacademy": "9.0.0",
2526
"html-webpack-plugin": "5.5.1",
27+
"style-loader": "3.3.2",
2628
"webpack": "5.79.0",
2729
"webpack-cli": "5.0.1",
2830
"webpack-dev-server": "4.13.3"

src/presenter/board-presenter.js

Lines changed: 59 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,73 @@
11
import FilterView from '../view/filter-view.js';
2-
import { render } from '../render.js';
2+
import { render, replace } from '../framework/render.js';
33
import ListEventsView from '../view/list-events.js';
44
import ItemEventView from '../view/item-event.js';
55
import EditEventView from '../view/edit-event.js';
66
export default class BoardPresenter {
7-
listEventsComponent = new ListEventsView();
7+
#boardContainer = null;
8+
#pointsModel = null;
9+
#boardPoints = [];
10+
11+
#listEventsComponent = new ListEventsView();
812

913
constructor({boardContainer, pointsModel}) {
10-
this.boardContainer = boardContainer;
11-
this.pointsModel = pointsModel;
14+
this.#boardContainer = boardContainer;
15+
this.#pointsModel = pointsModel;
1216
}
1317

1418
init() {
15-
this.boardPoints = [...this.pointsModel.getPoint()];
16-
render(new FilterView, this.boardContainer);
17-
render(this.listEventsComponent, this.boardContainer);
18-
render(new EditEventView(this.pointsModel, this.boardPoints[0]), this.listEventsComponent.getElement());
19+
this.#boardPoints = [...this.#pointsModel.getPoint()];
20+
21+
this.#renderBoard();
22+
}
23+
24+
#renderItemEvent(pointsModel, point) {
25+
const escKeyDownHandler = (evt) => {
26+
if (evt.key === 'Escape') {
27+
evt.preventDefault();
28+
replaceFormToCard();
29+
document.removeEventListener('keydown', escKeyDownHandler);
30+
}
31+
};
32+
33+
const itemEvent = new ItemEventView({
34+
pointsModel,
35+
point,
36+
onEditClick: () => {
37+
replaceCardToForm();
38+
document.addEventListener('keydown', escKeyDownHandler);
39+
}
40+
});
41+
42+
const editEvent = new EditEventView({
43+
pointsModel,
44+
point,
45+
onFormSubmit: () => {
46+
replaceFormToCard();
47+
document.removeEventListener('keydown', escKeyDownHandler);
48+
},
49+
onFormCloseClick: () => {
50+
replaceFormToCard();
51+
document.removeEventListener('keydown', escKeyDownHandler);
52+
}
53+
});
54+
55+
render(itemEvent, this.#listEventsComponent.element);
56+
57+
function replaceCardToForm() {
58+
replace(editEvent, itemEvent);
59+
}
60+
61+
function replaceFormToCard() {
62+
replace(itemEvent, editEvent);
63+
}
64+
}
1965

20-
for (let i = 1; i < this.boardPoints.length; i++) {
21-
render(new ItemEventView(this.pointsModel, this.boardPoints[i]), this.listEventsComponent.getElement());
66+
#renderBoard() {
67+
render(new FilterView, this.#boardContainer);
68+
render(this.#listEventsComponent, this.#boardContainer);
69+
for (let i = 0; i < this.#boardPoints.length; i++) {
70+
this.#renderItemEvent(this.#pointsModel, this.#boardPoints[i]);
2271
}
2372
}
2473
}

src/render.js

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)