

'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 |