open-consul/ui/packages/consul-ui/app/components/data-loader/index.js

37 lines
890 B
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@ember/component';
import { set } from '@ember/object';
import Slotted from 'block-slots';
import chart from './chart.xstate';
export default Component.extend(Slotted, {
tagName: '',
onchange: (data) => data,
init: function () {
this._super(...arguments);
this.chart = chart;
},
didReceiveAttrs: function () {
this._super(...arguments);
if (typeof this.items !== 'undefined') {
this.actions.change.apply(this, [this.items]);
}
},
didInsertElement: function () {
this._super(...arguments);
this.dispatch('LOAD');
},
actions: {
isLoaded: function () {
return typeof this.items !== 'undefined' || typeof this.src === 'undefined';
},
change: function (data) {
set(this, 'data', this.onchange(data));
},
},
});