export function firebaseObjectObservableFactory(ref: firebase.database.Reference): Observable<FirebaseRecord> { return Observable.create((subscriber: Subscriber<any>) => { let listenFn = ref.on('value', (snap: firebase.database.DataSnapshot) => { let value = firebaseRecordFactory(snap); subscriber.next(value); }, err => { if (err) { subscriber.error(err); subscriber.complete(); } }); return () => { ref.off('value', listenFn); }; }); }
randomWalk(startStep, minChange, maxChange) { return Observable.create((observer) => { let running = true; let step = startStep; let next = () => { if (running) { step += this.nextInt(minChange, maxChange); observer.next(); setTimeout(next, step); } }; next(); return () => running = false; }); }
loadFormUrl() { return Observable.create((observer) => { this.http.get('form-url.txt') .map((res) => res.text()) .subscribe((data) => { const results = /\/d\/(.*)\//.exec(data); if (results) { const url = results[1]; observer.next(url); return; } }); }); }
public salvar(usuario, userType) { usuario = JSON.parse(JSON.stringify(usuario));; if (userType == 'pf') usuario.empresa = null; else usuario.pessoa = null; return Observable.create(observer => { this.apiService.post('/usuarios', usuario) .map(res => res.json()) .subscribe( data => observer.next(true), err => observer.next(false), () => observer.complete() ); }); }
constructor(public title: string, public createdOn: Date, public items: any[]) { this.title = title; this.createdOn = createdOn; this.items = items; this.completed = 0; this.items.forEach((item) => { if (item.checked) { this.completed++; } }); this.checklist = Observable.create(observer => { this.checklistObserver = observer; }); }
getAllTracktors(): Observable<Tracktor> { return Observable.create(observer => { let listener = this.tracktorsQuery.on('child_added', snapshot => { let data = snapshot.val(); observer.next(new Tracktor( snapshot.key, data.hours, data.name )); }, observer.error); return () => { this.tracktorsQuery.off('child_added', listener); }; }); }
constrainedRandomWalk(startStep, minStep, maxStep, minChange, maxChange) { return Observable.create((observer) => { let running = true; let step = startStep; (async () => { while (running) { step += this.nextInt(minChange, maxChange); step = Math.min(step, maxStep); step = Math.max(step, minStep); observer.next(); await this.sleep(step); } })(); return () => running = false; }); }
beforeEach(function () { mockActionService = { getActions: function () {} }; formBuilder = new FormBuilder(); getActionsSpy = spyOn(mockActionService, 'getActions').and.returnValue( Observable.create(observer => { observer.next([ new Action({ id: 1, boardId: 1, description: "I'm a message", owner: 'Owner1', creationDate: "2016-01-01T21:30:00Z", lastModifiedDate: "2016-01-01T21:30:00Z" }), new Action({ id: 2, boardId: 1, description: "I'm another message", owner: 'ACTIVE', creationDate: "2016-01-01T21:30:00Z", lastModifiedDate: "2016-01-01T21:30:00Z" }), new Action({ id: 3, boardId: 1, description: "I'm a different message", owner: 'ACTIVE', creationDate: "2016-01-01T21:32:00Z", lastModifiedDate: "2016-01-01T21:32:00Z" }), new Action({ id: 4, boardId: 1, description: "I'm a different message", owner: 'ARCHIVED', creationDate: "2016-01-01T21:32:00Z", lastModifiedDate: "2016-01-01T21:32:00Z" }) ] ); observer.complete(); }) ); });
getAllFields(): Observable<Field> { return Observable.create(observer => { let listener = this.fieldsQuery.on('child_added', snapshot => { let data = snapshot.val(); observer.next(new Field( snapshot.key, data.name, data.prop, data.color )); }, observer.error); return () => { this.fieldsQuery.off('child_added', listener); }; }); }
getPatient(id: number) : Observable<IPatientReview> { if (this.patients) { //filter using cached data return this.findPatientObservable(id); } else { //Query the existing Patients to find the target Patient return Observable.create((observer: Observer<IPatientReview>) => { this.getPatients().subscribe((patients: IPatientReview[]) => { this.patients = patients; const patient = this.filterPatients(id); observer.next(patient); observer.complete(); }) }) .catch(this.handleError); } }