2024-02-08 02:26:11 +00:00
|
|
|
// 입력 type string으로 변경
|
|
|
|
|
function textEditor(container, options) {
|
|
|
|
|
kendoJQuery('<input type="text" name="' + options.field + '"/>')
|
|
|
|
|
.addClass('k-input k-textbox')
|
|
|
|
|
.appendTo(container)
|
|
|
|
|
.blur(function(e) {
|
|
|
|
|
if (e.originalEvent.target.value) {
|
|
|
|
|
options.model.set("result", 1);
|
|
|
|
|
} else {
|
|
|
|
|
options.model.set("result", null);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 입력 type number로 변경
|
|
|
|
|
function numericEditor(container, options) {
|
|
|
|
|
/*kendoJQuery('<input name="' + options.field + '" id="numeric-min-max" class="numeric-max-width-200" min="0" max="9999" />')*/
|
|
|
|
|
kendoJQuery('<input name="' + options.field + '" id="numeric-min-max" />')
|
|
|
|
|
.appendTo(container)
|
|
|
|
|
.kendoNumericTextBox({
|
|
|
|
|
format : "n20",
|
|
|
|
|
decimals: 20,
|
|
|
|
|
round: false,
|
|
|
|
|
//restrictDecimals: true,
|
|
|
|
|
change: function (e) {
|
|
|
|
|
if (e.sender.value() == null) {
|
|
|
|
|
options.model.set("result", null);
|
|
|
|
|
} else {
|
|
|
|
|
options.model.set("result", e.sender.value());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// NumericTextBox from 텍스트 길이 제한
|
|
|
|
|
//numericLengthControl();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NumericTextBox from 텍스트 길이 제한
|
|
|
|
|
function numericLengthControl() {
|
|
|
|
|
var ntb = kendoJQuery("#numeric-min-max").data("kendoNumericTextBox");
|
|
|
|
|
ntb._adjust = function(value) {
|
|
|
|
|
var that = this,
|
|
|
|
|
options = that.options,
|
|
|
|
|
min = options.min,
|
|
|
|
|
max = options.max;
|
|
|
|
|
if (value === null) {
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
element = this.element;
|
|
|
|
|
var triggerEvent = function() {
|
|
|
|
|
var evtData = { value: value, max: max, min: min };
|
|
|
|
|
setTimeout(function() {
|
|
|
|
|
element.trigger("outOfRange", evtData);
|
|
|
|
|
}, 1);
|
|
|
|
|
};
|
|
|
|
|
if (min !== null && value < min) {
|
|
|
|
|
triggerEvent();
|
|
|
|
|
value = min;
|
|
|
|
|
} else if (max !== null && value > max) {
|
|
|
|
|
triggerEvent();
|
|
|
|
|
value = max;
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
};
|
|
|
|
|
kendoJQuery("#numeric-min-max").bind("outOfRange", function(e, data) {
|
|
|
|
|
if (data.value > data.max)
|
|
|
|
|
alert("입력하신 " + data.value + "는 입력하실수 없으며 입력가능한 최대 숫자는 " + data.max + " 입니다. ");
|
|
|
|
|
else if (data.value < data.min)
|
|
|
|
|
alert("입력하신 " + data.value + "는 입력하실수 없으며 입력가능한 최소 숫자는 " + data.min);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isNumNull(v) {
|
|
|
|
|
return (v === undefined || v === null) ? '0' : v;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isNumNullBlank(v) {
|
|
|
|
|
return (v === undefined || v === null) ? '' : v;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isNumTextNull(v) {
|
|
|
|
|
return (v === undefined || v === null) ? '' : v;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function fn_kendoAllDataXml01(kendoGridRoot, kendoColCount, kendoRowCount, kendoStartIndex, dataGrid){
|
|
|
|
|
var s = "<changedData>";
|
|
|
|
|
var m = "";
|
|
|
|
|
|
|
|
|
|
for(var i=0; i<kendoRowCount; i++){
|
|
|
|
|
var row = kendoGridRoot._data[i];
|
|
|
|
|
//var keys = Object.keys(row);
|
|
|
|
|
|
|
|
|
|
m = m + "<data>";
|
|
|
|
|
|
|
|
|
|
for(var j=kendoStartIndex; j<kendoColCount; j++){
|
|
|
|
|
var column = kendoGridRoot.columns[j];
|
|
|
|
|
var dataField = column.field;
|
|
|
|
|
|
|
|
|
|
if ( dataField === undefined ){
|
|
|
|
|
var columnsCount = column.columns.length
|
|
|
|
|
for(var k=0; k<columnsCount; k++){
|
|
|
|
|
dataField = column.columns[k].field;
|
|
|
|
|
m = m + "<"+dataField+">" + isNumNullBlank(row[ dataField ]) + "</"+dataField+">";
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
m = m + "<"+dataField+">" + isNumNullBlank(row[ dataField ]) + "</"+dataField+">";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
m = m + "</data>";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
var e = "</changedData>";
|
|
|
|
|
return s+m+e;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function fn_kendoAllDataXml02(kendoGridRoot, kendoColCount, kendoRowCount, kendoStartIndex, dataGrid){
|
|
|
|
|
var s = "<changedData>";
|
|
|
|
|
var m = "";
|
|
|
|
|
|
|
|
|
|
for(var i=0; i<kendoRowCount; i++){
|
|
|
|
|
var row = kendoGridRoot._data[i];
|
|
|
|
|
|
|
|
|
|
m = m + "<data>";
|
|
|
|
|
|
|
|
|
|
for(var j=kendoStartIndex; j<kendoColCount; j++){
|
|
|
|
|
var column = kendoGridRoot.columns[j];
|
|
|
|
|
var dataField = column.field;
|
|
|
|
|
|
|
|
|
|
if ( dataField === undefined ){
|
|
|
|
|
var columnsCount = column.columns.length
|
|
|
|
|
for(var k=0; k<columnsCount; k++){
|
|
|
|
|
dataField = column.columns[k].field;
|
|
|
|
|
m = m + "<"+dataField+">" + isNumNullBlank(row[ dataField ]) + "</"+dataField+">";
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
m = m + "<"+dataField+">" + isNumNullBlank(row[ dataField ]) + "</"+dataField+">";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
m = m + "<COLUMN></COLUMN>";
|
|
|
|
|
m = m + "</data>";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
var e = "</changedData>";
|
|
|
|
|
return s+m+e;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//이미지 파일업로드 display관리 (열추가일 경우)
|
|
|
|
|
function fn_kendoFileDisplayCol(nowColumnIndex, nowColLength, id, keyRowIndex){
|
|
|
|
|
if(document.getElementById(id+nowColumnIndex) != null){
|
|
|
|
|
document.getElementById(id+nowColumnIndex).style.display = "";
|
|
|
|
|
|
|
|
|
|
for(var i=1; i<nowColLength; i++){
|
|
|
|
|
if(i != nowColumnIndex){
|
|
|
|
|
var key = i;
|
|
|
|
|
document.getElementById(id+key).style.display = "none";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function fn_kendoFileDisplayCol2(nowColumnIndex, nowColLength, id, keyRowIndex){
|
|
|
|
|
//$(".g_bottom_box").find("tr").hide();
|
|
|
|
|
if(document.getElementById(id+nowColumnIndex) != null){
|
|
|
|
|
document.getElementById(id+nowColumnIndex).style.display = "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//열삭제
|
|
|
|
|
function fn_kendoColDel(colCount,rowCount, startIndex, layoutStart, layoutEnd, gridApp, gridRoot){
|
|
|
|
|
var layoutStr = "";
|
|
|
|
|
if(colCount>startIndex){
|
|
|
|
|
layoutStr = "";
|
|
|
|
|
|
|
|
|
|
//layout
|
|
|
|
|
for(var i=1; i<=colCount-(startIndex+1); i++){
|
|
|
|
|
layoutStr = layoutStr + '\<DataGridColumn width="100" id="VALUE'+i+'" dataField="VALUE'+i+'" textAlign="left" resizable="false" />\
|
|
|
|
|
';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//data
|
|
|
|
|
for(var i=0; i<rowCount; i++){
|
|
|
|
|
changeItem("", i, "VALUE"+(colCount-startIndex), gridRoot);
|
|
|
|
|
}
|
|
|
|
|
//set
|
|
|
|
|
gridApp.setLayout(layoutStart+layoutStr+layoutEnd);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//수정 작업 결과 XML을 가져와 Ajax로 서버로 보내기
|
|
|
|
|
//서버의 설정에 따라 serverUrl를 변경하시기 바랍니다.
|
|
|
|
|
var xmlHttp;
|
|
|
|
|
var pUrl = "";
|
|
|
|
|
var isAjax = false;
|
|
|
|
|
function fn_submitAllToServerKendo(strUrl, rUrl, changedDataXML) {
|
|
|
|
|
// 데이터 중복 방지
|
|
|
|
|
if(isAjax){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
isAjax = true;
|
|
|
|
|
|
|
|
|
|
var serverUrl = strUrl;
|
|
|
|
|
|
|
|
|
|
if (changedDataXML == null) {
|
|
|
|
|
location.href=rUrl;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
xmlHttp = new XMLHttpRequest();
|
|
|
|
|
} catch(trymicrosoft) {
|
|
|
|
|
try {
|
|
|
|
|
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
|
|
|
|
|
} catch(othermicrosoft) {
|
|
|
|
|
try {
|
|
|
|
|
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
|
|
|
|
|
} catch(failed) {
|
|
|
|
|
xmlHttp = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!xmlHttp) {
|
|
|
|
|
alert("Error initializing XMLHttpRequest!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
xmlHttp.onreadystatechange = handleStateChange;
|
|
|
|
|
xmlHttp.open("POST", serverUrl, true);
|
|
|
|
|
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
|
|
|
|
|
setTimeout(function(){xmlHttp.send("changedDataXML="+encodeURIComponent("<changedData>"+changedDataXML+"</changedData>"));},300);
|
|
|
|
|
pUrl = rUrl;
|
|
|
|
|
setTimeout(function(){isAjax = false;},500);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//그리드 변경여부
|
|
|
|
|
function Is_GridUpdateKendo(changedDataXML){
|
|
|
|
|
if (changedDataXML == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}else{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//로딩바 숨김, 막은 그리드 해제
|
|
|
|
|
function fn_progressbarHideKendo(){
|
|
|
|
|
$("#progressbarDiv").addClass("trViewOff");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Grid 포커스 포지션
|
|
|
|
|
function setEditedItemPositionKendo(colIndex, rowIndex , grid) {
|
|
|
|
|
var editedCell = {columnIndex:colIndex, rowIndex:rowIndex};
|
|
|
|
|
dataGrid.setEditedItemPosition(editedCell);
|
|
|
|
|
document.getElementById(grid).focus();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Grid 포커스 포지션 (From)
|
|
|
|
|
function setEditedItemPositionKendoFrom(colIndex, rowIndex , grid, dataGrid) {
|
|
|
|
|
if (grid === "grid") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid tbody tr:eq('"+(rowIndex + 1)+"') td:eq('"+(colIndex - 1)+"')"));
|
|
|
|
|
} else if (grid === "grid1") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid1 tbody tr:eq('"+(rowIndex + 1)+"') td:eq('"+(colIndex - 1)+"')"));
|
|
|
|
|
} else if (grid === "grid2") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid2 tbody tr:eq('"+(rowIndex + 1)+"') td:eq('"+(colIndex - 1)+"')"));
|
|
|
|
|
} else if (grid === "gridCheck") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid tbody tr:eq('"+(rowIndex + 1)+"') td:eq('"+(colIndex - 1)+"')"));
|
|
|
|
|
} else if (grid === "gridCheck1") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid1 tbody tr:eq('"+(rowIndex + 1)+"') td:eq('"+(colIndex - 1)+"')"));
|
|
|
|
|
} else if (grid === "gridCheck2") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid2 tbody tr:eq('"+(rowIndex + 1)+"') td:eq('"+(colIndex - 1)+"')"));
|
|
|
|
|
} else {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid tbody tr:eq('"+(rowIndex + 1)+"') td:eq('"+(colIndex - 1)+"')"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function setEditedItemPositionKendoFrom2(colIndex, rowIndex , grid, dataGrid) {
|
|
|
|
|
kendoJQuery("#kictGrid").find("td").removeClass("k-state-selected");
|
|
|
|
|
kendoJQuery("#kictGrid").find("tr:eq("+(rowIndex + 1)+")").find("td:eq("+colIndex+")").addClass("k-state-selected");
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid tbody tr:eq('"+rowIndex+"') td:eq('"+(colIndex)+"')"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Grid 포커스 포지션 (To)
|
|
|
|
|
function setEditedItemPositionKendoTo(colIndex, rowIndex , grid, dataGrid) {
|
|
|
|
|
if (grid === "grid") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid tbody tr:eq('"+rowIndex+"') td:eq('"+colIndex+"')"));
|
|
|
|
|
} else if (grid === "grid1") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid1 tbody tr:eq('"+rowIndex+"') td:eq('"+colIndex+"')"));
|
|
|
|
|
} else if (grid === "grid2") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid2 tbody tr:eq('"+rowIndex+"') td:eq('"+colIndex+"')"));
|
|
|
|
|
} else if (grid === "gridCheck") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid tbody tr:eq('"+rowIndex+"') td:eq('"+(colIndex + 1)+"')"));
|
|
|
|
|
} else if (grid === "gridCheck1") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid1 tbody tr:eq('"+rowIndex+"') td:eq('"+(colIndex + 1)+"')"));
|
|
|
|
|
} else if (grid === "gridCheck2") {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid2 tbody tr:eq('"+rowIndex+"') td:eq('"+(colIndex + 1)+"')"));
|
|
|
|
|
} else {
|
|
|
|
|
dataGrid.editCell(kendoJQuery("#kictGrid tbody tr:eq('"+rowIndex+"') td:eq('"+colIndex+"')"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//저장클릭 시, 숫자관련 길이 제한 (GRID)
|
|
|
|
|
//type : COL, ROW 종류
|
|
|
|
|
//gridNotNull 파라미터에 false를 전달하면 kendo Grid에 null값을 넣어도 됨(예외처리)
|
|
|
|
|
function fn_saveNumberCheckKendo(type, gridRoot, dataGrid, grid, startIndex, item, rowInfoItem, gridNotNull , kind){
|
|
|
|
|
|
|
|
|
|
var rowCount = gridRoot._view.length; //가로(행) 갯수
|
|
|
|
|
var colCount = rowInfoItem.length; //세로(열) 갯수
|
|
|
|
|
var chkDupFrom = []; //From 값 중복 체크
|
|
|
|
|
var chkDupTo = []; //TO 값 중복 체크
|
|
|
|
|
var chkDup = []; //시간간격 값 중복 체크
|
|
|
|
|
var chkDupRowFromTo = []; //Row의 경우 From, To 값 중복 체크
|
|
|
|
|
|
|
|
|
|
//COL
|
|
|
|
|
if(type == "COL"){
|
|
|
|
|
//Row 검사
|
|
|
|
|
for(var r=0; r<rowCount; r++){
|
|
|
|
|
for(var i=startIndex; i<colCount; i++){
|
|
|
|
|
if(item[r+"_idx"] != undefined){
|
|
|
|
|
if(item[r+"_idx"] == r){
|
|
|
|
|
var column = dataGrid.columns[i];
|
|
|
|
|
var dataField = column.field;
|
|
|
|
|
var title = item[r+"_title"]; //헤더 텍스트
|
|
|
|
|
|
|
|
|
|
//자리수 체크
|
|
|
|
|
var gridDataArray = dataGrid._data;
|
|
|
|
|
var columnName = dataField;
|
|
|
|
|
var columnDataVector = gridDataArray[r][columnName];
|
|
|
|
|
var val = columnDataVector;
|
|
|
|
|
|
|
|
|
|
if(fn_isNull(val) != "" && (is_float(val,Number(item[r+"_start_num"]),Number(item[r+"_end_num"])) == false || is_numberRange(val,Number(item[r+"_start_num"]),Number(item[r+"_end_num"])) == false )){
|
|
|
|
|
alert(title + "값의 범위를 확인하시기 바랍니다. ([1]정수 : "+item[r+"_start_num"]+"자리, 소수점 이하 : "+ item[r+"_end_num"]+"자리)");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoFrom2(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else if(fn_isNull(val) == "" && gridNotNull){
|
|
|
|
|
gridHasNull(title, i, r, grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var temp = title.toUpperCase();
|
|
|
|
|
if( temp.indexOf("TO") > -1){
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoFrom2(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
}else{
|
|
|
|
|
chkDupTo.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( temp.indexOf("FROM") > -1){
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoFrom2(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
}else{
|
|
|
|
|
chkDupFrom.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(kind != "rockJoinshear" && kind != "rockPointload" && kind != "rockUniaxial"){
|
|
|
|
|
// To의 값, From의 값 검증
|
|
|
|
|
if(temp.indexOf("TO") > -1){
|
|
|
|
|
var column = dataGrid.columns[i];
|
|
|
|
|
var dataField = column.field;
|
|
|
|
|
|
|
|
|
|
var gridDataArray = dataGrid._data;
|
|
|
|
|
var columnName = dataField;
|
|
|
|
|
|
|
|
|
|
var columnDataVector_from = gridDataArray[r-1][columnName];
|
|
|
|
|
var columnDataVector_to = gridDataArray[r][columnName];
|
|
|
|
|
|
|
|
|
|
columnDataVector_from = Number(columnDataVector_from); // number로 형변환
|
|
|
|
|
columnDataVector_to = Number(columnDataVector_to); // number로 형변환
|
|
|
|
|
|
|
|
|
|
var val = columnDataVector_from;
|
|
|
|
|
var val2 = columnDataVector_to;
|
|
|
|
|
|
|
|
|
|
if(fn_isNull(val) == "" || fn_isNull(val2) == "" || Number(val) >= Number(val2) ){
|
|
|
|
|
alert(item[r+"_title"]+"에 입력된 값이 이전에 입력된 심도(From)(m) 값보다 같거나 작은 값이 입력되었습니다. 확인바랍니다. ");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoFrom2(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(kind != "rockJoinshear" && kind != "rockPointload" && kind != "rockUniaxial"){
|
|
|
|
|
//중복 체크 함수에 심도 값을 담은 배열을 전달
|
2024-07-17 07:02:36 +00:00
|
|
|
if(false && (!chkDuplicates(chkDupFrom) || !chkDuplicates(chkDupTo))){
|
2024-02-08 02:26:11 +00:00
|
|
|
alert("심도 값이 중복되었습니다. 확인 후 다시 저장 바랍니다.")
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ROW
|
|
|
|
|
if(type == "ROW"){
|
|
|
|
|
for(var i=0; i<colCount; i++){
|
|
|
|
|
for(var r=0; r<rowCount; r++){
|
|
|
|
|
if(item[i+"_idx"] != undefined){
|
|
|
|
|
if(item[i+"_idx"] == i){
|
|
|
|
|
//컬럼정보
|
|
|
|
|
var column = dataGrid.columns[i];
|
|
|
|
|
var dataField = "";
|
|
|
|
|
var title = "";
|
|
|
|
|
|
|
|
|
|
if (column.columns != undefined) {
|
|
|
|
|
//if (column.columns.length > 0) {
|
|
|
|
|
for (var k=0; k<column.columns.length; k++){
|
|
|
|
|
dataField = column.columns[k].field;
|
|
|
|
|
title = column.columns[k].title; //헤더 텍스트
|
|
|
|
|
//colCount = colCount - 1; // 이중 column의 수만큼 길이를 뺀값
|
|
|
|
|
|
|
|
|
|
var gridDataArray = dataGrid._data;
|
|
|
|
|
var columnName = dataField;
|
|
|
|
|
var columnDataVector = gridDataArray[r][columnName];
|
|
|
|
|
var val = columnDataVector;
|
|
|
|
|
|
|
|
|
|
// From(m) 경우,
|
|
|
|
|
var temp = dataField.toUpperCase();
|
|
|
|
|
if( temp.indexOf("DEPTH") > -1 && temp.indexOf("FROM") > -1){
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
if( r == 0){
|
|
|
|
|
setEditedItemPositionKendoFrom(i, r , grid, dataGrid);
|
|
|
|
|
} else {
|
|
|
|
|
setEditedItemPositionKendoFrom(i+1, r-1 , grid, dataGrid);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else{
|
|
|
|
|
chkDupFrom.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// To(m) 경우,
|
|
|
|
|
if( temp.indexOf("DEPTH") > -1 && temp.indexOf("TO") > -1){
|
|
|
|
|
//i = i + 1;
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoTo(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else{
|
|
|
|
|
chkDupTo.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(fn_isNull(val) != "" && (is_float(val,Number(item[i+"_start_num"]),Number(item[i+"_end_num"])) == false || is_numberRange(val,Number(item[i+"_start_num"]),Number(item[i+"_end_num"])) == false )){
|
|
|
|
|
alert(title + "값의 범위를 확인하시기 바랍니다. ([2]정수 : "+item[i+"_start_num"]+"자리, 소수점 이하 : "+ item[i+"_end_num"]+"자리)");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoFrom(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else if(fn_isNull(val) == "" && gridNotNull){
|
|
|
|
|
gridHasNull(title, i, r, grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
dataField = column.field;
|
|
|
|
|
title = column.title; //헤더 텍스트
|
|
|
|
|
|
|
|
|
|
//심도 또는 from, to 중복값 체크
|
|
|
|
|
var temp = dataField.toUpperCase();
|
|
|
|
|
|
|
|
|
|
//자리수 체크
|
|
|
|
|
var gridDataArray = dataGrid._data;
|
|
|
|
|
var columnName = dataField;
|
|
|
|
|
var columnDataVector = gridDataArray[r][columnName];
|
|
|
|
|
var val = columnDataVector;
|
|
|
|
|
|
|
|
|
|
if(fn_isNull(val) != "" && (is_float(val,Number(item[i+"_start_num"]),Number(item[i+"_end_num"])) == false || is_numberRange(val,Number(item[i+"_start_num"]),Number(item[i+"_end_num"])) == false )){
|
|
|
|
|
alert(title + "값의 범위를 확인하시기 바랍니다. ([2]정수 : "+item[i+"_start_num"]+"자리, 소수점 이하 : "+ item[i+"_end_num"]+"자리)");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoFrom(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else if(fn_isNull(val) == "" && gridNotNull){
|
|
|
|
|
gridHasNull(title, i, r, grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//표준관입시험, 공내재하 심도값 중복체크
|
|
|
|
|
if( temp.indexOf("DEPTHSPT") > -1 || temp.indexOf("FIELDPRESDEPTH") > -1 ){
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoTo(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else{
|
|
|
|
|
chkDupFrom.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// FROM(m) 경우
|
|
|
|
|
if( temp.indexOf("DEPTH") > -1 && temp.indexOf("FROM") > -1){
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoTo(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else{
|
|
|
|
|
chkDupFrom.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// To(m) 경우
|
|
|
|
|
if( temp.indexOf("DEPTH") > -1 && temp.indexOf("TO") > -1){
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoTo(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else{
|
|
|
|
|
chkDupTo.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//현장투수시험 시간간격 경우
|
|
|
|
|
if( temp.indexOf("FIELDWPTESTSPACING") > -1 ){
|
|
|
|
|
val = fn_isNull(val);
|
|
|
|
|
if( val == '' || val == null || val == 'null' ){
|
|
|
|
|
alert(title + "의 값이 입력되지 않았습니다. 확인 후 다시 저장 바랍니다.");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoTo(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}else{
|
|
|
|
|
chkDup.push(val);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//중복 체크 함수에 심도 값을 담은 배열을 전달
|
2024-07-17 07:02:36 +00:00
|
|
|
if(false && (!chkDuplicates(chkDupFrom) || !chkDuplicates(chkDupTo))){
|
2024-02-08 02:26:11 +00:00
|
|
|
alert("심도 값이 중복되었습니다. 확인 후 다시 저장 바랍니다.")
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//중복 체크 함수에 시간간격 값을 담은 배열을 전달
|
|
|
|
|
if(!chkDuplicates(chkDup)){
|
|
|
|
|
|
|
|
|
|
if(temp.indexOf("FIELDWPLU") > -1){
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
alert("시간간격 값이 중복되었습니다. 확인 후 다시 저장 바랍니다.")
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//심도 중복 체크
|
|
|
|
|
function chkDuplicates(array) {
|
|
|
|
|
var valuesSoFar = [];
|
|
|
|
|
for (var i = 0; i < array.length; ++i) {
|
|
|
|
|
var value = array[i];
|
|
|
|
|
if (valuesSoFar.indexOf(value) !== -1) {
|
|
|
|
|
//중복된 값 존재
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
valuesSoFar.push(value);
|
|
|
|
|
}
|
|
|
|
|
//중복된 값 없음
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//그리드에 null 값이 있는 경우
|
|
|
|
|
function gridHasNull(title, i, r, grid, dataGrid){
|
|
|
|
|
alert(title + "값을 입력해주세요. 값을 입력할 수 없는 경우 0 또는 1111111111을 기입해주세요");
|
|
|
|
|
fn_progressbarHide(); //ProgressbarHide
|
|
|
|
|
setEditedItemPositionKendoFrom2(i, r , grid, dataGrid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//실수체크
|
|
|
|
|
function fn_saveFloatCheckKendo(type, gridRoot, dataGrid, grid, startIndex, dataIndex, rowInfoItem){
|
|
|
|
|
//RowCount
|
|
|
|
|
var rowCount = gridRoot._view.length; // 가로(행) 갯수
|
|
|
|
|
|
|
|
|
|
//ColCount
|
|
|
|
|
var colCount = rowInfoItem.length; // 세로(열) 갯수
|
|
|
|
|
|
|
|
|
|
//COL
|
|
|
|
|
if(type == "COL"){
|
|
|
|
|
//Row 검사
|
|
|
|
|
for(var r=0; r<rowCount; r++){
|
|
|
|
|
if(r == dataIndex){
|
|
|
|
|
for(var i=startIndex; i<colCount; i++){
|
|
|
|
|
var column = dataGrid.columns[i];
|
|
|
|
|
var dataField = column.field();
|
|
|
|
|
|
|
|
|
|
//자리수 체크
|
|
|
|
|
var gridDataArray = dataGrid._data;
|
|
|
|
|
var columnName = dataField;
|
|
|
|
|
var columnDataVector = gridDataArray[r][columnName];
|
|
|
|
|
var val = columnDataVector;
|
|
|
|
|
|
|
|
|
|
if(fn_isNull(val) != "" && is_RegexFloat(val) == false){
|
|
|
|
|
alert("숫자로 입력하시기 바랍니다.");
|
|
|
|
|
fn_progressbarHide();
|
|
|
|
|
setEditedItemPosition2(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ROW
|
|
|
|
|
if(type == "ROW"){
|
|
|
|
|
for(var i=0; i<colCount; i++){
|
|
|
|
|
if(i == dataIndex){
|
|
|
|
|
for(var r=0; r<rowCount; r++){
|
|
|
|
|
var column = dataGrid.columns[i];
|
|
|
|
|
var dataField = column.field;
|
|
|
|
|
|
|
|
|
|
//자리수 체크
|
|
|
|
|
var gridDataArray = dataGrid._data;
|
|
|
|
|
var columnName = dataField;
|
|
|
|
|
var columnDataVector = gridDataArray[r][columnName];
|
|
|
|
|
var val = columnDataVector;
|
|
|
|
|
|
|
|
|
|
if(fn_isNull(val) != "" && is_RegexFloat(val) == false){
|
|
|
|
|
alert("숫자로 입력하시기 바랍니다.");
|
|
|
|
|
fn_progressbarHide();
|
|
|
|
|
setEditedItemPosition2(i, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//from , to 검사 (GRID 용)
|
|
|
|
|
function fn_fromToCheckGridKendo(type, gridRoot, dataGrid, grid, startIndex, fromIndex, toIndex){
|
|
|
|
|
|
|
|
|
|
//RowCount
|
|
|
|
|
var collection = gridRoot.getCollection();
|
|
|
|
|
var rowCount = collection.getLength();
|
|
|
|
|
|
|
|
|
|
//ColCount
|
|
|
|
|
var colCount = dataGrid.getColumnCount();
|
|
|
|
|
|
|
|
|
|
//title
|
|
|
|
|
var titlefield = "";
|
|
|
|
|
|
|
|
|
|
//COL
|
|
|
|
|
if(type == "COL"){
|
|
|
|
|
//title지정
|
|
|
|
|
if(startIndex == 2){
|
|
|
|
|
titlefield = "TITLE2";
|
|
|
|
|
}else{
|
|
|
|
|
titlefield = "TITLE";
|
|
|
|
|
}
|
|
|
|
|
//Col 검사
|
|
|
|
|
for(var i=startIndex; i<colCount; i++){
|
|
|
|
|
|
|
|
|
|
//컬럼정보
|
|
|
|
|
var col = dataGrid.getColumns()[i];
|
|
|
|
|
var dataField = col.getDataField();
|
|
|
|
|
|
|
|
|
|
//title
|
|
|
|
|
var fromtitle = gridRoot.getItemFieldAt(fromIndex, titlefield);
|
|
|
|
|
var totitle = gridRoot.getItemFieldAt(toIndex, titlefield);
|
|
|
|
|
|
|
|
|
|
//값
|
|
|
|
|
var fromval = gridRoot.getItemFieldAt(fromIndex, dataField);
|
|
|
|
|
var toval = gridRoot.getItemFieldAt(toIndex, dataField);
|
|
|
|
|
|
|
|
|
|
//from to 비교
|
|
|
|
|
if(fn_fromToCheckAlert(fromval, toval, fromtitle, totitle, "") == false){
|
|
|
|
|
setEditedItemPosition2(i, fromIndex , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//ROW
|
|
|
|
|
if(type == "ROW"){
|
|
|
|
|
for(var r=0; r<rowCount; r++){
|
|
|
|
|
//컬럼정보
|
|
|
|
|
var fromCol = dataGrid.getColumns()[fromIndex];
|
|
|
|
|
var toCol = dataGrid.getColumns()[toIndex];
|
|
|
|
|
var fromDataField = fromCol.getDataField();
|
|
|
|
|
var toDataField = toCol.getDataField();
|
|
|
|
|
|
|
|
|
|
//헤더
|
|
|
|
|
var fromtitle = gridRoot.getObjectById(fromDataField).getHeaderText().replace("<br>",""); //헤더 텍스트
|
|
|
|
|
var totitle = gridRoot.getObjectById(toDataField).getHeaderText().replace("<br>",""); //헤더 텍스트
|
|
|
|
|
|
|
|
|
|
//값
|
|
|
|
|
var fromval = gridRoot.getItemFieldAt(r, fromDataField);
|
|
|
|
|
var toval = gridRoot.getItemFieldAt(r, toDataField);
|
|
|
|
|
|
|
|
|
|
//from to 비교
|
|
|
|
|
if(fn_fromToCheckAlert(fromval, toval, fromtitle, totitle, "") == false){
|
|
|
|
|
setEditedItemPosition2(fromIndex, r , grid, dataGrid);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//파일사이즈, 확장자 검사
|
|
|
|
|
function fn_fileCheckKendo(gridRoot, rowCount, colCount, seqID1, seqID2, fileId, gubun, startCount){
|
|
|
|
|
|
|
|
|
|
if(gubun == "R" && rowCount > 0){
|
|
|
|
|
for(var f = 1; f < rowCount + 1; f++){
|
|
|
|
|
//var seq = gridRoot.getItemFieldAt(f, seqID1);
|
|
|
|
|
var seq = f;
|
|
|
|
|
|
|
|
|
|
//seq 두개의 조합으로 생길 때-----------------------------add
|
|
|
|
|
if(seqID2 != "") seq += "_" + f;
|
|
|
|
|
//seq 두개의 조합으로 생길 때-----------------------------add
|
|
|
|
|
|
|
|
|
|
if(!fn_fileTotalCheck(fileId+seq)){
|
|
|
|
|
fn_fileClear(fileId+seq);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(startCount == null || startCount == "" || startCount == "undefined"){
|
|
|
|
|
startCount = 999;
|
|
|
|
|
}
|
|
|
|
|
if(gubun == "C" && colCount >= startCount){
|
|
|
|
|
//alert("CV");
|
|
|
|
|
//첨부파일이 있을경우 확장자 체크
|
|
|
|
|
for(var f = 1; f < (colCount - (startCount-1)); f++){
|
|
|
|
|
var seq = f;
|
|
|
|
|
|
|
|
|
|
//seq 두개의 조합으로 생길 때-----------------------------add
|
|
|
|
|
if(seqID2 != "") seq += "_" + f;
|
|
|
|
|
//seq 두개의 조합으로 생길 때-----------------------------add
|
|
|
|
|
// 테스트
|
|
|
|
|
//alert("fileId : " + fileId + seq);
|
|
|
|
|
if(!fn_fileTotalCheck(fileId+seq)){
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//그리드 탭 이동
|
|
|
|
|
function fn_tabKendo(e, grid, fromToRow) {
|
|
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
var currentNumberOfItems = grid.dataSource.view().length;
|
|
|
|
|
var row = $(e.target).closest('tr').index();
|
|
|
|
|
var col = grid.cellIndex($(e.target).closest('td'));
|
|
|
|
|
|
|
|
|
|
var nowRowLength = grid._data.length;
|
|
|
|
|
var nowColLength = grid.columns.length;
|
|
|
|
|
var nowColCount = "";
|
|
|
|
|
|
|
|
|
|
//심도의 From To가 있으면 columns의 갯수가 변함
|
|
|
|
|
if ( fromToRow > 0) {
|
|
|
|
|
nowColCount = nowColLength + fromToRow;
|
|
|
|
|
nowColCount = Number(nowColCount); // number로 형변환
|
|
|
|
|
} else {
|
|
|
|
|
nowColCount = nowColLength;
|
|
|
|
|
nowColCount = Number(nowColCount); // number로 형변환
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 20200605 숫자입력 탭 set기능 추가
|
|
|
|
|
var dataItem = grid.dataItem($(e.target).closest('tr'));
|
|
|
|
|
|
|
|
|
|
// 20201005 ROW 추가시 field 값 에러 수정
|
|
|
|
|
//var field = grid.columns[col].field;
|
|
|
|
|
if (dataItem === undefined){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var field = $(e.target)[0].name;
|
|
|
|
|
var value = $(e.target).val();
|
|
|
|
|
dataItem.set(field, value);
|
|
|
|
|
|
|
|
|
|
if (row >= 0 && row < currentNumberOfItems && col >= 0 && col < nowColCount) {
|
|
|
|
|
var nextCellRow;
|
|
|
|
|
var nextCellCol;
|
|
|
|
|
|
|
|
|
|
if(!e.shiftKey){
|
|
|
|
|
nextCellCol = (col + 1) === nowColCount ? 0 : col + 1;
|
|
|
|
|
} else {
|
|
|
|
|
nextCellCol = (col - 1) === -1 ? nowColCount - 1: col - 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!e.shiftKey){
|
|
|
|
|
nextCellRow = nextCellCol === 0 ? row + 1 : row;
|
|
|
|
|
} else {
|
|
|
|
|
nextCellRow = nextCellCol === nowColCount - 1 ? row - 1 : row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(nextCellRow >= currentNumberOfItems || nextCellRow < 0){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 변경이 완료되면 셀을 닫고 그리드가 다시 바인딩될때까지 기다림
|
|
|
|
|
if(!grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")").is('.noneditable')){
|
|
|
|
|
// setTimeout(function() {
|
|
|
|
|
// grid.editCell(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")"));
|
|
|
|
|
// grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")").select();
|
|
|
|
|
// });
|
|
|
|
|
grid.editCell(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")"));
|
|
|
|
|
grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")").select();
|
|
|
|
|
} else {
|
|
|
|
|
while(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")").is('.noneditable')){
|
|
|
|
|
!e.shiftKey ? nextCellCol++ : nextCellCol--;
|
|
|
|
|
|
|
|
|
|
if(nextCellCol === nowColCount){
|
|
|
|
|
nextCellCol = 0;
|
|
|
|
|
|
|
|
|
|
nextCellRow++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(nextCellCol === -1){
|
|
|
|
|
nextCellCol = nowColCount - 1;
|
|
|
|
|
|
|
|
|
|
nextCellRow--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(nextCellRow >= currentNumberOfItems || nextCellRow < 0){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
grid.editCell(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//그리드 엔터 이동
|
|
|
|
|
function fn_enterKendo(e, grid, fromToRow) {
|
|
|
|
|
|
|
|
|
|
e.preventDefault();
|
|
|
|
|
var currentNumberOfItems = grid.dataSource.view().length;
|
|
|
|
|
var row = $(e.target).closest('tr').index();
|
|
|
|
|
var col = grid.cellIndex($(e.target).closest('td'));
|
|
|
|
|
|
|
|
|
|
var nowRowLength = grid._data.length;
|
|
|
|
|
var nowColLength = grid.columns.length;
|
|
|
|
|
var nowColCount = "";
|
|
|
|
|
|
|
|
|
|
//심도의 From To가 있으면 columns의 갯수가 변함
|
|
|
|
|
if ( fromToRow > 0) {
|
|
|
|
|
nowColCount = nowColLength + fromToRow;
|
|
|
|
|
nowColCount = Number(nowColCount); // number로 형변환
|
|
|
|
|
} else {
|
|
|
|
|
nowColCount = nowColLength;
|
|
|
|
|
nowColCount = Number(nowColCount); // number로 형변환
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 20200605 숫자입력 엔터키 set기능 추가
|
|
|
|
|
var dataItem = grid.dataItem($(e.target).closest('tr'));
|
|
|
|
|
|
|
|
|
|
// 20201005 ROW 추가시 field 값 에러 수정
|
|
|
|
|
//var field = grid.columns[col].field;
|
|
|
|
|
var field = $(e.target)[0].name;
|
|
|
|
|
var value = $(e.target).val();
|
|
|
|
|
if (dataItem === undefined){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
dataItem.set(field, value);
|
|
|
|
|
|
|
|
|
|
// 20200615 숫자입력 엔터키 set기능 추가
|
|
|
|
|
if (row == 0 || nowRowLength == currentNumberOfItems) {
|
|
|
|
|
setTimeout(function() {
|
|
|
|
|
grid.editCell(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")"));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (row >= 0 && row < currentNumberOfItems && col >= 0 && col < nowColCount) {
|
|
|
|
|
var nextCellRow;
|
|
|
|
|
var nextCellCol;
|
|
|
|
|
|
|
|
|
|
if(!e.shiftKey){
|
|
|
|
|
nextCellCol = col;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!e.shiftKey){
|
|
|
|
|
nextCellRow = row + 1;
|
|
|
|
|
} else {
|
|
|
|
|
nextCellRow = nextCellCol === nowColCount - 1 ? row - 1 : row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(nextCellRow >= currentNumberOfItems || nextCellRow < 0){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 변경이 완료되면 셀을 닫고 그리드가 다시 바인딩될때까지 기다림
|
|
|
|
|
if(!grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")").is('.noneditable')){
|
|
|
|
|
setTimeout(function() {
|
|
|
|
|
grid.editCell(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")"));
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
while(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")").is('.noneditable')){
|
|
|
|
|
!e.shiftKey ? nextCellCol++ : nextCellCol--;
|
|
|
|
|
|
|
|
|
|
if(nextCellCol === nowColCount){
|
|
|
|
|
nextCellCol = 0;
|
|
|
|
|
|
|
|
|
|
nextCellRow++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(nextCellCol === -1){
|
|
|
|
|
nextCellCol = nowColCount - 1;
|
|
|
|
|
|
|
|
|
|
nextCellRow--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(nextCellRow >= currentNumberOfItems || nextCellRow < 0){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
grid.editCell(grid.tbody.find("tr:eq(" + nextCellRow + ") td:eq(" + nextCellCol + ")"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|