* "ALL_" 대신에 "USER_"를 사용하고 OWNER 조건을 빼서 사용할 수도 있다.


--전체 계정 전체 테이블 조회

SELECT * FROM ALL_TABLES;


--사용자계정 전체 테이블 조회

SELECT * FROM ALL_TABLES WHERE OWNER = 'SUBINTO';

 

 --사용자계정 전체 테이블 커멘트 조회

 SELECT * FROM ALL_TAB_COMMENTS WHERE OWNER = 'SUBINTO';


--사용자계정 전체 컬럼 조회

 SELECT * FROM ALL_TAB_COLUMNS WHERE OWNER = 'SUBINTO';

 

 --사용자계정 전체 컬럼 커멘트 조회

 SELECT * FROM ALL_COL_COMMENTS WHERE OWNER = 'SUBINTO';


* 위 쿼리를 활용하여 쿼리 생성 쿼리를 만들수도 있다.(아래는 SELECT 쿼리를 생성하는 쿼리 참조)


--쿼리 생성 쿼리(SELECT)

SELECT DECODE(ROWNUM, 1, 'SELECT ' ||  CHR(13), ', ')

    || UPPER(COLUMN_NAME) || ' AS ' ||LOWER(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(REPLACE(INITCAP(LOWER(COLUMN_NAME)), '_',''), 2)    

    || DECODE(ROWNUM, (COUNT(1) OVER()), CHR(13) || '  FROM '|| TABLE_NAME ||';', '') AS "SELECT Query"

 FROM ALL_TAB_COLUMNS

WHERE OWNER = 'SUBINTO'

  AND TABLE_NAME = UPPER('TB_MENU');


반응형

* Tabulator Tree 세팅은 아래의 이전 글 참조


Tabulator Tree 데이터 세팅 및 노드 추가 처리 스크립트



1.Tabulator 생성시 columns에 아래 체크박스 컬럼 추가


            {

                title:"매핑여부",

                field:"mappingGubun",

                width:80,

                hozAlign:"center",

                download:false,

                vertAlign:"middle",

                editor:"tickCross",

                formatter:"tickCross",

                formatterParams: {

                    allowTruthy:true,

                    tickElement:"<input type='checkbox' checked>",

                    crossElement:"<input type='checkbox'>"

                },

                cellEdited:function(cell) { 

                    if (cell.getValue())

                        checkedTreeNode(menuMngSheet, cell, 1); //해당 체크 박스 및 하위 체크박스 체크

                    else

                        checkedTreeNode(menuMngSheet, cell, 0); //해당 체크 박스 및 하위 체크박스 체크해제

                },

                headerFilter:"tickCross",

                headerFilterEmptyCheck:function(value){

                    fnHeaderCheck(value); //체크박스 전체 체크

                    return true;

                }

            },


2. Tabulator Tree 체크박스 관련 함수 추가(3레벨 메뉴까지 있는 Tree를 기준으로 하였음. 상황에 맞게 수정)


//Tree 체크박스 체크시 하위 노드 체크기능

function checkedTreeNode(vSheet, cell, vCheckValue){

    var rows = vSheet.getRows();

    

    var row = cell.getRow();

    var sSeq = row.getData()["sSeq"];

    

    var isChecked = false;

    var isCheckedLvl = -1;

    var isPass = false;


    if(rows != null && rows.length > 0){

        //1레벨 확인

        for(var i = 0 ; i < rows.length ; i++){

            var lvl1Row = rows[i];

            var lvl1Children = rows[i].getTreeChildren();

            

            if(lvl1Row.getData()["sSeq"] == sSeq && !isPass){

                isChecked = true;

                isCheckedLvl = lvl1Row.getData()["menuLvl"];

                if(lvl1Row.getCell("mappingGubun")){

                    cellEditedCallback(lvl1Row.getCell("mappingGubun"), "U", vCheckValue);

                }

            }

            if(lvl1Children != undefined){

                //2레벨 확인

                for(var j = 0 ; j < lvl1Children.length ; j++){

                    var lvl2Row = lvl1Children[j];

                    var lvl2Children = lvl2Row.getTreeChildren();

                    

                    if((lvl2Row.getData()["sSeq"] == sSeq || (isChecked && isCheckedLvl != lvl2Row.getData()["menuLvl"])) && !isPass){

                        isChecked = true;

                        isCheckedLvl = isCheckedLvl == -1 ? lvl2Row.getData()["menuLvl"] : isCheckedLvl;

                        if(lvl2Row.getCell("mappingGubun")){

                            cellEditedCallback(lvl2Row.getCell("mappingGubun"), "U", vCheckValue);

                        }

                    }

                    if(lvl2Children != undefined){

                        //3레벨 확인

                        for(var k = 0 ; k < lvl2Children.length ; k++){

                            var lvl3Row = lvl2Children[k];

                            

                            if((lvl3Row.getData()["sSeq"] == sSeq || (isChecked && isCheckedLvl != lvl3Row.getData()["menuLvl"])) && !isPass){

                                isChecked = true;

                                isCheckedLvl = isCheckedLvl == -1 ? lvl3Row.getData()["menuLvl"] : isCheckedLvl;

                                if(lvl3Row.getCell("mappingGubun")){

                                    cellEditedCallback(lvl3Row.getCell("mappingGubun"), "U", vCheckValue);

                                }

                            }

                            if(isChecked && isCheckedLvl == lvl3Row.getData()["menuLvl"]) isPass = true;

                        }

                    }

                    if(isChecked && isCheckedLvl == lvl2Row.getData()["menuLvl"]) isPass = true;

                }

            }

            if(isChecked && isCheckedLvl == lvl1Row.getData()["menuLvl"]) isPass = true;

        }

    }

}


//Tree 전체 체크박스 체크시 하위 노드 체크기능

function checkedAllTreeNode(vSheet, vCheckValue){

    var treeData = vSheet.getData();

    

    if(treeData != null && treeData.length > 0){

        for(var i = 0 ; i < treeData.length ; i++){

            var menuLvl1Map = treeData[i];

            menuLvl1Map.mappingGubun = vCheckValue;

            menuLvl1Map.sStatus = "U";

            

            //1레벨 하위항목

            if(menuLvl1Map._children != undefined) {

                for(var j = 0 ; j < menuLvl1Map._children.length ; j++){

                    var menuLvl2Map = menuLvl1Map._children[j];

                    menuLvl2Map.mappingGubun = vCheckValue;

                    menuLvl2Map.sStatus = "U";

                    

                    //2레벨 하위항목

                    if(menuLvl2Map._children != undefined) {

                        for(var k = 0 ; k < menuLvl2Map._children.length ; k++){

                            var menuLvl3Map = menuLvl2Map._children[k];

                            menuLvl3Map.mappingGubun = vCheckValue;

                            menuLvl3Map.sStatus = "U";

                        }

                    }

                }

            }

        }    

    }

    vSheet.setData(treeData);

}



반응형

<style type="text/css">

// 미디어쿼리를 이용한 가로모드, 세로모드일때의 css 적용 방법

@media all and (orientation:portrait) {

// 세로모드일때의 css 적용

}

@media all and (orientation:landscape) {

// 가로모드일때의 css 적용

}

</style>


<script type="text/javascript">

$(document).ready(function() {

// matchMedia를 이용한 가로모드, 세로모드일때의 script 적용 방법

var media = window.matchMedia("(orientation: portrait)");

if (media.matches) {

// 세로모드일때의 script 적용

}

else{

// 가로모드일때의 script 적용

}

});

</script>


cf. 같은 내용으로 window.innerWidth와 window.innerHeight의 크기를 비교하여 가로모드인지 세로모드인지 판별할 수 있다.

반응형

+ Recent posts