Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Шаблонизируй это #4

Merged
merged 1 commit into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/main.js
Original file line number Diff line number Diff line change
@@ -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();
81 changes: 55 additions & 26 deletions src/presenter.js
Original file line number Diff line number Diff line change
@@ -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');
}
}
}
6 changes: 4 additions & 2 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -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`;
}
},
Expand Down
Original file line number Diff line number Diff line change
@@ -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);

Expand Down Expand Up @@ -78,7 +75,7 @@ function createTripEventsEditTemplate(model){
</label>
<input class="event__input event__input--destination" id="event-destination-1" type="text" name="event-destination" value="${destination.name}" list="destination-list-1">
<datalist id="destination-list-1">
${model.getDestinations().map((city) => `<option value="${city.name}"></option>`).join(' ')}
${allDestinations.map((city) => `<option value="${city.name}"></option>`).join(' ')}
</datalist>
</div>

Expand Down Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
@@ -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);

Expand Down Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ function createTripEventsListTemplate(){
);
}

export default class TripEventsList {
export default class EventsListView {
getTemplate() {
return createTripEventsListTemplate();
}
Expand Down
6 changes: 3 additions & 3 deletions src/view/trip-filters-view.js → src/view/filters-view.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { createElement } from '../render.js';

function createTripFiltersTemplate(){
function createFiltersTemplate(){

return(
` <form class="trip-filters" action="#" method="get">
Expand Down Expand Up @@ -30,9 +30,9 @@ function createTripFiltersTemplate(){
);
}

export default class TripFilters {
export default class FiltersView {
getTemplate() {
return createTripFiltersTemplate();
return createFiltersTemplate();
}

getElement() {
Expand Down
13 changes: 6 additions & 7 deletions src/view/trip-main-info-view.js → src/view/main-info-view.js
Original file line number Diff line number Diff line change
@@ -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);

Expand All @@ -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() {
Expand Down
6 changes: 3 additions & 3 deletions src/view/trip-sort-view.js → src/view/sort-view.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { createElement } from '../render.js';

function createTripSortTemplate(){
function createSortTemplate(){

return(
` <form class="trip-events__trip-sort trip-sort" action="#" method="get">
Expand Down Expand Up @@ -33,9 +33,9 @@ function createTripSortTemplate(){
);
}

export default class TripSort {
export default class Sortview {
getTemplate() {
return createTripSortTemplate();
return createSortTemplate();
}

getElement() {
Expand Down
Loading