From c4338b44f0c34db839205a726152e819273cba09 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Thu, 5 Dec 2024 22:43:52 -0500 Subject: [PATCH] System Jobs using confirmation dialog --- .../manage-scheduler-jobs.component.html | 67 ++++++++------- .../manage-scheduler-jobs.component.ts | 27 +++++++ .../run-selected-jobs-popover.component.html | 23 ++++++ .../run-selected-jobs-popover.component.scss | 9 +++ ...un-selected-jobs-popover.component.spec.ts | 23 ++++++ .../run-selected-jobs-popover.component.ts | 81 +++++++++++++++++++ .../run-selected-jobs-table.component.html | 23 ++++++ .../run-selected-jobs-table.component.scss | 13 +++ .../run-selected-jobs-table.component.spec.ts | 23 ++++++ .../run-selected-jobs-table.component.ts | 52 ++++++++++++ src/app/system/system.module.ts | 6 +- src/app/system/system.service.ts | 2 +- src/assets/translations/cs-CS.json | 1 + src/assets/translations/de-DE.json | 1 + src/assets/translations/en-US.json | 1 + src/assets/translations/es-MX.json | 1 + src/assets/translations/fr-FR.json | 1 + src/assets/translations/it-IT.json | 1 + src/assets/translations/ko-KO.json | 1 + src/assets/translations/lt-LT.json | 1 + src/assets/translations/lv-LV.json | 1 + src/assets/translations/ne-NE.json | 1 + src/assets/translations/pt-PT.json | 1 + src/assets/translations/sw-SW.json | 1 + src/environments/.env.ts | 4 +- 25 files changed, 332 insertions(+), 33 deletions(-) create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.html create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.scss create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.spec.ts create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.ts create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.html create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.scss create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.spec.ts create mode 100644 src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.ts diff --git a/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.html b/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.html index d4fe4b579..dc341f4cc 100644 --- a/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.html +++ b/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.html @@ -1,6 +1,7 @@
-

{{'labels.heading.Scheduler Status' | translate}}:{{ schedulerActive ? ( 'labels.inputs.Active' | translate ) : ('labels.catalogs.Inactive' | translate) }} +

{{'labels.heading.Scheduler Status' | translate}}:{{ schedulerActive ? + ( 'labels.inputs.Active' | translate ) : ('labels.catalogs.Inactive' | translate) }}

- @@ -75,12 +76,14 @@ {{'labels.inputs.Previous Run' | translate}}
- - - - {{ job.lastRunHistory.jobRunStartTime | datetimeFormat}} + + + + {{ job.lastRunHistory.jobRunStartTime | datetimeFormat}}
@@ -94,8 +97,8 @@ {{'labels.inputs.Currently Running' | translate}}
- +
@@ -104,8 +107,8 @@ {{'labels.inputs.Error Log' | translate}} @@ -123,13 +126,9 @@
- - + {{'labels.buttons.Run Selected Jobs' | translate}} - + (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | + translate}} + + (click)="popover.close();showPopover(templateFilter, filter, 'bottom', true)">{{'labels.buttons.Next' | + translate}}
@@ -152,22 +154,29 @@

{{'labels.heading.Search bar to filter jobs' | translate }}.

+ (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | + translate}} + (click)="popover.close();showPopover(templateSchedulerStatus,schedulerStatus, 'bottom', true)">{{'labels.buttons.Back' + | translate}} + (click)="popover.close();showPopover(templateJobsTable,jobsTable, 'top', true)">{{'labels.buttons.Next' | + translate}}

{{'labels.heading.List of all scheduled batch jobs' | translate }} {{'labels.heading.Schedular Jobs' | translate}}

