Browse Source

Fix tabs, fix imports, changed step to isEditing, and removed the class that was causing the weird styling

pull/328/head
Alexander Van Dyke 7 years ago
parent
commit
365ee46e77
  1. 12
      src/Squidex/app/features/schemas/pages/schema/field-wizard.component.html
  2. 232
      src/Squidex/app/features/schemas/pages/schema/field-wizard.component.ts

12
src/Squidex/app/features/schemas/pages/schema/field-wizard.component.html

@ -5,12 +5,12 @@
</ng-container> </ng-container>
<ng-template #noParent> <ng-template #noParent>
{{step === 1 ? 'Add' : 'Edit'}} Field {{isEditing ? 'Edit' : 'Add'}} Field
</ng-template> </ng-template>
</ng-container> </ng-container>
<ng-container content> <ng-container content>
<ng-container *ngIf="step === 1"> <ng-container *ngIf="!isEditing; else notEditing">
<form [formGroup]="addFieldForm.form" (ngSubmit)="addField(false)"> <form [formGroup]="addFieldForm.form" (ngSubmit)="addField(false)">
<sqx-form-error [error]="addFieldForm.error | async"></sqx-form-error> <sqx-form-error [error]="addFieldForm.error | async"></sqx-form-error>
@ -60,7 +60,7 @@
</form> </form>
</ng-container> </ng-container>
<div class="table-items-row-details" *ngIf="step === 2"> <ng-template #notEditing>
<form [formGroup]="editForm.form" (ngSubmit)="save()"> <form [formGroup]="editForm.form" (ngSubmit)="save()">
<div class="table-items-row-details-tabs clearfix"> <div class="table-items-row-details-tabs clearfix">
<ul class="nav nav-tabs2"> <ul class="nav nav-tabs2">
@ -91,19 +91,19 @@
</div> </div>
</ng-container> </ng-container>
</form> </form>
</div> </ng-template>
</ng-container> </ng-container>
<ng-container footer> <ng-container footer>
<button type="reset" class="float-left btn btn-secondary" (click)="complete()">Cancel</button> <button type="reset" class="float-left btn btn-secondary" (click)="complete()">Cancel</button>
<div class="float-right" *ngIf="step === 1"> <div class="float-right" *ngIf="!isEditing">
<button class="btn btn-success mr-1" (click)="addField(false, false)">Create and close</button> <button class="btn btn-success mr-1" (click)="addField(false, false)">Create and close</button>
<button class="btn btn-success mr-1" (click)="addField(true, false)">Create and new field</button> <button class="btn btn-success mr-1" (click)="addField(true, false)">Create and new field</button>
<button class="btn btn-success" (click)="addField(false, true)">Create and edit field</button> <button class="btn btn-success" (click)="addField(false, true)">Create and edit field</button>
</div> </div>
<div class="float-right" *ngIf="step === 2"> <div class="float-right" *ngIf="isEditing">
<button class="btn btn-success mr-1" (click)="save(true)">Save and add field</button> <button class="btn btn-success mr-1" (click)="save(true)">Save and add field</button>
<button (click)="save()" class="btn btn-primary ml-1">Save and close</button> <button (click)="save()" class="btn btn-primary ml-1">Save and close</button>
</div> </div>

232
src/Squidex/app/features/schemas/pages/schema/field-wizard.component.ts

