> zGb5Kpvm > [[]] ```datacorejsx let sent = 0; const useSection = z => { if(sent < 2) { sent++; console.log(z.$parent) } let par = z; while(!par.$link) par = par.$parent; return par; } const useParent = a => { let par = a.$parent; if(par.__proto__.constructor.name.match(/markdownlistblock/i)) return a; while(Array.isArray(par.$elements) && "$status" in par) par = par.$parent; return par; } let m = 0; let sentinel = 0 return function What() { let q = dc.useQuery(`@task and $parentLine < 0 and !contains($file, "periodic") and !contains($file, "bible") and !contains($file, "kanban") and contains($file, "rockfic")`) let rowVal = dc.useArray(q, b => { let inter = b.groupBy(y => useSection(y)).groupBy(y => y.key.$file) console.log("inty", inter) return inter }) //console.info("ROWVAL", rowVal) const props = { rows: rowVal, paging: 15, columns: [ { id: "texto", title: "text", width: "maximum", value: x => x.$cleantext, editable: true, onUpdate: (v, x) => { console.log("vv", v) console.log("xx", x) dc.setTaskText(v, x) }, editor: (v, o, d) => , render: (v, o) => }, { id: "completed", value: x => x.$completed, render: (v, o) => { dc.setTaskCompletion(v2, o); }} checked={v}/>, width: "minimum" }, { id: "id", value: x => x.$revision, sortable: true, width: "minimum", title: "revision #", editable: false }, ], displayGroupAsRow: true, groupings: [{ render: (k, v) =>

{k.split("/").toReversed()[0].replace(/\.md$/, "")}

}, { render: (k, v) => { let sec = useSection(k) let link = sec.$link.withDisplay(sec.$title) return } }, ], childSelector: (x) => x.$elements } return ( ) } ```