diff --git a/src/constants.js b/src/constants.js index d135d21..bdac596 100644 --- a/src/constants.js +++ b/src/constants.js @@ -87,8 +87,8 @@ export const UpdateType = { export const DEFAULT_POINT = { id: 0, basePrice: 0, - dateFrom: new Date().toISOString(), - dateTo: new Date().toISOString(), + dateFrom: '', + dateTo: '', destination: 0, isFavorite: false, offers: [], @@ -110,7 +110,7 @@ export const Method = { export const END_POINT = 'https://24.objects.htmlacademy.pro/big-trip'; -export const Authorization = 'Basic FE49wwUYuvTvhn9vBjwv4'; +export const AUTHORIZATION = 'Basic FE49wwUYuvTvhn9vBjwv4'; export const LIMIT_DISPLAYED_DESTINATIONS = 3; diff --git a/src/main.js b/src/main.js index ae4ccd3..eefb601 100644 --- a/src/main.js +++ b/src/main.js @@ -3,14 +3,14 @@ import PointModel from './model/point-model.js'; import FilterModel from './model/filter-model.js'; import FilterPresenter from './presenter/filter-presenter.js'; import PointsApiService from './server/points-api-service.js'; -import { END_POINT, Authorization } from './constants.js'; +import { END_POINT, AUTHORIZATION } from './constants.js'; import TripInfoPresenter from './presenter/trip-info-presenter'; const tripMainElement = document.querySelector('.trip-main'); const tripEventsElement = document.querySelector('.trip-events'); const filtersElement = document.querySelector('.trip-controls__filters'); -const pointsApiService = new PointsApiService(END_POINT, Authorization); +const pointsApiService = new PointsApiService(END_POINT, AUTHORIZATION); const pointModel = new PointModel({ pointsApiService }); const filterModel = new FilterModel(); diff --git a/src/model/point-model.js b/src/model/point-model.js index ea7b4b5..9c942b6 100644 --- a/src/model/point-model.js +++ b/src/model/point-model.js @@ -59,7 +59,7 @@ export default class PointModel extends Observable { async updatePoint(updateType, point) { const updatedPoint = await this.#pointsApiService.updatePoint(point); this.#points = updateItem(this.#points, updatedPoint); - this._notify(updateType, updatedPoint.id); + this._notify(updateType, updatedPoint); } async addPoint(updateType, point) { diff --git a/src/presenter/main-presenter.js b/src/presenter/main-presenter.js index 9ad4a6d..483484d 100644 --- a/src/presenter/main-presenter.js +++ b/src/presenter/main-presenter.js @@ -207,7 +207,7 @@ export default class MainPresenter { try { await this.#pointModel.addPoint(updateType, point); } catch (err) { - this.#pointPresenters.setAborting(); + this.#newPointPresenter.setAborting(); } break; case UserAction.DELETE_POINT: diff --git a/src/presenter/new-point-presenter.js b/src/presenter/new-point-presenter.js index 3715089..3ec9a1f 100644 --- a/src/presenter/new-point-presenter.js +++ b/src/presenter/new-point-presenter.js @@ -31,7 +31,7 @@ export default class NewPointPresenter { destinations: this.#pointModel.destinations, onEditClick: this.#handleCloseClick, onFormSubmit: this.#handleFormSubmit, - onDeleteClick: this.#handleCancelClick + onFormReset: this.#handleFormReset }); render(this.#eventEditorComponent, this.#listComponent, RenderPosition.AFTERBEGIN); @@ -75,7 +75,7 @@ export default class NewPointPresenter { this.destroy(); }; - #handleCancelClick = () => { + #handleFormReset = () => { this.destroy(); }; diff --git a/src/presenter/point-presenter.js b/src/presenter/point-presenter.js index f2d9f69..47bafb9 100644 --- a/src/presenter/point-presenter.js +++ b/src/presenter/point-presenter.js @@ -9,7 +9,7 @@ export default class PointPresenter { #eventComponent = null; #eventEditorComponent = null; - #point = []; + #point = null; #offers = []; #destinations = []; @@ -46,7 +46,7 @@ export default class PointPresenter { destinations: this.#destinations, onEditClick: this.#handleCloseClick, onFormSubmit: this.#handleFormSubmit, - onDeleteClick: this.#handleDeleteClick + onFormReset: this.#handleFormReset }); if (prevEventComponent === null || prevEventEditorComponent === null) { @@ -160,7 +160,7 @@ export default class PointPresenter { ); }; - #handleDeleteClick = (point) => { + #handleFormReset = (point) => { this.#handleDataChange( UserAction.DELETE_POINT, UpdateType.MINOR, diff --git a/src/utils/general.js b/src/utils/general.js index f30ef54..a7da5ca 100644 --- a/src/utils/general.js +++ b/src/utils/general.js @@ -5,8 +5,6 @@ import { DateFormat } from '../constants.js'; export const getRandomInteger = (min = 1, max = 100) => Math.round(Math.random() * Math.abs(max - min)) + min; -export const getRandomArrayElement = (array) => array[getRandomInteger(0, array.length - 1)]; - dayjs.extend(duration); dayjs.extend(minMax); diff --git a/src/view/event-editor-view.js b/src/view/event-editor-view.js index f458f54..f2f87ee 100644 --- a/src/view/event-editor-view.js +++ b/src/view/event-editor-view.js @@ -207,11 +207,11 @@ const createEventEditorTemplate = (point, offers, destinations)=> { + ${isSaving ? 'disabled' : ''}>${isSaving ? 'Saving...' : 'Save'} + type="reset">${setButtonValue()} ${createRollupButtonTemplate(point.id)} @@ -226,12 +226,12 @@ export default class EventEditorView extends AbstractStatefulView { #handleFormSubmit = null; #handleEditClick = null; - #handleDeleteClick = null; + #handleFormReset = null; #dateFromPicker = null; #dateToPicker = null; - constructor({ point, offers, destinations, onEditClick, onFormSubmit, onDeleteClick }) { + constructor({ point, offers, destinations, onEditClick, onFormSubmit, onFormReset }) { super(); this._setState(EventEditorView.parsePointToState(point)); this.#offers = offers; @@ -239,7 +239,7 @@ export default class EventEditorView extends AbstractStatefulView { this.#handleEditClick = onEditClick; this.#handleFormSubmit = onFormSubmit; - this.#handleDeleteClick = onDeleteClick; + this.#handleFormReset = onFormReset; this._restoreHandlers(); } @@ -274,11 +274,11 @@ export default class EventEditorView extends AbstractStatefulView { _restoreHandlers() { this.element.querySelector('.event__rollup-btn')?.addEventListener('click', this.#editClickHandler); this.element.querySelector('form').addEventListener('submit', this.#formSubmitHandler); - this.element.querySelector('form').addEventListener('reset', this.#formDeleteClickHandler); - this.element.querySelector('.event__type-group').addEventListener('change', this.#changeTypeHandler); - this.element.querySelector('.event__input--destination').addEventListener('change', this.#changeDestinationHandler); - this.element.querySelector('.event__available-offers')?.addEventListener('change', this.#changeAvailableOffersHandler); - this.element.querySelector('.event__field-group--price').addEventListener('input', this.#changePriceHandler); + this.element.querySelector('form').addEventListener('reset', this.#formResetHandler); + this.element.querySelector('.event__type-group').addEventListener('change', this.#typeChangeHandler); + this.element.querySelector('.event__input--destination').addEventListener('change', this.#destinationChangeHandler); + this.element.querySelector('.event__available-offers')?.addEventListener('change', this.#availableOffersChangeHandler); + this.element.querySelector('.event__field-group--price').addEventListener('input', this.#priceInputHandler); this.#setDatePicker(); } @@ -303,13 +303,13 @@ export default class EventEditorView extends AbstractStatefulView { #editClickHandler = () => this.#handleEditClick(); - #changeTypeHandler = (event) => { + #typeChangeHandler = (event) => { this.updateElement({ type: event.target.value }); }; - #changeDestinationHandler = (event) => { + #destinationChangeHandler = (event) => { const newDestination = this.#destinations.find((destination) => destination.name === event.target.value); if (newDestination) { @@ -321,7 +321,7 @@ export default class EventEditorView extends AbstractStatefulView { event.target.value = ''; }; - #changeAvailableOffersHandler = () => { + #availableOffersChangeHandler = () => { const selectedOffers = this.element.querySelectorAll('.event__offer-checkbox:checked'); this._setState({ @@ -329,7 +329,7 @@ export default class EventEditorView extends AbstractStatefulView { }); }; - #changePriceHandler = (event) => { + #priceInputHandler = (event) => { this._setState({ basePrice: parseInt(event.target.value, 10) }); @@ -366,8 +366,8 @@ export default class EventEditorView extends AbstractStatefulView { }); }; - #formDeleteClickHandler = (event) => { + #formResetHandler = (event) => { event.preventDefault(); - this.#handleDeleteClick(EventEditorView.parseStateToPoint(this._state)); + this.#handleFormReset(EventEditorView.parseStateToPoint(this._state)); }; } diff --git a/src/view/events-item-view.js b/src/view/events-item-view.js index 60c01cd..d67b5c2 100644 --- a/src/view/events-item-view.js +++ b/src/view/events-item-view.js @@ -67,7 +67,7 @@ const createEventItemTemplate = (point, offers, destinations) => { }; export default class EventsItemView extends AbstractView { - #point = []; + #point = null; #destinations = []; #offers = [];