diff --git a/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html b/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html index fe8a160ecdd01a23d9ca1c6c47fdbd8cbcc766b3..372eb4b243acf33d9324d23569bce90348d99537 100644 --- a/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html +++ b/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.html @@ -39,7 +39,7 @@ </ng-template> <ng-container *ngTemplateOutlet="programDataset"></ng-container> </mat-tab> - <!-- <mat-tab appTelemetryInteract> + <mat-tab appTelemetryInteract> <ng-template mat-tab-label> <span class="font-weight-bold">{{resourceService?.frmelmnts?.lbl?.graphs}}</span> </ng-template> @@ -50,7 +50,7 @@ <span class="font-weight-bold">{{resourceService?.frmelmnts?.lbl?.table}}</span> </ng-template> <ng-container *ngTemplateOutlet="table"></ng-container> - </mat-tab> --> + </mat-tab> </mat-tab-group> </div> diff --git a/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.ts b/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.ts index 66dd9de3f7d65d5832fc25d8d41375ba88a092b5..b16c1f4594fcfbc81fc8e6eca30c09b24e044f49 100644 --- a/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.ts +++ b/src/app/client/src/app/modules/program-dashboard/components/program-datasets/program-datasets.component.ts @@ -311,16 +311,16 @@ export class DatasetsComponent implements OnInit, OnDestroy { "reportconfig.report_status": "active" } - // this.dashboardReport$ = this.renderReport(filtersForReport).pipe( - // catchError(err => { - // console.error('Error while rendering report', err); - // this.noResultMessage = { - // 'messageText': _.get(err, 'messageText') || 'messages.stmsg.m0131' - // }; - // this.noResult = true; - // return of({}); - // }) - // ); + this.dashboardReport$ = this.renderReport(filtersForReport).pipe( + catchError(err => { + console.error('Error while rendering report', err); + this.noResultMessage = { + 'messageText': _.get(err, 'messageText') || 'messages.stmsg.m0131' + }; + this.noResult = true; + return of({}); + }) + ); if (types && types.length > 0) { types.forEach(element => { @@ -558,10 +558,70 @@ export class DatasetsComponent implements OnInit, OnDestroy { reportChanged(selectedReportData) { this.resetConfigFilters(); this.selectedReport = selectedReportData; + if(this.selectedReport.name === 'Status Report'){ + this.selectedReport['configurableFilters'] = true; + this.selectedReport['filters'] = [ + { + "type": "in", + "dimension": "status_of_project", + "values": "$status_of_project" + }, + { + "type": "equals", + "dimension": "private_program", + "value": "false" + }, + { + "type": "equals", + "dimension": "sub_task_deleted_flag", + "value": "false" + }, + { + "type": "equals", + "dimension": "task_deleted_flag", + "value": "false" + }, + { + "type": "equals", + "dimension": "project_deleted_flag", + "value": "false" + }, + { + "type": "equals", + "dimension": "program_id", + "value": "$programId" + }, + { + "type": "equals", + "dimension": "solution_id", + "value": "$solutionId" + }, + { + "type": "equals", + "dimension": "district_externalId", + "value": "$district_externalId" + }, + { + "type": "equals", + "dimension": "organisation_id", + "value": "$organisation_id" + } + ] + this.selectedReport['uiFilters'] = [ + { + "label": "Status", + "controlType": "multi-select", + "reference": "status_of_project", + "placeholder":"Select status", + "options":["started","submitted","inProgress"] + }] + } if(this.selectedReport.configurableFilters){ this.pdFilters = this.selectedReport.uiFilters; this.pdFilters.map(filter => { - this.configuredFilters[filter['reference']] = filter['defaultValue'] as number -1 + if(filter['controlType'] === 'number'){ + this.configuredFilters[filter['reference']] = filter['defaultValue'] as number -1 + } }) } } @@ -572,12 +632,17 @@ export class DatasetsComponent implements OnInit, OnDestroy { } pdFilterChanged($event){ - const [reference, value]= [Object.keys($event),Object.values($event)] ; - if([0,null].includes(value[0] as number) || value[0] < 0){ - this.configuredFilters[reference[0]] = undefined; + const [reference, value]= [Object.keys($event.data),Object.values($event.data)] ; + if($event.controlType === 'number'){ + if([0,null].includes(value[0] as number) || value[0] < 0){ + this.configuredFilters[reference[0]] = undefined; + }else{ + this.configuredFilters[reference[0]] = value[0] as number -1; + } }else{ - this.configuredFilters[reference[0]] = value[0] as number -1; + this.configuredFilters[reference[0]] = value[0] } + console.log('event',$event,'reference',reference,'value',value); } addFilters() { @@ -595,9 +660,9 @@ export class DatasetsComponent implements OnInit, OnDestroy { this.selectedReport['filters'].map(data => { keys.filter(key => { - return data.dimension == key && (data.value = filterKeysObj[key]); + return data.dimension === key && (_.has(data,'value') ? data.value = filterKeysObj[key] : data.values = filterKeysObj[key]); }) - if (data.value !== undefined) { + if (data.value !== undefined || data.values !== undefined) { this.filter.push(data); } }); diff --git a/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.html b/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.html index 3c7dabd4d169846562d2a11149019633af64ff5f..5239d303f1439eb7970d71b7530b21871ef93d80 100644 --- a/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.html +++ b/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.html @@ -15,5 +15,16 @@ /> </mat-form-field> </ng-container> + <ng-container *ngIf="pdFilter.controlType === 'multi-select'"> + <mat-form-field + appearance="fill" + class="sb-mat__dropdown" + > + <mat-select (selectionChange)="inputChange()" multiple [formControlName]="pdFilter.reference" [placeholder]="pdFilter.placeholder" > + <mat-option class="mat-dropdown__options" role="option" *ngFor="let option of pdFilter.options" [value]="option" + attr.aria-label="{{option}}" class="custom_mat_multi">{{option | lowercase | titlecase}}</mat-option> + </mat-select> + </mat-form-field> + </ng-container> </div> </form> diff --git a/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.scss b/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..a1b554894a4e08245e921d75e16e1d81869fc0ba --- /dev/null +++ b/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.scss @@ -0,0 +1,5 @@ +::ng-deep{ + .custom_mat_multi.mat-option{ + display: flex !important; + } +} diff --git a/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.ts b/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.ts index 8da95651877dc9a59da42f144ed050958712d643..87967bb1d253e7b1c35d00515ec8c351157a755b 100644 --- a/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.ts +++ b/src/app/client/src/app/modules/program-dashboard/shared/pd-filters/pd-filters.component.ts @@ -4,7 +4,8 @@ import * as _ from "lodash-es"; @Component({ selector: "app-pd-filters", - templateUrl: "./pd-filters.component.html" + templateUrl: "./pd-filters.component.html", + styleUrls:["./pd-filters.component.scss"] }) export class PdFiltersComponent implements OnInit { @Input() pdFilter: any; @@ -26,6 +27,12 @@ export class PdFiltersComponent implements OnInit { } inputChange() { - this.filterChanged.emit(this.pdFiltersFormGroup.value); + console.log('Form value', this.pdFiltersFormGroup.value) + const dataToBeEmitted = { + data:this.pdFiltersFormGroup.value, + controlType:this.pdFilter.controlType + } + console.log('data to emit',dataToBeEmitted) + this.filterChanged.emit(dataToBeEmitted); } }