京都のkintone用javascript
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

120 Zeilen
2.8KB

  1. import eventManager from "@/event/manager";
  2. import { CancelError, Message } from "@/exception";
  3. import { ErrorDialog } from "@/middleware/swal";
  4. import bulkRequest from "@/rest-api/bulk";
  5. export const apptemplate = (
  6. callback: (options: {
  7. setEvent: (event: Event) => void;
  8. needReloadAtEnd: (need: boolean) => void;
  9. }) => Promise<void>
  10. ) => {
  11. return async () => {
  12. try {
  13. const events: Event[] = [];
  14. let needReloadAtEnd = false;
  15. await callback({
  16. setEvent: (event: Event) => {
  17. events.push(event);
  18. },
  19. needReloadAtEnd: (need: boolean) => {
  20. needReloadAtEnd = need;
  21. },
  22. });
  23. // 保存処理
  24. if (!bulkRequest.isSaved()) {
  25. await bulkRequest.save();
  26. }
  27. // イベント処理
  28. if (events.length !== 0) {
  29. console.log("イベント発生");
  30. eventManager.init();
  31. for (const [index, event] of events.entries()) {
  32. window.dispatchEvent(event);
  33. }
  34. await eventManager.waitEnd();
  35. console.log("イベント処理終了");
  36. }
  37. // 保存処理
  38. if (!bulkRequest.isSaved()) {
  39. await bulkRequest.save();
  40. }
  41. // 再読込
  42. if (needReloadAtEnd) {
  43. location.reload();
  44. }
  45. } catch (e) {
  46. if (e instanceof CancelError) {
  47. console.log("canceled");
  48. return;
  49. } else if (e instanceof Message) {
  50. ErrorDialog.fire({
  51. text: e.message,
  52. });
  53. return;
  54. }
  55. ErrorDialog.fire();
  56. throw e;
  57. }
  58. };
  59. };
  60. export const eventHnalder = (
  61. callback: (
  62. event: any,
  63. options: { setEvent: (event: Event) => void }
  64. ) => Promise<any>
  65. ) => {
  66. return async (event: any) => {
  67. try {
  68. const events: Event[] = [];
  69. const ret = await callback(event, {
  70. setEvent: (event: Event) => {
  71. events.push(event);
  72. },
  73. });
  74. // 保存処理
  75. if (!bulkRequest.isSaved()) {
  76. await bulkRequest.save();
  77. }
  78. // イベント処理
  79. if (events.length !== 0) {
  80. console.log("イベント発生");
  81. eventManager.init();
  82. for (const [index, event] of events.entries()) {
  83. window.dispatchEvent(event);
  84. }
  85. await eventManager.waitEnd();
  86. console.log("イベント処理終了");
  87. }
  88. // 保存処理
  89. if (!bulkRequest.isSaved()) {
  90. await bulkRequest.save();
  91. }
  92. return ret;
  93. } catch (e) {
  94. if (e instanceof CancelError) {
  95. console.log("canceled");
  96. return false;
  97. } else if (e instanceof Message) {
  98. console.error("message", e.message);
  99. ErrorDialog.fire({
  100. text: e.message,
  101. });
  102. return false;
  103. }
  104. ErrorDialog.fire();
  105. console.error(e);
  106. return false;
  107. }
  108. };
  109. };