@openhps/core
Version:
Open Hybrid Positioning System - Core component
40 lines • 1.14 kB
JavaScript
import { DataObject } from '../../data';
import { DataFrame } from '../../data/DataFrame';
import { SourceNode } from '../SourceNode';
/**
* @category Source node
*/
export class HistorySourceNode extends SourceNode {
constructor(options) {
super(options);
}
onPull(options = {
requestedObjects: []
}) {
return new Promise((resolve, reject) => {
const service = this.model.findDataService(DataObject);
const requestPromises = [];
options.requestedObjects.forEach(uid => {
requestPromises.push(new Promise(resolve => {
service.findByUID(uid).then(object => {
resolve(object);
}).catch(() => {
// Ignore
resolve(undefined);
});
}));
});
// Complete service requests
Promise.all(requestPromises).then(objects => {
// Create a new dataframe from these objects
const frame = new DataFrame(this.source);
objects.forEach(object => {
if (object) {
frame.addObject(object);
}
});
resolve(frame);
}).catch(reject);
});
}
}