//Grid용 클래스. 블록 처리용 class Tb_class_Spec { constructor(){ let _this = this; _this.tblList = ""; _this.ajax_url = "./routing.ajax.php"; _this.st = ""; } //리스트 로드 getMainList () { let _this = this; let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력 ajax_json({ url: _this.ajax_url, data: { mode: 'getSpecList' }, success: function (data) { if (data.code) { _this.tblList.setData(data.data); _this.st = $("#S_SHAPE_TYPE").val(); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { window.clearTimeout(talert); _this.tblList.clearAlert(); Tb_funcs_Spec.setFilter(); } }); return true; }; //Row 클릭 콜백 rowClick (e, tgt){ let _this = this; }; setFilter () { let _this = this; _this.st = document.getElementById("S_SHAPE_TYPE").value; _this.tblList.setFilter(function(data){ //필터링 return ( true && ( !document.getElementById("S_USE_FLG") || ( !document.getElementById("S_USE_FLG").checked || data.USE_FLG === 'Y' ) ) && ( !document.getElementById("S_SHAPE_TYPE") || ( data.SHAPE_TYPE === document.getElementById("S_SHAPE_TYPE").value ) ) ) }, '=', true); Tb_funcs_Cond.getMainList(); Tb_funcs_Insp.getMainList(); }; //Row 추가 addRow(){ let _this = this; _this.tblList.addRow({_STATUS_:'I', USE_FLG:'Y', SHAPE_TYPE:_this.st, UNIT:'mm'}); } //Row 추가 popSpec(){ let _this = this; //popBasecodeList( '대상_CD_FLD', '대상_NM_FLD', '기초 UID', '콜백 또는 Tabulator row'); /* popBasecodeList('','','ITEM_SPEC',(rowall, row)=>{ //rowall:전체 데이터, row:선택열 데이터 if( document.getElementById("S_SHAPE_TYPE").value ){ _this.getMainList(); //변경적용된 내용으로 리스트 로드 } }); */ popBasecodeList('','','ITEM_SPEC','',_this); } arefunc(rowall, row){ //rowall:전체 데이터, row:선택열 데이터 Tb_funcs_Spec.getMainList(); //변경적용된 내용으로 리스트 로드 }; popShape(){ let _this = this; //popBasecodeList( '대상_CD_FLD', '대상_NM_FLD', '기초 UID', '콜백 또는 Tabulator row'); /* popBasecodeList('','','SHAPE_TYPE',(rowall, row)=>{ //rowall:전체 데이터, row:선택열 데이터 let tgt = document.querySelector("#S_SHAPE_TYPE"); tgt.options.length = 0; rowall.filter( d => d.Code_Active == 'Y' ).forEach( dt => { let opt = document.createElement("option"); opt.value = dt.Code_Uid; opt.text = dt.Code_Val; tgt.append(opt); } ); tgt.dispatchEvent(new Event('change')); }); */ popBasegroupList('','','SHAPE_TYPE', document.querySelector('#S_SHAPE_GRP').value,'',_this); } brefunc(rowall, row){ //rowall:전체 데이터, row:선택열 데이터 let tgt = document.querySelector("#S_SHAPE_TYPE"); tgt.options.length = 0; rowall.filter( d => d.Code_Active == 'Y' ).forEach( dt => { let opt = document.createElement("option"); opt.value = dt.Code_Uid; opt.text = dt.Code_Val; tgt.append(opt); } ); tgt.dispatchEvent(new Event('change')); }; //Cell 클릭 콜백 cellClick (e, tgt){ let _this = this; _this.tgt = tgt; switch( tgt.getField() ){ case "USE_FLG": tgt.setValue( tgt.getValue() == "Y"?"N":"Y" ); break; } }; //Cell 변경 콜백 cellEdited (cell){ let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_||'U'; }; // 스펙정보 등록 putSpec (){ let _this = this; let pdata = _this.tblList.getData('active'); let dupdata = pdata.map( data => data.SPEC_ITEM_CD ).filter( data => data ); if( dupdata.filter( (data,idx) => dupdata.indexOf(data) !== idx ).length > 0 ){ kuls_alert("스펙 코드가 중복됩니다."); return false; } let postdata = { 'mode': 'putSpec', 'reqdata': JSON.stringify(_this.tblList.getData().filter(row=> row._STATUS_)), }; ajax_json({ url: _this.ajax_url, data: postdata, success: function (data) { if (data.code) { kuls_success("저장되었습니다."); _this.getMainList(); }else{ Tb_funcs_Spec.tblList.getRows().forEach( row => { //일부 적용된 열 update 처리 if( data.data.includes(row.getData()['SPEC_ITEM_CD']) ){ row.update({_STATUS_:'U'}); } } ); kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { } }); return true; }; //시작 실행 init () { let _this = this; const fields = [ { formatter: "rownum", title: "No", width: "10%", }, { field: "SP", title: "코드", width: "12%", formatter: (tgt)=>{ let cd = tgt.getData()['SPEC_ITEM_CD']?tgt.getData()['SPEC_ITEM_CD']:''; return 'S.'+cd; }}, { field: "SPEC_ITEM_CD", title: "항목", width: "20%", cssClass:'user-list', editor:'list', editorParams: {values: varsITEM_SPEC,}, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsITEM_SPEC,}, editable:(cell)=>{ let val = cell.getData(); if( val._STATUS_ !== 'I' ){ cell.getElement().classList.remove("user-list"); } return val._STATUS_ === 'I' }, }, { field: "UNIT", title: "단위", width: "13%", editor:'input', }, { field: "", title: "규격표준 공차", columns:[ { field:"STD_TOL_UPPER", title:"상한", hozAlign:"center", width:"16%", editor:'input', formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, }, { field:"STD_TOL_LOWER", title:"하한", hozAlign:"center", width:"16%", editor:'input', formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, }, ], }, { field: "USE_FLG", title: "사용", width: "13%", cssClass:'user-editable', formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: {checkval:'Y'}, }, ]; _this.tblList = new Tabulator("#tblSpecList",{ layout: "fitColumns", height: "100%", data: [], //기본 데이터 columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header",//Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //데이터 정렬 => 정/역/초기화 }, rowFormatter:function(row){ if(row.getData().USE_FLG != "Y"){ row.getElement().classList.add('text-secondary'); } }, movableRows: true, headerSortElement: "", //정렬 아이콘 }); _this.tblList.on("tableBuilt", () => { //Tabulator 초기 데이터 불러오기 이벤트 _this.getMainList(); }); _this.tblList.on("rowClick", (e,tgt) => { //Tabulator Row Click _this.rowClick && Tb_funcs_Spec.rowClick(e,tgt); }); _this.tblList.on("cellEdited", (cell) => { //Tabulator cell Edited _this.cellEdited && Tb_funcs_Spec.cellEdited(cell); }); _this.tblList.on("cellClick", (e,tgt) => { //Tabulator cell Click _this.cellClick && Tb_funcs_Spec.cellClick(e,tgt); }); _this.tblList.on("rowMoved", (row) => { //Tabulator cell Click let shape_type = row.getData()['SHAPE_TYPE']; row.getTable().getRows().filter( row => row.getData()['SHAPE_TYPE'] === shape_type ).forEach( (row, idx) => { row.getData()['ORD_SEQ'] = idx+1; row.getData()['_STATUS_'] = row.getData()['_STATUS_']||'U'; } ); }); ['click','keypress'].forEach(evt => document.querySelector("#btnPopSpec").addEventListener(evt,()=>{_this.popSpec()})); ['click','keypress'].forEach(evt => document.querySelector("#btnPopShape").addEventListener(evt,()=>{_this.popShape()})); ['click','keypress'].forEach(evt => document.querySelector("#btnAddSpec").addEventListener(evt,()=>{_this.addRow()})); ['click','keypress'].forEach(evt => document.querySelector("#btnPutSpec").addEventListener(evt,()=>{_this.putSpec()})); ['change','keydown','keyup'].forEach(evt => document.querySelectorAll("#S_SHAPE_TYPE, #S_USE_FLG").forEach(tgt=>tgt.addEventListener(evt,()=>{Tb_funcs_Spec.setFilter()}))); }; } //Grid용 클래스. 블록 처리용 class Tb_class_Rout { constructor(){ let _this = this; _this.tblList = ""; _this.ajax_url = "./routing.ajax.php"; _this.st = ""; } //리스트 로드 getMainList () { let _this = this; let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력 ajax_json({ url: _this.ajax_url, data: { mode: 'getRoutList' }, success: function (data) { if (data.code) { _this.tblList.setData(data.data); _this.st = $("#S_SHAPE_TYPE").val(); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { window.clearTimeout(talert); _this.tblList.clearAlert(); Tb_funcs_Rout.setFilter(); } }); return true; }; setFilter () { let _this = this; _this.st = document.getElementById("S_SHAPE_TYPE").value; _this.tblList.setFilter(function(data){ //필터링 return ( true && ( !document.getElementById("S_SHAPE_TYPE") || ( (data.SHAPE_TYPE).search(document.getElementById("S_SHAPE_TYPE").value) !== -1 ) ) && ( !document.getElementById("S_USE_FLG") || ( !document.getElementById("S_USE_FLG").checked || data.USE_FLG === 'Y' ) ) ) }, '=', true); }; //Row 추가 addRow(){ let _this = this; let new_proc_seq = Math.max( ..._this.tblList.getData().filter( row => row.SHAPE_TYPE === _this.st ).map( row => row['PROC_SEQ'] ), 0 ) + 10; _this.tblList.addRow({_STATUS_:'I', USE_FLG:'Y', SHAPE_TYPE:_this.st, PROC_SEQ: new_proc_seq, WO_MAKE_FLG:'Y'}); } //Row 클릭 콜백 rowClick (e, tgt){ let _this = this; jQuery(tgt.getElement()).siblings().removeClass("user-checked"); tgt.getElement().classList.add("user-checked"); Tb_funcs_Cond.getMainList(tgt.getData().SHAPE_TYPE, tgt.getData().PROC_SEQ, tgt.getData().OP_CD); Tb_funcs_Insp.getMainList(tgt.getData().SHAPE_TYPE, tgt.getData().PROC_SEQ, tgt.getData().OP_CD); Tb_funcs_BfInsp.getMainList(tgt.getData().SHAPE_TYPE, tgt.getData().PROC_SEQ, tgt.getData().OP_CD); $("#btnPutCond").attr('disabled', false); $("#btnPutInsp").attr('disabled', false); $("#btnPutBfInsp").attr('disabled', false); }; //Cell 클릭 콜백 cellClick (e, tgt){ let _this = this; _this.tgt = tgt; switch( tgt.getField() ){ case "USE_FLG": tgt.setValue( tgt.getValue() == "Y"?"N":"Y" ); break; case "WO_MAKE_FLG": tgt.setValue( tgt.getValue() == "Y"? null : "Y" ); break; } }; //Cell 변경 콜백 cellEdited (cell){ let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_||'U'; }; // 라우팅 등록 putRout (){ let _this = this; let pdata = _this.tblList.getData().filter(row=>row.SHAPE_TYPE === _this.st); let dupdata = pdata.map( data => data.PROC_SEQ ).filter( data => data ); if( dupdata.filter( (data,idx) => dupdata.indexOf(data) !== idx ).length > 0 ){ kuls_alert("공순이 중복됩니다."); return false; } let routdata = _this.tblList.getData(); Object.keys(varsSHAPE_TYPE).forEach( key => { let ord_seq = 0; routdata.forEach(row => { if( row.SHAPE_TYPE === key && row.USE_FLG !== 'N' ){ row.ORD_SEQ = ++ord_seq; } }); } ); let postdata = { 'mode': 'putRout', 'reqdata': JSON.stringify(routdata.filter(row=> row._STATUS_)), }; ajax_json({ url: _this.ajax_url, data: postdata, success: function (data) { if (data.code) { kuls_success("저장되었습니다."); _this.getMainList(); }else{ Tb_funcs_Rout.tblList.getRows().forEach( row => { //일부 적용된 열 update 처리 if( data.data.includes(row.getData()['PROC_SEQ']) ){ row.update({_STATUS_:'U'}); } } ); kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { } }); return true; }; init () { let _this = this; const fields = [ // { formatter: "rownum", title: "No", width: "11%", }, { field: "ORD_SEQ", formatter: "rownum", title: "공순", width: "11%", }, //{ field: "PROC_SEQ", title: "공순", width: "12%", editor:'input', editable:(cell)=>{ let val = cell.getData(); return val._STATUS_ === 'I' }, }, { field: "OP_CD", title: "공정", width: "23%", editor: tb_common_funtions.editorGrpSelect, editorParams:{values:varOPGRP.map( v => { return { name: v.OP_GRP_NM, options: v.OPTIONS.reduce( (retv,vo) => { retv[vo.OP_CD]=vo.OP_NM; return retv; }, {} ) }; } ),}, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varOPGRP.reduce( (r,v) => { return Object.assign(r, v.OPTIONS.reduce( (rev,vo) => { rev[vo.OP_CD]=vo.OP_NM; return rev; }, {} ) ); }, {} ),}, }, { field: "SETUP_TM", title: "셋업시간
(분)", width: "20%", editor:'input', }, { field: "OP_GRP", title: "공정
타입", width: "17%", formatter: tb_common_funtions.formatterSelect, formatterParams: { values: varsOP_GRP }, }, { field: "WO_MAKE_FLG", title: "작지
편성", width: "15%", cssClass:'user-editable', formatter: tb_common_funtions.formatterCheckboxIcon, }, { field: "USE_FLG", title: "사용", width: "13%", cssClass:'user-editable', formatter: tb_common_funtions.formatterToggleboxGreenIcon, formatterParams: {checkval:'Y'}, }, ]; _this.tblList = new Tabulator("#tblRoutList",{ layout: "fitColumns", height: "100%", data: [], //기본 데이터 columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header",//Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //데이터 정렬 => 정/역/초기화 }, rowFormatter:function(row){ if(row.getData().USE_FLG != "Y"){ row.getElement().classList.add('text-secondary'); } }, headerSortElement: "", //정렬 아이콘 }); _this.tblList.on("tableBuilt", () => { //Tabulator 초기 데이터 불러오기 이벤트 _this.getMainList(); }); _this.tblList.on("rowClick", (e,tgt) => { //Tabulator cell Click _this.rowClick && Tb_funcs_Rout.rowClick(e,tgt); }); _this.tblList.on("cellClick", (e,tgt) => { //Tabulator cell Click _this.cellClick && Tb_funcs_Rout.cellClick(e,tgt); }); _this.tblList.on("cellEdited", (cell) => { //Tabulator cell Edited _this.cellEdited && Tb_funcs_Rout.cellEdited(cell); }); ['click','keypress'].forEach(evt => document.querySelector("#btnAddRoute").addEventListener(evt,()=>{_this.addRow()})); ['click','keypress'].forEach(evt => document.querySelector("#btnPutRoute").addEventListener(evt,()=>{_this.putRout()})); ['change','keydown','keyup'].forEach(evt => document.querySelectorAll("#S_SHAPE_TYPE, #S_USE_FLG").forEach(tgt=>tgt.addEventListener(evt,()=>{Tb_funcs_Rout.setFilter()}))); }; } //Grid용 클래스. 블록 처리용 class Tb_class_Cond { constructor(){ let _this = this; _this.tblList = ""; _this.ajax_url = "./routing.ajax.php"; _this.st = ""; _this.seq = 0; _this.pc = ""; } //리스트 로드 getMainList (st, seq, pc) { let _this = this; _this.st = st; _this.seq = seq; _this.pc = pc; let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력 ajax_json({ url: _this.ajax_url, data: { mode: 'getOpPartList', SHAPE_TYPE: _this.st, PROC_SEQ: _this.seq, PROC_CD: _this.pc }, success: function (data) { if (data.code) { _this.tblList.setData(data.data); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { window.clearTimeout(talert); _this.tblList.clearAlert(); } }); return true; }; setFilter () { let _this = this; _this.tblList.setFilter(function(data){ //필터링 return ( true && ( !document.getElementById("S_USE_FLG") || ( !document.getElementById("S_USE_FLG").checked || data.USE_FLG === 'Y' ) ) ) }, '=', true); }; //Row 추가 popCond(){ let _this = this; popBasecodeList('','','OP_PART','',_this); } refunc(rowall, row){ //rowall:전체 데이터, row:선택열 데이터 if( Tb_funcs_Cond.st && Tb_funcs_Cond.seq ){ Tb_funcs_Cond.getMainList(Tb_funcs_Cond.st, Tb_funcs_Cond.seq, Tb_funcs_Cond.pc); //변경적용된 내용으로 리스트 로드 } }; //Cell 클릭 콜백 cellClick (e, tgt){ let _this = this; let rowData = tgt.getData(); _this.tgt = tgt; switch( tgt.getField() ){ case "CALC_FLG": if (rowData.USE_FLG === "Y") { tgt.setValue( tgt.getValue() == "Y"? null : "Y" ); }else{ tgt.setValue( null ); } break; } }; //Cell 변경 콜백 cellEdited (cell){ let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_||'U'; }; // 로케이션 등록 putCond (){ let _this = this; let postdata = { 'mode': 'putOpPartList', 'reqdata': JSON.stringify(_this.tblList.getData().filter(row=> row._STATUS_)), }; ajax_json({ url: _this.ajax_url, data: postdata, success: function (data) { if (data.code) { kuls_success("저장되었습니다."); _this.getMainList(_this.st, _this.seq, _this.pc); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { } }); return true; }; init () { let _this = this; _this.fields = [ { formatter:"rowSelection", titleFormatter: "rowSelection", title: "No", width: "4%", headerSort: false, }, { field: "PP", title: "단위", width: "6%", formatter: (tgt)=>{ return 'P.'+tgt.getData()['PART_CD']; }}, { field: "PART_NM", title: "가공부위", width: "12%", }, { field: "", title: "가공여유", columns:[ { field: "EXTRA_OD", title: "외경
(MO)", width: "5%", editor:"input", cssClass:"font09 p-0", }, { field: "EXTRA_ID", title: "내경
(MI)", width: "5%", editor:"input", cssClass:"font09 p-0", }, { field: "EXTRA_TH", title: "두께
(MT)", width: "5%", editor:"input", cssClass:"font09 p-0", }, ], }, { field: "CALC_FEED", title: "가공치수
(계산식-P)", width:"22%", hozAlign: "left", editor:"input", editable:(cell)=>{ let val = cell.getData(); return val.USE_FLG === 'Y' }, }, { field: "CALC_TIME", title: "가공시간
(계산식-T)", width:"21%", hozAlign: "left", editor:"input", editable:(cell)=>{ let val = cell.getData(); return val.USE_FLG === 'Y' }, }, { field: "PROC_CNT", title: "가공
횟수", width:"13%", editor:"input", editable:(cell)=>{ let val = cell.getData(); return val.USE_FLG === 'Y' }, }, { field: "EXTRA_TM", title: "추가
시간", width:"6%", editor:"input", editable:(cell)=>{ let val = cell.getData(); return val.USE_FLG === 'Y' }, }, ]; _this.tblList = new Tabulator("#tblCondList",{ layout: "fitColumns", height: "calc(100% - 20px)", data: [], //기본 데이터 columns: _this.fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header",//Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //데이터 정렬 => 정/역/초기화 }, rowFormatter:function(row){ if(row.getData().USE_FLG != "Y"){ row.getElement().classList.add('text-secondary'); } else { row.select(); row.getElement().classList.add("user-checked"); } }, headerSortElement: "", //정렬 아이콘 }); _this.tblList.on("cellClick", (e,tgt) => { //Tabulator cell Click _this.cellClick && Tb_funcs_Cond.cellClick(e,tgt); }); _this.tblList.on("cellEdited", (cell) => { //Tabulator cell Edited _this.cellEdited && Tb_funcs_Cond.cellEdited(cell); }); _this.tblList.on("rowSelected", function(row){ jQuery(row.getElement()).removeClass('text-secondary'); row.update({_STATUS_:'U', USE_FLG:'Y', SHAPE_TYPE: _this.st, PROC_SEQ: _this.seq, PROC_CD:_this.pc}); }); _this.tblList.on("rowDeselected", function(row){ row.getElement().classList.add('text-secondary'); row.update({_STATUS_:'U', USE_FLG:'N', SHAPE_TYPE: _this.st, PROC_SEQ: _this.seq, PROC_CD:_this.pc}); }); ['click','keypress'].forEach(evt => document.querySelector("#btnPopCond").addEventListener(evt,()=>{_this.popCond()})); ['click','keypress'].forEach(evt => document.querySelector("#btnPutCond").addEventListener(evt,()=>{_this.putCond()})); }; } //Grid용 클래스. 블록 처리용 class Tb_class_Insp { constructor(){ let _this = this; _this.tblList = ""; _this.ajax_url = "./routing.ajax.php"; _this.st = ""; _this.seq = 0; _this.pc = ""; } //리스트 로드 getMainList (st, seq, pc) { let _this = this; _this.st = st; _this.seq = seq; _this.pc = pc; let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력 ajax_json({ url: _this.ajax_url, data: { mode: 'getInspSpecList', SHAPE_TYPE:_this.st, PROC_SEQ: _this.seq }, success: function (data) { if (data.code) { _this.tblList.setData(data.data); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { window.clearTimeout(talert); _this.tblList.clearAlert(); } }); return true; }; setFilter () { let _this = this; _this.tblList.setFilter(function(data){ //필터링 return ( true && ( !document.getElementById("S_USE_FLG") || ( !document.getElementById("S_USE_FLG").checked || data.USE_FLG === 'Y' ) ) ) }, '=', true); }; //Row 추가 popInsp(){ let _this = this; //popBasecodeList( '대상_CD_FLD', '대상_NM_FLD', '기초 UID', '콜백 또는 Tabulator row'); /* popBasecodeList('','','INSP_ITEM',(rowall, row)=>{ //rowall:전체 데이터, row:선택열 데이터 //if( _this.rn && _this.seq ){ _this.getMainList(_this.rn, _this.seq); //변경적용된 내용으로 리스트 로드 //} }); */ popBasecodeList('','','INSP_ITEM','',_this); }; refunc(rowall, row){ //rowall:전체 데이터, row:선택열 데이터 if( Tb_funcs_Insp.st && Tb_funcs_Insp.seq ){ Tb_funcs_Insp.getMainList(Tb_funcs_Insp.st, Tb_funcs_Insp.seq, Tb_funcs_Insp.pc); //변경적용된 내용으로 리스트 로드 } }; //Cell 변경 콜백 cellEdited (cell){ let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_||'U'; }; // 로케이션 등록 putInsp (){ let _this = this; let postdata = { 'mode': 'putInspSpecList', 'reqdata': JSON.stringify(_this.tblList.getData().filter(row=> row._STATUS_)), }; ajax_json({ url: _this.ajax_url, data: postdata, success: function (data) { if (data.code) { kuls_success("저장되었습니다."); _this.getMainList(_this.st, _this.seq, _this.pc); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { } }); return true; }; init () { let _this = this; const fields = [ { formatter:"rowSelection", titleFormatter: "rowSelection", title: "No", width: "10%", headerSort: false, }, { field: "ITEM_CD", title: "검사항목", width: "23%", hozAlign:'left', editor:'list', editorParams: {values: varsITEM_SPEC,}, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsITEM_SPEC,}, editable: false }, { field: "INSP_METH", title: "검사방법", width: "23%", hozAlign:'left', cssClass:'user-list', editor:'list', editorParams: {values: varsINSP_ITEM,}, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsINSP_ITEM,}, }, { field: "STD_TOL_UPPER", title: "표준공차상한", width: "22%", editor: "input", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, }, { field: "STD_TOL_LOWER", title: "표준공차하한", width: "22%", editor: "input", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, }, ]; _this.tblList = new Tabulator("#tblInspList",{ layout: "fitColumns", height: "calc(100% - 10px)", data: [], //기본 데이터 columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header",//Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //데이터 정렬 => 정/역/초기화 }, rowFormatter:function(row){ if(row.getData().USE_FLG != "Y"){ row.getElement().classList.add('text-secondary'); } else { row.select(); row.getElement().classList.add("user-checked"); } }, headerSortElement: "", //정렬 아이콘 }); _this.tblList.on("cellEdited", (cell) => { //Tabulator cell Edited _this.cellEdited && Tb_funcs_Insp.cellEdited(cell); }); _this.tblList.on("rowSelected", function(row){ jQuery(row.getElement()).removeClass('text-secondary'); row.update({_STATUS_:'U', USE_FLG:'Y', SHAPE_TYPE: _this.st, PROC_SEQ: _this.seq, PROC_CD:_this.pc}); }); _this.tblList.on("rowDeselected", function(row){ row.getElement().classList.add('text-secondary'); row.update({_STATUS_:'U', USE_FLG:'N', SHAPE_TYPE: _this.st, PROC_SEQ: _this.seq, PROC_CD:_this.pc}); }); ['click','keypress'].forEach(evt => document.querySelector("#btnPopInsp").addEventListener(evt,()=>{_this.popInsp()})); ['click','keypress'].forEach(evt => document.querySelector("#btnPutInsp").addEventListener(evt,()=>{_this.putInsp()})); }; } //Grid용 클래스. 블록 처리용 class Tb_class_BfInsp { constructor(){ let _this = this; _this.tblList = ""; _this.ajax_url = "./routing.ajax.php"; _this.st = ""; _this.seq = 0; _this.pc = ""; } //리스트 로드 getMainList (st, seq, pc) { let _this = this; _this.st = st; _this.seq = seq; _this.pc = pc; let talert = window.setTimeout(function () { _this.tblList.alert("Loading ...") }, 1000); //1초 이상 지연되면 로딩 출력 ajax_json({ url: _this.ajax_url, data: { mode: 'getBfInspSpecList', SHAPE_TYPE:_this.st, PROC_SEQ: _this.seq }, success: function (data) { if (data.code) { _this.tblList.setData(data.data); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { window.clearTimeout(talert); _this.tblList.clearAlert(); } }); return true; }; setFilter () { let _this = this; _this.tblList.setFilter(function(data){ //필터링 return ( true && ( !document.getElementById("S_USE_FLG") || ( !document.getElementById("S_USE_FLG").checked || data.USE_FLG === 'Y' ) ) ) }, '=', true); }; refunc(rowall, row){ //rowall:전체 데이터, row:선택열 데이터 if( Tb_funcs_BfInsp.st && Tb_funcs_BfInsp.seq ){ Tb_funcs_BfInsp.getMainList(Tb_funcs_BfInsp.st, Tb_funcs_BfInsp.seq, Tb_funcs_BfInsp.pc); //변경적용된 내용으로 리스트 로드 } }; //Cell 변경 콜백 cellEdited (cell){ let _this = this; cell.getData()._STATUS_ = cell.getData()._STATUS_||'U'; }; // 로케이션 등록 putBfInsp (){ let _this = this; let postdata = { 'mode': 'putBfInspSpecList', 'reqdata': JSON.stringify(_this.tblList.getData().filter(row=> row._STATUS_)), }; ajax_json({ url: _this.ajax_url, data: postdata, success: function (data) { if (data.code) { kuls_success("저장되었습니다."); _this.getMainList(_this.st, _this.seq, _this.pc); }else{ kuls_alert(data.mesg); } }, error: function (request, status, error) { kuls_alert(error.message); }, complete: function () { } }); return true; }; init () { let _this = this; const fields = [ { formatter:"rowSelection", titleFormatter: "rowSelection", title: "No", width: "10%", headerSort: false, }, { field: "ITEM_CD", title: "검사항목", width: "23%", hozAlign:'left', editor:'list', editorParams: {values: varsITEM_SPEC,}, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsITEM_SPEC,}, editable: false }, { field: "INSP_METH", title: "검사방법", width: "23%", hozAlign:'left', cssClass:'user-list', editor:'list', editorParams: {values: varsINSP_ITEM,}, formatter: tb_common_funtions.formatterSelect, formatterParams: {values: varsINSP_ITEM,}, }, { field: "STD_TOL_UPPER", title: "표준공차상한", width: "22%", editor: "input", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, }, { field: "STD_TOL_LOWER", title: "표준공차하한", width: "22%", editor: "input", formatter: tb_common_funtions.formatterNumber, formatterParams: function() { return {'precision':3}; }, }, ]; _this.tblList = new Tabulator("#tblBfInspList",{ layout: "fitColumns", height: "calc(100% - 10px)", data: [], //기본 데이터 columns: fields, //컬럼 설정 columnDefaults: { //컬럼 공통 규칙 vertAlign: "middle", hozAlign: "center", resizable: "header",//Resize 는 헤더에서만 가능 headerHozAlign: "center", //헤더 정렬 headerSortTristate: true, //데이터 정렬 => 정/역/초기화 }, rowFormatter:function(row){ if(row.getData().USE_FLG != "Y"){ row.getElement().classList.add('text-secondary'); } else { row.select(); row.getElement().classList.add("user-checked"); } }, headerSortElement: "", //정렬 아이콘 }); _this.tblList.on("cellEdited", (cell) => { //Tabulator cell Edited _this.cellEdited && Tb_funcs_BfInsp.cellEdited(cell); }); _this.tblList.on("rowSelected", function(row){ jQuery(row.getElement()).removeClass('text-secondary'); row.update({_STATUS_:'U', USE_FLG:'Y', SHAPE_TYPE: _this.st, PROC_SEQ: _this.seq, PROC_CD:_this.pc}); }); _this.tblList.on("rowDeselected", function(row){ row.getElement().classList.add('text-secondary'); row.update({_STATUS_:'U', USE_FLG:'N', SHAPE_TYPE: _this.st, PROC_SEQ: _this.seq, PROC_CD:_this.pc}); }); ['click','keypress'].forEach(evt => document.querySelector("#btnPutBfInsp").addEventListener(evt,()=>{_this.putBfInsp()})); }; } document.querySelector("#S_SHAPE_GRP").addEventListener("change",(e)=>{ let grp = varsSHAPE_GRP[e.target.value].children; document.querySelector("#S_SHAPE_TYPE").options.length = 0; Object.keys(grp).forEach(ckey => { let opt = document.createElement('option'); opt.value = ckey; opt.text = grp[ckey]; document.querySelector("#S_SHAPE_TYPE").append(opt); }); document.querySelector("#S_SHAPE_TYPE").dispatchEvent(new Event("change")); }); const Tb_funcs_Spec = new Tb_class_Spec(); const Tb_funcs_Rout = new Tb_class_Rout(); const Tb_funcs_Cond = new Tb_class_Cond(); const Tb_funcs_Insp = new Tb_class_Insp(); const Tb_funcs_BfInsp = new Tb_class_BfInsp(); Tb_funcs_Spec.init(); Tb_funcs_Rout.init(); Tb_funcs_Cond.init(); Tb_funcs_Insp.init(); Tb_funcs_BfInsp.init();