UNPKG

intervention-pages

Version:
144 lines (139 loc) 5.29 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; /* eslint-disable lit/no-legacy-template-syntax */ import { PolymerElement, html } from '@polymer/polymer'; import { gridLayoutStylesPolymer } from '../../../common/styles/grid-layout-styles-polymer'; // @lajos bellow 2 where imported from PMP // import EndpointsMixin from '../mixins/endpoints-mixin'; import { getEndpoint } from '../../../utils/endpoint-helper'; import { interventionEndpoints } from '../../../utils/intervention-endpoints'; import { prepareDatepickerDate } from '../../../utils/date-utils'; import '@polymer/iron-label/iron-label'; import '@polymer/paper-input/paper-input'; import '@unicef-polymer/etools-dialog/etools-dialog'; import '@unicef-polymer/etools-date-time/calendar-lite'; // @lajos To refactor bellow import { fireEvent } from '../../../utils/fire-custom-event'; import { logError } from '@unicef-polymer/etools-behaviors/etools-logging'; import { sendRequest } from '@unicef-polymer/etools-ajax/etools-ajax-request'; import { parseRequestErrorsAndShowAsToastMsgs } from '@unicef-polymer/etools-ajax/ajax-error-parser'; import { property } from '@polymer/decorators'; /** * @polymer * @customElement * @mixinFunction */ class AddEditSpecialRepReq extends PolymerElement { static get template() { // language=HTML return html ` ${gridLayoutStylesPolymer()} <style> :host { display: block; } paper-input { width: 100%; } iron-label { margin-bottom: 24px; } calendar-lite { position: relative; } </style> <etools-dialog id="addEditDialog" size="lg" opened="{{opened}}" dialog-title="Add/Edit Special Reporting Requirements" on-confirm-btn-clicked="_save" ok-btn-text="Save" keep-dialog-open > <div class="row-h"> <div class="col layout-vertical col-5"> <iron-label for="startDate"> Report Due Date </iron-label> <calendar-lite id="startDate" date="[[prepareDatepickerDate(item.due_date)]]" pretty-date="{{item.due_date}}" format="YYYY-MM-DD" hide-header ></calendar-lite> </div> </div> <div class="row-h"> <paper-input label="Reporting Requirement" placeholder="&#8212;" value="{{item.description}}"> </paper-input> </div> </etools-dialog> `; } _isNew() { return !this.item.id; } _getEndpoint() { if (this._isNew()) { // new/create return getEndpoint(interventionEndpoints.specialReportingRequirements, { intervId: this.interventionId }); } else { // already saved... update/delete return getEndpoint(interventionEndpoints.specialReportingRequirementsUpdate, { reportId: this.item.id }); } } _save() { const dialog = this.$.addEditDialog; dialog.startSpinner(); const endpoint = this._getEndpoint(); const method = this._isNew() ? 'POST' : 'PATCH'; sendRequest({ method: method, endpoint: endpoint, body: this._getBody() }) .then((response) => { fireEvent(this, 'reporting-requirements-saved', response); dialog.stopSpinner(); this.opened = false; }) .catch((error) => { dialog.stopSpinner(); logError('Failed to save/update special report requirement!', 'add-edit-special-rep-req', error); parseRequestErrorsAndShowAsToastMsgs(error, this.toastMsgLoadingSource); }); } _getBody() { return { due_date: this.item.due_date, description: this.item.description }; } prepareDatepickerDate(dateStr) { return prepareDatepickerDate(dateStr); } } __decorate([ property({ type: Boolean }) ], AddEditSpecialRepReq.prototype, "opened", void 0); __decorate([ property({ type: Number }) ], AddEditSpecialRepReq.prototype, "interventionId", void 0); __decorate([ property({ type: Object }) ], AddEditSpecialRepReq.prototype, "item", void 0); __decorate([ property({ type: Object }) ], AddEditSpecialRepReq.prototype, "toastMsgLoadingSource", void 0); window.customElements.define('add-edit-special-rep-req', AddEditSpecialRepReq); export { AddEditSpecialRepReq as AddEditSpecialRepReqEl };