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"/>
<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
<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>
usrCboxEntries: ComboboxEntry[];
usrId: number;
- //@ViewChild() usrCbox: ComboboxComponent;
+ @ViewChild('cloneDialog') cloneDialog: FmRecordEditorComponent;
constructor(
private route: ActivatedRoute,
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();
});
}
+ 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();
}