<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>ZingGrid: Docs Getting Started</title>
  <!--Script Reference[1]-->
  <script nonce="undefined" src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
  <style>
    html,
    body {
      height: 100%;
      width: 100%;
      margin: 0;
      padding: 0;
    }
    zing-grid[loading] {
      height: 277px;
    }
  </style>
</head>
<body>
  <!--Grid Component Placement[2]-->
  <zing-grid caption="Register Custom Column" editor>
    <zg-data data='[{
          "num": "3",
          "feet": "6",
          "inch": "0",
          "first": "roberto",
          "last": "aguayo",
          "col": "florida state"
      }, {
          "num": "83",
          "feet": "6",
          "inch": "4",
          "first": "braedon",
          "last": "bowman",
          "col": "south alabama"
      }, {
          "num": "67",
          "feet": "6",
          "inch": "6",
          "first": "brett",
          "last": "boyko",
          "col": "nevada-las vegas"
      } ]'></zg-data>
    <zg-colgroup>
      <zg-column index="num" header="#" type="Number"></zg-column>
      <zg-column index="first, last" header="Player" type="fullname"></zg-column>
      <zg-column index="col" type="upper" header="College"></zg-column>
      <zg-column index="feet, inch" header="Height" type="height"></zg-column>
    </zg-colgroup>
  </zing-grid>
  <script>
    ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']); // renderer function for cell
    function heightRenderer(feet, inch, cellRef, $cell) {
      return feet + '"' + inch + "'";
    }
    // renderer function for cell
    function nameRenderer(first, last, cellRef, $cell) {
      return first.toUpperCase() + ' ' + last.toUpperCase();
    }
    // renderer function for cell
    function upperRenderer(mRawData, cellRef, $cell) {
      return mRawData.toUpperCase();
    }
    // hooks for editor
    let editor = {
      init($cell, editorField) {
        let oDOMInput = document.createElement('input');
        oDOMInput.type = 'text';
        oDOMInput.autoComplete = 'off';
        oDOMInput.ariaInvalid = false;
        editorField.appendChild(oDOMInput);
      },
      onOpen($cell, editorField, mData) {
        let oDOMInput = editorField.querySelector('input');
        if (!mData) {
          mData = editorField.value || '';
        }
        oDOMInput.value = String(mData);
      },
      onClose(editorField) {
        return 'Edited: ' + editorField.querySelector('input').value;
      },
    };
    ZingGrid.registerCellType('height', {
      renderer: heightRenderer,
    });
    ZingGrid.registerCellType('fullname', {
      renderer: nameRenderer,
    });
    ZingGrid.registerCellType('upper', {
      editor: editor,
      renderer: upperRenderer,
    });
  </script>
</body>
</html>
       
      
        
        <!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>ZingGrid: Docs Getting Started</title>
  <!--Script Reference[1]-->
  <script src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
</head>
<body>
  <!--Grid Component Placement[2]-->
  <zing-grid caption="Register Custom Column" editor>
    <zg-data data='[{
          "num": "3",
          "feet": "6",
          "inch": "0",
          "first": "roberto",
          "last": "aguayo",
          "col": "florida state"
      }, {
          "num": "83",
          "feet": "6",
          "inch": "4",
          "first": "braedon",
          "last": "bowman",
          "col": "south alabama"
      }, {
          "num": "67",
          "feet": "6",
          "inch": "6",
          "first": "brett",
          "last": "boyko",
          "col": "nevada-las vegas"
      } ]'></zg-data>
    <zg-colgroup>
      <zg-column index="num" header="#" type="Number"></zg-column>
      <zg-column index="first, last" header="Player" type="fullname"></zg-column>
      <zg-column index="col" type="upper" header="College"></zg-column>
      <zg-column index="feet, inch" header="Height" type="height"></zg-column>
    </zg-colgroup>
  </zing-grid>
</body>
</html>
       
      
        html,
body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0;
}
       
      
          // renderer function for cell
  function heightRenderer(feet, inch, cellRef, $cell) {
    return feet + '"' + inch + "'";
  }
  // renderer function for cell
  function nameRenderer(first, last, cellRef, $cell) {
    return first.toUpperCase() + ' ' + last.toUpperCase();
  }
  // renderer function for cell
  function upperRenderer(mRawData, cellRef, $cell) {
    return mRawData.toUpperCase();
  }
  // hooks for editor
  let editor = {
    init($cell, editorField) {
      let oDOMInput = document.createElement('input');
      oDOMInput.type = 'text';
      oDOMInput.autoComplete = 'off';
      oDOMInput.ariaInvalid = false;
      editorField.appendChild(oDOMInput);
    },
    onOpen($cell, editorField, mData) {
      let oDOMInput = editorField.querySelector('input');
      if (!mData) {
        mData = editorField.value || '';
      }
      oDOMInput.value = String(mData);
    },
    onClose(editorField) {
      return 'Edited: ' + editorField.querySelector('input').value;
    },
  };
  ZingGrid.registerCellType('height', {
    renderer: heightRenderer,
  });
  ZingGrid.registerCellType('fullname', {
    renderer: nameRenderer,
  });
  ZingGrid.registerCellType('upper', {
    editor: editor,
    renderer: upperRenderer,
  });