mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-07 19:04:20 +00:00
codemirror: update
git-svn-id: https://svn.fhem.de/fhem/trunk@27535 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
baccd791f4
commit
1ba6d21ef1
File diff suppressed because one or more lines are too long
@ -233,6 +233,35 @@ CodeMirror.defineMode("fhem",function(){
|
|||||||
'$[' : 5,
|
'$[' : 5,
|
||||||
'$OLD_PERL_VERSION' : 5,
|
'$OLD_PERL_VERSION' : 5,
|
||||||
'$]' : 5,
|
'$]' : 5,
|
||||||
|
'$_blockingcalls' : 5,
|
||||||
|
'$SELF' : 5,
|
||||||
|
'$cmd' : 5,
|
||||||
|
'$DEVICE' : 5,
|
||||||
|
'$device' : 5,
|
||||||
|
'$EVENT' : 5,
|
||||||
|
'$event' : 5,
|
||||||
|
'$EVENTS' : 5,
|
||||||
|
'$events' : 5,
|
||||||
|
'$number' : 5,
|
||||||
|
'$name' : 5,
|
||||||
|
'$TYPE' : 5,
|
||||||
|
'$STATE' : 5,
|
||||||
|
'$room' : 5,
|
||||||
|
'$group' : 5,
|
||||||
|
'$week' : 5,
|
||||||
|
'$hm' : 5,
|
||||||
|
'$md' : 5,
|
||||||
|
'$ymd' : 5,
|
||||||
|
'$twe' : 5,
|
||||||
|
'$TABLE' : 5,
|
||||||
|
'$TD' : 5,
|
||||||
|
'$TR' : 5,
|
||||||
|
'$TC' : 5,
|
||||||
|
'$TPL' : 5,
|
||||||
|
'$ATTRIBUTESFIRST' : 5,
|
||||||
|
'$SHOWNOSTATE' : 5,
|
||||||
|
'$SHOWNODEVICELINE' : 5,
|
||||||
|
'$SHOWNODEVICELINK' : 5,
|
||||||
// PERL blocks
|
// PERL blocks
|
||||||
'if' :[1,1],
|
'if' :[1,1],
|
||||||
elsif :[1,1],
|
elsif :[1,1],
|
||||||
@ -471,6 +500,11 @@ CodeMirror.defineMode("fhem",function(){
|
|||||||
notify :2,
|
notify :2,
|
||||||
set :2,
|
set :2,
|
||||||
ReadingsVal :1,
|
ReadingsVal :1,
|
||||||
|
OldReadingsVal :1,
|
||||||
|
ReadingsNum :1,
|
||||||
|
OldReadingsNum :1,
|
||||||
|
ReadingsTimestamp :1,
|
||||||
|
OldReadingsTimestamp :1,
|
||||||
Value :1,
|
Value :1,
|
||||||
fhem :1,
|
fhem :1,
|
||||||
IF :2,
|
IF :2,
|
||||||
@ -845,16 +879,26 @@ CodeMirror.commands.autocomplete = function(cm) {
|
|||||||
CodeMirror.showHint(cm, CodeMirror.hint.fhem, {async:true});
|
CodeMirror.showHint(cm, CodeMirror.hint.fhem, {async:true});
|
||||||
}
|
}
|
||||||
|
|
||||||
var keywords = ["at","attr","define","defmod","delete","deleteattr","deletereading","IF","DOIF","DOELSEIF","DOELSE","displayattr","fhem","get","getstate",
|
var keywords = ["at","attr","define","defmod","delete","deleteattr","deletereading",
|
||||||
|
"IF","DOIF","DOELSEIF","DOELSE","displayattr","fhem","get","getstate",
|
||||||
"list","modify","notify","set","setdefaultattr","setreading","setstate","trigger",
|
"list","modify","notify","set","setdefaultattr","setreading","setstate","trigger",
|
||||||
"AttrVal","OldTimestamp","OldValue","ReadingsVal","ReadingsTimestamp","Value"];
|
"AttrVal","OldTimestamp","OldValue","ReadingsVal","ReadingsNum","ReadingsTimestamp",
|
||||||
var variables = ["$defs","$hms","$hour","$isdst","$mday","$min","$month","$sec","$wday","$we","$yday","$year"];
|
"Value","set_State","get_State","set_Reading","get_Reading","set_Event","set_Exec",
|
||||||
|
"get_Exec","del_Exec","fhem_set","set_Event","set_Reading_Begin","set_Reading_Update",
|
||||||
|
"set_Reading_End","subs","init","WID","STY","PUP","IMPORT"];
|
||||||
|
|
||||||
|
var variables = ["$defs","$hms","$hour","$isdst","$mday","$min","$month","$sec","$wday",
|
||||||
|
"$we","$yday","$year",
|
||||||
|
"$_blockingcalls","$SELF","$cmd","$DEVICE","$device","$EVENT","$event","$EVENTS",
|
||||||
|
"$events","$number","$name","$TYPE","$STATE","$room","$group","$week","$hm","$md",
|
||||||
|
"$ymd","$twe","$TABLE","$TD","$TR","$TC","$TPL","$ATTRIBUTESFIRST","$SHOWNOSTATE",
|
||||||
|
"$SHOWNODEVICELINE","$SHOWNODEVICELINK"];
|
||||||
var devices = [];
|
var devices = [];
|
||||||
|
|
||||||
CodeMirror.registerHelper("hint", "fhem", function hintfhem(cm, callback, options) {
|
CodeMirror.registerHelper("hint", "fhem", function hintfhem(cm, callback, options) {
|
||||||
|
|
||||||
if( devices.length == 0 ) {
|
if( devices.length == 0 ) {
|
||||||
$.getJSON( '/fhem?cmd=jsonlist2&XHR=1', function ( data ) {
|
$.getJSON( '/fhem?cmd=jsonlist2$FW_CSRF', function ( data ) {
|
||||||
if( devices.length == 0 ) {
|
if( devices.length == 0 ) {
|
||||||
data.Results.foreach( function(k,v) {
|
data.Results.foreach( function(k,v) {
|
||||||
devices.push(v);
|
devices.push(v);
|
||||||
@ -928,7 +972,7 @@ CodeMirror.registerHelper("hint", "fhem", function hintfhem(cm, callback, option
|
|||||||
_var = getDeviceAttributes(d);
|
_var = getDeviceAttributes(d);
|
||||||
}
|
}
|
||||||
// only device readings names
|
// only device readings names
|
||||||
else if( /.*(ReadingsVal|ReadingsTimestamp)[ \t]*\([ \t]*\"([\w_\.]+)\"[ \t]*,[ \t]*\"([\w-]*)$/.test(line) ) {
|
else if( /.*(^OldReadingsVal|^OldReadingsNum|^OldReadingsTimestamp|^ReadingsVal|^ReadingsNum|^ReadingsTimestamp)[ \t]*\([ \t]*\"([\w_\.]+)\"[ \t]*,[ \t]*\"([\w-]*)$/.test(line) ) {
|
||||||
_key = _dev = _var = [];
|
_key = _dev = _var = [];
|
||||||
var device = RegExp.$2;
|
var device = RegExp.$2;
|
||||||
word = RegExp.$3;
|
word = RegExp.$3;
|
||||||
@ -937,7 +981,7 @@ CodeMirror.registerHelper("hint", "fhem", function hintfhem(cm, callback, option
|
|||||||
_var = getDeviceReadings(d);
|
_var = getDeviceReadings(d);
|
||||||
}
|
}
|
||||||
// only device names
|
// only device names
|
||||||
else if( /.*(OldTimestamp|OldValue|Value|ReadingsVal|ReadingsTimestamp|AttrVal)[ \t]*\([ \t]*\"([\w_\.]+)$/.test(line) ) {
|
else if( /.*(OldTimestamp|OldValue|Value|^OldReadingsVal|^OldReadingsNum|^OldReadingsTimestamp|^ReadingsVal|^ReadingsNum|ReadingsTimestamp|AttrVal)[ \t]*\([ \t]*\"([\w_\.]+)$/.test(line) ) {
|
||||||
_key = _var = [];
|
_key = _var = [];
|
||||||
word = RegExp.$2;
|
word = RegExp.$2;
|
||||||
start = end - word.length;
|
start = end - word.length;
|
||||||
|
@ -6,6 +6,7 @@ var cm_attr = {
|
|||||||
matchBrackets: true,
|
matchBrackets: true,
|
||||||
foldGutter: false,
|
foldGutter: false,
|
||||||
autoRefresh: true,
|
autoRefresh: true,
|
||||||
|
fullScreen: false,
|
||||||
search: true,
|
search: true,
|
||||||
comment: true,
|
comment: true,
|
||||||
autocomplete: true,
|
autocomplete: true,
|
||||||
@ -141,7 +142,17 @@ function AddCodeMirror(e, cb) {
|
|||||||
$("head").append('<style type="text/css">.CodeMirror {height:' + cm_attr.height + 'px;}');
|
$("head").append('<style type="text/css">.CodeMirror {height:' + cm_attr.height + 'px;}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (cm_attr.fullScreen) {
|
||||||
|
cm_active++;
|
||||||
|
loadLink("codemirror/fullscreen.css");
|
||||||
|
loadScript("codemirror/fullscreen.js", function(){cm_loaded++;} );
|
||||||
|
cm_attr.extraKeys['F10'] = function(cm) {
|
||||||
|
cm.setOption("fullScreen", !cm.getOption("fullScreen"));
|
||||||
|
}
|
||||||
|
cm_attr.extraKeys['Esc'] = function(cm) {
|
||||||
|
if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
|
||||||
|
}
|
||||||
|
}
|
||||||
// get the type from hidden filename extension, load the type-file.js, theme.css and call cm_wait
|
// get the type from hidden filename extension, load the type-file.js, theme.css and call cm_wait
|
||||||
var ltype;
|
var ltype;
|
||||||
$("input[name=save]").each(function() {
|
$("input[name=save]").each(function() {
|
||||||
|
6
fhem/www/codemirror/fullscreen.css
Normal file
6
fhem/www/codemirror/fullscreen.css
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
.CodeMirror-fullscreen {
|
||||||
|
position: fixed;
|
||||||
|
top: 0; left: 0; right: 0; bottom: 0;
|
||||||
|
height: auto;
|
||||||
|
z-index: 9;
|
||||||
|
}
|
41
fhem/www/codemirror/fullscreen.js
Normal file
41
fhem/www/codemirror/fullscreen.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
||||||
|
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
||||||
|
|
||||||
|
(function(mod) {
|
||||||
|
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
||||||
|
mod(require("../../lib/codemirror"));
|
||||||
|
else if (typeof define == "function" && define.amd) // AMD
|
||||||
|
define(["../../lib/codemirror"], mod);
|
||||||
|
else // Plain browser env
|
||||||
|
mod(CodeMirror);
|
||||||
|
})(function(CodeMirror) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {
|
||||||
|
if (old == CodeMirror.Init) old = false;
|
||||||
|
if (!old == !val) return;
|
||||||
|
if (val) setFullscreen(cm);
|
||||||
|
else setNormal(cm);
|
||||||
|
});
|
||||||
|
|
||||||
|
function setFullscreen(cm) {
|
||||||
|
var wrap = cm.getWrapperElement();
|
||||||
|
cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,
|
||||||
|
width: wrap.style.width, height: wrap.style.height};
|
||||||
|
wrap.style.width = "";
|
||||||
|
wrap.style.height = "auto";
|
||||||
|
wrap.className += " CodeMirror-fullscreen";
|
||||||
|
document.documentElement.style.overflow = "hidden";
|
||||||
|
cm.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
function setNormal(cm) {
|
||||||
|
var wrap = cm.getWrapperElement();
|
||||||
|
wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, "");
|
||||||
|
document.documentElement.style.overflow = "";
|
||||||
|
var info = cm.state.fullScreenRestore;
|
||||||
|
wrap.style.width = info.width; wrap.style.height = info.height;
|
||||||
|
window.scrollTo(info.scrollLeft, info.scrollTop);
|
||||||
|
cm.refresh();
|
||||||
|
}
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user