| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526 | <!doctype html><html><head>    <meta charset="utf-8">    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    <title>jsMind</title>    <link type="text/css" rel="stylesheet" href="../style/jsmind.css" />    <style type="text/css">        li{margin-top:2px; margin-bottom:2px;}        button{width:140px;}        select{width:140px;}        #layout{width:1230px;}        #jsmind_nav{width:210px;height:600px;border:solid 1px #ccc;overflow:auto;float:left;}        .file_input{width:100px;}        button.sub{width:100px;}        #jsmind_container{            float:left;            width:1000px;            height:600px;            border:solid 1px #ccc;            background:#f4f4f4;        }    </style></head><body><div id="layout">    <div id="jsmind_nav">        <div>1. Open</div>        <ol type='A'>            <li><button onclick="open_json();">open example</button></li>            <li><button onclick="open_ajax();">open remote</button></li>            <li><button onclick="prompt_info('see 6.Multi Format');">open local file</button></li>            <li><button onclick="prompt_info('see 6.Multi Format');">save local file</button></li>            <li><button onclick="screen_shot();">screenshot</button></li>        </ol>        </ol>        <div>2. Select & Toggle</div>        <ol type='A'>            <li><button onclick="select_node();">select a node</button></li>            <li><button onclick="prompt_info('please try click a node');">try click a node</button></li>            <li><button onclick="show_selected();">get the selected</button></li>        </ol>        <div>3. Edit</div>        <ol type='A'>            <li><button onclick="toggle_editable(this);">disable editable</button></li>            <li><button onclick="add_node();">add a node</button></li>            <li><button onclick="add_image_node();">add a image node</button></li>            <li><button onclick="modify_node();">modify node</button></li>            <li><button onclick="prompt_info('please try double click a node');">try double click</button></li>            <li><button onclick="move_node();">move a node</button></li>            <li><button onclick="move_to_first();">move to first</button></li>            <li><button onclick="move_to_last();">move to last</button></li>            <li><button onclick="remove_node();">remove node</button></li>        </ol>        <div>4. Style</div>        <ol type='A'>            <li><button onclick="change_text_font();">change font</button></li>            <li><button onclick="change_text_color();">change color</button></li>            <li><button onclick="change_background_color();">change bg-color</button></li>            <li><button onclick="change_background_image();">change background</button></li>        </ol>        <div>5. Theme</div>        <ol type='A'>        <li>        <select onchange="set_theme(this.value);">            <option value="">default</option>            <option value="primary">primary</option>            <option value="warning">warning</option>            <option value="danger">danger</option>            <option value="success">success</option>            <option value="info">info</option>            <option value="greensea" selected="selected">greensea</option>            <option value="nephrite">nephrite</option>            <option value="belizehole">belizehole</option>            <option value="wisteria">wisteria</option>            <option value="asphalt">asphalt</option>            <option value="orange">orange</option>            <option value="pumpkin">pumpkin</option>            <option value="pomegranate">pomegranate</option>            <option value="clouds">clouds</option>            <option value="asbestos">asbestos</option>        </select>        </li>        </ol>        <div>6. Adjusting</div>        <ol type='A'>            <li><button onclick="change_container();">resize container</button>            <button onclick="resize_jsmind();">adusting</button></li>            <li>expand/collapse</li>            <ol>                <li><button class="sub" onclick="expand();">expand node</button></li>                <li><button class="sub" onclick="collapse();">collapse node</button></li>                <li><button class="sub" onclick="toggle();">toggle node</button></li>                <li><button class="sub" onclick="expand_to_level2();">expand to level 2</button></li>                <li><button class="sub" onclick="expand_to_level3();">expand to level 3</button></li>                <li><button class="sub" onclick="expand_all();">expand all</button></li>                <li><button class="sub" onclick="collapse_all();">collapse all</button></li>            </ol>            <li>zoom</li>            <button id="zoom-in-button" style="width:50px" onclick="zoomIn();">                In            </button>            <button id="zoom-out-button" style="width:50px" onclick="zoomOut();">                Out            </button>        </ol>        <div>7. Multi Format</div>        <ol type='A'>            <li>node_tree(default)</li>            <ol>                <li><button class="sub" onclick="show_data();">show data</button></li>                <li><button class="sub" onclick="save_file();">save file</button></li>                <li><input id="file_input" class="file_input" type="file"/></li>                <li><button class="sub" onclick="open_file();">open file</button></li>            </ol>            <li>node_array</li>            <ol>                <li><button class="sub" onclick="get_nodearray_data();">show data</button></li>                <li><button class="sub" onclick="save_nodearray_file();">save file</button></li>                <li><input id="file_input_nodearray" class="file_input" type="file"/></li>                <li><button class="sub" onclick="open_nodearray();">open file</button></li>            </ol>            <li>freemind(.mm)</li>            <ol>                <li><button class="sub" onclick="get_freemind_data();">show data</button></li>                <li><button class="sub" onclick="save_freemind_file();">save file</button></li>                <li><input id="file_input_freemind" class="file_input" type="file"/></li>                <li><button class="sub" onclick="open_freemind();">open file</button></li>            </ol>        </ol>    </div>    <div id="jsmind_container"></div>    <div style="display:none">      <input class="file" type="file" id="image-chooser" accept="image/*"/>    </div></div><script type="text/javascript" src="../js/jsmind.js"></script><script type="text/javascript" src="../js/jsmind.draggable.js"></script><script type="text/javascript" src="../js/jsmind.screenshot.js"></script><script type="text/javascript">    var _jm = null;    function open_empty(){        var options = {            container:'jsmind_container',            theme:'greensea',            editable:true        }        _jm = jsMind.show(options);        // _jm = jsMind.show(options,mind);    }    function open_json(){        var mind = {            "meta":{                "name":"jsMind remote",                "author":"hizzgdev@163.com",                "version":"0.2"            },            "format":"node_tree",            "data":{"id":"root","topic":"jsMind","children":[                {"id":"easy","topic":"Easy","direction":"left","children":[                    {"id":"easy1","topic":"Easy to show"},                    {"id":"easy2","topic":"Easy to edit"},                    {"id":"easy3","topic":"Easy to store"},                    {"id":"easy4","topic":"Easy to embed"},                    {"id":"other3","background-image":"ant.png", "width": "100", "height": "100"}                ]},                {"id":"open","topic":"Open Source","direction":"right","children":[                    {"id":"open1","topic":"on GitHub", "background-color":"#eee", "foreground-color":"blue"},                    {"id":"open2","topic":"BSD License"}                ]},                {"id":"powerful","topic":"Powerful","direction":"right","children":[                    {"id":"powerful1","topic":"Base on Javascript"},                    {"id":"powerful2","topic":"Base on HTML5"},                    {"id":"powerful3","topic":"Depends on you"}                ]},                {"id":"other","topic":"test node","direction":"left","children":[                    {"id":"other1","topic":"I'm from local variable"},                    {"id":"other2","topic":"I can do everything"}                ]}            ]}        }        _jm.show(mind);    }    function open_ajax(){        var mind_url = 'data_example.json';        jsMind.util.ajax.get(mind_url,function(mind){            _jm.show(mind);        });    }    function screen_shot(){        _jm.screenshot.shootDownload();    }    function show_data(){        var mind_data = _jm.get_data();        var mind_string = jsMind.util.json.json2string(mind_data);        prompt_info(mind_string);    }    function save_file(){        var mind_data = _jm.get_data();        var mind_name = mind_data.meta.name;        var mind_str = jsMind.util.json.json2string(mind_data);        jsMind.util.file.save(mind_str,'text/jsmind',mind_name+'.jm');    }        function open_file(){        var file_input = document.getElementById('file_input');        var files = file_input.files;        if(files.length > 0){            var file_data = files[0];            jsMind.util.file.read(file_data,function(jsmind_data, jsmind_name){                var mind = jsMind.util.json.string2json(jsmind_data);                if(!!mind){                    _jm.show(mind);                }else{                    prompt_info('can not open this file as mindmap');                }            });        }else{            prompt_info('please choose a file first')        }    }    function select_node(){        var nodeid = 'other';        _jm.select_node(nodeid);    }    function show_selected(){        var selected_node = _jm.get_selected_node();        if(!!selected_node){            prompt_info(selected_node.topic);        }else{            prompt_info('nothing');        }    }    function get_selected_nodeid(){        var selected_node = _jm.get_selected_node();        if(!!selected_node){            return selected_node.id;        }else{            return null;        }    }    function add_node(){        var selected_node = _jm.get_selected_node(); // as parent of new node        if(!selected_node){prompt_info('please select a node first.');return;}        var nodeid = jsMind.util.uuid.newid();        var topic = '* Node_'+nodeid.substr(nodeid.length-6)+' *';        var node = _jm.add_node(selected_node, nodeid, topic);    }    var imageChooser = document.getElementById('image-chooser');    imageChooser.addEventListener('change', function (event) {        // Read file here.        var reader = new FileReader();        reader.onloadend = (function () {            var selected_node = _jm.get_selected_node();            var nodeid = jsMind.util.uuid.newid();            var topic = undefined;            var data = {                "background-image": reader.result,                "width": "100",                "height": "100"};            var node = _jm.add_node(selected_node, nodeid, topic, data);            //var node = _jm.add_image_node(selected_node, nodeid, reader.result, 100, 100);        //add_image_node:function(parent_node, nodeid, image, width, height, data, idx, direction, expanded){        });        var file = imageChooser.files[0];        if (file) {            reader.readAsDataURL(file);        };    }, false);    function add_image_node(){        var selected_node = _jm.get_selected_node(); // as parent of new node        if(!selected_node){            prompt_info('please select a node first.');            return;        }        imageChooser.focus();        imageChooser.click();    }    function modify_node(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        // modify the topic        _jm.update_node(selected_id, '--- modified ---');    }    function move_to_first(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.move_node(selected_id,'_first_');    }    function move_to_last(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.move_node(selected_id,'_last_');    }    function move_node(){        // move a node before another        _jm.move_node('other','open');    }    function remove_node(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.remove_node(selected_id);    }    function change_text_font(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.set_node_font_style(selected_id, 28);    }    function change_text_color(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.set_node_color(selected_id, null, '#000');    }    function change_background_color(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.set_node_color(selected_id, '#eee', null);    }    function change_background_image(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.set_node_background_image(selected_id, 'ant.png', 100, 100);    }    function set_theme(theme_name){        _jm.set_theme(theme_name);    }    var zoomInButton = document.getElementById("zoom-in-button");    var zoomOutButton = document.getElementById("zoom-out-button");    function zoomIn() {        if (_jm.view.zoomIn()) {            zoomOutButton.disabled = false;        } else {            zoomInButton.disabled = true;        };    };    function zoomOut() {        if (_jm.view.zoomOut()) {            zoomInButton.disabled = false;        } else {            zoomOutButton.disabled = true;        };    };    function toggle_editable(btn){        var editable = _jm.get_editable();        if(editable){            _jm.disable_edit();            btn.innerHTML = 'enable editable';        }else{            _jm.enable_edit();            btn.innerHTML = 'disable editable';        }    }    // this method change size of container, perpare for adjusting jsmind    function change_container(){        var c = document.getElementById('jsmind_container');        c.style.width = '800px';        c.style.height = '500px';    }    function resize_jsmind(){        _jm.resize();    }    function expand(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.expand_node(selected_id);    }    function collapse(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.collapse_node(selected_id);    }    function toggle(){        var selected_id = get_selected_nodeid();        if(!selected_id){prompt_info('please select a node first.');return;}        _jm.toggle_node(selected_id);    }    function expand_all(){        _jm.expand_all();    }    function expand_to_level2(){        _jm.expand_to_depth(2);    }    function expand_to_level3(){        _jm.expand_to_depth(3);    }    function collapse_all(){        _jm.collapse_all();    }    function get_nodearray_data(){        var mind_data = _jm.get_data('node_array');        var mind_string = jsMind.util.json.json2string(mind_data);        prompt_info(mind_string);    }    function save_nodearray_file(){        var mind_data = _jm.get_data('node_array');        var mind_name = mind_data.meta.name;        var mind_str = jsMind.util.json.json2string(mind_data);        jsMind.util.file.save(mind_str,'text/jsmind',mind_name+'.jm');    }        function open_nodearray(){        var file_input = document.getElementById('file_input_nodearray');        var files = file_input.files;        if(files.length > 0){            var file_data = files[0];            jsMind.util.file.read(file_data,function(jsmind_data, jsmind_name){                var mind = jsMind.util.json.string2json(jsmind_data);                if(!!mind){                    _jm.show(mind);                }else{                    prompt_info('can not open this file as mindmap');                }            });        }else{            prompt_info('please choose a file first')        }    }    function get_freemind_data(){        var mind_data = _jm.get_data('freemind');        var mind_string = jsMind.util.json.json2string(mind_data);        alert(mind_string);    }    function save_freemind_file(){        var mind_data = _jm.get_data('freemind');        var mind_name = mind_data.meta.name || 'freemind';        var mind_str = mind_data.data;        jsMind.util.file.save(mind_str,'text/xml',mind_name+'.mm');    }        function open_freemind(){        var file_input = document.getElementById('file_input_freemind');        var files = file_input.files;        if(files.length > 0){            var file_data = files[0];            jsMind.util.file.read(file_data, function(freemind_data, freemind_name){                if(freemind_data){                    var mind_name = freemind_name;                    if(/.*\.mm$/.test(mind_name)){                        mind_name = freemind_name.substring(0,freemind_name.length-3);                    }                    var mind = {                        "meta":{                            "name":mind_name,                            "author":"hizzgdev@163.com",                            "version":"1.0.1"                        },                        "format":"freemind",                        "data":freemind_data                    };                    _jm.show(mind);                }else{                    prompt_info('can not open this file as mindmap');                }            });        }else{            prompt_info('please choose a file first')        }    }    function prompt_info(msg){        alert(msg);    }    open_empty();</script></body></html>
 |