*/
// 현재 페이지 번호를 알수있는 변수
var currentPage;
// 현재 그리드 총 데이터 수
var gridTotalCount;
// 23.12.13 최연희 추가 - _saveCurrentGrid 옵션용 전역변수
var checkData = []; // 선택한 row data
var scrollPosition; // 스크롤 위치
var currentGridPage; // 현재 그리드 페이지
//그리드 생성시 실행
function EcoGrid_jqx(id, colModel, data, option) {
var jqx_datafields = [];
var keycol = "";
//name
for(var i in colModel){
var row = {};
//formatter에 따라 type 변경
if(colModel[i].formatter == "currency" || colModel[i].sorttype=='int'){
row.name = colModel[i].name;
row.type = 'number';
}else if(colModel[i].formatter == "date"){
row.name = colModel[i].name;
row.type = 'date';
}else{
row.name = colModel[i].name;
row.type = 'string';
}
jqx_datafields.push(row);
}
var columns = [];
//2018.01.30 추가 - 순번 항목. rownumbers : true 이면 그리드 첫번째 column에 순번 부여
//20.04.20 대출반납 화면 그리드일때는 색상부여때문에 class 추가.
if(option.rownumbers == true)
{
columns.push({ text: 'No', datafield: 'No', width: 40, columntype: 'number', align:'center',sortable: false, cellsrenderer: function(row,column,value)
{
return "
');
}
}
}
// 24.07.29 최연희 - 그리드 커스텀 css 추가
if(obj._customCss) {
const customCssList = obj._customCss;
for(const obj of customCssList) {
const targetElement = document.querySelector(obj.target);
if(targetElement) {
const cssList = obj.css;
for(const key in cssList) {
targetElement.style[key] = cssList[key];
}
}
}
}
// 선정 건수 초기화
obj._jqxOnSelectCntView(this);
// 페이지네이션 추가
// $(pagination_selector)
// .empty()
// .append(pagination_html);
};
//실제 페이지부분을 그려줌
EcoGrid_jqx.prototype._getCustomSinglePagination = function (page_class, func_name, parameter, page_num){
var param = "'" + parameter.join("','") + "'"; //join() : ()에것으로 배열을 문장으로 연결해줌
page_class = '\'' + page_class + '\'';
return "" + page_num + "";
};
//현재 페이지외에 페이지부분
EcoGrid_jqx.prototype._getSinglePagination = function (page_num){
var param = [this._gridid, page_num];
return this._getCustomSinglePagination('page', 'goSelectedPage', param, page_num);
};
//현재 페이지
EcoGrid_jqx.prototype._getSinglePaginationBold = function (page_num){
//현재 페이지 번호 저장
currentPage = page_num;
var param = [this._gridid, page_num];
return this._getCustomSinglePagination('page cur_page', 'goSelectedPage', param, page_num);
};
// 페이지네이션 처음 (<<)
EcoGrid_jqx.prototype._getFirstPagination = function (){
var param = [this._gridid];
/*var icon = '';*/
var icon = '<<';
return this._getCustomSinglePagination('goto first', 'goFirstPage', param, icon);
};
//2018.02.19 강예슬 추가
//페이지네이션 다음 (>)
EcoGrid_jqx.prototype._getNextGroupPagination = function (page_num,total_page_num){
var param = [this._gridid, page_num];
if(page_num < total_page_num){
var param = [this._gridid, Number(page_num)+1];
}
var icon = '>';
return this._getCustomSinglePagination('goto next', 'goSelectedPage', param, icon);
}
/*EcoGrid_jqx.prototype._getNextGroupPagination = function (page_num){
var param = [this._gridid, page_num];
//var icon = '';
var icon = '>';
return this._getCustomSinglePagination('goto next', 'goSelectedPage', param, icon);
};*/
//2018.02.19 강예슬 추가
//페이지네이션 이전 (<)
EcoGrid_jqx.prototype._getPrevGroupPagination = function (page_num){
var param = [this._gridid, page_num];
if(page_num > 1) {
var param = [this._gridid, Number(page_num)-1];
}
//var icon = '';
var icon = '<';
return this._getCustomSinglePagination('goto prev', 'goSelectedPage', param, icon);
};
/*
EcoGrid_jqx.prototype._getPrevGroupPagination = function (page_num){
var param = [this._gridid, page_num];
//var icon = '';
var icon = '<';
return this._getCustomSinglePagination('goto prev', 'goSelectedPage', param, icon);
};*/
//페이지네이션 끝 (>>)
EcoGrid_jqx.prototype._getLastPagination = function (total_data_num){
var param = [this._gridid,total_data_num,this._rowNum];
/*var icon = '';*/
var icon = '>>';
return this._getCustomSinglePagination('goto last', 'goLastPage', param, icon);
};
//맨 처음 페이지로 이동
EcoGrid_jqx.prototype._goFirstPage = function (){
this._goSelectedPage(this._gridid, 1);
};
//맨 끝 페이지로 이동
EcoGrid_jqx.prototype._goLastPage = function (table_selector,total_data_num,rowNum){
var total_records = total_data_num;
var total_page = Math.ceil(total_records /rowNum);
this._goSelectedPage(table_selector, total_page);
};
// 페이지 클릭시 실행되는 함수 (클릭된 페이지로 이동시켜준다)
EcoGrid_jqx.prototype._goSelectedPage = function(table_selector, page_num) {
if (this._pagingType == "grid_type") { // 그리드 페이징일때
this._page = page_num; // 페이지번호 이동을 위해 클릭된 페이지를 현재 페이지로 넣고 그리드 리로드
$(table_selector).jqxGrid('gotopage', (page_num-1)); // 첫 페이지가 0에서부터 시작되는듯
this._TotalRowInPagination(this);
this._initPaging(this);
} else {
if (this._global_call != undefined) { // 페이징 분리일때
this._global_call(page_num, this._sort_field, this._sort_option);
}
}
};
// 데이터의 총 갯수 그리기
EcoGrid_jqx.prototype._TotalRowInPagination = function (obj){
if(obj._totalCount==undefined){
obj._totalCount = 0;
}
$(obj._pagination_id).closest('.metis_pagination').find('.search_filter')
.empty()
.append("Total : " + obj._totalCount + " 건");
gridTotalCount = obj._totalCount;
};
//선택한 row 데이터 가져오기
EcoGrid_jqx.prototype.gridRowData = function (){
var rowindexes = $(this._gridid).jqxGrid('getselectedrowindexes');
if(this._selectionmode == "singlerow"){
var rowData = $(this._gridid).jqxGrid('getrowdata', rowindexes);
return rowData;
}else{
var data = [];
for(var i in rowindexes){
data.push($(this._gridid).jqxGrid('getrowdata', rowindexes[i]));
}
return data;
}
}
//선택된 row를 this._multiselect에 상관없이 array로 반환한다. 없으면 length = 0
//{label:"REC_KEY", name:"SPECIES_KEY", hidden:true, key:true } 처럼 key:true 가 있어야 정상작동 없으면 false로 들어갈 수 있음
EcoGrid_jqx.prototype.gridRowDataArray = function (){
var rowdata_Array=[];
// var rowindexes,rowindex;
//
// // 20.03.06 이현주 수정
// if(this._selectionmode == "singlerow"){
// rowindex = $(this._gridid).jqxGrid('getselectedrowindex');
// if(rowindex != undefined && rowindex != null){
// $(this._gridid).jqxGrid('getrowdata', rowindex);
//
// }
//
// } else {
var rowindexes = $(this._gridid).jqxGrid('getselectedrowindexes');
if(rowindexes.length==0){
}else{
for(var i in rowindexes){
rowdata_Array.push($(this._gridid).jqxGrid('getrowdata', rowindexes[i]));
}
}
// }
return rowdata_Array;
};
//전체데이터 가져오기
EcoGrid_jqx.prototype.gridAllRowDataArray = function() {
var rows = $(this._gridid).jqxGrid('getrows');
return rows;
}
//전체데이터의 갯수 가져오기
EcoGrid_jqx.prototype.getRowCount = function() {
var row = $(this._gridid).jqxGrid('getrows');
if(row != null && row != undefined)
return row.length;
return 0;
};
//전체데이터 가져오기
EcoGrid_jqx.prototype.getdisplayrows = function() {
var rows = $(this._gridid).jqxGrid('getdisplayrows');
return rows;
}
//그리드 데이터 초기화
EcoGrid_jqx.prototype.clearGridData = function (){
$(this._gridid).jqxGrid('clear');
var data = this._gridTypePrint("","");
return data;
};
//특정 row 선택 - id - 사용자가 따로 지정 불가능 (key 지정 불가능)
EcoGrid_jqx.prototype.setSelection = function (keyId){
var id = this.keyIdGetRowid(keyId);
$(this._gridid ).jqxGrid('selectrow',id);
var rowindexes = $(this._gridid).jqxGrid('getselectedrowindexes');
if(this.selectDataTop == true){
var sortinformation = $(this._gridid).jqxGrid('getsortinformation');
$(this._gridid).jqxGrid('removesort');
$(this._gridid).jqxGrid('sortby', 'orderByNum','desc');
// 전체 데이터 초기화
var rowsAll = $(this._gridid).jqxGrid('getrows');
for(let index in rowsAll){
let one = rowsAll[index];
if(one.orderByNum != ''){
$(this._gridid ).jqxGrid('setcellvalue', one.uid, "orderByNum", '');
}
}
// 선정된 값들을 재정렬한다.
for(var i in rowindexes){
let one = $(this._gridid).jqxGrid('getrowdata', rowindexes[i]);
// console.dir(one);
if(rowindexes[i] == id){
$(this._gridid ).jqxGrid('setcellvaluebyid', rowindexes[i], "orderByNum", rowindexes.length + Number(1));
}else{
$(this._gridid ).jqxGrid('setcellvaluebyid', rowindexes[i], "orderByNum", Number(i) + Number(1));
}
}
}
};
//그리드 전체선택
//멀티 선택의 경우만 진행된다.
EcoGrid_jqx.prototype.setSelectAll = function (){
if(this._selectionmode == "checkbox"){
$(this._gridid ).jqxGrid('selectallrows');
}
};
//그리드의 첫번째 데이터를 서정한다.
EcoGrid_jqx.prototype.setFirstDataSelect = function (){
$(this._gridid ).jqxGrid('selectrow',0);
};
//그리드 선택정보 초기화
EcoGrid_jqx.prototype.resetSelection = function () {
$(this._gridid ).jqxGrid('clearselection');
};
//그리드 변경사항 적용
EcoGrid_jqx.prototype.reloadGrid = function() {
this._page = 1; // 헤더클릭 정렬시 페이지를 1페이지로 이동을 위해
$(this._gridid).jqxGrid('gotopage', (this._page-1));
this._gridComplete(this);
$(this._gridid ).jqxGrid('clearselection');
}
//id에 해당하는 row의 색상 변경
EcoGrid_jqx.prototype.setRowData = function (id,color) {
//TODO List : 색상주는 옵션 다시찾아보기.
// var gridId = strReplaceAll(this._gridid,"#","");
// var row_index = this.keyIdGetRowIndex(id);
// var rowid = "#row"+row_index+gridId;
//
// var temp = $(rowid+" div")
// $(rowid+" div").css({ 'background-color': "#"+color});
var gridId = strReplaceAll(this._gridid,"#","");
var row_index = this.keyIdGetRowIndex(id);
var rowid = "#row"+row_index+gridId;
console.dir(rowid);
for(var i in this._jqx_columns){
var colum = this._jqx_columns[i];
colum.cellclassname = id;
if(i > 0) {
document.getElementsByClassName(id).style.backgroundColor = '#'+color;
}
}
this._gridTypePrint(this._data,this);
};
//id에 해당하는 row의 색상 변경
EcoGrid_jqx.prototype.setRowDataTest = function (id,color) {
var gridId = strReplaceAll(this._gridid,"#","");
var row_index = this.keyIdGetRowIndex(id);
var rowid = "#row"+row_index+gridId;
console.log(rowid);
console.log(id);
document.getElementById(rowid).style.backgroundColor = '#'+color;
this._gridTypePrint(this._data,this);
};
//현재 페이지 번호를 보여줌
EcoGrid_jqx.prototype.getCurrentPage = function () {
return currentPage;
};
//총 레코드수를 검색
EcoGrid_jqx.prototype.getGridTotalCount = function () {
return gridTotalCount;
};
// 그리드 전체 데이터 가져오기
EcoGrid_jqx.prototype.getGridAllData = function () {
var rows = $(this._gridid).jqxGrid('getrows');
return rows;
};
// 해당 데이터 삭제
EcoGrid_jqx.prototype.delRowData = function (keyId) {
var id = this.keyIdGetRowid(keyId);
$(this._gridid).jqxGrid('deleterow', id);
var data = this.gridAllRowDataArray();
return data;
};
//선택한 그리드의 id 가져오기 (하나의 데이터)
EcoGrid_jqx.prototype.getRowid= function() {
var rowindexes = $(this._gridid).jqxGrid('getselectedrowindex');
var rowData = $(this._gridid).jqxGrid('getrowdata',rowindexes);
var keyId = rowData[this._keycol];
return keyId;
};
//선택한 그리드의 id 가져오기 (여러개의 데이터)
EcoGrid_jqx.prototype.getRowidMult= function() {
var rowindexes = $(this._gridid).jqxGrid('getselectedrowindexes');
var keyId = [];
for(var i in rowindexes){
var rowData = $(this._gridid).jqxGrid('getrowdata',rowindexes[i]);
keyId.push(rowData[this._keycol]);
}
return keyId;
};
//row id로 데이터 가져오기
EcoGrid_jqx.prototype.getRowidData = function (keyId){
var id = this.keyIdGetRowid(keyId);
var rowData = $(this._gridid).jqxGrid('getrowdata', id);
return rowData;
}
// 엑셀 출력시 어떤 형태로 출력할지 결정한다.
// 20.04.20 jiyeong 개인정보출력 로그 내역 insert을 위해 callback 추가
// 24.10.14 최연희 - isDisplayTitle : title, subtitle 등 부가 정보 없이 그리드 헤더와 데이터만 출력하기 위해 추가
EcoGrid_jqx.prototype.exportExcel = function(pFileName,title,subTitle,searchData,printType,callback,isDisplayTitle) {
var obj = this;
var msExcel = this.msExcel;
var exportHcell = this.exportHcell;
var directPrint = this.directPrint;
// 20.04.27 jiyeong 이용자 개인정보 출력 제한
var currentUserInfo = JSON.parse(localStorage.getItem('current_user_info'));
if(callback != undefined && currentUserInfo.PRIVACY_PRINT_LEVEL == '1'){
onlyMessage('이용자의 개인정보가 포함된 목록(엑셀, 목록, 리포트 등)의 출력이 제한된 계정이므로 출력이 불가능합니다.');
return;
}
// subtitle이 없는경우는 출력 일자를 기본 세팅한다.
if(subTitle == undefined || null == subTitle || "" == subTitle){
subTitle = "(" + formatDateYYYYMMDD(new Date(),"/") + ")";
}
if(isDisplayTitle == undefined) isDisplayTitle = true; // 기본값 true
if(this._selectionmode == 'singlerow'){
msExcel(obj,pFileName,title,subTitle,searchData,"all",null,"",isDisplayTitle);
}else{
//21.01.12 출력사유 팝업창 띄울지 안띄울지 callback함수 이름으로 구분
openMessagePopup({
title : "출력",
msg : "출력할 형태를 선택해 주세요",
btn1_text : "전체자료",
btn1_function: function(e) {
if(callback != undefined && callback.name == 'insertPrivacyPrintLog'){
print_reason_popup(function(reason){msExcel(obj,pFileName,title,subTitle,searchData,"all",callback,reason,isDisplayTitle)})
}else{
// var excel_export_type = getViewOptionData_value('엑셀출력방식',localStorage.getItem('current_user_manage_code'));
// if(undefined != excel_export_type && null != excel_export_type && 'LOCAL' == excel_export_type){
// // 엑셀 반출을 화면에서 직접 해결하는 방식 추가
// getGridDataExport(obj._gridid,obj._jqx_columns);
// }
// else{
// // 기존 방식
// msExcel(obj,pFileName,title,subTitle,searchData,"all",callback)
// }
// 기존 방식
msExcel(obj,pFileName,title,subTitle,searchData,"all",callback,"",isDisplayTitle)
}
},
btn2_text : "선정자료",
btn2_function: function(e) {
if(callback != undefined && callback.name == 'insertPrivacyPrintLog'){
print_reason_popup(function(reason){msExcel(obj,pFileName,title,subTitle,searchData,"Select",callback,reason,isDisplayTitle)})
}else{
msExcel(obj,pFileName,title,subTitle,searchData,"Select",callback,"",isDisplayTitle)
}
},
// btn2_text : "일반출력",
// btn2_function: function(e) { directPrint(obj, title)},
// btn3_text : "한셀",
// btn3_function: function(e) { exportHcell(obj,title) }
});
}
return;
};
//일반 프린터로 직접 출력
EcoGrid_jqx.prototype.directPrint= function(obj, title) {
var datahtml = exportHtml(obj,title);
// 바로 출력하는 함수 호출
com_direct_print(datahtml);
}
function exportHtml(obj, title) {
var jqx_columns = obj._jqx_columns;
var colModel = [];
var viewCol = [];
for(var i in jqx_columns){
var col = {};
col.text = jqx_columns[i].text
col.datafield = jqx_columns[i].datafield
col.hidden = jqx_columns[i].hidden
colModel.push(col);
}
if (title == undefined) {
title = "";
};
//var arrHeader = colModel.split(',');
// var html="
";
var html= "
"+title+"
";
html= html + "
";
// var name = "제목테스트";
// html = html + ""+name+"";
for ( var y = 0; y < colModel.length; y++ ) {
var col = colModel[y];
if(colModel[y].hidden == true)
{
}else {
html = html + "
" + colModel[y].text + "
";
viewCol.push(colModel[y].datafield);
}
}
html = html + "";
// 전체 데이터 가져오기
var total_data = $(obj._gridid).jqxGrid('getrows');
//값 불러오기
for(var i=0;i< total_data.length;i++) {
html = html +"
";
data = total_data[i];
for(var j in viewCol){
var view_data = data[viewCol[j]];
if(view_data == "")
{
view_data = " ";
}
html=html + '
' + view_data+"
";
}
html = html+"
";
}
// //값 불러오기
// for(var i=0;i< mya.length;i++) {
// var datac= pGridObj.getRowData(mya[i]);
// html = html +"