fixes and adjustments

This commit is contained in:
Giuseppe Digilio
2018-05-09 19:23:09 +02:00
parent 7a32d18b1b
commit a114650564
20 changed files with 49 additions and 25 deletions

View File

@@ -8,6 +8,7 @@ import { CommonModule } from '@angular/common';
import { StoreModule } from '@ngrx/store'; import { StoreModule } from '@ngrx/store';
import { EffectsModule } from '@ngrx/effects'; import { EffectsModule } from '@ngrx/effects';
import { DynamicFormLayoutService, DynamicFormService, DynamicFormValidationService } from '@ng-dynamic-forms/core';
import { coreEffects } from './core.effects'; import { coreEffects } from './core.effects';
import { coreReducers } from './core.reducers'; import { coreReducers } from './core.reducers';
@@ -21,6 +22,8 @@ import { DebugResponseParsingService } from './data/debug-response-parsing.servi
import { DSOResponseParsingService } from './data/dso-response-parsing.service'; import { DSOResponseParsingService } from './data/dso-response-parsing.service';
import { SearchResponseParsingService } from './data/search-response-parsing.service'; import { SearchResponseParsingService } from './data/search-response-parsing.service';
import { DSpaceRESTv2Service } from './dspace-rest-v2/dspace-rest-v2.service'; import { DSpaceRESTv2Service } from './dspace-rest-v2/dspace-rest-v2.service';
import { FormBuilderService } from '../shared/form/builder/form-builder.service';
import { FormService } from '../shared/form/form.service';
import { HostWindowService } from '../shared/host-window.service'; import { HostWindowService } from '../shared/host-window.service';
import { ItemDataService } from './data/item-data.service'; import { ItemDataService } from './data/item-data.service';
import { MetadataService } from './metadata/metadata.service'; import { MetadataService } from './metadata/metadata.service';
@@ -39,6 +42,8 @@ import { RouteService } from '../shared/route.service';
import { SubmissionDefinitionsConfigService } from './config/submission-definitions-config.service'; import { SubmissionDefinitionsConfigService } from './config/submission-definitions-config.service';
import { SubmissionFormsConfigService } from './config/submission-forms-config.service'; import { SubmissionFormsConfigService } from './config/submission-forms-config.service';
import { SubmissionSectionsConfigService } from './config/submission-sections-config.service'; import { SubmissionSectionsConfigService } from './config/submission-sections-config.service';
import { AuthorityService } from './integration/authority.service';
import { IntegrationResponseParsingService } from './integration/integration-response-parsing.service';
import { UUIDService } from './shared/uuid.service'; import { UUIDService } from './shared/uuid.service';
import { HALEndpointService } from './shared/hal-endpoint.service'; import { HALEndpointService } from './shared/hal-endpoint.service';
import { FacetValueResponseParsingService } from './data/facet-value-response-parsing.service'; import { FacetValueResponseParsingService } from './data/facet-value-response-parsing.service';
@@ -66,6 +71,11 @@ const PROVIDERS = [
CollectionDataService, CollectionDataService,
DSOResponseParsingService, DSOResponseParsingService,
DSpaceRESTv2Service, DSpaceRESTv2Service,
DynamicFormLayoutService,
DynamicFormService,
DynamicFormValidationService,
FormBuilderService,
FormService,
HALEndpointService, HALEndpointService,
HostWindowService, HostWindowService,
ItemDataService, ItemDataService,
@@ -89,6 +99,8 @@ const PROVIDERS = [
SubmissionDefinitionsConfigService, SubmissionDefinitionsConfigService,
SubmissionFormsConfigService, SubmissionFormsConfigService,
SubmissionSectionsConfigService, SubmissionSectionsConfigService,
AuthorityService,
IntegrationResponseParsingService,
UploaderService, UploaderService,
UUIDService, UUIDService,
{ provide: NativeWindowService, useFactory: NativeWindowFactory } { provide: NativeWindowService, useFactory: NativeWindowFactory }

View File

@@ -27,7 +27,7 @@ export class ConfigResponseParsingService extends BaseResponseParsingService imp
} }
parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse { parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
if (isNotEmpty(data.payload) && isNotEmpty(data.payload._links) && data.statusCode === '200') { if (isNotEmpty(data.payload) && isNotEmpty(data.payload._links) && (data.statusCode === '201' || data.statusCode === '200' || data.statusCode === 'OK')) {
const configDefinition = this.process<ConfigObject,ConfigType>(data.payload, request.href); const configDefinition = this.process<ConfigObject,ConfigType>(data.payload, request.href);
return new ConfigSuccessResponse(configDefinition[Object.keys(configDefinition)[0]], data.statusCode, this.processPageInfo(data.payload)); return new ConfigSuccessResponse(configDefinition[Object.keys(configDefinition)[0]], data.statusCode, this.processPageInfo(data.payload));
} else { } else {

View File

@@ -93,8 +93,10 @@
[ngClass]="getClass('element', 'control', checkboxModel)"> [ngClass]="getClass('element', 'control', checkboxModel)">
<input type="checkbox" ngbButton <input type="checkbox" ngbButton
[checked]="checkboxModel.checked" [checked]="checkboxModel.checked"
[id]="bindId && checkboxModel.id"
[dynamicId]="bindId && checkboxModel.id" [dynamicId]="bindId && checkboxModel.id"
[formControlName]="checkboxModel.id" [formControlName]="checkboxModel.id"
[indeterminate]="checkboxModel.indeterminate"
[name]="checkboxModel.name" [name]="checkboxModel.name"
[required]="checkboxModel.required" [required]="checkboxModel.required"
[tabindex]="checkboxModel.tabIndex" [tabindex]="checkboxModel.tabIndex"
@@ -165,14 +167,18 @@
<!-- INPUT ------------------------------------------------------------------------------------------------> <!-- INPUT ------------------------------------------------------------------------------------------------>
<div *ngSwitchCase="7" [class.input-group]="model.prefix || model.suffix"> <div *ngSwitchCase="7" [class.input-group]="model.prefix || model.suffix">
<div *ngIf="model.prefix" class="input-group-addon" [innerHTML]="model.prefix"></div> <div *ngIf="model.prefix" class="input-group-prepend">
<span class="input-group-text" [innerHTML]="model.prefix"></span>
</div>
<ng-container *ngTemplateOutlet="inputTemplate; <ng-container *ngTemplateOutlet="inputTemplate;
context:{bindId: bindId, model: model, showErrorMessages: showErrorMessages}"> context:{bindId: bindId, model: model, showErrorMessages: showErrorMessages}">
</ng-container> </ng-container>
<div *ngIf="model.suffix" class="input-group-addon" [innerHTML]="model.suffix"></div> <div *ngIf="model.suffix" class="input-group-append">
<span class="input-group-text" [innerHTML]="model.suffix"></span>
</div>
<datalist *ngIf="model.list" [id]="model.listId"> <datalist *ngIf="model.list" [id]="model.listId">
<option *ngFor="let option of model.list" [value]="option"> <option *ngFor="let option of model.list" [value]="option">
@@ -181,7 +187,7 @@
</div> </div>
<!-- RADIO GROUP ------------------------------------------------------------------------------------------> <!-- RADIO GROUP ------------------------------------------------------------------------------------------>
<div *ngSwitchCase="8" ngbRadioGroup class="btn-group" role="radiogroup" <div *ngSwitchCase="8" ngbRadioGroup class="btn-group btn-group-toggle" role="radiogroup"
[dynamicId]="bindId && model.id" [dynamicId]="bindId && model.id"
[formControlName]="model.id" [formControlName]="model.id"
[ngClass]="getClass('element', 'control')" [ngClass]="getClass('element', 'control')"
@@ -191,19 +197,19 @@
<legend *ngIf="model.legend" [innerHTML]="model.legend"></legend> <legend *ngIf="model.legend" [innerHTML]="model.legend"></legend>
<label *ngFor="let option of model.options$ | async" ngbButtonLabel <label *ngFor="let option of model.options$ | async" ngbButtonLabel
[ngClass]="[getClass('element', 'option'), getClass('grid', 'option')]"> [ngClass]="[getClass('element', 'option'), getClass('grid', 'option')]">
<input type="radio" ngbButton <input type="radio" ngbButton
[disabled]="option.disabled" [disabled]="option.disabled"
[name]="model.name" [name]="model.name"
[value]="option.value" [value]="option.value"
(blur)="onBlur($event)" (blur)="onBlur($event)"
(focus)="onFocus($event)"/><span [innerHTML]="option.label"></span> (focus)="onFocus($event)"/><span [innerHTML]="option.label"></span>
</label> </label>
</div> </div>
<!-- SELECT ----------------------------------------------------------------------------------------------->
<ng-container *ngSwitchCase="9"> <ng-container *ngSwitchCase="9">
<ng-container *ngTemplateOutlet="selectTemplate; <ng-container *ngTemplateOutlet="selectTemplate;
context:{bindId: bindId, model: model, showErrorMessages: showErrorMessages}"> context:{bindId: bindId, model: model, showErrorMessages: showErrorMessages}">

View File

@@ -34,8 +34,8 @@ import {
import { DYNAMIC_FORM_CONTROL_TYPE_TYPEAHEAD } from './models/typeahead/dynamic-typeahead.model'; import { DYNAMIC_FORM_CONTROL_TYPE_TYPEAHEAD } from './models/typeahead/dynamic-typeahead.model';
import { DYNAMIC_FORM_CONTROL_TYPE_SCROLLABLE_DROPDOWN } from './models/scrollable-dropdown/dynamic-scrollable-dropdown.model'; import { DYNAMIC_FORM_CONTROL_TYPE_SCROLLABLE_DROPDOWN } from './models/scrollable-dropdown/dynamic-scrollable-dropdown.model';
import { DYNAMIC_FORM_CONTROL_TYPE_TAG } from './models/tag/dynamic-tag.model'; import { DYNAMIC_FORM_CONTROL_TYPE_TAG } from './models/tag/dynamic-tag.model';
import { DYNAMIC_FORM_CONTROL_TYPE_RELATION } from './models/ds-dynamic-group/dynamic-group.model'; import { DYNAMIC_FORM_CONTROL_TYPE_RELATION } from './models/dynamic-group/dynamic-group.model';
import { DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER } from './models/ds-date-picker/ds-date-picker.model'; import { DYNAMIC_FORM_CONTROL_TYPE_DSDATEPICKER } from './models/date-picker/date-picker.model';
import { DYNAMIC_FORM_CONTROL_TYPE_LOOKUP } from './models/lookup/dynamic-lookup.model'; import { DYNAMIC_FORM_CONTROL_TYPE_LOOKUP } from './models/lookup/dynamic-lookup.model';
import { DynamicListCheckboxGroupModel } from './models/list/dynamic-list-checkbox-group.model'; import { DynamicListCheckboxGroupModel } from './models/list/dynamic-list-checkbox-group.model';
import { DynamicListRadioGroupModel } from './models/list/dynamic-list-radio-group.model'; import { DynamicListRadioGroupModel } from './models/list/dynamic-list-radio-group.model';

View File

@@ -1,13 +1,13 @@
import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core'; import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';
import { FormGroup } from '@angular/forms'; import { FormGroup } from '@angular/forms';
import { DynamicDsDatePickerModel } from './ds-date-picker.model'; import { DynamicDsDatePickerModel } from './date-picker.model';
export const DS_DATE_PICKER_SEPARATOR = '-'; export const DS_DATE_PICKER_SEPARATOR = '-';
@Component({ @Component({
selector: 'ds-date-picker', selector: 'ds-date-picker',
styleUrls: ['./ds-date-picker.component.scss'], styleUrls: ['./date-picker.component.scss'],
templateUrl: './ds-date-picker.component.html', templateUrl: './date-picker.component.html',
}) })
export class DsDatePickerComponent implements OnInit { export class DsDatePickerComponent implements OnInit {

View File

@@ -63,7 +63,6 @@ export class DsDynamicGroupComponent implements OnDestroy, OnInit {
} }
ngOnInit() { ngOnInit() {
console.log(this.model.hasErrorMessages);
const config = {rows: this.model.formConfiguration} as SubmissionFormsModel; const config = {rows: this.model.formConfiguration} as SubmissionFormsModel;
if (isNotEmpty(this.model.value)) { if (isNotEmpty(this.model.value)) {
this.formCollapsed = Observable.of(true); this.formCollapsed = Observable.of(true);

View File

@@ -12,12 +12,12 @@ import {
} from '@ng-dynamic-forms/core'; } from '@ng-dynamic-forms/core';
import { mergeWith } from 'lodash'; import { mergeWith } from 'lodash';
import { isEmpty, isNotEmpty, isNotNull, isNull } from '../../empty.util'; import { isEmpty, isNotEmpty, isNotNull, isNotUndefined, isNull } from '../../empty.util';
import { DynamicComboboxModel } from './ds-dynamic-form-ui/models/ds-dynamic-combobox.model'; import { DynamicComboboxModel } from './ds-dynamic-form-ui/models/ds-dynamic-combobox.model';
import { SubmissionFormsModel } from '../../../core/shared/config/config-submission-forms.model'; import { SubmissionFormsModel } from '../../../core/shared/config/config-submission-forms.model';
import { DynamicConcatModel } from './ds-dynamic-form-ui/models/ds-dynamic-concat.model'; import { DynamicConcatModel } from './ds-dynamic-form-ui/models/ds-dynamic-concat.model';
import { DynamicListCheckboxGroupModel } from './ds-dynamic-form-ui/models/list/dynamic-list-checkbox-group.model'; import { DynamicListCheckboxGroupModel } from './ds-dynamic-form-ui/models/list/dynamic-list-checkbox-group.model';
import { DynamicGroupModel } from './ds-dynamic-form-ui/models/ds-dynamic-group/dynamic-group.model'; import { DynamicGroupModel } from './ds-dynamic-form-ui/models/dynamic-group/dynamic-group.model';
import { DynamicTagModel } from './ds-dynamic-form-ui/models/tag/dynamic-tag.model'; import { DynamicTagModel } from './ds-dynamic-form-ui/models/tag/dynamic-tag.model';
import { DynamicListRadioGroupModel } from './ds-dynamic-form-ui/models/list/dynamic-list-radio-group.model'; import { DynamicListRadioGroupModel } from './ds-dynamic-form-ui/models/list/dynamic-list-radio-group.model';
import { RowParser } from './parsers/row-parser'; import { RowParser } from './parsers/row-parser';
@@ -135,7 +135,7 @@ export class FormBuilderService extends DynamicFormService {
controlId = controlModel.name; controlId = controlModel.name;
} }
const controlValue = (controlModel as any).value || null; const controlValue = isNotUndefined((controlModel as any).value) ? (controlModel as any).value : null;
if (controlId && iterateResult.hasOwnProperty(controlId) && isNotNull(iterateResult[controlId])) { if (controlId && iterateResult.hasOwnProperty(controlId) && isNotNull(iterateResult[controlId])) {
iterateResult[controlId].push(controlValue); iterateResult[controlId].push(controlValue);
} else { } else {
@@ -151,7 +151,7 @@ export class FormBuilderService extends DynamicFormService {
return result; return result;
} }
modelFromConfiguration(json: string | SubmissionFormsModel, scopeUUID: string, initFormValues: any, submissionScope?: string, readOnly = false): DynamicFormControlModel[] | never { modelFromConfiguration(json: string | SubmissionFormsModel, scopeUUID: string, initFormValues: any = {}, submissionScope?: string, readOnly = false): DynamicFormControlModel[] | never {
let rows: DynamicFormControlModel[] = []; let rows: DynamicFormControlModel[] = [];
const rawData = typeof json === 'string' ? JSON.parse(json, JSONUtils.parseReviver) : json; const rawData = typeof json === 'string' ? JSON.parse(json, JSONUtils.parseReviver) : json;

View File

@@ -1,9 +1,9 @@
import { FieldParser } from './field-parser'; import { FieldParser } from './field-parser';
import { DynamicDatePickerModelConfig } from '@ng-dynamic-forms/core'; import { DynamicDatePickerModelConfig } from '@ng-dynamic-forms/core';
import { FormFieldModel } from '../models/form-field.model'; import { FormFieldModel } from '../models/form-field.model';
import { DynamicDsDatePickerModel } from '../ds-dynamic-form-ui/models/ds-date-picker/ds-date-picker.model'; import { DynamicDsDatePickerModel } from '../ds-dynamic-form-ui/models/date-picker/date-picker.model';
import { isNotEmpty } from '../../../empty.util'; import { isNotEmpty } from '../../../empty.util';
import { DS_DATE_PICKER_SEPARATOR } from '../ds-dynamic-form-ui/models/ds-date-picker/ds-date-picker.component'; import { DS_DATE_PICKER_SEPARATOR } from '../ds-dynamic-form-ui/models/date-picker/date-picker.component';
export class DateFieldParser extends FieldParser { export class DateFieldParser extends FieldParser {

View File

@@ -4,7 +4,7 @@ import { FormFieldModel } from '../models/form-field.model';
import { import {
DynamicGroupModel, DynamicGroupModel,
DynamicGroupModelConfig, PLACEHOLDER_PARENT_METADATA DynamicGroupModelConfig, PLACEHOLDER_PARENT_METADATA
} from '../ds-dynamic-form-ui/models/ds-dynamic-group/dynamic-group.model'; } from '../ds-dynamic-form-ui/models/dynamic-group/dynamic-group.model';
import { isNotEmpty } from '../../../empty.util'; import { isNotEmpty } from '../../../empty.util';
import { FormRowModel } from '../../../../core/shared/config/config-submission-forms.model'; import { FormRowModel } from '../../../../core/shared/config/config-submission-forms.model';

View File

@@ -11,7 +11,7 @@ import { TagFieldParser } from './tag-field-parser';
import { TextareaFieldParser } from './textarea-field-parser'; import { TextareaFieldParser } from './textarea-field-parser';
import { GroupFieldParser } from './group-field-parser'; import { GroupFieldParser } from './group-field-parser';
import { IntegrationSearchOptions } from '../../../../core/integration/models/integration-options.model'; import { IntegrationSearchOptions } from '../../../../core/integration/models/integration-options.model';
import { DynamicGroupModel } from '../ds-dynamic-form-ui/models/ds-dynamic-group/dynamic-group.model'; import { DynamicGroupModel } from '../ds-dynamic-form-ui/models/dynamic-group/dynamic-group.model';
import { DynamicRowGroupModel } from '../ds-dynamic-form-ui/models/ds-dynamic-row-group-model'; import { DynamicRowGroupModel } from '../ds-dynamic-form-ui/models/ds-dynamic-row-group-model';
import { isEmpty } from '../../../empty.util'; import { isEmpty } from '../../../empty.util';
import { LookupFieldParser } from './lookup-field-parser'; import { LookupFieldParser } from './lookup-field-parser';

View File

@@ -5,6 +5,7 @@
[formId]="formId" [formId]="formId"
[formGroup]="formGroup" [formGroup]="formGroup"
[formModel]="formModel" [formModel]="formModel"
[formLayout]="formLayout"
(dfBlur)="onBlur($event)" (dfBlur)="onBlur($event)"
(dfChange)="onChange($event)" (dfChange)="onChange($event)"
(dfFocus)="onFocus($event)"> (dfFocus)="onFocus($event)">

View File

@@ -5,7 +5,7 @@ import {
DynamicFormArrayModel, DynamicFormArrayModel,
DynamicFormControlEvent, DynamicFormControlEvent,
DynamicFormControlModel, DynamicFormControlModel,
DynamicFormGroupModel, DynamicFormGroupModel, DynamicFormLayout,
} from '@ng-dynamic-forms/core'; } from '@ng-dynamic-forms/core';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
@@ -49,6 +49,7 @@ export class FormComponent implements OnDestroy, OnInit {
@Input() formModel: DynamicFormControlModel[]; @Input() formModel: DynamicFormControlModel[];
@Input() parentFormModel: DynamicFormGroupModel | DynamicFormGroupModel[]; @Input() parentFormModel: DynamicFormGroupModel | DynamicFormGroupModel[];
@Input() formGroup: FormGroup; @Input() formGroup: FormGroup;
@Input() formLayout: DynamicFormLayout = null;
/* tslint:disable:no-output-rename */ /* tslint:disable:no-output-rename */
@Output('dfBlur') blur: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>(); @Output('dfBlur') blur: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>();
@@ -205,6 +206,7 @@ export class FormComponent implements OnDestroy, OnInit {
} }
onChange(event) { onChange(event) {
console.log(event, this.formGroup);
const action: FormChangeAction = new FormChangeAction(this.formId, this.formBuilderService.getValueFromModel(this.formModel)); const action: FormChangeAction = new FormChangeAction(this.formId, this.formBuilderService.getValueFromModel(this.formModel));
this.store.dispatch(action); this.store.dispatch(action);

View File

@@ -61,10 +61,10 @@ import { UploaderComponent } from './uploader/uploader.component';
import { ChipsComponent } from './chips/chips.component'; import { ChipsComponent } from './chips/chips.component';
import { DsDynamicTagComponent } from './form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component'; import { DsDynamicTagComponent } from './form/builder/ds-dynamic-form-ui/models/tag/dynamic-tag.component';
import { DsDynamicListComponent } from './form/builder/ds-dynamic-form-ui/models/list/dynamic-list.component'; import { DsDynamicListComponent } from './form/builder/ds-dynamic-form-ui/models/list/dynamic-list.component';
import { DsDynamicGroupComponent } from './form/builder/ds-dynamic-form-ui/models/ds-dynamic-group/dynamic-group.components'; import { DsDynamicGroupComponent } from './form/builder/ds-dynamic-form-ui/models/dynamic-group/dynamic-group.components';
import { SortablejsModule } from 'angular-sortablejs'; import { SortablejsModule } from 'angular-sortablejs';
import { NumberPickerComponent } from './number-picker/number-picker.component'; import { NumberPickerComponent } from './number-picker/number-picker.component';
import { DsDatePickerComponent } from './form/builder/ds-dynamic-form-ui/models/ds-date-picker/ds-date-picker.component'; import { DsDatePickerComponent } from './form/builder/ds-dynamic-form-ui/models/date-picker/date-picker.component';
import { DsDynamicLookupComponent } from './form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component'; import { DsDynamicLookupComponent } from './form/builder/ds-dynamic-form-ui/models/lookup/dynamic-lookup.component';
const MODULES = [ const MODULES = [

View File

@@ -17,6 +17,10 @@ module.exports = {
whitelist: [ whitelist: [
/@angular/, /@angular/,
/@ng/, /@ng/,
/angular2-text-mask/,
/ng2-file-upload/,
/angular-sortablejs/,
/sortablejs/,
/ngx/] /ngx/]
})], })],
} }