Commit 71ba1683 authored by techird's avatar techird

merge dev changes

parents d2519600 838632b3
.idea .idea
*.sublime-project *.sublime-project
*.sublime-workspace *.sublime-workspace
node_modules/
\ No newline at end of file
/*-----------------------------------------------------
* livereload Default Setting
*-----------------------------------------------------*/
'use strict';
var path = require( 'path' );
var lrSnippet = require( 'grunt-contrib-livereload/lib/utils' ).livereloadSnippet;
/*-----------------------------------------------------
* Module Setting
*-----------------------------------------------------*/
module.exports = function ( grunt ) {
var banner = '/*!\n' +
' * ====================================================\n' +
' * <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
'<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' +
' * GitHub: <%= pkg.repository.url %> \n' +
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>\n' +
' * ====================================================\n' +
' */\n\n',
buildPath = 'dev/import.php';
var getPath = function ( readFile ) {
var sources = require( "fs" ).readFileSync( readFile );
sources = /Array\(([^)]+)\)/.exec( sources );
sources = sources[ 1 ].replace( /\/\/.*\n/g, '\n' ).replace( /'|"|\n|\t|\s/g, '' );
sources = sources.split( "," );
sources.forEach( function ( filepath, index ) {
sources[ index ] = filepath;
} );
return sources;
};
// Project configuration.
grunt.initConfig( {
// Metadata.
pkg: grunt.file.readJSON( 'package.json' ),
concat: {
js: {
options: {
banner: banner + '(function(kity, window) {\n\n',
footer: '\n\n})(kity, window)',
process: function ( src, filepath ) {
return src + "\n";
}
},
src: getPath( buildPath ),
dest: 'dist/kityminder.all.js'
}
},
uglify: {
minimize: {
options: {
banner: banner
},
files: {
'dist/kityminder.all.min.js': 'dist/kityminder.all.js'
}
}
},
/* Start [Task liverload] ------------------------------------*/
livereload: {
port: 35729 // Default livereload listening port.
},
connect: {
livereload: {
options: {
hostname: '*',
port: 9001,
base: '.',
middleware: function ( connect, options, middlewares ) {
return [
lrSnippet,
connect.static( options.base.toString() ),
connect.directory( options.base.toString() )
];
}
}
}
},
regarde: {
js: {
files: 'src/**/*.js',
tasks: [ 'default', 'livereload' ]
}
}
/* End [Task liverload] ------------------------------------*/
} );
// These plugins provide necessary tasks.
/* [Build plugin & task ] ------------------------------------*/
grunt.loadNpmTasks( 'grunt-contrib-concat' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
// Build task(s).
grunt.registerTask( 'default', [ 'concat:js', 'uglify:minimize' ] );
/* [liverload plugin & task ] ------------------------------------*/
grunt.loadNpmTasks( 'grunt-regarde' );
grunt.loadNpmTasks( 'grunt-contrib-connect' );
grunt.loadNpmTasks( 'grunt-contrib-livereload' );
grunt.registerTask( 'live', [ 'livereload-start', 'connect', 'regarde' ] );
};
\ No newline at end of file
Kity Minder Kity Minder
========== ==========
##简介 ## 简介
KityMinder是百度F³团队(原UEditor团队)的又一力作。作为一款在线的脑图编辑工具,它有着不输给Native编辑工具(如xMind,MindManager等)的最佳用户体验。同时,它充分发挥了Web云存储的优势,可以直接将编辑中的脑图同步到云端。 此外,借由独创的“云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。 KityMinder 是百度 FEX 团队的 f-cube 小组(原UEditor小组)的又一力作。作为一款在线的脑图编辑工具,它有着很多Native编辑工具的交互体验。KM与UE有着一样的宗旨,就是注重最终用户的使用体验。同时,它充分发挥了Web云存储的优势,可以直接将编辑中的脑图同步到云端。此外,借由独创的 “云盘分享”功能,用户可以一键将当前编辑的脑图直接生成在线链接共享给其他用户,实现无缝沟通。
![Alt text](summary.jpg "简介图")
KM是基于SVG技术实现,使用JavaScript+html实现。支持绝大多数的主流浏览器。 KM是基于SVG技术实现,使用JavaScript+html实现。支持绝大多数的主流浏览器。
支持列表如下 支持列表如下
1. chrome 1. Chrome
2. firefox 2. Firefox
3. safari 3. Safari
4. ie9-11 4. IE9+
##项目链接 ## 项目链接
[直接使用链接](http://kitygraph.github.io/kityminder/dist/) [直接使用链接](http://fex-team.github.io/kityminder/dist/)
##联系我们 ## 联系我们
邮件:kity@baidu.com 邮件: kity@baidu.com
讨论群:374918234 讨论群: 374918234
var fs = require('fs');
var dependience = [
'src/core/km.js',
'src/core/command.js',
'src/core/mindernode.js',
'src/core/minderevent.js',
'src/core/kityminder.js'
];
var buildPath = 'dist/kityminder.js';
var contents = [], content;
while(dependience.length) {
contents.push(fs.readFileSync(dependience.shift()));
}
content = contents.join('\n\n');
content = '(function(kity, window) {\n\n' + content + '\n\n})(kity, window);';
fs.writeFileSync(buildPath, content);
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../lib/jquery-2.1.0.min.js" charset="utf-8"></script>
<script src="../kity/dist/kitygraph.all.js" charset="utf-8"></script>
<script src="../dev/import.php" charset="utf-8"></script>
<script src="../kityminder.config.js" charset="utf-8"></script>
<script src="../lang/zh-cn/zh-cn.js" charset="utf-8"></script>
<script src="../lib/baidu-frontia-js-full-1.0.0.js" charset="utf-8"></script>
<script src="../social/social.js" charset="utf-8"></script>
<link href="../social/social.css" rel="stylesheet">
<link href="../themes/default/css/import.css" type="text/css" rel="stylesheet" />
<link href="../dialogs/dialogs.css" rel="stylesheet" type="text/css" />
<script>
$(function () {
// create km instance
window.km = KM.getKityMinder('kityminder');
});
</script>
</head>
<body>
<div id="kityminder" onselectstart="return false"></div>
<body>
</html>
\ No newline at end of file
.priority .icon {background:url(../dialogs/icons/iconpriority.png) 0 0}
.progress .icon{background:url(../dialogs/icons/iconprogress.png) 0 0}
.icon.p2{background-position: -20px 0}
.icon.p3{background-position: -40px 0}
.icon.p4{background-position: -60px 0}
.icon.p5{background-position: -80px 0}
\ No newline at end of file
( function () { ( function () {
var utils = KM.utils; var utils = KM.utils;
KM.registerWidget( 'markers', { KM.registerWidget( 'markers', {
tpl: "<ul class='icon-list'>" + tpl: "<ul class='icon-list priority'>" +
"<li value='1' type='priority'><span class='icon' style='background:url(../dialogs/icons/iconpriority.png) 0 0'></span><span><%= priority %>1</span></li>" + "<li value='1' type='priority'><span class='icon p1'></span><span><%= priority %>1</span></li>" +
"<li value='2' type='priority'><span class='icon' style='background:url(../dialogs/icons/iconpriority.png) -20px 0'></span><span><%= priority %>2</span></li>" + "<li value='2' type='priority'><span class='icon p2'></span><span><%= priority %>2</span></li>" +
"<li value='3' type='priority'><span class='icon' style='background:url(../dialogs/icons/iconpriority.png) -40px 0'></span><span><%= priority %>3</span></li>" + "<li value='3' type='priority'><span class='icon p3'></span><span><%= priority %>3</span></li>" +
"<li value='4' type='priority'><span class='icon' style='background:url(../dialogs/icons/iconpriority.png) -60px 0'></span><span><%= priority %>4</span></li>" + "<li value='4' type='priority'><span class='icon p4'></span><span><%= priority %>4</span></li>" +
"<li value='5' type='priority'><span class='icon' style='background:url(../dialogs/icons/iconpriority.png) -80px 0'></span><span><%= priority %>5</span></li>" + "<li value='5' type='priority'><span class='icon p5'></span><span><%= priority %>5</span></li>" +
"</ul>" + "</ul>" +
"<ul class='icon-list'>" + "<ul class='icon-list progress'>" +
"<li value='1' type='progress'><span class='icon' style='background:url(../dialogs/icons/iconprogress.png) 0 0'></span><span><%= progress.notdone %></span></li>" + "<li value='1' type='progress'><span class='icon p1'></span><span><%= progress.notdone %></span></li>" +
"<li value='2' type='progress'><span class='icon' style='background:url(../dialogs/icons/iconprogress.png) -20px 0'></span><span><%= progress.quarterdone %></span></li>" + "<li value='2' type='progress'><span class='icon p2'></span><span><%= progress.quarterdone %></span></li>" +
"<li value='3' type='progress'><span class='icon' style='background:url(../dialogs/icons/iconprogress.png) -40px 0'></span><span><%= progress.halfdone %></span></li>" + "<li value='3' type='progress'><span class='icon p3'></span><span><%= progress.halfdone %></span></li>" +
"<li value='4' type='progress'><span class='icon' style='background:url(../dialogs/icons/iconprogress.png) -60px 0'></span><span><%= progress.threequartersdone %></span></li>" + "<li value='4' type='progress'><span class='icon p4'></span><span><%= progress.threequartersdone %></span></li>" +
"<li value='5' type='progress'><span class='icon' style='background:url(../dialogs/icons/iconprogress.png) -80px 0'></span><span><%= progress.done %></span></li>" + "<li value='5' type='progress'><span class='icon p5'></span><span><%= progress.done %></span></li>" +
"</ul>", "</ul>",
initContent: function ( km ) { initContent: function ( km ) {
var lang = km.getLang( 'dialogs.markers' ); var lang = km.getLang( 'dialogs.markers' );
......
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<script src="jquery-2.1.0.min.js" charset="utf-8"></script> <script src="../lib/jquery-2.1.0.min.js" charset="utf-8"></script>
<script src="baidu-frontia-js-full-1.0.0.js" charset="utf-8"></script>
<script src="social.js" charset="utf-8"></script> <script src="../kity/dist/kitygraph.all.min.js" charset="utf-8"></script>
<script src="../kity/dist/kitygraph.all.js" charset="utf-8"></script> <script src="../dist/kityminder.all.min.js" charset="utf-8"></script>
<script src="../configure.js" charset="utf-8"></script> <script src="../kityminder.config.js" charset="utf-8"></script>
<script src="../dist/dev.js" charset="utf-8"></script>
<script src="../lang/zh-cn/zh-cn.js" charset="utf-8"></script> <script src="../lang/zh-cn/zh-cn.js" charset="utf-8"></script>
<link href="../themes/default/css/import.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="social.css"> <script src="../lib/baidu-frontia-js-full-1.0.0.js" charset="utf-8"></script>
<style> <script src="../social/social.js" charset="utf-8"></script>
.km_receiver{ <link href="../social/social.css" rel="stylesheet">
width:0;
height:0; <link href="../themes/default/css/import.css" type="text/css" rel="stylesheet" />
} <link href="../dialogs/dialogs.css" rel="stylesheet" type="text/css" />
.km-minderNode{
cursor:default; <script>
} $(function () {
.kmui-container { // create km instance
height: 100%;
}
html, body, div {
margin: 0;
padding: 0;
}
html, body, div.kmui-editor-body {
height: 100%;
-moz-user-select: none;
}
</style>
</head>
<body >
<div id="kityminder" style="height:100%;width:100%" onselectstart="return false">
</div>
<div id="social"></div>
</body>
<script>
window.km = KM.getKityMinder('kityminder'); window.km = KM.getKityMinder('kityminder');
</script> });
</script>
</head>
<body>
<div id="kityminder" onselectstart="return false"></div>
<body>
</html> </html>
\ No newline at end of file
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "kityminder",
"title": "kityminder",
"description": "Kity Minder",
"version": "1.0.0",
"homepage": "https://github.com/fex-team/kityminder",
"author": {
"name": "f-cube @ FEX",
"url": "http://fex.baidu.com"
},
"repository": {
"type": "git",
"url": "https://github.com/fex-team/kityminder.git"
},
"keywords": [
"kityminder",
"kity",
"minder",
"svg",
"graphic",
"javascript"
],
"bugs": {
"url": "https://github.com/fex-team/kityminder/issues"
},
"licenses": [
{
"type": "MIT",
"url": "https://github.com/fex-team/kityminder/blob/dev/LICENSE"
}
],
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.2.6",
"grunt-regarde": "latest",
"grunt-contrib-connect": "latest",
"grunt-contrib-livereload": "latest"
}
}
\ No newline at end of file
...@@ -36,7 +36,7 @@ $.extend( $.fn, { ...@@ -36,7 +36,7 @@ $.extend( $.fn, {
} ); } );
$( function () { $( function () {
var $panel = $( '#social' ); var $panel = $( '<div id="social"></div>' ).appendTo( 'body' );
var $login_btn, $save_btn, $share_btn, $user_btn, $user_menu; var $login_btn, $save_btn, $share_btn, $user_btn, $user_menu;
var baseUrl = ( function () { var baseUrl = ( function () {
...@@ -322,7 +322,7 @@ $( function () { ...@@ -322,7 +322,7 @@ $( function () {
if ( currentUser ) { if ( currentUser ) {
setCurrentUser( currentUser ); setCurrentUser( currentUser );
loadPath(); loadPath();
if(thisMapFilename) { if ( thisMapFilename ) {
loadPersonal( thisMapFilename ); loadPersonal( thisMapFilename );
} }
} else { } else {
......
...@@ -37,7 +37,7 @@ KM.registerToolbarUI( 'saveto', function ( name ) { ...@@ -37,7 +37,7 @@ KM.registerToolbarUI( 'saveto', function ( name ) {
var renderBox = me.getRenderContainer().getRenderBox( "top" ); var renderBox = me.getRenderContainer().getRenderBox( "top" );
var renderContainer = me.getRenderContainer(); var renderContainer = me.getRenderContainer();
var transform = renderContainer.getTransform(); var transform = renderContainer.getTransform();
renderContainer.setTransform( new kity.Matrix().translate( -renderBox.x, -renderBox.y ) ); renderContainer.clearTransform();
var loop = 0; var loop = 0;
var svg = $( svghtml ).attr( { var svg = $( svghtml ).attr( {
width: renderBox.width, width: renderBox.width,
......
...@@ -77,10 +77,14 @@ kity.extendClass( Minder, { ...@@ -77,10 +77,14 @@ kity.extendClass( Minder, {
if(callbacks.length == 0){ if(callbacks.length == 0){
return; return;
} }
var lastStatus = this.getStatus();
for ( var i = 0; i < callbacks.length; i++ ) { for ( var i = 0; i < callbacks.length; i++ ) {
callbacks[ i ].call( this, e ); callbacks[ i ].call( this, e );
if ( e.shouldStopPropagationImmediately() ) {
if ( this.getStatus() != lastStatus || e.shouldStopPropagationImmediately() ) {
break; break;
} }
} }
......
...@@ -236,8 +236,9 @@ KityMinder.registerModule( "LayoutDefault", function () { ...@@ -236,8 +236,9 @@ KityMinder.registerModule( "LayoutDefault", function () {
} }
prt = prt.getParent(); prt = prt.getParent();
} }
}
//自顶向下更新受影响一侧的y值 //自顶向下更新受影响一侧的y值
var sideList = root.getLayout()[ appendside + "List" ]; var updateSide = function ( appendside ) {
var _buffer = [ root ]; var _buffer = [ root ];
while ( _buffer.length > 0 ) { while ( _buffer.length > 0 ) {
var _buffer0Layout = _buffer[ 0 ].getLayout(); var _buffer0Layout = _buffer[ 0 ].getLayout();
...@@ -252,6 +253,13 @@ KityMinder.registerModule( "LayoutDefault", function () { ...@@ -252,6 +253,13 @@ KityMinder.registerModule( "LayoutDefault", function () {
if ( _buffer[ 0 ] !== root ) effectSet.push( _buffer[ 0 ] ); if ( _buffer[ 0 ] !== root ) effectSet.push( _buffer[ 0 ] );
_buffer.shift(); _buffer.shift();
} }
};
var sideList;
if ( appendside ) {
updateSide( appendside );
} else {
updateSide( "left" );
updateSide( "right" );
} }
return effectSet; return effectSet;
}; };
......
...@@ -61,11 +61,21 @@ KityMinder.registerModule( 'Zoom', function () { ...@@ -61,11 +61,21 @@ KityMinder.registerModule( 'Zoom', function () {
'zoom-in': ZoomInCommand, 'zoom-in': ZoomInCommand,
'zoom-out': ZoomOutCommand 'zoom-out': ZoomOutCommand
}, },
addShortcutKeys: {
"zoom-in": "=", //=
"zoom-out": "-" //-
},
events: { events: {
'normal.keydown':function(e){
var me = this;
var originEvent = e.originEvent;
var keyCode = originEvent.keyCode || originEvent.which;
if(keymap['='] == keyCode){
me.execCommand('zoom-in');
}
if(keymap['-'] == keyCode){
me.execCommand('zoom-out');
}
},
'ready': function () { 'ready': function () {
this._zoomValue = 1; this._zoomValue = 1;
}, },
......
html, body, div {
margin: 0;
padding: 0;
}
html, body, #kity-minder, div.kmui-editor-body {
height:100%;
width:100%
-moz-user-select: none;
}
.km_receiver{
width:0;
height:0;
}
.km-minderNode{
cursor:default;
}
.kmui-container {
height: 100%;
}
.kmui-container { .kmui-container {
} }
.kmui-container .kmui-toolbar{ .kmui-container .kmui-toolbar{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment