Skip to content

Commit 4ab4184

Browse files
authored
Merge pull request #15 from WhiteShark23/master
2 parents 1dcd2d4 + 584204f commit 4ab4184

18 files changed

+361
-271
lines changed

package-lock.json

Lines changed: 1 addition & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
},
3535
"dependencies": {
3636
"dayjs": "1.11.7",
37-
"flatpickr": "4.6.13",
38-
"nanoid": "^5.1.6"
37+
"flatpickr": "4.6.13"
3938
}
4039
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import ApiService from '../framework/api-service.js';
2+
3+
export default class DestinationsApiService extends ApiService {
4+
get destinations() {
5+
return this._load({url: 'destinations'})
6+
.then(ApiService.parseResponse);
7+
}
8+
}

src/api/offers-api-service.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import ApiService from '../framework/api-service.js';
2+
3+
export default class OfferssApiService extends ApiService {
4+
get offers() {
5+
return this._load({url: 'offers'})
6+
.then(ApiService.parseResponse);
7+
}
8+
}

src/api/point-api-service.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import ApiService from '../framework/api-service.js';
2+
3+
const Method = {
4+
GET: 'GET',
5+
PUT: 'PUT',
6+
POST: 'POST',
7+
DELETE: 'DELETE',
8+
};
9+
10+
export default class PointsApiService extends ApiService {
11+
get points() {
12+
return this._load({url: 'points'})
13+
.then(ApiService.parseResponse);
14+
}
15+
16+
async updatePoint(point) {
17+
const response = await this._load({
18+
url: `points/${point.id}`,
19+
method: Method.PUT,
20+
body: JSON.stringify(this.#adaptedToServer(point)),
21+
headers: new Headers({'Content-Type': 'application/json'}),
22+
});
23+
24+
const parsedResponse = await ApiService.parseResponse(response);
25+
26+
return parsedResponse;
27+
}
28+
29+
async addPoint(point) {
30+
const response = await this._load({
31+
url: 'points',
32+
method: Method.POST,
33+
body: JSON.stringify(this.#adaptedToServer(point)),
34+
headers: new Headers({'Content-Type': 'application/json'}),
35+
});
36+
37+
const parsedResponse = await ApiService.parseResponse(response);
38+
39+
return parsedResponse;
40+
}
41+
42+
async deletePoint(point) {
43+
const response = await this._load({
44+
url: `points/${point.id}`,
45+
method: Method.DELETE,
46+
});
47+
48+
return response;
49+
}
50+
51+
#adaptedToServer(point) {
52+
const apdatedPoint = {
53+
...point,
54+
'date_to': point.dateTo,
55+
'date_from': point.dateFrom,
56+
'is_favorite': point.isFavorite,
57+
'base_price': Number(point.basePrice),
58+
};
59+
60+
delete apdatedPoint.dateTo;
61+
delete apdatedPoint.dateFrom;
62+
delete apdatedPoint.isFavorite;
63+
delete apdatedPoint.basePrice;
64+
65+
return apdatedPoint;
66+
}
67+
}

src/const.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
export const SortType = {
2-
DEFAULT: 'default',
2+
DAY: 'day',
33
PRICE: 'price',
44
TIME: 'time',
55
};
66

77
export const FilterType = {
8-
EVERYTHING: 'EVERYTHING',
9-
FUTURE: 'FUTURE',
10-
PRESENT: 'PRESENT',
11-
PAST: 'PAST',
8+
EVERYTHING: 'everything',
9+
FUTURE: 'future',
10+
PRESENT: 'present',
11+
PAST: 'past',
1212
};
1313

1414
export const UserAction = {
@@ -21,4 +21,5 @@ export const UpdateType = {
2121
PATCH: 'PATCH',
2222
MINOR: 'MINOR',
2323
MAJOR: 'MAJOR',
24+
INIT: 'INIT',
2425
};

src/main.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,22 @@ import FilterPresenter from './presenter/filter-presenter.js';
44
import FilterModel from './model/filter-model.js';
55
import NewEditButtonView from './view/new-edit-button-view.js';
66
import { render, RenderPosition } from './framework/render.js';
7+
import PointsApiService from './api/point-api-service.js';
8+
import DestinationsApiService from './api/destinations-api-service.js';
9+
import OfferssApiService from './api/offers-api-service.js';
10+
11+
const AUTHORIZATION = 'Basic sa2sfr33wcr1sa2j';
12+
const END_POINT = 'https://22.objects.htmlacademy.pro/big-trip';
713

814
const siteTripEventsElement = document.querySelector('.trip-events');
915
const siteTripMainControlsElement = document.querySelector('.trip-main__trip-controls');
16+
const pointsModel = new PointModel({
17+
pointsApiService: new PointsApiService(END_POINT, AUTHORIZATION),
18+
destinationsApiService: new DestinationsApiService(END_POINT, AUTHORIZATION),
19+
offerssApiService: new OfferssApiService(END_POINT, AUTHORIZATION),
20+
});
21+
1022

11-
const pointsModel = new PointModel();
1223
const filterModel = new FilterModel();
1324
const newEditButtonComponent = new NewEditButtonView({
1425
onClick: handleNewEditButtonClick,
@@ -39,5 +50,9 @@ function handleNewEditButtonClick() {
3950

4051
render(newEditButtonComponent, siteTripMainControlsElement, RenderPosition.AFTEREND);
4152

53+
pointsModel.init()
54+
.finally(() => {
55+
render(newEditButtonComponent, siteTripMainControlsElement, RenderPosition.AFTEREND);
56+
});
4257
filterPresenter.init();
4358
boardPresenter.init();

src/mocks/destinations.js

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

src/mocks/offers.js

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

src/mocks/points.js

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

0 commit comments

Comments
 (0)