Skip to content

Commit

Permalink
improved service registration
Browse files Browse the repository at this point in the history
  • Loading branch information
DenysVuika committed May 13, 2020
1 parent e425821 commit 94ffd6c
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 23 deletions.
Expand Up @@ -16,13 +16,16 @@
*/

import { Component, OnDestroy, OnInit } from '@angular/core';
import { FormFieldModel, NotificationService, CoreAutomationService, FormModel } from '@alfresco/adf-core';
import { FormCloudService } from '@alfresco/adf-process-services-cloud';
import { FormFieldModel, NotificationService, CoreAutomationService, FormModel, FormRenderingService } from '@alfresco/adf-core';
import { FormCloudService, CloudFormRenderingService } from '@alfresco/adf-process-services-cloud';
import { Subscription } from 'rxjs';

@Component({
templateUrl: 'cloud-form-demo.component.html',
styleUrls: ['cloud-form-demo.component.scss']
styleUrls: ['cloud-form-demo.component.scss'],
providers: [
{ provide: FormRenderingService, useClass: CloudFormRenderingService }
]
})
export class FormCloudDemoComponent implements OnInit, OnDestroy {

Expand Down
6 changes: 4 additions & 2 deletions demo-shell/src/app/components/form/form.component.ts
Expand Up @@ -16,7 +16,8 @@
*/

import { Component, Inject, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
import { FormModel, FormFieldModel, FormService, FormOutcomeEvent, NotificationService, CoreAutomationService } from '@alfresco/adf-core';
import { FormModel, FormFieldModel, FormService, FormOutcomeEvent, NotificationService, CoreAutomationService, FormRenderingService } from '@alfresco/adf-core';
import { ProcessFormRenderingService } from '@alfresco/adf-process-services';
import { InMemoryFormService } from '../../services/in-memory-form.service';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
Expand All @@ -26,7 +27,8 @@ import { takeUntil } from 'rxjs/operators';
templateUrl: 'form.component.html',
styleUrls: ['form.component.scss'],
providers: [
{ provide: FormService, useClass: InMemoryFormService }
{ provide: FormService, useClass: InMemoryFormService },
{ provide: FormRenderingService, useClass: ProcessFormRenderingService }
],
encapsulation: ViewEncapsulation.None
})
Expand Down
11 changes: 11 additions & 0 deletions lib/core/services/dynamic-component-mapper.service.ts
Expand Up @@ -67,6 +67,17 @@ export abstract class DynamicComponentMapper {
this.types[type] = resolver;
}

/**
* Register multiple components
*/
register(components: { [key: string]: DynamicComponentResolveFunction }, override: boolean = false) {
if (components) {
for (const type of Object.keys(components)) {
this.setComponentTypeResolver(type, components[type], override);
}
}
}

