UNPKG

intervention-pages

Version:
170 lines (167 loc) 7.22 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 { fireEvent } from '../../../utils/fire-custom-event'; import CONSTANTS from '../../../common/constants'; import '@polymer/paper-button/paper-button.js'; import './edit-hru-dialog.js'; import './hru-list.js'; import ReportingRequirementsCommonMixin from '../mixins/reporting-requirements-common-mixin'; import FrontendPaginationMixin from '../mixins/frontend-pagination-mixin'; import { gridLayoutStylesPolymer } from '../../../common/styles/grid-layout-styles-polymer'; import { buttonsStylesPolymer } from '../styles/buttons-styles-polymer'; import { property } from '@polymer/decorators'; import { sharedStylesPolymer } from '../../../common/styles/shared-styles-polymer'; /** * @customElement * @polymer * @mixinFunction * @appliesMixin ReportingRequirementsCommonMixin * @appliesMixin FrontendPaginationMixin */ class HumanitarianReportingReqUnicef extends FrontendPaginationMixin(ReportingRequirementsCommonMixin(PolymerElement)) { static get template() { return html ` ${gridLayoutStylesPolymer()}${sharedStylesPolymer()}${buttonsStylesPolymer()} <style> :host { display: block; } *[hidden] { display: none !important; } </style> <div hidden$="[[!_empty(reportingRequirements)]]"> <div class="row-h"> There are no humanitarian report requirements set. </div> <div class="row-h" hidden$="[[!_showAdd(expectedResults, editMode)]]"> <paper-button class="secondary-btn" on-click="openUnicefHumanitarianRepReqDialog"> ADD REQUIREMENTS </paper-button> </div> <div class="row-h" hidden$="[[_thereAreHFIndicators(expectedResults)]]"> Can be modified only if there are High Frequency Humanitarian Indicators defined. </div> </div> <div class="flex-c" hidden$="[[_empty(reportingRequirements)]]"> <hru-list id="hruList" class="flex-c" hru-data="[[dataItems]]" disable-sorting use-pagination-index> </hru-list> <etools-data-table-footer page-size="[[pagination.pageSize]]" page-number="[[pagination.pageNumber]]" total-results="[[pagination.totalResults]]" on-page-size-changed="_pageSizeChanged" on-page-number-changed="_pageNumberChanged" > </etools-data-table-footer> </div> `; } static get observers() { return [ 'setTotalResults(interventionId, reportingRequirements)', '_paginationChanged(pagination.pageNumber, pagination.pageSize, reportingRequirements)' ]; } ready() { super.ready(); this._createEditHruDialog(); this.$.hruList.set('hruMainEl', this); } disconnectedCallback() { super.disconnectedCallback(); this._removeEditHruDialog(); } _createEditHruDialog() { this._reportingRequirementsSaved = this._reportingRequirementsSaved.bind(this); this.editHruDialog = document.createElement('edit-hru-dialog'); this.editHruDialog.set('toastMsgLoadingSource', this); this.editHruDialog.addEventListener('reporting-requirements-saved', this._reportingRequirementsSaved); document.querySelector('body').appendChild(this.editHruDialog); } _removeEditHruDialog() { if (this.editHruDialog) { this.editHruDialog.removeEventListener('reporting-requirements-saved', this._reportingRequirementsSaved); document.querySelector('body').removeChild(this.editHruDialog); } } _reportingRequirementsSaved(e) { this._onReportingRequirementsSaved(e); // reset page number this.set('pagination.pageNumber', 1); } _sortRequirementsAsc() { this.reportingRequirements.sort((a, b) => { // @ts-ignore return new Date(a.due_date) - new Date(b.due_date); }); } _getReportType() { return CONSTANTS.REQUIREMENTS_REPORT_TYPE.HR; } openUnicefHumanitarianRepReqDialog() { if (!this.interventionStart) { fireEvent(this, 'toast', { text: 'You have to fill PD Start Date first!', showCloseBtn: true }); return; } let hruData = []; if (this.requirementsCount > 0) { hruData = JSON.parse(JSON.stringify(this.reportingRequirements)); } this.editHruDialog.set('hruData', hruData); this.editHruDialog.set('selectedDate', null); this.editHruDialog.set('interventionId', this.interventionId); this.editHruDialog.set('interventionStart', this.interventionStart); this.editHruDialog.openDialog(); } setTotalResults(interventionId, reportingRequirements) { if (typeof interventionId === 'undefined' || typeof reportingRequirements === 'undefined') { return; } this.set('pagination.totalResults', reportingRequirements.length); } _getIndex(index) { return index + 1 + this.pagination.pageSize * (this.pagination.pageNumber - 1); } _thereAreHFIndicators(expectedResults) { if (!expectedResults) { return false; } const hfIndicator = expectedResults.find((r) => { return r.ll_results.find((llr) => { return llr.applied_indicators.find((i) => { return i.is_active && i.is_high_frequency; }); }); }); return hfIndicator ? true : false; } _showAdd(expectedResults, editMode) { if (!editMode) { return false; } return this._thereAreHFIndicators(expectedResults); } } __decorate([ property({ type: Object }) ], HumanitarianReportingReqUnicef.prototype, "editHruDialog", void 0); __decorate([ property({ type: Array }) ], HumanitarianReportingReqUnicef.prototype, "expectedResults", void 0); __decorate([ property({ type: Date }) ], HumanitarianReportingReqUnicef.prototype, "interventionStart", void 0); __decorate([ property({ type: Boolean }) ], HumanitarianReportingReqUnicef.prototype, "editMode", void 0); window.customElements.define('humanitarian-reporting-req-unicef', HumanitarianReportingReqUnicef); export { HumanitarianReportingReqUnicef as HumanitarianReportingReqUnicefEl };