MAST.js 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004
  1. /**
  2. astfInsertGridData : Source 그리드에서 선택된 row를 Target 그리드로 삽입하는 함수
  3. astfChkMatrixData : 쌍으로 이루어진 값의 배열을 체크하고 값들을 배열로 리턴한다.
  4. astfMakePopup : 팝업메뉴를 생성한다.
  5. astfAddCombo : 콤보박스에 원하는 instance node와 value를 설정한다.
  6. */
  7. var PrnKind =1;
  8. var PrnMarginLeft =0;
  9. var PrnMarginTop =0;
  10. var PageSize = "";
  11. /**
  12. * @ver : 2007.3.12
  13. * @by : 공두경
  14. * @---------------------------------------------------
  15. * @type : function
  16. * @access : public
  17. * @desc : Source 그리드에서 선택된 row를 Target 그리드로 삽입하는 함수
  18. * @param1 : src_grid (Source 그리드 컨트롤 ID)
  19. * @param2 : trgt_grid (Target 그리드 컨트롤 ID)
  20. * @param3 : row_select_val (1:Grid 선택(1 Row 복사) 2: 체크박스(multi-Rows) 3: Grid 전체(All-Rows)
  21. * @param4 : chkbox_col_nm(row_select_val의 값이 2일 경우 해당 체크박스의 ref ID명, 그 외 null("")값)
  22. * @param5 : src_grid_col_nm_matrix (두 그리드간 컬럼명이 다를 경우 서로 다른 컬럼의 쌍으로 matrix 생성
  23. 두 그리드간 컬럼명이 완전히 같을 경우 null("")값)
  24. * @param6 : dupl_val_matrix (중복(Duplication) 값을 제거해야하는 경우 중복체크할 컬럼을 쌍으로 matrix 생성
  25. 중복값을 제거하지 않아도 되는 경우에는 null("")값)
  26. * @return : int(결과 값에 따른 메시지 처리 가능 - 필요시 사용 권장)
  27. * @---------------------------------------------------
  28. */
  29. function astfInsertGridData(src_grid, trgt_grid, row_select_val, chkbox_col_nm, src_grid_col_nm_matrix, dupl_val_matrix)
  30. {
  31. //matrix ???? ??? ??
  32. var grid_matrix_val = astfChkMatrixData(src_grid_col_nm_matrix)
  33. if(grid_matrix_val == "E"){
  34. return 0;
  35. }
  36. var dupl_matrix_val = astfChkMatrixData(dupl_val_matrix);
  37. if(dupl_matrix_val == "E"){
  38. return 1;
  39. }
  40. var chk_opener = checkOpener(); //팝업화면인지를 체크
  41. var src_gridCols = src_grid.cols;
  42. var trgt_gridCols = trgt_grid.cols;
  43. if(row_select_val == 1){ //Source Grid를 클릭 또는 더블클릭으로 1row를 선택시
  44. var insert_vali = true;
  45. var src_node_set = src_grid.nodeset + "[" + src_grid.row+ "]/";
  46. if(dupl_val_matrix != ""){
  47. var dupl_trgt_nodeset = trgt_grid.nodeset + "[";
  48. var chk = dupl_matrix_val.length;
  49. for(var j=0; j < chk; j+=2){
  50. if(j == 0){
  51. dupl_trgt_nodeset += dupl_matrix_val[j+1] + "='" + model.getValue(src_node_set+dupl_matrix_val[j]) + "'";
  52. } else {
  53. dupl_trgt_nodeset += " and " + dupl_matrix_val[j+1] + "='" + model.getValue(src_node_set+dupl_matrix_val[j]) + "'";
  54. }
  55. }
  56. dupl_trgt_nodeset += "]/" + dupl_matrix_val[1];
  57. if ( chk_opener ) {
  58. if(opener.model.getValue(dupl_trgt_nodeset) != ""){ //중복되는 컬럼이 있으면 insert 안함
  59. insert_vali = false; //insert 안함
  60. }
  61. } else {
  62. if(model.getValue(dupl_trgt_nodeset) != ""){ //중복되는 컬럼이 있으면 insert 안함
  63. insert_vali = false; //insert 안함
  64. }
  65. }
  66. if(!insert_vali){
  67. messageBox("데이터가 중복되어 처리 ", "E001");
  68. return 2;
  69. }
  70. }
  71. if(insert_vali) {
  72. trgt_grid.addRow();
  73. var trgt_node_set = trgt_grid.nodeset + "[" + (trgt_grid.rows-1) + "]/";
  74. //src와 trgt grid간에 같은 컬럼명인 경우 값을 셋팅함
  75. for(var i = src_grid.fixedcols; i < src_gridCols; i++){
  76. var src_ref_nm = src_grid.colattribute(i,"ref");
  77. for(var j = trgt_grid.fixedcols; j < trgt_gridCols; j++){
  78. var trgt_ref_nm = trgt_grid.colattribute(j,"ref");
  79. if( src_ref_nm == trgt_ref_nm){
  80. if ( chk_opener ) {
  81. opener.model.setValue(trgt_node_set+trgt_ref_nm,model.getValue(src_node_set+src_ref_nm));
  82. } else {
  83. model.setValue(trgt_node_set+trgt_ref_nm,model.getValue(src_node_set+src_ref_nm));
  84. }
  85. }
  86. }
  87. }
  88. //src_grid_col_nm_matrix 파라미터값이 있는 경우 서로 다른 컬럼명에 값을 셋팅함
  89. if( src_grid_col_nm_matrix != ""){
  90. var chk = grid_matrix_val.length;
  91. for(var i=0; i < chk; i+=2){
  92. if ( chk_opener ) {
  93. opener.model.setValue(trgt_node_set+grid_matrix_val[i+1],model.getValue(src_node_set+grid_matrix_val[i]));
  94. } else {
  95. model.setValue(trgt_node_set+grid_matrix_val[i+1],model.getValue(src_node_set+grid_matrix_val[i]));
  96. }
  97. }
  98. }
  99. // trgt_grid.refresh();
  100. model.refresh();
  101. }
  102. } else if(row_select_val == 2){ //source grid에서 체크박스로 여러 row를 선택시
  103. if(chkbox_col_nm == ""){
  104. //messageBox("CheckBox의 ref name 값이 잘못입력되어 ", "E008");
  105. return 3;
  106. }
  107. var insert_vali = true;
  108. var insert_cnt = 0;
  109. //source grid의 전체 row중 check된 row만 insert 함
  110. for(var t = src_grid.fixedrows; t < src_grid.rows; t++){
  111. var src_node_set = src_grid.nodeset + "[" + t + "]/";
  112. insert_vali = true;
  113. if(model.getValue(src_node_set+chkbox_col_nm) == "true"){ //check된 row일 경우
  114. if(dupl_val_matrix != ""){ //중복 체크를 해야하는 경우
  115. var dupl_trgt_nodeset = trgt_grid.nodeset + "[";
  116. var chk = dupl_matrix_val.length;
  117. for(var j=0; j < chk; j+=2){
  118. if(j == 0){
  119. dupl_trgt_nodeset += dupl_matrix_val[j+1] + "='" + model.getValue(src_node_set+dupl_matrix_val[j]) + "'";
  120. } else {
  121. dupl_trgt_nodeset += " and " + dupl_matrix_val[j+1] + "='" + model.getValue(src_node_set+dupl_matrix_val[j]) + "'";
  122. }
  123. }
  124. dupl_trgt_nodeset += "]/" + dupl_matrix_val[1];
  125. if ( chk_opener ) {
  126. if(opener.model.getValue(dupl_trgt_nodeset) != ""){ //중복되는 컬럼이 있으면 insert 안함
  127. insert_vali = false; //insert 안함
  128. }
  129. } else {
  130. if(model.getValue(dupl_trgt_nodeset) != ""){ //중복되는 컬럼이 있으면 insert 안함
  131. insert_vali = false; //insert 안함
  132. }
  133. }
  134. }
  135. if(insert_vali){
  136. insert_cnt++;
  137. trgt_grid.addRow();
  138. var trgt_node_set = trgt_grid.nodeset + "[" + (trgt_grid.rows-1)+ "]/";
  139. //src와 trgt grid간에 같은 컬럼명인 경우 값을 셋팅함
  140. for(var i = src_grid.fixedcols; i < src_gridCols; i++){
  141. var src_ref_nm = src_grid.colattribute(i,"ref");
  142. for(var j = trgt_grid.fixedcols; j < trgt_gridCols; j++){
  143. var trgt_ref_nm = trgt_grid.colattribute(j,"ref");
  144. if( src_ref_nm == trgt_ref_nm){
  145. if ( chk_opener ) {
  146. opener.model.setValue(trgt_node_set+trgt_ref_nm,model.getValue(src_node_set+src_ref_nm));
  147. } else {
  148. model.setValue(trgt_node_set+trgt_ref_nm,model.getValue(src_node_set+src_ref_nm));
  149. }
  150. }
  151. }
  152. }
  153. //src_grid_col_nm_matrix 파라미터값이 있는 경우 서로 다른 컬럼명에 값을 셋팅함
  154. if( src_grid_col_nm_matrix != ""){
  155. var chk = grid_matrix_val.length;
  156. for(var i=0; i < chk; i+=2){
  157. if ( chk_opener ) {
  158. opener.model.setValue(trgt_node_set+grid_matrix_val[i+1],model.getValue(src_node_set+grid_matrix_val[i]));
  159. } else {
  160. model.setValue(trgt_node_set+grid_matrix_val[i+1],model.getValue(src_node_set+grid_matrix_val[i]));
  161. }
  162. }
  163. }
  164. //trgt_grid.refresh();
  165. //model.refresh();
  166. }
  167. }
  168. }
  169. model.refresh();
  170. if(insert_cnt == 0){
  171. //messageBox("데이터가 중복되어 처리 ", "E001");
  172. return 2;
  173. }
  174. } else if(row_select_val == 3){ //source grid의 전체를 insert 해야할 경우
  175. var insert_vali = true;
  176. var insert_cnt = 0;
  177. for(var t = src_grid.fixedrows; t < src_grid.rows; t++){
  178. var src_node_set = src_grid.nodeset + "[" + t + "]/";
  179. insert_vali = true;
  180. if(dupl_val_matrix != ""){ //중복 체크를 해야하는 경우
  181. var dupl_trgt_nodeset = trgt_grid.nodeset + "[";
  182. var chk = dupl_matrix_val.length;
  183. for(var j=0; j < chk; j+=2){
  184. if(j == 0){
  185. dupl_trgt_nodeset += dupl_matrix_val[j+1] + "='" + model.getValue(src_node_set+dupl_matrix_val[j]) + "'";
  186. } else {
  187. dupl_trgt_nodeset += " and " + dupl_matrix_val[j+1] + "='" + model.getValue(src_node_set+dupl_matrix_val[j]) + "'";
  188. }
  189. }
  190. dupl_trgt_nodeset += "]/" + dupl_matrix_val[1];
  191. if ( chk_opener ) {
  192. if(opener.model.getValue(dupl_trgt_nodeset) != ""){ //중복되는 컬럼이 있으면 insert 안함
  193. insert_vali = false; //insert 안함
  194. }
  195. } else {
  196. if(model.getValue(dupl_trgt_nodeset) != ""){ //중복되는 컬럼이 있으면 insert 안함
  197. insert_vali = false; //insert 안함
  198. }
  199. }
  200. }
  201. //if(insert_vali){
  202. insert_cnt++;
  203. trgt_grid.addRow();
  204. var trgt_node_set = trgt_grid.nodeset + "[" + (trgt_grid.rows-1)+ "]/";
  205. for(var i = src_grid.fixedcols; i < src_gridCols; i++){
  206. var src_ref_nm = src_grid.colattribute(i,"ref");
  207. for(var j = trgt_grid.fixedcols; j < trgt_gridCols; j++){
  208. var trgt_ref_nm = trgt_grid.colattribute(j,"ref");
  209. if( src_ref_nm == trgt_ref_nm){
  210. if ( chk_opener ) {
  211. opener.model.setValue(trgt_node_set+trgt_ref_nm,model.getValue(src_node_set+src_ref_nm));
  212. } else {
  213. model.setValue(trgt_node_set+trgt_ref_nm,model.getValue(src_node_set+src_ref_nm));
  214. }
  215. }
  216. }
  217. }
  218. //src_grid_col_nm_matrix 파라미터값이 있는 경우 서로 다른 컬럼명에 값을 셋팅함
  219. if( src_grid_col_nm_matrix != ""){
  220. var chk = grid_matrix_val.length;
  221. for(var i=0; i < chk; i+=2){
  222. if ( chk_opener ) {
  223. opener.model.setValue(trgt_node_set+grid_matrix_val[i+1],model.getValue(src_node_set+grid_matrix_val[i]));
  224. } else {
  225. model.setValue(trgt_node_set+grid_matrix_val[i+1],model.getValue(src_node_set+grid_matrix_val[i]));
  226. }
  227. }
  228. }
  229. //trgt_grid.refresh();
  230. model.refresh();
  231. //}
  232. }
  233. if(insert_cnt == 0){
  234. //messageBox("데이터가 중복되어 처리 ", "E001");
  235. return 2;
  236. }
  237. }
  238. if ( chk_opener ) {
  239. opener.model.refresh();
  240. } else {
  241. model.refresh();
  242. }
  243. return 10;
  244. }
  245. /**
  246. * @ver : 2007.3.13
  247. * @by : 공두경
  248. * @---------------------------------------------------
  249. * @type : function
  250. * @access : public
  251. * @desc : 구분자 ‘,’(쉼표)를 통해 “src_param1,tagt_param1,src_param2,tagt_param2,..."으로 쌍으로 이루어진
  252. 단일 matrix의 오류체크를 하고 matrix를 배열(array)로 변환하는 함수
  253. * @param1 : matrix_val (구분자를 통해 source와 target의 값의 쌍으로 이루어진 String형 변수값을 받음)
  254. * @return : Array(처리 오류 발생시에는 "E"값 반환)
  255. * @---------------------------------------------------
  256. */
  257. function astfChkMatrixData(matrix_val)
  258. {
  259. var col_data = "";
  260. if(matrix_val != ""){
  261. var col_flag = ",";
  262. col_data = matrix_val.split(col_flag); //구분자를 통한 array 생성
  263. if(col_data.length <= 1) {
  264. col_data = "E";
  265. return col_data; //col-anme set이 오류 발생시
  266. }
  267. var chk = col_data.length % 2;
  268. if( chk == 1 ) {
  269. col_data = "E";
  270. return col_data; //col-anme set에 오류 발생시
  271. }
  272. }
  273. return col_data;
  274. }
  275. /**
  276. * @ver : 2007.4.10
  277. * @by : 공두경
  278. * @---------------------------------------------------
  279. * @type : function
  280. * @access : public
  281. * @desc : 팝업메뉴를 생성하는 함수
  282. * @param1 : ctrlD(해당 컨트롤의 ID)
  283. * @param2 : xPath(팝업메뉴에 보여질 label, func의 xPath)
  284. * @return :
  285. * @---------------------------------------------------
  286. */
  287. function astfMakePopup(ctrID, xPath){
  288. var id = ctrID.elementName;
  289. if (event.button == 3){
  290. if(id == "xforms:datagrid"){
  291. if(ctrID.isCell(event.target) && ctrID.mouseRow >= ctrID.fixedrows){
  292. window.setPopupMenu(true, xPath, label, func, false);
  293. }else{
  294. window.setPopupMenu(false);
  295. }
  296. } else if(id == "xforms:calendar" || id == "xforms:select" || id == "xforms:select1" || id == "xforms:treeview"){
  297. if(ctrID.isCell(event.target)){
  298. window.setPopupMenu(true, xPath, "label", "func", false);
  299. }else{
  300. window.setPopupMenu(false);
  301. }
  302. } else if(id == "xforms:multilinegrid"){
  303. if(ctrID.mouseRow >= ctrID.fixedrows){
  304. window.setPopupMenu(true, xPath, "label", "func", false);
  305. }else{
  306. window.setPopupMenu(false);
  307. }
  308. } else if(id == "xforms:img"){
  309. window.setPopupMenu(true, xPath, "label", "func", false);
  310. } else {
  311. window.setPopupMenu(false);
  312. }
  313. }
  314. }
  315. /**
  316. * @ver : 2007.7.16
  317. * @by : 공두경
  318. * @---------------------------------------------------
  319. * @type : function
  320. * @access : public
  321. * @desc : 콤보박스에 원하는 instance node와 value를 설정
  322. * @param1 : combo의 itemset중 nodeset의 경로가 들어감(예: "/root/hidden/deptlist")
  323. * @param2 : combo의 label값과 value값 바로 상위의 노드이름(예: "dept")
  324. * @param3 : combo의 label과 value를 구분자 ','로 공백없이 쌍으로 받음(예 : "cd,nm")
  325. * @param4 : label과 value의 값의 쌍을 받음 (예 : "전체,-")
  326. * @return
  327. * @---------------------------------------------------
  328. */
  329. function astfAddCombo(combopath, parentnode, nodename, nodeval)
  330. {
  331. nodename = nodename.split(",");
  332. nodeval = nodeval.split(",");
  333. if(nodename.length != nodeval.length){
  334. return;
  335. }
  336. var label = model.instances(0).createElement(nodename[0]);
  337. var val = model.instances(0).createElement(nodename[1]);
  338. var combo = model.instances(0).createElement(parentnode);
  339. label.value = "" + nodeval[0] + "";
  340. val.value = "" + nodeval[1] + "";
  341. combo.appendChild(label);
  342. combo.appendChild(val);
  343. chkNode = model.instances(0).selectSingleNode(combopath);
  344. if(chkNode == null){
  345. model.makeNode(combopath);
  346. srcNode = model.instances(0).selectSingleNode(combopath);
  347. }else{
  348. srcNode = model.instances(0).selectSingleNode(combopath);
  349. }
  350. desNode = model.instances(0).selectSingleNode(combopath + "/" + parentnode);
  351. //cnt = model.getXPathValue("count(" + combopath + "/" + parentnode + ")");
  352. // alert(cnt);
  353. if(desNode == null){
  354. //messageBox("MIS 조회된 데이터가 없음===>", "E001");
  355. return 0;
  356. }else{
  357. srcNode.insertBefore(combo, desNode);
  358. //messageBox("MIS 조회된 데이터가 있음===>", "E001");
  359. }
  360. model.refresh();
  361. }
  362. /**
  363. * @ver : 2007.9.6
  364. * @by : 공두경
  365. * @---------------------------------------------------
  366. * @type : function
  367. * @access : public
  368. * @desc : 원하는 nodeset을 1...n개 만들어서 뒤에 *추가*로 복사함
  369. * @param1 : target nodeset의 경로가 들어감(예: "/root/send/deptlist")
  370. * @param2 : source nodeset의 경로가 들어감(예: "/root/main/deptlist/deptlist["+i+"]")
  371. * @return
  372. * @---------------------------------------------------
  373. */
  374. function astfCopyNodeSet(trgtNodeSet, srcNodeSet) {
  375. var nodename_array = trgtNodeSet.split("/");
  376. var nodename = "";
  377. for( var i = 1; i< nodename_array.length -1; i++ ) {
  378. nodename += "/"+nodename_array[i];
  379. }
  380. var srcNodeList = model.instance1.selectNodes(srcNodeSet);
  381. if( srcNodeList.length == 0 )
  382. return;
  383. var tmpNodeSet;
  384. for( var j = srcNodeList.length - 1; j >= 0; j-- ) {
  385. tmpSrcNode = srcNodeList.item(j).cloneNode(true);
  386. tmpSrcNode.nodeName = nodename_array[i];
  387. model.duplicate(nodename, tmpSrcNode);
  388. }
  389. }
  390. /**
  391. * @ver : 2007.9.17
  392. * @by : 공두경
  393. * @---------------------------------------------------
  394. * @type : function
  395. * @access : public
  396. * @param : 공백제거 대상이 되는 String 문자열
  397. * @desc : 앞뒤 공백을 지움
  398. * @return
  399. * @---------------------------------------------------
  400. */
  401. function astfTrim(val)
  402. {
  403. var result_val = "";
  404. var i = 0; //왼쪽제거
  405. var j = 0;//오른쪽제거
  406. for(i = 0; i < val.length; i++){
  407. var temp = val.substr(i,1);
  408. if(temp == null || temp == "" || temp == " " || temp == " " || temp == "undefined"){
  409. } else {
  410. break;
  411. }
  412. }
  413. for(j = val.length; j > 0; j--){
  414. var temp = val.substr(j,1);
  415. if(temp == null || temp == "" || temp == " " || temp == " " || temp == "undefined"){
  416. } else {
  417. break;
  418. }
  419. }
  420. return ( (i > 0) || (j < val.length) ) ? val.substring(i, j-i+1) : val;
  421. }
  422. /**
  423. * @ver : 2007.9.17
  424. * @by : 공두경
  425. * @---------------------------------------------------
  426. * @type : function
  427. * @access : public
  428. * @desc : 구분자로 분리도니 특정자료를 읽음
  429. * @param1 : pData
  430. * @param2 : pRow(▩)
  431. * @param3 : pCol(▦)
  432. * @return
  433. * @---------------------------------------------------
  434. */
  435. function astfMatrixData(pData, pRow, pCol)
  436. {
  437. var rowSep = "▩";
  438. var colSep = "▦";
  439. var arrRow = pData.split(rowSep);
  440. if(arrRow.length <= pRow) return "";
  441. var arrCol = arrRow[pRow].split(colSep);
  442. if(arrCol.length <= pCol) return "";
  443. return arrCol[pCol];
  444. }
  445. /**
  446. * @group : commonweb
  447. * @ver : 2007.05.08 (CMCDEV-0001)
  448. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  449. * @---------------------------------------------------
  450. * @type : function
  451. * @access : public
  452. * @desc : 바코드 Format 시작
  453. * @param : pX = 시작 가로위치 (in dots)
  454. * @param : pY = 시작 세로위치 (in dots)
  455. * @return :
  456. * @---------------------------------------------------
  457. */
  458. function astfStartFormat(pX, pY, pPage) {
  459. PageSize = pPage;
  460. if ( PrnKind == 2 || PrnKind == 7 ) {
  461. // if ( PrnMarginLeft.length == 1 ){
  462. // PrnMarginLeft = "0"+ PrnMarginLeft;
  463. // }
  464. // if ( PrnMarginTop.length == 1 ){
  465. // PrnMarginTop = "0"+ PrnMarginTop;
  466. // }
  467. if(pPage == "S") {
  468. return "AA107000500V00H00L0101";
  469. }else {
  470. return "AA110300820V00H00L0101";
  471. }
  472. } else {
  473. return "^XA^SEE:UHANGUL.DAT^FS^CWQ,E:AAAAA.FNT^FS^CI26" + "^LH" + pX + "," + pY;
  474. }
  475. }
  476. /**
  477. * @group : commonweb
  478. * @ver : 2007.05.08 (CMCDEV-0001)
  479. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  480. * @---------------------------------------------------
  481. * @type : function
  482. * @access : public
  483. * @desc : 바코드 Format 종료
  484. * @param : pCnt = 출력매수
  485. * @return :
  486. * @---------------------------------------------------
  487. */
  488. function astfEndFormat(pCnt) {
  489. var vCnt = 1;
  490. if (isNull(pCnt)) {
  491. vCnt = 1;
  492. } else {
  493. vCnt = pCnt
  494. }
  495. if ( PrnKind == 2 || PrnKind == 7 ) {
  496. return "Q"+ vCnt +"Z";
  497. } else {
  498. return "^PQ" + vCnt + "^XZ";
  499. }
  500. }
  501. /**
  502. * @group : commonweb
  503. * @ver : 2007.05.08 (CMCDEV-0001)
  504. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  505. * @---------------------------------------------------
  506. * @type : function
  507. * @access : public
  508. * @desc : 바코드 Format 종료
  509. * @param : pX = 시작 가로위치 (in dots)
  510. * @param : pY = 시작 세로위치 (in dots)
  511. * @return :
  512. * @---------------------------------------------------
  513. */
  514. function astfFiendOrigin(pX, pY) {
  515. if ( PrnKind == 2 || PrnKind == 7 ) {
  516. return "V"+pY+"H"+pX;
  517. } else {
  518. return "^FO" + pX + "," + pY;
  519. }
  520. }
  521. /**
  522. * @group : commonweb
  523. * @ver : 2007.05.08 (CMCDEV-0001)
  524. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  525. * @---------------------------------------------------
  526. * @type : function
  527. * @access : public
  528. * @desc : 기본 Font 설정
  529. * @param : pF = Default Font
  530. * @param : pH = Height(in dots) - Default 9
  531. * @param : pW = Width(in dots) - Default 5
  532. * @return :
  533. * @---------------------------------------------------
  534. */
  535. function astfChangeFont(pF, pH, pW) {
  536. var sBuf = "";
  537. sBuf = "^CF" + pF;
  538. sBuf += "," + pH;
  539. sBuf += "," + pW;
  540. return sBuf;
  541. }
  542. /**
  543. * @group : commonweb
  544. * @ver : 2007.05.08 (CMCDEV-0001)
  545. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  546. * @---------------------------------------------------
  547. * @type : function
  548. * @access : public
  549. * @desc : 박스 출력
  550. * @param : pX = 시작 가로위치 (in dots)
  551. * @param : pY = 시작 세로위치 (in dots)
  552. * @param : pW = 박스 폭 (in dots)
  553. * @param : pH = 박스 높이 (in dots)
  554. * @param : pBF = 보더 굵이 (박스를 채우려면 값을 크게 준다. 1 ~ 3200)
  555. * @return :
  556. * @---------------------------------------------------
  557. */
  558. function astfGraphicBox(pX, pY, pW, pH, pBF) {
  559. var sBuf = "";
  560. if ( PrnKind == 2 || PrnKind == 7 ) {
  561. } else {
  562. sBuf = astfFiendOrigin(pX, pY);
  563. sBuf += "^GB" + pW + "," + pH + "," + pBF + "^FS";
  564. }
  565. return sBuf;
  566. }
  567. /**
  568. * @group : commonweb
  569. * @ver : 2007.05.08 (CMCDEV-0001)
  570. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  571. * @---------------------------------------------------
  572. * @type : function
  573. * @access : public
  574. * @desc : 알파벳, 숫자 Field정의
  575. * @param : pX = 시작 가로위치 (in dots)
  576. * @param : pY = 시작 세로위치 (in dots)
  577. * @param : pData = Field Data
  578. * @param : pReverse = 배경 기준으로 역상으로표시 ( Y:역상으로 )
  579. * @return :
  580. * @---------------------------------------------------
  581. */
  582. function astfFieldDataA(pX, pY, pData, pReverse) {
  583. var sBuf = "";
  584. sBuf = astfFiendOrigin(pX, pY);
  585. if (!isNull(pReverse)) {
  586. if (pReverse.getTrim() == "Y") {
  587. sBuf += "^FR";
  588. }
  589. }
  590. sBuf += "^FD" + pData + "^FS";
  591. return sBuf;
  592. }
  593. /**
  594. * @group : commonweb
  595. * @ver : 2007.05.08 (CMCDEV-0001)
  596. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  597. * @---------------------------------------------------
  598. * @type : function
  599. * @access : public
  600. * @desc : 한글 및 특수문자 Field정의
  601. * @param : pX = 시작 가로위치 (in dots)
  602. * @param : pY = 시작 세로위치 (in dots)
  603. * @param : pW = 폰트 Width
  604. * @param : pH = 폰트 Height
  605. * @param : pData = Field Data
  606. * @return :
  607. * @---------------------------------------------------
  608. */
  609. function astfFieldDataH(pX, pY, pW, pH, pData) {
  610. var sBuf = "";
  611. sBuf += astfFiendOrigin(pX, pY);
  612. sBuf += "^CFA" + "," + pW + "," + pH;;
  613. sBuf += "^FD" + pData + "^FS";
  614. return sBuf;
  615. }
  616. /**
  617. * @group : commonweb
  618. * @ver : 2007.05.08 (CMCDEV-0001)
  619. * @by : Jin Hwa Ji [ACK Co., Ltd.]
  620. * @---------------------------------------------------
  621. * @type : function
  622. * @access : public
  623. * @desc : 바코드 정의(Code 39)
  624. * @param : pX = 시작 가로위치
  625. * @param : pY = 시작 세로위치
  626. * @param : pO = 방향
  627. * @param : pH = 바코드 Height
  628. * @param : pData = 바코드정보
  629. * @param : pBigYN = 바코드 크기정보
  630. * @return :
  631. * @---------------------------------------------------
  632. */
  633. function astfBarCode_Code39(pX, pY, pO, pH, pData, pBigYN) {
  634. var sBuf = "";
  635. pX = parseInt(pX) + parseInt(PrnMarginLeft);
  636. pY = parseInt(pY) + parseInt(PrnMarginTop);
  637. sBuf = astfFiendOrigin(pX, pY);
  638. if ( PrnKind == 2 || PrnKind == 7 ) {
  639. //sBuf += "V"+pY+"H"+pX+"B103080" +"*" +pData +"*";
  640. if ( PageSize == "S" ) {
  641. sBuf += "V"+pY+"H"+pX+"BG01070" + pData ;
  642. } else {
  643. sBuf += "V"+pY+"H"+pX+"BG02070" + pData ;
  644. }
  645. //sBuf += "V"+pY+"H"+pX+"BC01070" +pData.length+ pData ;
  646. //sBuf += "BT101020102V"+pY+"H"+pX+"BW01070" +"*" +pData +"*" ;
  647. } else {
  648. if(pBigYN == "S"){
  649. sBuf += "^BY1,2.0";
  650. } else if(pBigYN == "B"){
  651. sBuf += "^BY2,2.0";
  652. } else {
  653. sBuf += "^BY2,2.0";
  654. }
  655. sBuf += "^B3" + pO + ",N," + pH + ",N,N^FD" + pData + "^FS";
  656. }
  657. return sBuf;
  658. }
  659. /**
  660. * @group : commonweb
  661. * @ver : 2007.09.18
  662. * @by : 공두경
  663. * @---------------------------------------------------
  664. * @type : function
  665. * @access : public
  666. * @desc : 한글 및 특수문자 Field정의
  667. * @param : pX = 시작 가로위치 (in dots)
  668. * @param : pY = 시작 세로위치 (in dots)
  669. * @param : pFont = 글자크기(1-10)
  670. * @param : pData = Field Data
  671. * @param : pReverse = 배경 기준으로 역상으로표시 ( Y:역상으로 )
  672. * @return :
  673. * @---------------------------------------------------
  674. */
  675. function astfPrintOutH(pX, pY, pFont, pImage, pData, pReverse) {
  676. var sBuf = "";
  677. if ( PrnKind == 2 || PrnKind == 7 ) {
  678. sBuf= CommAX.PrtImgOut(pX,pY,pData);
  679. } else {
  680. sBuf = astfFontSize(pFont);
  681. sBuf += CommAX.PrtImgOut(pImage, pData);
  682. sBuf += astfFiendOrigin(pX, pY);
  683. sBuf += "^XG"+pImage+",2,1^FS";
  684. }
  685. return sBuf;
  686. }
  687. /**
  688. * @group : commonweb
  689. * @ver : 2007.09.18
  690. * @by : 공두경
  691. * @---------------------------------------------------
  692. * @type : function
  693. * @access : public
  694. * @desc : 일반 영문 및 숫자 Field정의
  695. * @param : pX = 시작 가로위치 (in dots)
  696. * @param : pY = 시작 세로위치 (in dots)
  697. * @param : pFont = 글자크기(1-10)
  698. * @param : pData = Field Data
  699. * @param : pReverse = 배경 기준으로 역상으로표시 ( Y:역상으로 )
  700. * @return :
  701. * @---------------------------------------------------
  702. */
  703. function astfPrintOutA(pX, pY, pFont, pData, pReverse) {
  704. var sBuf = "";
  705. sBuf += astfFontSize(pFont);
  706. sBuf += astfFieldDataA(pX, pY, pData, pReverse);
  707. return sBuf;
  708. }
  709. /**
  710. * @group : commonweb
  711. * @ver : 2007.09.18
  712. * @by : 공두경
  713. * @---------------------------------------------------
  714. * @type : function
  715. * @access : public
  716. * @desc : 한글 및 특수문자 Field정의
  717. * @param : pX = 시작 가로위치 (in dots)
  718. * @param : pY = 시작 세로위치 (in dots)
  719. * @param : pFont = 글자크기(1-10)
  720. * @param : pData = Field Data
  721. * @param : pReverse = 배경 기준으로 역상으로표시 ( Y:역상으로 )
  722. * @return :
  723. * @---------------------------------------------------
  724. */
  725. function astfPrintOut(pX, pY, pFont, pData, pReverse) {
  726. var sBuf = "";
  727. //alert("이전:"+pX);
  728. pX = parseInt(pX) + parseInt(PrnMarginLeft);
  729. pY = parseInt(pY) + parseInt(PrnMarginTop);
  730. //alert("PrnMarginLeft:"+PrnMarginLeft);
  731. //alert("이후:"+pX);
  732. if ( PrnKind == 2 ) {
  733. sBuf = astfFiendOrigin(pX, pY);
  734. sBuf += astfFontSize(pFont);
  735. //if (!isNull(pReverse)) {
  736. // if (pReverse.getTrim() == "Y") {
  737. // sBuf += "%2";
  738. // } else {
  739. // sBuf += "%0";
  740. // }
  741. // }
  742. sBuf += pData+"";
  743. } else if (PrnKind == 7){
  744. if(pFont == 6 || pFont == 7 || pFont == 10){
  745. sBuf += CommAX.PrtImgOut(parseInt( pY), parseInt(pX), pData,2,2,"0","K2B");
  746. } else {
  747. sBuf += CommAX.PrtImgOut(parseInt( pY), parseInt(pX), pData,1,1,"0","K2B");
  748. }
  749. /* if(pFont == 6 || pFont == 7){
  750. if (pReverse.getTrim() == "Y") {
  751. sBuf += CommAX.PrtImgOut(parseInt(pX),parseInt( pY), pData,2,2, "2", "K8D" ,"M")+"";
  752. } else {
  753. sBuf += CommAX.PrtImgOut(parseInt(pX),parseInt( pY), pData,2,2, "0", "K8D" ,"M")+"";
  754. }
  755. } else {
  756. if (pReverse.getTrim() == "Y") {
  757. sBuf += CommAX.PrtImgOut(parseInt(pX),parseInt( pY), pData,1,1, "2", "K9D" ,"M")+"";
  758. } else {
  759. sBuf += CommAX.PrtImgOut(parseInt(pX),parseInt( pY), pData,1,1, "0", "K9D" ,"M")+"";
  760. }
  761. } */
  762. } else {
  763. sBuf = astfFiendOrigin(pX, pY);
  764. sBuf += astfFontSize(pFont);
  765. if (!isNull(pReverse)) {
  766. if (pReverse.getTrim() == "Y") {
  767. sBuf += "^FR";
  768. }
  769. }
  770. sBuf += "^FD"+pData+"^FS";
  771. }
  772. return sBuf;
  773. }
  774. /**
  775. * @group : commonweb
  776. * @ver : 2007.09.18
  777. * @by : 공두경
  778. * @---------------------------------------------------
  779. * @type : function
  780. * @access : public
  781. * @desc : 숫자 크기정의
  782. * @param : pFont = 폰트크기(1-10)
  783. * @return :
  784. * @---------------------------------------------------
  785. */
  786. function astfFontSize(pFont) {
  787. var sBuf = "";
  788. var pW = 0;
  789. var pH = 0;
  790. if ( PrnKind == 2 || PrnKind == 7 ) {
  791. if(pFont == 6 || pFont == 7 || pFont == 10){
  792. sBuf ="L0202K8D";
  793. } else {
  794. sBuf ="L0101K9D";
  795. }
  796. } else {
  797. if(pFont == 1){
  798. pH = 21;
  799. pW = 10;
  800. } else if(pFont == 2){
  801. pH = 26;
  802. pW = 19;
  803. } else if(pFont == 3){
  804. pH = 31;
  805. pW = 23;
  806. } else if(pFont == 4){
  807. pH = 36;
  808. pW = 28;
  809. } else if(pFont == 5){
  810. pH = 41;
  811. pW = 33;
  812. } else if(pFont == 6){
  813. pH = 46;
  814. pW = 38;
  815. } else if(pFont == 7){
  816. pH = 50;
  817. pW = 43;
  818. } else if(pFont == 8){
  819. pH = 55;
  820. pW = 48;
  821. } else if(pFont == 9){
  822. pH = 60;
  823. pW = 53;
  824. } else if(pFont == 10){
  825. pH = 70;
  826. pW = 62;
  827. } else if(pFont == 11){
  828. pH = 25;
  829. pW = 13;
  830. } else if(pFont == 21){
  831. pH = 25;
  832. pW = 19;
  833. } else if(pFont == 24){
  834. pH = 26;
  835. pW = 16;
  836. } else if(pFont == 27){
  837. pH = 31;
  838. pW = 26;
  839. } else if(pFont == 28){
  840. pH = 30;
  841. pW = 19;
  842. }else if(pFont == 29){
  843. pH = 31;
  844. pW = 20;
  845. }else if(pFont == 31){
  846. pH = 33;
  847. pW = 23;
  848. } else if(pFont == 32){
  849. pH = 35;
  850. pW = 24;
  851. } else if(pFont == 33){
  852. pH = 35;
  853. pW = 25;
  854. } else if(pFont == 34){
  855. pH = 35;
  856. pW = 26;
  857. } else if(pFont == 35){
  858. pH = 35;
  859. pW = 28;
  860. }
  861. sBuf = "^AQN,"+pH+","+pW;
  862. }
  863. return sBuf;
  864. }
  865. /**
  866. * @group : commonweb
  867. * @ver : 2008.07.14
  868. * @by : 나윤상
  869. * @---------------------------------------------------
  870. * @type : function
  871. * @access : public
  872. * @desc : 노드셋 내의 Not Null 컬럼 체크
  873. * @param : pNodeSet = 대상 노드셋
  874. * pCol = 검증대상 컬럼
  875. * pMsg = 출력될 메시지
  876. * @return :
  877. * @---------------------------------------------------
  878. */
  879. function astfNullValidation(pNodeSet, pCol, pMsg)
  880. {
  881. var cntnull = model.getXPathValue("count(" + pNodeSet + " [normalize-space(string(" + pCol + ")) = ''])");
  882. if(cntnull > 0)
  883. {
  884. messageBox(pMsg , "C001");
  885. return false;
  886. }
  887. return true;
  888. }
  889. /**
  890. * @group : commonweb
  891. * @ver : 2008.07.21
  892. * @by : 나윤상
  893. * @---------------------------------------------------
  894. * @type : function
  895. * @access : public
  896. * @desc : srcNodeSet의 모든 노드셋을 refNodeSet으로 복사한다.(노드셋 리네임 복사)
  897. * @param : srcNodeSet = 원본 노드셋
  898. * refNodeSet = 복사해서 넣을 노드셋
  899. * @return :
  900. * @---------------------------------------------------
  901. */
  902. function astfCopyRenameNodeSet(refNodeSet, srcNodeSet)
  903. {
  904. var refNodeCnt = instance1.selectNodes(refNodeSet).length;
  905. for(var i = 1; i <= instance1.selectNodes(srcNodeSet).length; i++)
  906. {
  907. var makeNodeCnt = parseInt(refNodeCnt) + parseInt(i);
  908. model.makeNode(refNodeSet + "[" + makeNodeCnt + "]");
  909. model.copyNode(refNodeSet + "[" + makeNodeCnt + "]", srcNodeSet + "[" + i + "]");
  910. }
  911. }