diff --git a/public/index.html b/public/index.html
index 44c26b4..ebb0970 100644
--- a/public/index.html
+++ b/public/index.html
@@ -22,7 +22,7 @@
@@ -54,7 +67,26 @@ const createDestinations = (destinationsList) => {
return destinationsHTML;
};
-const createNewEventEditElementTemplate = (eventData, destinationsList) => {
+const createDestinationDescription = (description) => {
+ if (!description) {
+ return '';
+ }
+ return `
+ Destination
+ ${description}
+ `;
+};
+
+const createOpenEventButton = (isDefaultEvent) => {
+ if (isDefaultEvent) {
+ return '';
+ }
+ return `
+ Open event
+ `;
+};
+
+const createNewEventEditElementTemplate = (eventData, destinationsList, isDefaultEvent) => {
const {basePrice, type, offers, destination, dateFrom, dateTo} = eventData;
return `
@@ -79,7 +111,7 @@ const createNewEventEditElementTemplate = (eventData, destinationsList) => {
${type}
-
+
${createDestinations(destinationsList)}
@@ -103,23 +135,11 @@ const createNewEventEditElementTemplate = (eventData, destinationsList) => {
Save
Delete
-
- Open event
-
+ ${createOpenEventButton(isDefaultEvent)}
-
- Offers
-
-
- ${createOffers(offers)}
-
-
-
-
- Destination
- ${destination.description}
-
+ ${createOffersContainer(offers)}
+ ${createDestinationDescription(destination.description)}
`;
@@ -128,24 +148,28 @@ const createNewEventEditElementTemplate = (eventData, destinationsList) => {
export default class NewEventEditElementView extends AbstractStatefulView {
#eventData = null;
#handleClick = null;
+ #handleDeleteClick = null;
#rollupButton = null;
#destinationsData = null;
#findDestinationData = null;
#getOffersMapByType = null;
#datepicker = null;
+ #isDefaultEvent = null;
#handleSubmit = null;
#formElement = null;
- constructor ({userEvent, onClick, findDestinationData, destinationsData, getOffersMapByType, onSubmit}) {
+ constructor ({userEvent, onClick, onSubmit, onDeleteClick, findDestinationData, destinationsData, getOffersMapByType, isDefaultEvent}) {
super();
this.#eventData = userEvent;
this.#findDestinationData = findDestinationData;
this.#destinationsData = destinationsData;
this.#getOffersMapByType = getOffersMapByType;
+ this.#isDefaultEvent = isDefaultEvent;
this._setState(NewEventEditElementView.parseEventDataToState(userEvent));
this.#handleClick = onClick;
+ this.#handleDeleteClick = onDeleteClick;
this.#handleSubmit = onSubmit;
this._restoreHandlers();
@@ -153,7 +177,7 @@ export default class NewEventEditElementView extends AbstractStatefulView {
}
get template () {
- return createNewEventEditElementTemplate(this._state, this.#destinationsData);
+ return createNewEventEditElementTemplate(this._state, this.#destinationsData, this.#isDefaultEvent);
}
removeElement() {
@@ -175,7 +199,12 @@ export default class NewEventEditElementView extends AbstractStatefulView {
this.#rollupButton = this.element.querySelector('.event__rollup-btn');
this.#formElement = this.element.querySelector('.event--edit');
this.#formElement.addEventListener('submit', this.#submitHandler);
- this.#rollupButton.addEventListener('click', this.#clickHandler);
+ if (!this.#isDefaultEvent) {
+ this.#rollupButton.addEventListener('click', this.#clickHandler);
+ }
+
+ this.element.querySelector('.event__reset-btn')
+ .addEventListener('click', this.#deleteHandler);
this.element.querySelector('#event-price-1')
.addEventListener('input', this.#eventPriceToggleHandler);
@@ -201,7 +230,12 @@ export default class NewEventEditElementView extends AbstractStatefulView {
#submitHandler = (evt) => {
evt.preventDefault();
- this.#handleClick(NewEventEditElementView.parseStateToEventData(this._state));
+ this.#handleSubmit(NewEventEditElementView.parseStateToEventData(this._state));
+ };
+
+ #deleteHandler = (evt) => {
+ evt.preventDefault();
+ this.#handleDeleteClick(NewEventEditElementView.parseStateToEventData(this._state));
};
removeEventListeners() {
@@ -294,7 +328,7 @@ export default class NewEventEditElementView extends AbstractStatefulView {
evt.preventDefault();
const offerId = evt.currentTarget.dataset.offerId;
- const offers = new Map (this._state.offers);
+ const offers = this._state.offers;
if (offers.has(offerId)) {
const offer = offers.get(offerId);
diff --git a/src/view/new-events-item-view.js b/src/view/new-events-item-view.js
index a4ac1cc..7449a5d 100644
--- a/src/view/new-events-item-view.js
+++ b/src/view/new-events-item-view.js
@@ -35,7 +35,9 @@ const createNewOffer = (offer) => {
const createOffers = (offers) => {
let offersHTML = '';
offers.forEach((offer) => {
- offersHTML += createNewOffer(offer);
+ if (offer.isActive) {
+ offersHTML += createNewOffer(offer);
+ }
});
return offersHTML;
};
diff --git a/src/view/new-filters-view.js b/src/view/new-filters-view.js
index 4d7ed05..1fc01cb 100644
--- a/src/view/new-filters-view.js
+++ b/src/view/new-filters-view.js
@@ -1,6 +1,6 @@
import AbstractView from '../framework/view/abstract-view';
-const createFilterItemTemplate = (filter, isChecked) => {
+const createFilterItemTemplate = (filter, currentFilterType) => {
const {type, count} = filter;
return `
@@ -10,15 +10,15 @@ const createFilterItemTemplate = (filter, isChecked) => {
type="radio"
name="trip-filter"
value="${type}"
- ${isChecked ? 'checked' : ''}
+ ${type === currentFilterType ? 'checked' : ''}
${count === 0 ? 'disabled' : ''}>
${type}
`;
};
-const createNewTripFiltersTemplate = (filterItems) => {
+const createNewTripFiltersTemplate = (filterItems, currentFilterType) => {
const filterItemsTemplate = filterItems
- .map((filter, index) => createFilterItemTemplate(filter, index === 0))
+ .map((filter) => createFilterItemTemplate(filter, currentFilterType))
.join('');
return `
Loading...
';
-}
+const NoTasksTextType = {
+ [FilterType.EVERYTHING]: 'Click New Event to create your first point',
+ [FilterType.FUTURE]: 'There are no future events',
+ [FilterType.PRESENT]: 'There are no present events',
+ [FilterType.PAST]: 'There are no past events',
+};
+
+const createNoEventsViewTemplate = (filterType) => {
+ const noEventTextValue = NoTasksTextType[filterType];
+ return `