+ href="https://mifosforge.jira.com/wiki/spaces/docs/pages/67895356/Manage+Scheduler+Jobs" + target="_blank">{{'labels.heading.Schedular Jobs' | translate}}
+ (click)="popover.close();configurationWizardService.closeConfigWizard()">{{'labels.buttons.Close' | + translate}} - + (click)="popover.close();showPopover(templateFilter, filter, 'bottom', true)">{{'labels.buttons.Back' | + translate}} +
-
+ \ No newline at end of file diff --git a/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts b/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts index 3ab43cbeb..19f2af267 100644 --- a/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts +++ b/src/app/system/manage-jobs/scheduler-jobs/manage-scheduler-jobs.component.ts @@ -19,6 +19,7 @@ import { NextStepDialogComponent } from '../../../configuration-wizard/next-step import { CustomParametersPopoverComponent } from './custom-parameters-popover/custom-parameters-popover.component'; import { SchedulerJob } from './models/scheduler-job.model'; import { ErrorLogPopoverComponent } from './error-log-popover/error-log-popover.component'; +import { RunSelectedJobsPopoverComponent } from './run-selected-jobs-popover/run-selected-jobs-popover.component'; /** * Manage scheduler jobs component. @@ -264,4 +265,30 @@ export class ManageSchedulerJobsComponent implements OnInit, AfterViewInit { } } + /** + * Open Run Selected Jobs Confirmation Dialog + */ + openRunSelectedJobsDialog() { + const dialog = this.dialog.open(RunSelectedJobsPopoverComponent, { + data: { + selectedJobs: this.selection + } + }); + + dialog.componentInstance.confirmedJobs.subscribe(result => { + if (result) { + const selectedJobs = this.selection.selected; + const confirmedJobIds = result.map(job => job.jobId); + + selectedJobs.forEach(job => { + if (!confirmedJobIds.includes(job.jobId)) { + this.selection.deselect(job); + } + }); + + dialog.close(); + } + }); + } + } diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.html b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.html new file mode 100644 index 000000000..5cea6c4cc --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.html @@ -0,0 +1,23 @@ +

{{'labels.heading.Selected Jobs' | translate}}:

