Skip to content

Commit

Permalink
Merge branch 'bugfix/SHIBUI-1395' into feature/SHIBUI-1335-QA
Browse files Browse the repository at this point in the history
  • Loading branch information
Bill Smith committed Aug 6, 2019
2 parents e175afc + afc09c1 commit 8f259db
Show file tree
Hide file tree
Showing 12 changed files with 65 additions and 31 deletions.
4 changes: 2 additions & 2 deletions backend/src/main/resources/i18n/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,10 @@ label.x509-certificates=X509 Certificates
label.certificate-name-display-only=Certificate Name (Display Only)
label.certificate=Certificate
label.assertion-consumer-services=Assertion Consumer Services
label.assertion-consumer-service-location=Assertion Consumer Service Location
label.assertion-consumer-service-location=Location
label.assertion-consumer-service-endpoint=Assertion Consumer Service Endpoints
label.default=(default)
label.assertion-consumer-service-location-binding=Assertion Consumer Service Location Binding
label.assertion-consumer-service-location-binding=Location Binding
label.relying-party-overrides=Relying Party Overrides
label.sign-the-assertion=Sign the Assertion?
label.turn-off-encryption-of-response=Turn off Encryption of Response?
Expand Down
4 changes: 2 additions & 2 deletions backend/src/main/resources/i18n/messages_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -159,10 +159,10 @@ label.x509-certificates=X509 Certificates
label.certificate-name-display-only=Certificate Name (Display Only)
label.certificate=Certificate
label.assertion-consumer-services=Assertion Consumer Services
label.assertion-consumer-service-location=Assertion Consumer Service Location
label.assertion-consumer-service-location=Location
label.assertion-consumer-service-endpoint=Assertion Consumer Service Endpoints
label.default=(default)
label.assertion-consumer-service-location-binding=Assertion Consumer Service Location Binding
label.assertion-consumer-service-location-binding=Location Binding
label.relying-party-overrides=Relying Party Overrides
label.sign-the-assertion=Sign the Assertion?
label.turn-off-encryption-of-response=Turn off Encryption of Response?
Expand Down
26 changes: 20 additions & 6 deletions ui/src/app/admin/reducer/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ import * as fromIndex from './';
import { MetadataResolver } from '../../metadata/domain/model';
import { User } from '../../core/model/user';

// export const totalUserFn = (users) => users.length;
// export const totalMetadataFn = (md) => md.filter(obj => !obj.serviceEnabled).length;
// export const totalActionsFn = (users, md) => md + users;

