1
0
Fork 0
HANYANG_MES/home_dir/www/ksvc_old/base/routing/routing.js

948 lines
34 KiB
JavaScript

//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: "<i class='bi'></i>", //정렬 아이콘
});
_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: "셋업시간<br>(분)", width: "20%", editor:'input', },
{ field: "OP_GRP", title: "공정<br>타입", width: "17%", formatter: tb_common_funtions.formatterSelect, formatterParams: { values: varsOP_GRP }, },
{ field: "WO_MAKE_FLG", title: "작지<br>편성", 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: "<i class='bi'></i>", //정렬 아이콘
});
_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: "외경<br>(MO)", width: "5%", editor:"input", cssClass:"font09 p-0", },
{ field: "EXTRA_ID", title: "내경<br>(MI)", width: "5%", editor:"input", cssClass:"font09 p-0", },
{ field: "EXTRA_TH", title: "두께<br>(MT)", width: "5%", editor:"input", cssClass:"font09 p-0", },
],
},
{ field: "CALC_FEED", title: "가공치수<br>(계산식-P)", width:"22%", hozAlign: "left", editor:"input", editable:(cell)=>{ let val = cell.getData(); return val.USE_FLG === 'Y' }, },
{ field: "CALC_TIME", title: "가공시간<br>(계산식-T)", width:"21%", hozAlign: "left", editor:"input", editable:(cell)=>{ let val = cell.getData(); return val.USE_FLG === 'Y' }, },
{ field: "PROC_CNT", title: "가공<br>횟수", width:"13%", editor:"input", editable:(cell)=>{ let val = cell.getData(); return val.USE_FLG === 'Y' }, },
{ field: "EXTRA_TM", title: "추가<br>시간", 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: "<i class='bi'></i>", //정렬 아이콘
});
_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: "<i class='bi'></i>", //정렬 아이콘
});
_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: "<i class='bi'></i>", //정렬 아이콘
});
_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();