Dateiverwaltung für die WebBox
ulrich
2017-03-14 3b7c5b1214f19a70bdaa89b1c518a11ff1a55e03
web/ui/ui.js
@@ -31,6 +31,7 @@
var loc;
var PERS_DIR = "Persoenlich";
var PUB_DIR = "Oeffentlich";
var compilerIssues;
function fm_init() {
  $("#mce-editor").hide();
@@ -281,9 +282,24 @@
  var liste = fm_gewaehlte_dateien();
  var m = '?c=de.uhilger.filecms.api.CompileService&m=compile&p=' + pfad + '&p=' + encodeURIComponent(liste);
  var u = '../svc' + m;
  fm_get(u, "text", function(resp) {
    console.log('compile gab folgendes zurueck: ');
    console.log(resp);
  fm_get(u, "json", function(resp) {
    cm.clearGutter("breakpoints");
    if(resp.List[0].CompilerIssue !== undefined) {
      if(resp.List[0].CompilerIssue instanceof Array) {
        var issueNo = 0;
        while(issueNo < resp.List[0].CompilerIssue.length) {
          // console.log(resp.List[0].CompilerIssue[issueNo].kind);
          // console.log(resp.List[0].CompilerIssue[issueNo].lineNumber);
          // console.log(resp.List[0].CompilerIssue[issueNo].sourceName);
          // console.log(resp.List[0].CompilerIssue[issueNo].message);
          fm_set_code_marker(resp.List[0].CompilerIssue[issueNo].lineNumber, resp.List[0].CompilerIssue[issueNo].kind + ' ' + resp.List[0].CompilerIssue[issueNo].message);
          issueNo++;
        }
      } else {
        fm_set_code_marker(resp.List[0].CompilerIssue.lineNumber, resp.List[0].CompilerIssue.kind + ' ' + resp.List[0].CompilerIssue.message);
      }
    }
  });
}
@@ -843,6 +859,7 @@
function fm_code_edit(content, m) {
  cm = CodeMirror.fromTextArea(document.getElementById("editspace"), {
    lineNumbers: true,
    gutters: ["CodeMirror-linenumbers", "breakpoints"],
    mode: m,
    viewportMargin : Infinity,
    tabSize: 2,
@@ -852,6 +869,20 @@
      },
        "Esc": function(cm) {
        if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
      },
        ".": function(cm) {
        console.log('dot pressed: perhaps look up class or method name');
        /*
         * Hier kann man eine Funktion ausloesen, die fuer das
         * Wort vor dem Punkt (Name der Klasse) eine Liste mit
         * Vorschlaegen fuer Methodennamen einblendet.
         */
        /*
         * CodeMirror.Pass laesst das Zeichen zum Editorinhalt durch,
         * verhindert aber das Ausloesen von 'keyHandled'
         */
        return CodeMirror.Pass;
      }
    }
  });
@@ -859,6 +890,35 @@
  //cm.setValue(content);
  cm.setValue(unescapeHtml(content));
  cm.getDoc().markClean();
  cm.on("gutterClick", function(theEditor, lineNumber) {
    var info = theEditor.lineInfo(lineNumber);
    //--lineNumber;
    //console.log(info.gutterMarkers.breakpoints.message);
    //var marker = info.gutterMarkers.breakpoints;
    //$(marker).tooltip('toggle');
  });
  /*
  cm.on("keyHandled", function(theEditor, keyName, event){
    console.log('cm.keyHandled keyName: ' + keyName + ', event.type: ' + event.type);
  });
  */
}
function fm_set_code_marker(lineNumber, message) {
 cm.setGutterMarker(lineNumber-1, "breakpoints", makeMarker(message));
}
function makeMarker(msg) {
  var marker = document.createElement("div");
  marker.style.color = "#822";
  marker.innerHTML = "●";
  //marker.message = msg;
  $(marker).tooltip({
    placement: 'right',
    title: msg,
    offset: '0 -30'
  });
  return marker;
}