

'Web' 카테고리의 다른 글
Nexacro Dataset CRUD 정리 (0) | 2020.06.18 |
---|---|
Nexacro Components 제어 Function (0) | 2020.06.18 |
Nexacro Div 정렬 Function (0) | 2020.06.18 |
Nexacro Dataset CRUD 정리 (0) | 2020.06.18 |
---|---|
Nexacro Components 제어 Function (0) | 2020.06.18 |
Nexacro Div 정렬 Function (0) | 2020.06.18 |
this.fnDatasetEsbCall = function (dsData, dsEsbCall)
{
dsEsbCall.copyData(dsData);
dsEsbCall.clearData();
for(var i = 0; i<dsData.rowcount;++i)
{
if(true) {
if(dsData.getColumn(i, "BF_ROWTYPE") == "BF")//"BF" 기존 DB에 존재하던 값을 의미
{
if(dsData.getRowType(i) == 4)//값이 변경된 경우. U(업데이트) 처리
{
dsEsbCall.addRow();
dsEsbCall.copyRow(dsEsbCall.rowcount-1, dsData, i);
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "U");
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "BF_ROWTYPE", dsData.getColumn(i, "BF_ROWTYPE"));
}
else//기존 값
{
dsEsbCall.addRow();
dsEsbCall.copyRow(dsEsbCall.rowcount-1, dsData, i);
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "N");
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "BF_ROWTYPE", dsData.getColumn(i, "BF_ROWTYPE"));
}
}
else//신규 입력값
{
dsEsbCall.addRow();
dsEsbCall.copyRow(dsEsbCall.rowcount-1, dsData, i);
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "I");
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "BF_ROWTYPE", dsData.getColumn(i, "BF_ROWTYPE"));
}
}
}
var delArr = dsData.getDeletedRowset();
//삭제된 행 확인 후, EsbCall에 추가.
for(var i = 0; i<dsData.getDeletedRowset().length;++i)
{
var delRow = delArr[i];
if(delRow.includes("BF"))
{
dsEsbCall.addRow();
for(var j = 0; j<dsData.colcount;++j)
{
dsEsbCall.setColumn(dsEsbCall.rowcount-1, j, delRow[j]);
}
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "D");
}
}
if(this.dsObjList==dsData) {
var colArray = new Array("SPOP_1_VAL","SPOP_2_VAL","SPOP_3_VAL","SPOP_4_VAL","SPOP_5_VAL");
for(var i = 0; i<dsEsbCall.rowcount; ++i) {
var tFront = "BUILD_SN == '"+dsEsbCall.getColumn(i, "BUILD_SN")+"' && PURPS_SN == '"+dsEsbCall.getColumn(i, "PURPS_SN")+"'";
//dsClauseList dataset의 복수의 값을 dsObjList에 넣기위한 조치
var txt = new Array(tFront + " && SPOP_CD == 'T191'", "BGITDTARIFCAT1"
, tFront + " && SPOP_CD =='T117'", "VGITDTARIFCAT3,GITDTARIFCAT5,GITDTARIFCAT4,GITDTARIFCAT6"
, tFront + " && (SPOP_CD == 'T750' || SPOP_CD =='T722')", "GITDTARIF7,GITDTARIF6,BGITDTARIFCAT6"
, tFront + " && (SPOP_CD == 'T855' || SPOP_CD =='T856')", "GITDTARIFCAT3"
, tFront + " && SPOP_CD == 'T559'", "ELAGDDCTAMT"
, tFront + " && SPOP_CD == 'T490'", "GITDTARIFCAT16,GITDTARIFCAT17,GITDTARIFCAT18,GITDTARIFCAT19,GITDTARIFCAT15"
, tFront + " && SPOP_CD == 'T406'", "RGITDTARIFCAT1"
, tFront + " && SPOP_CD == 'T594'", "GITDTARIFCAT10"
, tFront + " && SPOP_CD == 'T655'", "GITDTARIFCAT26,GITDTARIFCAT27,GITDTARIFCAT28,GITDTARIFCAT29"
);
for(var j = 0; j<txt.length;j+=2) {
var t = this.dsClauseList.findRowExpr(txt[j]);
if(t != -1) {
var insertArr = txt[j+1].split(",");
for(k = 0;k<insertArr.length;++k) {
dsEsbCall.setColumn(i, insertArr[k], this.dsClauseList.getColumn(t2, colArray[k]));
}
}
}
}
}
}
Nexacro에서는 getRowType(n)을 통해 특정 row의 CRUD 상태를 알 수 있다.
그런데 어쩌다보니 이런걸 만들어야 할 필요가 생겼다. 기존 dataset에 deletedRowset을 추가하는 것도 방법이었지만 원본 dataset을 보존해야 할 필요가 있었기에 간략하게 만들었다. 실제 업무와 관련된 부분을 다 지웠더니 좀 너무 이상하게 보일 수 있다. BF가 없어도 되는데 왜 있어야 하느니..
특정 dataset에서 타 dataset의 column에 값을 넣어야 하는데 column명이 서로 다르고 임의로 맞춰넣어야 하기에
Array로 조건을 묶어서 수정하기 쉽게 진행을 해보았다. 변경이 필요할 경우 한줄씩 바꾸면 되기 때문에 효율적이라 생각했다.
Autowired와 Resource 차이 (0) | 2024.12.18 |
---|---|
Nexacro Components 제어 Function (0) | 2020.06.18 |
Nexacro Div 정렬 Function (0) | 2020.06.18 |
this.fnCompsEnable = function(oForm, bEnable, sExcept)
{
var oComps = oForm.components;
//if(bEnable) return;
for (var i = 0; i < oComps.length; i++) {
if (oComps[i].readonly || sExcept.indexOf(oComps[i].name) > -1) {
continue;
}
if (oComps[i] instanceof nexacro.Edit ||
oComps[i] instanceof nexacro.MaskEdit ||
oComps[i] instanceof nexacro.Combo ||
oComps[i] instanceof nexacro.Calendar)
{
oComps[i].set_readonly(!bEnable);
if (bEnable) continue;
oComps[i].set_border("1px solid #9c9c9c");
oComps[i].set_autoselect(true);
}
if (oComps[i] instanceof nexacro.CheckBox ||
oComps[i] instanceof nexacro.Radio)
{
oComps[i].set_readonly(!bEnable);
}
if (oComps[i] instanceof nexacro.Button)
{
oComps[i].set_enable(bEnable);
}
if (oComps[i] instanceof nexacro.Div)
{
this.fnCompsEnable(oComps[i].form, bEnable, sExcept);
}
}
}
var sExcept = "btnNext_01, btnDetail";
this.fnCompsEnable(this, false, sExcept); sExcept에 적힌 component name과 동일한 경우에는 bEnable의 반대값을 적용해주는 형태이다.
무수히 많은 component enable을 여러 줄을 쓰지 않고 sExcept에 string 형태로 전달만 하면된다는 것이 장점이다.
Autowired와 Resource 차이 (0) | 2024.12.18 |
---|---|
Nexacro Dataset CRUD 정리 (0) | 2020.06.18 |
Nexacro Div 정렬 Function (0) | 2020.06.18 |
this.fnDivAlign = function()
{
var oComp = this.components;
var compLength = this.components.length;
var div_list = [];
var div_idx = 0;
var interval = 20;
var top = 0;
for (var i=0; i<compLength; i++) {
if (oComp[i] instanceof nexacro.Div) {
if (div_idx == 0) top = oComp[i].top;
div_idx++;
if (oComp[i].visible) {
div_list.push(oComp[i].id);
if (div_list.length != 1) {
top = nexacro.toNumber(top) +
nexacro.toNumber(oComp[div_list[div_list.length-2]].height) +
nexacro.toNumber(interval);
}
oComp[div_list[div_list.length-1]].set_top(top);
}
}
}
this.resetScroll();
}
Nexacro로 동적 페이지를 만들어야 할 때, div를 보통 많이 이용한다.
전체 components를 가지고 반복문을 돌려서 div가 확인될 때마다 해당 div를 이전 div에서 interval 간격만큼 이동시키는 function이다. 처음 div 동적 페이지를 만들때는 [this.div09.set_top("div03:20px");]와 같이 개별 설정을 해주었는데 공통 function을 만드는 능력은 확실히 중요한 것 같다..
근데 Nexacro가 너무 자기 맘대로라 문제가 너무 많은데 이거 언제까지 써야하나 싶다.
회사에서 무언갈 했는데 이걸 어떻게 기록으로 남겨야할진 모르겠고...하여 다음과 같이 블로그에 작성을 한다.
너무 많이 쓸 순 없으니 그건 그거대로 또 문제라서 걱정이다..
Autowired와 Resource 차이 (0) | 2024.12.18 |
---|---|
Nexacro Dataset CRUD 정리 (0) | 2020.06.18 |
Nexacro Components 제어 Function (0) | 2020.06.18 |