bia-framework
Version:
Bia Framework to work with angular 2
158 lines • 5.39 kB
text/typescript
// 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;
// }
//
//
// }