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