Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/geontech/angular-redhawk

Angular v5 library for developing rest-python -backed UIs for REDHAWK SDR Systems
https://github.com/geontech/angular-redhawk

angular4 redhawk rest-python

Last synced: 8 days ago
JSON representation

Angular v5 library for developing rest-python -backed UIs for REDHAWK SDR Systems

Awesome Lists containing this project

README

        

# Angular REDHAWK

The angular-redhawk library is a back-end interface to the REST and socket services of Geon's fork of REST-Python. It provides minimal examples of very low-level interfaces to these services.

This Angular library interfaces with the REST-Python server from Geon Technologies. It provides two modules top-level, Support and UI Kit. The former contains the high-level Components users can implement in their designs to facilitate easy access to the underlying Services. It also contains the generic REST Model definitions that are returned by those Services. The UI Kit contains re-usable UI Components that use those support module Component interfaces to view and manipulate the Models.

## Installing Angular-REDHAWK

If you are installing Angular-REDHAWK into your application, use `npm` to install it as a dependency:

```base
npm install --save angular-redhawk
```

Import the `AngularRedhawkModule` into your application:

```typescript
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';

import { AngularRedhawkModule } from 'angular-redhawk';

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AngularRedhawkModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

```

## Configuring the REST-Python Service

Angular-REDHAWK connects to the REST-Python server using the `RestPythonService`. The default configuration connects to whatever host is serving your web application at port `8080`, which is the default for Geon's REST-Python server. The `RestPythonService` supports two methods for configuring that connection: pre- and post- Angular Dependency Injection. In either case, the interface is defined by `IRestPythonConfig`.

### Pre-injection

In your application's top-level module, import the `REST_PYTHON_CONFIG` from `AngularRedhawkModule` and provide it to dependency injection:

```typescript
import {
AngularRedhawkModule,
REST_PYTHON_CONFIG
}

@NgModule({
imports: [
AngularRedhawkModule
],
providers: [
{ provide: REST_PYTHON_CONFIG, useValue: { host: 'aa.bb.cc.dd' } }
]
})
```

### Post-injection

You can configure the service connection at your application's startup by injecting the `RestPythonService` into the top-level Component and then using `setConfiguration`:

```typescript
import { RestPythonService } from 'angular-redhawk';

// In the Component
constructor(rp: RestPythonService) {
rp.setConfiguration({ port: 9999 });
}
```

> **Important:** Socket services do not support reconfiguring URLs at this time. Do not reconfigure `RestPythonService` using this method after your application is already running!

## Developing the Library

If you are developing on Angular-REDHAWK:

```bash
git clone /angular-redhawk
cd angular-redhawk
npm install
npm run build
cd dist
npm link
```

Then, in your application where you want to use it, link the library:

```bash
npm link angular-redhawk
```

> **Note:** If you're using `@angular/cli` for your application, you may need to use `--preserve-symlinks` when running tasks such as `ng serve` or `ng build`. For example, add to the app's `package.json`:

```json
"scripts": {
"start": "ng serve",
"start:dev": "npm run start --preserve-symlinks"
}
```

### Contributing

Use the NPM task `lint` to quality check your code (it runs TSLint) and `build` to ensure your code has a better chance of working in a downstream Angular application.

```bash
npm run lint
npm run build
```

Please correct all "errors" generated by TSlint. Some sound like nitpicks (like whitespace at the end of lines), but each is there to help transpiling, bundling, etc. in some way.