import {PicklistCreateDialogComponent} from './picklist-create-dialog.component';
import {PicklistCloneDialogComponent} from './picklist-clone-dialog.component';
import {PicklistDeleteDialogComponent} from './picklist-delete-dialog.component';
+import {PicklistMergeDialogComponent} from './picklist-merge-dialog.component';
@NgModule({
declarations: [
PicklistResultsComponent,
PicklistCreateDialogComponent,
PicklistCloneDialogComponent,
- PicklistDeleteDialogComponent
+ PicklistDeleteDialogComponent,
+ PicklistMergeDialogComponent
],
imports: [
StaffCommonModule,
--- /dev/null
+<ng-template #dialogContent>
+ <div class="modal-header bg-info">
+ <h3 class="modal-title" i18n>Merge Selection Lists</h3>
+ <button type="button" class="close"
+ i18n-aria-label aria-label="Close" (click)="close()">
+ <span aria-hidden="true">×</span>
+ </button>
+ </div>
+ <div class="modal-body">
+ <h4 i18n>Lead Selection List:</h4>
+ <select [(ngModel)]="leadList">
+ <option *ngFor="let list of selectedLists"
+ value="{{list.id()}}">{{list.name()}}</option>
+ </select>
+ <h4 i18n>Merge the following selection lists?</h4>
+ <ul>
+ <li *ngFor="let listName of listNames">{{listName}}</li>
+ </ul>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-success"
+ (click)="mergeLists()" i18n>Merge</button>
+ <button type="button" class="btn btn-warning"
+ (click)="close()" i18n>Cancel</button>
+ </div>
+</ng-template>
+<eg-alert-dialog #fail i18n-dialogBody
+ dialogBody="Could not merge the selection lists.">
+</eg-alert-dialog>
--- /dev/null
+import {Component, Input, ViewChild, TemplateRef, OnInit} from '@angular/core';
+import {Observable, forkJoin, from, empty, throwError} from 'rxjs';
+import {DialogComponent} from '@eg/share/dialog/dialog.component';
+import {IdlService, IdlObject} from '@eg/core/idl.service';
+import {NetService} from '@eg/core/net.service';
+import {AuthService} from '@eg/core/auth.service';
+import {NgbModal} from '@ng-bootstrap/ng-bootstrap';
+import {ComboboxEntry} from '@eg/share/combobox/combobox.component';
+
+@Component({
+ selector: 'eg-picklist-merge-dialog',
+ templateUrl: './picklist-merge-dialog.component.html'
+})
+
+export class PicklistMergeDialogComponent
+ extends DialogComponent implements OnInit {
+
+ @Input() grid: any;
+ listNames: string[];
+ leadList: number;
+ selectedLists: IdlObject[];
+
+ constructor(
+ private idl: IdlService,
+ private net: NetService,
+ private auth: AuthService,
+ private modal: NgbModal
+ ) {
+ super(modal);
+ }
+
+ ngOnInit() {
+ }
+
+ update() {
+ this.selectedLists = this.grid.context.getSelectedRows();
+ this.listNames = this.selectedLists.map( r => r.name() );
+ }
+
+ mergeLists() {
+ var that = this;
+ this.net.request(
+ 'open-ils.acq',
+ 'open-ils.acq.picklist.merge',
+ this.auth.token(), this.leadList,
+ this.selectedLists.map( list => list.id() ).filter(function(p) { return p != that.leadList; })
+ ).subscribe(
+ (res) => console.log('res',res),
+ (err) => throwError(err),
+ () => this.close(true)
+ );
+ }
+
+}
+
+
</eg-string>
<eg-string #deleteSelectionListString i18n-text text="Selection List(s) Deleted">
</eg-string>
+<eg-string #mergeSelectionListString i18n-text text="Selection Lists Merged">
+</eg-string>
<ng-template #nameTmpl let-selectionlist="row">
<a href="/eg/acq/picklist/view/{{selectionlist.id()}}"
</a>
</ng-template>
-<eg-confirm-dialog #delConfirm
- i18n-dialogTitle i18n-dialogBody
- dialogTitle="Confirm Delete"
- dialogBody="Delete Selection List {{selected ? selected.label : ''}}?">
-</eg-confirm-dialog>
-
<eg-picklist-create-dialog #picklistCreateDialog>
</eg-picklist-create-dialog>
<eg-picklist-delete-dialog #picklistDeleteDialog [grid]="picklistResultsGrid">
</eg-picklist-delete-dialog>
+<eg-picklist-merge-dialog #picklistMergeDialog [grid]="picklistResultsGrid">
+</eg-picklist-merge-dialog>
+
<eg-grid #acqSearchPicklistsGrid
persistKey="acq.search.selectionlists"
[stickyHeader]="true"
import {PicklistCreateDialogComponent} from './picklist-create-dialog.component';
import {PicklistCloneDialogComponent} from './picklist-clone-dialog.component';
import {PicklistDeleteDialogComponent} from './picklist-delete-dialog.component';
+import {PicklistMergeDialogComponent} from './picklist-merge-dialog.component';
@Component({
selector: 'eg-picklist-results',
@ViewChild('picklistCreateDialog', { static: true }) picklistCreateDialog: PicklistCreateDialogComponent;
@ViewChild('picklistCloneDialog', { static: true }) picklistCloneDialog: PicklistCloneDialogComponent;
@ViewChild('picklistDeleteDialog', { static: true }) picklistDeleteDialog: PicklistDeleteDialogComponent;
+ @ViewChild('picklistMergeDialog', { static: true }) picklistMergeDialog: PicklistMergeDialogComponent;
@ViewChild('createSelectionListString', { static: true }) createSelectionListString: StringComponent;
@ViewChild('cloneSelectionListString', { static: true }) cloneSelectionListString: StringComponent;
@ViewChild('deleteSelectionListString', { static: true }) deleteSelectionListString: StringComponent;
+ @ViewChild('mergeSelectionListString', { static: true }) mergeSelectionListString: StringComponent;
permissions: {[name: string]: boolean};
noSelectedRows: (rows: IdlObject[]) => boolean;
);
this.picklistDeleteDialog.update(); // update the dialog UI with selections
}
+
+ openMergeDialog(rows: IdlObject[]) {
+ this.picklistMergeDialog.open().subscribe(
+ modified => {
+ this.mergeSelectionListString.current().then(msg => this.toast.success(msg));
+ this.picklistResultsGrid.reload(); // FIXME - spec calls for removed grid rows and not refresh
+ }
+ );
+ this.picklistMergeDialog.update(); // update the dialog UI with selections
+ }
+
}