mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-2676] Demo shell pagination bug fix (#3174)
* Demo shell pagination bug fix * tslint error fix * user preferences service fix * refactor * refactor * refactor * unit tests added * unit tests fix * [ADF-2676] added documentation for app config onChange stream * [ADF-2676] renamed onChange stream to onLoad stream * [ADF-2676] fixed test
This commit is contained in:
committed by
Eugenio Romano
parent
d0f5bad894
commit
66d8935624
@@ -98,3 +98,28 @@ The supported variables are:
|
|||||||
| ------------- | ------------- |
|
| ------------- | ------------- |
|
||||||
| hostname | `location.hostname` |
|
| hostname | `location.hostname` |
|
||||||
| port | `location.port` |
|
| port | `location.port` |
|
||||||
|
|
||||||
|
## App Config onLoad Stream
|
||||||
|
When the app config is loaded correctly an onChange event is sent with the whole set app config properties. This comes in handy when a component wants to react to some property change or interact with the app config when it's correctly loaded.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
|
||||||
|
appConfig.onLoad.subscribe((appConfig) => {
|
||||||
|
console.log(appConfig); //this is the representation of the app-config
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
We have added also the `select` method where the user can give the property name which wants to be notified the when the app config is loaded and get the value.
|
||||||
|
|
||||||
|
```json
|
||||||
|
appconfig : {
|
||||||
|
logLevel : 'trace'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```ts
|
||||||
|
|
||||||
|
appConfig.select('logLevel').subscribe((logLevelValue) => {
|
||||||
|
console.log(logLevelValue); //this will be 'trace';
|
||||||
|
});
|
||||||
|
```
|
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
import { inject, TestBed } from '@angular/core/testing';
|
import { async, inject, TestBed } from '@angular/core/testing';
|
||||||
import { AppConfigService } from './app-config.service';
|
import { AppConfigService } from './app-config.service';
|
||||||
import { AppConfigModule } from './app-config.module';
|
import { AppConfigModule } from './app-config.module';
|
||||||
|
|
||||||
@@ -72,6 +72,20 @@ describe('AppConfigService', () => {
|
|||||||
expect(appConfigService).toBeDefined();
|
expect(appConfigService).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should stream only the selected attribute changes when using select', async(() => {
|
||||||
|
appConfigService.config.testProp = true;
|
||||||
|
appConfigService.select('testProp').subscribe((property) => {
|
||||||
|
expect(property).toBeTruthy();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should stream the page size value when is set', async(() => {
|
||||||
|
appConfigService.config.testProp = true;
|
||||||
|
appConfigService.onLoad.subscribe((config) => {
|
||||||
|
expect(config.testProp).toBeTruthy();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
it('should skip the optional port number', () => {
|
it('should skip the optional port number', () => {
|
||||||
appConfigService.config.testUrl = 'http://{hostname}{:port}';
|
appConfigService.config.testUrl = 'http://{hostname}{:port}';
|
||||||
|
|
||||||
|
@@ -18,6 +18,8 @@
|
|||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { ObjectUtils } from '../utils/object-utils';
|
import { ObjectUtils } from '../utils/object-utils';
|
||||||
|
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
||||||
|
import { Observable } from 'rxjs/Observable';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AppConfigService {
|
export class AppConfigService {
|
||||||
@@ -34,7 +36,16 @@ export class AppConfigService {
|
|||||||
alfrescoRepositoryName: 'alfresco-1'
|
alfrescoRepositoryName: 'alfresco-1'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private onLoadSubject: BehaviorSubject<any>;
|
||||||
|
onLoad: Observable<any>;
|
||||||
|
|
||||||
constructor(private http: HttpClient) {
|
constructor(private http: HttpClient) {
|
||||||
|
this.onLoadSubject = new BehaviorSubject(this.config);
|
||||||
|
this.onLoad = this.onLoadSubject.asObservable();
|
||||||
|
}
|
||||||
|
|
||||||
|
select(property: string): Observable<any> {
|
||||||
|
return this.onLoadSubject.map((config) => config[property]).distinctUntilChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
get<T>(key: string, defaultValue?: T): T {
|
get<T>(key: string, defaultValue?: T): T {
|
||||||
@@ -65,6 +76,7 @@ export class AppConfigService {
|
|||||||
this.http.get('app.config.json').subscribe(
|
this.http.get('app.config.json').subscribe(
|
||||||
(data: any) => {
|
(data: any) => {
|
||||||
this.config = Object.assign({}, this.config, data || {});
|
this.config = Object.assign({}, this.config, data || {});
|
||||||
|
this.onLoadSubject.next(this.config);
|
||||||
resolve(this.config);
|
resolve(this.config);
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
|
@@ -61,7 +61,7 @@ export class UserPreferencesService {
|
|||||||
private storage: StorageService,
|
private storage: StorageService,
|
||||||
private apiService: AlfrescoApiService
|
private apiService: AlfrescoApiService
|
||||||
) {
|
) {
|
||||||
this.initUserPreferenceStatus();
|
this.appConfig.onLoad.subscribe(this.initUserPreferenceStatus.bind(this));
|
||||||
this.localeSubject = new BehaviorSubject(this.defaults.locale);
|
this.localeSubject = new BehaviorSubject(this.defaults.locale);
|
||||||
this.locale$ = this.localeSubject.asObservable();
|
this.locale$ = this.localeSubject.asObservable();
|
||||||
this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);
|
this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);
|
||||||
|
Reference in New Issue
Block a user