+ + +
+ + +
+
+ + + + {{message.message}} + + + + + + \ No newline at end of file diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.scss b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.scss new file mode 100644 index 000000000..c81832232 --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.scss @@ -0,0 +1,9 @@ +.message { + height: auto; + font-weight: 500; + color: #f44366; +} + +.message.green { + color: #32cd32; +} \ No newline at end of file diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.spec.ts b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.spec.ts new file mode 100644 index 000000000..263d52f18 --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RunSelectedJobsPopoverComponent } from './run-selected-jobs-popover.component'; + +describe('RunSelectedJobsPopoverComponent', () => { + let component: RunSelectedJobsPopoverComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RunSelectedJobsPopoverComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(RunSelectedJobsPopoverComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.ts b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.ts new file mode 100644 index 000000000..bf51da715 --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component.ts @@ -0,0 +1,81 @@ +import { SelectionModel } from '@angular/cdk/collections'; +import { + Component, EventEmitter, Inject, OnInit, Output, QueryList, + ViewChildren +} from '@angular/core'; +import { MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { SystemService } from 'app/system/system.service'; +import { RunSelectedJobsTableComponent } from './run-selected-jobs-table/run-selected-jobs-table.component'; + +interface SelectedJobsDataType { + selectedJobs: SelectionModel; +} + +export interface JobDataType { + active: boolean; + cronExpression: string; + currentlyRunning: boolean; + displayName: string; + jobId: number; + lastRunHistory: { + jobRunEndTime: string; + jobRunStartTime: string; + status: string; + triggerType: string; + version: number; + }; + nextRunTime: string; +} + +@Component({ + selector: 'mifosx-run-selected-jobs-popover', + templateUrl: './run-selected-jobs-popover.component.html', + styleUrls: ['./run-selected-jobs-popover.component.scss'] +}) +export class RunSelectedJobsPopoverComponent implements OnInit { + + /** Confirmed jobs event emitter */ + @Output() confirmedJobs = new EventEmitter(); + + /** Job table children */ + @ViewChildren(RunSelectedJobsTableComponent) tableComponents: + QueryList; + + /** Initialize Selected Jobs */ + selectedJobs: JobDataType[] = []; + + /** Show modal or not */ + show: number; + + /** API call response message */ + messages: { message: string; status: number }[] = []; + + constructor(private systemService: SystemService, @Inject(MAT_DIALOG_DATA) + public data: SelectedJobsDataType) { } + ngOnInit(): void { + this.selectedJobs = this.data.selectedJobs.selected.sort((a, b) => a.jobId - b.jobId); + } + + /** + * Run all confirmed jobs from table + */ + runSelectedJobs(): void { + this.messages = []; + let tableData: JobDataType[] = []; + this.tableComponents.forEach((tableComponent) => { + tableData = (tableComponent.getTableData()); + }); + + tableData.forEach((job) => { + this.systemService.runSelectedJob(job.jobId.toString()) + .then((response) => { + this.messages.push({ + message: `${job.displayName}: ${response.statusText} (${response.status})`, + status: response.ok + }); + }); + }); + + this.confirmedJobs.emit(tableData); + } +} \ No newline at end of file diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.html b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.html new file mode 100644 index 000000000..3d2dc7a04 --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.html @@ -0,0 +1,23 @@ +
+ + + + + + + + + + + + + +
{{'labels.inputs.Display Name' | + translate}}{{ element.displayName + }} + +
+
\ No newline at end of file diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.scss b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.scss new file mode 100644 index 000000000..2f96e842b --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.scss @@ -0,0 +1,13 @@ +table td { + padding-right: 50px; +} + +.jobs-container { + display: flex; + flex-direction: column; + gap: 10px; +} + +.jobs-container table td { + padding-right: 50px; +} \ No newline at end of file diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.spec.ts b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.spec.ts new file mode 100644 index 000000000..d623821e4 --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RunSelectedJobsTableComponent } from './run-selected-jobs-table.component'; + +describe('RunSelectedJobsTableComponent', () => { + let component: RunSelectedJobsTableComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RunSelectedJobsTableComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(RunSelectedJobsTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.ts b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.ts new file mode 100644 index 000000000..9a3ae60ce --- /dev/null +++ b/src/app/system/manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component.ts @@ -0,0 +1,52 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { JobDataType } from '../run-selected-jobs-popover.component'; + +/** + * Run Selected Jobs Table Component + */ +@Component({ + selector: 'mifosx-run-selected-jobs-table', + templateUrl: './run-selected-jobs-table.component.html', + styleUrls: ['./run-selected-jobs-table.component.scss'] +}) +export class RunSelectedJobsTableComponent implements OnInit { + + /** Selected Jobs For Table */ + @Input() selectedJobs: JobDataType[]; + + /** Confirmed Jobs */ + @Output() confirmedJobs: EventEmitter = new + EventEmitter(); + + /** Columns for the table */ + columnsToDisplay: string[] = ['displayName', 'actions']; + + constructor() { + } + + ngOnInit(): void { + } + + /** + * Removes job from selection array + * @param index + */ + removeJobFromSelection(index: number): void { + let idx = 0; + const finalSelectedJobs: JobDataType[] = []; + for (; idx < this.selectedJobs.length; idx) { + if (idx !== index) { + finalSelectedJobs.push(this.selectedJobs[idx]); + } + } + this.selectedJobs = finalSelectedJobs; + } + + /** + * Gets selected jobs array + * @returns selected jobs array + */ + getTableData(): JobDataType[] { + return this.selectedJobs; + } +} \ No newline at end of file diff --git a/src/app/system/system.module.ts b/src/app/system/system.module.ts index b3f206741..3c618c52d 100644 --- a/src/app/system/system.module.ts +++ b/src/app/system/system.module.ts @@ -75,6 +75,8 @@ import { LoanLockedComponent } from './manage-jobs/cob-workflow/loan-locked/loan import { CustomParametersPopoverComponent } from './manage-jobs/scheduler-jobs/custom-parameters-popover/custom-parameters-popover.component'; import { CustomParametersTableComponent } from './manage-jobs/scheduler-jobs/custom-parameters-popover/custom-parameters-table/custom-parameters-table.component'; import { ErrorLogPopoverComponent } from './manage-jobs/scheduler-jobs/error-log-popover/error-log-popover.component'; +import { RunSelectedJobsPopoverComponent } from './manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-popover.component'; +import { RunSelectedJobsTableComponent } from './manage-jobs/scheduler-jobs/run-selected-jobs-popover/run-selected-jobs-table/run-selected-jobs-table.component'; @NgModule({ imports: [ @@ -149,7 +151,9 @@ import { ErrorLogPopoverComponent } from './manage-jobs/scheduler-jobs/error-log LoanLockedComponent, CustomParametersPopoverComponent, CustomParametersTableComponent, - ErrorLogPopoverComponent + ErrorLogPopoverComponent, + RunSelectedJobsPopoverComponent, + RunSelectedJobsTableComponent ], }) export class SystemModule { } diff --git a/src/app/system/system.service.ts b/src/app/system/system.service.ts index 8da3825cd..9191c24a1 100644 --- a/src/app/system/system.service.ts +++ b/src/app/system/system.service.ts @@ -339,7 +339,7 @@ export class SystemService { * @returns {Observable} */ runSelectedJob(jobId: string): Promise { - return this.http.post(`/jobs/${jobId}?command=executeJob`, this.emptyPayload).toPromise(); + return this.http.post(`/jobs/${jobId}?command=executeJob`, this.emptyPayload, { observe: 'response' }).toPromise(); } /** diff --git a/src/assets/translations/cs-CS.json b/src/assets/translations/cs-CS.json index b3abf4f63..6214c7303 100644 --- a/src/assets/translations/cs-CS.json +++ b/src/assets/translations/cs-CS.json @@ -1084,6 +1084,7 @@ "Select Excel File": "Vyberte Soubor Excel", "Selected Clients": "Vybraní klienti", "Selected Groups": "Vybrané skupiny", + "Selected Jobs": "Vybrané práce", "Session Timeout": "Časový limit relace", "Settings": "Nastavení", "Share Accounts": "Sdílet účty", diff --git a/src/assets/translations/de-DE.json b/src/assets/translations/de-DE.json index 0589dca33..9a99a6b28 100644 --- a/src/assets/translations/de-DE.json +++ b/src/assets/translations/de-DE.json @@ -1085,6 +1085,7 @@ "Select Excel File": "Wählen Sie Excel-Datei", "Selected Clients": "Ausgewählte Kunden", "Selected Groups": "Ausgewählte Gruppen", + "Selected Jobs": "Ausgewählte Jobs", "Session Timeout": "Session-Timeout", "Settings": "Einstellungen", "Share Accounts": "Konten teilen", diff --git a/src/assets/translations/en-US.json b/src/assets/translations/en-US.json index e3699e61e..d806a99aa 100644 --- a/src/assets/translations/en-US.json +++ b/src/assets/translations/en-US.json @@ -1086,6 +1086,7 @@ "Select Excel File": "Select Excel File", "Selected Clients": "Selected Clients", "Selected Groups": "Selected Groups", + "Selected Jobs": "Selected Jobs", "Session Timeout": "Session Timeout", "Settings": "Settings", "Share Accounts": "Share Accounts", diff --git a/src/assets/translations/es-MX.json b/src/assets/translations/es-MX.json index 17942eee1..abffdba44 100644 --- a/src/assets/translations/es-MX.json +++ b/src/assets/translations/es-MX.json @@ -1083,6 +1083,7 @@ "Select Excel File": "Seleccionar archivo de Excel", "Selected Clients": "Clientes seleccionados", "Selected Groups": "Grupos seleccionados", + "Selected Jobs": "Trabajos seleccionados", "Session Timeout": "Término de la Sesión", "Settings": "Ajustes", "Share Accounts": "Cuentas de Acciones", diff --git a/src/assets/translations/fr-FR.json b/src/assets/translations/fr-FR.json index 42c388fb6..b660e7959 100644 --- a/src/assets/translations/fr-FR.json +++ b/src/assets/translations/fr-FR.json @@ -1085,6 +1085,7 @@ "Select Excel File": "Sélectionnez un fichier Excel", "Selected Clients": "Clients sélectionnés", "Selected Groups": "Groupes sélectionnés", + "Selected Jobs": "Emplois sélectionnés", "Session Timeout": "Expiration de la session", "Settings": "Paramètres", "Share Accounts": "Partager des comptes", diff --git a/src/assets/translations/it-IT.json b/src/assets/translations/it-IT.json index 2db458585..95394cbc2 100644 --- a/src/assets/translations/it-IT.json +++ b/src/assets/translations/it-IT.json @@ -1085,6 +1085,7 @@ "Select Excel File": "Seleziona File Excel", "Selected Clients": "Clienti selezionati", "Selected Groups": "Gruppi selezionati", + "Selected Jobs": "Lavori selezionati", "Session Timeout": "Timeout della sessione", "Settings": "Impostazioni", "Share Accounts": "Condividi account", diff --git a/src/assets/translations/ko-KO.json b/src/assets/translations/ko-KO.json index b7fbfda39..b01da3e34 100644 --- a/src/assets/translations/ko-KO.json +++ b/src/assets/translations/ko-KO.json @@ -1086,6 +1086,7 @@ "Select Excel File": "엑셀 파일 선택", "Selected Clients": "선택된 클라이언트", "Selected Groups": "선택된 그룹", + "Selected Jobs": "선택된 직업", "Session Timeout": "세션 타임 아웃", "Settings": "설정", "Share Accounts": "계정 공유", diff --git a/src/assets/translations/lt-LT.json b/src/assets/translations/lt-LT.json index 6106a3b1c..44060e7f2 100644 --- a/src/assets/translations/lt-LT.json +++ b/src/assets/translations/lt-LT.json @@ -1085,6 +1085,7 @@ "Select Excel File": "Pasirinkite Excel failą", "Selected Clients": "Atrinkti klientai", "Selected Groups": "Pasirinktos grupės", + "Selected Jobs": "Pasirinkti darbai", "Session Timeout": "Seanso skirtasis laikas", "Settings": "Nustatymai", "Share Accounts": "Bendrinti paskyras", diff --git a/src/assets/translations/lv-LV.json b/src/assets/translations/lv-LV.json index b99d7a0e5..1488c9e00 100644 --- a/src/assets/translations/lv-LV.json +++ b/src/assets/translations/lv-LV.json @@ -1085,6 +1085,7 @@ "Select Excel File": "Atlasiet Excel failu", "Selected Clients": "Izvēlētie klienti", "Selected Groups": "Atlasītās grupas", + "Selected Jobs": "Atlasītie darbi", "Session Timeout": "Sesijas noildze", "Settings": "Iestatījumi", "Share Accounts": "Kopīgot kontus", diff --git a/src/assets/translations/ne-NE.json b/src/assets/translations/ne-NE.json index d44726b81..b5e0c8a9f 100644 --- a/src/assets/translations/ne-NE.json +++ b/src/assets/translations/ne-NE.json @@ -1085,6 +1085,7 @@ "Select Excel File": "एक्सेल फाइल चयन गर्नुहोस्", "Selected Clients": "चयन गरिएका ग्राहकहरू", "Selected Groups": "चयन गरिएका समूहहरू", + "Selected Jobs": "चयन गरिएका कार्यहरू", "Session Timeout": "सत्र टाइमआउट", "Settings": "सेटिङहरू", "Share Accounts": "खाताहरू साझेदारी गर्नुहोस्", diff --git a/src/assets/translations/pt-PT.json b/src/assets/translations/pt-PT.json index 1373abd40..8375d9342 100644 --- a/src/assets/translations/pt-PT.json +++ b/src/assets/translations/pt-PT.json @@ -1085,6 +1085,7 @@ "Select Excel File": "Selecione o arquivo Excel", "Selected Clients": "Clientes Selecionados", "Selected Groups": "Grupos Selecionados", + "Selected Jobs": "Empregos selecionados", "Session Timeout": "Sessão expirada", "Settings": "Configurações", "Share Accounts": "Compartilhar contas", diff --git a/src/assets/translations/sw-SW.json b/src/assets/translations/sw-SW.json index fef66fefb..a34432e41 100644 --- a/src/assets/translations/sw-SW.json +++ b/src/assets/translations/sw-SW.json @@ -1085,6 +1085,7 @@ "Select Excel File": "Chagua Faili ya Excel", "Selected Clients": "Wateja Waliochaguliwa", "Selected Groups": "Vikundi Vilivyochaguliwa", + "Selected Jobs": "Kazi Zilizochaguliwa", "Session Timeout": "Muda wa Kikao umekwisha", "Settings": "Mipangilio", "Share Accounts": "Shiriki Akaunti", diff --git a/src/environments/.env.ts b/src/environments/.env.ts index 1fd11c72d..5b00b5afa 100644 --- a/src/environments/.env.ts +++ b/src/environments/.env.ts @@ -2,8 +2,8 @@ /* tslint:disable */ export default { 'mifos_x': { - 'version': '240721', - 'hash': 'd39a6d8a' + 'version': '241204', + 'hash': '29cda98b' }, 'allow_switching_backend_instance': true };