dashboard.ui.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. $(function()
  2. {
  3. if($('#upgradeModal').length) zui.Modal.open({id: 'upgradeModal'});
  4. else if($('#expiredModal').length) zui.Modal.open({id: 'expiredModal'});
  5. else if($('#metriclibModal').length) zui.Modal.open({id: 'metriclibModal'});
  6. });
  7. function deleteBlock(dashboard, data, block)
  8. {
  9. zui.Modal.confirm(data.confirm).then(result =>
  10. {
  11. if(!result) return;
  12. const url = zui.formatString(data.url, block);
  13. $.ajaxSubmit({url: url, method: 'GET', onSuccess: () => dashboard.delete(block.id)});
  14. });
  15. }
  16. function editBlock(dashboard, data, block)
  17. {
  18. zui.Modal.open({url: zui.formatString(data.url, block), size: data.size});
  19. }
  20. function createBlock(dashboard, data, block)
  21. {
  22. zui.Modal.open({url: zui.formatString(data.url, block), size: data.size});
  23. }
  24. function resetBlocks(dashboard, data, block)
  25. {
  26. zui.Modal.confirm(data.confirm).then(result =>
  27. {
  28. if(!result) return;
  29. const url = zui.formatString(data.url, block);
  30. $.ajaxSubmit({url: url, load: false, method: 'GET', onSuccess: () => loadComponent('#dashboard')});
  31. });
  32. }
  33. /**
  34. * Load block from url.
  35. *
  36. * @param {string} id Block ID.
  37. * @param {string} url Load url.
  38. */
  39. window.loadBlock = function(id, url)
  40. {
  41. $('#dashboard').dashboard('load', id, url);
  42. };
  43. /**
  44. * Handle layout change and save to server.
  45. *
  46. * @param {object} layout
  47. */
  48. window.handleLayoutChange = function(layout)
  49. {
  50. const form = new FormData();
  51. Object.keys(layout).forEach(key =>
  52. {
  53. const block = layout[key];
  54. form.append(`block[${key}][left]`, block.left);
  55. form.append(`block[${key}][top]`, block.top);
  56. });
  57. $.ajaxSubmit(
  58. {
  59. url: $.createLink('block', 'layout'),
  60. data: form
  61. });
  62. };
  63. /**
  64. * Handle block menu click.
  65. *
  66. * @param {object} info
  67. * @param {object} block
  68. */
  69. window.handleClickBlockMenu = function(info, block)
  70. {
  71. const data = info.item.data;
  72. const type = data ? data.type : '';
  73. if(!type) return;
  74. if(type === 'delete') return deleteBlock(this, data, block);
  75. if(type === 'edit') return editBlock(this, data, block);
  76. if(type === 'create') return createBlock(this, data, block);
  77. if(type === 'reset') return resetBlocks(this, data, block);
  78. };
  79. /**
  80. * Toggle Page when the next page btn click.
  81. *
  82. * @param {string} target
  83. */
  84. window.togglePage = function(target)
  85. {
  86. $('#upgradeModal .page-block').addClass('hidden');
  87. $(`#upgradeModal .${target}`).removeClass('hidden');
  88. }