menu.js 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174
  1. /**
  2. * admin/menu
  3. */
  4. var mplus_admin_menu = function( language_code ){
  5. //상속
  6. mplus_admin.call(this);
  7. var self = this;
  8. //언어코드
  9. var DEFAULT_LANGUAGE = language_code;
  10. //변수
  11. var $crudServiceBaseUrl = contextPath + '/admin/menu',
  12. $txtId = $('#txtId'),
  13. $txtMenu = $('#txtMenu'),
  14. $txtOrder = $('#txtOrder'),
  15. $sltMenuType = $('#sltMenuType'),
  16. $sltDisplay = $('#sltDisplay'),
  17. $txtPageUrl = $('#txtPageUrl'),
  18. $txtImageUrl = $('#txtImageUrl'),
  19. $txtMenuDesc = $('#txtMenuDesc'),
  20. $btnCreateNode = $('#btnCreateNode'),
  21. $btnCreateI18n = $('#btnCreateI18n'),
  22. $btnNewItemI18n = $('#btnNewItem_i18n'),
  23. $btnConfirmI18n = $('#btnConfirmItem_i18n'),
  24. $btnCreateParam = $('#btnCreateParam'),
  25. $btnNewItemParam = $('#btnNewItem_param'),
  26. $btnConfirmParam = $('#btnConfirmItem_param'),
  27. $btnCreateAuth = $('#btnCreateAuth'),
  28. $btnNewItemAuth = $('#btnNewItem_auth'),
  29. $btnConfirmAuth = $('#btnConfirmItem_auth'),
  30. $btnRemoveNode = $('#btnRemoveNode'),
  31. $btnSaveNode = $('#btnSaveNode'),
  32. $btnCacheInit = $('#btnCacheInit'),
  33. $btnDeselectNode = $('#btnDeselectNode'),
  34. $authCrudServiceBaseUrl = contextPath + "/admin/auth"; //속성 관련 요청을 위해 별도로 작성;
  35. var addedNodeArr = [];
  36. /**
  37. * 객체 초기화
  38. */
  39. this.init = function(){
  40. initTree();
  41. initDropDownList();
  42. //설명 글자수 이벤트 - core에 선언
  43. self.checkDescBytes($txtMenuDesc, 'txtMenuDesc');
  44. addEvent();
  45. /*if($("#menuTreeView .fancytree-expander")[0]!=undefined){
  46. $('#menuTreeView').fancytree('getTree').getNodeByKey($("#menuTreeView .fancytree-expander")[0].id).setActive();
  47. }else{*/
  48. $('#menuDetail').css('display', 'none');
  49. $('#menuDetailEmpty').css('display', 'block');
  50. /*};*/
  51. };
  52. /**
  53. * 이벤트 등록
  54. */
  55. var addEvent = function(){
  56. // 아이템 갱신 (to 모바일 서버)
  57. $btnCacheInit.on("click",function(e) {
  58. reloadItem(e);
  59. });
  60. $btnCreateNode.on('click', function(e){
  61. addItem(e);
  62. });
  63. $btnSaveNode.on("click",function(e) {
  64. saveItem(e);
  65. });
  66. $btnRemoveNode.on("click",function(e) {
  67. removeItem(e);
  68. });
  69. $btnDeselectNode.on("click",function(e) {
  70. deselectItem(e);
  71. });
  72. $btnCreateI18n.on("click",function(e) {
  73. editTableI18n(e);
  74. });
  75. $btnNewItemI18n.on("click", function(e){
  76. newTableI18n(e);
  77. });
  78. $btnConfirmI18n.on("click", function(e){
  79. confirmTableI18n(e);
  80. });
  81. $btnCreateParam.on("click",function(e) {
  82. editTableParam(e);
  83. });
  84. $btnNewItemParam.on("click", function(e){
  85. newTableParam(e);
  86. });
  87. $btnConfirmParam.on("click", function(e){
  88. confirmTableParam(e);
  89. });
  90. $btnCreateAuth.on("click",function(e) {
  91. editTableAuth(e);
  92. });
  93. $btnNewItemAuth.on("click", function(e){
  94. newTableAuth(e);
  95. });
  96. $btnConfirmAuth.on("click", function(e){
  97. confirmTableAuth(e);
  98. });
  99. };
  100. /**
  101. * 트리 아이템 신규 이벤트
  102. * @private
  103. */
  104. var addItem = function(e){
  105. if($("#menuTreeView").fancytree("getActiveNode")!=null){
  106. var node = $("#menuTreeView").fancytree("getActiveNode"),
  107. item = $("#menuTreeView").fancytree("getActiveNode").data;
  108. if(node.expanded==undefined){
  109. $("#menuTreeView").fancytree("getActiveNode").setExpanded();
  110. };
  111. }else{
  112. var node = $("#menuTreeView").fancytree("getRootNode");
  113. };
  114. if (addedNodeArr.length > 0) {
  115. alert("저장하지 않은 아이템이 있습니다");
  116. return false;
  117. };
  118. var nodeData = null,
  119. defData = {
  120. menuType: "CONT",
  121. menuName: "NewItem",
  122. menuOrder: 0,
  123. enabledYn: "Y",
  124. accessUriAddr: "",
  125. imageUriAddr: "",
  126. menuDesc: "",
  127. childCount: 0,
  128. i18ns: [],
  129. menuSeq: null,
  130. selected: false,
  131. menuParam : [],
  132. menuAuths : [],
  133. };
  134. if( node.length==undefined || node.length === 0 ) {
  135. nodeData = $.extend(true, {}, {
  136. menuType: 'MAIN'
  137. }, defData);
  138. } else {
  139. if( item.childCount === 0 ) {
  140. item.loaded(true);
  141. }
  142. nodeData = $.extend( true, {}, JSON.stringify(item), {
  143. menuId: null,
  144. parentMenuId: item.menuId
  145. }, defData);
  146. }
  147. node.addChildren({title: defData.menuName,
  148. key: defData.key,
  149. folder: false,
  150. lazy: false,
  151. data: defData}
  152. );
  153. addedNodeArr.push( defData );
  154. if(node.children.length==1 && node.parent!=null){
  155. $("#menuTreeView").fancytree("getActiveNode").setExpanded();
  156. };
  157. node.children[node.children.length-1].li.click();
  158. //첫번째놈, 그니까 추가된놈을 선택해야함!
  159. $('#txtId').focus();
  160. };
  161. // 다국어 코드 중복 체크
  162. var i18nArr = [];
  163. /**
  164. * 트리 아이템 저장 이벤트
  165. * @private
  166. */
  167. var saveItem = function(e){
  168. var node = $("#menuTreeView").fancytree("getActiveNode"),
  169. item = $("#menuTreeView").fancytree("getActiveNode").data,
  170. pnode = node.parent.data;
  171. if( node.length === 0 ) {
  172. alert("선택한 아이템이 없습니다");
  173. return false;
  174. };
  175. var reqI18nArr = [];
  176. for (var i = 0; i < i18nList.length; i++) {
  177. var it = i18nList[i];
  178. reqI18nArr.push({'menuId': it.menuId, 'cdText': it.cdText, 'i18nCd': it.i18nCd});
  179. };
  180. var reqParamArr = [];
  181. for (var i = 0; i < paramList.length; i++) {
  182. var it = paramList[i],
  183. paramName = it.paramName,
  184. paramSeq = it.paramSeq;
  185. reqParamArr.push({
  186. 'dataType': it.dataType,
  187. 'menuId': it.menuId,
  188. 'paramDesc': it.paramDesc,
  189. 'paramName': it.paramName.replace(/\s/gi, ''),
  190. 'paramValue': it.paramValue
  191. });
  192. };
  193. var paramItem = {
  194. accessUriAddr: $txtPageUrl.val(),
  195. menuSeq: item.menuSeq,
  196. auth: $("input:radio[name='certifyYN']:checked").val()=='Y'? true: false,
  197. childCount: item.menuSeq==null? '0': item.childCount,
  198. enabledYn: $sltDisplay.val(),
  199. i18ns: reqI18nArr,
  200. imageUriAddr: $txtImageUrl.val(),
  201. menuAuth : authList,
  202. menuDesc: $txtMenuDesc.val(),
  203. menuId: $txtId.val(),
  204. menuName: $txtMenu.val(),
  205. menuOrder: $txtOrder.val(),
  206. menuParam : reqParamArr,
  207. menuType: $sltMenuType.val(),
  208. parentMenuId: pnode.menuId
  209. };
  210. if( paramItem.menuId === null || paramItem.menuId === "" ) {
  211. alert( "아이디를 입력해주세요." );
  212. return false;
  213. };
  214. if( paramItem.menuName === null || paramItem.menuName === "" ) {
  215. alert( "이름을 입력해주세요." );
  216. return false;
  217. };
  218. if( paramItem.accessUriAddr === null || paramItem.accessUriAddr === "" ) {
  219. alert( "페이지 URL을 입력해주세요." );
  220. return false;
  221. };
  222. if( pnode.hasOwnProperty() ) {
  223. if( pnode.menuType === "CONT" && paramItem.menuType !== "CONT" ) {
  224. alert( "콘텐츠 하위에는 콘텐츠만 등록할 수 있습니다" );
  225. return false;
  226. }
  227. if( paramItem.menuType === "SIDE" ){
  228. alert( "메뉴타입을 사이드바로 지정할 수 없습니다." );
  229. return false;
  230. }
  231. }
  232. paramItem.accessUriAddr = $('#txtPageUrl').val();
  233. /*if( paramItem.accessUriAddr.indexOf("javascript:") > -1 && paramItem.aggYn === "Y" ){
  234. alert( "스크립트 메뉴는 통계여부를 '아니오'로 설정해주세요.")
  235. return false;
  236. };*/
  237. var opt = {
  238. url : $crudServiceBaseUrl + "/save.json",
  239. method : "POST",
  240. data : self.util.stringifyJson(paramItem),
  241. dataType : "json",
  242. contentType: "application/json; charset=UTF-8"
  243. };
  244. var success = function(data){
  245. alert("저장 되었습니다");
  246. addedNodeArr = [];
  247. var saveItemData = $('#menuTreeView').fancytree('getActiveNode');
  248. $('#title'+saveItemData.key).text(data.menuName);
  249. saveItemData.data = data;
  250. /*location.reload(true);*/
  251. };
  252. var error = function(xhr,d,t){
  253. console.log(xhr);
  254. console.log(t);
  255. };
  256. self.ajaxAdmin( opt, success, error );
  257. addedNodeArr = [];
  258. };
  259. /**
  260. * 트리 아이템 reload 이벤트
  261. * @private
  262. */
  263. var reloadItem = function(e){
  264. var opt = {
  265. url : $crudServiceBaseUrl + "/cacheReload.json",
  266. type : "POST",
  267. contentType: "application/json; charset=UTF-8"
  268. };
  269. var success = function(data){
  270. if( data === 1 ) {
  271. alert("갱신 되었습니다");
  272. } else {
  273. alert( "수행 중 에러가 발생하였습니다" );
  274. }
  275. };
  276. var error = function(xhr,d,t){
  277. console.log(xhr);
  278. console.log(t);
  279. };
  280. self.ajaxAdmin( opt, success, error );
  281. };
  282. /**
  283. * 트리 아이템 삭제 이벤트
  284. * @private
  285. */
  286. var removeItem = function(e){
  287. var node = $("#menuTreeView").fancytree("getActiveNode");
  288. if( node.length === 0 ) {
  289. alert( '삭제할 메뉴를 선택해주세요.' );
  290. return false;
  291. }
  292. var item = $("#menuTreeView").fancytree("getActiveNode").data;
  293. if( item.menuSeq === null ) {
  294. node.remove();
  295. addedNodeArr = [];
  296. $('#menuDetail').css('display', 'none');
  297. $('#menuDetailEmpty').css('display', 'block');
  298. } else {
  299. if( item.childCount > 0 ) {
  300. alert( "하위 아이템이 존재하여 삭제할 수 없습니다." );
  301. return false;
  302. }
  303. if( !confirm( "삭제 하시겠습니까?" ) ) {
  304. return false;
  305. }
  306. var opt = {
  307. url : $crudServiceBaseUrl + "/remove.json",
  308. type : "POST",
  309. data : self.util.stringifyJson({ menuId : item.menuId }),
  310. dataType : "json"
  311. };
  312. var success = function(data){
  313. alert( "삭제 되었습니다" );
  314. $('#menuTreeView').fancytree('getActiveNode').remove();
  315. // location.reload(true);
  316. };
  317. var error = function(xhr,d,t){
  318. console.log(xhr);
  319. console.log(t);
  320. };
  321. self.ajaxAdmin( opt, success, error );
  322. }
  323. };
  324. /**
  325. * 트리 아이템 선택 해제 이벤트
  326. * @private
  327. */
  328. var deselectItem = function(e){
  329. var node = $("#menuTreeView").fancytree("getActiveNode");
  330. if(node!=null) {
  331. node.setActive(false);
  332. node.setFocus(false);
  333. };
  334. $txtId.attr('readonly', false);
  335. $txtId.val('');
  336. $txtMenu.val('');
  337. $txtOrder.val('');
  338. $sltMenuType.val('');
  339. $sltDisplay.val('');
  340. /*$("input:radio[name='displayYN']:radio[value='Y']").prop('checked', true);*/
  341. /*$("input:radio[name='statsYN']:radio[value='Y']").prop('checked', true);*/
  342. $("input:radio[name='certifyYN']:radio[value='Y']").prop('checked', true);
  343. $("input:radio[name='certifyDisplayYN']:radio[value='Y']").prop('checked', true);
  344. $txtPageUrl.val('');
  345. $txtImageUrl.val('');
  346. $txtMenuDesc.val('');
  347. $('#menuDetail').css('display', 'none');
  348. $('#menuDetailEmpty').css('display', 'block');
  349. };
  350. /**
  351. * 속성 데이터 가져오기
  352. */
  353. var authList;
  354. var initDropDownList = function(){
  355. $sltMenuType.on('change', function(e){
  356. //네비게이션이면
  357. if( e.currentTarget.value === "NAVI" ){
  358. $('#txtPageUrl').val("/navigation.page");
  359. } else {
  360. var text = $('#txtPageUrl').val();
  361. text = (text!==""&& text !=="/navigation.page")?text:"";
  362. $('#txtPageUrl').val(text);
  363. }
  364. });
  365. var opt = {
  366. url : $authCrudServiceBaseUrl + '/getList.json',
  367. type: 'post',
  368. dataType: 'json',
  369. contentType: 'application/json'
  370. };
  371. var success = function(data) {
  372. for (var i = 0; i < data.length; i++) {
  373. var auth = data[i];
  374. $('#sltAuth').append('<option value="'+ auth.authId +'">' + auth.authName + '</option>');
  375. }
  376. };
  377. var error = function(xhr, d, t) {
  378. console.log(xhr);
  379. alert(xhr.responseText);
  380. };
  381. self.ajaxAdmin(opt, success, error);
  382. };
  383. /**
  384. * 트리 초기화
  385. */
  386. var createDeptNodeData = function(data) {
  387. return $.extend({
  388. title : data.menuName,
  389. key : data.menuId,
  390. folder : data.childCount>0? true: false,
  391. lazy : data.childCount>0? true: false,
  392. data : data
  393. }, data);
  394. };
  395. var initTree = function(){
  396. var $tree = $("#menuTreeView").fancytree(
  397. {
  398. extensions: ["edit"],
  399. lazyLoad : function(event, ctx) {
  400. var param_lazyload = {
  401. async: false,
  402. url : $crudServiceBaseUrl + "/getList.json",
  403. dataType : 'json',
  404. type : 'POST',
  405. data: {menuId: ctx.node.data.menuId}
  406. };
  407. result = [];
  408. var success_lazyload = function(data){
  409. deptList = data;
  410. for ( var i in deptList) {
  411. var item = deptList[i];
  412. result.push(createDeptNodeData(item));
  413. };
  414. ctx.result = result;
  415. };
  416. var error_lazyload = function(xhr,d,t){
  417. console.log(xhr);
  418. console.log(t);
  419. };
  420. self.ajaxAdmin( param_lazyload, success_lazyload, error_lazyload );
  421. },
  422. selectMode : 3,
  423. activate : function(event, ctx) {
  424. var menuData = ctx.node.data;
  425. if(menuData.menuId==undefined){
  426. $txtId.attr('readonly', false);
  427. $txtId.val('');
  428. $txtMenu.val('');
  429. $txtOrder.val(0);
  430. $sltMenuType.val('');
  431. $sltDisplay.val('Y');
  432. /*$("input:radio[name='displayYN']:radio[value='Y']").prop('checked', true);*/
  433. /*$("input:radio[name='statsYN']:radio[value='Y']").prop('checked', true)*/
  434. $("input:radio[name='certifyYN']:radio[value='Y']").prop('checked', true);
  435. $("input:radio[name='certifyDisplayYN']:radio[value='Y']").prop('checked', true);
  436. $txtPageUrl.val('');
  437. $txtImageUrl.val('');
  438. $txtMenuDesc.val('');
  439. $('#table_i18n_view').empty();
  440. $('#table_param_view').empty();
  441. $('#table_auth_view').empty();
  442. i18nList = [];
  443. paramList = [];
  444. authList = [];
  445. i18nEditList = [];
  446. paramEditList = [];
  447. authEditList = [];
  448. }else{
  449. $txtId.attr('readonly', true);
  450. $txtId.val(menuData.menuId);
  451. $txtMenu.val(menuData.menuName);
  452. $txtOrder.val(menuData.menuOrder);
  453. $sltMenuType.val(menuData.menuType);
  454. $sltDisplay.val(menuData.enabledYn);
  455. $txtPageUrl.val(menuData.accessUriAddr);
  456. $txtImageUrl.val(menuData.imageUriAddr);
  457. $txtMenuDesc.val(menuData.menuDesc);
  458. menuInfo(menuData.menuId);
  459. };
  460. //설명 글자수제한 초기화
  461. $txtMenuDesc.trigger("keyup");
  462. $('#menuDetail').css('display', 'block');
  463. $('#menuDetailEmpty').css('display', 'none');
  464. },
  465. click : function(event, data) {
  466. },
  467. }).fancytree('getTree');
  468. var deptList;
  469. $.ajax({
  470. async : false,
  471. url : $crudServiceBaseUrl + "/getList.json",
  472. dataType : 'json',
  473. type : 'POST',
  474. contentType : 'application/json',
  475. success : function(result){
  476. deptList = result;
  477. }
  478. });
  479. var $root = $tree.getRootNode();
  480. for ( var i in deptList) {
  481. var item = deptList[i];
  482. if (item.parentMenuId == null) {
  483. $root.addNode(createDeptNodeData(item));
  484. };
  485. }
  486. };
  487. var i18nList = [];
  488. var paramList = [];
  489. var authList = [];
  490. var i18nEditList = [];
  491. var paramEditList = [];
  492. var authEditList = [];
  493. var temI18nSeq;
  494. var temParamSeq;
  495. var menuInfo = function(menuId){
  496. //다국어 테이블
  497. var opt_i18n = {
  498. url : $crudServiceBaseUrl + "/getI18nList.json",
  499. type : "POST",
  500. dataType : "json",
  501. data: self.util.stringifyJson({'menuId': menuId}),
  502. contentType: "application/json; charset=UTF-8"
  503. };
  504. var success_i18n = function(data){
  505. $('#table_i18n_view').empty();
  506. i18nList = data;
  507. temI18nSeq = data.length;
  508. for(var i=0; i<i18nList.length; i++){
  509. var tr = $('<tr></tr>').clone();
  510. var tdCode = $('<td></td>').clone().text(i18nList[i].i18nCd);
  511. var tdText = $('<td></td>').clone().text(i18nList[i].cdText==null? '': self.util.getBytes(i18nList[i].cdText)>20? self.util.cut(i18nList[i].cdText, 20)+'...': i18nList[i].cdText);
  512. i18nList[i].i18nSeq = i;
  513. $('#table_i18n_view').append(tr.append(tdCode).append(tdText));
  514. };
  515. };
  516. var error_i18n = function(xhr,d,t){
  517. console.log(xhr);
  518. console.log(t);
  519. };
  520. self.ajaxAdmin( opt_i18n, success_i18n, error_i18n );
  521. //파라미터 테이블
  522. var opt_param = {
  523. url : $crudServiceBaseUrl + "/getParamList.json",
  524. type : "POST",
  525. dataType : "json",
  526. data: self.util.stringifyJson({'menuId': menuId}),
  527. contentType: "application/json; charset=UTF-8"
  528. };
  529. var success_param = function(data){
  530. paramList = data;
  531. temParamSeq = data.length;
  532. $('#table_param_view').empty();
  533. for(var i=0; i<paramList.length; i++){
  534. var tr = $('<tr></tr>').clone();
  535. var tdNo = $('<td></td>').clone().text(i+1);
  536. var tdName = $('<td></td>').clone().text(paramList[i].paramName==null? '': self.util.getBytes(paramList[i].paramName)>10? self.util.cut(paramList[i].paramName, 10)+'...': paramList[i].paramName);
  537. var tdType = $('<td></td>').clone().text(paramList[i].dataType);
  538. var tdValue = $('<td></td>').clone().text(paramList[i].paramValue==null? '': self.util.getBytes(paramList[i].paramValue)>10? self.util.cut(paramList[i].paramValue, 10)+'...': paramList[i].paramValue);
  539. var tdDesc = $('<td></td>').clone().text(paramList[i].paramDesc==null? '': self.util.getBytes(paramList[i].paramDesc)>10? self.util.cut(paramList[i].paramDesc, 10)+'...': paramList[i].paramDesc);
  540. paramList[i].paramSeq = i;
  541. $('#table_param_view').append(tr.append(tdNo).append(tdName).append(tdType).append(tdValue).append(tdDesc));
  542. };
  543. };
  544. var error_param = function(xhr,d,t){
  545. console.log(xhr);
  546. console.log(t);
  547. };
  548. self.ajaxAdmin( opt_param, success_param, error_param );
  549. //권한 테이블
  550. var opt_auth = {
  551. url : $crudServiceBaseUrl + "/getMenuAuthList.json",
  552. type : "POST",
  553. dataType : "json",
  554. data: self.util.stringifyJson({'menuId': menuId}),
  555. contentType: "application/json; charset=UTF-8"
  556. };
  557. var success_auth = function(data){
  558. authList = data;
  559. $('#table_auth_view').empty();
  560. for(var i=0;i <authList.length; i++){
  561. var tr = $('<tr></tr>').clone();
  562. var tdName = $('<td></td>').clone().text(authList[i].authName);
  563. $('#table_auth_view').append(tr.append(tdName));
  564. };
  565. };
  566. var error_auth = function(xhr,d,t){
  567. console.log(xhr);
  568. console.log(t);
  569. };
  570. self.ajaxAdmin( opt_auth, success_auth, error_auth );
  571. };
  572. var getItemData = function(itemList, tableCheckValue, checkValue){
  573. var itemData = {};
  574. for(i=0; i<itemList.length; i++){
  575. if(itemList[i][tableCheckValue] == checkValue){
  576. itemData = itemList[i];
  577. break;
  578. }
  579. };
  580. return itemData;
  581. };
  582. /*-------------------------- 다국어 테이블 CRUD -------------------------- */
  583. var editTableI18n = function(){
  584. $("#sltI18n").val($("#sltI18n option:first").val());
  585. $('#txtI18n').val('');
  586. $('#table_i18n').empty();
  587. for(var i=0; i<i18nList.length; i++){
  588. var tr = $('<tr itemData="'+i18nList[i].i18nCd+'"></tr>').clone();
  589. var tdCode = $('<td></td>').clone().text(i18nList[i].i18nCd);
  590. var tdText = $('<td></td>').clone().addClass('max-width-sm').text(i18nList[i].cdText==null? '': self.util.getBytes(i18nList[i].cdText)>10? self.util.cut(i18nList[i].cdText, 10)+'...': i18nList[i].cdText);
  591. var tdEdit = $('<td></td>').clone().append('<button type="button" class="btn btn-default btn-xs" itemData="'+i18nList[i].i18nCd+'"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  592. $('#table_i18n').append(tr.append(tdCode).append(tdText).append(tdEdit));
  593. };
  594. $('#table_i18n tr').unbind();
  595. $('#table_i18n tr').on('click', function(e){
  596. editItemI18n(e);
  597. $('#table_i18n tr').removeClass('active');
  598. $(this).addClass('active');
  599. });
  600. $('#table_i18n tr td button').unbind();
  601. $('#table_i18n tr td button').on('click', function(e){
  602. removeItemI18n(e);
  603. });
  604. /*i18nEditList = i18nList;*/
  605. i18nEditList = [];
  606. $.extend(i18nEditList, i18nList); //객체 복사, 위의 방식으로하면 객체 공유가 되어버림!
  607. $('#addItemModal_i18n').modal('show');
  608. $('#saveItem_i18n').unbind();
  609. $('#saveItem_i18n').on('click', function(){
  610. var param = { 'i18nSeq': null,
  611. 'i18nCd': $('#sltI18n').val(),
  612. 'cdText': $('#txtI18n').val(),
  613. 'menuId': $("#txtId").val()};
  614. saveItemI18n(param, 'new');
  615. });
  616. if($('#table_i18n tr').length>0){
  617. $('#table_i18n tr')[0].click();
  618. }else{
  619. $('#modalI18nDetail').css('display', 'none');
  620. $('#modalI18nDetailEmpty').css('display', 'block');
  621. };
  622. };
  623. var newTableI18n = function(){
  624. /*$('#sltI18n').attr('disabled', false);*/
  625. $("#sltI18n").val($("#sltI18n option:first").val());
  626. $('#txtI18n').val('');
  627. $('#table_i18n tr').removeClass('active');
  628. $('#saveItem_i18n').unbind();
  629. $('#saveItem_i18n').on('click', function(){
  630. var param = {
  631. 'i18nSeq': null,
  632. 'i18nCd': $('#sltI18n').val(),
  633. 'cdText': $('#txtI18n').val(),
  634. 'menuId': $("#txtId").val()
  635. };
  636. saveItemI18n(param, 'new');
  637. });
  638. $('#modalI18nDetail').css('display', 'block');
  639. $('#modalI18nDetailEmpty').css('display', 'none');
  640. $("#sltI18n").focus();
  641. };
  642. var saveItemI18n =function(param, newYn){
  643. if($('#table_i18n tr[class!="active"][itemData="'+param.i18nCd+'"]').length>0){
  644. alert('다국어 코드는 중복될 수 없습니다.');
  645. return;
  646. };
  647. if(param.cdText==null||param.cdText==''){
  648. alert('다국어 텍스트를 입력해주세요.');
  649. return;
  650. };
  651. if(newYn=='edit'){
  652. olderValue = $('#table_i18n tr.active')[0].attributes.itemData.value;
  653. $('#table_i18n tr[itemData="'+olderValue+'"]')[0].children[0].innerText=param.i18nCd;
  654. $('#table_i18n tr[itemData="'+olderValue+'"]')[0].children[1].innerText=param.cdText==null? '': self.util.getBytes(param.cdText)>10? self.util.cut(param.cdText, 10)+'...': param.cdText;
  655. $('#table_i18n tr[itemData="'+olderValue+'"]')[0].children[2].children[0].attributes.itemData.value=param.i18nCd;
  656. $('#table_i18n tr[itemData="'+olderValue+'"]')[0].attributes.itemdata.value=param.i18nCd;
  657. for(var i=0; i<i18nEditList.length; i++){
  658. if(i18nEditList[i].i18nCd==olderValue){
  659. i18nEditList[i].i18nCd = param.i18nCd;
  660. i18nEditList[i].cdText = param.cdText;
  661. }
  662. };
  663. }else{
  664. var tr = $('<tr itemData="'+param.i18nCd+'"></tr>').clone();
  665. var tdCode = $('<td></td>').clone().text(param.i18nCd);
  666. var tdText = $('<td></td>').clone().addClass('max-width-sm').text(param.cdText==null? '': self.util.getBytes(param.cdText)>10? self.util.cut(param.cdText, 10)+'...': param.cdText);
  667. var tdEdit = $('<td></td>').clone().append('<button type="button" class="btn btn-default btn-xs" itemData="'+param.i18nCd+'"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  668. $('#table_i18n').append(tr.append(tdCode).append(tdText).append(tdEdit));
  669. i18nEditList.push(param);
  670. };
  671. $('#table_i18n tr').unbind();
  672. $('#table_i18n tr').on('click', function(e){
  673. editItemI18n(e);
  674. $('#table_i18n tr').removeClass('active');
  675. $(this).addClass('active');
  676. });
  677. $('#table_i18n tr td button').unbind();
  678. $('#table_i18n tr td button').on('click', function(e){
  679. removeItemI18n(e);
  680. });
  681. $('#table_i18n tr[itemData="'+param.i18nCd+'"]').click();
  682. };
  683. var editItemI18n = function(e){
  684. var itemData = getItemData(i18nEditList, 'i18nCd', e.currentTarget.attributes.itemData.value);
  685. if(itemData==undefined || itemData ==null){
  686. alert('정상적인 데이터가 아닙니다.'); //이표시가 맞을까?
  687. return;
  688. };
  689. $('#sltI18n').val(itemData.i18nCd);
  690. $('#txtI18n').val(itemData.cdText);
  691. $('#saveItem_i18n').unbind();
  692. $('#saveItem_i18n').on('click', function(){
  693. var param = {
  694. 'i18nSeq': itemData.i18nSeq,
  695. 'i18nCd': $('#sltI18n').val(), 'cdText': $('#txtI18n').val(), 'menuId': $("#txtId").val()};
  696. saveItemI18n(param, 'edit');
  697. });
  698. $('#modalI18nDetail').css('display', 'block');
  699. $('#modalI18nDetailEmpty').css('display', 'none');
  700. };
  701. var removeItemI18n = function(e){
  702. $('#table_i18n tr[itemData="'+e.currentTarget.attributes.itemData.value+'"]').remove();
  703. for(var i=0; i<i18nEditList.length; i++){
  704. if(i18nEditList[i].i18nCd == e.currentTarget.attributes.itemData.value){
  705. i18nEditList.splice(i, 1);
  706. break;
  707. }
  708. };
  709. $('#table_i18n tr').removeClass('active');
  710. $('#modalI18nDetail').css('display', 'none');
  711. $('#modalI18nDetailEmpty').css('display', 'block');
  712. };
  713. var confirmTableI18n = function(e){
  714. $('#addItemModal_i18n').modal('hide');
  715. $('#table_i18n_view').empty();
  716. for(var i=0; i<i18nEditList.length; i++){
  717. var tr = $('<tr>').clone();
  718. var tdCode = $('<td></td>').clone().text(i18nEditList[i].i18nCd);
  719. var tdText = $('<td></td>').clone().text(i18nEditList[i].cdText==null? '': self.util.getBytes(i18nEditList[i].cdText)>20? self.util.cut(i18nEditList[i].cdText, 20)+'...': i18nEditList[i].cdText);
  720. $('#table_i18n_view').append(tr.append(tdCode).append(tdText));
  721. };
  722. i18nList = [];
  723. $.extend(i18nList, i18nEditList); //객체 복사
  724. };
  725. /*-------------------------- 다국어 테이블 CRUD 끝-------------------------- */
  726. /*-------------------------- 파라미터 테이블 CRUD -------------------------- */
  727. var editTableParam = function(){
  728. $('#txtParamName').val('');
  729. $("#sltParamType").val($("#sltParamType option:first").val());
  730. $('#txtParamValue').val('');
  731. $('#txtParamDesc').val('');
  732. $('#table_param').empty();
  733. for(var i=0; i<paramList.length; i++){
  734. var tr = $('<tr itemData="' + paramList[i].paramName + '"></tr>').clone();
  735. var tdName = $('<td></td>').clone().text(paramList[i].paramName==null? '': self.util.getBytes(paramList[i].paramName)>10? self.util.cut(paramList[i].paramName, 10)+'...': paramList[i].paramName);
  736. var tdValue = $('<td></td>').clone().text(paramList[i].paramValue==null? '': self.util.getBytes(paramList[i].paramValue)>10? self.util.cut(paramList[i].paramValue, 10)+'...': paramList[i].paramValue);
  737. var tdEdit = $('<td></td>').clone().append(
  738. '<button type="button" class="btn btn-default btn-xs" itemData="' + paramList[i].paramName + '"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  739. $('#table_param').append(tr.append(tdName).append(tdValue).append(tdEdit));
  740. };
  741. $('#table_param tr').unbind();
  742. $('#table_param tr').on('click', function(e) {
  743. editItemParam(e);
  744. $('#table_param tr').removeClass('active');
  745. $(this).addClass('active');
  746. });
  747. $('#table_param tr td button').unbind();
  748. $('#table_param tr td button').on('click', function(e){
  749. removeItemParam(e);
  750. });
  751. paramEditList = [];
  752. $.extend(paramEditList, paramList); //객체 복사
  753. $('#addItemModal_param').modal('show');
  754. $('#saveItem_param').unbind();
  755. $('#saveItem_param').on('click', function(){
  756. var param = {
  757. 'paramSeq' : null,
  758. 'paramName': $('#txtParamName').val(),
  759. 'dataType': $('#sltParamType').val(),
  760. 'paramValue': $('#txtParamValue').val(),
  761. 'paramDesc': $('#txtParamDesc').val(),
  762. 'menuId': $("#txtId").val()
  763. };
  764. saveItemParam(param, 'new');
  765. });
  766. if($('#table_param tr').length>0){
  767. $('#table_param tr')[0].click();
  768. $('#modalParamDetail').css('display', 'block');
  769. $('#modalParamDetailEmpty').css('display', 'none');
  770. }else{
  771. $('#modalParamDetail').css('display', 'none');
  772. $('#modalParamDetailEmpty').css('display', 'block');
  773. };
  774. };
  775. var newTableParam = function(){
  776. $('#txtParamName').val('');
  777. $("#sltParamType").val($("#sltParamType option:first").val());
  778. $('#txtParamValue').val('');
  779. $('#txtParamDesc').val('');
  780. $('#table_param tr').removeClass('active');
  781. $('#modalParamDetail').css('display', 'block');
  782. $('#modalParamDetailEmpty').css('display', 'none');
  783. $('#txtParamName').focus();
  784. $('#saveItem_param').unbind();
  785. $('#saveItem_param').on('click', function(){
  786. var param = {
  787. 'paramSeq' : null,
  788. 'paramName': $('#txtParamName').val(),
  789. 'dataType': $('#sltParamType').val(),
  790. 'paramValue': $('#txtParamValue').val(),
  791. 'paramDesc': $('#txtParamDesc').val(),
  792. 'menuId': $("#txtId").val()
  793. };
  794. saveItemParam(param, 'new');
  795. });
  796. };
  797. var saveItemParam = function(param, newYn){
  798. if(param.paramName==null || param.paramName==''){
  799. alert('이름을 입력해주세요.');
  800. return;
  801. };
  802. if($('#table_param tr[class!="active"][itemData="'+param.paramName+'"]').length>0){
  803. alert('이름은 중복될 수 없습니다.');
  804. return;
  805. };
  806. if(param.dataType==null||param.dataType==''){
  807. alert('타입을 선택해주세요.');
  808. return;
  809. };
  810. if(newYn=='edit'){
  811. olderValue = $('#table_param tr.active')[0].attributes.itemData.value;
  812. $('#table_param tr[itemData="'+olderValue+'"]')[0].children[0].innerText=param.paramName==null? '': self.util.getBytes(param.paramName)>10? self.util.cut(param.paramName, 10)+'...': param.paramName;
  813. $('#table_param tr[itemData="'+olderValue+'"]')[0].children[1].innerText=param.paramValue==null? '': self.util.getBytes(param.paramValue)>10? self.util.cut(param.paramValue, 10)+'...': param.paramValue;
  814. $('#table_param tr[itemData="'+olderValue+'"]')[0].children[2].children[0].attributes.itemData.value=param.paramName;
  815. $('#table_param tr[itemData="'+olderValue+'"]')[0].attributes.itemdata.value=param.paramName;
  816. for(var i=0; i<paramEditList.length; i++){
  817. if(paramEditList[i].paramName==olderValue){
  818. paramEditList[i].paramName = param.paramName;
  819. paramEditList[i].dataType = param.dataType;
  820. paramEditList[i].paramValue = param.paramValue;
  821. paramEditList[i].paramDesc = param.paramDesc;
  822. }
  823. };
  824. }else{
  825. var tr = $('<tr itemData="' + param.paramName + '"></tr>').clone();
  826. var tdName = $('<td></td>').clone().text(param.paramName==null? '': self.util.getBytes(param.paramName)>10? self.util.cut(param.paramName, 10)+'...': param.paramName);
  827. var tdValue = $('<td></td>').clone().text(param.paramValue==null? '': self.util.getBytes(param.paramValue)>10? self.util.cut(param.paramValue, 10)+'...': param.paramValue);
  828. var tdEdit = $('<td></td>').clone().append('<button type="button" class="btn btn-default btn-xs" itemData="'+param.paramName+'"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  829. $('#table_param').append(tr.append(tdName).append(tdValue).append(tdEdit));
  830. paramEditList.push(param);
  831. };
  832. $('#table_param tr').unbind();
  833. $('#table_param tr').on('click', function(e) {
  834. editItemParam(e);
  835. $('#table_param tr').removeClass('active');
  836. $(this).addClass('active');
  837. });
  838. $('#table_param tr td button').unbind();
  839. $('#table_param tr td button').on('click', function(e) {
  840. removeItemParam(e);
  841. });
  842. $('#table_param tr[itemData="'+ param.paramName +'"]').click();
  843. };
  844. var editItemParam = function(e){
  845. var itemData = getItemData(paramEditList, 'paramName', e.currentTarget.attributes.itemData.value);
  846. if(itemData==undefined || itemData ==null){
  847. alert('정상적인 데이터가 아닙니다.'); //이표시가 맞을까?
  848. return;
  849. };
  850. $('#txtParamName').val(itemData.paramName);
  851. $("#sltParamType").val(itemData.dataType);
  852. $('#txtParamValue').val(itemData.paramValue);
  853. $('#txtParamDesc').val(itemData.paramDesc);
  854. $('#saveItem_param').unbind();
  855. $('#saveItem_param').on('click', function(){
  856. var param = {
  857. 'paramSeq' : itemData.paramSeq,
  858. 'paramName': $('#txtParamName').val(),
  859. 'dataType': $('#sltParamType').val(),
  860. 'paramValue': $('#txtParamValue').val(),
  861. 'paramDesc': $('#txtParamDesc').val(),
  862. 'menuId': $("#txtId").val()};
  863. saveItemParam(param, 'edit');
  864. });
  865. $('#modalParamDetail').css('display', 'block');
  866. $('#modalParamDetailEmpty').css('display', 'none');
  867. };
  868. var removeItemParam = function(e){
  869. $('#table_param tr[itemData="'+e.currentTarget.attributes.itemData.value+'"]').remove();
  870. for(var i=0; i<paramEditList.length; i++){
  871. if(paramEditList[i].paramName == e.currentTarget.attributes.itemData.value){
  872. paramEditList.splice(i, 1);
  873. break;
  874. }
  875. };
  876. $('#table_param tr').removeClass('active');
  877. $('#modalParamDetail').css('display', 'none');
  878. $('#modalParamDetailEmpty').css('display', 'block');
  879. };
  880. var confirmTableParam = function(e){
  881. $('#addItemModal_param').modal('hide');
  882. $('#table_param_view').empty();
  883. for(var i=0; i<paramEditList.length; i++){
  884. var tr = $('<tr></tr>').clone();
  885. var tdNo = $('<td></td>').clone().text(i+1);
  886. var tdName = $('<td></td>').clone().text(paramEditList[i].paramName==null? '': self.util.getBytes(paramEditList[i].paramName)>10? self.util.cut(paramEditList[i].paramName, 10)+'...': paramEditList[i].paramName);
  887. var tdType = $('<td></td>').clone().text(paramEditList[i].dataType);
  888. var tdValue = $('<td></td>').clone().text(paramEditList[i].paramValue==null? '': self.util.getBytes(paramEditList[i].paramValue)>10? self.util.cut(paramEditList[i].paramValue, 10)+'...': paramEditList[i].paramValue);
  889. var tdDesc = $('<td></td>').clone().text(paramEditList[i].paramDesc==null? '': self.util.getBytes(paramEditList[i].paramDesc)>10? self.util.cut(paramEditList[i].paramDesc, 10)+'...': paramEditList[i].paramDesc);
  890. $('#table_param_view').append(tr.append(tdNo).append(tdName).append(tdType).append(tdValue).append(tdDesc));
  891. };
  892. paramList = [];
  893. $.extend(paramList, paramEditList); //객체 복사
  894. };
  895. /*-------------------------- 파라미터 테이블 CRUD 끝-------------------------- */
  896. /*-------------------------- 권한 테이블 CRUD -------------------------- */
  897. var editTableAuth = function(){
  898. $("#sltAuth").val($("#sltAuth option:first").val());
  899. $('#table_auth').empty();
  900. for(var i=0;i <authList.length; i++){
  901. var tr = $('<tr itemData="'+authList[i].authId+'"></tr>').clone();
  902. var tdName = $('<td></td>').clone().text(authList[i].authName);
  903. var tdEdit = $('<td></td>').clone().append('<button type="button" class="btn btn-default btn-xs" itemData="'+authList[i].authId+'"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  904. $('#table_auth').append(tr.append(tdName).append(tdEdit));
  905. };
  906. $('#table_auth tr').unbind();
  907. $('#table_auth tr').on('click', function(e){
  908. editItemAuth(e);
  909. $('#table_auth tr').removeClass('active');
  910. $(this).addClass('active');
  911. });
  912. $('#table_auth tr td button').unbind();
  913. $('#table_auth tr td button').on('click', function(e){
  914. removeItemAuth(e);
  915. });
  916. authEditList = [];
  917. $.extend(authEditList, authList); //객체 복사
  918. $('#addItemModal_auth').modal('show');
  919. $('#saveItem_auth').unbind();
  920. $('#saveItem_auth').on('click', function(){
  921. var param = {'authId': $('#sltAuth').val(),
  922. 'authName': $('#sltAuth option:selected').text()};
  923. saveItemAuth(param);
  924. });
  925. if($('#table_auth tr').length>0){
  926. $('#table_auth tr')[0].click();
  927. }else{
  928. $('#modalAuthDetail').css('display', 'none');
  929. $('#modalAuthDetailEmpty').css('display', 'block');
  930. };
  931. };
  932. var newTableAuth = function(){
  933. $("#sltAuth").val($("#sltAuth option:first").val());
  934. $('#table_auth tr').removeClass('active');
  935. $('#modalAuthDetail').css('display', 'block');
  936. $('#modalAuthDetailEmpty').css('display', 'none');
  937. $('#sltAuth').focus();
  938. $('#saveItem_auth').unbind();
  939. $('#saveItem_auth').on('click', function(){
  940. var param = {
  941. 'authId': $('#sltAuth').val(),
  942. 'authName': $('#sltAuth option:selected').text()
  943. };
  944. saveItemAuth(param, 'new');
  945. });
  946. };
  947. var saveItemAuth = function(param, newYn) {
  948. if(param.authId==''){
  949. alert('권한을 선택해주세요.');
  950. return;
  951. };
  952. if($('#table_auth tr[class!="active"][itemData="'+param.authId+'"]').length>0){
  953. alert('권한은 중복될 수 없습니다.');
  954. return;
  955. };
  956. if(newYn=='edit'){
  957. olderValue = $('#table_auth tr.active')[0].attributes.itemData.value;
  958. $('#table_auth tr[itemData="'+olderValue+'"]')[0].children[0].innerText=param.authName;
  959. $('#table_auth tr[itemData="'+olderValue+'"]')[0].children[1].children[0].attributes.itemData.value=param.paramName;
  960. $('#table_auth tr[itemData="'+olderValue+'"]')[0].attributes.itemdata.value=param.paramName;
  961. for(var i=0; i<authEditList.length; i++){
  962. if(authEditList[i].authId==olderValue){
  963. authEditList[i].authId = param.authId;
  964. authEditList[i].authName = param.authName;
  965. }
  966. };
  967. }else{
  968. var tr = $('<tr itemData="'+ param.authId +'"></tr>').clone();
  969. var tdName = $('<td></td>').clone().text(param.authName);
  970. var tdEdit = $('<td></td>').clone().append(
  971. '<button type="button" class="btn btn-default btn-xs" itemData="' + param.authId + '"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  972. $('#table_auth').append(tr.append(tdName).append(tdEdit));
  973. authEditList.push(param);
  974. };
  975. $('#table_auth tr').unbind();
  976. $('#table_auth tr').on('click', function(e){
  977. editItemAuth(e);
  978. $('#table_auth tr').removeClass('active');
  979. $(this).addClass('active');
  980. });
  981. $('#table_auth tr td button').unbind();
  982. $('#table_auth tr td button').on('click', function(e){
  983. removeItemAuth(e);
  984. });
  985. $('#table_auth tr[itemData="'+param.authId+'"]').click();
  986. };
  987. var editItemAuth = function(e){
  988. var itemData = getItemData(authEditList, 'authId', e.currentTarget.attributes.itemData.value);
  989. if(itemData==undefined || itemData ==null){
  990. alert('정상적인 데이터가 아닙니다.'); //이표시가 맞을까?
  991. return;
  992. };
  993. $('#sltAuth').val(itemData.authId);
  994. $('#saveItem_auth').unbind();
  995. $('#saveItem_auth').on('click', function(){
  996. var param = {'authId': $('#sltAuth').val(), 'authName': $('#sltAuth option:selected').text()};
  997. saveItemAuth(param, 'edit');
  998. });
  999. $('#modalAuthDetail').css('display', 'block');
  1000. $('#modalAuthDetailEmpty').css('display', 'none');
  1001. };
  1002. var removeItemAuth = function(e){
  1003. $('#table_auth tr[itemData="'+e.currentTarget.attributes.itemData.value+'"]').remove();
  1004. for(var i=0; i<authEditList.length; i++){
  1005. if(authEditList[i].authId == e.currentTarget.attributes.itemData.value){
  1006. authEditList.splice(i, 1);
  1007. break;
  1008. }
  1009. };
  1010. $('#table_auth tr').removeClass('active');
  1011. $('#modalAuthDetail').css('display', 'none');
  1012. $('#modalAuthDetailEmpty').css('display', 'block');
  1013. };
  1014. var confirmTableAuth = function(e){
  1015. $('#addItemModal_auth').modal('hide');
  1016. $('#table_auth_view').empty();
  1017. for(var i=0; i<authEditList.length; i++){
  1018. var tr = $('<tr></tr>').clone();
  1019. var tdName = $('<td></td>').clone().text(authEditList[i].authName);
  1020. $('#table_auth_view').append(tr.append(tdName));
  1021. };
  1022. authList = [];
  1023. $.extend(authList, authEditList); //객체 복사
  1024. };
  1025. /*-------------------------- 권한 테이블 CRUD 끝-------------------------- */
  1026. };
  1027. var rowNum = 0;
  1028. function resetRowNum(){
  1029. rowNum = 0;
  1030. }
  1031. function getNum(){
  1032. return ++rowNum;
  1033. };