attr.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759
  1. /*dd*
  2. * admin/menu
  3. */
  4. var mplus_admin_attr = function( language_code ){
  5. //상속
  6. mplus_admin.call(this);
  7. var self = this;
  8. //언어코드
  9. var DEFAULT_LANGUAGE = language_code;
  10. //변수
  11. var $sltAttrType = $('#sltAttrType'),
  12. $txtAttrId = $('#txtAttrId'),
  13. $txtAttrName = $('#txtAttrName'),
  14. $sltUpperAttr = $('#sltUpperAttr'),
  15. $txtExtraAttrId = $('#txtExtraAttrId'),
  16. $txtExtraAttrName = $('#txtExtraAttrName'),
  17. $txtExtraAttrDesc = $('#txtExtraAttrDesc'),
  18. $btnSave_attr = $('#btnSave_attr'),
  19. $btnRemove_attr = $('#btnRemove_attr'),
  20. $btnSave_extraAttr = $('#btnSave_extraAttr'),
  21. $btnRemove_extraAttr = $('#btnRemove_extraAttr'),
  22. $sltUser = $('#sltUser'),
  23. $txtSearch = $('#txtSearch'),
  24. $btnSearch = $('#btnSearch'),
  25. $btnEditExtraAttrUser = $('#btnEditExtraAttrUser'),
  26. $btnSaveExtraAttrUser = $('#btnSaveExtraAttrUser'),
  27. $attrCrudServiceBaseUrl = contextPath + '/admin/attr',
  28. $crudServiceBaseUrl = contextPath + '/admin/extraAttr',
  29. $userAttrCrudServiceBaseUrl = contextPath + '/admin/userAttr'; //속성 관련 요청을 위해 별도로 작성
  30. var attrTypeList = [];
  31. var attrList = [];
  32. var attrInfo;
  33. var extraAttrList = [];
  34. var extraAttrUserList = [];
  35. var extraAttrUserEditList = [];
  36. var userList = [];
  37. var extraAttrInfo;
  38. var totalCount = 0;
  39. var pageSize = 15;
  40. /**
  41. * 객체 초기화
  42. */
  43. this.init = function(){
  44. initDropdownList();
  45. initAttrList($('#sltAttrType option:first').val(), 'attrType');
  46. initExtraAttrList();
  47. //설명 글자수 이벤트 - core에 선언
  48. self.checkDescBytes($txtExtraAttrDesc);
  49. addEvent();
  50. if($('#table_attr tr[seq=0]')[0]==undefined){
  51. $('#attrDetail').css('display', 'none');
  52. $('#attrDetailEmpty').css('display', 'block');
  53. }else{
  54. $('#table_attr tr[seq=0]').click();
  55. };
  56. if($('#table_extraAttr tr[seq=0]')[0]==undefined){
  57. $('#extraAttrDetail').css('display', 'none');
  58. $('#extraAttrDetailEmpty').css('display', 'block');
  59. }else{
  60. $('#table_extraAttr tr[seq=0]').click();
  61. }
  62. };
  63. var initDropdownList = function(){
  64. var opt = {
  65. url: $attrCrudServiceBaseUrl + "/getAttrTypeList.json",
  66. type : "post",
  67. async: false,
  68. dataType: "json",
  69. contentType: "application/json"
  70. }
  71. var success = function(result){
  72. attrTypeList = result.attrTypeList;
  73. $sltAttrType.empty();
  74. for(var i=0; i<attrTypeList.length; i++){
  75. if(attrTypeList[i].attrType!='extra'){
  76. var option = $('<option></option>').clone().attr('value', attrTypeList[i].attrType).text(attrTypeList[i].attrTypeName);
  77. $('#sltAttrType').append(option);
  78. };
  79. };
  80. $sltAttrType.on('change', function(e){
  81. /*getExtraAttrInfo(e.currentTarget.attributes.seq.value);
  82. $('#table_extraAttr tr').removeClass('active');
  83. $(this).addClass('active');*/
  84. $('#table_attr').empty();
  85. initAttrList(e.currentTarget.value, 'attrType');
  86. if(e.currentTarget.value=='work'){
  87. $('#divUpperAttr').css('display', 'block');
  88. initAttrList('duty', 'upperAttr');
  89. }else{
  90. $('#divUpperAttr').css('display', 'none');
  91. }
  92. });
  93. }
  94. var error = function(xhr,d,t){
  95. console.log(xhr);
  96. console.log(t);
  97. };
  98. self.ajaxAdmin( opt, success, error );
  99. };
  100. var initAttrList = function(attrType, sltType){
  101. var opt = {
  102. url: $attrCrudServiceBaseUrl + "/getAttrList.json",
  103. type : "post",
  104. async: false,
  105. dataType: "json",
  106. contentType: "application/json",
  107. data: self.util.stringifyJson({
  108. attrType: attrType
  109. })
  110. }
  111. var success = function(result){
  112. if(sltType=='attrType'){
  113. attrList = result.attrList;
  114. $('#table_attr').empty();
  115. $txtAttrId.val('');
  116. $txtAttrName.val('');
  117. $sltUpperAttr.val('');
  118. attrInfo = {};
  119. for(var i=0; i<attrList.length; i++){
  120. var tr = $('<tr></tr>').clone().attr('seq', i).attr('attrSeq', attrList[i].attrSeq).attr('attrId', attrList[i].attrId);
  121. var tdAttrId = $('<td></td>').clone().text(attrList[i].attrId);
  122. var tdAttrName = $('<td></td>').clone().text(attrList[i].attrName);
  123. $('#table_attr').append(tr.append(tdAttrId).append(tdAttrName));
  124. };
  125. $('#table_attr tr').on('click', function(e){
  126. getAttrInfo(e.currentTarget.attributes.seq.value);
  127. $('#table_attr tr').removeClass('active');
  128. $(this).addClass('active');
  129. });
  130. }else{
  131. var upperAttrList = result.attrList;
  132. $('#sltUpperAttr').empty();
  133. var option = $('<option></option>').clone().attr('value', '').text('선택');
  134. $('#sltUpperAttr').append(option);
  135. for(var i=0; i<upperAttrList.length; i++){
  136. var option = $('<option></option>').clone().attr('value', upperAttrList[i].attrId).text(upperAttrList[i].attrName);
  137. $('#sltUpperAttr').append(option);
  138. };
  139. };
  140. if($('#table_attr tr[seq=0]')==undefined){
  141. $('#attrDetail').css('display', 'none');
  142. $('#attrDetailEmpty').css('display', 'block');
  143. }else{
  144. $('#table_attr tr[seq=0]').click();
  145. };
  146. }
  147. var error = function(xhr,d,t){
  148. console.log(xhr);
  149. console.log(t);
  150. };
  151. self.ajaxAdmin( opt, success, error );
  152. };
  153. var initExtraAttrList = function(){
  154. var opt = {
  155. url: $crudServiceBaseUrl + "/getList.json",
  156. type : "post",
  157. async: false,
  158. dataType: "json",
  159. contentType: "application/json"
  160. }
  161. var success = function(result){
  162. extraAttrList = result;
  163. totalCount = result.totalCount;
  164. $('#table_extraAttr').empty();
  165. for(var i=0; i<extraAttrList.length; i++){
  166. var tr = $('<tr></tr>').clone().attr('seq', i).attr('extraAttrSeq', extraAttrList[i].extraAttrSeq).attr('extraAttrId', extraAttrList[i].extraAttrId);
  167. var tdExtraAttrId = $('<td></td>').clone().text(extraAttrList[i].extraAttrId);
  168. var tdExtraAttrName = $('<td></td>').clone().text(extraAttrList[i].extraAttrName);
  169. $('#table_extraAttr').append(tr.append(tdExtraAttrId).append(tdExtraAttrName));
  170. };
  171. $('#table_extraAttr tr').on('click', function(e){
  172. getExtraAttrInfo(e.currentTarget.attributes.seq.value);
  173. $('#table_extraAttr tr').removeClass('active');
  174. $(this).addClass('active');
  175. });
  176. }
  177. var error = function(xhr,d,t){
  178. console.log(xhr);
  179. console.log(t);
  180. };
  181. self.ajaxAdmin( opt, success, error );
  182. };
  183. /**
  184. * 이벤트 등록
  185. */
  186. var addEvent = function(){
  187. $('#btnNew_attr, #btnNewEmpty_attr').on('click', function(e){
  188. newItemAttr();
  189. });
  190. $btnSave_attr.on('click', function(e){
  191. saveItemAttr();
  192. });
  193. $btnRemove_attr.on('click', function(e){
  194. removeItemAttr();
  195. });
  196. $('#btnNew_extraAttr, #btnNewEmpty_extraAttr').on('click', function(e){
  197. newItemExtraAttr();
  198. });
  199. $btnSave_extraAttr.on('click', function(e){
  200. saveItemExtraAttr();
  201. });
  202. $btnRemove_extraAttr.on('click', function(e){
  203. removeItemExtraAttr();
  204. });
  205. $btnEditExtraAttrUser.on('click', function(e){
  206. editExtraAttrUser();
  207. });
  208. $btnSaveExtraAttrUser.on('click', function(e){
  209. confirmExtraAttrUser();
  210. });
  211. $btnSearch.on('click', function(e){
  212. initUserList(1, $sltUser.val(), $txtSearch.val());
  213. });
  214. };
  215. var getAttrInfo = function(seq){
  216. $txtAttrId.attr('readonly', true);
  217. attrInfo = attrList[seq];
  218. $txtAttrId.val(attrInfo.attrId);
  219. $txtAttrName.val(attrInfo.attrName);
  220. $sltUpperAttr.val(attrInfo.upperAttr);
  221. $('#attrDetail').css('display', 'block');
  222. $('#attrDetailEmpty').css('display', 'none');
  223. };
  224. var newItemAttr = function(){
  225. attrInfo = {};
  226. $('#table_attr tr').removeClass('active');
  227. $txtAttrId.attr('readonly', false);
  228. $txtAttrId.val('');
  229. $txtAttrName.val('');
  230. $sltUpperAttr.val('');
  231. $('#attrDetail').css('display', 'block');
  232. $('#attrDetailEmpty').css('display', 'none');
  233. $txtAttrId.focus();
  234. };
  235. var saveItemAttr = function(){
  236. var param = {};
  237. if($txtAttrId.val()==''){
  238. alert('아이디를 입력해주세요.');
  239. return;
  240. };
  241. if($txtAttrName.val()==''){
  242. alert('이름을 입력해주세요.');
  243. return;
  244. };
  245. if($sltAttrType.val()=='work'&&$sltUpperAttr.val()==''){
  246. alert('상위속성을 선택해주세요.');
  247. return;
  248. };
  249. if(attrInfo.attrSeq==undefined){
  250. param = {
  251. attrSeq: null,
  252. attrId: $txtAttrId.val(),
  253. attrName: $txtAttrName.val(),
  254. attrType: $sltAttrType.val(),
  255. upperAttr: $sltAttrType.val()=='work'? $sltUpperAttr.val():null
  256. }
  257. }else{
  258. param = {
  259. attrSeq: attrInfo.attrSeq,
  260. attrId: $txtAttrId.val(),
  261. attrName: $txtAttrName.val(),
  262. attrType: $sltAttrType.val(),
  263. upperAttr: $sltAttrType.val()=='work'? $sltUpperAttr.val():null
  264. }
  265. };
  266. var opt = {
  267. url : $attrCrudServiceBaseUrl + "/save.json",
  268. type : "POST",
  269. data : self.util.stringifyJson(param),
  270. dataType : "json",
  271. contentType: "application/json"
  272. };
  273. var success = function(data){
  274. alert("저장 되었습니다");
  275. initAttrList(data.attrType, 'attrType');
  276. $('#table_attr tr[attrId='+data.attrId+']').click();
  277. };
  278. var error = function(xhr,d,t){
  279. console.log(xhr);
  280. console.log(t);
  281. };
  282. self.ajaxAdmin( opt, success, error );
  283. };
  284. var removeItemAttr = function(){
  285. if($('#table_attr tr.active').length==0){
  286. alert('삭제할 속성을 선택해주세요.');
  287. return;
  288. };
  289. if(confirm('해당 속성을 삭제하시겠습니까?')){
  290. var param = {};
  291. param = {
  292. attrSeq: attrInfo.attrSeq,
  293. attrId: attrInfo.attrId,
  294. attrType: attrInfo.attrType
  295. };
  296. var opt = {
  297. url : $attrCrudServiceBaseUrl + "/remove.json",
  298. type : "POST",
  299. data : self.util.stringifyJson(param),
  300. contentType: "application/json"
  301. };
  302. var success = function(data){
  303. alert("삭제 되었습니다");
  304. initAttrList($sltAttrType.val(), 'attrType');
  305. attrInfo = {};
  306. $('#attrDetail').css('display', 'none');
  307. $('#attrDetailEmpty').css('display', 'block');
  308. };
  309. var error = function(xhr,d,t){
  310. console.log(xhr);
  311. console.log(t);
  312. };
  313. self.ajaxAdmin( opt, success, error );
  314. };
  315. };
  316. var getExtraAttrInfo = function(seq){
  317. extraAttrInfo = extraAttrList[seq];
  318. $txtExtraAttrId.attr('readonly', true);
  319. $txtExtraAttrId.val(extraAttrInfo.extraAttrId);
  320. $txtExtraAttrName.val(extraAttrInfo.extraAttrName);
  321. $txtExtraAttrDesc.val(extraAttrInfo.extraAttrDesc);
  322. var opt = {
  323. url: $crudServiceBaseUrl + "/getExtraAttrUserList.json",
  324. type : "post",
  325. async: false,
  326. dataType: "json",
  327. contentType: "application/json",
  328. data: self.util.stringifyJson({
  329. extraAttrId: extraAttrInfo.extraAttrId
  330. })
  331. }
  332. var success = function(result){
  333. extraAttrUserList = result;
  334. $('#table_extraAttrUser_view').empty();
  335. for(var i=0; i<extraAttrUserList.length; i++){
  336. var tr = $('<tr></tr>').clone().attr('seq', i);
  337. var tdUserId = $('<td></td>').clone().text(extraAttrUserList[i].userId);
  338. var tdUserName = $('<td></td>').clone().text(extraAttrUserList[i].userName);
  339. var tdUserHospital = $('<td></td>').clone().text(extraAttrUserList[i].hospitalName==null? '': extraAttrUserList[i].hospitalName);
  340. var tdUserDuty = $('<td></td>').clone().text(extraAttrUserList[i].dutyName==null? '': extraAttrUserList[i].dutyName);
  341. var tdUserWork = $('<td></td>').clone().text(extraAttrUserList[i].workName==null? '': extraAttrUserList[i].workName);
  342. $('#table_extraAttrUser_view').append(tr.append(tdUserId).append(tdUserName).append(tdUserHospital).append(tdUserDuty).append(tdUserWork));
  343. }
  344. }
  345. var error = function(xhr,d,t){
  346. console.log(xhr);
  347. console.log(t);
  348. };
  349. self.ajaxAdmin( opt, success, error );
  350. $('#extraAttrDetail').css('display', 'block');
  351. $('#extraAttrDetailEmpty').css('display', 'none');
  352. };
  353. var saveItemExtraAttr = function(){
  354. var param = {};
  355. if($txtExtraAttrId.val()==''){
  356. alert('아이디를 입력해주세요.');
  357. return;
  358. };
  359. if($txtExtraAttrName.val()==''){
  360. alert('이름을 입력해주세요.');
  361. return;
  362. };
  363. if(extraAttrInfo.extraAttrId==undefined){
  364. param = {
  365. extraAttrId: $txtExtraAttrId.val(),
  366. extraAttrName: $txtExtraAttrName.val(),
  367. extraAttrDesc: $txtExtraAttrDesc.val(),
  368. addedNode: true,
  369. extraAttrUserList: extraAttrUserList,
  370. extraAttrSeq: extraAttrUserList.length+1
  371. }
  372. }else{
  373. param = {
  374. extraAttrId: extraAttrInfo.extraAttrId,
  375. extraAttrName: $txtExtraAttrName.val(),
  376. extraAttrDesc: $txtExtraAttrDesc.val(),
  377. addedNode: extraAttrInfo.addedNode,
  378. extraAttrUserList: extraAttrUserList,
  379. extraAttrSeq: extraAttrInfo.extraAttrSeq
  380. }
  381. };
  382. var opt = {
  383. url : $crudServiceBaseUrl + "/save.json",
  384. type : "POST",
  385. data : self.util.stringifyJson(param),
  386. dataType : "json",
  387. contentType: "application/json"
  388. };
  389. var success = function(data){
  390. alert("저장 되었습니다");
  391. initExtraAttrList();
  392. $('#table_extraAttr tr[extraAttrId='+data.extraAttrId+']').click();
  393. };
  394. var error = function(xhr,d,t){
  395. console.log(xhr);
  396. console.log(t);
  397. };
  398. self.ajaxAdmin( opt, success, error );
  399. };
  400. var newItemExtraAttr = function(){
  401. extraAttrInfo = {};
  402. $('#table_extraAttr tr').removeClass('active');
  403. $txtExtraAttrId.attr('readonly', false);
  404. $txtExtraAttrId.val('');
  405. $txtExtraAttrName.val('');
  406. $txtExtraAttrDesc.val('');
  407. extraAttrUserList = [];
  408. extraAttrUserEditList = [];
  409. $('#table_extraAttrUser_view').empty();
  410. $('#extraAttrDetail').css('display', 'block');
  411. $('#extraAttrDetailEmpty').css('display', 'none');
  412. $txtExtraAttrId.focus();
  413. };
  414. var removeItemExtraAttr = function(){
  415. if($('#table_extraAttr tr.active').length==0){
  416. alert('삭제할 속성을 선택해주세요.');
  417. return;
  418. };
  419. if(confirm('해당 추가속성을 삭제하시겠습니까?')){
  420. var param = {extraAttrId: extraAttrInfo.extraAttrId};
  421. var opt = {
  422. url : $crudServiceBaseUrl + "/remove.json",
  423. type : "POST",
  424. data : self.util.stringifyJson(param),
  425. dataType : "json",
  426. contentType: "application/json"
  427. };
  428. var success = function(data){
  429. alert("삭제 되었습니다");
  430. initExtraAttrList();
  431. $('#extraAttrDetail').css('display', 'none');
  432. $('#extraAttrDetailEmpty').css('display', 'block');
  433. };
  434. var error = function(xhr,d,t){
  435. console.log(xhr);
  436. console.log(t);
  437. };
  438. self.ajaxAdmin( opt, success, error );
  439. };
  440. }
  441. var editExtraAttrUser = function(){
  442. $sltUser.val($('#sltUser option:first').val());
  443. $txtSearch.val('');
  444. initUserList(1, '', '');
  445. $('#table_extraAttrUser').empty();
  446. for (var i = 0; i < extraAttrUserList.length; i++) {
  447. var tr = $('<tr id="trExtraAttrUser_' + i + '"></tr>').clone();
  448. var tdUserId = $('<td></td>').clone().text(extraAttrUserList[i].userId);
  449. var tdUserName = $('<td></td>').clone().text(extraAttrUserList[i].userName);
  450. var tdHospital = $('<td></td>').clone().text(extraAttrUserList[i].hospitalName==null? '': extraAttrUserList[i].hospitalName);
  451. var tdDuty = $('<td></td>').clone().text(extraAttrUserList[i].dutyName==null? '': extraAttrUserList[i].dutyName);
  452. var tdWork = $('<td></td>').clone().text(extraAttrUserList[i].workName==null? '': extraAttrUserList[i].workName);
  453. var tdEdit = $('<td></td>').clone().append(
  454. '<button type="button" class="btn btn-default btn-xs" id="btnRemoveExtraAttrUser_'
  455. + i + '" userId="'+extraAttrUserList[i].userId+'"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  456. $('#table_extraAttrUser').append(tr.append(tdUserId).append(tdUserName).append(tdHospital).append(tdDuty).append(tdWork).append(tdEdit));
  457. };
  458. $('[id*=btnRemoveExtraAttrUser_]').on('click', function(e) {
  459. removeExtraAttrUser(e);
  460. });
  461. extraAttrUserEditList = [];
  462. $.extend(extraAttrUserEditList, extraAttrUserList); // 객체 복사, 위의 방식으로하면 객체 공유가 되어버림!
  463. $('#addExtraAttrModal').modal('show');
  464. };
  465. var initUserList = function(page, selectType, searchText){
  466. userList = [];
  467. var opt = {
  468. url: $userAttrCrudServiceBaseUrl + "/getList.json",
  469. type: "post",
  470. dataType: "json",
  471. async: false,
  472. contentType: "application/json",
  473. data: self.util.stringifyJson({
  474. pageSize: pageSize,
  475. page: page,
  476. selectUserType: selectType,
  477. searchText: searchText,
  478. hospitalId: "",
  479. dutyId: "",
  480. workId: ""
  481. })
  482. };
  483. var success = function(result){
  484. userList = result.data;
  485. totalCount = result.totalCount;
  486. $('#table_user').empty();
  487. for(var i=0; i<userList.length; i++){
  488. var tr = $('<tr></tr>').clone().attr('seq', i).attr('rnum', userList[i].rnum);
  489. var tdUserId = $('<td></td>').clone().text(userList[i].userId);
  490. var tdUserName = $('<td></td>').clone().text(userList[i].userName);
  491. var tdHospital = $('<td></td>').clone().text(userList[i].hospitalName==null? '':userList[i].hospitalName);
  492. var tdDuty = $('<td></td>').clone().text(userList[i].dutyName==null? '': userList[i].dutyName);
  493. var tdWork = $('<td></td>').clone().text(userList[i].workName==null? '': userList[i].workName);
  494. var tdEdit = $('<td></td>').clone().append(
  495. '<button type="button" class="btn btn-default btn-xs" id="btnAddExtraAttrUser_'
  496. + i + '"><span class="glyphicon glyphicon-plus">&nbsp;추가</span></button>');
  497. $('#table_user').append(tr.append(tdUserId).append(tdUserName).append(tdHospital).append(tdDuty).append(tdWork).append(tdEdit));
  498. };
  499. $('[id*=btnAddExtraAttrUser_]').on('click', function(e) {
  500. addExtraAttrUser(e);
  501. });
  502. if(page<11){
  503. $('#ulPagination').empty();
  504. if(totalCount>0){
  505. for(j=0; j<Math.ceil(totalCount/pageSize); j++ ){
  506. if(j<10){
  507. var li = $('<li></li>').clone();
  508. var a = $('<a></a>').clone().attr('seq', j+1).text(j+1);
  509. var span = $('<span></span>').clone().addClass('sr-only');
  510. $('#ulPagination').append(li.attr('id', 'page_'+(j+1)).append(a.append(span)));
  511. }else if(j==10){
  512. $('#ulPagination').append('<li id="next_'+(j+1)+'"><a href="#">>></a></li>');
  513. $('#next_'+(j+1)).on('click', function(e){
  514. next(e);
  515. });
  516. }else {};
  517. };
  518. }else{
  519. var li = $('<li></li>').clone();
  520. var a = $('<a></a>').clone().attr('seq', 1).text(1);
  521. var span = $('<span></span>').clone().addClass('sr-only');
  522. $('#ulPagination').append(li.attr('id', 'page_'+(1)).append(a.append(span)));
  523. };
  524. };
  525. $('#ulPagination li[id*="page_"]').removeClass('active');
  526. if($('#page_'+page)!=null) $('#page_'+page).addClass('active');
  527. $('#ulPagination li[id*="page_"]').unbind();
  528. $('#ulPagination li[id*="page_"]').on('click', function(e){
  529. initUserList(Number(e.currentTarget.id.split('_')[1]), '', '');
  530. });
  531. };
  532. var error = function(xhr,d,t){
  533. console.log(xhr);
  534. console.log(t);
  535. };
  536. self.ajaxAdmin( opt, success, error );
  537. };
  538. var previous = function(e){
  539. var startNo = Number(e.currentTarget.id.split('_')[1]);
  540. if(startNo>Math.ceil(totalCount/pageSize)) return;
  541. $('#ulPagination').empty();
  542. if(startNo-10>1){
  543. $('#ulPagination').append('<li id="previous_'+(startNo-10)+'"><a href="#"><<</a></li>');
  544. $('#previous_'+(startNo-10)).on('click', function(e){
  545. previous(e);
  546. });
  547. };
  548. for(i=startNo-10; i<startNo; i++){
  549. $('#ulPagination').append('<li id="page_'+i+'"><a href="#">'+i+'</a></li>');
  550. $('#ulPagination li[id*="page_"]').unbind();
  551. $('#ulPagination li[id*="page_"]').on('click', function(e){
  552. initUserList(Number(e.currentTarget.id.split('_')[1]), '', '');
  553. });
  554. if((startNo)==(i+1)){
  555. $('#ulPagination').append('<li id="next_'+(i+1)+'"><a href="#">>></a></li>');
  556. $('#next_'+(i+1)).on('click', function(e){
  557. next(e);
  558. });
  559. };
  560. };
  561. };
  562. var next = function(){
  563. var startNo = Number(event.currentTarget.id.split('_')[1]);
  564. if(startNo>Math.ceil(totalCount/pageSize)) return;
  565. $('#ulPagination').empty();
  566. $('#ulPagination').append('<li id="previous_'+startNo+'"><a href="#"><<</a></li>');
  567. $('#previous_'+startNo).on('click', function(e){
  568. previous(e);
  569. });
  570. for(i=startNo; i<startNo+10; i++){
  571. if(i>Math.ceil(totalCount/pageSize)) return;
  572. $('#ulPagination').append('<li id="page_'+i+'"><a href="#">'+i+'</a></li>');
  573. $('#ulPagination li[id*="page_"]').unbind();
  574. $('#ulPagination li[id*="page_"]').on('click', function(e){
  575. initUserList(Number(e.currentTarget.id.split('_')[1]), '', '');
  576. });
  577. if((startNo+10)==(i+1) && i!=Math.ceil(totalCount/pageSize)){
  578. $('#ulPagination').append('<li id="next_'+(i+1)+'"><a href="#">>></a></li>');
  579. $('#next_'+(i+1)).on('click', function(e){
  580. next(e);
  581. });
  582. };
  583. };
  584. };
  585. var addExtraAttrUser = function(e){
  586. var userInfo = userList[e.currentTarget.id.split('_')[1]];
  587. for(i=0; i<extraAttrUserEditList.length; i++){
  588. if(extraAttrUserEditList[i].userId == userInfo.userId){
  589. alert('이미 추가된 사용자입니다.');
  590. return;
  591. };
  592. };
  593. extraAttrUserEditList.push(userInfo);
  594. var tr = $('<tr id="trExtraAttrUser_' + extraAttrUserEditList.length + '"></tr>').clone();
  595. var tdUserId = $('<td></td>').clone().text(userInfo.userId);
  596. var tdUserName = $('<td></td>').clone().text(userInfo.userName);
  597. var tdHospital = $('<td></td>').clone().text(userInfo.hospitalName==null? '': userInfo.hospitalName);
  598. var tdDuty = $('<td></td>').clone().text(userInfo.dutyName==null? '': userInfo.dutyName);
  599. var tdWork = $('<td></td>').clone().text(userInfo.workName==null? '': userInfo.workName);
  600. var tdEdit = $('<td></td>').clone().append(
  601. '<button type="button" class="btn btn-default btn-xs" id="btnRemoveExtraAttrUser_'
  602. + extraAttrUserEditList.length + '" userId="'+ userInfo.userId +'"><span class="glyphicon glyphicon-minus">&nbsp;삭제</span></button>');
  603. $('#table_extraAttrUser').append(tr.append(tdUserId).append(tdUserName).append(tdHospital).append(tdDuty).append(tdWork).append(tdEdit));
  604. $('[id*=btnRemoveExtraAttrUser_]').unbind();
  605. $('[id*=btnRemoveExtraAttrUser_]').on('click', function(e) {
  606. removeExtraAttrUser(e);
  607. });
  608. };
  609. var removeExtraAttrUser = function(e){
  610. $('#table_extraAttrUser [id*=trExtraAttrUser_' + e.currentTarget.id.split('_')[1]).remove();
  611. for(var i=0; i<extraAttrUserEditList.length; i++){
  612. if(extraAttrUserEditList[i].userId == e.currentTarget.attributes.userId.value){
  613. extraAttrUserEditList.splice(i, 1);
  614. break;
  615. }
  616. };
  617. };
  618. var confirmExtraAttrUser = function(e){
  619. $('#addExtraAttrModal').modal('hide');
  620. $('#table_extraAttrUser_view').empty();
  621. for (var i = 0; i < extraAttrUserEditList.length; i++) {
  622. var tr = $('<tr></tr>').clone().attr('seq', i);
  623. var tdUserId = $('<td></td>').clone().text(extraAttrUserEditList[i].userId);
  624. var tdUserName = $('<td></td>').clone().text(extraAttrUserEditList[i].userName);
  625. var tdUserHospital = $('<td></td>').clone().text(extraAttrUserEditList[i].hospitalName==null? '': extraAttrUserEditList[i].hospitalName);
  626. var tdUserDuty = $('<td></td>').clone().text(extraAttrUserEditList[i].dutyName==null? '': extraAttrUserEditList[i].dutyName);
  627. var tdUserWork = $('<td></td>').clone().text(extraAttrUserEditList[i].workName==null? '': extraAttrUserEditList[i].workName);
  628. $('#table_extraAttrUser_view').append(tr.append(tdUserId).append(tdUserName).append(tdUserHospital).append(tdUserDuty).append(tdUserWork));
  629. }
  630. ;
  631. extraAttrUserList = [];
  632. $.extend(extraAttrUserList, extraAttrUserEditList); // 객체 복사
  633. };
  634. /**
  635. * 트리 아이템 reload 이벤트
  636. * @private
  637. */
  638. var reloadItem = function(e){
  639. kendo.ui.progress( $wrapper, true );
  640. var opt = {
  641. url : $crudServiceBaseUrl + "/cacheReload.json",
  642. type : "POST",
  643. contentType: "application/json",
  644. complete : function(){
  645. kendo.ui.progress( $wrapper, false );
  646. }
  647. };
  648. var success = function(data){
  649. if( data === 1 ) {
  650. alert("갱신 되었습니다");
  651. } else {
  652. alert( "수행 중 에러가 발생하였습니다" );
  653. }
  654. };
  655. var error = function(xhr,d,t){
  656. console.log(xhr);
  657. console.log(t);
  658. };
  659. self.ajaxAdmin( opt, success, error );
  660. };
  661. };
  662. var rowNum = 0;
  663. function resetRowNum(){
  664. rowNum = 0;
  665. }
  666. function getNum(){
  667. return ++rowNum;
  668. }