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` |
|
||||
| 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 { inject, TestBed } from '@angular/core/testing';
|
||||
import { async, inject, TestBed } from '@angular/core/testing';
|
||||
import { AppConfigService } from './app-config.service';
|
||||
import { AppConfigModule } from './app-config.module';
|
||||
|
||||
@@ -72,6 +72,20 @@ describe('AppConfigService', () => {
|
||||
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', () => {
|
||||
appConfigService.config.testUrl = 'http://{hostname}{:port}';
|
||||
|
||||
|
@@ -18,6 +18,8 @@
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { ObjectUtils } from '../utils/object-utils';
|
||||
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
|
||||
@Injectable()
|
||||
export class AppConfigService {
|
||||
@@ -34,7 +36,16 @@ export class AppConfigService {
|
||||
alfrescoRepositoryName: 'alfresco-1'
|
||||
};
|
||||
|
||||
private onLoadSubject: BehaviorSubject<any>;
|
||||
onLoad: Observable<any>;
|
||||
|
||||
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 {
|
||||
@@ -65,6 +76,7 @@ export class AppConfigService {
|
||||
this.http.get('app.config.json').subscribe(
|
||||
(data: any) => {
|
||||
this.config = Object.assign({}, this.config, data || {});
|
||||
this.onLoadSubject.next(this.config);
|
||||
resolve(this.config);
|
||||
},
|
||||
() => {
|
||||
|
@@ -61,7 +61,7 @@ export class UserPreferencesService {
|
||||
private storage: StorageService,
|
||||
private apiService: AlfrescoApiService
|
||||
) {
|
||||
this.initUserPreferenceStatus();
|
||||
this.appConfig.onLoad.subscribe(this.initUserPreferenceStatus.bind(this));
|
||||
this.localeSubject = new BehaviorSubject(this.defaults.locale);
|
||||
this.locale$ = this.localeSubject.asObservable();
|
||||
this.onChangeSubject = new BehaviorSubject(this.userPreferenceStatus);
|
||||
|
Reference in New Issue
Block a user