From ed4f7d32587d6bbae0ac967cecf5169cbb31eefd Mon Sep 17 00:00:00 2001 From: Maksim Roi Date: Thu, 19 Dec 2024 16:03:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 8 +- src/presenter.js | 81 +++++++++++++------ src/utils.js | 6 +- ...vents-edit-view.js => events-edit-view.js} | 18 ++--- ...vents-item-view.js => events-item-view.js} | 15 ++-- ...vents-list-view.js => events-list-view.js} | 2 +- .../{trip-filters-view.js => filters-view.js} | 6 +- ...ip-main-info-view.js => main-info-view.js} | 13 ++- src/view/{trip-sort-view.js => sort-view.js} | 6 +- 9 files changed, 95 insertions(+), 60 deletions(-) rename src/view/{trip-events-edit-view.js => events-edit-view.js} (93%) rename src/view/{trip-events-item-view.js => events-item-view.js} (88%) rename src/view/{trip-events-list-view.js => events-list-view.js} (90%) rename src/view/{trip-filters-view.js => filters-view.js} (93%) rename src/view/{trip-main-info-view.js => main-info-view.js} (75%) rename src/view/{trip-sort-view.js => sort-view.js} (94%) diff --git a/src/main.js b/src/main.js index c20da4d..d080e9e 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,11 @@ import Presenter from './presenter.js'; +import Model from './model/model.js'; +import { mockDestinations} from './mock/destinations.js'; +import { mockOffers } from './mock/offers.js'; +import { getRandomPoints } from './mock/points.js'; + +const model = new Model(getRandomPoints(), mockOffers, mockDestinations); const mainContainer = document.querySelector('.trip-main'); -new Presenter(mainContainer).init(); +new Presenter(mainContainer, model).init(); diff --git a/src/presenter.js b/src/presenter.js index d823afa..6a725e1 100644 --- a/src/presenter.js +++ b/src/presenter.js @@ -1,39 +1,68 @@ -import TripMainInfo from './view/trip-main-info-view.js'; -import TripFilters from './view/trip-filters-view.js'; -import TripSort from './view/trip-sort-view.js'; -import TripEventsList from './view/trip-events-list-view.js'; -import TripEventsEdit from './view/trip-events-edit-view.js'; -import TripEventsItem from './view/trip-events-item-view.js'; - -import { mockDestinations} from './mock/destinations.js'; -import { mockOffers } from './mock/offers.js'; -import { getRandomPoints } from './mock/points.js'; +import MainInfoView from './view/main-info-view.js'; +import FiltersView from './view/filters-view.js'; +import SortView from './view/sort-view.js'; +import EventsListView from './view/events-list-view.js'; +import EventsEditView from './view/events-edit-view.js'; +import EventsItemView from './view/events-item-view.js'; import {render} from './render.js'; -import Model from './model/model.js'; - export default class Presenter { - model = new Model(getRandomPoints(), mockOffers, mockDestinations); - - mainContainer = document.querySelector('.trip-main'); - filtersContainer = document.querySelector('.trip-controls'); - sortContainer = document.querySelector('.trip-events'); - eventsContainer = new TripEventsList(); + filtersContainer = null; + sortContainer = null; + eventsContainer = new EventsListView(); - constructor(container) { + constructor(container, model) { this.container = container; + this.model = model; + this.filtersContainer = this.container.querySelector('.trip-controls'); + this.sortContainer = document.querySelector('.trip-events'); + } + + init() { + this.renderMainInfo(); + this.renderFilters(); + this.renderSort(); + this.renderEventsList(); + this.renderEventsEdit(); + this.renderEventsItems(); + } + + renderMainInfo() { + const point = this.model.getPoints()[0]; + const destination = this.model.getDestinationById(point.destination); + + render(new MainInfoView(point, destination), this.container); + } + + renderFilters() { + render(new FiltersView(), this.filtersContainer); + } + + renderSort() { + render(new SortView(), this.sortContainer); } - init () { - render(new TripMainInfo(this.model), this.mainContainer); - render(new TripFilters(), this.filtersContainer); - render(new TripSort(), this.sortContainer); + renderEventsList() { render(this.eventsContainer, this.sortContainer, 'beforeend'); - render(new TripEventsEdit(this.model), this.eventsContainer.getElement(),'beforeend'); + } + renderEventsEdit() { + const point = this.model.getPoints()[0]; + const destination = this.model.getDestinationById(point.destination); + const offers = this.model.getOffersById(point.type, point.offers); + const allDestinations = this.model.getDestinations(); + + render(new EventsEditView(point, destination, offers, allDestinations), this.eventsContainer.getElement(), 'beforeend'); + } + + renderEventsItems() { for (let i = 0; i < 3; i++) { - const tripEventsItem = new TripEventsItem(this.model); - render(tripEventsItem, this.eventsContainer.getElement(),'beforeend'); + const point = this.model.getPoints().shift(); + const destination = this.model.getDestinationById(point.destination); + const offers = this.model.getOffersById(point.type, point.offers); + const eventItem = new EventsItemView(point, destination, offers); + + render(eventItem, this.eventsContainer.getElement(), 'beforeend'); } } } diff --git a/src/utils.js b/src/utils.js index 91c53e0..bf3cd08 100644 --- a/src/utils.js +++ b/src/utils.js @@ -11,9 +11,11 @@ const dateModule = { if (days > 0) { return `${days}D ${hours}H ${minutes}M`; - } else if (hours > 0) { + } + if (hours > 0) { return `${hours}H ${minutes}M`; - } else { + } + if (minutes > 0) { return `${minutes}M`; } }, diff --git a/src/view/trip-events-edit-view.js b/src/view/events-edit-view.js similarity index 93% rename from src/view/trip-events-edit-view.js rename to src/view/events-edit-view.js index 1c68d55..02323df 100644 --- a/src/view/trip-events-edit-view.js +++ b/src/view/events-edit-view.js @@ -1,10 +1,7 @@ import { createElement } from '../render.js'; import { dateModule } from '../utils.js'; -function createTripEventsEditTemplate(model){ - const point = model.getPoints()[0]; - const destination = model.getDestinationById(point.destination); - const offers = model.getOffersById(point.type, point.offers); +function createEventsEditTemplate(point, destination, offers , allDestinations) { const dateFrom = new Date(point.dateFrom); const dateTo = new Date(point.dateTo); @@ -78,7 +75,7 @@ function createTripEventsEditTemplate(model){ - ${model.getDestinations().map((city) => ``).join(' ')} + ${allDestinations.map((city) => ``).join(' ')} @@ -134,13 +131,16 @@ function createTripEventsEditTemplate(model){ ); } -export default class TripEventsEdit { - constructor(model){ - this.model = model; +export default class EventsEditView { + constructor(point, destination, offers, allDestinations) { + this.point = point; + this.destination = destination; + this.offers = offers; + this.allDestinations = allDestinations; } getTemplate() { - return createTripEventsEditTemplate(this.model); + return createEventsEditTemplate(this.point, this.destination, this.offers, this.allDestinations); } getElement() { diff --git a/src/view/trip-events-item-view.js b/src/view/events-item-view.js similarity index 88% rename from src/view/trip-events-item-view.js rename to src/view/events-item-view.js index a6b5626..326b5fc 100644 --- a/src/view/trip-events-item-view.js +++ b/src/view/events-item-view.js @@ -1,10 +1,7 @@ import { createElement } from '../render.js'; import { dateModule } from '../utils.js'; -function createTripEventsItemTemplate(model){ - const point = model.getPoints().shift(); - const destination = model.getDestinationById(point.destination); - const offers = model.getOffersById(point.type, point.offers); +function createEventsItemTemplate(point, destination , offers){ const dateFrom = new Date(point.dateFrom); const dateTo = new Date(point.dateTo); @@ -53,13 +50,15 @@ function createTripEventsItemTemplate(model){ ); } -export default class TripEventsItem { - constructor(model) { - this.model = model; +export default class EventsItemView { + constructor(point, destination , offers) { + this.point = point; + this.destination = destination; + this.offers = offers; } getTemplate() { - return createTripEventsItemTemplate(this.model); + return createEventsItemTemplate(this.point, this.destination, this.offers); } getElement() { diff --git a/src/view/trip-events-list-view.js b/src/view/events-list-view.js similarity index 90% rename from src/view/trip-events-list-view.js rename to src/view/events-list-view.js index 2124228..164c1cc 100644 --- a/src/view/trip-events-list-view.js +++ b/src/view/events-list-view.js @@ -9,7 +9,7 @@ function createTripEventsListTemplate(){ ); } -export default class TripEventsList { +export default class EventsListView { getTemplate() { return createTripEventsListTemplate(); } diff --git a/src/view/trip-filters-view.js b/src/view/filters-view.js similarity index 93% rename from src/view/trip-filters-view.js rename to src/view/filters-view.js index 1bb2af7..00846a5 100644 --- a/src/view/trip-filters-view.js +++ b/src/view/filters-view.js @@ -1,6 +1,6 @@ import { createElement } from '../render.js'; -function createTripFiltersTemplate(){ +function createFiltersTemplate(){ return( `
@@ -30,9 +30,9 @@ function createTripFiltersTemplate(){ ); } -export default class TripFilters { +export default class FiltersView { getTemplate() { - return createTripFiltersTemplate(); + return createFiltersTemplate(); } getElement() { diff --git a/src/view/trip-main-info-view.js b/src/view/main-info-view.js similarity index 75% rename from src/view/trip-main-info-view.js rename to src/view/main-info-view.js index 85834fc..45c767a 100644 --- a/src/view/trip-main-info-view.js +++ b/src/view/main-info-view.js @@ -1,9 +1,7 @@ import { createElement } from '../render.js'; import { dateModule } from '../utils.js'; -function createTripMainInfoTemplate(model){ - const point = model.getPoints()[0]; - const destination = model.getDestinationById(point.destination); +function createMainInfoTemplate(point, destination) { const dateFrom = new Date(point.dateFrom); const dateTo = new Date(point.dateTo); @@ -23,13 +21,14 @@ function createTripMainInfoTemplate(model){ ); } -export default class TripMainInfo { - constructor(model) { - this.model = model; +export default class MainInfoView { + constructor(point, destination) { + this.point = point; + this.destination = destination; } getTemplate() { - return createTripMainInfoTemplate(this.model); + return createMainInfoTemplate(this.point, this.destination); } getElement() { diff --git a/src/view/trip-sort-view.js b/src/view/sort-view.js similarity index 94% rename from src/view/trip-sort-view.js rename to src/view/sort-view.js index 36774e4..e6c292b 100644 --- a/src/view/trip-sort-view.js +++ b/src/view/sort-view.js @@ -1,6 +1,6 @@ import { createElement } from '../render.js'; -function createTripSortTemplate(){ +function createSortTemplate(){ return( ` @@ -33,9 +33,9 @@ function createTripSortTemplate(){ ); } -export default class TripSort { +export default class Sortview { getTemplate() { - return createTripSortTemplate(); + return createSortTemplate(); } getElement() {