my_dict_list.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import { Grid, h } from "../../node_modules/gridjs/dist/gridjs.module.js";
  2. export var _rowSelected = new Array();
  3. const grid = new gridjs.Grid({
  4. sort: {
  5. multiColumn: false,
  6. server: {
  7. url: (prev, columns) => {
  8. if (!columns.length) return prev;
  9. const col = columns[0];
  10. const dir = col.direction === 1 ? 'asc' : 'desc';
  11. let colName = ['id', 'word','type','grammar','mean','factors','confidence','updated_at'][col.index];
  12. return `${prev}&order=${colName}&dir=${dir}`;
  13. }
  14. }
  15. },
  16. columns: [
  17. {
  18. name: 'Sel',
  19. hidden: false,
  20. sort: false,
  21. formatter: (cell, row) => {
  22. return h('input', {
  23. type:'checkbox',
  24. className: 'py-2 mb-4 px-4 border',
  25. id:"cb-"+row.cells[1].data,
  26. onClick: () =>{
  27. let id = row.cells[1].data;
  28. if(document.querySelector("#cb-"+id).checked){
  29. _rowSelected.push(id);
  30. console.log("checked",_rowSelected);
  31. }else{
  32. _rowSelected.splice(_rowSelected.findIndex(item => item ===id),1);
  33. console.log("remove",_rowSelected);
  34. }
  35. }
  36. }, '');
  37. }
  38. },
  39. {
  40. name: 'id',
  41. hidden: true
  42. },
  43. 'word',
  44. {
  45. name:'type',
  46. sort: false,
  47. },
  48. {
  49. name:'grammar',
  50. sort: false,
  51. },
  52. {
  53. name:'mean',
  54. sort: false,
  55. },
  56. {
  57. name:'factors',
  58. sort: false,
  59. },
  60. 'confidence','created_at',
  61. {
  62. name: 'Actions',
  63. sort: false,
  64. hidden:true,
  65. formatter: (cell, row) => {
  66. return h('button', {
  67. className: 'py-2 mb-4 px-4 border rounded-md text-white bg-blue-600',
  68. onClick: () =>{
  69. }
  70. }, 'Edit');
  71. }
  72. }
  73. ],
  74. server: {
  75. url: '../api/user_dicts.php?op=index&view=user',
  76. then: data => data.data.rows.map(card => [null,card.id,card.word, card.type, card.grammar, card.mean, card.factors, card.confidence, card.updated_at,null]),
  77. total: data => data.data.count
  78. },
  79. pagination: {
  80. enabled: true,
  81. limit:30,
  82. server: {
  83. url: (prev, page, limit) => `${prev}&limit=${limit}&offset=${page * limit}`
  84. }
  85. },
  86. search: {
  87. server: {
  88. url: (prev, keyword) => `${prev}&search=${keyword}`
  89. }
  90. },
  91. resizable: true,
  92. }).render(document.getElementById("userfilelist"));
  93. //grid.on('rowClick', (...args) => console.log('row: ' + JSON.stringify(args), args));
  94. //grid.on('cellClick', (...args) => console.log(cell,args));
  95. document.querySelector("#to_recycle").onclick = function(){
  96. if(_rowSelected.length>0){
  97. if(confirm(`删除${_rowSelected.length}个单词,此操作不能恢复。`)){
  98. $.getJSON("../api/user_dicts.php",
  99. {
  100. op:'delete',
  101. id:JSON.stringify(_rowSelected)
  102. },
  103. function(data){
  104. if(data.ok){
  105. grid.forceRender();
  106. alert(`delete ok `);
  107. }
  108. });
  109. }
  110. }
  111. }