pushForm.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. /**
  2. * admin/pushForm
  3. */
  4. var mplus_admin_pushForm = function(){
  5. //상속
  6. mplus_admin.call(this);
  7. var self = this;
  8. //변수
  9. var $btnSave = $('#btnSave'),
  10. $crudServiceBaseUrl = contextPath + "/admin/pushform";
  11. var pushFormList = [];
  12. var pushFormInfo = {};
  13. var pageSize = 15;
  14. /**
  15. * 초기화
  16. */
  17. this.init = function(){
  18. initPushFormList(1);
  19. setPageList(1);
  20. if($('#page_1')!=null) $('#page_1').addClass('active');
  21. initDropdownList();
  22. addEvent();
  23. $('#sltFormType').on('change', function(e){
  24. formTypeChange(e.currentTarget.value);
  25. })
  26. };
  27. var initDropdownList = function(){
  28. var opt = {
  29. url: contextPath + "/admin/menu/getList.json",
  30. type : "POST",
  31. dataType : "json"
  32. };
  33. var success = function(data){
  34. for( var i = 0; i < data.length; i++ ){
  35. var item = data[i];
  36. if( (item.accessUriAddr).indexOf(".page") > 0 ){
  37. $('#sltMenu').append("<option value='"+ item.menuId+"'>"+item.menuName+"</option>");
  38. }
  39. };
  40. };
  41. var error = function(xhr,d,t){
  42. };
  43. self.ajaxAdmin( opt, success, error );
  44. }
  45. /**
  46. * 이벤트 등록
  47. */
  48. var addEvent = function(){
  49. $('#btnCreate, #btnCreateEmpty').on('click', function(){
  50. newPushForm();
  51. });
  52. $btnSave.on('click', function(){
  53. savePushForm();
  54. });
  55. };
  56. var formTypeChange = function(value){
  57. if(value=='PAGE'){
  58. $('#formMenu').css('display', 'block');
  59. }else{
  60. $('#formMenu').css('display', 'none');
  61. }
  62. }
  63. var initPushFormList = function(page){
  64. var opt = {
  65. url: $crudServiceBaseUrl + "/getList.json",
  66. type : "POST",
  67. async: false,
  68. dataType : "json",
  69. contentType: "application/json",
  70. data: self.util.stringifyJson({
  71. pageSize: pageSize,
  72. page: page
  73. })
  74. };
  75. var success = function(result){
  76. pushFormList = result.data;
  77. totalCount = result.totalCount;
  78. $('#table_pushForm').empty();
  79. for(var i=0; i<pushFormList.length; i++){
  80. var tr = $('<tr></tr>').clone().attr('seq', i).attr('formId', pushFormList[i].formId);
  81. var tdFormId = $('<td></td>').clone().text(pushFormList[i].formId);
  82. var tdFormType = $('<td></td>').clone().text(pushFormList[i].formType);
  83. var tdMenu = $('<td></td>').clone().text(pushFormList[i].menuName==null? '': pushFormList[i].menuName);
  84. var tdUseYn = $('<td></td>').clone().text(pushFormList[i].useYn);
  85. var tdIncludeNameYn = $('<td></td>').clone().text(pushFormList[i].includeNameYn);
  86. var tdFormDesc = $('<td></td>').clone().text(pushFormList[i].formDesc==null? '': self.util.getBytes(pushFormList[i].formDesc)>20? self.util.cut(pushFormList[i].formDesc, 20)+'...': pushFormList[i].formDesc);
  87. $('#table_pushForm').append(tr.append(tdFormId).append(tdFormType).append(tdMenu).append(tdUseYn).append(tdIncludeNameYn).append(tdFormDesc));
  88. $('#table_pushForm tr').on('click', function(e){
  89. getPushFormInfo(e.currentTarget.attributes.seq.value);
  90. $('#table_pushForm tr').removeClass('active');
  91. $(this).addClass('active');
  92. });
  93. }
  94. if($('#table_pushForm tr')[0]==undefined){
  95. $('#pushFormDetail').css('display', 'none');
  96. $('#pushFormDetailEmpty').css('display', 'block');
  97. }else{
  98. $('#table_pushForm tr')[0].click();
  99. }
  100. };
  101. var error = function(xhr,d,t){
  102. };
  103. self.ajaxAdmin( opt, success, error );
  104. };
  105. var pageEvent = function(e) {
  106. var type = e.currentTarget.id.split('_')[0];
  107. var page = Number(e.currentTarget.id.split('_')[1]);
  108. if( type == 'page' ) {
  109. initPushFormList(page);
  110. $('#ulPagination li[id*="page_"]').removeClass('active');
  111. } else if ( type == 'next') {
  112. initPushFormList(page);
  113. setPageList(page);
  114. } else if ( type == 'previous' ) {
  115. initPushFormList(page);
  116. setPageList(page - 9);
  117. }
  118. if($('#page_'+page)!=null) $('#page_'+page).addClass('active');
  119. };
  120. var setPageList = function(start) {
  121. $('#ulPagination').empty();
  122. var end = start + 9;
  123. if( Math.ceil(totalCount/pageSize) < end ) {
  124. end = Math.ceil(totalCount/pageSize);
  125. }
  126. if( start > 10 ) {
  127. $('#ulPagination').append('<li id="previous_'+(start - 1)+'"><a href="#"><<</a></li>');
  128. }
  129. for( var i = start; i <= end; i++ ) {
  130. $('#ulPagination').append('<li id="page_'+i+'"><a href="#">'+i+'</a></li>');
  131. }
  132. if( end < Math.ceil(totalCount/pageSize) ) {
  133. $('#ulPagination').append('<li id="next_'+(end + 1)+'"><a href="#">>></a></li>');
  134. }
  135. $('#ulPagination li').unbind();
  136. $('#ulPagination li').click(function(e) {pageEvent(e);});
  137. };
  138. var getPushFormInfo = function(seq){
  139. pushFormInfo = pushFormList[seq];
  140. $('#txtFormId').val(pushFormInfo.formId);
  141. $('#sltFormType').val(pushFormInfo.formType);
  142. formTypeChange(pushFormInfo.formType);
  143. $(':radio[name="useYn"][value="'+pushFormInfo.useYn+'"]').prop('checked', true);
  144. $('#sltMenu').val(pushFormInfo.menuId);
  145. $(':radio[name="includeNameYn"][value="'+pushFormInfo.includeNameYn+'"]').prop('checked', true);
  146. $('#txtFormDesc').val(pushFormInfo.formDesc);
  147. $('#txtFormId').attr('readonly', true);
  148. $('#sltFormType').attr('disabled', true);
  149. $('#sltMenu').attr('disabled', true);
  150. $('#pushFormDetail').css('display', 'block');
  151. $('#pushFormDetailEmpty').css('display', 'none');
  152. };
  153. var newPushForm = function(){
  154. pushFormInfo = {};
  155. $('#table_pushForm tr').removeClass('active');
  156. $('#txtFormId').val('');
  157. $('#sltFormType').val('');
  158. $(':radio[name="useYn"][value="Y"]').prop('checked', true);
  159. $('#sltMenu').val('');
  160. $(':radio[name="includeNameYn"][value="Y"]').prop('checked', true);
  161. $('#txtFormDesc').val('');
  162. $('#txtFormId').attr('readonly', false);
  163. $('#sltFormType').attr('disabled', false);
  164. $('#sltMenu').attr('disabled', false);
  165. $('#pushFormDetail').css('display', 'block');
  166. $('#pushFormDetailEmpty').css('display', 'none');
  167. $('#txtFormId').focus();
  168. };
  169. var savePushForm = function(){
  170. var param;
  171. var opt;
  172. if(pushFormInfo.formId==undefined||pushFormInfo.formId==''){
  173. var id = $('#txtFormId').val(),
  174. rex1 = /[~!@\#$%<>^&*\()\-=+\’]/gi,
  175. rex2 = /\s/gi;
  176. if( rex1.test(id) ){
  177. alert("이름은 특수문자를 사용할 수 없습니다.");
  178. return false;
  179. } else if( rex2.test(id) ){
  180. alert("이름은 공백을 포함할 수 없습니다." );
  181. return false;
  182. };
  183. param = {
  184. formId: $('#txtFormId').val(),
  185. formType: $('#sltFormType').val(),
  186. useYn: $(':radio[name="useYn"]:checked').val(),
  187. menuId: $('#sltFormType').val()=='PAGE'? $('#sltMenu').val(): null,
  188. menuName: $('#sltFormType').val()=='PAGE'? $('#sltMenu option:selected').text(): null,
  189. includeNameYn: $(':radio[name="includeNameYn"]:checked').val(),
  190. formDesc: $('#txtFormDesc').val()
  191. };
  192. }else{
  193. param = {
  194. formId: pushFormInfo.formId,
  195. formType: $('#sltFormType').val(),
  196. useYn: $(':radio[name="useYn"]:checked').val(),
  197. menuId: $('#sltFormType').val()=='PAGE'? $('#sltMenu').val(): null,
  198. menuName: $('#sltFormType').val()=='PAGE'? $('#sltMenu option:selected').text(): null,
  199. includeNameYn: $(':radio[name="includeNameYn"]:checked').val(),
  200. formDesc: $('#txtFormDesc').val()
  201. };
  202. };
  203. opt = {
  204. url: $crudServiceBaseUrl + "/save.json",
  205. method: "post",
  206. contentType: "application/json",
  207. data: self.util.stringifyJson(param)
  208. };
  209. var success = function(result){
  210. alert("저장되었습니다.");
  211. initPushFormList(Number($('#ulPagination li.active')[0].id.split('_')[1]));
  212. $('#pushFormDetail').css('display', 'none');
  213. $('#pushFormDetailEmpty').css('display', 'block');
  214. };
  215. var error = function(xhr,d,t){
  216. console.log(xhr);
  217. console.log(t);
  218. };
  219. self.ajaxAdmin( opt, success, error );
  220. };
  221. };