Blast-Graph-Angular2
Overview
This is a websocket client for Angular2 projects for connection to a Blast Server. It is an extension of blast-angular2 and provides additional commands (functions) relevant to the blast-graph-module. It is worth reading about blast-graph-module before proceeding.
Building npm
NPM Commands
Command | Description |
---|---|
npm run lint | runs lint |
npm run compile | compiles tyepscript |
npm run minify | minifies the output javascript |
npm run bundle | includes any 3rd party libraries |
npm run bundle-minify | minifies the bundle |
npm run prepublish | runs all above commands |
npm run dev | lint,compile and npm link |
npm run build | runs everything |
To publish to npm
npm publish
Note: Although the main objective for this project is a 'npm module' it also serves as the build for our native javascript library.
Getting Started
npm install blast-graph-angular2
to build ..
npm run packagr
npm publish dist
// connect
const blastService: BlastService = new BlastService('ws://127.0.0.1:8081/blast');
// create an initialized variable for the local copy
let myBooks:any[] = [];
// attach local copy to server's data model, collection 'books'.
// When server data changes then local copy will automatically be updated.
blastService.attach("books",myBooks);
Usage
The following commands (functions) are an extension to those already available in blast-angular2.
Commands
Command summary:
Command | Description |
---|---|
add | Add an entity to the server's data graph |
update | Update an entity in the server's data graph |
remove | Remove an entity from the server's data graph |
attach | Attach local variable to a collection in the server's data graph and automatically update when there are server side changes |
detach | Associated local copy will no longer receive updates from the server |
detachAll | All attachments are removed - no local copies will be mainatined |
getAttachments | Returns a list of current attachments with the server |
fetch | Get a snapshot of a collection or entity from the server's data graph |
fetchRoot | Get a snapshot of all the data in the server's data graph |
getSchema | Get the schema of the server's data graph |
Add
Add new entity to the server's data graph.
Function
add(collection: string, entity: any): Promise<any>
Example
blastService.add("books",{bookId:1,name:'Hello World'}).then((response) => {
console.log('that worked!');
}).catch((error) => {
console.log('oops! that failed');
});
Update
Update an entity in the server's data graph.
Function
update(key: string, entity: any): Promise<any>
Example
blastService.update("books/id:1",{bookId:1,name:'New World'}).then((response) => {
console.log('that worked!');
}).catch((error) => {
console.log('oops! that failed');
});
Remove
Remove an entity in the server's data graph.
Function
remove(key: string): Promise<any>
Example
blastService.remove("books/id:1").then((response) => {
console.log('book removed');
}).catch((error) => {
console.log('oops! that failed');
});
Attach
Attach a client side variable to a server side collection. Whenever there is a change to the data on the server (including any of its children) then automatically updated my local client version.
For the key please read blast-graph-module for a better overview.
Function
attach(key: string, data: any, parameters?: PathParameters, modificationWatcher?: ModificationWatcher): Promise<any> {
Example
let allBooks:any[] = [];
let oneBook:any = {};
blastService.attach('books',allBooks);
blastService.attach('books/id:1',oneBook);
Additional Parameters
PathParameters Apply filtering to the 'attach' or 'fetch' command.
Paramter | Description |
---|---|
includeChildren | Default is true, but when false any children collections are not returned. |
fields | An array of field names - the returned data will only include these fields, and for 'attach' the local copy will only be updated if any of these fields change. |
Modifcation Watcher
A callback can be associated with the 'attach' - so, when there are changes to the local copy, the 'added','changed' or 'removed' methods of ModicationWatcher will be called.
Detach
Remove an 'attachment' - the local copy will no longer be maintained.
Function
detach(attachmentId: string)
Example
blastService.detach(attachmentId)
DetachAll
Remove all attachments - local copies will no longer be maintained.
Function
detachAll()
Example
detachAll()
getAttachments
Returns a list of current attachments.
Function
getAttachments()
Example
getAttachments()
Fetch
Fetch a collection or record from the server, this is a snapshot of the current data held by the server. The resultant value will not get updated if there is a change to the server data.
Function
fetch(key: string, parameters?: PathParameters)
Example
let allBooks:any[] = blastService.fetch("books")
let oneBooks:any = blastService.fetch("books/id:1")
Fetch Root
Fetches the entire data graph from the server. Great in development! but strongly advise that this is not used in production - the resultant amount of data could be huge!
Function
fetchRoot();
Example
let myData:any = blastService.fetchRoot();
MyData would look like the following:
{
"books": []
"authors": []
}
getSchema
Fetches the schema of the server's data graph.
Function
getSchema()
Example
blastService.getSchema();