TableAjax.php.init.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. jQuery(document).ready(function(){
  2. jQuery('#' + TABLE_AJAX_NODE_ID).TableAjax({
  3. namespace: NAMESPACE,
  4. url: URL_LOAD_AJAX_BASE,
  5. removeTheGeomAjaxUrl: URL_REMOVE_THE_GEOM_AJAX,
  6. moreFunctionsCellAjaxUrl: URL_MORE_FUNCTIONS_CELL_AJAX,
  7. editInlineSaveUrl: URL_EDIT_INLINE_SAVE,
  8. theGeomSaveUrl: URL_THE_GEOM_SAVE,
  9. pageSizeSave: URL_PAGE_SIZE_SAVE,
  10. hiddenColsSaveUrl: URL_HIDDEN_COLS_SAVE,
  11. editInlineUrl: URL_EDIT_INLINE,
  12. addUserTableFilterAjaxUrl: URL_ADD_USER_TABLE_FILTER_AJAX,
  13. rmUserTableFilterAjaxUrl: URL_RM_USER_TABLE_FILTER_AJAX,
  14. hasAdditionalLayers: HAS_ADDITIONAL_LAYERS,
  15. labelHtml: LABEL_HTML,
  16. userTableFilterUrl: URL_USER_TABLE_FILTER,
  17. columnPicker: true,
  18. filter: true,
  19. filterInit: FILTER_INIT,
  20. forceFilterInit: FIRCE_FILTER_INIT,
  21. debug: false,
  22. height: 400,
  23. sorting: true,
  24. paging: true,
  25. pageSize: PAGE_SIZE,
  26. pageSizes: PAGE_SIZES,
  27. tblFunctions: TABLE_FUNCTIONS,
  28. rowFunctions: ROW_FUNCTIONS,
  29. exportFields: EXPORT_FIELDS,
  30. specialFilterFunctions: SPECIAL_FILTER_FUNCTIONS,
  31. router: function() {
  32. var routes = {
  33. EDIT: global[FUNCTION_EDIT_ROUTE],
  34. HIST: global[FUNCTION_HIST_ROUTE],
  35. FILES: function tableAjaxFiles(args) {
  36. var recordID = args;
  37. if (typeof args == 'object') {
  38. recordID = args.shift();
  39. recordID = parseInt(recordID);
  40. }
  41. if (typeof recordID !== 'number' || recordID <= 0) {
  42. // TODO: msg
  43. return false;
  44. }
  45. var cont = jQuery('#' + TABLE_AJAX_NODE_ID).parent();
  46. cont.hide();
  47. // remove previous task content
  48. var taskCnt = jQuery('#' + TABLE_AJAX_NODE_ID + '_task');
  49. taskCnt.parent().remove();
  50. taskCnt.remove();
  51. var taskCont = jQuery('<div class="AjaxTableCont"></div>').insertBefore(cont);
  52. jQuery('<ul class="breadcrumb">' +
  53. '<li><a href="#" onclick="return tableAjaxBackToTable();">' + LABEL_HTML + '</a></li>' +
  54. '<li class="active">Pliki</li>' +
  55. '</ul>').appendTo(taskCont);
  56. var taskCnt = jQuery('<div id="' + TABLE_AJAX_NODE_ID + '_task" class="AjaxTable-loading"></div>').appendTo(taskCont);
  57. jQuery('<span class="loading-info"> loading ...</span>').appendTo(taskCnt);
  58. jQuery.ajax({
  59. url: URL_RECORD_FILES + '&ID=' + recordID,
  60. type: 'GET',
  61. dataType: 'text',
  62. data: '',
  63. async: true,
  64. success: function(data) {
  65. taskCnt.removeClass('AjaxTable-loading');
  66. jQuery(data).appendTo(taskCnt);
  67. },
  68. error: function(jqXHR, textStatus, errorThrown) {
  69. //console.log('request error:', jqXHR.status, 'txt:', jqXHR.responseText, 'err:', jqXHR);
  70. taskCnt.removeClass('AjaxTable-loading');
  71. var txt = jqXHR.responseText || 'Error';
  72. if (jqXHR.status == 404) {
  73. jQuery('<div class="container"><div class="alert alert-danger">' + txt + '</div></div>').appendTo(taskCnt);
  74. } else {
  75. jQuery('<div class="container"><div class="alert alert-danger">' + txt + '</div></div>').appendTo(taskCnt);
  76. }
  77. }
  78. });
  79. //return false;
  80. },
  81. CREATE: TableAjax__CREATE_Route,
  82. };
  83. var routePath = location.hash;
  84. //console.log('location.hash: ' + routePath);
  85. if (location.hash == '' || location.hash == '#') {
  86. return false;
  87. }
  88. if (routePath.charAt(0) == '#') {
  89. routePath = routePath.substr(1);
  90. }
  91. //console.log('routePath: ' + routePath);
  92. var parts = routePath.split('/');
  93. var task = parts.shift();
  94. //console.log('task(' + task + ') parts:');
  95. //console.log(parts);
  96. if (task in routes && typeof routes[task] == 'function') {
  97. var con = jQuery('#' + TABLE_AJAX_NODE_ID);
  98. if (con) {
  99. var tblAjax = con.data('TableAjax');
  100. if (tblAjax) {
  101. tblAjax.popoverCellRemove();
  102. }
  103. }
  104. routes[task](parts);
  105. } else {
  106. return false;
  107. }
  108. },
  109. filtersClean: true,
  110. longDesc: true
  111. });
  112. });
  113. function tableAjaxBackToTable() {
  114. var cont = jQuery('#' + TABLE_AJAX_NODE_ID).parent();
  115. cont.show();
  116. var taskCont = jQuery('#' + TABLE_AJAX_NODE_ID + '_task').parent();
  117. taskCont.remove();
  118. // reload first page
  119. var con = jQuery('#' + TABLE_AJAX_NODE_ID);
  120. con.TableAjaxLoadPage();// TODO: load current page
  121. }
  122. function tableAjaxCopy(args) {
  123. var recordID = args;
  124. if (typeof args == 'object') {
  125. recordID = args.shift();
  126. recordID = parseInt(recordID);
  127. }
  128. if (typeof recordID !== 'number' || recordID <= 0) {
  129. // TODO: msg
  130. return false;
  131. }
  132. if (!confirm('Czy na pewno chcesz utworzyc nowy rekord na podstawie danych z rekordu ID = ' + recordID + '?')) {
  133. return false;
  134. }
  135. var cont = jQuery('#' + TABLE_AJAX_NODE_ID).parent();
  136. function notifyAjaxCallback(data) {
  137. var notify = {};
  138. notify.type = (data && data.type)? data.type : '';
  139. notify.msg = (data && data.msg)? data.msg : '';
  140. switch (notify.type) {
  141. case 'success':
  142. if (!notify.msg) notify.msg = 'OK';
  143. break;
  144. case 'info':
  145. if (!notify.msg) notify.msg = '';
  146. break;
  147. case 'error':
  148. if (!notify.msg) notify.msg = 'Wystąpiły błędy';
  149. break;
  150. case 'warning':
  151. notify.type = 'warn';
  152. if (!notify.msg) notify.msg = 'Wystąpiły błędy';
  153. break;
  154. default:
  155. notify.msg = 'Nieznany błąd';
  156. if (data && data.errorCode) notify.msg += ' ' + data.errorCode;
  157. notify.type = '';
  158. }
  159. jQuery.notify(notify.msg, notify.type);
  160. }
  161. var reqData = {};
  162. jQuery.ajax({
  163. data: reqData,
  164. dataType: 'json',
  165. type: "GET",
  166. url: URL_RECORD_COPY + '&ID=' + recordID,
  167. })
  168. .done(function(data, textStatus, jqXHR){
  169. var con = jQuery('#' + TABLE_AJAX_NODE_ID);
  170. con.TableAjaxRefresh();
  171. notifyAjaxCallback(data);
  172. })
  173. .fail(function(jqXHR){// jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
  174. if (jqXHR.responseJSON) {
  175. notifyAjaxCallback(jqXHR.responseJSON);
  176. }
  177. else {
  178. var txt = jqXHR.responseText || 'Wystąpiły błędy';
  179. if (jqXHR.status == 404) {
  180. jQuery.notify(jqXHR.responseText, 'error');
  181. } else {
  182. jQuery.notify(jqXHR.responseText, 'warn');
  183. }
  184. }
  185. });
  186. return false;
  187. }
  188. function hidePopover() {
  189. var con = jQuery('#' + TABLE_AJAX_NODE_ID);
  190. if (con) {
  191. var tblAjax = con.data('TableAjax');
  192. if (tblAjax) {
  193. tblAjax.popoverCellRemove();
  194. }
  195. }
  196. return false;
  197. }
  198. global.tableAjaxBackToTable = tableAjaxBackToTable;
  199. global.tableAjaxCopy = tableAjaxCopy;
  200. global.hidePopover = hidePopover;