UNPKG

bia-framework

Version:

Bia Framework to work with angular 2

158 lines 5.39 kB
// import {Injectable, OnInit} from "@angular/core"; // import {Observable} from "rxjs/Observable"; // import {Observer} from "rxjs/Observer"; // import {DataBaseContext} from "./OdisseiaDatabase"; // import {WebApiService} from "./WebApiService"; // import {syncableTable} from "./OdisseiaDataBase/syncableTable"; // //React // import "rxjs/add/operator/mergeMap"; // import "rxjs/add/operator/map"; // import "rxjs/add/operator/catch"; // // /** // * Created by jd on 07/04/2016. // */ // // interface SyncNotification // { // isComplete:boolean; // total:number; // current:number; // hasError?:boolean; // status?:string; // } // // @Injectable() // export class SyncService implements OnInit // { // // // ngOnInit():any // { // return undefined; // } // // constructor(private db:DataBaseContext, private webApi:WebApiService) // { // } // // private localChangesSinceLastSync = <T>(table:string, lastSyncDate:Date):Observable<Array<T>> => // { // return Observable.create((observer:Observer<Array<T>>) => // { // this.db.getStore<T>(table).find({"updatedAt": {$gt: lastSyncDate}}, (err, result:Array<T>) => // { // observer.next(result); // observer.complete() // }); // }); // }; // // // private lastTableSync = (table:string):Observable<Date> => // { // return Observable.create((observer:Observer<Date>) => // { // this.db.TableSync.find({"tableName": table}, (err, result) => // { // if (result.length > 0) // observer.next(result[0].lastSync); // else // observer.next(new Date(2001, 1, 1)); // // observer.complete() // }); // }); // // }; // // // private updateServer = (table:string, localChanges:Array<any>, lastSyncNumber:Date):Observable<any> => // { // return this.webApi // .Resource("api/" + table + "/Sync/{lastSync}") // .Method("POST") // .CanSendToken(false) // .Parameters({lastSync: lastSyncNumber.toISOString()}) // .Content(localChanges) // .Execute(); // }; // // // private updateLocal = (table:string, serverChanges:Array<syncableTable>):Observable<SyncNotification> => // { // return Observable.create((observer:Observer<SyncNotification>) => // { // //create a notification object // var notification:SyncNotification = { // status: "Atualizando...", // total: serverChanges.length, // current: 0, // isComplete: false // }; // // observer.next(notification); // var changeCount = 0; // // serverChanges.forEach((item:syncableTable, i) => // { // // changeCount += 1; // notification.current = changeCount; // // //Para cada item que voltou do servidor... // //procuramos na base local // this.db.getStore(table).update({_id: item._id}, item, {upsert: true}, (err, result) => // { // if (err) // { // console.log(err); // } // else // { // observer.next(notification); // } // }); // if (changeCount == serverChanges.length) // observer.complete(); // // // }); // // }); // // // }; // // // public SyncTable = (table:string):Observable<SyncNotification> => // { // var currentSyncDAte = this.db.GetCurrentUtcDate(); // var lastTableSyncNumber:Date = null; // var localChangesSinceLastSync:Array<any> = []; // var serverchangesSinceLastSync:Array<any> = []; // // // var syncTableSource = this.lastTableSync(table) // .mergeMap((data:Date) => // { // lastTableSyncNumber = data; // return this.localChangesSinceLastSync(table, lastTableSyncNumber); // }) // .mergeMap((results:Array<any>) => // { // localChangesSinceLastSync = results; // return this.updateServer(table, localChangesSinceLastSync, lastTableSyncNumber); // }) // .mergeMap((dataToUpdate:Array<any>)=> // { // serverchangesSinceLastSync = dataToUpdate; // return this.updateLocal(table, serverchangesSinceLastSync); // }); // // // return syncTableSource; // } // // // }