open-nomad/ui/app/utils/classes/abstract-stats-tracker.js

28 lines
628 B
JavaScript
Raw Normal View History

import Mixin from '@ember/object/mixin';
import { assert } from '@ember/debug';
export default Mixin.create({
url: '',
fetch() {
2018-08-31 02:57:28 +00:00
assert('StatsTrackers need a fetch method, which should have an interface like window.fetch');
},
append(/* frame */) {
assert(
2018-08-31 02:57:28 +00:00
'StatsTrackers need an append method, which takes the JSON response from a request to url as an argument'
);
},
poll() {
const url = this.get('url');
assert('Url must be defined', url);
return this.get('fetch')(url)
.then(res => {
return res.json();
})
.then(frame => this.append(frame));
},
});