@ -5,142 +5,132 @@
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved. * Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved.
*/ */
import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
import { FormBuilder } from '@angular/forms';
import { onErrorResumeNext } from 'rxjs/operators';
import { import {
Component, AddFieldForm,
ElementRef, AppPatternDto,
EventEmitter, createProperties,
Input, EditFieldForm,
OnInit, FieldDto,
Output, fieldTypes,
ViewChild ImmutableArray,
} from "@angular/core"; PatternsState,
import { FormBuilder } from "@angular/forms"; RootFieldDto,
import { SchemaDetailsDto,
AddFieldForm, SchemasState,
AppPatternDto, Types,
createProperties, UpdateFieldDto
EditFieldForm, } from '@app/shared';
FieldDto,
fieldTypes,
ImmutableArray,
PatternsState,
RootFieldDto,
SchemaDetailsDto,
SchemasState,
Types,
UpdateFieldDto
} from "@app/shared";
import { onErrorResumeNext } from "rxjs/operators";
@Component({ @Component({
selector: "sqx-field-wizard", selector: 'sqx-field-wizard',
styleUrls: ["./field-wizard.component.scss"], styleUrls: ['./field-wizard.component.scss'],
templateUrl: "./field-wizard.component.html" templateUrl: './field-wizard.component.html'
}) })
export class FieldWizardComponent implements OnInit { export class FieldWizardComponent implements OnInit {
@ViewChild("nameInput") @ViewChild('nameInput')
public nameInput: ElementRef; public nameInput: ElementRef;
@Input() @Input()
public schema: SchemaDetailsDto; public schema: SchemaDetailsDto;
@Input() @Input()
public parent: RootFieldDto; public parent: RootFieldDto;
@Output() @Output()
public completed = new EventEmitter(); public completed = new EventEmitter();
public fieldTypes = fieldTypes; public fieldTypes = fieldTypes;
public addFieldForm = new AddFieldForm(this.formBuilder); public addFieldForm = new AddFieldForm(this.formBuilder);
public editForm = new EditFieldForm(this.formBuilder); public editForm = new EditFieldForm(this.formBuilder);
public field: FieldDto; public field: FieldDto;
public isEditing = false; public isEditing = false;
public selectedTab = 0; public selectedTab = 0;
public patterns: ImmutableArray<AppPatternDto>; public patterns: ImmutableArray<AppPatternDto>;
public step = 1; constructor(
private readonly formBuilder: FormBuilder,
private readonly schemasState: SchemasState,
public readonly patternsState: PatternsState
) {}
constructor( public ngOnInit() {
private readonly formBuilder: FormBuilder, if (this.parent) {
private readonly schemasState: SchemasState, this.fieldTypes = this.fieldTypes.filter(x => x.type !== 'Array');
public readonly patternsState: PatternsState }
) {} this.patternsState
.load()
.pipe(onErrorResumeNext())
.subscribe();
}
public ngOnInit() { public complete() {
if (this.parent) { this.completed.emit();
this.fieldTypes = this.fieldTypes.filter(x => x.type !== "Array");
} }
this.patternsState
.load() public addField(next: boolean, edit: boolean) {
.pipe(onErrorResumeNext()) const value = this.addFieldForm.submit();
.subscribe();
} if (value) {
this.schemasState.addField(this.schema, value, this.parent).subscribe(
public complete() { dto => {
this.completed.emit(); this.field = dto;
} this.addFieldForm.submitCompleted({ type: fieldTypes[0].type });
public addField(next: boolean, edit: boolean) { if (next) {
const value = this.addFieldForm.submit(); if (Types.isFunction(this.nameInput.nativeElement.focus)) {
this.nameInput.nativeElement.focus();
if (value) { }
this.schemasState.addField(this.schema, value, this.parent).subscribe( } else if (edit) {
dto => { this.selectTab(0);
this.field = dto; this.isEditing = true;
this.addFieldForm.submitCompleted({ type: fieldTypes[0].type }); } else {
this.complete();
if (next) { }
if (Types.isFunction(this.nameInput.nativeElement.focus)) { },
this.nameInput.nativeElement.focus(); error => {
} this.addFieldForm.submitFailed(error);
} else if (edit) { }
this.selectTab(0); );
this.step++;
} else {
this.complete();
}
},
error => {
this.addFieldForm.submitFailed(error);
} }
);
} }
}
public selectTab(tab: number) {
public selectTab(tab: number) { this.selectedTab = tab;
this.selectedTab = tab; }
}
public save(addNew: boolean) {
public save(addNew: boolean) { const value = this.editForm.submit();
const value = this.editForm.submit();
if (value) {
if (value) { const properties = createProperties(
const properties = createProperties( this.field.properties['fieldType'],
this.field.properties["fieldType"], value
value );
);
this.schemasState
this.schemasState .updateField(
.updateField( this.schema,
this.schema, this.field as RootFieldDto,
this.field as RootFieldDto, new UpdateFieldDto(properties)
new UpdateFieldDto(properties) )
) .subscribe(
.subscribe( () => {
() => { this.editForm.submitCompleted();
this.isEditing = false; if (addNew) {
this.editForm.submitCompleted(); this.isEditing = false;
if (addNew) { } else {
this.step--; this.complete();
} else { }
this.complete(); },
} error => {
}, this.editForm.submitFailed(error);
error => { }
this.editForm.submitFailed(error); );
} }
);
} }
}
} }

Loading…
Cancel
Save