render method
ValueProvider
render(
- JSONRender render,
- DivElement output,
- dynamic node,
- dynamic nodeOriginal,
- NodeKey nodeKey,
override
Implementation
@override
ValueProvider render(JSONRender render, DivElement output, node, nodeOriginal,
NodeKey nodeKey) {
var paging = JSONPaging.from(node)!;
var needsPaging = paging.needsPaging;
var valueSet = JSONValueSet(true);
var table = TableElement();
if (needsPaging) {
var tHeader = table.createTHead();
var headerRow = tHeader.addRow();
this.applyCSS(render, headerRow);
var cell = headerRow.addCell();
cell.style.fontWeight = 'bold';
var pagingDiv =
_createPagingDiv(render, output, node, nodeOriginal, nodeKey, paging);
cell.children.add(pagingDiv);
}
{
var tbody = table.createTBody();
var entry = paging.elements;
var entryNodeKey = nodeKey.append(paging.elementsEntryKey);
bool valid = render.validateNode(entry, node, entryNodeKey);
if (valid) {
var valueSetEntry = JSONValueSet();
valueSet.put(entryNodeKey, valueSetEntry.asValueProvider());
var row = tbody.addRow();
this.applyCSS(render, row);
var cell = row.addCell();
var elemContent = createDivInline();
var elemValueProvider =
render.renderNode(elemContent, entry, node, entryNodeKey);
valueSetEntry.put(entryNodeKey, elemValueProvider);
if (elemValueProvider != null) {
elemContent.style.verticalAlign = 'top';
cell.children.add(elemContent);
}
} else {
valueSet.put(entryNodeKey, null);
}
}
if (needsPaging) {
var tFoot = table.createTFoot();
var footRow = tFoot.addRow();
this.applyCSS(render, footRow);
var cell = footRow.addCell();
cell.style.fontWeight = 'bold';
var pagingDiv =
_createPagingDiv(render, output, node, nodeOriginal, nodeKey, paging);
cell.children.add(pagingDiv);
}
output.children.add(table);
this.applyCSS(render, output, extraElements: [table]);
return valueSet.asValueProvider();
}