[ Nexacro.Component -  div minimize ]

 


/*++
프로그램 설명     : 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;

    }

}

 

☞  

 

☞  

 
 
 
 

  

Posted by 농부지기
,