Demo: http://www.highcharts.com/demo

API Reference: http://api.highcharts.com/highcharts

저작자 표시 비영리 변경 금지
신고

'JavaScript > HighCharts / D3' 카테고리의 다른 글

[D3] 시각화 프레임워크 D3js  (0) 2014.06.23
[HightCharts] HightCharts Demo and API Documents  (0) 2014.06.23
posted by 뚱2

링크: http://blog.naver.com/goolungsoi?Redirect=Log&logNo=10112463395

저작자 표시 비영리 변경 금지
신고

'JavaScript > jQuery' 카테고리의 다른 글

[jQuery] jQuery plugin jmp3  (0) 2014.06.25
[jQuery] jQuery form validation  (0) 2014.06.05
[jQuery] jquery-validation document  (0) 2014.05.07
[jQuery] jQuery-File-Upload  (0) 2014.05.06
[jQuery] jQuery Form validator  (0) 2013.11.18
[jQuery] jQuery.serializeObject 만들기  (0) 2013.10.15
posted by 뚱2

링크: http://jqueryvalidation.org/documentation/

링크: http://jqueryvalidation.org/validate

저작자 표시 비영리 변경 금지
신고

'JavaScript > jQuery' 카테고리의 다른 글

[jQuery] jQuery plugin jmp3  (0) 2014.06.25
[jQuery] jQuery form validation  (0) 2014.06.05
[jQuery] jquery-validation document  (0) 2014.05.07
[jQuery] jQuery-File-Upload  (0) 2014.05.06
[jQuery] jQuery Form validator  (0) 2013.11.18
[jQuery] jQuery.serializeObject 만들기  (0) 2013.10.15
posted by 뚱2

링크: https://github.com/blueimp/jQuery-File-Upload

문서: https://github.com/blueimp/jQuery-File-Upload/wiki

저작자 표시 비영리 변경 금지
신고

'JavaScript > jQuery' 카테고리의 다른 글

[jQuery] jQuery form validation  (0) 2014.06.05
[jQuery] jquery-validation document  (0) 2014.05.07
[jQuery] jQuery-File-Upload  (0) 2014.05.06
[jQuery] jQuery Form validator  (0) 2013.11.18
[jQuery] jQuery.serializeObject 만들기  (0) 2013.10.15
[jQuery] DataTables (table plug-in)  (0) 2013.01.02
posted by 뚱2
링크 : http://formvalidator.net/index.html



