1.0.7 • Published 4 years ago

rico-angular v1.0.7

Weekly downloads
1
License
Apache-2.0
Repository
github
Last release
4 years ago

= Rico Angular Adapter

image:https://travis-ci.org/rico-projects/rico-angular.svg?branch=master["Build Status", link="https://travis-ci.org/rico-projects/rico-angular"]

image:https://nodei.co/npm/rico-angular.png["Rico-Angular on NPM", link="https://www.npmjs.com/package/rico-angular"]

== Usage

You need to have both https://github.com/rico-projects/rico-js[rico-js] and this library as dependency to be able to use this adapter. This enables you, in case of a bugfix or extension of rico-js to benefit from it without an update in rico-angular.

== Example

Please find an example in the https://github.com/rico-projects/rico-samples[rico-samples repository].

== How-To

The following steps describes how you can use Rico in your Angular application.

=== Step 1: Add Dependencies

Add dependencies to rico-js and rico-angular to your project:

npm install git+https://github.com/rico-project/rico-js.git#1.0.1 npm install rico-angular

So that these lines end up in your package.json:

"rico-angular": "^1.0.3",
"rico-js": "git+https://github.com/rico-project/rico-js.git#1.0.1",

=== Step 2: Inject library

Extend the app.module.ts by adding the RicoAngularModule to the imports:


import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms';

import { AppComponent } from './app.component';

import { RicoAngularModule } from 'rico-angular';

@NgModule({ declarations: AppComponent , imports: BrowserModule, FormsModule, RicoAngularModule , providers: [], bootstrap: AppComponent })

export class AppModule { }

=== Step 2: Add Code to connect to the Controller

Inject RicoService and the https://angular.io/api/core/ApplicationRef[ApplicationRef] into your Component you want to use Rico in:


constructor(ricoService: RicoService, appRef: ApplicationRef) {

Connect to a Rico server endpoint and create an instance of the controller to get access to the model for that you can establish bindings to:


this.ricoService.connect('http://localhost:8080/todo-app/remoting', this.appRef).then(() => {

  this.ricoService.createController('ToDoController').then((controllerProxy) => {
    AppComponent.LOGGER.info('received proxy after createController:', controllerProxy);
    this.appRef.tick();
    this.controllerProxy = controllerProxy;
    this.model = controllerProxy.model;
  }).catch((error) => {
    AppComponent.LOGGER.error(error);
  });

=== Step 3: Add code for data binding

As we now have the contoller's model in the component available, we can make use of https://angular.io/api/forms/NgModel[Angular's ngModel] to use that model with our UI.

For example, we can bind a 'newItemText' property of the model to a input field like this (https://github.com/rico-projects/rico-samples/blob/master/todo-list/client-angular/src/app/app.component.html#L17[from rico-samples ToDo list]):

<input type="text" (ngModel)="model.newItemText" (keyup.enter)="addTask()" class="form-control" placeholder="Task">

For a complete working example, please refer to https://github.com/rico-projects/rico-samples/tree/master/todo-list/client-angular[client-angular module] of our https://github.com/rico-projects/rico-samples[ToDo List sample].

=== Run library tests

npm run test

=== Run library integration tests

Prerequsite: Have https://docs.docker.com/install/[Docker] installed.

Then, have a integration tests server running using Docker:

npm run start-int-test-server

It will start a docker image with a rico runtime with some remoting controllers mapped to port 8085.

Now execute tests with:

npm run int-test

The tests will watch the source files and re-run upon changes.

Finally, you can stop the integration server with

npm run stop-int-test-server

=== Packaging

For packaging, the https://www.npmjs.com/package/ng-packagr[ng-packagr] is used via the angular tool chain configuted via angular.json file.

== Releases

Releases are done automatically with https://github.com/semantic-release/semantic-release/[semantic-release] when release-triggering commit is added to master branch.

Commits are evaluated by their commit message (thats why we need to stick with the commit message format, see "Contributing"). Depending on fix, feat or BREAKING CHANGES, a Patch-, Feature- or Breaking release is build and released.

A new release is automatically published on NPM and as a release on GitHub.

== Contributing

Please use https://semantic-release.gitbook.io/semantic-release/#commit-message-format[Commit message format] when contributing changes via a PR to this repository. (https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#type[List of commit types to be used])

For all details on contributing to Rico, please refer to the https://github.com/rico-projects/rico[main repo].

1.0.7

4 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago