intervention-pages
Version:
170 lines (167 loc) • 7.22 kB
JavaScript
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 };