mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-4793] The filters don't work on community-edition [ Use local storage for community version ] (#4973)
* * Use local storage for community version. * * Created a communityModule. * * Updated unit tests the recent changes * * Updated documents. * * Modified process/task filters doc.
This commit is contained in:
committed by
Eugenio Romano
parent
964e89f6ef
commit
0bca6607a9
@@ -79,18 +79,15 @@ import { CloudBreadcrumbsComponent } from './components/cloud/cloud-breadcrumb-c
|
|||||||
import { CloudFiltersDemoComponent } from './components/cloud/cloud-filters-demo.component';
|
import { CloudFiltersDemoComponent } from './components/cloud/cloud-filters-demo.component';
|
||||||
import { TemplateDemoComponent } from './components/template-list/template-demo.component';
|
import { TemplateDemoComponent } from './components/template-list/template-demo.component';
|
||||||
import { PeopleGroupCloudDemoComponent } from './components/cloud/people-groups-cloud-demo.component';
|
import { PeopleGroupCloudDemoComponent } from './components/cloud/people-groups-cloud-demo.component';
|
||||||
import { CloudSettingsComponent } from './components/cloud/cloud-settings.component';
|
|
||||||
import { ConfirmDialogExampleComponent } from './components/confirm-dialog/confirm-dialog-example.component';
|
import { ConfirmDialogExampleComponent } from './components/confirm-dialog/confirm-dialog-example.component';
|
||||||
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
|
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
|
||||||
import { CommunityCloudComponent } from './components/cloud/community/community-cloud.component';
|
|
||||||
import { CommunityTasksCloudDemoComponent } from './components/cloud/community/community-task-cloud.component';
|
|
||||||
import { CommunityCloudFiltersDemoComponent } from './components/cloud/community/community-filters.component';
|
|
||||||
import { CommunityStartProcessCloudDemoComponent } from './components/cloud/community/community-start-process-cloud.component';
|
|
||||||
import { CommunityStartTaskCloudDemoComponent } from './components/cloud/community/community-start-task-cloud.component';
|
|
||||||
import { CommunityProcessDetailsCloudDemoComponent } from './components/cloud/community/community-process-details-cloud.component';
|
|
||||||
import { CommunityProcessesCloudDemoComponent } from './components/cloud/community/community-processes-cloud.component';
|
|
||||||
import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/community/community-task-details-cloud.component';
|
|
||||||
import { environment } from '../environments/environment';
|
import { environment } from '../environments/environment';
|
||||||
|
import { AppCloudSharedModule } from './components/cloud/shared/cloud.shared.module';
|
||||||
|
import {
|
||||||
|
UserPreferenceCloudService,
|
||||||
|
PROCESS_FILTERS_SERVICE_TOKEN,
|
||||||
|
TASK_FILTERS_SERVICE_TOKEN
|
||||||
|
} from '@alfresco/adf-process-services-cloud';
|
||||||
|
|
||||||
import { registerLocaleData } from '@angular/common';
|
import { registerLocaleData } from '@angular/common';
|
||||||
import localeFr from '@angular/common/locales/fr';
|
import localeFr from '@angular/common/locales/fr';
|
||||||
@@ -146,6 +143,7 @@ registerLocaleData(localeSv);
|
|||||||
ExtensionsModule.forRoot(),
|
ExtensionsModule.forRoot(),
|
||||||
ThemePickerModule,
|
ThemePickerModule,
|
||||||
ChartsModule,
|
ChartsModule,
|
||||||
|
AppCloudSharedModule,
|
||||||
MonacoEditorModule.forRoot()
|
MonacoEditorModule.forRoot()
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
@@ -189,24 +187,17 @@ registerLocaleData(localeSv);
|
|||||||
CloudFiltersDemoComponent,
|
CloudFiltersDemoComponent,
|
||||||
TemplateDemoComponent,
|
TemplateDemoComponent,
|
||||||
PeopleGroupCloudDemoComponent,
|
PeopleGroupCloudDemoComponent,
|
||||||
CloudSettingsComponent,
|
|
||||||
ConfirmDialogExampleComponent,
|
ConfirmDialogExampleComponent,
|
||||||
FormCloudDemoComponent,
|
FormCloudDemoComponent,
|
||||||
ConfirmDialogExampleComponent,
|
ConfirmDialogExampleComponent
|
||||||
CommunityCloudComponent,
|
|
||||||
CommunityTasksCloudDemoComponent,
|
|
||||||
CommunityCloudFiltersDemoComponent,
|
|
||||||
CommunityProcessesCloudDemoComponent,
|
|
||||||
CommunityStartProcessCloudDemoComponent,
|
|
||||||
CommunityStartTaskCloudDemoComponent,
|
|
||||||
CommunityProcessDetailsCloudDemoComponent,
|
|
||||||
CommunityTaskDetailsCloudDemoComponent
|
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{
|
||||||
provide: HTTP_INTERCEPTORS, useClass:
|
provide: HTTP_INTERCEPTORS, useClass:
|
||||||
AuthBearerInterceptor, multi: true
|
AuthBearerInterceptor, multi: true
|
||||||
},
|
},
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService },
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService },
|
||||||
{ provide: AppConfigService, useClass: DebugAppConfigService }, // not use this service in production
|
{ provide: AppConfigService, useClass: DebugAppConfigService }, // not use this service in production
|
||||||
{
|
{
|
||||||
provide: TRANSLATION_PROVIDER,
|
provide: TRANSLATION_PROVIDER,
|
||||||
|
@@ -57,14 +57,6 @@ import { ProcessDetailsCloudDemoComponent } from './components/cloud/process-det
|
|||||||
import { TemplateDemoComponent } from './components/template-list/template-demo.component';
|
import { TemplateDemoComponent } from './components/template-list/template-demo.component';
|
||||||
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
|
import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/cloud-form-demo.component';
|
||||||
import { ConfirmDialogExampleComponent } from './components/confirm-dialog/confirm-dialog-example.component';
|
import { ConfirmDialogExampleComponent } from './components/confirm-dialog/confirm-dialog-example.component';
|
||||||
import { CommunityTasksCloudDemoComponent } from './components/cloud/community/community-task-cloud.component';
|
|
||||||
import { CommunityCloudComponent } from './components/cloud/community/community-cloud.component';
|
|
||||||
import { CommunityStartProcessCloudDemoComponent } from './components/cloud/community/community-start-process-cloud.component';
|
|
||||||
import { CommunityStartTaskCloudDemoComponent } from './components/cloud/community/community-start-task-cloud.component';
|
|
||||||
import { CommunityProcessDetailsCloudDemoComponent } from './components/cloud/community/community-process-details-cloud.component';
|
|
||||||
import { CommunityProcessesCloudDemoComponent } from './components/cloud/community/community-processes-cloud.component';
|
|
||||||
import { CommunityTaskDetailsCloudDemoComponent } from './components/cloud/community/community-task-details-cloud.component';
|
|
||||||
|
|
||||||
export const appRoutes: Routes = [
|
export const appRoutes: Routes = [
|
||||||
{ path: 'login', loadChildren: 'app/components/login/login.module#AppLoginModule' },
|
{ path: 'login', loadChildren: 'app/components/login/login.module#AppLoginModule' },
|
||||||
{ path: 'logout', component: LogoutComponent },
|
{ path: 'logout', component: LogoutComponent },
|
||||||
@@ -186,33 +178,7 @@ export const appRoutes: Routes = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'community',
|
path: 'community',
|
||||||
component: CommunityCloudComponent,
|
loadChildren: 'app/components/cloud/community/community.module#AppCommunityModule'
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: 'tasks',
|
|
||||||
component: CommunityTasksCloudDemoComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'processes',
|
|
||||||
component: CommunityProcessesCloudDemoComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'start-task',
|
|
||||||
component: CommunityStartTaskCloudDemoComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'start-process',
|
|
||||||
component: CommunityStartProcessCloudDemoComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'task-details/:taskId',
|
|
||||||
component: CommunityTaskDetailsCloudDemoComponent
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'process-details/:processInstanceId',
|
|
||||||
component: CommunityProcessDetailsCloudDemoComponent
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ':appName',
|
path: ':appName',
|
||||||
|
@@ -29,7 +29,7 @@ import { CloudLayoutService } from '../services/cloud-layout.service';
|
|||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
}
|
}
|
||||||
`],
|
`],
|
||||||
encapsulation: ViewEncapsulation.None
|
encapsulation: ViewEncapsulation.None
|
||||||
})
|
})
|
||||||
export class CommunityCloudComponent {
|
export class CommunityCloudComponent {
|
||||||
|
|
||||||
|
@@ -0,0 +1,97 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { Routes, RouterModule } from '@angular/router';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { CoreModule } from '@alfresco/adf-core';
|
||||||
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
||||||
|
import {
|
||||||
|
ProcessServicesCloudModule,
|
||||||
|
LocalPreferenceCloudService,
|
||||||
|
PROCESS_FILTERS_SERVICE_TOKEN,
|
||||||
|
TASK_FILTERS_SERVICE_TOKEN
|
||||||
|
} from '@alfresco/adf-process-services-cloud';
|
||||||
|
|
||||||
|
import { CommunityCloudComponent } from './community-cloud.component';
|
||||||
|
import { CommunityTasksCloudDemoComponent } from './community-task-cloud.component';
|
||||||
|
import { CommunityCloudFiltersDemoComponent } from './community-filters.component';
|
||||||
|
import { CommunityProcessesCloudDemoComponent } from './community-processes-cloud.component';
|
||||||
|
import { CommunityStartProcessCloudDemoComponent } from './community-start-process-cloud.component';
|
||||||
|
import { CommunityStartTaskCloudDemoComponent } from './community-start-task-cloud.component';
|
||||||
|
import { CommunityProcessDetailsCloudDemoComponent } from './community-process-details-cloud.component';
|
||||||
|
import { CommunityTaskDetailsCloudDemoComponent } from './community-task-details-cloud.component';
|
||||||
|
import { AppCloudSharedModule } from '../shared/cloud.shared.module';
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
component: CommunityCloudComponent,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'tasks',
|
||||||
|
component: CommunityTasksCloudDemoComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'processes',
|
||||||
|
component: CommunityProcessesCloudDemoComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'start-task',
|
||||||
|
component: CommunityStartTaskCloudDemoComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'start-process',
|
||||||
|
component: CommunityStartProcessCloudDemoComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'task-details/:taskId',
|
||||||
|
component: CommunityTaskDetailsCloudDemoComponent
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'process-details/:processInstanceId',
|
||||||
|
component: CommunityProcessDetailsCloudDemoComponent
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
CoreModule.forChild(),
|
||||||
|
ProcessServicesCloudModule,
|
||||||
|
RouterModule.forChild(routes),
|
||||||
|
AppCloudSharedModule,
|
||||||
|
FlexLayoutModule
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
CommunityCloudComponent,
|
||||||
|
CommunityTasksCloudDemoComponent,
|
||||||
|
CommunityCloudFiltersDemoComponent,
|
||||||
|
CommunityProcessesCloudDemoComponent,
|
||||||
|
CommunityStartProcessCloudDemoComponent,
|
||||||
|
CommunityStartTaskCloudDemoComponent,
|
||||||
|
CommunityProcessDetailsCloudDemoComponent,
|
||||||
|
CommunityTaskDetailsCloudDemoComponent
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class AppCommunityModule {}
|
@@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
import { Component, OnInit, OnDestroy } from '@angular/core';
|
||||||
import { CloudLayoutService } from './services/cloud-layout.service';
|
import { CloudLayoutService } from '../services/cloud-layout.service';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
import { takeUntil } from 'rxjs/operators';
|
import { takeUntil } from 'rxjs/operators';
|
||||||
|
|
@@ -0,0 +1,37 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { CloudSettingsComponent } from './cloud-settings.component';
|
||||||
|
import { MatDialogModule, MatInputModule, MatSelectModule, MatSlideToggleModule } from '@angular/material';
|
||||||
|
import { CoreModule } from '@alfresco/adf-core';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
CoreModule.forChild(),
|
||||||
|
MatDialogModule,
|
||||||
|
MatInputModule,
|
||||||
|
MatSelectModule,
|
||||||
|
MatSlideToggleModule
|
||||||
|
],
|
||||||
|
declarations: [ CloudSettingsComponent ],
|
||||||
|
exports: [ CommonModule, CloudSettingsComponent]
|
||||||
|
})
|
||||||
|
|
||||||
|
export class AppCloudSharedModule {}
|
@@ -212,3 +212,7 @@ Users can save a filter if they make any changes to it in an application using t
|
|||||||
## See also
|
## See also
|
||||||
|
|
||||||
- [Edit task filter cloud component](edit-task-filter-cloud.component.md)
|
- [Edit task filter cloud component](edit-task-filter-cloud.component.md)
|
||||||
|
- [Process Filter Cloud Service](../services/process-filter-cloud.service.md)
|
||||||
|
- [Local preference Cloud Service](../services/local-preference-cloud.service.md)
|
||||||
|
- [User preference Cloud Service](../services/user-preference-cloud.service.md)
|
||||||
|
|
||||||
|
@@ -212,3 +212,7 @@ Users can save a filter if they make any changes to it in an application using t
|
|||||||
## See also
|
## See also
|
||||||
|
|
||||||
- [Edit process filter cloud component](edit-process-filter-cloud.component.md)
|
- [Edit process filter cloud component](edit-process-filter-cloud.component.md)
|
||||||
|
- [Task filters Cloud Service](../services/task-filter-cloud.service.md)
|
||||||
|
- [Local preference Cloud Service](../services/local-preference-cloud.service.md)
|
||||||
|
- [User preference Cloud Service](../services/user-preference-cloud.service.md)
|
||||||
|
|
||||||
|
@@ -35,3 +35,9 @@ Lists all available process filters and allows to select a filter.
|
|||||||
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when any error occurs while loading the filters |
|
| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when any error occurs while loading the filters |
|
||||||
| filterClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessFilterCloudModel`](../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts)`>` | Emitted when a filter is selected/clicked |
|
| filterClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ProcessFilterCloudModel`](../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts)`>` | Emitted when a filter is selected/clicked |
|
||||||
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when filters are loaded successfully |
|
| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | Emitted when filters are loaded successfully |
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
- [Process Filter Cloud Service](./services/process-filter-cloud.service.md)
|
||||||
|
- [Local preference Cloud Service](./services/local-preference-cloud.service.md)
|
||||||
|
- [User preference Cloud Service](./services/user-preference-cloud.service.md)
|
||||||
|
@@ -54,3 +54,9 @@ as the value of `filterParam` as shown in the table below:
|
|||||||
| name | string | The name of the task filter, lowercase is checked |
|
| name | string | The name of the task filter, lowercase is checked |
|
||||||
| key | string | The key of the task filter |
|
| key | string | The key of the task filter |
|
||||||
| index | string | The zero-based position of the filter in the array. |
|
| index | string | The zero-based position of the filter in the array. |
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
- [Task filter Cloud Service](../services/task-filter-cloud.service.md)
|
||||||
|
- [Local preference Cloud Service](../services/local-preference-cloud.service.md)
|
||||||
|
- [User preference Cloud Service](../services/user-preference-cloud.service.md)
|
||||||
|
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
Title: Local Preference Cloud Service
|
||||||
|
Added: v3.4.0
|
||||||
|
Status: Experimental
|
||||||
|
Last reviewed: 2019-08-06
|
||||||
|
---
|
||||||
|
|
||||||
|
# [Local Preference Cloud Service](../../../lib/process-services-cloud/src/lib/services/local-preference-cloud.service.ts "Defined in local-preference-cloud.service.ts")
|
||||||
|
|
||||||
|
Manages Local Storage preferences.
|
||||||
|
|
||||||
|
## Class members
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
- **createPreference**(appName: `string`, key: `string`, newPreference: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Creates local preference.
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- _newPreference:_ `any` -
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of created local preferences
|
||||||
|
- **deletePreference**(key: `string`, preferences: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Deletes local preference by given preference key.
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- _preferences:_ `any` - Details of updated preferences
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of preferences without deleted preference
|
||||||
|
- **getPreferenceByKey**(appName: `string`, key: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Gets local preference.
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of local preference
|
||||||
|
- **getPreferences**(appName: `string`, key: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Gets local preferences
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - (Optional) (Optional) (Optional) (Optional)
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - List of local preferences
|
||||||
|
- **prepareLocalPreferenceResponse**(key: `string`): `any`<br/>
|
||||||
|
|
||||||
|
- _key:_ `string` -
|
||||||
|
- **Returns** `any` -
|
||||||
|
|
||||||
|
- **updatePreference**(appName: `string`, key: `string`, updatedPreference: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Updates local preference.
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- _updatedPreference:_ `any` - Details of updated preference
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of updated local preferences
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
- [User preference Cloud Service](user-preference-cloud.service.md)
|
@@ -35,13 +35,47 @@ Manage Process Filters, which are pre-configured Process Instance queries.
|
|||||||
- _updatedFilter:_ [`ProcessFilterCloudModel`](../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts) -
|
- _updatedFilter:_ [`ProcessFilterCloudModel`](../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts) -
|
||||||
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessFilterCloudModel`](../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts)`[]>` - Observable of process instance filters with updated filter
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ProcessFilterCloudModel`](../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts)`[]>` - Observable of process instance filters with updated filter
|
||||||
|
|
||||||
## Details
|
## Inject Preference service
|
||||||
|
|
||||||
The methods of this service generally return an instance of
|
Token: [`PROCESS_FILTERS_SERVICE_TOKEN`](../../../lib/process-services-cloud/src/lib/services/cloud-token.service.ts)
|
||||||
[`ProcessFilterCloudModel`](../../../lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts) or an array of instances.
|
A DI token that maps to the dependency to be injected.
|
||||||
|
|
||||||
You can use the returned filters to get matching process instances for the process app,
|
[Process Filter Cloud Service](../../../lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts "Defined in process-filter-cloud.service.ts")
|
||||||
such as 'Running', 'Completed', 'All', etc.
|
is by default injected with the [Local Preference Cloud Service](../../process-services-cloud/services/local-preference-cloud.service.md)
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { LocalPreferenceCloudService, PROCESS_FILTERS_SERVICE_TOKEN } from '@alfresco/adf-process-services-cloud';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
...Import Required Modules
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class ExampleModule {}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
If you would like to inject the [User Preference Cloud Service](../../process-services-cloud/services/user-preference-cloud.service.md), you can inject the service like below shown
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { UserPreferenceCloudService, PROCESS_FILTERS_SERVICE_TOKEN } from '@alfresco/adf-process-services-cloud';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
...Import Required Modules
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class ExampleModule {}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
|
@@ -53,6 +53,48 @@ this.taskFilterService.getTaskListFilters(appName).subscribe( (filters: TaskFilt
|
|||||||
|
|
||||||
These filters can now be used to get matching task instances for the process app.
|
These filters can now be used to get matching task instances for the process app.
|
||||||
|
|
||||||
|
## Inject Preference service
|
||||||
|
|
||||||
|
Token: [`TASK_FILTERS_SERVICE_TOKEN`](../../../lib/process-services-cloud/src/lib/services/cloud-token.service.ts)
|
||||||
|
A DI token that maps to the dependency to be injected.
|
||||||
|
|
||||||
|
[Task Filter Cloud Service](../../../lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts "Defined in task-filter-cloud.service.ts")
|
||||||
|
is by default injected with the [Local Preference Cloud Service](../../process-services-cloud/services/local-preference-cloud.service.md)
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { LocalPreferenceCloudService, TASK_FILTERS_SERVICE_TOKEN } from '@alfresco/adf-process-services-cloud';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
...Import Required Modules
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class ExampleModule {}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
If you would like to inject the [UserPreferenceCloudService](../../process-services-cloud/services/user-preference-cloud.service.md), you can inject the service like below shown
|
||||||
|
|
||||||
|
```ts
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { UserPreferenceCloudService, TASK_FILTERS_SERVICE_TOKEN } from '@alfresco/adf-process-services-cloud';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
...Import Required Modules
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class ExampleModule {}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
- [Task filter service](../../process-services/services/task-filter.service.md)
|
- [Task filter service](../../process-services/services/task-filter.service.md)
|
||||||
|
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
Title: User Preference Cloud Service
|
||||||
|
Added: v3.4.0
|
||||||
|
Status: Experimental
|
||||||
|
Last reviewed: 2019-08-06
|
||||||
|
---
|
||||||
|
|
||||||
|
# [User Preference Cloud Service](../../../lib/process-services-cloud/src/lib/services/user-preference-cloud.service.ts "Defined in user-preference-cloud.service.ts")
|
||||||
|
|
||||||
|
Manages user preferences.
|
||||||
|
|
||||||
|
## Class members
|
||||||
|
|
||||||
|
### Methods
|
||||||
|
|
||||||
|
- **createPreference**(appName: `string`, key: `string`, newPreference: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Creates user preference.
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- _newPreference:_ `any` -
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of created user preferences
|
||||||
|
- **deletePreference**(appName: `string`, key: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Deletes user preference by given preference key.
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of delete operation status
|
||||||
|
- **getBasePath**(appName: `string`): `string`<br/>
|
||||||
|
|
||||||
|
- _appName:_ `string` -
|
||||||
|
- **Returns** `string` -
|
||||||
|
|
||||||
|
- **getPreferenceByKey**(appName: `string`, key: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Gets user preference.
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of user preference
|
||||||
|
- **getPreferences**(appName: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Gets user preferences
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - List of user preferences
|
||||||
|
- **updatePreference**(appName: `string`, key: `string`, updatedPreference: `any`): [`Observable`](http://reactivex.io/documentation/observable.html)`<any>`<br/>
|
||||||
|
Updates user preference.
|
||||||
|
- _appName:_ `string` - Name of the target app
|
||||||
|
- _key:_ `string` - Key of the target preference
|
||||||
|
- _updatedPreference:_ `any` - Details of updated preference
|
||||||
|
- **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<any>` - Observable of updated user preferences
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
- [Local preference Cloud Service](local-preference-cloud.service.md)
|
@@ -24,7 +24,12 @@ import { GroupCloudModule } from './group/group-cloud.module';
|
|||||||
import { FormCloudModule } from './form/form-cloud.module';
|
import { FormCloudModule } from './form/form-cloud.module';
|
||||||
import { TaskFormModule } from './task/task-form/task-form.module';
|
import { TaskFormModule } from './task/task-form/task-form.module';
|
||||||
import { BaseCloudService } from './services/base-cloud.service';
|
import { BaseCloudService } from './services/base-cloud.service';
|
||||||
import { UserPreferenceCloudService } from './services/user-preference.cloud.service';
|
import { UserPreferenceCloudService } from './services/user-preference-cloud.service';
|
||||||
|
import {
|
||||||
|
LocalPreferenceCloudService,
|
||||||
|
PROCESS_FILTERS_SERVICE_TOKEN,
|
||||||
|
TASK_FILTERS_SERVICE_TOKEN
|
||||||
|
} from './services/public-api';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -46,7 +51,10 @@ import { UserPreferenceCloudService } from './services/user-preference.cloud.ser
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
BaseCloudService,
|
BaseCloudService,
|
||||||
UserPreferenceCloudService
|
UserPreferenceCloudService,
|
||||||
|
LocalPreferenceCloudService,
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
AppListCloudModule,
|
AppListCloudModule,
|
||||||
|
@@ -32,7 +32,8 @@ import { AppsProcessCloudService } from '../../../app/services/apps-process-clou
|
|||||||
import { fakeApplicationInstance } from './../../../app/mock/app-model.mock';
|
import { fakeApplicationInstance } from './../../../app/mock/app-model.mock';
|
||||||
import moment from 'moment-es6';
|
import moment from 'moment-es6';
|
||||||
import { AbstractControl } from '@angular/forms';
|
import { AbstractControl } from '@angular/forms';
|
||||||
import { UserPreferenceCloudService } from '../../../services/user-preference.cloud.service';
|
import { PROCESS_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service';
|
||||||
|
|
||||||
describe('EditProcessFilterCloudComponent', () => {
|
describe('EditProcessFilterCloudComponent', () => {
|
||||||
let component: EditProcessFilterCloudComponent;
|
let component: EditProcessFilterCloudComponent;
|
||||||
@@ -56,7 +57,10 @@ describe('EditProcessFilterCloudComponent', () => {
|
|||||||
|
|
||||||
setupTestBed({
|
setupTestBed({
|
||||||
imports: [ProcessServiceCloudTestingModule, ProcessFiltersCloudModule],
|
imports: [ProcessServiceCloudTestingModule, ProcessFiltersCloudModule],
|
||||||
providers: [MatDialog, UserPreferenceCloudService]
|
providers: [
|
||||||
|
MatDialog,
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
@@ -26,7 +26,9 @@ import { By } from '@angular/platform-browser';
|
|||||||
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
||||||
import { ProcessFiltersCloudModule } from '../process-filters-cloud.module';
|
import { ProcessFiltersCloudModule } from '../process-filters-cloud.module';
|
||||||
import { FilterParamsModel } from '../../../task/task-filters/models/filter-cloud.model';
|
import { FilterParamsModel } from '../../../task/task-filters/models/filter-cloud.model';
|
||||||
import { UserPreferenceCloudService } from '../../../services/user-preference.cloud.service';
|
import { PROCESS_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service';
|
||||||
|
import { UserPreferenceCloudService } from '../../../services/user-preference-cloud.service';
|
||||||
|
|
||||||
describe('ProcessFiltersCloudComponent', () => {
|
describe('ProcessFiltersCloudComponent', () => {
|
||||||
|
|
||||||
@@ -76,7 +78,10 @@ describe('ProcessFiltersCloudComponent', () => {
|
|||||||
|
|
||||||
setupTestBed({
|
setupTestBed({
|
||||||
imports: [ProcessServiceCloudTestingModule, ProcessFiltersCloudModule],
|
imports: [ProcessServiceCloudTestingModule, ProcessFiltersCloudModule],
|
||||||
providers: [ProcessFilterCloudService, UserPreferenceCloudService]
|
providers: [
|
||||||
|
ProcessFilterCloudService,
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -86,6 +91,14 @@ describe('ProcessFiltersCloudComponent', () => {
|
|||||||
processFilterService = TestBed.get(ProcessFilterCloudService);
|
processFilterService = TestBed.get(ProcessFilterCloudService);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should create ProcessFiltersCloudComponent instance', () => {
|
||||||
|
expect(component instanceof ProcessFiltersCloudComponent).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to use LocalPreferenceCloudService', () => {
|
||||||
|
expect(processFilterService.preferenceService instanceof LocalPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
it('should attach specific icon for each filter if hasIcon is true', async(() => {
|
it('should attach specific icon for each filter if hasIcon is true', async(() => {
|
||||||
spyOn(processFilterService, 'getProcessFilters').and.returnValue(fakeGlobalFilterObservable);
|
spyOn(processFilterService, 'getProcessFilters').and.returnValue(fakeGlobalFilterObservable);
|
||||||
const change = new SimpleChange(undefined, 'my-app-1', true);
|
const change = new SimpleChange(undefined, 'my-app-1', true);
|
||||||
@@ -353,3 +366,32 @@ describe('ProcessFiltersCloudComponent', () => {
|
|||||||
expect(component.getCurrentFilter()).toBe(filter);
|
expect(component.getCurrentFilter()).toBe(filter);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Set UserPreferenceService', () => {
|
||||||
|
|
||||||
|
let processFilterService: ProcessFilterCloudService;
|
||||||
|
let component: ProcessFiltersCloudComponent;
|
||||||
|
let fixture: ComponentFixture<ProcessFiltersCloudComponent>;
|
||||||
|
|
||||||
|
setupTestBed({
|
||||||
|
imports: [ProcessServiceCloudTestingModule, ProcessFiltersCloudModule],
|
||||||
|
providers: [
|
||||||
|
ProcessFilterCloudService,
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(ProcessFiltersCloudComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
processFilterService = TestBed.get(ProcessFilterCloudService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create ProcessFiltersCloudComponent instance', () => {
|
||||||
|
expect(component instanceof ProcessFiltersCloudComponent).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should able to inject UserPreferenceCloudService when you override with user preferece service', () => {
|
||||||
|
expect(processFilterService.preferenceService instanceof UserPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
@@ -19,7 +19,6 @@ import { async, TestBed } from '@angular/core/testing';
|
|||||||
import { setupTestBed, CoreModule, IdentityUserService } from '@alfresco/adf-core';
|
import { setupTestBed, CoreModule, IdentityUserService } from '@alfresco/adf-core';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { ProcessFilterCloudService } from './process-filter-cloud.service';
|
import { ProcessFilterCloudService } from './process-filter-cloud.service';
|
||||||
import { UserPreferenceCloudService } from '../../../services/user-preference.cloud.service';
|
|
||||||
import {
|
import {
|
||||||
fakeProcessCloudFilterEntries,
|
fakeProcessCloudFilterEntries,
|
||||||
fakeProcessCloudFilters,
|
fakeProcessCloudFilters,
|
||||||
@@ -27,10 +26,14 @@ import {
|
|||||||
fakeProcessCloudFilterWithDifferentEntries,
|
fakeProcessCloudFilterWithDifferentEntries,
|
||||||
fakeProcessFilter
|
fakeProcessFilter
|
||||||
} from '../mock/process-filters.cloud.mock';
|
} from '../mock/process-filters.cloud.mock';
|
||||||
|
import { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';
|
||||||
|
import { PROCESS_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service';
|
||||||
|
import { UserPreferenceCloudService } from '../../../services/user-preference-cloud.service';
|
||||||
|
|
||||||
describe('Process Filter Cloud Service', () => {
|
describe('ProcessFilterCloudService', () => {
|
||||||
let service: ProcessFilterCloudService;
|
let service: ProcessFilterCloudService;
|
||||||
let userPreferenceCloudService: UserPreferenceCloudService;
|
let preferenceCloudService: PreferenceCloudServiceInterface;
|
||||||
let identityUserService: IdentityUserService;
|
let identityUserService: IdentityUserService;
|
||||||
let getPreferencesSpy: jasmine.Spy;
|
let getPreferencesSpy: jasmine.Spy;
|
||||||
let getPreferenceByKeySpy: jasmine.Spy;
|
let getPreferenceByKeySpy: jasmine.Spy;
|
||||||
@@ -44,17 +47,22 @@ describe('Process Filter Cloud Service', () => {
|
|||||||
imports: [
|
imports: [
|
||||||
CoreModule.forRoot()
|
CoreModule.forRoot()
|
||||||
],
|
],
|
||||||
providers: [ProcessFilterCloudService, UserPreferenceCloudService, IdentityUserService]
|
providers: [
|
||||||
|
ProcessFilterCloudService,
|
||||||
|
IdentityUserService,
|
||||||
|
LocalPreferenceCloudService,
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
service = TestBed.get(ProcessFilterCloudService);
|
service = TestBed.get(ProcessFilterCloudService);
|
||||||
userPreferenceCloudService = TestBed.get(UserPreferenceCloudService);
|
preferenceCloudService = service.preferenceService;
|
||||||
identityUserService = TestBed.get(IdentityUserService);
|
identityUserService = TestBed.get(IdentityUserService);
|
||||||
createPreferenceSpy = spyOn(userPreferenceCloudService, 'createPreference').and.returnValue(of(fakeProcessCloudFilters));
|
createPreferenceSpy = spyOn(preferenceCloudService, 'createPreference').and.returnValue(of(fakeProcessCloudFilters));
|
||||||
updatePreferenceSpy = spyOn(userPreferenceCloudService, 'updatePreference').and.returnValue(of(fakeProcessCloudFilters));
|
updatePreferenceSpy = spyOn(preferenceCloudService, 'updatePreference').and.returnValue(of(fakeProcessCloudFilters));
|
||||||
getPreferenceByKeySpy = spyOn(userPreferenceCloudService, 'getPreferenceByKey').and.returnValue(of(fakeProcessCloudFilters));
|
getPreferenceByKeySpy = spyOn(preferenceCloudService, 'getPreferenceByKey').and.returnValue(of(fakeProcessCloudFilters));
|
||||||
getPreferencesSpy = spyOn(userPreferenceCloudService, 'getPreferences').and.returnValue(of(fakeProcessCloudFilterEntries));
|
getPreferencesSpy = spyOn(preferenceCloudService, 'getPreferences').and.returnValue(of(fakeProcessCloudFilterEntries));
|
||||||
getCurrentUserInfoSpy = spyOn(identityUserService, 'getCurrentUserInfo').and.returnValue(identityUserMock);
|
getCurrentUserInfoSpy = spyOn(identityUserService, 'getCurrentUserInfo').and.returnValue(identityUserMock);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -62,6 +70,10 @@ describe('Process Filter Cloud Service', () => {
|
|||||||
expect(service).toBeDefined();
|
expect(service).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should be able to use LocalPreferenceCloudService', () => {
|
||||||
|
expect(preferenceCloudService instanceof LocalPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
it('should create processfilter key by using appName and the username', (done) => {
|
it('should create processfilter key by using appName and the username', (done) => {
|
||||||
service.getProcessFilters('mock-appName').subscribe((res: any) => {
|
service.getProcessFilters('mock-appName').subscribe((res: any) => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
@@ -208,3 +220,38 @@ describe('Process Filter Cloud Service', () => {
|
|||||||
expect(updatePreferenceSpy).toHaveBeenCalled();
|
expect(updatePreferenceSpy).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Inject [UserPreferenceCloudService] into the ProcessFilterCloudService', () => {
|
||||||
|
let service: ProcessFilterCloudService;
|
||||||
|
let preferenceCloudService: PreferenceCloudServiceInterface;
|
||||||
|
let identityUserService: IdentityUserService;
|
||||||
|
|
||||||
|
const identityUserMock = { username: 'mock-username', firstName: 'fake-identity-first-name', lastName: 'fake-identity-last-name', email: 'fakeIdentity@email.com' };
|
||||||
|
|
||||||
|
setupTestBed({
|
||||||
|
imports: [
|
||||||
|
CoreModule.forRoot()
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
ProcessFilterCloudService,
|
||||||
|
IdentityUserService,
|
||||||
|
UserPreferenceCloudService,
|
||||||
|
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
service = TestBed.get(ProcessFilterCloudService);
|
||||||
|
preferenceCloudService = service.preferenceService;
|
||||||
|
identityUserService = TestBed.get(IdentityUserService);
|
||||||
|
spyOn(identityUserService, 'getCurrentUserInfo').and.returnValue(identityUserMock);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should create ProcessFilterCloudService instance', () => {
|
||||||
|
expect(service).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to inject UserPreferenceCloudService when you override with user preferece service', () => {
|
||||||
|
expect(preferenceCloudService instanceof UserPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
@@ -16,12 +16,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { IdentityUserService, IdentityUserModel } from '@alfresco/adf-core';
|
import { IdentityUserService, IdentityUserModel } from '@alfresco/adf-core';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable, Inject } from '@angular/core';
|
||||||
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
||||||
import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model';
|
import { ProcessFilterCloudModel } from '../models/process-filter-cloud.model';
|
||||||
import { UserPreferenceCloudService } from '../../../services/public-api';
|
|
||||||
import { switchMap, map, catchError } from 'rxjs/operators';
|
import { switchMap, map, catchError } from 'rxjs/operators';
|
||||||
|
import { PROCESS_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
import { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ProcessFilterCloudService {
|
export class ProcessFilterCloudService {
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ export class ProcessFilterCloudService {
|
|||||||
filters$: Observable<ProcessFilterCloudModel[]>;
|
filters$: Observable<ProcessFilterCloudModel[]>;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private preferenceService: UserPreferenceCloudService,
|
@Inject(PROCESS_FILTERS_SERVICE_TOKEN) public preferenceService: PreferenceCloudServiceInterface,
|
||||||
private identityUserService: IdentityUserService) {
|
private identityUserService: IdentityUserService) {
|
||||||
this.filtersSubject = new BehaviorSubject([]);
|
this.filtersSubject = new BehaviorSubject([]);
|
||||||
this.filters$ = this.filtersSubject.asObservable();
|
this.filters$ = this.filtersSubject.asObservable();
|
||||||
@@ -42,7 +42,7 @@ export class ProcessFilterCloudService {
|
|||||||
*/
|
*/
|
||||||
private createDefaultFilters(appName: string) {
|
private createDefaultFilters(appName: string) {
|
||||||
const key: string = this.prepareKey(appName);
|
const key: string = this.prepareKey(appName);
|
||||||
this.preferenceService.getPreferences(appName).pipe(
|
this.preferenceService.getPreferences(appName, key).pipe(
|
||||||
switchMap((response: any) => {
|
switchMap((response: any) => {
|
||||||
const preferences = (response && response.list && response.list.entries) ? response.list.entries : [];
|
const preferences = (response && response.list && response.list.entries) ? response.list.entries : [];
|
||||||
if (!this.hasPreferences(preferences)) {
|
if (!this.hasPreferences(preferences)) {
|
||||||
|
@@ -0,0 +1,23 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { InjectionToken } from '@angular/core';
|
||||||
|
import { PreferenceCloudServiceInterface } from './preference-cloud.interface';
|
||||||
|
|
||||||
|
export const PROCESS_FILTERS_SERVICE_TOKEN = new InjectionToken<PreferenceCloudServiceInterface>('proccess-filters-cloud');
|
||||||
|
|
||||||
|
export const TASK_FILTERS_SERVICE_TOKEN = new InjectionToken<PreferenceCloudServiceInterface>('task-filters-cloud');
|
@@ -0,0 +1,105 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { PreferenceCloudServiceInterface } from './preference-cloud.interface';
|
||||||
|
import { StorageService } from '@alfresco/adf-core';
|
||||||
|
import { Observable, of } from 'rxjs';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class LocalPreferenceCloudService implements PreferenceCloudServiceInterface {
|
||||||
|
|
||||||
|
constructor(private storage: StorageService) { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets local preferences
|
||||||
|
* @param appName Name of the target app
|
||||||
|
* @returns List of local preferences
|
||||||
|
*/
|
||||||
|
getPreferences(appName: string, key: string): Observable<any> {
|
||||||
|
if (key || key === '') {
|
||||||
|
return of(this.prepareLocalPreferenceResponse(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets local preference.
|
||||||
|
* @param appName Name of the target app
|
||||||
|
* @param key Key of the target preference
|
||||||
|
* @returns Observable of local preference
|
||||||
|
*/
|
||||||
|
getPreferenceByKey(appName: string, key: string): Observable<any> {
|
||||||
|
return of(JSON.parse(this.storage.getItem(key)) || []);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates local preference.
|
||||||
|
* @param appName Name of the target app
|
||||||
|
* @param key Key of the target preference
|
||||||
|
* @newPreference Details of new local preference
|
||||||
|
* @returns Observable of created local preferences
|
||||||
|
*/
|
||||||
|
createPreference(appName: string, key: string, newPreference: any): Observable<any> {
|
||||||
|
const storedFilters = JSON.parse(this.storage.getItem(key) || '[]');
|
||||||
|
storedFilters.push(...newPreference);
|
||||||
|
this.storage.setItem(key, JSON.stringify(storedFilters));
|
||||||
|
return of(storedFilters);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates local preference.
|
||||||
|
* @param appName Name of the target app
|
||||||
|
* @param key Key of the target preference
|
||||||
|
* @param updatedPreference Details of updated preference
|
||||||
|
* @returns Observable of updated local preferences
|
||||||
|
*/
|
||||||
|
updatePreference(appName: string, key: string, updatedPreference: any): Observable<any> {
|
||||||
|
if (key) {
|
||||||
|
this.storage.setItem(key, JSON.stringify(updatedPreference));
|
||||||
|
return of(updatedPreference);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes local preference by given preference key.
|
||||||
|
* @param appName Name of the target app
|
||||||
|
* @param key Key of the target preference
|
||||||
|
* @param preferences Details of updated preferences
|
||||||
|
* @returns Observable of preferences without deleted preference
|
||||||
|
*/
|
||||||
|
deletePreference(key: string, preferences: any): Observable<any> {
|
||||||
|
if (key) {
|
||||||
|
this.storage.setItem(key, JSON.stringify(preferences));
|
||||||
|
return of(preferences);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
prepareLocalPreferenceResponse(key: string): any {
|
||||||
|
return {
|
||||||
|
'list': {
|
||||||
|
'entries': [
|
||||||
|
{
|
||||||
|
'entry': {
|
||||||
|
'key': key,
|
||||||
|
'value': this.storage.getItem(key) || '[]'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,28 @@
|
|||||||
|
/*!
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Alfresco Software, Ltd.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
|
export interface PreferenceCloudServiceInterface {
|
||||||
|
|
||||||
|
getPreferences(appName: string, key?: string): Observable<any>;
|
||||||
|
getPreferenceByKey(appName: string, key: string): Observable<any>;
|
||||||
|
createPreference(appName: string, key: string, newPreference: any): Observable<any>;
|
||||||
|
updatePreference(appName: string, key: string, updatedPreference: any): Observable<any>;
|
||||||
|
deletePreference(appName: string, key: any): Observable<any>;
|
||||||
|
|
||||||
|
}
|
@@ -15,4 +15,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export * from './user-preference.cloud.service';
|
export * from './user-preference-cloud.service';
|
||||||
|
export * from './local-preference-cloud.service';
|
||||||
|
export * from './cloud-token.service';
|
||||||
|
export * from './preference-cloud.interface';
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
import { TestBed, async } from '@angular/core/testing';
|
import { TestBed, async } from '@angular/core/testing';
|
||||||
|
|
||||||
import { UserPreferenceCloudService } from './user-preference.cloud.service';
|
import { UserPreferenceCloudService } from './user-preference-cloud.service';
|
||||||
import { setupTestBed, CoreModule, AlfrescoApiServiceMock, AppConfigService, LogService, AlfrescoApiService } from '@alfresco/adf-core';
|
import { setupTestBed, CoreModule, AlfrescoApiServiceMock, AppConfigService, LogService, AlfrescoApiService } from '@alfresco/adf-core';
|
||||||
import { mockPreferences, getMockPreference, createMockPreference, updateMockPreference } from '../mock/user-preference.mock';
|
import { mockPreferences, getMockPreference, createMockPreference, updateMockPreference } from '../mock/user-preference.mock';
|
||||||
|
|
@@ -16,13 +16,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { BaseCloudService } from './base-cloud.service';
|
import { PreferenceCloudServiceInterface } from './preference-cloud.interface';
|
||||||
import { AlfrescoApiService, AppConfigService, LogService } from '@alfresco/adf-core';
|
import { AlfrescoApiService, AppConfigService, LogService } from '@alfresco/adf-core';
|
||||||
import { from, throwError, Observable } from 'rxjs';
|
import { from, throwError, Observable } from 'rxjs';
|
||||||
import { catchError } from 'rxjs/operators';
|
import { catchError } from 'rxjs/operators';
|
||||||
|
import { BaseCloudService } from './base-cloud.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UserPreferenceCloudService extends BaseCloudService {
|
export class UserPreferenceCloudService extends BaseCloudService implements PreferenceCloudServiceInterface {
|
||||||
|
|
||||||
contentTypes = ['application/json'];
|
contentTypes = ['application/json'];
|
||||||
accepts = ['application/json'];
|
accepts = ['application/json'];
|
||||||
@@ -58,7 +59,7 @@ export class UserPreferenceCloudService extends BaseCloudService {
|
|||||||
* Gets user preference.
|
* Gets user preference.
|
||||||
* @param appName Name of the target app
|
* @param appName Name of the target app
|
||||||
* @param key Key of the target preference
|
* @param key Key of the target preference
|
||||||
* @returns Observable of user preferences
|
* @returns Observable of user preference
|
||||||
*/
|
*/
|
||||||
getPreferenceByKey(appName: string, key: string): Observable<any> {
|
getPreferenceByKey(appName: string, key: string): Observable<any> {
|
||||||
if (appName || appName === '') {
|
if (appName || appName === '') {
|
@@ -36,7 +36,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.adf {
|
.adf {
|
||||||
&-cloud-edit-process-filter-loading-margin {
|
&-cloud-edit-task-filter-loading-margin {
|
||||||
margin-left: calc((100% - 100px) / 2);
|
margin-left: calc((100% - 100px) / 2);
|
||||||
margin-right: calc((100% - 100px) / 2);
|
margin-right: calc((100% - 100px) / 2);
|
||||||
}
|
}
|
||||||
|
@@ -22,14 +22,14 @@ import { By } from '@angular/platform-browser';
|
|||||||
import { setupTestBed } from '@alfresco/adf-core';
|
import { setupTestBed } from '@alfresco/adf-core';
|
||||||
import { MatDialog } from '@angular/material';
|
import { MatDialog } from '@angular/material';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
|
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service';
|
||||||
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
||||||
import { AppsProcessCloudService } from '../../../app/services/apps-process-cloud.service';
|
import { AppsProcessCloudService } from '../../../app/services/apps-process-cloud.service';
|
||||||
import { fakeApplicationInstance } from '../../../app/mock/app-model.mock';
|
import { fakeApplicationInstance } from '../../../app/mock/app-model.mock';
|
||||||
import { TaskFiltersCloudModule } from '../task-filters-cloud.module';
|
import { TaskFiltersCloudModule } from '../task-filters-cloud.module';
|
||||||
import { EditTaskFilterCloudComponent } from './edit-task-filter-cloud.component';
|
import { EditTaskFilterCloudComponent } from './edit-task-filter-cloud.component';
|
||||||
import { TaskFilterCloudService } from '../services/task-filter-cloud.service';
|
import { TaskFilterCloudService } from '../services/task-filter-cloud.service';
|
||||||
import { UserPreferenceCloudService } from '../../../services/user-preference.cloud.service';
|
|
||||||
import { TaskFilterDialogCloudComponent } from './task-filter-dialog-cloud.component';
|
import { TaskFilterDialogCloudComponent } from './task-filter-dialog-cloud.component';
|
||||||
import { fakeFilter, fakeAllTaskFilter } from '../mock/task-filters-cloud.mock';
|
import { fakeFilter, fakeAllTaskFilter } from '../mock/task-filters-cloud.mock';
|
||||||
import { AbstractControl } from '@angular/forms';
|
import { AbstractControl } from '@angular/forms';
|
||||||
@@ -46,7 +46,10 @@ describe('EditTaskFilterCloudComponent', () => {
|
|||||||
|
|
||||||
setupTestBed({
|
setupTestBed({
|
||||||
imports: [ProcessServiceCloudTestingModule, TaskFiltersCloudModule],
|
imports: [ProcessServiceCloudTestingModule, TaskFiltersCloudModule],
|
||||||
providers: [MatDialog, UserPreferenceCloudService]
|
providers: [
|
||||||
|
MatDialog,
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
@@ -19,6 +19,8 @@ import { SimpleChange } from '@angular/core';
|
|||||||
import { ComponentFixture, TestBed, async } from '@angular/core/testing';
|
import { ComponentFixture, TestBed, async } from '@angular/core/testing';
|
||||||
import { setupTestBed } from '@alfresco/adf-core';
|
import { setupTestBed } from '@alfresco/adf-core';
|
||||||
import { from, Observable } from 'rxjs';
|
import { from, Observable } from 'rxjs';
|
||||||
|
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service';
|
||||||
import { FilterParamsModel } from '../models/filter-cloud.model';
|
import { FilterParamsModel } from '../models/filter-cloud.model';
|
||||||
import { TaskFilterCloudService } from '../services/task-filter-cloud.service';
|
import { TaskFilterCloudService } from '../services/task-filter-cloud.service';
|
||||||
import { TaskFiltersCloudComponent } from './task-filters-cloud.component';
|
import { TaskFiltersCloudComponent } from './task-filters-cloud.component';
|
||||||
@@ -26,7 +28,7 @@ import { By } from '@angular/platform-browser';
|
|||||||
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
||||||
import { TaskFiltersCloudModule } from '../task-filters-cloud.module';
|
import { TaskFiltersCloudModule } from '../task-filters-cloud.module';
|
||||||
import { fakeGlobalFilter } from '../mock/task-filters-cloud.mock';
|
import { fakeGlobalFilter } from '../mock/task-filters-cloud.mock';
|
||||||
import { UserPreferenceCloudService } from '../../../services/user-preference.cloud.service';
|
import { UserPreferenceCloudService } from '../../../services/user-preference-cloud.service';
|
||||||
|
|
||||||
describe('TaskFiltersCloudComponent', () => {
|
describe('TaskFiltersCloudComponent', () => {
|
||||||
|
|
||||||
@@ -53,7 +55,10 @@ describe('TaskFiltersCloudComponent', () => {
|
|||||||
|
|
||||||
setupTestBed({
|
setupTestBed({
|
||||||
imports: [ProcessServiceCloudTestingModule, TaskFiltersCloudModule],
|
imports: [ProcessServiceCloudTestingModule, TaskFiltersCloudModule],
|
||||||
providers: [TaskFilterCloudService, UserPreferenceCloudService]
|
providers: [
|
||||||
|
TaskFilterCloudService,
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
|
||||||
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@@ -63,6 +68,14 @@ describe('TaskFiltersCloudComponent', () => {
|
|||||||
taskFilterService = TestBed.get(TaskFilterCloudService);
|
taskFilterService = TestBed.get(TaskFilterCloudService);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should create TaskFiltersCloudComponent instance', () => {
|
||||||
|
expect(component instanceof TaskFiltersCloudComponent).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to use LocalPreferenceCloudService', () => {
|
||||||
|
expect(taskFilterService.preferenceService instanceof LocalPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
it('should attach specific icon for each filter if hasIcon is true', async(() => {
|
it('should attach specific icon for each filter if hasIcon is true', async(() => {
|
||||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable);
|
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable);
|
||||||
const change = new SimpleChange(undefined, 'my-app-1', true);
|
const change = new SimpleChange(undefined, 'my-app-1', true);
|
||||||
@@ -329,3 +342,33 @@ describe('TaskFiltersCloudComponent', () => {
|
|||||||
expect(component.getCurrentFilter()).toBe(fakeGlobalFilter[0]);
|
expect(component.getCurrentFilter()).toBe(fakeGlobalFilter[0]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Set UserPreferenceService', () => {
|
||||||
|
|
||||||
|
let component: TaskFiltersCloudComponent;
|
||||||
|
let taskFilterService: TaskFilterCloudService;
|
||||||
|
let fixture: ComponentFixture<TaskFiltersCloudComponent>;
|
||||||
|
|
||||||
|
setupTestBed({
|
||||||
|
imports: [ProcessServiceCloudTestingModule, TaskFiltersCloudModule],
|
||||||
|
providers: [
|
||||||
|
TaskFilterCloudService,
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(TaskFiltersCloudComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
|
||||||
|
taskFilterService = TestBed.get(TaskFilterCloudService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create TaskFiltersCloudComponent instance', () => {
|
||||||
|
expect(component instanceof TaskFiltersCloudComponent).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to inject UserPreferenceCloudService when you override with user preferece service', () => {
|
||||||
|
expect(taskFilterService.preferenceService instanceof UserPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
@@ -17,8 +17,9 @@
|
|||||||
import { async, TestBed } from '@angular/core/testing';
|
import { async, TestBed } from '@angular/core/testing';
|
||||||
import { setupTestBed, CoreModule, IdentityUserService } from '@alfresco/adf-core';
|
import { setupTestBed, CoreModule, IdentityUserService } from '@alfresco/adf-core';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
|
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service';
|
||||||
import { TaskFilterCloudService } from './task-filter-cloud.service';
|
import { TaskFilterCloudService } from './task-filter-cloud.service';
|
||||||
import { UserPreferenceCloudService } from '../../../services/user-preference.cloud.service';
|
|
||||||
import {
|
import {
|
||||||
fakeTaskCloudPreferenceList,
|
fakeTaskCloudPreferenceList,
|
||||||
fakeTaskCloudFilters,
|
fakeTaskCloudFilters,
|
||||||
@@ -26,10 +27,12 @@ import {
|
|||||||
fakePreferenceWithNoTaskFilterPreference,
|
fakePreferenceWithNoTaskFilterPreference,
|
||||||
fakeTaskFilter
|
fakeTaskFilter
|
||||||
} from '../mock/task-filters-cloud.mock';
|
} from '../mock/task-filters-cloud.mock';
|
||||||
|
import { UserPreferenceCloudService } from '../../../services/user-preference-cloud.service';
|
||||||
|
import { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';
|
||||||
|
|
||||||
describe('Task Filter Cloud Service', () => {
|
describe('TaskFilterCloudService', () => {
|
||||||
let service: TaskFilterCloudService;
|
let service: TaskFilterCloudService;
|
||||||
let userPreferenceCloudService: UserPreferenceCloudService;
|
let preferenceCloudService: PreferenceCloudServiceInterface;
|
||||||
let identityUserService: IdentityUserService;
|
let identityUserService: IdentityUserService;
|
||||||
let getPreferencesSpy: jasmine.Spy;
|
let getPreferencesSpy: jasmine.Spy;
|
||||||
let getPreferenceByKeySpy: jasmine.Spy;
|
let getPreferenceByKeySpy: jasmine.Spy;
|
||||||
@@ -43,17 +46,22 @@ describe('Task Filter Cloud Service', () => {
|
|||||||
imports: [
|
imports: [
|
||||||
CoreModule.forRoot()
|
CoreModule.forRoot()
|
||||||
],
|
],
|
||||||
providers: [TaskFilterCloudService, UserPreferenceCloudService, IdentityUserService]
|
providers: [
|
||||||
|
TaskFilterCloudService,
|
||||||
|
LocalPreferenceCloudService,
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
|
||||||
|
IdentityUserService
|
||||||
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(async(() => {
|
beforeEach(async(() => {
|
||||||
service = TestBed.get(TaskFilterCloudService);
|
service = TestBed.get(TaskFilterCloudService);
|
||||||
userPreferenceCloudService = TestBed.get(UserPreferenceCloudService);
|
preferenceCloudService = service.preferenceService;
|
||||||
identityUserService = TestBed.get(IdentityUserService);
|
identityUserService = TestBed.get(IdentityUserService);
|
||||||
createPreferenceSpy = spyOn(userPreferenceCloudService, 'createPreference').and.returnValue(of(fakeTaskCloudFilters));
|
createPreferenceSpy = spyOn(preferenceCloudService, 'createPreference').and.returnValue(of(fakeTaskCloudFilters));
|
||||||
updatePreferenceSpy = spyOn(userPreferenceCloudService, 'updatePreference').and.returnValue(of(fakeTaskCloudFilters));
|
updatePreferenceSpy = spyOn(preferenceCloudService, 'updatePreference').and.returnValue(of(fakeTaskCloudFilters));
|
||||||
getPreferencesSpy = spyOn(userPreferenceCloudService, 'getPreferences').and.returnValue(of(fakeTaskCloudPreferenceList));
|
getPreferencesSpy = spyOn(preferenceCloudService, 'getPreferences').and.returnValue(of(fakeTaskCloudPreferenceList));
|
||||||
getPreferenceByKeySpy = spyOn(userPreferenceCloudService, 'getPreferenceByKey').and.returnValue(of(fakeTaskCloudFilters));
|
getPreferenceByKeySpy = spyOn(preferenceCloudService, 'getPreferenceByKey').and.returnValue(of(fakeTaskCloudFilters));
|
||||||
getCurrentUserInfoSpy = spyOn(identityUserService, 'getCurrentUserInfo').and.returnValue(identityUserMock);
|
getCurrentUserInfoSpy = spyOn(identityUserService, 'getCurrentUserInfo').and.returnValue(identityUserMock);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -61,6 +69,10 @@ describe('Task Filter Cloud Service', () => {
|
|||||||
expect(service).toBeDefined();
|
expect(service).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should be able to use LocalPreferenceCloudService', () => {
|
||||||
|
expect(preferenceCloudService instanceof LocalPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
it('should create task filter key by using appName and the username', (done) => {
|
it('should create task filter key by using appName and the username', (done) => {
|
||||||
service.getTaskListFilters('fakeAppName').subscribe((res: any) => {
|
service.getTaskListFilters('fakeAppName').subscribe((res: any) => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
@@ -208,3 +220,38 @@ describe('Task Filter Cloud Service', () => {
|
|||||||
expect(updatePreferenceSpy).toHaveBeenCalled();
|
expect(updatePreferenceSpy).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Inject [UserPreferenceCloudService] into the TaskFilterCloudService', () => {
|
||||||
|
let service: TaskFilterCloudService;
|
||||||
|
let preferenceCloudService: PreferenceCloudServiceInterface;
|
||||||
|
let identityUserService: IdentityUserService;
|
||||||
|
|
||||||
|
const identityUserMock = { username: 'fakeusername', firstName: 'fake-identity-first-name', lastName: 'fake-identity-last-name', email: 'fakeIdentity@email.com' };
|
||||||
|
|
||||||
|
setupTestBed({
|
||||||
|
imports: [
|
||||||
|
CoreModule.forRoot()
|
||||||
|
],
|
||||||
|
providers: [
|
||||||
|
TaskFilterCloudService,
|
||||||
|
LocalPreferenceCloudService,
|
||||||
|
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: UserPreferenceCloudService },
|
||||||
|
IdentityUserService
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
service = TestBed.get(TaskFilterCloudService);
|
||||||
|
preferenceCloudService = service.preferenceService;
|
||||||
|
identityUserService = TestBed.get(IdentityUserService);
|
||||||
|
spyOn(identityUserService, 'getCurrentUserInfo').and.returnValue(identityUserMock);
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should create TaskFilterCloudService instance', () => {
|
||||||
|
expect(service).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be able to inject UserPreferenceCloudService when you override with user preferece service', () => {
|
||||||
|
expect(preferenceCloudService instanceof UserPreferenceCloudService).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
@@ -16,20 +16,23 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { IdentityUserService, IdentityUserModel } from '@alfresco/adf-core';
|
import { IdentityUserService, IdentityUserModel } from '@alfresco/adf-core';
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable, Inject } from '@angular/core';
|
||||||
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
import { Observable, of, BehaviorSubject, throwError } from 'rxjs';
|
||||||
import { TaskFilterCloudModel } from '../models/filter-cloud.model';
|
import { TaskFilterCloudModel } from '../models/filter-cloud.model';
|
||||||
import { UserPreferenceCloudService } from '../../../services/public-api';
|
|
||||||
import { switchMap, map, catchError } from 'rxjs/operators';
|
import { switchMap, map, catchError } from 'rxjs/operators';
|
||||||
|
import { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';
|
||||||
|
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TaskFilterCloudService {
|
export class TaskFilterCloudService {
|
||||||
|
|
||||||
private filtersSubject: BehaviorSubject<TaskFilterCloudModel[]>;
|
private filtersSubject: BehaviorSubject<TaskFilterCloudModel[]>;
|
||||||
filters$: Observable<TaskFilterCloudModel[]>;
|
filters$: Observable<TaskFilterCloudModel[]>;
|
||||||
|
|
||||||
constructor( private identityUserService: IdentityUserService,
|
constructor(
|
||||||
private preferenceService: UserPreferenceCloudService) {
|
private identityUserService: IdentityUserService,
|
||||||
|
@Inject(TASK_FILTERS_SERVICE_TOKEN)
|
||||||
|
public preferenceService: PreferenceCloudServiceInterface
|
||||||
|
) {
|
||||||
this.filtersSubject = new BehaviorSubject([]);
|
this.filtersSubject = new BehaviorSubject([]);
|
||||||
this.filters$ = this.filtersSubject.asObservable();
|
this.filters$ = this.filtersSubject.asObservable();
|
||||||
}
|
}
|
||||||
@@ -41,7 +44,7 @@ export class TaskFilterCloudService {
|
|||||||
*/
|
*/
|
||||||
private createDefaultFilters(appName: string) {
|
private createDefaultFilters(appName: string) {
|
||||||
const key: string = this.prepareKey(appName);
|
const key: string = this.prepareKey(appName);
|
||||||
this.preferenceService.getPreferences(appName).pipe(
|
this.preferenceService.getPreferences(appName, key).pipe(
|
||||||
switchMap((response: any) => {
|
switchMap((response: any) => {
|
||||||
const preferences = (response && response.list && response.list.entries) ? response.list.entries : [];
|
const preferences = (response && response.list && response.list.entries) ? response.list.entries : [];
|
||||||
if (!this.hasPreferences(preferences)) {
|
if (!this.hasPreferences(preferences)) {
|
||||||
@@ -116,7 +119,7 @@ export class TaskFilterCloudService {
|
|||||||
* @param id ID of the task
|
* @param id ID of the task
|
||||||
* @returns Details of the task filter
|
* @returns Details of the task filter
|
||||||
*/
|
*/
|
||||||
getTaskFilterById(appName: string, id: string): any {
|
getTaskFilterById(appName: string, id: string): Observable<TaskFilterCloudModel> {
|
||||||
const key: string = this.prepareKey(appName);
|
const key: string = this.prepareKey(appName);
|
||||||
return this.getTaskFiltersByKey(appName, key).pipe(
|
return this.getTaskFiltersByKey(appName, key).pipe(
|
||||||
switchMap((filters: TaskFilterCloudModel[]) => {
|
switchMap((filters: TaskFilterCloudModel[]) => {
|
||||||
@@ -140,7 +143,7 @@ export class TaskFilterCloudService {
|
|||||||
* @param filter The new filter to add
|
* @param filter The new filter to add
|
||||||
* @returns Observable of task instance filters with newly added filter
|
* @returns Observable of task instance filters with newly added filter
|
||||||
*/
|
*/
|
||||||
addFilter(newFilter: TaskFilterCloudModel) {
|
addFilter(newFilter: TaskFilterCloudModel): Observable<TaskFilterCloudModel[]> {
|
||||||
const key: string = this.prepareKey(newFilter.appName);
|
const key: string = this.prepareKey(newFilter.appName);
|
||||||
return this.getTaskFiltersByKey(newFilter.appName, key).pipe(
|
return this.getTaskFiltersByKey(newFilter.appName, key).pipe(
|
||||||
switchMap((filters: TaskFilterCloudModel[]) => {
|
switchMap((filters: TaskFilterCloudModel[]) => {
|
||||||
@@ -177,7 +180,7 @@ export class TaskFilterCloudService {
|
|||||||
} else {
|
} else {
|
||||||
const itemIndex = filters.findIndex((filter: TaskFilterCloudModel) => filter.id === updatedFilter.id);
|
const itemIndex = filters.findIndex((filter: TaskFilterCloudModel) => filter.id === updatedFilter.id);
|
||||||
filters[itemIndex] = updatedFilter;
|
filters[itemIndex] = updatedFilter;
|
||||||
return this.updateProcessFilters(updatedFilter.appName, key, filters);
|
return this.updateTaskFilters(updatedFilter.appName, key, filters);
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
map((updatedFilters: TaskFilterCloudModel[]) => {
|
map((updatedFilters: TaskFilterCloudModel[]) => {
|
||||||
@@ -199,7 +202,7 @@ export class TaskFilterCloudService {
|
|||||||
switchMap((filters: any) => {
|
switchMap((filters: any) => {
|
||||||
if (filters && filters.length > 0) {
|
if (filters && filters.length > 0) {
|
||||||
filters = filters.filter((filter: TaskFilterCloudModel) => filter.id !== deletedFilter.id);
|
filters = filters.filter((filter: TaskFilterCloudModel) => filter.id !== deletedFilter.id);
|
||||||
return this.updateProcessFilters(deletedFilter.appName, key, filters);
|
return this.updateTaskFilters(deletedFilter.appName, key, filters);
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
map((filters: TaskFilterCloudModel[]) => {
|
map((filters: TaskFilterCloudModel[]) => {
|
||||||
@@ -217,7 +220,7 @@ export class TaskFilterCloudService {
|
|||||||
* @param filters Details of update filter
|
* @param filters Details of update filter
|
||||||
* @returns Observable of updated task filters
|
* @returns Observable of updated task filters
|
||||||
*/
|
*/
|
||||||
private updateProcessFilters(appName: string, key: string, filters: TaskFilterCloudModel[]): Observable<TaskFilterCloudModel[]> {
|
private updateTaskFilters(appName: string, key: string, filters: TaskFilterCloudModel[]): Observable<TaskFilterCloudModel[]> {
|
||||||
return this.preferenceService.updatePreference(appName, key, filters);
|
return this.preferenceService.updatePreference(appName, key, filters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user