<!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);
});
});