Refactor components

Implement context mechanism to pass default attributes to descendant
components.
This commit is contained in:
Zaid Abdulla committed 2019-02-12 23:11:27 -08:00
1 parent d46d133878
commit ee8c43747e
35 files changed
+1903 -1831

No files matched your search

+29 -29
View File
@@ -1,35 +1,35 @@
"use strict";
import m from "mithril";
import { get } from "../components";
import memoize from "../../lib/common/memoize";
import { m } from "../components";
const getChildAttrs = memoize((attrs, device) =>
Object.assign({}, attrs, { device: device })
);
export default function component() {
return {
view: vnode => {
const device = vnode.attrs.device;
export default {
view: vnode => {
const device = vnode.attrs.device;
const rows = Object.values(vnode.attrs.parameters).map(parameter => {
const p = m.context(
{
device: device,
parameter: parameter.parameter
},
parameter.type || "parameter",
parameter
);
const rows = Object.values(vnode.attrs.parameters).map(parameter => {
const p = m(
get(parameter.type || "parameter"),
getChildAttrs(parameter, device)
);
return m(
"tr",
{
onupdate: vn => {
vn.dom.style.display = p.dom ? "" : "none";
}
},
m("th", parameter.label),
m("td", p)
);
});
return m(
"tr",
{
onupdate: vn => {
vn.dom.style.display = p.dom ? "" : "none";
}
},
m("th", parameter.label),
m("td", p)
);
});
return m("table.parameter-list", rows);
}
};
return m("table.parameter-list", rows);
}
};
}