Commit 211403ac authored by Akikonata's avatar Akikonata

resolved code error

parent 02961137
......@@ -61,31 +61,29 @@ module.exports = function ( grunt ) {
options: {
banner: banner
},
files: (function(){
files: ( function () {
var files = {};
files[distPath + 'kityminder.all.js'] = distPath + 'kityminder.all.min.js';
files[ distPath + 'kityminder.all.js' ] = distPath + 'kityminder.all.min.js';
return files;
})()
} )()
}
},
copy: {
dir: {
files: [
{
src: [ 'dialogs/**', 'lang/**', 'lib/**', 'social/**', 'themes/**' ],
dest: distPath
}
]
files: [ {
src: [ 'dialogs/**', 'lang/**', 'lib/**', 'social/**', 'themes/**' ],
dest: distPath
} ]
}
},
replace: {
online: {
src: distPath+'index.html',
src: distPath + 'index.html',
overwrite: true,
replacements: [ {
from: /1234567890/ig,
to: '1234567890'
}]
} ]
}
},
......@@ -123,8 +121,8 @@ module.exports = function ( grunt ) {
/* [Build plugin & task ] ------------------------------------*/
grunt.loadNpmTasks( 'grunt-contrib-concat' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-text-replace');
grunt.loadNpmTasks( 'grunt-contrib-copy' );
grunt.loadNpmTasks( 'grunt-text-replace' );
// Build task(s).
grunt.registerTask( 'default', [ 'concat', 'uglify', 'copy', 'replace' ] );
......
......@@ -70,7 +70,7 @@ KM.registerToolbarUI( 'saveto', function ( name ) {
if ( typeof ( data ) == 'string' ) {
var url = 'data:text/plain; utf-8,' + encodeURIComponent( data );
if ( ie_ver() > 0 ) {
console.log( p.fileExtension );
//console.log( p.fileExtension );
if ( p.fileExtension === '.km' ) {
doSave( 'application/x-javascript', data, me.getMinderTitle() );
} else if ( p.fileExtension === '.svg' ) {
......
//接收者
Minder.Receiver = kity.createClass('Receiver',{
clear : function(){
Minder.Receiver = kity.createClass( 'Receiver', {
clear: function () {
this.container.innerHTML = '';
this.selection && this.selection.setHide();
this.range && this.range.nativeSel.removeAllRanges();
......@@ -8,343 +8,341 @@ Minder.Receiver = kity.createClass('Receiver',{
this.inputLength = 0;
return this;
},
setTextEditStatus : function(status){
setTextEditStatus: function ( status ) {
this.textEditStatus = status || false;
return this;
},
isTextEditStatus:function(){
isTextEditStatus: function () {
return this.textEditStatus;
},
constructor : function(km){
this.setKityMinder(km);
constructor: function ( km ) {
this.setKityMinder( km );
this.textEditStatus = false;
var _div = document.createElement('div');
_div.setAttribute('contenteditable',true);
var _div = document.createElement( 'div' );
_div.setAttribute( 'contenteditable', true );
_div.className = 'km_receiver';
this.container = document.body.insertBefore(_div,document.body.firstChild);
utils.addCssRule('km_receiver_css',' .km_receiver{position:absolute;padding:0;margin:0;word-wrap:break-word;clip:rect(1em 1em 1em 1em);}');//
this.km.on('textedit.beforekeyup textedit.keydown textedit.paste', utils.proxy(this.keyboardEvents,this));
this.container = document.body.insertBefore( _div, document.body.firstChild );
utils.addCssRule( 'km_receiver_css', ' .km_receiver{position:absolute;padding:0;margin:0;word-wrap:break-word;clip:rect(1em 1em 1em 1em);}' ); //
this.km.on( 'textedit.beforekeyup textedit.keydown textedit.paste', utils.proxy( this.keyboardEvents, this ) );
this.timer = null;
this.index = 0;
},
setRange : function(range,index){
setRange: function ( range, index ) {
this.index = index || this.index;
var text = this.container.firstChild;
this.range = range;
range.setStart(text || this.container, this.index).collapse(true);
range.setStart( text || this.container, this.index ).collapse( true );
var me = this;
setTimeout(function(){
setTimeout( function () {
me.container.focus();
range.select()
});
} );
return this;
},
setTextShape:function(textShape){
if(!textShape){
setTextShape: function ( textShape ) {
if ( !textShape ) {
textShape = new kity.Text();
}
this.textShape = textShape;
this.container.innerHTML = textShape.getContent();
return this;
},
setTextShapeSize:function(size){
this.textShape.setSize(size);
setTextShapeSize: function ( size ) {
this.textShape.setSize( size );
return this;
},
getTextShapeHeight:function(){
getTextShapeHeight: function () {
return this.textShape.getRenderBox().height;
},
appendTextShapeToPaper:function(paper){
paper.addShape(this.textShape);
appendTextShapeToPaper: function ( paper ) {
paper.addShape( this.textShape );
return this;
},
setKityMinder:function(km){
setKityMinder: function ( km ) {
this.km = km;
return this;
},
setMinderNode:function(node){
setMinderNode: function ( node ) {
this.minderNode = node;
return this;
},
keyboardEvents : function(e){
keyboardEvents: function ( e ) {
clearTimeout(this.timer);
clearTimeout( this.timer );
var me = this;
var orgEvt = e.originEvent;
var keyCode = orgEvt.keyCode;
var keys = KityMinder.keymap;
function setTextToContainer(){
var text = me.container.textContent.replace(/[\u200b\t\r\n]/g,'');
if(me.textShape.getOpacity() == 0){
me.textShape.setOpacity(1);
function setTextToContainer() {
var text = me.container.textContent.replace( /[\u200b\t\r\n]/g, '' );
if ( me.textShape.getOpacity() == 0 ) {
me.textShape.setOpacity( 1 );
}
//#46 修复在ff下定位到文字后方空格光标不移动问题
if(browser.gecko && /\s$/.test(text)){
if ( browser.gecko && /\s$/.test( text ) ) {
text += "\u200b";
}
me.textShape.setContent(text);
me.textShape.setContent( text );
me.setContainerStyle();
me.minderNode.setText(text);
if(text.length == 0){
me.textShape.setContent('a');
me.textShape.setOpacity(0);
me.minderNode.setText( text );
if ( text.length == 0 ) {
me.textShape.setContent( 'a' );
me.textShape.setOpacity( 0 );
}
me.km.updateLayout(me.minderNode);
me.km.updateLayout( me.minderNode );
me.setBaseOffset();
me.updateTextData();
me.updateIndex();
me.updateSelection();
me.timer = setTimeout(function(){
me.timer = setTimeout( function () {
me.selection.setShow()
},500);
}, 500 );
}
switch(e.type){
case 'keydown':
switch ( e.originEvent.keyCode ) {
case keys.Enter:
case keys.Tab:
this.selection.setHide();
this.clear().setTextEditStatus(false);
this.km.fire('contentchange');
this.km.setStatus('normal');
e.preventDefault();
break;
}
switch ( e.type ) {
case 'keydown':
switch ( e.originEvent.keyCode ) {
case keys.Enter:
case keys.Tab:
this.selection.setHide();
this.clear().setTextEditStatus( false );
this.km.fire( 'contentchange' );
this.km.setStatus( 'normal' );
e.preventDefault();
break;
}
if ( e.originEvent.ctrlKey || e.originEvent.metaKey ){
if ( e.originEvent.ctrlKey || e.originEvent.metaKey ) {
//粘贴
if(keyCode == keymap.v){
//粘贴
if ( keyCode == keymap.v ) {
setTimeout(function(){
me.range.updateNativeRange().insertNode($('<span>$$_kityminder_bookmark_$$</span>')[0]);
me.container.innerHTML = me.container.textContent.replace(/[\u200b\t\r\n]/g,'');
var index = me.container.textContent.indexOf('$$_kityminder_bookmark_$$');
me.container.textContent = me.container.textContent.replace('$$_kityminder_bookmark_$$','');
me.range.setStart(me.container.firstChild,index).collapse(true).select();
setTextToContainer()
},100);
}
//剪切
if(keyCode == keymap.x){
setTimeout(function(){
setTextToContainer()
},100);
}
return;
setTimeout( function () {
me.range.updateNativeRange().insertNode( $( '<span>$$_kityminder_bookmark_$$</span>' )[ 0 ] );
me.container.innerHTML = me.container.textContent.replace( /[\u200b\t\r\n]/g, '' );
var index = me.container.textContent.indexOf( '$$_kityminder_bookmark_$$' );
me.container.textContent = me.container.textContent.replace( '$$_kityminder_bookmark_$$', '' );
me.range.setStart( me.container.firstChild, index ).collapse( true ).select();
setTextToContainer()
}, 100 );
}
break;
case 'beforekeyup':
switch(keyCode){
case keymap.Enter:
case keymap.Tab:
if(this.keydownNode === this.minderNode){
this.rollbackStatus();
this.setTextEditStatus(false);
this.clear();
}
e.preventDefault();
return;
case keymap.Shift:
case keymap.Control:
case keymap.Alt:
case keymap.Cmd:
return;
//剪切
if ( keyCode == keymap.x ) {
setTimeout( function () {
setTextToContainer()
}, 100 );
}
return;
}
break;
case 'beforekeyup':
switch ( keyCode ) {
case keymap.Enter:
case keymap.Tab:
if ( this.keydownNode === this.minderNode ) {
this.rollbackStatus();
this.setTextEditStatus( false );
this.clear();
}
e.preventDefault();
return;
case keymap.Shift:
case keymap.Control:
case keymap.Alt:
case keymap.Cmd:
return;
}
setTextToContainer();
return true;
setTextToContainer();
return true;
}
},
updateIndex:function(){
updateIndex: function () {
this.index = this.range.getStart().startOffset;
},
updateTextData : function(){
this.textShape.textData = this.getTextOffsetData();
updateTextData: function () {
this.textShape.textData = this.getTextOffsetData();
},
setSelection : function(selection){
setSelection: function ( selection ) {
this.selection = selection;
return this;
},
updateSelection : function(){
updateSelection: function () {
this.selection.setShowHold();
this.selection.bringTop();
//更新模拟选区的范围
this.selection.setStartOffset(this.index).collapse(true);
if(this.index == this.textData.length){
if(this.index == 0){
this.selection.setPosition(this.getBaseOffset())
}else{
this.selection.setPosition({
x : this.textData[this.index-1].x + this.textData[this.index-1].width,
y : this.textData[this.index-1].y
})
this.selection.setStartOffset( this.index ).collapse( true );
if ( this.index == this.textData.length ) {
if ( this.index == 0 ) {
this.selection.setPosition( this.getBaseOffset() )
} else {
this.selection.setPosition( {
x: this.textData[ this.index - 1 ].x + this.textData[ this.index - 1 ].width,
y: this.textData[ this.index - 1 ].y
} )
}
}else{
this.selection.setPosition(this.textData[this.index])
} else {
this.selection.setPosition( this.textData[ this.index ] )
}
return this;
},
getBaseOffset:function(){
return this.textShape.getRenderBox('top');
getBaseOffset: function () {
return this.textShape.getRenderBox( 'top' );
},
setBaseOffset :function(){
this.offset = this.textShape.getRenderBox('top');
setBaseOffset: function () {
this.offset = this.textShape.getRenderBox( 'top' );
return this;
},
setContainerStyle : function(){
setContainerStyle: function () {
var textShapeBox = this.textShape.getRenderBox();
this.container.style.cssText = ";left:" + this.offset.x
+ 'px;top:' + (this.offset.y+textShapeBox.height)
+ 'px;width:' + textShapeBox.width
+ 'px;height:' + textShapeBox.height + 'px;';
this.container.style.cssText = ";left:" + this.offset.x + 'px;top:' + ( this.offset.y + textShapeBox.height ) + 'px;width:' + textShapeBox.width + 'px;height:' + textShapeBox.height + 'px;';
return this;
},
getTextOffsetData:function(){
getTextOffsetData: function () {
var text = this.textShape.getContent();
this.textData = [];
for(var i= 0,l = text.length;i<l;i++){
try{
var box = this.textShape.getExtentOfChar(i);
}catch(e){
for ( var i = 0, l = text.length; i < l; i++ ) {
try {
var box = this.textShape.getExtentOfChar( i );
} catch ( e ) {
debugger
}
this.textData.push({
x:box.x + this.offset.x,
y:this.offset.y,
width:box.width,
height:box.height
})
this.textData.push( {
x: box.x + this.offset.x,
y: this.offset.y,
width: box.width,
height: box.height
} )
}
return this;
},
setCurrentIndex:function(offset){
setCurrentIndex: function ( offset ) {
var me = this;
this.getTextOffsetData();
var hadChanged = false;
utils.each(this.textData,function(i,v){
utils.each( this.textData, function ( i, v ) {
//点击开始之前
if(i == 0 && offset.x <= v.x){
if ( i == 0 && offset.x <= v.x ) {
me.index = 0;
return false;
}
if(offset.x >= v.x && offset.x <= v.x + v.width){
if(offset.x - v.x > v.width/2){
if ( offset.x >= v.x && offset.x <= v.x + v.width ) {
if ( offset.x - v.x > v.width / 2 ) {
me.index = i + 1;
}else {
} else {
me.index = i
}
hadChanged = true;
return false;
}
if(i == me.textData.length -1 && offset.x >= v.x){
if ( i == me.textData.length - 1 && offset.x >= v.x ) {
me.index = me.textData.length;
return false;
}
});
} );
return this;
},
setSelectionHeight:function(){
this.selection.setHeight(this.getTextShapeHeight());
setSelectionHeight: function () {
this.selection.setHeight( this.getTextShapeHeight() );
return this;
},
updateSelectionByMousePosition:function(offset,dir){
updateSelectionByMousePosition: function ( offset, dir ) {
var me = this;
utils.each(this.textData,function(i,v){
utils.each( this.textData, function ( i, v ) {
//点击开始之前
if(i == 0 && offset.x <= v.x){
me.selection.setStartOffset(0);
if ( i == 0 && offset.x <= v.x ) {
me.selection.setStartOffset( 0 );
return false;
}
if(i == me.textData.length -1 && offset.x >= v.x){
me.selection.setEndOffset(me.textData.length);
if ( i == me.textData.length - 1 && offset.x >= v.x ) {
me.selection.setEndOffset( me.textData.length );
return false;
}
if(offset.x >= v.x && offset.x <= v.x + v.width){
if ( offset.x >= v.x && offset.x <= v.x + v.width ) {
if(me.index == i){
if(i == 0){
me.selection.setStartOffset(i)
if ( me.index == i ) {
if ( i == 0 ) {
me.selection.setStartOffset( i )
}
if(offset.x <= v.x + v.width/2){
if ( offset.x <= v.x + v.width / 2 ) {
me.selection.collapse()
}else {
me.selection.setEndOffset(i + (me.selection.endOffset > i || dir == 1 ? 1 : 0))
} else {
me.selection.setEndOffset( i + ( me.selection.endOffset > i || dir == 1 ? 1 : 0 ) )
}
}else if(i > me.index){
me.selection.setStartOffset(me.index);
me.selection.setEndOffset(i + 1)
}else{
if(dir == 1){
me.selection.setStartOffset(i + (offset.x >= v.x + v.width/2 ? 1 : 0));
}else{
me.selection.setStartOffset(i);
} else if ( i > me.index ) {
me.selection.setStartOffset( me.index );
me.selection.setEndOffset( i + 1 )
} else {
if ( dir == 1 ) {
me.selection.setStartOffset( i + ( offset.x >= v.x + v.width / 2 ? 1 : 0 ) );
} else {
me.selection.setStartOffset( i );
}
me.selection.setEndOffset(me.index)
me.selection.setEndOffset( me.index )
}
return false;
}
});
} );
return this;
},
updateSelectionShow:function(){
var startOffset = this.textData[this.selection.startOffset],
endOffset = this.textData[this.selection.endOffset],
width = 0 ;
if(this.selection.collapsed){
this.selection.updateShow(startOffset||this.textData[this.textData.length-1],0);
updateSelectionShow: function () {
var startOffset = this.textData[ this.selection.startOffset ],
endOffset = this.textData[ this.selection.endOffset ],
width = 0;
if ( this.selection.collapsed ) {
this.selection.updateShow( startOffset || this.textData[ this.textData.length - 1 ], 0 );
return this;
}
if(!endOffset){
var lastOffset = this.textData[this.textData.length -1];
if ( !endOffset ) {
var lastOffset = this.textData[ this.textData.length - 1 ];
width = lastOffset.x - startOffset.x + lastOffset.width;
}else{
} else {
width = endOffset.x - startOffset.x;
}
this.selection.updateShow(startOffset,width);
this.selection.updateShow( startOffset, width );
return this;
},
updateRange:function(range){
updateRange: function ( range ) {
var node = this.container.firstChild;
range.setStart(node,this.selection.startOffset);
range.setEnd(node,this.selection.endOffset);
range.setStart( node, this.selection.startOffset );
range.setEnd( node, this.selection.endOffset );
range.select();
return this;
},
setIndex:function(index){
setIndex: function ( index ) {
this.index = index;
return this
},
setContainerTxt:function(txt){
setContainerTxt: function ( txt ) {
this.container.textContent = txt;
return this;
}
});
\ No newline at end of file
} );
\ No newline at end of file
......@@ -58,8 +58,8 @@ KityMinder.registerModule( "HistoryModule", function () {
this.km.initStyle();
this.update();
this.km.fire('restoreScene');
this.km.fire('contentChange');
this.km.fire( 'restoreScene' );
this.km.fire( 'contentChange' );
},
getScene: function () {
return new Scene( this.km.getRoot() )
......@@ -95,16 +95,26 @@ KityMinder.registerModule( "HistoryModule", function () {
this.historyManager = new HistoryManager( this );
var keys = {
/*Shift*/ 16:1, /*Ctrl*/ 17:1, /*Alt*/ 18:1,/*Command*/91:1,
37:1, 38:1, 39:1, 40:1
},
/*Shift*/
16: 1,
/*Ctrl*/
17: 1,
/*Alt*/
18: 1,
/*Command*/
91: 1,
37: 1,
38: 1,
39: 1,
40: 1
},
keycont = 0,
lastKeyCode,
saveSceneTimer;
return {
defaultOptions: {
maxUndoCount: 20,
maxInputCount:20
maxInputCount: 20
},
"commands": {
"undo": kity.createClass( "UndoCommand", {
......@@ -143,38 +153,39 @@ KityMinder.registerModule( "HistoryModule", function () {
},
"events": {
"saveScene": function ( e ) {
debugger;
this.historyManager.saveScene();
},
"renderNode":function(e){
"renderNode": function ( e ) {
var node = e.node;
if(node.isHighlight()){
km.select(node);
if ( node.isHighlight() ) {
km.select( node );
}
},
"keydown":function(e){
"keydown": function ( e ) {
var orgEvt = e.originEvent;
var keyCode = orgEvt.keyCode || orgEvt.which;
if (!keys[keyCode] && !orgEvt.ctrlKey && !orgEvt.metaKey && !orgEvt.shiftKey && !orgEvt.altKey) {
if ( !keys[ keyCode ] && !orgEvt.ctrlKey && !orgEvt.metaKey && !orgEvt.shiftKey && !orgEvt.altKey ) {
if (km.historyManager.list.length == 0) {
if ( km.historyManager.list.length == 0 ) {
km.historyManager.saveScene();
}
clearTimeout(saveSceneTimer);
clearTimeout( saveSceneTimer );
saveSceneTimer = setTimeout(function(){
saveSceneTimer = setTimeout( function () {
km.historyManager.saveScene();
},200);
}, 200 );
lastKeyCode = keyCode;
keycont++;
if (keycont >= km.getOptions('maxInputCount') ) {
if ( keycont >= km.getOptions( 'maxInputCount' ) ) {
km.historyManager.saveScene()
}
}
},
"import":function(){
"import": function () {
this.historyManager.reset()
}
}
......
......@@ -394,18 +394,18 @@ KityMinder.registerModule( "LayoutDefault", function () {
}
};
var showNodeInView = function( node ){
var showNodeInView = function ( node ) {
var padding = 5;
var viewport = minder.getPaper().getViewPort();
var offset = node.getRenderContainer().getRenderBox( minder.getRenderContainer() );
var viewport = minder.getPaper().getViewPort();
var offset = node.getRenderContainer().getRenderBox( minder.getRenderContainer() );
var tmpX = viewport.center.x * 2 - (offset.x + offset.width);
var tmpY = viewport.center.y * 2 - (offset.y + offset.height);
var tmpX = viewport.center.x * 2 - ( offset.x + offset.width );
var tmpY = viewport.center.y * 2 - ( offset.y + offset.height );
var dx = offset.x < 0 ? -offset.x : Math.min(tmpX, 0);
var dy = offset.y < 0 ? -offset.y : Math.min(tmpY, 0);
var dx = offset.x < 0 ? -offset.x : Math.min( tmpX, 0 );
var dy = offset.y < 0 ? -offset.y : Math.min( tmpY, 0 );
km.getRenderContainer().fxTranslate( dx, dy, 100, "easeOutQuint" );
km.getRenderContainer().fxTranslate( dx, dy, 100, "easeOutQuint" );
};
var _style = {
......@@ -585,7 +585,7 @@ KityMinder.registerModule( "LayoutDefault", function () {
updateConnectAndshIcon( set[ i ] );
}
if( focus ){
if ( focus ) {
showNodeInView( node );
}
},
......
......@@ -107,7 +107,7 @@ KityMinder.registerModule( "LayoutModule", function () {
execute: function ( km, node, focus, silbling ) {
var parent = km.getSelectedNode();
if( !parent ){
if ( !parent ) {
return null;
}
......@@ -134,7 +134,7 @@ KityMinder.registerModule( "LayoutModule", function () {
base: Command,
execute: function ( km, node, focus ) {
var selectedNode = km.getSelectedNode();
if( !selectedNode ){
if ( !selectedNode ) {
return null;
}
......@@ -163,7 +163,7 @@ KityMinder.registerModule( "LayoutModule", function () {
base: Command,
execute: function ( km ) {
if( km.getRoot().children.length == 0 ){
if ( km.getRoot().children.length == 0 ) {
return;
}
......
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