Skip to content
This repository has been archived by the owner on May 10, 2021. It is now read-only.

This is an implementation of the collection-json.ts library to support angular framework

License

Notifications You must be signed in to change notification settings

avatao/collection-json-angular

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Known Vulnerabilities

Collection+JSON Angular Implementation

Disclaimer

This project is under development (beta state), use it with care. API changes might occur.

The library is not yet a "true" angular library, refer to the Usage

Usage

The library needs to be configured with the proper HttpClient service to work. To achive this create a module and import it in your root module:

import {NgModule} from '@angular/core';
import {HttpClient, HttpClientModule} from '@angular/common/http';
import {CollectionConfigurationManager} from 'collection-json-base/models'

@NgModule({
  declarations: [],
  exports: [],
  imports: [HttpClientModule],
  providers: [],
})
export class AngularCollectionModule {
  // Set up collection-json-base library with the proper http service
  constructor(private httpClient: HttpClient) {
    try {
      CollectionConfigurationManager.getHttpService<HttpClient>();
    } catch (e) {
      CollectionConfigurationManager.setHttpService<HttpClient>(this.httpClient);
    }
  }
}

To request a Collection+JSON type information using the HttpClient the WrappedCollectionJSON interface from the base library can be used. Every collection will come in a form { collection: CollectionJSON }. The AngularCollection constructor can accept either a WrappedCollectionJSON or a CollectionJSON:

import {WrappedCollectionJSON} from 'collection-json-base';

 this.httpClient.get<WrappedCollectionJSON>('http://example.com').pipe(map(
    (wrappedCollectionJson) => new AngularCollection(wrappedCollectionJson)
))

Follow a link (request the collection it points to), the link of a collection or item can be accessed using its rel property:

const collection = new AngularCollection(someCollection);
const optionalParameters = new HttpParams();

collection.link('link_rel').follow(optionalParamateres).subscribe(
    (requestedCollection: AngularCollection) => {
        // You can use the received requestedCollection which is already an AngularCollection type.
    }
);

Get the items of a collection:

const collection = new AngularCollection(someCollection);
let item: AngularItem;
let itemStore: AngularItemStore;

try {
    itemStore = collection.items(); // Throws an error if there are no items on the collection
} catch (e) {
    console.error(e.message);
}

// Let's assume that the collection has items from now on

try {
    item = collection.items().one(); // Returns only one item, throws an error if there are more than one
} catch (e) {
    console.error(e.message);
}

item = collection.items().first(); // Returns the first item or undefined

// Returns all of the items on the collection in an AngularItem array.
let items: AngularItem[] = collection.items().all(); 

Prepare and send a template:

const collection = new AngularCollection(someCollection);
const template = collection.template();

// Setting a property
template.set("propertyName", "propertyValue");

// Setting multiple properties using a JavaScript object
template.setWithDataObject(
    {
        "propertyName1" : "propertyValue1",
        "propertyName2" : "propertyValue2",
    }
);

// Send a POST request
template.submit().subscribe(
    (result: AngularCollection) => {
        // This might be empty, depends on the backend
    },
    (error) => {
        if (error instanceof Error) {
           // Validation error
        } else {
           // Server error
        }
    }
);

// Send a PUT request
template.update().subscribe(
    (result: AngularCollection) => {
        // This might be empty, depends on the backend
    },
    (error) => {
        if (error instanceof Error) {
           // Validation error
        } else {
           // Server error
        }
    }
);

About

This is an implementation of the collection-json.ts library to support angular framework

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published