data-dashboard
Version:
A data-driven dashboard console for report widgets
60 lines (53 loc) • 2.24 kB
text/typescript
// DataDashboard ~~ MIT License
// Widget controller
// Imports
import { dna } from 'dna-engine';
import { fetchJson } from 'fetch-json';
// Modules
import { webAppUtil } from '../../modules/util';
// [
// {
// login: "dpilafian",
// id: 119555,
// node_id: "MDQ6VXNlcjExOTU1NQ==",
// avatar_url: "https://avatars1.githubusercontent.com/u/119555?v=4",
// gravatar_id: "",
// url: "https://api.github.com/users/dpilafian",
// html_url: "https://github.com/dpilafian",
// followers_url: "https://api.github.com/users/dpilafian/followers",
// following_url: "https://api.github.com/users/dpilafian/following{/other_user}",
// gists_url: "https://api.github.com/users/dpilafian/gists{/gist_id}",
// starred_url: "https://api.github.com/users/dpilafian/starred{/owner}{/repo}",
// subscriptions_url: "https://api.github.com/users/dpilafian/subscriptions",
// organizations_url: "https://api.github.com/users/dpilafian/orgs",
// repos_url: "https://api.github.com/users/dpilafian/repos",
// events_url: "https://api.github.com/users/dpilafian/events{/privacy}",
// received_events_url: "https://api.github.com/users/dpilafian/received_events",
// type: "User",
// site_admin: false,
// contributions: 732
// },
// ...
// Types
type WidgetModel = {
contributors: {
html_url: string,
avatar_url: string,
login: string,
}[],
};
type RawData = WidgetModel['contributors'];
const webAppWidgetProjectContributors = {
show(widgetElem: Element): void {
const url = 'https://api.github.com/repos/dna-engine/dna-engine/contributors';
const handleData = (data: RawData) => {
webAppUtil.spinnerStop(widgetElem);
const model = <WidgetModel>dna.getModel(widgetElem);
model.contributors = data;
dna.refresh(widgetElem);
};
webAppUtil.spinnerStart(widgetElem);
fetchJson.get(url).then(handleData);
},
};
export { webAppWidgetProjectContributors };