저작자 표시 비영리 변경 금지
신고
posted by 뚱2

    $.fn.serializeObject = function() {
        var o = {};
        var a = this.serializeArray();

        $.each(a, function() {
            if ( o[this.name] ) {
                if ( !o[this.name].push ) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };

저작자 표시 비영리 변경 금지
신고
posted by 뚱2

링크 : http://www.datatables.net/ 

링크 : http://www.datatables.net/release-datatables/examples/basic_init/zero_config.html 

저작자 표시 비영리 변경 금지
신고
posted by 뚱2

링크 : http://asyncweb.blogspot.kr/2012/04/jquery-attr-selected-property-ie6-bug.html

링크 : http://csharperimage.jeremylikness.com/2009/05/jquery-ie6-and-could-not-set-selected.html 


저작자 표시 비영리 변경 금지
신고
posted by 뚱2

jQuery 홈페이지에서 현재 2012-12-06일 기준으로 1.6 버전까지 다운로드 할 수 있습니다.


이전버전이 필요한 분들에게 요긴할 것 같습니다.


링크 : http://www.oldapps.com/jquery.php 


저작자 표시 비영리 변경 금지
신고
posted by 뚱2

링크 : http://sizzlejs.com/ 


시간 나는대로 분석해 봐야겠다.

저작자 표시 비영리 변경 금지
신고
posted by 뚱2

링크 : http://codefactory.kr/2011/12/05/jquery-sourcecode-analysis-javascript-study-1/ 

링크 : http://codefactory.kr/2011/12/05/jquery-sourcecode-analysis-javascript-study-2/ 

링크 : http://codefactory.kr/2011/12/06/jquery-sourcecode-analysis-javascript-study-3/

링크 : http://codefactory.kr/2011/12/06/jquery-sourcecode-analysis-javascript-study-jquery-extend/ 

저작자 표시 비영리 변경 금지
신고
posted by 뚱2

결국 arguments의 length 속성을 이용한다.

val: function( value ) {

var hooks, ret, isFunction,

elem = this[0];


if ( !arguments.length ) {

if ( elem ) {

hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];


if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {

return ret;

}


ret = elem.value;


return typeof ret === "string" ?

// handle most common string cases

ret.replace(rreturn, "") :

// handle cases where value is null/undef or number

ret == null ? "" : ret;

}


return;

}


isFunction = jQuery.isFunction( value );


return this.each(function( i ) {

var self = jQuery(this), val;


if ( this.nodeType !== 1 ) {

return;

}


if ( isFunction ) {

val = value.call( this, i, self.val() );

} else {

val = value;

}


// Treat null/undefined as ""; convert numbers to string

if ( val == null ) {

val = "";

} else if ( typeof val === "number" ) {

val += "";

} else if ( jQuery.isArray( val ) ) {

val = jQuery.map(val, function ( value ) {

return value == null ? "" : value + "";

});

}


hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];


// If set returns undefined, fall back to normal setting

if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {

this.value = val;

}

});

}


저작자 표시 비영리 변경 금지
신고
posted by 뚱2

링크 : http://docs.jquery.com/Plugins/Authoring 

저작자 표시 비영리 변경 금지
신고
posted by 뚱2

<script type="text/javascript">

// 기존코드

if ( slt_SF_CLS.disabled == true ) {

}


// 위와 같은 코드를 아무생각 없이 jQuery를 이용해서 아래와 같이 변경했더니 안됐다.

// 이걸 어떻게 찾아 ㅡㅡ;

if ( $(slt_SF_CLS).attr("disabled") == true ) {

}


// 암튼 출력 해보면

$(slt_SF_CLS).attr("disabled", false);

alert($(slt_SF_CLS).attr("disabled"));    // undefined

$(slt_SF_CLS).attr("disabled", true);

alert($(slt_SF_CLS).attr("disabled"));    // disabled


// readonly attribute도 마찬가지 이다.

$(slt_SF_CLS).attr("readonly", false);

alert($(slt_SF_CLS).attr("readonly"));    // udefined

$(slt_SF_CLS).attr("readonly", true);

alert($(slt_SF_CLS).attr("readonly"));    // readonly

</script>


// HTML

<select id="slt_SF_CLS" name="slt_SF_CLS">

</select>


저작자 표시 비영리 변경 금지
신고
posted by 뚱2

링크 : http://malsup.com/jquery/block/ 


전 ajax 통신중 대용량 비동기 통신을 할때만 걸어놨습니다.


// 기본 셋팅

$.ajaxSetup({

    type        : 'POST',

    async       : false,

    cache       : false,

    contentType : 'application/json; charset=utf-8',

    dataType    : 'json',

    error       : function(xhr,e) {

        $.unblockUI();

        if (xhr.status == 0) {

            alert('You are offline!!\n Please Check Your Network.');

        }

        else if (xhr.status == 404) {

            alert('Requested URL not found.');

        }

        else if (xhr.status == 500) {

            alert('Internel Server Error.\n');

        }

        else if (e == 'parsererror') {

            alert('Error.\nParsing JSON Request failed.');

        }

        else if (e == 'timeout') {

            alert('Request Time out.');

        }

        else {

            alert('Unknow Error.\n'+xhr.responseText);

        }

    },

    beforeSend : function(xhr, setting) {

        if ( setting && setting.async == true ) {

            $.blockUI();

        }

    },

    complete   : function(xhr, e) {

        $.unblockUI();

    }

});//$.ajaxSetup({


저작자 표시 비영리 변경 금지
신고

'JavaScript > blockUI' 카테고리의 다른 글

[jQuery] 클릭중복 방지 blockUI plugIn  (0) 2012.07.27
posted by 뚱2

// 예)

var ADC = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

$.each(ADC, function(i, rs) {

if ( rs == 5 ) {

return true; // for 문의 continue;와 같다.

}

else if ( rs == 8 ) {

return false; // for 문의 break;와 같다.

}


// ... 작업들

});


저작자 표시 비영리 변경 금지
신고
posted by 뚱2

tistory syntaxhighlighter 설정

일반 2012.07.26 12:51

참고 : 다른 분것 참조를 했는데 링크를 읽어버렸습니다. ㅡㅡ;


위에 링크를 참조해서 span 태그의 whitepace 문제 수정


<script type="text/javascript">

<!--

;jQuery.noConflict();  // 다른 라이브러리와 충돌을 방지한다.

;(function($) { $(document).ready(function() {

//////////////////////////////////////////////////////////////////////////////////////

    $("blockquote[class^=brush]").each( function() {  //blokquote를 사용한 태그

        var $this = $(this);


// 복사 붙여넣기 했을때 탭처리

        $this.find("span[class*=Apple-tab-span]").replaceWith(function() {

            return $(this).text();

        });


// 편집창에서 직접 수정했을때 탭 처리

        $this.find("p[style*=margin-left]").each(function() {

            var $elem = $(this);

            var style = $elem.attr("style");

            var result = /\s*?margin-left:\s(\w+?)em;\s*?/gi.exec(style);

            if ( result != null ) {

                result = result[1];

            }

            var spaceCount = parseInt(result) * 2;

            var spaceString = "";

            for (var i = 0; i < spaceCount; i++) {

                spaceString += "&nbsp;";

            }

            $elem.removeAttr("style");

            $elem.html(spaceString + $elem.html());

        });


        var temp = $this.html(); //  내용 복사

        temp = temp.replace(/\n/gi, "");

        temp = temp.replace(/<p><\/p>/gi, "");

        temp = temp.replace(/<p><br\s*\/?><\/p>/gi, "\n");    // 줄바꿈

        temp = temp.replace(/<P>(.*?)<\/P>/gi, "$1\n");       // 한줄끝

        temp = temp.replace(/<br\s*\/?>/gi, "\n");            // 줄바꿈


        temp = '<script type="syntaxhighlighter" class="' + $this.attr('class') + '"><![CDATA[' + temp + ']]><\/script>'

        $this.replaceWith(temp);

    });

  

    $("pre[class^=brush]").each( function() {  //pre를 사용한 태그

var $this = $(this);

        var temp = $this.html(); //  내용 복사

        temp = temp.replace(/</g, "&lt;");

        $this.html = temp;

    });     


    /*  SyntaxHighlighter 사용부분  */

    SyntaxHighlighter.defaults['toolbar'] = false; // 툴바 안 보기

    SyntaxHighlighter.all();

//////////////////////////////////////////////////////////////////////////////////////

});})(jQuery);

//-->

</script>


저작자 표시 비영리 변경 금지
신고
posted by 뚱2
자바의 import와 비슷하게 패키지 명을 입력해서 인클루드 하게 만들었습니다.

/**

* url은 문자열 배열이나 문자열이 올수 있다.

* 예) "SEED.df.DF_01.DF_HEADER_SEL"

*     ["SEED.df.DF_01.DF_HEADER_SEL", "SEED.df.DF_01.DF_HEADER"]

*/

SEED.importScript = function(url) {

var urls = [];

if ( url == undefined || url == null || url == "" ) {

return;

}

if ( $.type(url) == "string" ) {

urls.push(url);

}

else if ( $.type(url) == "array" ) {

urls = url;

}

else {

return;

}

$.each(urls, function(index, el) {

var newUrl = el.replace(/(^SEED\.)/gi, ""); // SEED가 있다면 제거한다. 

newUrl = newUrl.replace(/\./g, "/") + ".js";

var fullUrl = SEED.contextPath.get() + "/resources/js/" + newUrl;

$script = $("<script type=\"text/javascript\" charset=\"utf-8\" src=\"" + fullUrl + "\"></script>");

$script.bind("readystatechange", function() {

var $this = $(this);

if ((!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {

// FIXME : 나중에 메모리가 세는지 꼭 검사해야 한다.

// Handle memory leak in IE

this.onload = this.onreadystatechange = null;

$this.remove();

}

});

$script.appendTo("body");

});

};


저작자 표시 비영리 변경 금지
신고
posted by 뚱2

사실 ajax를 이용하는게 아니라 예전부터 많이 사용하던 iframe을 이용하여 화면 깜빡임을 없애는 방식이다.


/**

 * form을 ajax로 전송한다. (파일 포함)

 */

$.fn.ajaxForm = function(handler) {

    var $this = $(this);

    if ( $this[0] && $this[0].tagName.toUpperCase() == "FORM" ) {

        //랜덤한 수를 출력

        var ranNumber = Math.floor(Math.random() * 10000) + 1;

        var strId = "";

        strId += "SEED";

        strId += "_";    

        strId += (new Date()).getTime();

        strId += "_" + ranNumber;


        $this.attr("target", strId);    

        $("<iframe id=\"" + strId + "\" name=\"" + strId + "\" />")

            .hide()

            .appendTo($this.parents("body"))

            .load(function() {

                var that = this;


                if ( $.type(handler) == "function" ) {

                    var result = $.parseJSON(window.frames[strId].document.body.innerHTML);

                    if ( result == undefined || result == null || result == "" ) {

                        result = {

                            success : false,

                            message : "결과가 존재하지 않습니다."

                        };

                    }

                    handler(result);

                }

            });

    }//if ( $this[0] && $this[0].tagName.toUpperCase() == "FORM" ) {


    return $this;

};


사용방법

(function($, exports) {$(document).ready(function() {

////////////////////////////////////////////////////////////////////////////////////

$("#myform").ajaxForm(function(result) {

    if ( result && result.success == true ) {

        alert(result.message);

    }

});

////////////////////////////////////////////////////////////////////////////////////

});})(jQuery, window);



참고 : http://hanjiq.egloos.com/2373084 

저작자 표시 비영리 변경 금지
신고
posted by 뚱2

다운로드 : http://bassistance.de/jquery-plugins/jquery-plugin-validation/


링크 : http://mytory.co.kr/archives/195 

저작자 표시 비영리 변경 금지
신고
posted by 뚱2

제이쿼리 압축 파일을 Eclipse에 포함 시키면 매번 오류가 난다고 표시된다.

그렇지만 실제 해보면 잘 되는데 이거 엄청 신경쓰인다.

그렇다고 그 부분을 고치기도 애매하다.

이럴때 검사 제외 패턴을 사용한다.


프로젝트 -> Properties -> JavaScript -> Include Path -> Source -> Excluded -> Edit -> Exclusion Patterns -> Add


'**/jquery*.js' 등록





참고 : http://imwill.com/eclipse-java-ee-jquery-validation-error-workaround/#.T9l_mrXqRoI



저작자 표시 비영리 변경 금지
신고
posted by 뚱2

var MyApp = MyApp || {};

MyApp.local = (function($) {

////////////////////////////////////////////////////////////////////////////////////////////////////

// start initialize

var  global            = this

    ,selectBaseUrl     = ""

    ,selectDivisionUrl = ""

    ,insertDivisionUrl = ""

    ,doDivsnSearch     = function() {

        var srch_site_nm = $("#srch_site_nm").val() || "";

         

        if ( srch_site_nm != "" ) {

            $("#divsnTree").dynatree("option","initAjax", {

                url         : selectDivisionUrl,

                dataType    : 'json',

                data        : {

                    mnu_id  : "ROOT",

                    site_id : srch_site_nm,

                    mode    : "all"

                }

            });

            $("#divsnTree").dynatree("getTree").reload();

        }

    }

    ;

// end initialize 

 

;$(document).ready(function() {

    // 베이스 트리 생성

    $("#baseTree").dynatree({

        title          : "",

        minExpandLevel : 1,

        initAjax       : {

            url        : selectBaseUrl,

            dataType   :'json',

            data       : {

            }

        },

        autoFocus      : true,

        onActivate     : function(node) {

        },

        onDeactivate   : function(node) {

        },

        onLazyRead: function(node) {

        },

        dnd            : {

            onDragStart: function(node) {

                /** This function MUST be defined to enable dragging for the tree.

                 *  Return false to cancel dragging of node.

                 */

                logMsg("tree.onDragStart(%o)", node);

                if ( node.data.isFolder ) {

                    return true;

                }

                return true;

            },

            onDragStop : function(node) {

                logMsg("tree.onDragStop(%o)", node);

            }

        }//dnd: {

    });//$("#baseTree").dynatree({

 

    // 부분별 과정 트리 생성

    $("#divsnTree").dynatree({

        title          : "",

        minExpandLevel : 1,

        autoFocus      : true, 

        initAjax       : {

            url        : selectDivisionUrl,

            dataType   :'json',

            data       : {

                mnu_id : "ROOT",

                site_id: $("#srch_site_nm").val(),

                mode   : "all"

            }

        },

        onPostInit     : function(isReloading, isError) {

            var initNode = this.getNodeByKey('TEMP');

            if (initNode) {

                var tempMsg = 'tempMsg';

                initNode.setTitle(tempMsg);

            }

            else {

                // 데이터가 있다면 펼쳐준다.

                $("#btn_divsnTreeExpandAll").click();

            }

            logMsg("onPostInit(%o, %o)", isReloading, isError);

            this.reactivate();

        },

        onActivate     : function(node) {

            $("#site_mnunm").val(node.data.title);

            $("#delete_divsn_key").val(node.data.key);

        },

        onDeactivate   : function(node) {

        },

        onLazyRead     : function(node){

            node.appendAjax({

                url      : selectDivisionUrl,

                dataType : "json",

                data     : {

                    mnu_id : node.data.key,

                    site_id: $("#srch_site_nm").val(),

                    mode   : "all"

                },

                cache    : false

            });

        },

        dnd           : {

            autoExpandMS    : 1000,

            preventVoidMoves: true, // Prevent dropping nodes 'before self', etc.

            onDragStart: function(node) {

                /** This function MUST be defined to enable dragging for the tree.

                 *  Return false to cancel dragging of node.

                 */

                logMsg("tree.onDragStart(%o)", node);

                if ( node.data.isFolder ) {

                    return true;

                }

                return true;

            },

            onDragStop : function(node) {

                logMsg("tree.onDragStop(%o)", node);

            },

            onDragEnter     : function(node, sourceNode) {

                /** sourceNode may be null for non-dynatree droppables.

                 *  Return false to disallow dropping on node. In this case

                 *  onDragOver and onDragLeave are not called.

                 *  Return 'over', 'before, or 'after' to force a hitMode.

                 *  Any other return value will calc the hitMode from the cursor position.

                 */

                logMsg("tree.onDragEnter(%o, %o)", node, sourceNode);

                if ( node.data.isFolder ) {

                    return true;                    

                }

                return true;

            },

            onDragOver      : function(node, sourceNode, hitMode) {

              /** Return false to disallow dropping this node.

               *

               */

//               if(node.data.isFolder){

//                 var dd = $.ui.ddmanager.current;

//                 dd.cancel();

//                 alert("folder");

//               }

                logMsg("tree.onDragOver(%o, %o, %o)", node, sourceNode, hitMode);

            },

            onDrop          : function(node, sourceNode, hitMode, ui, draggable) {

                /**This function MUST be defined to enable dropping of items on the tree.

                 * sourceNode may be null, if it is a non-Dynatree droppable.

                 */

                logMsg("tree.onDrop(%o, %o)", node, sourceNode);

                var  copynode    = null

                    ,isSelf      = false

                    ;

                if (sourceNode) {

                    isSelf = (node.tree==sourceNode.tree);

                    // 키 중복 확인

                    try {

                        if ( isSelf == false ) {

                            node.tree.getRoot().visit(function(node){

                                if ( node.data.key == sourceNode.data.key ) {

                                    throw {message : "항목이 중복됩니다."};

                                }

                            });                         

                        }

                    }

                    catch(e) {

                        alert(e.message);

                        return;

                    }

                    finally  {}

                     

                    var temp_node = node.tree.getNodeByKey("TEMP");                    

                    var copy_node = node;

                    var myParent  = null;

                    var isTemp    = false;

                     

                    // 처음 생성시일때만 체크 : 처음생성시에는 TEMP 노드 밑에 들어가 있어야 한다.

                    if ( temp_node != null ) {

                        if ( hitMode == "over") {

                            if ( node.data.key == "TEMP" ) {

                                isTemp = true;

                            }

                        }

                             

                        while ( (myParent = copy_node.getParent()) != null ) {

                            if ( myParent.data.key == "TEMP" ) {

                                isTemp = true;

                            }

                            copy_node = myParent;

                        }

                         

                        if (temp_node != null && isTemp == false) {

                            var tempMsg = 'tempMsg';

                            alert(tempMsg);

                            return;

                        }                           

                    }

 

                    // 다른 트리에서 Drag N Drop을 할때  : 복사하고 넣어준다.

                    if ( isSelf == false ) {

                        copynode = sourceNode.toDict(true, function(dict) {

                            dict.title = "[*] " + dict.title;                           

                            // 2012.02.09 GDJ : 위 로직에서 키 중복체크를 하기 때문에 그데로 사용해도 문제 없다.

                            //delete dict.key; // Remove key, so a new one will be created

                        });                     

                         

                        if (hitMode == "over") {

                            // Append as child node

                            node.addChild(copynode);

                            // expand the drop target

                            node.expand(true);

                             

                            // 폴더로 변경해주고 다시 그려준다.

                            node.data.isFolder = true;

                            node.tree.redraw();

                        }

                        else if (hitMode == "before") {

                            // Add before this, i.e. as child of current parent

                            node.parent.addChild(copynode, node);

                        }

                        else if (hitMode == "after") {

                            // Add after this, i.e. as child of current parent

                            node.parent.addChild(copynode, node.getNextSibling());

                        }

                    }

                    // 자기 트리에서는 이동시킨다.

                    else {

                        (function() {

                            // 부모가 수정되었다고 알려준다.

                            var parent = sourceNode.getParent();

                            if ( parent != null && parent.data.key != "ROOT" ) {

                                var title  = parent.data.title;

                                if ( title != null ) {

                                    title = "[*] " + title.replace(/^(\[\*\]\s)?(.+)$/mi, "$2");

                                    parent.data.title = title;                                  

                                }

                            }

                        })();

 

                        sourceNode.move(node, hitMode);

                        if ( hitMode == "over") {

                            node.expand(true);

                            (function() {

                                // 부모가 수정되었다고 알려준다.

                                var parent = node;

                                if ( parent != null && parent.data.key != "ROOT" ) {

                                    var title  = parent.data.title;

                                    if ( title != null ) {

                                        title = "[*] " + title.replace(/^(\[\*\]\s)?(.+)$/mi, "$2");

                                        parent.data.title = title;                                  

                                    }

                                }

                            })();

                        }

                        node.tree.getRoot().visit(function(callback_node){

                            var myNode = callback_node;

                            myNode.data.isFolder = (myNode.getChildren()==null ? false:true);

                        });

                     

                        node.tree.redraw();                         

                        return;

                    }

                } 

                else {

                    copynode = {title: "This node was dropped here (" + ui.helper + ")."};

                    alert(copynode.title);

                }

            },//onDrop          : function(node, sourceNode, hitMode, ui, draggable) {

            onDragLeave     : function(node, sourceNode) {

                /** Always called if onDragEnter was called.

                 */

                 logMsg("tree.onDragLeave(%o, %o)", node, sourceNode);

            }

        }//dnd: {

    });//$("#divsnTree").dynatree({

 

    // 부분별 셀렉트 박스

    $("#srch_site_nm").change(function() {

        doDivsnSearch();

    });

     

    // 검색

    $("#btn_search").click(function() {

        doDivsnSearch();

    }); 

     

    // 베이스 트리 모두 펼치기

    $("#btn_baseTreeExpandAll").click(function() {

        $("#baseTree").dynatree("getRoot").visit(function(node){

            node.expand(true);

        });

    });   

     

    // 베이스 트리 모두 접기

    $("#btn_baseTreeCollapseAll").click(function() {

        $("#baseTree").dynatree("getRoot").visit(function(node){

            node.expand(false);

        });

    });

  

    // 부분별 과정 트리 모두 펼치기

    $("#btn_divsnTreeExpandAll").click(function() {

        $("#divsnTree").dynatree("getRoot").visit(function(node){

            node.expand(true);

        });

    });

     

    // 부분별 과정 트리 모두 접기

    $("#btn_divsnTreeCollapseAll").click(function() {

        $("#divsnTree").dynatree("getRoot").visit(function(node){

            node.expand(false);

        });

    });

     

    // 부분별 과정 저장

    $("#btn_divsnSave").click(function() {

        var  $tree = $("#divsnTree")

            ,data  = []

            ;

        var srch_site_nm = $("#srch_site_nm").val();

        if ( srch_site_nm == "" ) {

            alert("부분을 선택하세요.");

            return;

        }

         

        $tree.dynatree("getRoot").visit(function(node) {

            var  item     = {}

                ,myParent = node.getParent()

                ,title    = node.data.title  || ""

                ,key      = node.data.key    || "" 

                ;

             

            item.subjclass   = key;

            // 신규 저장일때의 [*] 을 제거한다.

            item.classnm = title.replace(/^(\[\*\] )?(.+)$/gmi, "$2");

            if ( myParent == null ) {

                item.upsubjclass  = "";

                item.orders = 1;

            }

            else {

                if ( myParent.data.key == "TEMP" || myParent.data.key == "_1") {

                    item.upsubjclass   = "ROOT";                    

                }

                else {

                    item.upsubjclass   = myParent.data.key;

                }

 

                var order   = 1;

                var preNode = node;

                while ( (preNode=preNode.getPrevSibling()) != null ) {

                    order++;

                }

                item.orders  = order;

            }

            item.site_id = srch_site_nm;

             

            if ( item.subjclass.toUpperCase() != "TEMP" ) {

                data.push(item);                

            }

        });

         

        // Root 데이터를 맨앞에 넣어준다.

        var rootData = [];

        rootData.push({

             site_id     : srch_site_nm

            ,classnm     : "ROOT"

            ,subjclass   : "ROOT"

            ,upsubjclass : ""

            ,orders      : 1

        });

        data = rootData.concat(data);

         

        // 통신

        $.ajax({

            url          : insertDivisionUrl,

            type         : 'POST',

            dataType     : 'json',

            contentType  : 'application/json; charset=utf-8', 

            data         : JSON.stringify({

                site_id  : srch_site_nm,

                data     : data

            }),

            success  : function(result) {

                alert(result.message);

                if ( result.success == true ) {

                    doDivsnSearch();

                }

            },

            error    : function(result) {

            }

        });//$.ajax({

    });

     

    // 부분별 과정 삭제

    $("#btn_divsnDelete").click(function() {

        var  k     = $("#delete_divsn_key").val()

            ,$tree = $("#divsnTree").dynatree("getTree")

            ,node  = $tree.getNodeByKey(k)

            ;

        // TEMP노드는 삭제하지 않는다.

        if ( k == "TEMP" ) {

            return;

        }

         

        if ( node != null ) {

            var parent = node.getParent();

            if ( parent != null && parent.data.key != "ROOT" ) {

                var title  = parent.data.title;

                if ( title != null ) {

                    title = "[*] " + title.replace(/^(\[\*\]\s)?(.+)$/mi, "$2");

                    parent.data.title = title;                  

                }

            }

 

            node.remove();

            $("#site_mnunm").val("");

            $tree.redraw();

        }

        else {

            alert("null");

        }

    });

     

    // test

    (function() {

    })();

});//$(document).ready(function() {

     

// 외부에 오픈할 인터페이스

return {

};

////////////////////////////////////////////////////////////////////////////////////////////////////

})(jQuery);

 


저작자 표시
신고

'JavaScript > dynaTree' 카테고리의 다른 글

[dynatree] TREE TO TREE DRAG AND DROP 예제  (0) 2012.02.21
[dynatree] dynatree node option  (0) 2012.02.09
[dynatree] Option 옵션  (0) 2012.02.09
[dynatree] dynatree (jQuery 기반의 tree-plugin)  (0) 2012.02.08
posted by 뚱2
jQuery를 이용해서 만들었다.
기본적으로 jQuery를 임포트 해야 한다.

var myStringify = function(data) {
    var  msg           = ""
        ,myData        = data || {}
        ,mySection     = ","
        ,isData        = false
        ,dataType      = jQuery.type(myData)
        ;
          
    // 배열인지 검사
    if ( dataType == "array" ) {
        msg += "[";
    }
    else if ( dataType == "object" ) {
        msg += "{";
    }
      
    jQuery.each(myData, function(k, v) {
        isData = true;
        var propertyType = jQuery.type(v);
         
        if ( propertyType == "array" || propertyType == "object" ) {
            if ( dataType == "array" ) {
                msg += arguments.callee(v);
            }
            else {
            	msg += "\"" + k + "\":" + arguments.callee(v);                    	
            }
            msg += mySection;
        }
        else {
            if ( dataType == "array" ) {
                msg += v;
            }
            else {
                msg += "\"" + k + "\":";
                if ( propertyType == "string" ) {
                    msg += "\"" + v + "\"";
                }
                else {
                	msg += "" + v;
                }
            }
            msg +=  mySection;
        }
    });//jQuery.each(myData, function(k, v) {
  
    if ( isData == true ) {
        msg = msg.substring(0, msg.length-1);
    }
  
    if ( dataType == "array" ) {
        msg += "]";
    }
    else if ( dataType == "object" ) {
        msg += "}";
    }
  
    return msg;
};//var myStringify = function(data) {


저작자 표시
신고
posted by 뚱2
욜심히 만들었더니 jQuery.type() 이란 메소드가 있다. ㅡㅡ; 찾아볼걸...
// getType(true) "boolean"를 리턴
// getType(1) "number"를 리턴
// getType(1.1) "number"를 리턴
// getType("") "string"를 리턴
// getType(function(){}) "function"를 리턴
// getType(new Date()) "date"를 리턴
// getType(/^$/) "regexp"를 리턴

function getType(obj) {
    var  msg   = "undefined" 
        ,myObj = obj
        ;
    if ( myObj != null ) {
        var strType = Object.prototype.toString.call(myObj);
        var match   = strType.match(/^\[object (.+)\]$/i);
    
        msg = match && match[1].toLowerCase();            	
    }
    
    return msg;
}


저작자 표시
신고
posted by 뚱2
레퍼런스 : http://wwwendt.de/tech/dynatree/doc/samples.html
다운로드 : http://code.google.com/p/dynatree
문서       : http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html



저작자 표시
신고

'JavaScript > dynaTree' 카테고리의 다른 글

[dynatree] TREE TO TREE DRAG AND DROP 예제  (0) 2012.02.21
[dynatree] dynatree node option  (0) 2012.02.09
[dynatree] Option 옵션  (0) 2012.02.09
[dynatree] dynatree (jQuery 기반의 tree-plugin)  (0) 2012.02.08
posted by 뚱2
링크 : http://jqapi.com/
링크 : http://visualjquery.com (트레픽 제한이 있는지 가끔 무지하게 느리다.)

저작자 표시
신고
posted by 뚱2
링크 : http://code.google.com/p/jquery-numberformatter/


저작자 표시
신고
posted by 뚱2

위와 같은 폼이 있습니다.
조건을 선택하고 검색 버튼을 클릭하면은 해당 결과가 아래의 그리드에 나타납니다.
조건 TEXT에 입력하고 Enter키를 누르면 검색 버튼을 클릭하는것도 같은 효과를 나타내주고 싶을때 입니다.


onSubmit="return false;" 꼭 작성해 주셔야 클릭시에 폼이 자동으로 전송되는건 막아줍니다.
* onSubmit="return false;" 하는 이유 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=155693

jQuery(document).ready(function($) {
    $("#listForm input[name=srch_text]").keydown(function(e){
        if(e.keyCode == 13){
            e.cancelBubble = true;
            $("#btn_search").click();
            return false;
        }
    });
});
keyDown이벤트를 잡고 enter키를 확인합니다. 이벤트가 전파되지 않게 e.cancelBubble 를 true 넣어줍니다.



저작자 표시
신고
posted by 뚱2

/**
 * jqGrid 
 * desc   : 선택된 Rows를 Dataset Array를 만들어준다.
 *          isAll에 true를 넣어주면 전체 데이터를 가져온다.
 * return : array
 * 
 * comment : 데이터가 선택되지 않으면 빈 배열을 리턴한다.
 */
jQuery.fn.getArrayFromGridRow = function(isAll) {
	var _isAll = false;
	if ( arguments.length > 0 && isAll == true ) {
		_isAll = true;
	}

    var arrayData = [];	
	try {
        var $grid = this;
        
        // jqGird검사
        if ( $grid.jqGrid == null || $grid.jqGrid == undefined ) {
            return arrayData;
        }
        
        var selRows = ( _isAll ? $grid.getDataIDs() : $grid.getGridParam("selarrrow") );
        $.each(selRows, function(index, value) {
            arrayData[index] = $grid.getRowData(value);
        });
	}
	catch(e) {
		alert(e.message);
		return arrayData;
	}
	
    return arrayData;
};

/**
 * jqGrid 
 * desc   : 현재 선택된 Rows를 Dataset Array를 만들어준다.
 * return : array
 */
jQuery.fn.getArrayFromMultiSelectedRow = function() {
	return this.getArrayFromGridRow(false);
};

/**
 * jqGrid 
 * desc   : 전체 row를 Dataset Array를 만들어준다.
 * return : array
 */
jQuery.fn.getArrayFromAllRow = function() {
	return this.getArrayFromGridRow(true);
};

저작자 표시
신고

'JavaScript > jqGrid' 카테고리의 다른 글

[jqGrid] Composite Model Data 사용하기  (0) 2013.12.18
[jqGrid] Homepage and Manual  (0) 2013.11.12
[jqGrid] Grid DataSet 만들기 MultiSelect 포함  (0) 2011.12.19
posted by 뚱2

var gridData = $(ID.GRID_MAIN).getArrayFromMultiSelectedRow();

if ( gridData.length == 0 ) {

    // 항목을 선택하세요.

    alert("<g:message code='MESSAGE.com.msg.select' />");

    return;

}

 

$.ajax({

    url         : './_deleteDiagnosisTargetList.do'

   ,type        : 'POST'

   ,cache       : false

   ,data        : JSON.stringify({data:gridData})

   ,contentType : 'application/json; charset=utf-8'

   ,dataType    : 'json'

   ,success     : function(result) {

       if ( result.success == true ) {

           var str = "";

           $.each(result.list, function(index, rec) {

                str += rec + "\n";

           });

           alert(str);

           $(ID.GRID_MAIN).trigger("reloadGrid");

       }

   }

   ,error: function(result) {

   }

});


저작자 표시
신고
posted by 뚱2