render method

  1. @override
ValueProvider render(
  1. JSONRender render,
  2. DivElement output,
  3. dynamic node,
  4. dynamic nodeOriginal,
  5. 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();
}