!7 set flag DynModule. concept Entry { S name; S description; S codeToProduce; transient O data; long sizeInRAM; bool autoLoad; Map moreInfo; } module InformationDatabases > DynCRUD { *() { super(Entry); } afterVisualize { add(crud.buttons, tableDependentButton(table(), "Load", rThread { loadEntry(selected()) })); } SimpleCRUD makeCRUD() { ret setAllAndReturn(super.makeCRUD(), excludeFieldsFromEditing := litset('moreInfo, 'sizeInRAM, 'data), renderer := func(Entry e) -> Map { defaultRenderConceptForCRUD(e) }); } void loadEntry(Entry e) { cset(e, codeToProduce := trim(e.codeToProduce)); O data = null; if (anyJavaTokens(e.codeToProduce)) loading "Loading data" { if (isIdentifier(e.codeToProduce)) data = callAndMake(e.codeToProduce); else data = dm_javaEval(e.codeToProduce); } cset(e, +data); cset(e, sizeInRAM := retainedObjectSize(data)); //cset(e, moreInfo := mapPlus(e.more, +loadingTime)); } }