UNPKG

intervention-pages

Version:
89 lines (88 loc) 4.09 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; }; import { getEndpoint } from '../../../utils/endpoint-helper'; import { interventionEndpoints } from '../../../utils/intervention-endpoints'; import { sendRequest } from '@unicef-polymer/etools-ajax/etools-ajax-request'; import CONSTANTS from '../../../common/constants'; import { logError } from '@unicef-polymer/etools-behaviors/etools-logging'; import { parseRequestErrorsAndShowAsToastMsgs } from '@unicef-polymer/etools-ajax/ajax-error-parser'; import { property } from '@polymer/decorators'; import { isEmptyObject } from '../../../utils/utils'; /** * @polymer * @mixinFunction * @appliesMixin EndpointsMixin */ function ReportingRequirementsCommonMixin(baseClass) { class ReportingRequirementsCommon extends baseClass { constructor() { super(...arguments); this.reportingRequirements = []; this.requirementsCount = 0; } static get observers() { return ['_countReportingReq(reportingRequirements.length)']; } _getEndpointObj(id, type) { if (type === CONSTANTS.REQUIREMENTS_REPORT_TYPE.SPECIAL) { return getEndpoint(interventionEndpoints.specialReportingRequirements, { intervId: id }); } return getEndpoint(interventionEndpoints.reportingRequirements, { intervId: id, reportType: type }); } _interventionIdChanged(newId) { if (!newId) { this.reportingRequirements = []; return; } // @ts-ignore *Defined in the component const type = this._getReportType(); const endpoint = this._getEndpointObj(newId, type); sendRequest({ method: 'GET', endpoint: endpoint }) .then((response) => { this.set('reportingRequirements', type === CONSTANTS.REQUIREMENTS_REPORT_TYPE.SPECIAL ? response : response.reporting_requirements); }) .catch((error) => { logError('Failed to get qpr data from API!', 'reporting-requirements-common-mixin', error); parseRequestErrorsAndShowAsToastMsgs(error, this); }); } _countReportingReq(length) { const l = typeof length === 'number' ? length : 0; this.set('requirementsCount', l); // @ts-ignore *Defined in the component if (typeof this._sortRequirementsAsc === 'function' && l > 0) { // @ts-ignore *Defined in the component this._sortRequirementsAsc(); } } _getIndex(index) { return index + 1; } _empty(list) { return isEmptyObject(list); } _onReportingRequirementsSaved(e) { this.set('reportingRequirements', e.detail); } } __decorate([ property({ type: Array }) ], ReportingRequirementsCommon.prototype, "reportingRequirements", void 0); __decorate([ property({ type: Number, notify: true }) ], ReportingRequirementsCommon.prototype, "requirementsCount", void 0); __decorate([ property({ type: Number, observer: '_interventionIdChanged' }) ], ReportingRequirementsCommon.prototype, "interventionId", void 0); return ReportingRequirementsCommon; } export default ReportingRequirementsCommonMixin;