Skip to content
Snippets Groups Projects
Commit 57ad5bfe authored by Florent Poittevin's avatar Florent Poittevin
Browse files

Use same component for create, edit and detail a resource

parent 77a483ae
No related branches found
No related tags found
1 merge request!10Fpo/crud deposit
Showing
with 44 additions and 127 deletions
<div>
<label>{{'deposit.title' | translate}}</label>
<span class="separator">:</span>
<span class="value">{{model.title}}</span>
</div>
<div>
<label>{{'deposit.description' | translate}}</label>
<span class="separator">:</span>
<span class="value">{{model.description}}</span>
</div>
import { async, ComponentFixture, TestBed } from "@angular/core/testing";
import { DetailComponent } from "./detail.component";
describe("DetailComponent", () => {
let component: DetailComponent;
let fixture: ComponentFixture<DetailComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DetailComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it("should create", () => {
expect(component).toBeTruthy();
});
});
import {ChangeDetectionStrategy, Component, Input, OnInit} from "@angular/core";
import {DepositsModel} from "@app/generated-api";
@Component({
selector: "dlcm-detail-deposit",
templateUrl: "./detail.component.html",
styleUrls: ["./detail.component.scss"],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DetailComponent implements OnInit {
@Input()
model: DepositsModel;
constructor() {
}
ngOnInit() {
}
}
...@@ -86,5 +86,11 @@ ...@@ -86,5 +86,11 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<button mat-flat-button color="primary" type="submit" [disabled]="!createDepositForm.valid">{{'deposit.submit' | translate }}</button> <button *ngIf="!readonly"
mat-flat-button
color="primary"
type="submit"
[disabled]="!createDepositForm.valid">
{{'deposit.submit' | translate }}
</button>
</form> </form>
...@@ -29,6 +29,9 @@ export class FormComponent implements OnInit { ...@@ -29,6 +29,9 @@ export class FormComponent implements OnInit {
@Input() @Input()
model: DepositsModel; model: DepositsModel;
@Input()
readonly: boolean;
@Input() @Input()
languages: LanguagesModel[]; languages: LanguagesModel[];
...@@ -48,6 +51,13 @@ export class FormComponent implements OnInit { ...@@ -48,6 +51,13 @@ export class FormComponent implements OnInit {
} else { } else {
this.initNewForm(); this.initNewForm();
} }
this.disableIfReadonly();
}
private disableIfReadonly() {
if (this.readonly) {
this.createDepositForm.disable();
}
} }
private initNewForm() { private initNewForm() {
......
...@@ -9,7 +9,6 @@ import {ListView} from "@app/deposit/views/list/list.view"; ...@@ -9,7 +9,6 @@ import {ListView} from "@app/deposit/views/list/list.view";
import {SharedModule} from "@app/shared/shared.module"; import {SharedModule} from "@app/shared/shared.module";
import {TranslateModule} from "@ngx-translate/core"; import {TranslateModule} from "@ngx-translate/core";
import {NgxsModule} from "@ngxs/store"; import {NgxsModule} from "@ngxs/store";
import {DetailComponent} from "./components/detail/detail.component";
import {CreateView} from "./views/create/create.view"; import {CreateView} from "./views/create/create.view";
import {DetailView} from "./views/detail/detail.view"; import {DetailView} from "./views/detail/detail.view";
...@@ -25,7 +24,6 @@ const dialogs = [ ...@@ -25,7 +24,6 @@ const dialogs = [
]; ];
const components = [ const components = [
FormComponent, FormComponent,
DetailComponent,
]; ];
@NgModule({ @NgModule({
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
<div class="spinner-wrapper" *ngIf="isLoading$ | async"> <div class="spinner-wrapper" *ngIf="isLoading$ | async">
<mat-spinner></mat-spinner> <mat-spinner></mat-spinner>
</div> </div>
<dlcm-detail-deposit *ngIf="(current$| async) != null" <dlcm-form-deposit *ngIf="(current$| async) != null"
[model]="current$| async"> [model]="current$| async"
</dlcm-detail-deposit> [readonly]="true"
></dlcm-form-deposit>
</div> </div>
<div>
<label>{{'organizationalUnit.name' | translate}}</label>
<span class="separator">:</span>
<span class="value">{{model.name}}</span>
</div>
<div>
<label>{{'organizationalUnit.description' | translate}}</label>
<span class="separator">:</span>
<span class="value">{{model.description}}</span>
</div>
import { async, ComponentFixture, TestBed } from "@angular/core/testing";
import { DetailComponent } from "./detail.component";
describe("DetailComponent", () => {
let component: DetailComponent;
let fixture: ComponentFixture<DetailComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DetailComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(DetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it("should create", () => {
expect(component).toBeTruthy();
});
});
import {ChangeDetectionStrategy, Component, Input, OnInit} from "@angular/core";
import {OrganizationalUnitsModel} from "@app/generated-api";
@Component({
selector: "dlcm-detail-orgunit",
templateUrl: "./detail.component.html",
styleUrls: ["./detail.component.scss"],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DetailComponent implements OnInit {
@Input()
model: OrganizationalUnitsModel;
constructor() {
}
ngOnInit() {
}
}
...@@ -26,5 +26,11 @@ ...@@ -26,5 +26,11 @@
<mat-checkbox [formControlName]="isEmpty">{{'organizationalUnit.isEmpty' | translate }}</mat-checkbox> <mat-checkbox [formControlName]="isEmpty">{{'organizationalUnit.isEmpty' | translate }}</mat-checkbox>
<mat-checkbox [formControlName]="open">{{'organizationalUnit.open' | translate }}</mat-checkbox> <mat-checkbox [formControlName]="open">{{'organizationalUnit.open' | translate }}</mat-checkbox>
<button mat-flat-button color="primary" type="submit" [disabled]="!createOrganizationalUnitForm.valid">{{'organizationalUnit.submit' | translate }}</button> <button *ngIf="!readonly"
mat-flat-button
color="primary"
type="submit"
[disabled]="!createOrganizationalUnitForm.valid">
{{'organizationalUnit.submit' | translate }}
</button>
</form> </form>
...@@ -21,6 +21,9 @@ export class FormComponent implements OnInit { ...@@ -21,6 +21,9 @@ export class FormComponent implements OnInit {
@Input() @Input()
model: OrganizationalUnitsModel; model: OrganizationalUnitsModel;
@Input()
readonly: boolean;
@Output() @Output()
submitEvent: EventEmitter<any>; submitEvent: EventEmitter<any>;
...@@ -31,9 +34,18 @@ export class FormComponent implements OnInit { ...@@ -31,9 +34,18 @@ export class FormComponent implements OnInit {
ngOnInit() { ngOnInit() {
if (this.model) { if (this.model) {
this.bindFormTo(this.model); this.bindFormTo(this.model);
} else { } else {
this.initNewForm(); this.initNewForm();
} }
this.disableIfReadonly();
}
private disableIfReadonly() {
if (this.readonly) {
this.createOrganizationalUnitForm.disable();
}
} }
private initNewForm() { private initNewForm() {
......
...@@ -5,7 +5,6 @@ import {OrganizationalUnitState} from "@app/organizational-unit/organizational-u ...@@ -5,7 +5,6 @@ import {OrganizationalUnitState} from "@app/organizational-unit/organizational-u
import {SharedModule} from "@app/shared/shared.module"; import {SharedModule} from "@app/shared/shared.module";
import {TranslateModule} from "@ngx-translate/core"; import {TranslateModule} from "@ngx-translate/core";
import {NgxsModule} from "@ngxs/store"; import {NgxsModule} from "@ngxs/store";
import {DetailComponent} from "./components/detail/detail.component";
import {DeleteDialog} from "./dialogs/delete/delete.dialog"; import {DeleteDialog} from "./dialogs/delete/delete.dialog";
import {CreateView} from "./views/create/create.view"; import {CreateView} from "./views/create/create.view";
import {DetailView} from "./views/detail/detail.view"; import {DetailView} from "./views/detail/detail.view";
...@@ -24,7 +23,6 @@ const dialogs = [ ...@@ -24,7 +23,6 @@ const dialogs = [
]; ];
const components = [ const components = [
FormComponent, FormComponent,
DetailComponent,
]; ];
@NgModule({ @NgModule({
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
<div class="spinner-wrapper" *ngIf="isLoading$ | async"> <div class="spinner-wrapper" *ngIf="isLoading$ | async">
<mat-spinner></mat-spinner> <mat-spinner></mat-spinner>
</div> </div>
<dlcm-detail-orgunit *ngIf="(current$| async) != null" <dlcm-form-orgunit *ngIf="(current$| async) != null"
[model]="current$| async"> [model]="current$| async"
</dlcm-detail-orgunit> [readonly]="true"
></dlcm-form-orgunit>
</div> </div>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment