LP1901930 SIP account admin UI WIP
authorBill Erickson <berickxx@gmail.com>
Thu, 12 Nov 2020 21:27:43 +0000 (16:27 -0500)
committerBill Erickson <berickxx@gmail.com>
Thu, 12 Nov 2020 21:27:43 +0000 (16:27 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/eg2/src/app/staff/admin/server/sip/account-list.component.html
Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.html
Open-ILS/src/eg2/src/app/staff/admin/server/sip/account.component.ts

index 78776fc..3157ae1 100644 (file)
@@ -13439,7 +13439,7 @@ SELECT  usr,
                oils_obj:fieldmapper="sip::setting_group" 
                oils_persist:tablename="sip.setting_group" 
                reporter:label="SIP Settings Group">
-               <fields oils_persist:primary="id" oils_persist:sequence="sip.setting_id_seq">
+               <fields oils_persist:primary="id" oils_persist:sequence="sip.setting_group_id_seq">
                        <field name="id" reporter:datatype="id" reporter:label="ID" reporter:selector="label"/>
                        <field name="label" reporter:datatype="text" reporter:label="Label" oils_obj:required="true"/>
                        <field name="institution" reporter:datatype="text" reporter:label="SIP Institution" oils_obj:required="true"/>
index ad1357a..917d4e8 100644 (file)
@@ -1,7 +1,5 @@
 <eg-staff-banner bannerText="SIP Accounts" i18n-bannerText></eg-staff-banner>
 
-<b>account list</b>
-
 <eg-grid #grid idlClass="sipacc" [dataSource]="gridSource" 
   [stickyHeader]="true" [sortable]="true" (onRowActivate)="openAccount($event)">
   <eg-grid-toolbar-action label="Delete Selected" i18n-label 
index ae35b9a..87d6ef6 100644 (file)
@@ -1,18 +1,38 @@
 <eg-staff-banner bannerText="SIP Account" i18n-bannerText></eg-staff-banner>
 
+<eg-fm-record-editor #cloneDialog idlClass="sipsetg" mode="create" 
+  hiddenFields="id" fieldOrder="label,institution">
+</eg-fm-record-editor>
+
 <div class="row" *ngIf="account">
   <div class="col-lg-6">
 
     <ng-template #usrTemplate>
-      <eg-combobox #usrCbox [entries]="usrCboxEntries" 
+      <eg-combobox #usrCbox [entries]="usrCboxEntries" required="true"
         [selectedId]="usrId" [asyncDataSource]="usrCboxSource">
       </eg-combobox>
     </ng-template>
 
+    <ng-template #grpTemplate>
+      <div class="form-inline">
+        <eg-combobox #grpCbox idlClass="sipsetg" required="true" 
+          [selectedId]="account.setting_group() ? account.setting_group().id() : null"
+          [asyncSupportsEmptyTermClick]="true"
+          (onChange)="grpChanged($event)">
+        </eg-combobox>
+        <button class="btn btn-outline-dark ml-2" 
+          (click)="openCloneDialog()" i18n>Clone</button>
+      </div>
+    </ng-template>
+
+
     <eg-fm-record-editor #editor
       idlClass="sipacc" mode="update" hiddenFields="id" displayMode="inline"
       fieldOrder="sip_username,setting_group,usr,workstation,transient,activity_who,enabled"
-      [fieldOptions]="{usr:{customTemplate:{template:usrTemplate}}}"
+      [fieldOptions]="{
+        setting_group:{customTemplate:{template:grpTemplate}},
+        usr:{customTemplate:{template:usrTemplate}}
+      }"
       (recordSaved)="accountSaved()" [recordId]="accountId">
     </eg-fm-record-editor>
   </div>
index d372adc..c806935 100644 (file)
@@ -24,7 +24,7 @@ export class SipAccountComponent implements OnInit {
     usrCboxEntries: ComboboxEntry[];
     usrId: number;
 
-    //@ViewChild() usrCbox: ComboboxComponent;
+    @ViewChild('cloneDialog') cloneDialog: FmRecordEditorComponent;
 
     constructor(
         private route: ActivatedRoute,
@@ -56,8 +56,11 @@ export class SipAccountComponent implements OnInit {
 
     loadAccount() {
         this.pcrud.retrieve('sipacc', this.accountId, {
-            flesh: 1,
-            flesh_fields: {sipacc: ['usr', 'setting_group', 'workstation']}
+            flesh: 2,
+            flesh_fields: {
+                sipacc: ['usr', 'setting_group', 'workstation'],
+                sipsetg: ['settings']
+            }
         }).subscribe(acc => {
             this.account = acc;
             this.usrId = acc.usr().id();
@@ -66,6 +69,22 @@ export class SipAccountComponent implements OnInit {
         });
     }
 
+    grpChanged(entry: ComboboxEntry) {
+        if (!entry) { return; }
+
+        this.pcrud.retrieve('sipsetg', entry.id,
+            {flesh: 1, flesh_fields: {sipsetg: ['settings']}})
+            .subscribe(grp => this.account.setting_group(grp));
+    }
+
+    openCloneDialog() {
+        this.cloneDialog.open().subscribe(resp => {
+            if (!resp) { return; }
+
+            // create settings that match the currently selected group.
+        });
+    }
+
     accountSaved() {
         this.loadAccount();
     }