designer_page.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. function Show_tables_in_landing_page(db)
  2. {
  3. Load_first_page(db, function (page) {
  4. if (page) {
  5. Load_HTML_for_page(page.pg_nr);
  6. selected_page = page.pg_nr;
  7. } else {
  8. Show_new_page_tables(true);
  9. }
  10. });
  11. }
  12. function Save_to_new_page(db, page_name, table_positions, callback)
  13. {
  14. Create_new_page(db, page_name, function (page) {
  15. if (page) {
  16. var tbl_cords = [];
  17. for (var pos = 0; pos < table_positions.length; pos++) {
  18. table_positions[pos].pdf_pg_nr = page.pg_nr;
  19. Save_table_positions(table_positions[pos], function (id) {
  20. tbl_cords.push(id);
  21. if (table_positions.length === tbl_cords.length) {
  22. page.tbl_cords = tbl_cords;
  23. DesignerOfflineDB.addObject('pdf_pages', page);
  24. }
  25. });
  26. }
  27. if (typeof callback !== 'undefined') {
  28. callback(page);
  29. }
  30. }
  31. });
  32. }
  33. function Save_to_selected_page(db, page_id, page_name, table_positions, callback)
  34. {
  35. Delete_page(page_id);
  36. Save_to_new_page(db, page_name, table_positions, function (page) {
  37. if (typeof callback !== 'undefined') {
  38. callback(page);
  39. }
  40. selected_page = page.pg_nr;
  41. });
  42. }
  43. function Create_new_page(db, page_name, callback)
  44. {
  45. var newPage = new PDFPage(db, page_name);
  46. DesignerOfflineDB.addObject('pdf_pages', newPage, function (pg_nr) {
  47. newPage.pg_nr = pg_nr;
  48. if (typeof callback !== 'undefined') {
  49. callback(newPage);
  50. }
  51. });
  52. }
  53. function Save_table_positions(positions, callback)
  54. {
  55. DesignerOfflineDB.addObject('table_coords', positions, callback);
  56. }
  57. function Create_page_list(db, callback)
  58. {
  59. DesignerOfflineDB.loadAllObjects('pdf_pages', function (pages) {
  60. var html = "";
  61. for (var p = 0; p < pages.length; p++) {
  62. var page = pages[p];
  63. if (page.db_name == db) {
  64. html += '<option value="' + page.pg_nr + '">';
  65. html += escapeHtml(page.page_descr) + '</option>';
  66. }
  67. }
  68. if (typeof callback !== 'undefined') {
  69. callback(html);
  70. }
  71. });
  72. }
  73. function Delete_page(page_id, callback)
  74. {
  75. DesignerOfflineDB.loadObject('pdf_pages', page_id, function (page) {
  76. if (page) {
  77. for (var i = 0; i < page.tbl_cords.length; i++) {
  78. DesignerOfflineDB.deleteObject('table_coords', page.tbl_cords[i]);
  79. }
  80. DesignerOfflineDB.deleteObject('pdf_pages', page_id, callback);
  81. }
  82. });
  83. }
  84. function Load_first_page(db, callback)
  85. {
  86. DesignerOfflineDB.loadAllObjects('pdf_pages', function (pages) {
  87. var firstPage = null;
  88. for (var i = 0; i < pages.length; i++) {
  89. var page = pages[i];
  90. if (page.db_name == db) {
  91. // give preference to a page having same name as the db
  92. if (page.page_descr == db) {
  93. callback(page);
  94. return;
  95. }
  96. if (firstPage == null) {
  97. firstPage = page;
  98. }
  99. }
  100. }
  101. callback(firstPage);
  102. });
  103. }
  104. function Show_new_page_tables(check)
  105. {
  106. var all_tables = $("#id_scroll_tab").find("td input:checkbox");
  107. all_tables.prop('checked', check);
  108. for (var tab = 0; tab < all_tables.length; tab++) {
  109. var input = all_tables[tab];
  110. if (input.value) {
  111. var element = document.getElementById(input.value);
  112. element.style.top = Get_random(550, 20) + 'px';
  113. element.style.left = Get_random(700, 20) + 'px';
  114. VisibleTab(input, input.value);
  115. }
  116. }
  117. selected_page = -1;
  118. $("#page_name").text(PMA_messages.strUntitled);
  119. MarkUnsaved();
  120. }
  121. function Load_HTML_for_page(page_id)
  122. {
  123. Show_new_page_tables(false);
  124. Load_page_objects(page_id, function (page, tbl_cords) {
  125. $("#name-panel").find("#page_name").text(page.page_descr);
  126. MarkSaved();
  127. for (var t = 0; t < tbl_cords.length; t++) {
  128. var tb_id = db + '.' + tbl_cords[t].table_name;
  129. var table = document.getElementById(tb_id);
  130. table.style.top = tbl_cords[t].y + 'px';
  131. table.style.left = tbl_cords[t].x + 'px';
  132. var checkbox = document.getElementById("check_vis_" + tb_id);
  133. checkbox.checked = true;
  134. VisibleTab(checkbox, checkbox.value);
  135. }
  136. selected_page = page.pg_nr;
  137. });
  138. }
  139. function Load_page_objects(page_id, callback)
  140. {
  141. DesignerOfflineDB.loadObject('pdf_pages', page_id, function (page) {
  142. var tbl_cords = [];
  143. var count = page.tbl_cords.length;
  144. for (var i = 0; i < count; i++) {
  145. DesignerOfflineDB.loadObject('table_coords', page.tbl_cords[i], function (tbl_cord) {
  146. tbl_cords.push(tbl_cord);
  147. if (tbl_cords.length == count) {
  148. if (typeof callback !== 'undefined') {
  149. callback(page, tbl_cords);
  150. }
  151. }
  152. });
  153. }
  154. });
  155. }
  156. function Get_random(max, min)
  157. {
  158. var val = Math.random() * (max - min) + min;
  159. return Math.floor(val);
  160. }