Skip to content

Commit b076cc7

Browse files
committed
example with pager
1 parent 4267f09 commit b076cc7

File tree

3 files changed

+71
-8
lines changed

3 files changed

+71
-8
lines changed

dist/index.html

Lines changed: 68 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
<title>Generic Crud Table</title>
77
<link rel='icon' type='image/png' href='favicon.png'>
88
<link rel='stylesheet' href='global.css'>
9+
<link rel='stylesheet' href='https://ivosdc.github.io/svelte-generic-table-pager/build/table-pager.css'>
10+
<script defer src='https://ivosdc.github.io/svelte-generic-table-pager/build/table-pager.js'></script>
911
<link rel='stylesheet' href='build/crud-table.css'>
1012
<script defer src='build/crud-table.js'></script>
1113
</head>
@@ -17,6 +19,7 @@ <h1>&lt;crud-table&gt;&lt;/crud-table&gt;</h1>
1719
<p></p>
1820
<hr>
1921
<crud-table></crud-table>
22+
<table-pager></table-pager>
2023
<hr>
2124
</span style="text-align: right"><a href="https://ivolution.one">ivolution.one product - MIT License</a>
2225
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7V5M288MUT7GE&source=url">donate
@@ -31,11 +34,56 @@ <h1>&lt;crud-table&gt;&lt;/crud-table&gt;</h1>
3134
</body>
3235

3336
<script>
34-
let table_data = [
37+
38+
// config table-pager
39+
let table_data = [];
40+
let myData = [
41+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
42+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
43+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
44+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
45+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
46+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
47+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
48+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
49+
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
3550
{id: '127', name: 'myName', job: 'code', private: 'not editable'},
3651
{id: '127', name: 'myName2', job: 'code2', private: 'not editable'}
37-
];
52+
];
53+
54+
const pager_config = {
55+
lines: 5
56+
}
57+
58+
let currentPage = 1;
59+
let maxPages = 1;
60+
let genericTablePager = document.querySelector('table-pager');
61+
genericTablePager.setAttribute('pager_config', JSON.stringify(pager_config))
62+
genericTablePager.setAttribute('pager_data', JSON.stringify(myData))
63+
3864

65+
genericTablePager.addEventListener('newpage', (e) => {
66+
console.log(e)
67+
table_data = e.detail.body;
68+
currentPage = e.detail.page;
69+
maxPages = e.detail.pages;
70+
refresh();
71+
});
72+
73+
74+
function refresh_pager() {
75+
genericTablePager.setAttribute('pager_data', JSON.stringify(myData));
76+
if (currentPage > 1) {
77+
genericTablePager.shadowRoot.getElementById('left').click();
78+
genericTablePager.shadowRoot.getElementById('right').click();
79+
} else {
80+
genericTablePager.shadowRoot.getElementById('right').click();
81+
genericTablePager.shadowRoot.getElementById('left').click();
82+
}
83+
}
84+
85+
86+
//config crud-table
3987
let table_config = {
4088
name: 'Awesome',
4189
options: ['CREATE', 'EDIT', 'DELETE', 'DETAILS'],
@@ -55,27 +103,41 @@ <h1>&lt;crud-table&gt;&lt;/crud-table&gt;</h1>
55103

56104
genericCrudTable.addEventListener('create', () => {
57105
console.log('create');
58-
table_data.push({name: 'myName', job: 'code', private: 'not editable'});
106+
myData.push({name: 'myName', job: 'code', private: 'not editable'});
59107
refresh();
108+
refresh_pager();
60109
});
61110

62-
genericCrudTable.addEventListener('details', (e) => {
111+
genericCrudTable.addEventListener('details', (e) => {
63112
console.log('details');
64113
console.log(e.detail.body);
65114
});
66115

67116
genericCrudTable.addEventListener('update', (e) => {
68117
console.log('update');
69118
console.log(e.detail.body);
70-
table_data[e.detail.id] = e.detail.body;
119+
let BreakException = {};
120+
for(let i = 0; i < myData.length; i++) {
121+
if (JSON.stringify(myData[i]) === JSON.stringify(table_data[e.detail.id])) {
122+
myData[i] = e.detail.body;
123+
break;
124+
}
125+
}
71126
refresh();
127+
refresh_pager();
72128
});
73129

74130
genericCrudTable.addEventListener('delete', (e) => {
75131
console.log('delete: ' + JSON.stringify(e.detail.body));
76132
console.log('offset in view:' + e.detail.id);
77-
table_data = arrayRemove(table_data, e.detail.id);
133+
for(let i = 0; i < myData.length; i++) {
134+
if (JSON.stringify(myData[i]) === JSON.stringify(table_data[e.detail.id])) {
135+
myData = arrayRemove(myData, i)
136+
break;
137+
}
138+
}
78139
refresh();
140+
refresh_pager();
79141
});
80142

81143
genericCrudTable.addEventListener('sort', (e) => {

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "svelte-generic-crud-table",
3-
"version": "1.5.2",
3+
"version": "1.5.3",
44
"description": "<crud-table> renders object-arrays with options-panel and inline edit per row. Dispatches events for ongoing data handling. As self-containing webcomponent or for Svelte in 60KB",
55
"main": "dist/build/crud-table.js",
66
"module": "dist/build/crud-table.mjs",
@@ -23,6 +23,7 @@
2323
"crud",
2424
"self-contained",
2525
"sort",
26+
"pager",
2627
"inline edit",
2728
"fancy icons",
2829
"60KB",

0 commit comments

Comments
 (0)