page.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /**
  2. * Text extraction plugin.
  3. */
  4. Draw.loadPlugin(function(ui)
  5. {
  6. // Adds resource for action
  7. mxResources.parse('page=Reorder pages...');
  8. // Adds action
  9. ui.actions.addAction('page', function()
  10. {
  11. var graph = ui.editor.graph;
  12. var pages = ui.pages;
  13. if (pages.length > 1)
  14. {
  15. var counter = 0;
  16. var max = parseInt(prompt('Cycles', '100'));
  17. function schedule()
  18. {
  19. var jitter = 1 + 0.3 * (Math.random() - 0.5);
  20. window.setTimeout(function()
  21. {
  22. graph.getModel().beginUpdate();
  23. try
  24. {
  25. // permute pages
  26. var number = pages.length;
  27. var passes = Math.floor(Math.random() * number) + 1;
  28. console.log(counter + " - page reordering in " + passes + " passes");
  29. for (var i = 0; i < passes; i++)
  30. {
  31. var k = Math.floor(Math.random() * number);
  32. var l = Math.floor(Math.random() * number);
  33. ui.movePage(k, l);
  34. }
  35. }
  36. finally
  37. {
  38. graph.getModel().endUpdate();
  39. }
  40. if (counter++ < max && ui.dialog == null)
  41. {
  42. schedule();
  43. }
  44. }, 15000 * jitter);
  45. }
  46. schedule();
  47. }
  48. else
  49. {
  50. ui.alert(mxResources.get('nothingIsSelected'));
  51. }
  52. });
  53. // Adds resource for action
  54. mxResources.parse('place=Place pages...');
  55. // Adds action
  56. ui.actions.addAction('place', function()
  57. {
  58. var graph = ui.editor.graph;
  59. var pages = ui.pages;
  60. if (pages.length > 1)
  61. {
  62. var counter = 0;
  63. var max = parseInt(prompt('Cycles', '100'));
  64. function schedule()
  65. {
  66. var jitter = 1 + 0.3 * (Math.random() - 0.5);
  67. window.setTimeout(function()
  68. {
  69. graph.getModel().beginUpdate();
  70. try
  71. {
  72. // first insert some pages (at most 3 at a time)
  73. var n = Math.floor(Math.random() * 4); // how many to insert?
  74. console.log(counter + " - inserting " + n + " pages");
  75. for (var i = 0; i < n; i++)
  76. {
  77. var k = Math.floor(Math.random() * 4000);
  78. var page = ui.createPage("Page " + k);
  79. var change = new ChangePage(ui, page, page, ui.pages.length);
  80. graph.model.execute(change);
  81. }
  82. // next delete some pages (at most 3 at a time)
  83. n = Math.floor(Math.random() * 4); // how many to delete? at least 1 should remain
  84. n = Math.min(n, ui.pages.length - 1);
  85. console.log(counter + " - removing " + n + " pages");
  86. for (var i = 0; i < n; i++)
  87. {
  88. var number = ui.pages.length;
  89. var k = Math.floor(Math.random() * number); // which one to delete?
  90. ui.removePage(ui.pages[k]);
  91. }
  92. // permute remaining pages
  93. pages = ui.pages;
  94. var number = pages.length;
  95. var passes = Math.floor(Math.random() * number) + 1;
  96. console.log(counter + " - moving " + passes + " pages");
  97. for (var i = 0; i < passes; i++)
  98. {
  99. var k = Math.floor(Math.random() * number);
  100. var l = Math.floor(Math.random() * number);
  101. ui.movePage(k, l);
  102. }
  103. }
  104. finally
  105. {
  106. graph.getModel().endUpdate();
  107. }
  108. if (counter++ < max && ui.dialog == null)
  109. {
  110. schedule();
  111. }
  112. }, 15000 * jitter);
  113. }
  114. schedule();
  115. }
  116. else
  117. {
  118. ui.alert(mxResources.get('nothingIsSelected'));
  119. }
  120. });
  121. var menu = ui.menus.get('extras');
  122. var oldFunct = menu.funct;
  123. menu.funct = function(menu, parent)
  124. {
  125. oldFunct.apply(this, arguments);
  126. ui.menus.addMenuItems(menu, ['-', 'page', 'place'], parent);
  127. };
  128. });