intervention-pages
Version:
89 lines (88 loc) • 4.09 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;
};
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;