Skip to content

Add Angular generator #40

Open
@mysiar

Description

@mysiar

Add Angular generator to API-Platform client-generator.
With React, Vue.js and shortly coming React Native this could be the most comprehensive front app support for API-Platform

Activity

dunglas

dunglas commented on Sep 28, 2017

@dunglas
Member

There is an existing community project: https://github.com/momenttech/lysis, see momenttech/lysis#1.

(ping @momenttech)

sbacem

sbacem commented on Oct 13, 2017

@sbacem

Any news for this ?

mysiar

mysiar commented on Oct 13, 2017

@mysiar
MemberAuthor

@sbacem you are more than welcome to develop this if you are interested

sbacem

sbacem commented on Oct 17, 2017

@sbacem

I am very interested, but i haven't time to do it 😞 😞

dunglas

dunglas commented on Oct 18, 2017

@dunglas
Member
luca-nardelli

luca-nardelli commented on Apr 16, 2019

@luca-nardelli
Contributor

Hi all, I'm writing under this issue because I also was looking for an Angular generator.

I've just tried lysis on a project of mine but I got some errors:

Starting API 'http://localhost/api/docs.jsonld'...
Error for API 'http://localhost/api/docs.jsonld'
The class http://www.w3.org/ns/hydra/core#ApiDocumentation doesn't exist.

Did anyone manage to make it work recently?

In any case, I've started to work on a generator for Angular.
Is there a minimum set of features that should be present in the generator in order to merge that?

At the moment, I'm generating the following for each resource:

  • Interface class (the same as the typescript generator)
  • Service class: this handles getCollection,addItem,getItem,putItem,deleteItem operations

plus an utils file that handles some common stuff.

I also wanted to handle subresources, but it seems quite complicated to do with the current data that's parsed from the Hydra documentation. Does anyone from the maintainers know of an easy way to handle subresources?

Anyway, this is an example of generated files from a project of mine with the current generator:

Resource Interface:

import { Company } from "./company";

export interface Client {
  '@id'?: string;
  id: string;
  name?: string;
  legalName?: string;
  legalAddressCity?: string;
  legalAddressStreet?: string;
  legalAddressStreetNumber?: string;
  legalAddressZipcode?: string;
  phone?: string;
  email?: string;
  vatNumber?: string;
  taxNumber?: string;
  readonly updatedAt?: Date;
  readonly createdAt?: Date;
  readonly agency?: Company;
  readonly locationsCount?: number;
}

Resource service:

import { Client } from "../interfaces/client";
import { HttpClient } from "@angular/common/http";
import { APIPlatformPagedCollection } from "../utils/utils";
import { Inject, Injectable} from '@angular/core';

@Injectable()
export class ClientService {

  constructor(
    private http: HttpClient,
    @Inject('BASE_API_URL') private baseUrl: string
  ) {
  }

  getCollection(){
    return this.http.get<Client>(`${this.baseUrl}/api/clients`);
  }

  addItem(item: Client){
    return this.http.post<Client>(`${this.baseUrl}/api/clients`, item);
  }

  getItem(id: string){
    return this.http.get<Client>(`${this.baseUrl}/api/clients/${id}`);
  }

  updateItem(item: Client){
    return this.http.put<Client>(`${this.baseUrl}/api/clients/${item.id}`, item);
  }

  deleteItem(id: string){
    return this.http.delete<{}>(`${this.baseUrl}/api/clients/${id}`);
  }
}

Utils file:

export interface APIPlatformPagedCollection<T> {
  "hydra:totalItems"?: number;
  "hydra:member"?: T[];
  "@context"?: string;
  "@id"?: string;
  "@type"?: string;
  "hydra:view"?: {
    "@id"?: string;
    "@type"?: string;
    "hydra:first"?: string;
    "hydra:last"?: string;
    "hydra:previous"?: string;
    "hydra:next"?: string;
  };
}

export interface APIPlatformCollection<T> {
  "hydra:totalItems"?: number;
  "hydra:member"?: T[];
  "@context"?: string;
  "@id"?: string;
  "@type"?: string;
}
simocheccoli

simocheccoli commented on Apr 20, 2021

@simocheccoli

Hi @dunglas, is there the possibility that this angular generator will be developed by core members?

dunglas

dunglas commented on Apr 20, 2021

@dunglas
Member

@simocheccoli I'm not aware of any core member working on this (nor using Angular actually), but we'll be glad to merge a generator if the community contributes one!

simocheccoli

simocheccoli commented on Apr 21, 2021

@simocheccoli

@dunglas we can try it! maybe with @luca-nardelli helps

simocheccoli

simocheccoli commented on May 7, 2021

@simocheccoli

@dunglas we are creating a dummy angular generator with @luca-nardelli 😄
We also want generate a simple material design template angular generator, maybe next week we can sumbit a pr

krstns

krstns commented on Apr 7, 2022

@krstns

Hello. Are there any updates on this?

dunglas

dunglas commented on Apr 8, 2022

@dunglas
Member

No, but a contribution is still very welcome.

simocheccoli

simocheccoli commented on Aug 9, 2022

@simocheccoli

@dunglas @krstns we are still working about it

3 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Participants

      @dunglas@krstns@metaclass-nl@luca-nardelli@sbacem

      Issue actions

        Add Angular generator · Issue #40 · api-platform/create-client