Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions src/app/components/card-title/card-title.component.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import { Component, Input, OnInit } from '@angular/core';
import { RouterLink } from '@angular/router';
import { IonRouterLink } from '@ionic/angular/standalone';
import { TranslatePipe } from '@ngx-translate/core';
import { AppSwitcherComponent } from '../switcher/switcher.component';
import { ITabItem } from 'src/app/ew/utils/interfaces';
Expand All @@ -12,7 +10,7 @@ import { OperationKeys } from '@decaf-ts/db-decorators';
templateUrl: './card-title.component.html',
styleUrls: ['./card-title.component.scss'],
standalone: true,
imports: [AppCardTitleComponent, TranslatePipe, AppSwitcherComponent, IonRouterLink, RouterLink],
imports: [TranslatePipe, AppSwitcherComponent],
})
export class AppCardTitleComponent extends NgxComponentDirective implements OnInit {
@Input({ required: true })
Expand Down
39 changes: 18 additions & 21 deletions src/app/pages/leaflet/leaflet.page.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,25 @@
import { Component, OnInit } from "@angular/core";
import { IonContent } from "@ionic/angular/standalone";
import { TranslatePipe } from "@ngx-translate/core";
import { HeaderComponent } from "src/app/components/header/header.component";
import { ContainerComponent } from "src/app/components/container/container.component";
import { NgxModelPageDirective } from "src/lib/engine";
import { CardComponent } from "src/lib/components/card/card.component";
import { ModelRendererComponent } from "src/lib/components/model-renderer/model-renderer.component";
import { EmptyStateComponent } from "src/lib/components/empty-state/empty-state.component";
import { Leaflet } from "src/app/ew/fabric/Leaflet";
import { TableComponent } from "src/lib/components";
import { OperationKeys } from "@decaf-ts/db-decorators";
import { AppCardTitleComponent } from "src/app/components/card-title/card-title.component";
import { Component, OnInit } from '@angular/core';
import { IonContent } from '@ionic/angular/standalone';
import { TranslatePipe } from '@ngx-translate/core';
import { HeaderComponent } from 'src/app/components/header/header.component';
import { ContainerComponent } from 'src/app/components/container/container.component';
import { NgxModelPageDirective } from 'src/lib/engine';
import { ModelRendererComponent } from 'src/lib/components/model-renderer/model-renderer.component';
import { EmptyStateComponent } from 'src/lib/components/empty-state/empty-state.component';
import { Leaflet } from 'src/app/ew/fabric/Leaflet';
import { TableComponent } from 'src/lib/components';
import { OperationKeys } from '@decaf-ts/db-decorators';
import { AppCardTitleComponent } from 'src/app/components/card-title/card-title.component';

@Component({
selector: "app-leaflet",
templateUrl: "./leaflet.page.html",
styleUrls: ["./leaflet.page.scss"],
selector: 'app-leaflet',
templateUrl: './leaflet.page.html',
styleUrls: ['./leaflet.page.scss'],
standalone: true,
imports: [
IonContent,
CardComponent,
AppCardTitleComponent,
ModelRendererComponent,
CardComponent,
TranslatePipe,
TableComponent,
HeaderComponent,
Expand All @@ -32,12 +29,12 @@ import { AppCardTitleComponent } from "src/app/components/card-title/card-title.
})
export class LeafletPage extends NgxModelPageDirective implements OnInit {
constructor() {
super("leaflet");
super('leaflet');
}

async ngOnInit(): Promise<void> {
this.title = "leaflet.title";
this.route = "leaflets";
this.title = 'leaflet.title';
this.route = 'leaflets';
this.model = new Leaflet();
this.enableCrudOperations([OperationKeys.UPDATE]);
await super.initialize();
Expand Down
1 change: 1 addition & 0 deletions src/lib/engine/NgxFormDirective.ts
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,7 @@ export abstract class NgxFormDirective
role: role || this.operation,
handler: handler,
handlers: this.handlers || {},
...(this.operation !== OperationKeys.CREATE ? { modelId: this.modelId } : {}),
});
}

Expand Down
22 changes: 14 additions & 8 deletions src/lib/engine/NgxModelPageDirective.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
OperationKeys,
PrimaryKeyType,
} from '@decaf-ts/db-decorators';
import { EventIds, Repository } from '@decaf-ts/core';
import { Repository } from '@decaf-ts/core';
import { Model, Primitives } from '@decaf-ts/decorator-validation';
import { ComponentEventNames } from '@decaf-ts/ui-decorators';
import { NgxPageDirective } from './NgxPageDirective';
Expand Down Expand Up @@ -117,7 +117,7 @@
*
* @param {string} [uid] - The unique identifier of the model to load; defaults to modelId
*/
override async refresh(uid?: EventIds): Promise<void> {
override async refresh(uid?: PrimaryKeyType): Promise<void> {
this.refreshing = true;
if (!uid) {
uid = this.modelId;
Expand Down Expand Up @@ -177,7 +177,10 @@
event: IBaseCustomEvent & ICrudFormEvent & CustomEvent,
repository?: DecafRepository<Model>,
): Promise<void> {
const { name, role, handler, data, handlers } = event;
const { name, role, handler, data, modelId, handlers } = event;
if (!this.modelId && modelId) {
this.modelId = modelId;
}
if (handler && role) {
this.handlers = handlers || {};
return await handler.bind(this)(event, data || {}, role);
Expand Down Expand Up @@ -252,11 +255,10 @@
if (!repo) {
repo = this._repository as DecafRepository<M>;
}

if (!repo || repo?.class?.name !== this.model?.constructor?.name) {
const { context } = (await this.process(
event,
this.model as Model,
this.model as M,
false,
)) as ILayoutModelContext;
if (context) {
Expand Down Expand Up @@ -296,7 +298,7 @@
* @return {Promise<Model | undefined>} Promise resolving to the model instance or undefined
*/
async handleRead<M extends Model>(
uid?: EventIds,
uid?: PrimaryKeyType,
repository?: IRepository<M>,
modelName?: string,
): Promise<Model | undefined> {
Expand All @@ -313,9 +315,11 @@
const getRepository = async (
modelName: string,
acc: KeyValue = {},
parent: string = '',

Check warning on line 318 in src/lib/engine/NgxModelPageDirective.ts

View workflow job for this annotation

GitHub Actions / coverage (22)

'parent' is assigned a value but never used
): Promise<DecafRepository<Model> | void> => {
if (this._repository) return this._repository as DecafRepository<Model>;
if (this._repository) {
return this._repository as DecafRepository<Model>;
}
const constructor = Model.get(modelName);
if (constructor) {
const properties = this.getModelProperties(constructor);
Expand Down Expand Up @@ -376,7 +380,7 @@
async process<M extends Model>(
event: ICrudFormEvent,
model?: M,
submit: boolean = false,

Check warning on line 383 in src/lib/engine/NgxModelPageDirective.ts

View workflow job for this annotation

GitHub Actions / coverage (22)

'submit' is assigned a value but never used
): Promise<ILayoutModelContext | IModelComponentSubmitEvent<M>> {
const result = { models: {} } as ILayoutModelContext;
const iterate = async (evt: ICrudFormEvent, model: string | M, parent?: string) => {
Expand Down Expand Up @@ -465,7 +469,9 @@
const operation = (role || this.operation) as CrudOperations;
if (data) {
if (!pk) pk = Model.pk(repository.class) as string;
if (!this.modelId) this.modelId = (data as M)[pk as keyof M] as PrimaryKeyType;
if (!this.modelId) {
this.modelId = (data as M)[pk as keyof M] as PrimaryKeyType;
}
const model = await this.transactionBegin(data as M, repository, operation);
if (!model) {
return {
Expand Down
2 changes: 2 additions & 0 deletions src/lib/engine/interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import {
import { FormParent } from './types';
import { Model } from '@decaf-ts/decorator-validation';
import { ActionRoles } from './constants';
import { PrimaryKeyType } from '@decaf-ts/db-decorators';

/**
* @description Interface for models that can be rendered
Expand Down Expand Up @@ -369,6 +370,7 @@ export interface I18nToken {
export interface ICrudFormEvent extends IBaseCustomEvent {
handler?: UIFunctionLike;
handlers?: Record<string, UIFunctionLike>;
modelId?: PrimaryKeyType;
role: (typeof ActionRoles)[keyof typeof ActionRoles] & CrudOperationKeys;
}

Expand Down
Loading