let resolvers: MetadataResolver[] = [
{ id: '1', entityId: 'foo', serviceEnabled: true, serviceProviderName: 'bar', createdDate: 'Date' } as MetadataResolver,
{ id: '2', entityId: 'baz', serviceEnabled: false, serviceProviderName: 'fin', createdDate: 'Date' } as MetadataResolver
Expand All @@ -14,17 +10,35 @@ let resolvers: MetadataResolver[] = [
let users: User[] = [
{
username: 'foo',
role: 'admin',
role: 'ROLE_ADMIN',
firstName: 'foo',
lastName: 'bar',
emailAddress: 'foo@bar.com'
},
{
username: 'bar',
role: 'ROLE_NONE',
firstName: 'baz',
lastName: 'foo',
emailAddress: 'fooz@ball.com'
}
];

describe('admin dashboard state selectors', () => {
describe('getConfiguredAdminsFn', () => {
it('should return all users without the `ROLE_NONE` role', () => {
expect(fromIndex.getConfiguredAdminsFn(users).length).toBe(1);
});
});

describe('getNewUsersFn', () => {
it('should return all users with the `ROLE_NONE` role', () => {
expect(fromIndex.getNewUsersFn(users).length).toBe(1);
});
});
describe('totalUserFn', () => {
it('should get the length of the provided array', () => {
expect(fromIndex.totalUserFn(users)).toBe(1);
expect(fromIndex.totalUserFn(users)).toBe(2);
});
});
describe('totalMetadataFn', () => {
Expand Down
13 changes: 8 additions & 5 deletions ui/src/app/admin/reducer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,15 @@ export const getCollectionSaving = createSelector(getAdminCollectionState, fromA

export const getAdminEntities = createSelector(getAdminCollectionState, fromAdminCollection.selectAdminEntities);
export const getSelectedAdminId = createSelector(getAdminCollectionState, fromAdminCollection.getSelectedAdminId);
export const getSelectedAdmin = createSelector(getAdminEntities, getSelectedAdminId, (entities, selectedId) => {
return selectedId && entities[selectedId];
});
export const getSelectedAdmin = createSelector(getAdminEntities, getSelectedAdminId, getInCollectionFn);
export const getAdminIds = createSelector(getAdminCollectionState, fromAdminCollection.selectAdminIds);
export const getAllConfiguredAdmins = createSelector(getAllAdmins, (admins) => admins.filter(a => a.role !== 'ROLE_NONE'));
export const getAllNewUsers = createSelector(getAllAdmins, (admins) => admins.filter(a => a.role === 'ROLE_NONE'));


export const getConfiguredAdminsFn = (admins) => admins.filter(a => a.role !== 'ROLE_NONE');
export const getAllConfiguredAdmins = createSelector(getAllAdmins, getConfiguredAdminsFn);

export const getNewUsersFn = (admins) => admins.filter(a => a.role === 'ROLE_NONE');
export const getAllNewUsers = createSelector(getAllAdmins, getNewUsersFn);

/*
* Select pieces of Metadata Collection
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,16 @@
<div class="d-flex align-items-center border-bottom border-light">
<span class="py-2" role="term" [translate]="property.name" [ngStyle]="{'width': width}">{{ property.name }}</span>
<ng-container *ngFor="let v of property.value">
<p [ngStyle]="{'width': width}" class="text-secondary" *ngIf="!v || !v.length">-</p>
<p [ngStyle]="{'width': width}" class="text-secondary m-0" *ngIf="!v || !v.length">-</p>
<ul [ngStyle]="{'width': width}"
class="list-unstyled py-2 m-0"
[ngbPopover]="popContent"
triggers="mouseenter:mouseleave"
popoverClass="popover-lg popover-info"
*ngIf="v && v.length > 0">
<li *ngFor="let item of v; odd as isOdd" class="text-truncate" [ngClass]="{'bg-light': isOdd, 'py-2': v.length > 1}">
<li *ngFor="let item of v; odd as isOdd; last as isLast"
class="text-truncate border-bottom border-light"
[ngClass]="{'py-2': v.length > 1, 'border-0': isLast}">
<ng-container *ngIf="preview.observers.length > 0 && isUrl(item)">
<button class="btn btn-link" (click)="preview.emit(item)">
<i class="fa fa-eye fa-lg text-success"></i>
Expand All @@ -72,7 +74,7 @@
</ul>
<ng-template #popContent>
<ul class="list-unstyled">
<li *ngFor="let item of v; odd as isOdd" [ngClass]="{'bg-light': isOdd}" class="p-2">
<li *ngFor="let item of v;" class="p-2 border-bottom border-light">
{{ item }}
</li>
</ul>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
<primitive-property *ngSwitchDefault [property]="prop" [columns]="columns"></primitive-property>
<array-property *ngSwitchCase="'array'" [property]="prop" [columns]="columns"></array-property>
<ng-container *ngSwitchCase="'object'">
<object-property *ngIf="!prop.widget || !prop.widget.id || prop.widget.id !=='filter-target'"
[property]="prop"
[columns]="columns"></object-property>
<ng-container *ngIf="!prop.widget || !prop.widget.id || prop.widget.id !=='filter-target'">
<h5 class="border-bottom py-2 mb-0 mt-3" *ngIf="prop.name">{{ prop.name | translate }}</h5>
<object-property [property]="prop" [columns]="columns"></object-property>
</ng-container>
<filter-target-property *ngIf="prop.widget && prop.widget.id && prop.widget.id ==='filter-target'"
[property]="prop"
[parent]="property"
Expand Down
10 changes: 7 additions & 3 deletions ui/src/app/metadata/configuration/reducer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,17 @@ export const getConfigurationDefinition = createSelector(getConfigurationState,
export const getConfigurationSchema = createSelector(getConfigurationState, fromConfiguration.getSchema);
export const getConfigurationXml = createSelector(getConfigurationState, fromConfiguration.getXml);

export const assignValueToProperties = (models, properties): any[] => {
export const assignValueToProperties = (models, properties, definition: any): any[] => {
return properties.map(prop => {
switch (prop.type) {
case 'object':
return {
...prop,
properties: assignValueToProperties(models.map(model => model[prop.id] || {}), prop.properties)
properties: assignValueToProperties(
models.map(model => definition.formatter(model)[prop.id] || {}),
prop.properties,
definition
)
};
default:
return {
Expand Down Expand Up @@ -97,7 +101,7 @@ export const getConfigurationSectionsFn = (models, definition, schema): Metadata
.map((section: any) => {
return {
...section,
properties: assignValueToProperties(models, section.properties)
properties: assignValueToProperties(models, section.properties, definition)
};
})
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@
<tr *ngFor="let value of property.value">
<td *ngFor="let prop of getKeys(property.items)"
[ngbPopover]="value[prop]"
popoverClass="popover-lg"
triggers="mouseenter:mouseleave"
container="body"
placement="top">
placement="top"
class="break-all">
{{ value[prop] }}
</td>
</tr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
role="checkbox"
aria-checked="false"
/>
<label class="custom-control-label" for="input-{{ i }}">
<label class="custom-control-label" [for]="formProperty._canonicalPath + '.' + i">
<span class="sr-only">
<translate-i18n key="action.toggle">Toggle</translate-i18n> {{ attr.label | translate }}
</span>
Expand Down
8 changes: 4 additions & 4 deletions ui/src/app/schema-form/widget/select/select.component.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div class="widget form-group">
<label [attr.for]="id" class="horizontal control-label">
<label [attr.for]="cleanId" class="horizontal control-label">
<span *ngIf="schema.title">
<translate-i18n [key]="schema.title">{{ schema.title }}</translate-i18n>
<i class="fa fa-asterisk text-danger" aria-hidden="true" *ngIf="required"></i>
Expand All @@ -15,7 +15,7 @@
{{ schema.description }}
</span>
<select *ngIf="schema.type !== 'array'"
[id]="formProperty._canonicalPath"
[id]="cleanId"
[formControl]="control"
[attr.name]="name"
class="form-control"
Expand All @@ -37,7 +37,7 @@
</ng-container>
</select>
<select *ngIf="schema.type === 'array'"
[id]="formProperty._canonicalPath"
[id]="cleanId"
multiple [formControl]="control"
[attr.name]="name"
[attr.disabled]="schema.readOnly"
Expand All @@ -50,5 +50,5 @@
<translate-i18n [key]="getError(error)">error</translate-i18n>
</ng-container>
</small>
<input *ngIf="schema.readOnly" [attr.name]="name" type="hidden" [formControl]="control">
<input *ngIf="schema.readOnly" [id]="cleanId" [attr.name]="name" type="hidden" [formControl]="control">
</div>
4 changes: 4 additions & 0 deletions ui/src/app/schema-form/widget/select/select.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,8 @@ export class CustomSelectComponent extends SelectWidget implements AfterViewInit
getError(error: string): string {
return HARD_CODED_REQUIRED_MSG.test(error) ? 'message.required' : error;
}

get cleanId(): string {
return this.formProperty._canonicalPath.replace('@', '');
}
}
6 changes: 5 additions & 1 deletion ui/src/theme/utility.scss
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,8 @@

.w-40 {
width: 40%;
}
}

.break-all {
word-break: break-all;
}

0 comments on commit 8f259db

Please sign in to comment.