/**
* Finds the component type that is needed to render a form field.
* @param model Form field model for the field to render
Expand Down
Expand Up @@ -29,10 +29,13 @@ import { GroupCloudWidgetComponent } from './widgets/group/group-cloud.widget';
export class CloudFormRenderingService extends FormRenderingService {
constructor() {
super();
this.setComponentTypeResolver('upload', () => AttachFileCloudWidgetComponent, true);
this.setComponentTypeResolver('dropdown', () => DropdownCloudWidgetComponent, true);
this.setComponentTypeResolver('date', () => DateCloudWidgetComponent, true);
this.setComponentTypeResolver('people', () => PeopleCloudWidgetComponent, true);
this.setComponentTypeResolver('functional-group', () => GroupCloudWidgetComponent, true);

this.register({
'upload': () => AttachFileCloudWidgetComponent,
'dropdown': () => DropdownCloudWidgetComponent,
'date': () => DateCloudWidgetComponent,
'people': () => PeopleCloudWidgetComponent,
'functional-group': () => GroupCloudWidgetComponent
}, true);
}
}
7 changes: 2 additions & 5 deletions lib/process-services-cloud/src/lib/form/form-cloud.module.ts
Expand Up @@ -18,7 +18,7 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { TemplateModule, FormBaseModule, PipeModule, CoreModule, FormRenderingService } from '@alfresco/adf-core';
import { TemplateModule, FormBaseModule, PipeModule, CoreModule } from '@alfresco/adf-core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MaterialModule } from '../material.module';
import { FormCloudComponent } from './components/form-cloud.component';
Expand All @@ -36,7 +36,6 @@ import { AttachFileCloudWidgetComponent } from './components/widgets/attach-file
import { UploadCloudWidgetComponent } from './components/widgets/attach-file/upload-cloud.widget';
import { PeopleCloudModule } from '../people/people-cloud.module';
import { GroupCloudModule } from '../group/group-cloud.module';
import { CloudFormRenderingService } from './components/cloud-form-rendering.service';

@NgModule({
imports: [
Expand Down Expand Up @@ -65,9 +64,7 @@ import { CloudFormRenderingService } from './components/cloud-form-rendering.ser
GroupCloudWidgetComponent
],
providers: [
FormDefinitionSelectorCloudService,
FormRenderingService,
{ provide: FormRenderingService, useClass: CloudFormRenderingService }
FormDefinitionSelectorCloudService
],
entryComponents: [
UploadCloudWidgetComponent,
Expand Down
Expand Up @@ -16,7 +16,7 @@
*/

import { NgModule } from '@angular/core';
import { TRANSLATION_PROVIDER, CoreModule } from '@alfresco/adf-core';
import { TRANSLATION_PROVIDER, CoreModule, FormRenderingService } from '@alfresco/adf-core';
import { AppListCloudModule } from './app/app-list-cloud.module';
import { TaskCloudModule } from './task/task-cloud.module';
import { ProcessCloudModule } from './process/process-cloud.module';
Expand All @@ -30,6 +30,7 @@ import {
TASK_FILTERS_SERVICE_TOKEN
} from './services/public-api';
import { PeopleCloudModule } from './people/people-cloud.module';
import { CloudFormRenderingService } from './form/components/cloud-form-rendering.service';

@NgModule({
imports: [
Expand All @@ -54,7 +55,9 @@ import { PeopleCloudModule } from './people/people-cloud.module';
UserPreferenceCloudService,
LocalPreferenceCloudService,
{ provide: PROCESS_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService },
FormRenderingService,
{ provide: FormRenderingService, useClass: CloudFormRenderingService }
],
exports: [
AppListCloudModule,
Expand Down
Expand Up @@ -26,7 +26,10 @@ import { AttachFolderWidgetComponent } from '../content-widget/attach-folder-wid
export class ProcessFormRenderingService extends FormRenderingService {
constructor() {
super();
this.setComponentTypeResolver('upload', () => AttachFileWidgetComponent, true);
this.setComponentTypeResolver('select-folder', () => AttachFolderWidgetComponent, true);

this.register({
'upload': () => AttachFileWidgetComponent,
'select-folder': () => AttachFolderWidgetComponent
}, true);
}
}
8 changes: 4 additions & 4 deletions lib/process-services/src/lib/process.module.ts
Expand Up @@ -54,9 +54,7 @@ import { ProcessFormRenderingService } from './form/process-form-rendering.servi
name: 'adf-process-services',
source: 'assets/adf-process-services'
}
},
FormRenderingService,
{ provide: FormRenderingService, useClass: ProcessFormRenderingService }
}
],
exports: [
CommonModule,
Expand All @@ -83,7 +81,9 @@ export class ProcessModule {
name: 'adf-process-services',
source: 'assets/adf-process-services'
}
}
},
FormRenderingService,
{ provide: FormRenderingService, useClass: ProcessFormRenderingService }
]
};
}
Expand Down

0 comments on commit 94ffd6c

Please sign in to comment.