<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid Demo</title> <script nonce="undefined" src="https://cdn.zinggrid.com/dev/zinggrid-dev.min.js"></script> <style> /* Overlay */ .zg-body { position: relative; } .zg-body #githubIssuesOverlay { background-color: #090808ab; display: flex; flex-direction: column; justify-content: center; position: absolute; height: 100%; width: 100%; z-index: 999; } .zg-body #githubIssuesOverlay p { color: #fff; font-family: sans-serif; font-size: 1.5rem; text-align: center; } zing-grid[loading] { height: 395px; } </style> </head> <body> <h3>`[headers]` sets headers for the request.</h3> <div class="zg-body"> <div id="githubIssuesOverlay"> <p>Example only.</p> <p><a href="https://codesandbox.io/p/sandbox/zinggrid-github-issues-357hcd">Please fork demo here.</a></p> </div> <zing-grid context-menu caption="Github Issues Demo" editor-controls> <zg-data src="https://api.github.com/repos/zgdemo123/zgtest/issues"> <zg-param name="idKey" value="number"></zg-param> <zg-param name="headers" value='{"Authorization": "token 288483a06d7ca33d9abfaf5cfda1dda99c5c23da"}'></zg-param> <zg-param name="readOptions" value='{"method": "GET"}'></zg-param> <zg-param name="createOptions" value='{"method": "POST", "body": "buildInsert"}'></zg-param> <zg-param name="updateOptions" value='{"row":{"method": "PATCH", "body": "buildUpdate"}}'></zg-param> <zg-param name="deleteOptions" value='{"exclude": true}'></zg-param> </zg-data> <zg-colgroup> <zg-column index="number" header="Number.Stats" editor="recordeditor"></zg-column> <zg-column type="select" type-select-options="open,close" index="state" header="Number.State"></zg-column> <zg-column index="title" header="Title"></zg-column> <zg-column index="body" header="Description"></zg-column> <zg-column type="editor" header="Edit Issue"></zg-column> <zg-column type="remover" header="Remove Issue"></zg-column> </zg-colgroup> </zing-grid> </div> <script> ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']); const zgRef = document.querySelector('zing-grid'); var data; function buildInsert(record, method, src) { return { title: "-- Custom", body: "-- From Function", }; } function buildUpdate(record) { return { title: record.title, body: record.body, state: record.state, } } // Edits an issue const editIssue = function(input, number) { // Header for post request const pHeader = { method: 'PATCH', body: JSON.stringify(input), headers: new Headers({ 'Authorization': 'token 288483a06d7ca33d9abfaf5cfda1dda99c5c23da' }) }; // Fetch request to edit issue fetch('https://api.github.com/repos/zgdemo123/zgtest/issues/' + number, pHeader) .then(response => { if (!response.ok) throw Error('Issue With Fetch'); return response.json() }) .then(newIssue => { console.log('Issue edited'); }) .catch(err => { console.error(`--- error occurred ---\n ${err}`) }) }; zgRef.executeOnLoad(function() { zgRef.addEventListener('data:recordbeforedelete', function(e) { console.log("Trigger delete event"); console.log(e.detail.ZGData); editIssue({ state: "closed" }, e.detail.ZGData.data.number); }); }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid Demo</title> <script src="https://cdn.zinggrid.com/dev/zinggrid-dev.min.js"></script> </head> <body> <h3>`[headers]` sets headers for the request.</h3> <div class="zg-body"> <div id="githubIssuesOverlay"> <p>Example only.</p> <p><a href="https://codesandbox.io/p/sandbox/zinggrid-github-issues-357hcd">Please fork demo here.</a></p> </div> <zing-grid context-menu caption="Github Issues Demo" editor-controls> <zg-data src="https://api.github.com/repos/zgdemo123/zgtest/issues"> <zg-param name="idKey" value="number"></zg-param> <zg-param name="headers" value='{"Authorization": "token 288483a06d7ca33d9abfaf5cfda1dda99c5c23da"}'></zg-param> <zg-param name="readOptions" value='{"method": "GET"}'></zg-param> <zg-param name="createOptions" value='{"method": "POST", "body": "buildInsert"}'></zg-param> <zg-param name="updateOptions" value='{"row":{"method": "PATCH", "body": "buildUpdate"}}'></zg-param> <zg-param name="deleteOptions" value='{"exclude": true}'></zg-param> </zg-data> <zg-colgroup> <zg-column index="number" header="Number.Stats" editor="recordeditor"></zg-column> <zg-column type="select" type-select-options="open,close" index="state" header="Number.State"></zg-column> <zg-column index="title" header="Title"></zg-column> <zg-column index="body" header="Description"></zg-column> <zg-column type="editor" header="Edit Issue"></zg-column> <zg-column type="remover" header="Remove Issue"></zg-column> </zg-colgroup> </zing-grid> </div> </body> </html>
/* Overlay */ .zg-body { position: relative; } .zg-body #githubIssuesOverlay { background-color: #090808ab; display: flex; flex-direction: column; justify-content: center; position: absolute; height: 100%; width: 100%; z-index: 999; } .zg-body #githubIssuesOverlay p { color: #fff; font-family: sans-serif; font-size: 1.5rem; text-align: center; }
const zgRef = document.querySelector('zing-grid'); var data; function buildInsert(record, method, src) { return { title: "-- Custom", body: "-- From Function", }; } function buildUpdate(record) { return { title: record.title, body: record.body, state: record.state, } } // Edits an issue const editIssue = function(input, number) { // Header for post request const pHeader = { method: 'PATCH', body: JSON.stringify(input), headers: new Headers({ 'Authorization': 'token 288483a06d7ca33d9abfaf5cfda1dda99c5c23da' }) }; // Fetch request to edit issue fetch('https://api.github.com/repos/zgdemo123/zgtest/issues/' + number, pHeader) .then(response => { if (!response.ok) throw Error('Issue With Fetch'); return response.json() }) .then(newIssue => { console.log('Issue edited'); }) .catch(err => { console.error(`--- error occurred ---\n ${err}`) }) }; zgRef.executeOnLoad(function() { zgRef.addEventListener('data:recordbeforedelete', function(e) { console.log("Trigger delete event"); console.log(e.detail.ZGData); editIssue({ state: "closed" }, e.detail.ZGData.data.number); }); });