* Added grid sorting to both group and group member grids.
* Avoid using the defaultNewRecord in fm-editor directly, by cloning it
as needed, so that subsequent new records (within a single parent
component instance) do not pick up values from the previously created
record.
* Renamed the eg-admin-page @Input() 'hideFields' to 'hideGridFields'
to better explain how the value will be passed along.
* Replace access of fieldmapper innards (thing.a[0]) with field names
(thing.id())
* Remove unused <eg-string /> entries.
* Avoid unnecessary newlines in translatable strings.
* Remove unused @Inputs() and unnecessary functions
* Remove unneccessary TreeModule import
* Removed a redundant <eg-title /> -- <eg-staff-banner /> will set the
title when present.
* Various 'ng lint' repairs.
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
//
// Create a new record from the stub record provided by the
// caller or a new from-scratch record
- // Set this._record (not this.record) to avoid loop in initRecord()
- this._record = this.defaultNewRecord || this.record || this.idl.create(this.idlClass);
+ if (!this.record) {
+ // NOTE: Set this._record (not this.record) to avoid
+ // loop in initRecord()
+ if (this.defaultNewRecord) {
+ // Clone to avoid polluting the stub record
+ this._record = this.idl.clone(this.defaultNewRecord);
+ } else {
+ this._record = this.idl.create(this.idlClass);
+ }
+ }
this._recordId = null; // avoid future confusion
return this.getFieldList();
</eg-fm-record-editor>
</div>
-<eg-string #createString i18n-text text="New Floating Group Member Added"></eg-string>
-<eg-string #createErrString i18n-text text="Failed to Create New Floating Group Member"></eg-string>
-<eg-string #successString i18n-text text="Floating Group Member Update Succeeded"></eg-string>
-<eg-string #updateFailedString i18n-text text="Floating Group Member Update Failed"></eg-string>
-<eg-string #deleteFailedString i18n-text text="Delete of Floating Group Member failed or was not allowed"></eg-string>
-<eg-string #deleteSuccessString i18n-text text="Delete of Floating Group Member succeeded"></eg-string>
-
<eg-staff-banner bannerText="Edit Floating Group Members" i18n-bannerText>
</eg-staff-banner>
<eg-admin-page idlClass="cfgm" disableOrgFilter="true"
- hideFields="id,floating_group"
+ hideGridFields="id,floating_group"
+ readonlyFields="floating_group"
[dataSource]="dataSource"
[defaultNewRecord]="defaultNewRecord">
-</eg-admin-page>
\ No newline at end of file
+</eg-admin-page>
-import {Component, Input} from '@angular/core';
+import {Component, Input, OnInit} from '@angular/core';
import {Router, ActivatedRoute} from '@angular/router';
import {GridDataSource} from '@eg/share/grid/grid';
import {Pager} from '@eg/share/util/pager';
import {PcrudService} from '@eg/core/pcrud.service';
import {IdlObject, IdlService } from '@eg/core/idl.service';
- @Component({
- templateUrl: './edit-floating-group.component.html'
- })
+@Component({
+ templateUrl: './edit-floating-group.component.html'
+})
- export class EditFloatingGroupComponent {
+export class EditFloatingGroupComponent implements OnInit {
- @Input() sortField: string;
- @Input() dataSource: GridDataSource;
- @Input() dialogSize: 'sm' | 'lg' = 'lg';
+ dataSource: GridDataSource;
// defaultNewRecord is used when creating a new entry to give a default floating_group
defaultNewRecord: IdlObject;
}
ngOnInit() {
- this.currentId = parseInt(this.route.snapshot.paramMap.get('id'));
+ this.currentId = parseInt(this.route.snapshot.paramMap.get('id'), 10);
this.defaultNewRecord = this.idl.create('cfgm');
this.defaultNewRecord.floating_group(this.currentId);
this.dataSource = new GridDataSource();
+
this.dataSource.getRows = (pager: Pager, sort: any[]) => {
+ const orderBy: any = {};
+ if (sort.length) {
+ orderBy.cfgm = sort[0].name + ' ' + sort[0].dir;
+ }
+
const searchOps = {
offset: pager.offset,
limit: pager.limit,
- order_by: {}
+ order_by: orderBy
};
- return this.pcrud.search("cfgm", {floating_group: this.currentId}, searchOps);
+
+ return this.pcrud.search('cfgm',
+ {floating_group: this.currentId}, searchOps);
};
}
- }
\ No newline at end of file
+}
-<eg-title i18n-prefix prefix="Floating Group Administration"></eg-title>
-<eg-staff-banner bannerText="Floating Group Configuration" i18n-bannerText>
+<eg-staff-banner bannerText="Floating Group Administration" i18n-bannerText>
</eg-staff-banner>
<eg-string #createString i18n-text text="New Floating Group Added"></eg-string>
<eg-string #createErrString i18n-text text="Failed to Create New Floating Group">
- </eg-string>
-<eg-string #deleteFailedString i18n-text text="Delete of Floating Group failed
- or was not allowed"></eg-string>
-<eg-string #deleteSuccessString i18n-text text="Delete of Floating Group
- succeeded"></eg-string>
+</eg-string>
+<eg-string #deleteFailedString i18n-text
+ text="Delete of Floating Group failed or was not allowed"></eg-string>
+<eg-string #deleteSuccessString i18n-text
+ text="Delete of Floating Group succeeded"></eg-string>
-<eg-grid #grid idlClass="cfg" [dataSource]="gridDataSource"
- [sortable]="true">
+<eg-grid #grid idlClass="cfg" [dataSource]="gridDataSource" [sortable]="true">
<eg-grid-toolbar-button
- label="New Floating Group" i18n-label [action]="createNew">
+ label="New Floating Group" i18n-label (onClick)="createNew()">
</eg-grid-toolbar-button>
<eg-grid-toolbar-action label="Edit Selected" i18n-label [action]="editSelected">
</eg-grid-toolbar-action>
import {Pager} from '@eg/share/util/pager';
-import {Component, Input, ViewChild} from '@angular/core';
-import { Router, ActivatedRoute } from '@angular/router';
+import {Component, Input, ViewChild, OnInit} from '@angular/core';
+import {Router, ActivatedRoute} from '@angular/router';
import {IdlService, IdlObject} from '@eg/core/idl.service';
import {GridDataSource} from '@eg/share/grid/grid';
import {GridComponent} from '@eg/share/grid/grid.component';
import {OrgService} from '@eg/core/org.service';
import {PermService} from '@eg/core/perm.service';
import {AuthService} from '@eg/core/auth.service';
-import { AdminPageComponent } from '../../../share/admin-page/admin-page.component';
+import {AdminPageComponent} from '../../../share/admin-page/admin-page.component';
- @Component({
- templateUrl: './floating-group.component.html'
- })
+@Component({
+ templateUrl: './floating-group.component.html'
+})
- export class FloatingGroupComponent extends AdminPageComponent {
+export class FloatingGroupComponent extends AdminPageComponent implements OnInit {
idlClass = 'cfg';
- @Input() sortField: string;
- @Input() dialogSize: 'sm' | 'lg' = 'lg';
gridDataSource: GridDataSource = new GridDataSource();
-
+
@ViewChild('grid', {static: true}) grid: GridComponent;
constructor(
pcrud: PcrudService,
perm: PermService,
toast: ToastService,
- private router:Router
+ private router: Router
) {
super(route, idl, org, auth, pcrud, perm, toast);
}
ngOnInit() {
super.ngOnInit();
this.gridDataSource.getRows = (pager: Pager, sort: any[]) => {
+
+ const orderBy: any = {};
+ if (sort.length) {
+ orderBy.cfg = sort[0].name + ' ' + sort[0].dir;
+ }
+
const searchOps = {
offset: pager.offset,
limit: pager.limit,
- order_by: {}
+ order_by: orderBy
};
- return this.pcrud.retrieveAll("cfg", searchOps);
+
+ return this.pcrud.retrieveAll('cfg', searchOps);
};
+
this.grid.onRowActivate.subscribe(
(idlThing: IdlObject) => {
- let idToEdit = idlThing.a[0];
+ const idToEdit = idlThing.id();
this.navigateToEditPage(idToEdit);
}
);
}
- createNew = () => {
- super.createNew();
- };
-
editSelected = (floatingGroups: IdlObject[]) => {
- let idToEdit = floatingGroups[0].a[0];
+ const idToEdit = floatingGroups[0].id();
this.navigateToEditPage(idToEdit);
}
}
navigateToEditPage(id: any) {
- this.router.navigate(["/staff/admin/server/config/floating_group/" + id]);
+ this.router.navigate(['/staff/admin/server/config/floating_group/' + id]);
}
// this was left mostly blank to ensure a modal does not open for edits
return;
}
- }
\ No newline at end of file
+ }
import {NgModule} from '@angular/core';
import {AdminCommonModule} from '@eg/staff/admin/common.module';
-import {TreeModule} from '@eg/share/tree/tree.module';
import {FloatingGroupComponent} from './floating-group.component';
import {EditFloatingGroupComponent} from './edit-floating-group.component';
import {FloatingGroupRoutingModule} from './floating-group-routing.module';
],
imports: [
AdminCommonModule,
- FloatingGroupRoutingModule,
- TreeModule
+ FloatingGroupRoutingModule
],
exports: [
],
})
export class FloatingGroupModule {
-}
\ No newline at end of file
+}
<ng-container *ngTemplateOutlet="helpTemplate"></ng-container>
</ng-container>
-<eg-grid #grid idlClass="{{idlClass}}" [dataSource]="dataSource" hideFields={{hideFields}}
+<eg-grid #grid idlClass="{{idlClass}}" [dataSource]="dataSource" hideFields="{{hideGridFields}}"
[sortable]="true" persistKey="{{persistKey}}">
<eg-grid-toolbar-button [disabled]="!canCreate"
label="New {{idlClassDef.label}}" i18n-label (onClick)="createNew()">
// comma-separated list of fields to hide.
// This does not imply all other fields should be visible, only that
// the selected fields will be hidden.
- @Input() hideFields: string;
+ @Input() hideGridFields: string;
// If an org unit field is specified, an org unit filter
// is added to the top of the page.