fix bug && 细节调整

editor编辑设为自动保存
全塔属性保存后,切到其他标签切回来不变
Ctrl+Z
调整blockly滚轮方向
This commit is contained in:
YouWei Zhao 2018-03-22 16:57:32 +08:00
parent 84b788c311
commit 5e706e1111
5 changed files with 11 additions and 127 deletions

View File

@ -453,7 +453,7 @@ editor.prototype.listen = function() {
if( e.ctrlKey && ( e.keyCode == 90 || e.keyCode == 89 ) )
e.preventDefault();
//Ctrl+z 撤销上一步undo
if(e.keyCode == 90 && e.ctrlKey && preMapData && currDrawData.pos.length){
if(e.keyCode == 90 && e.ctrlKey && preMapData && currDrawData.pos.length && selectBox.isSelected){
editor.map = JSON.parse(JSON.stringify(preMapData));
editor.updateMap();
reDo = JSON.parse(JSON.stringify(currDrawData));
@ -461,7 +461,7 @@ editor.prototype.listen = function() {
preMapData = null;
}
//Ctrl+y 重做一步redo
if(e.keyCode == 89 && e.ctrlKey && reDo && reDo.pos.length){
if(e.keyCode == 89 && e.ctrlKey && reDo && reDo.pos.length && selectBox.isSelected){
preMapData = JSON.parse(JSON.stringify(editor.map));
for(var j=0; j<reDo.pos.length;j++)
editor.map[reDo.pos[j].y][reDo.pos[j].x] = JSON.parse(JSON.stringify(reDo.info));

View File

@ -235,7 +235,7 @@ document.getElementById('blocklyDiv').onmousewheel = function(e){
//console.log(e);
e.preventDefault();
var hvScroll = e.shiftKey?'hScroll':'vScroll';
workspace.scrollbar[hvScroll].handlePosition_+=( ((e.deltaY||0)+(e.detail||0)) <0?20:-20);
workspace.scrollbar[hvScroll].handlePosition_+=( ((e.deltaY||0)+(e.detail||0)) >0?20:-20);
workspace.scrollbar[hvScroll].onScroll_();
workspace.setScale(workspace.scale);
}
@ -370,6 +370,7 @@ editor_blockly.import = function(id_,args){
var blocklyWidgetDiv = document.getElementsByClassName('blocklyWidgetDiv');
editor_blockly.show = function(){
if(typeof(selectBox)!==typeof(undefined))selectBox.isSelected = false;
document.getElementById('left6').style='';
for(var ii =0,node;node=blocklyWidgetDiv[ii];ii++){
node.style.zIndex = 201;

View File

@ -424,7 +424,8 @@ editor_file = function(editor, callback){
saveSetting('data',actionList,function (err) {
callback([
(function(){
var locObj=Object.assign({'main':{}},editor.core.data);
//var locObj=Object.assign({'main':{}},editor.core.data);
var locObj=Object.assign({},data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d,{'main':{}});
Object.keys(editor_file.dataComment._data.main._data).forEach(function(v){
if (isset(editor.main[v]))
locObj.main[v]=editor.main[v];
@ -439,7 +440,8 @@ editor_file = function(editor, callback){
} else {
callback([
(function(){
var locObj=Object.assign({'main':{}},editor.core.data);
//var locObj=Object.assign({'main':{}},editor.core.data);
var locObj=Object.assign({},data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d,{'main':{}});
Object.keys(editor_file.dataComment._data.main._data).forEach(function(v){
if (isset(editor.main[v]))
locObj.main[v]=editor.main[v];

View File

@ -112,6 +112,7 @@ editor_mode.prototype.objToTable_ = function(obj,commentObj){
}
if(checkRange(cobj._range,thiseval)){
editor_mode.addAction(['change',field,thiseval]);
editor_mode.onmode('save');//自动保存
} else {
printe(field+' : 输入的值不合要求,请鼠标放置在注释上查看说明');
}
@ -170,127 +171,6 @@ editor_mode.prototype.objToTd_ = function(obj,commentObj,field,cfield,vobj,cobj)
}
}
editor_mode.prototype.objToTable = function(obj,commentObj){
var outstr=["\n<tr><td>条目</td><td>注释</td><td>值</td></tr>\n"];
var guids=[];
var checkIsLeaf = function(obj,commentObj,field){
var thiseval = eval('obj'+field);
if (thiseval == null || thiseval == undefined)return true;//null,undefined
if (typeof(thiseval) == typeof(''))return true;//字符串
if (Object.keys(thiseval).length == 0)return true;//数字,true,false,空数组,空对象
try {
var comment = eval('commentObj'+field);
if( comment.indexOf('$leaf') != -1){
evalstr = comment.split('$leaf')[1].split('$end')[0];
if(eval(evalstr) === true)return true;
}
} catch (error) {}
return false;
}
//深度优先遍历
var recursionParse = function(tfield) {
for(var ii in eval("obj"+tfield)){
var field = tfield+"['"+ii+"']";
var isleaf = checkIsLeaf(obj,commentObj,field);
if (isleaf) {
var leafnode = editor_mode.objToTr(obj,commentObj,field);
outstr.push(leafnode[0]);
guids.push(leafnode[1]);
} else {
outstr.push(["<tr><td>----</td><td>----</td><td>",field,"</td></tr>\n"].join(''));
recursionParse(field);
}
}
}
recursionParse("");
var checkRange = function(comment,thiseval){
if( comment.indexOf('$range') !== -1){
var evalstr = comment.split('$range')[1].split('$end')[0];
return eval(evalstr);
}
return true;
}
var listen = function(guids) {
guids.forEach(function(guid){
// tr>td[title=field]
// >td[title=comment]
// >td>div>input[value=thsieval]
var thisTr = document.getElementById(guid);
var input = thisTr.children[2].children[0].children[0];
var field = thisTr.children[0].getAttribute('title');
var comment = thisTr.children[1].getAttribute('title');
input.onchange = function(){
var node = thisTr.parentNode;
while (!editor_mode._ids.hasOwnProperty(node.getAttribute('id'))) {
node = node.parentNode;
}
editor_mode.onmode(editor_mode._ids[node.getAttribute('id')]);
var thiseval=null;
try{
thiseval = JSON.parse(input.value);
}catch(ee){
printe(field+' : '+ee);
throw ee;
}
if(checkRange(comment,thiseval)){
editor_mode.addAction(['change',field,thiseval]);
} else {
printe(field+' : 输入的值不合要求,请鼠标放置在注释上查看说明');
}
}
input.ondblclick = function(){
if(!editor_blockly.import(guid))
if(!editor_multi.import(guid)){}
}
});
}
return {"HTML":outstr.join(''),"guids":guids,"listen":listen};
}
editor_mode.prototype.objToTr = function(obj,commentObj,field){
var guid = editor.guid();
var thiseval = eval('obj'+field);
var comment = '';
try {
comment = eval('commentObj'+field);
} catch (error) {}
if(!comment)comment='';
var charlength=10;
var shortField = field.split("']").slice(-2)[0].split("['").slice(-1)[0];
shortField = (shortField.length<charlength?shortField:shortField.slice(0,charlength)+'...');
var commentHTMLescape=editor.HTMLescape(comment);
var shortCommentHTMLescape=(comment.length<charlength?commentHTMLescape:editor.HTMLescape(comment.slice(0,charlength))+'...');
var outstr=['<tr id="',guid,'"><td title="',field,'">',shortField,'</td>',
'<td title="',commentHTMLescape,'">',shortCommentHTMLescape,'</td>',
'<td><div class="etableInputDiv">',editor_mode.objToTd(thiseval,comment,field),'</div></td></tr>\n',
];
return [outstr.join(''),guid];
}
editor_mode.prototype.objToTd = function(thiseval,comment,field){
if( comment.indexOf('$select') != -1){
var evalstr = comment.split('$select')[1].split('$end')[0];
var values = eval(evalstr)['values'];
var outstr = ['<select>\n',"<option value='",JSON.stringify(thiseval),"'>",JSON.stringify(thiseval),'</option>\n'];
values.forEach(function(v){
outstr.push(["<option value='",JSON.stringify(v),"'>",JSON.stringify(v),'</option>\n'].join(''))
});
outstr.push('</select>');
return outstr.join('');
} else if( comment.indexOf('$input') != -1){
return ["<input spellcheck='false' value='",JSON.stringify(thiseval),"'/>\n"].join('');
} else {
//rows='",rows,"'
var num = 0;//editor_mode.indent(field);
return ["<textarea spellcheck='false' >",JSON.stringify(thiseval,null,num),'</textarea>\n'].join('');
}
}
editor_mode.prototype.indent = function(field){
var num = '\t';
if(field.indexOf("['main']")===0)return 0;

View File

@ -31,6 +31,7 @@ editor_multi.isString=false;
editor_multi.lintAutocomplete=false;
editor_multi.show = function(){
if(typeof(selectBox)!==typeof(undefined))selectBox.isSelected = false;
var valueNow = codeEditor.getValue();
//try{eval('function _asdygakufyg_() { return '+valueNow+'\n}');editor_multi.lintAutocomplete=true;}catch(ee){}
if(valueNow.slice(0,8)==='function')editor_multi.lintAutocomplete=true;
@ -49,7 +50,7 @@ editor_multi.toggerLint = function() {
}
editor_multi.indent = function(field){
if(editor && editor.mode && editor.mode.indent)return editor.mode.indent(field);
if(typeof(editor)!==typeof(undefined) && editor && editor.mode && editor.mode.indent)return editor.mode.indent(field);
return '\t';
}