Skip to content

Commit

Permalink
Большие перемены (часть 2)
Browse files Browse the repository at this point in the history
  • Loading branch information
InsomniaRolodex committed Aug 20, 2024
1 parent af7c685 commit 74bc99d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 18 deletions.
4 changes: 2 additions & 2 deletions src/const.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const SortingTypes = {
const SortingType = {
DAY: 'day',
EVENT: 'event',
TIME: 'time',
PRICE: 'price',
OFFERS: 'offers'};

export {SortingTypes};
export {SortingType};
11 changes: 5 additions & 6 deletions src/presenter/trip-presenter.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import ListEmptyView from '../view/list-empty-view.js';
import PointModel from '../model/point-model.js';
import PointPresenter from './point-presenter.js';
import { updateItem, sortPointsByDay, findSortingDuration } from '../util.js';
import { SortingTypes } from '../const.js';
import { SortingType } from '../const.js';


export default class TripPresenter {
Expand All @@ -18,7 +18,7 @@ export default class TripPresenter {
#destinations;
#offers;
#sortingComponent;
#currentSortingType = SortingTypes.PRICE;
#currentSortingType = SortingType.PRICE;
#sourcedPointsOrder = [];

constructor ({ container, pointModel = new PointModel }) {
Expand Down Expand Up @@ -60,13 +60,13 @@ export default class TripPresenter {

#sortPoints(sortingType) {
switch (sortingType) {
case SortingTypes.DAY:
case SortingType.DAY:
this.#points.sort(sortPointsByDay);
break;
case SortingTypes.PRICE:
case SortingType.PRICE:
this.#points.sort((pointA, pointB) => pointA.basePrice - pointB.basePrice);
break;
case SortingTypes.TIME:
case SortingType.TIME:

this.#points.sort((pointA, pointB) => findSortingDuration(pointA) - findSortingDuration(pointB));
break;
Expand All @@ -82,7 +82,6 @@ export default class TripPresenter {
}
this.#sortPoints(sortingType);
this.#clearPointList();
this.#renderSorting();

this.#points.forEach((point) => this.#renderPoint(point, this.#destinations, this.#offers));
}
Expand Down
13 changes: 3 additions & 10 deletions src/view/sorting-view.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { SortingTypes } from '../const.js';
import { SortingType } from '../const.js';
import AbstractView from '../framework/view/abstract-view.js';
import { capitalize } from '../util.js';

// const findCheckedElement = (element) => element === 'day' ? 'checked' : '';

const createSortingElement = (sortingType) => `
<div class="trip-sort__item trip-sort__item--${sortingType}">
<input id="sort-${sortingType}" class="trip-sort__input visually-hidden" type="radio" name="trip-sort" value="sort-${sortingType}"
Expand All @@ -15,7 +13,7 @@ const createSortingElement = (sortingType) => `

const createSortingTemplate = () => `
<form class="trip-events__trip-sort trip-sort" action="#" method="get">
${Object.values(SortingTypes).map((sortingType) => createSortingElement(sortingType)).join('')}
${Object.values(SortingType).map((sortingType) => createSortingElement(sortingType)).join('')}
</form>`;

export default class SortingView extends AbstractView{
Expand All @@ -24,19 +22,14 @@ export default class SortingView extends AbstractView{
constructor ({onSortTypeChange}) {
super();
this.#handleSortTypeChange = onSortTypeChange;
this.element.addEventListener('click', this.#sortTypeChangeHandler);
this.element.addEventListener('change', this.#sortTypeChangeHandler);
}

get template () {
return createSortingTemplate();
}

#sortTypeChangeHandler = (evt) => {
if (evt.target.tagName !== 'INPUT') {
return;
}

evt.preventDefault();
this.#handleSortTypeChange(evt.target.dataset.sortType);
};
}

0 comments on commit 74bc99d

Please sign in to comment.