!7 sclass LatestChangedSnippets extends DynTable { L data; JComponent visualize() { JComponent c = super.visualize(); ret withCenteredButtons(c, tableDependentButton_extraCondition(table, "Add Module", r { S id = strOrNull(selectedTableCell(table, "ID")); if (isSnippetID(id) && cic((S) selectedTableCell(table, "Type"), "(Dynamic Module)")) dm_addDynamicModuleDialog2(id); }, func -> bool { cic((S) selectedTableCell(table, "Type"), "(Dynamic Module)") })); } void start { ownTimer(doEvery(60.0, r actualUpdate)); } void actualUpdate { temp enter(); actualCalc(); } L calc() { ret data != null ? data : actualCalc(); } L actualCalc() ctex { time "Get Latest Snippets" { L l = recentlyChangedSnippets(); } ret setFieldAndReturn(data := map(l, func(Snippet s) -> Map { humanizeKeys(putKeysFirst(objectAsMap(s), "title", "id")) })); } }