2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-15 16:19:11 +00:00

codemirror.js: fix textfield-long patch (Forum #33226)

git-svn-id: https://svn.fhem.de/fhem/trunk@7882 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2015-02-05 10:37:34 +00:00
parent 7e4c9a6123
commit 618e57e1dc
2 changed files with 32 additions and 15 deletions

View File

@ -1,4 +1,4 @@
var cm_loaded = 0, cm_editor; var cm_loaded = 0;
$(document).ready(function(){ $(document).ready(function(){
var els = document.getElementsByTagName("textarea"); var els = document.getElementsByTagName("textarea");
@ -11,7 +11,7 @@ $(document).ready(function(){
if(oc) { if(oc) {
$(this).attr("onclick", oc+ $(this).attr("onclick", oc+
's=document.getElementById("edit").getElementsByTagName("textarea");'+ 's=document.getElementById("edit").getElementsByTagName("textarea");'+
'if(!s[0].editor) s[0].editor=AddCodeMirror(s[0]);'); 'if(!s[0].editor) { s[0].editor=true; AddCodeMirror(s[0]);}');
} }
}); });
} else { } else {
@ -20,19 +20,23 @@ $(document).ready(function(){
}); });
function function
AddCodeMirror(e) AddCodeMirror(e, cb)
{ {
cm_editor = e; if(cm_loaded == 4)
return cm_wait(e, cb);
loadLink("codemirror/codemirror.css"); loadLink("codemirror/codemirror.css");
loadLink("codemirror/show-hint.css"); loadLink("codemirror/show-hint.css");
loadScript("codemirror/codemirror.js", function(){cm_loaded++;} ); loadScript("codemirror/codemirror.js", function(){ cm_loaded++;} );
loadScript("codemirror/closebrackets.js",function(){cm_loaded++;} ); loadScript("codemirror/closebrackets.js",function(){ cm_loaded++;} );
loadScript("codemirror/matchbrackets.js",function(){cm_loaded++;} ); loadScript("codemirror/matchbrackets.js",function(){ cm_loaded++;} );
loadScript("codemirror/show-hint.js", function(){cm_loaded++;cm_wait()}); loadScript("codemirror/show-hint.js", function(){
cm_loaded++;
cm_wait(e, cb);
});
} }
function function
cm_wait() cm_wait(cm_editor, callback)
{ {
if(cm_loaded != 4) { if(cm_loaded != 4) {
setTimeout(cm_wait, 10); setTimeout(cm_wait, 10);
@ -67,6 +71,8 @@ cm_wait()
loadScript("codemirror/"+type+".js", function(){ loadScript("codemirror/"+type+".js", function(){
log("Calling CodeMirror"); log("Calling CodeMirror");
CodeMirror.fromTextArea(cm_editor, attr); var cm = CodeMirror.fromTextArea(cm_editor, attr);
if(callback)
callback(cm);
}); });
} }

View File

@ -575,11 +575,15 @@ FW_createTextField(elName, devName, vArr, currVal, set, params, cmd)
$(inp).attr('name', elName); $(inp).attr('name', elName);
if(currVal != undefined) if(currVal != undefined)
$(inp).val(currVal); $(inp).val(currVal);
if(cmd)
$(inp).blur(function() { cmd($(inp).val()) }); function addBlur() { if(cmd) $(inp).blur(function() { cmd($(inp).val()) }); };
newEl.setValueFn = function(arg){ $(inp).val(arg) }; newEl.setValueFn = function(arg){ $(inp).val(arg) };
addBlur();
var myFunc = function(){ var myFunc = function(){
$(inp).unbind("blur");
$('body').append( $('body').append(
'<div id="editdlg" style="display:none">'+ '<div id="editdlg" style="display:none">'+
'<textarea id="td_longText" rows="25" cols="60" style="width:99%"/>'+ '<textarea id="td_longText" rows="25" cols="60" style="width:99%"/>'+
@ -587,18 +591,25 @@ FW_createTextField(elName, devName, vArr, currVal, set, params, cmd)
$("#td_longText").val($(inp).val()); $("#td_longText").val($(inp).val());
if( typeof AddCodeMirror == 'function' ) var cm;
AddCodeMirror($("#td_longText").get(0)); if( typeof AddCodeMirror == 'function' )
AddCodeMirror($("#td_longText").get(0), function(pcm) {cm = pcm;});
$('#editdlg').dialog( $('#editdlg').dialog(
{ modal:true, closeOnEscape:true, width:$(window).width()*3/4, { modal:true, closeOnEscape:true, width:$(window).width()*3/4,
maxHeight:$(window).height()*3/4, maxHeight:$(window).height()*3/4,
buttons:[ buttons:[
{ text:"Cancel", click:function(){ $('#editdlg').remove(); }}, { text:"Cancel", click:function(){
$('#editdlg').remove();
addBlur();
}},
{ text:"OK", click:function(){ { text:"OK", click:function(){
if(cm)
$("#td_longText").val(cm.getValue());
var res=$("#td_longText").val(); var res=$("#td_longText").val();
$('#editdlg').remove(); $('#editdlg').remove();
$(inp).val(res); $(inp).val(res);
addBlur();
}}]}); }}]});
}; };