/*++ 프로그램 설명 : minimize Div들의 onresize를 위해 미리 정보를 저장 @ Name : gfn_InitMinimizeDiv @ Parameter : paDiv : Div Object의 Array, (예, [div1, div2, div3]) @ Parameter : pbResizeAll : Div 전체를 Anchor에 상관없이 resize 하려는 경우 true @ Return : none */
function gfn_InitMinimizeDiv(paDiv, pbResizeAll)
{
if (gfn_IsNull(pbResizeAll)) pbResizeAll = false;
_bResizeAll = pbResizeAll;
var dsObj = eval(_gfn_AddDsAnchor());
if (dsObj.rowcount == 0) {
for (var i = 0; i < paDiv.length; i++) {
var nRow = dsObj.addRow();
dsObj.setColumn(nRow, "id", paDiv[i].name);
dsObj.setColumn(nRow, "state", "maximize");
dsObj.setColumn(nRow, "org_top", paDiv[i].position.top);
dsObj.setColumn(nRow, "org_height", paDiv[i].position.height);
dsObj.setColumn(nRow, "cur_top", paDiv[i].position.top);
dsObj.setColumn(nRow, "cur_height", paDiv[i].position.height);
dsObj.setColumn(nRow, "anchor", paDiv[i].anchor);
}
}
}
/*++ 프로그램 설명 : Div 간의 minimize/maximize 기능 @ Name : gfn_MinimizeDiv @ Parameter : obj : Div에 포함된 Component (이벤트 발생 Object) @ Parameter : paDiv : Div Object의 Array, (예, [div1, div2, div3]) @ Return : none */
function gfn_MinimizeDiv(obj, paDiv)
{
var dsObj = eval(_gfn_AddDsAnchor());
var nMinHeight = 37; //minimize될때의 Div Height
var nHeightSpace = 0; //Div들간의 minimize/maximize 될때 생기는 높이값
if (gfn_IsNull(obj.state)) obj.state = "maximize";
if (obj.state == "maximize") {
obj.state = "minimize";
obj.class = "btn_WFDA_maximize";
} else {
obj.state = "maximize";
obj.class = "btn_WFDA_minimize";
}
if (dsObj.rowcount == 0) {
for (var i = 0; i < paDiv.length; i++) {
var nRow = dsObj.addRow();
dsObj.setColumn(nRow, "id", paDiv[i].name);
dsObj.setColumn(nRow, "state", "maximize");
dsObj.setColumn(nRow, "org_top", paDiv[i].position.top);
dsObj.setColumn(nRow, "org_height", paDiv[i].position.height);
dsObj.setColumn(nRow, "cur_top", paDiv[i].position.top);
dsObj.setColumn(nRow, "cur_height", paDiv[i].position.height);
dsObj.setColumn(nRow, "anchor", paDiv[i].anchor);
}
}
dsObj.keystring = "S:+org_top"; //정렬
dsObj.setColumn(dsObj.findRow("id", obj.parent.name), "state", obj.state);
if (obj.state == "minimize") { //Div접음
for (var nRow = 0; nRow < dsObj.rowcount; nRow++) {
var oDiv = eval(dsObj.getColumn(nRow, "id"));
if (obj.parent.name == oDiv.name) {
nHeightSpace = oDiv.position.height - nMinHeight;
oDiv.position.height = nMinHeight;
if (nRow < dsObj.rowcount && nHeightSpace > 0) {
for (var i = nRow + 1; i < dsObj.rowcount; i++) {
var oNextDiv = eval(dsObj.getColumn(i, "id"));
oNextDiv.position.top = oNextDiv.position.top - nHeightSpace;
if (dsObj.getColumn(i, "state") == "minimize") {
oNextDiv.position.height = nMinHeight;
} else {
nHeightSpace = 0;
}
}
}
}
}
} else { //Div펼침
for (var nRow = 0; nRow < dsObj.rowcount; nRow++) {
var oDiv = eval(dsObj.getColumn(nRow, "id"));
if (obj.parent.name == oDiv.name) {
nHeightSpace = dsObj.getColumn(nRow, "cur_height") - oDiv.position.height;
oDiv.position.height = dsObj.getColumn(nRow, "cur_height");
if (nRow < dsObj.rowcount && nHeightSpace > 0) {
for (var i = nRow + 1; i < dsObj.rowcount; i++) {
var oNextDiv = eval(dsObj.getColumn(i, "id"));
if (dsObj.getColumn(i, "state") == "minimize") {
oNextDiv.position.top = oNextDiv.position.top + nHeightSpace;
oNextDiv.position.height = nMinHeight;
} else {
var nOrgHeight = dsObj.getColumn(i, "cur_height");
var nCurHeight = oNextDiv.position.height;
oNextDiv.position.top = oNextDiv.position.top + nHeightSpace;
if (nOrgHeight == nCurHeight) {
oNextDiv.position.height = nOrgHeight;
} else {
oNextDiv.position.height = nCurHeight - nHeightSpace;
nHeightSpace = 0;
}
}
}
}
}
}
}
}
/*++ 프로그램 설명 : Div 간의 minimize/maximize 정보를 저장할 Dataset을 생성 (개발자 사용금지) @ Name : _gfn_AddDsAnchor @ Parameter : none @ Return : Dataset Name */
function _gfn_AddDsAnchor()
{
return _gfn_AddDataset("_dsAnchor", ["id", "state", "org_top", "org_height", "cur_top", "cur_height", "anchor"]
, ["string", "string", "int", "int", "int", "int", "string"]);
}
/*++ 프로그램 설명 : Dataset을 추가생성 (개발자 사용금지) @ Name : _gfn_AddDataset @ Parameter : psDatasetName : 생성할 Dataset명 @ Parameter : paColumnName : Dataset에 들어갈 Column명 Array @ Parameter : paType : Column의 Type Array @ Return : Dataset Name */
function _gfn_AddDataset(psDatasetName, paColumnName, paType)
{
//Dataset 존재여부 확인 및 생성
if (!isValidObject(psDatasetName)) {
var oDs = new Dataset;
oDs.name = psDatasetName;
this.addChild(psDatasetName, oDs);
if (!gfn_IsNull(paColumnName)) {
var dsObj = eval(psDatasetName);
for (var i = 0; i < paColumnName.length; i++) {
dsObj.addColumn(paColumnName[i], paType[i]);
}
}
}
return psDatasetName;
}
/*++ 프로그램 설명 : 값이 존재하는지 여부 체크 @ Name : gfn_IsNull @ Parameter : Value @ Return : true / false */
function gfn_IsNull(val)
{
var sVal = new String(val);
if (sVal == null || sVal == "null" || sVal.trim().length <= 0 || escape(sVal) == "undefined") {
return true;
} else {
return false;
}
} |