Changeset 1912838
- Timestamp:
- 07/21/2018 06:10:37 PM (8 years ago)
- Location:
- code-editor-and-compiler/trunk
- Files:
-
- 3 edited
-
admin/js/editor-handler.js (modified) (12 diffs)
-
common/js/include.js (modified) (2 diffs)
-
public/js/editor-handler-public.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
code-editor-and-compiler/trunk/admin/js/editor-handler.js
r1904276 r1912838 282 282 cdbx_editor_js.clearSelection(); 283 283 284 if (cdbx_linesHighlight) cdbx_appendHighlightedLines(); 285 cdbx_editor.getSession().selection.on('changeSelection', function(e) { 286 var selectionRange = cdbx_editor.getSelectionRange(); 287 var startLine = parseInt(selectionRange.start.row) + 1; 288 var endLine = parseInt(selectionRange.end.row) + 1; 289 //var content = cdbx_editor.session.getTextRange(selectionRange); 290 //console.log(startLine + ',' + endLine); 291 $(CDBX_LINES_HIGHLIGHT_NOW).html(startLine + '-' + endLine); 292 $(CDBX_SELECT_LINES).css('display', 'inline'); 293 }); 294 284 295 cdbx_setModeWeb(); 285 296 cdbx_setTheme(); … … 349 360 } 350 361 initEditorDialog(); 362 cdbx_linesHighlight = null; 351 363 $(CDBX_EDITOR_DIALOG).dialog(CDBX_EVENT_OPEN); 352 364 pref_loaded = true; 353 cdbx_closeDummyDialog(); 365 cdbx_closeDummyDialog(); 354 366 } 355 367 }); … … 360 372 } 361 373 initEditorDialog(); 374 cdbx_linesHighlight = null; 362 375 $(CDBX_EDITOR_DIALOG).dialog(CDBX_EVENT_OPEN); 363 376 } … … 447 460 var lang_id = cdbx_curLangId.toString(); 448 461 var file_name = $(CDBX_FILENAME).val(); 449 var prefix = '<pre id="' + pre_id + '"' + ' class="prettyprint" style="padding:10px;border:1px solid rgba(231, 231, 230, 1);border-radius:10px;background-color:#FFFFFF;font-size:13px;">'; 462 var highlight = cdbx_linesHighlight ? cdbx_linesHighlight : ''; 463 464 var prefix = '<pre id="' + pre_id + '"' + 'data-highlight="' + highlight + '"' + ' class="prettyprint" style="padding:10px;border:1px solid rgba(231, 231, 230, 1);border-radius:10px;background-color:#FFFFFF;font-size:13px;">'; 450 465 451 466 var suffix = ''; … … 455 470 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:60px;max-width:150px;padding:4px;font-weight:normal;outline:none;display:none;"' + 456 471 'type="" value="Run" data-code="' + pre_id + '"' + 472 'data-highlight="' + highlight + '"' + 457 473 'data-lang="' + lang_id + '"' + 'data-filename="' + file_name + '" /><br></pre><br>'; 458 474 } else { … … 461 477 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:60px;max-width:150px;padding:4px;font-weight:normal;outline:none;display:none;"' + 462 478 'type="button" value="Run" data-code="' + pre_id + '"' + 479 'data-highlight="' + highlight + '"' + 463 480 'data-lang="' + lang_id + '"' + 'data-filename="' + file_name + '" /><br></pre><br>'; 464 481 } … … 526 543 var html_suffix = '<input id="' + input_id + '"' + 527 544 'class="cdbx-try-code-web cdbx-btn-main"' + 528 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:110px;max-width:220px;padding:4px;font-weight:normal;outline:none; "' +545 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:110px;max-width:220px;padding:4px;font-weight:normal;outline:none;display:none;"' + 529 546 'type="button" value="Run HTML" data-code="' + pre_id + '"' + 530 547 '" /></pre>'; … … 533 550 'class="cdbx-try-code-web cdbx-btn-main"' + 534 551 'type="button" value="Run CSS" data-code="' + pre_id + '"' + 535 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:110px;max-width:220px;padding:4px;font-weight:normal;outline:none; "' +552 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:110px;max-width:220px;padding:4px;font-weight:normal;outline:none;display:none"' + 536 553 '" /></pre>'; 537 554 … … 539 556 'class="cdbx-try-code-web cdbx-btn-main"' + 540 557 'type="button" value="Run Javascript" data-code="' + pre_id + '"' + 541 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:110px;max-width:220px;padding:4px;font-weight:normal;outline:none "' +558 'style="background-color:#FFFFFF;margin-bottom:0;color:#008B8B;border: 1px solid rgba(231, 231, 230, 1); border-radius: 10px;font-size:13px;height:30px;min-width:110px;max-width:220px;padding:4px;font-weight:normal;outline:none;display:none;"' + 542 559 '" /></pre>'; 543 560 … … 916 933 $(CDBX_TABS_PLACEHOLDER).css('display', 'none'); 917 934 }); 935 936 $(CDBX_CODE_LINES_HIGHLIGHT).live(CDBX_EVENT_CLICK, function (e) { 937 e.preventDefault(); 938 if ($(CDBX_CODE_LINES_HIGHLIGHT_AREA).css('display') == 'block') { 939 $(CDBX_CODE_LINES_HIGHLIGHT_AREA).css('display', 'none'); 940 } else { 941 $(CDBX_CODE_LINES_HIGHLIGHT_AREA).css('display', 'block'); 942 } 943 }); 944 945 $(CDBX_SELECT_LINES).live(CDBX_EVENT_CLICK, function (e) { 946 var selectedLines = $(CDBX_LINES_HIGHLIGHT_NOW).text(); 947 if (cdbx_linesHighlight) { 948 if (!cdbx_detectDuplicateOverlapHighlight(selectedLines)) { 949 cdbx_linesHighlight += ',' + selectedLines; 950 } 951 } else { 952 cdbx_linesHighlight = selectedLines; 953 } 954 955 cdbx_appendHighlightedLines(); 956 cdbx_editor.clearSelection(); 957 }); 958 959 $(CDBX_REMOVE_HIGHLIGHT_LINES).live(CDBX_EVENT_CLICK, function (e) { 960 var idx = parseInt($(this).attr('id').split('@')[1]); 961 var linesGroup = cdbx_linesHighlight.split(','); 962 linesGroup.splice(idx, 1); 963 var linestr = ''; 964 for (var i = 0; i < linesGroup.length; i++) { 965 linestr += linesGroup[i]; 966 if (i != linesGroup.length - 1) { 967 linestr += ','; 968 } 969 } 970 cdbx_linesHighlight = linestr; 971 cdbx_appendHighlightedLines(); 972 }); 973 974 var cdbx_appendHighlightedLines = function () { 975 $(CDBX_LINES_HIGHLIGHTED_HIDDEN).html(cdbx_linesHighlight); 976 if (!cdbx_linesHighlight || cdbx_linesHighlight.length == 0) { 977 $(CDBX_LINES_HIGHLIGHTED).html(cdbx_linesHighlight); 978 return; 979 } 980 var linesGroup = cdbx_linesHighlight.split(','); 981 var currentHighlights = ''; 982 for (var i = 0; i < linesGroup.length; i++) { 983 currentHighlights += 984 '<span> \ 985 <a id="cdbx_remove_highlight@' + i + '" class="cdbx-remove-highlight-lines" style="cursor:pointer;" title="Remove highlight"> \ 986 <span class="dashicons dashicons-no"></span> ' + '<span style="margin-top:0.5em">' + linesGroup[i] + '</span>' + 987 '</button> \ 988 </span>'; 989 currentHighlights += ' '; 990 } 991 $(CDBX_LINES_HIGHLIGHTED).html(currentHighlights); 992 }; 993 994 var cdbx_detectDuplicateOverlapHighlight = function (selectedLines) { 995 var linesGroup = cdbx_linesHighlight.split(','); 996 for (var i = 0; i < linesGroup.length; i++) { 997 if (selectedLines == linesGroup[i]) { 998 alert('Duplicate highlight range !!!'); 999 return true; 1000 } 1001 } 1002 return false; 1003 }; 918 1004 919 1005 $(document).live(CDBX_EVENT_EDITOR_INIT, function( event, editor ) { … … 933 1019 cdbx_curLangId = run_btn_elem.dataset.lang; 934 1020 cdbx_progName = run_btn_elem.dataset.filename; 1021 cdbx_linesHighlight = null; 1022 if (run_btn_elem.dataset.highlight && run_btn_elem.dataset.highlight.length > 0) { 1023 cdbx_linesHighlight = run_btn_elem.dataset.highlight; 1024 } 935 1025 936 1026 var postLoadSetup = function () { … … 1284 1374 </button> \ 1285 1375 </div> \ 1376 <div> \ 1377 <p><a id="cdbx-code-lines-highlight" style="cursor:pointer" title="Selected lines will be highlighted with different background color in public view"><u>Highlight lines</u></a></p> \ 1378 <div id="cdbx-code-lines-highlight-area" style="display:none"> \ 1379 <div id="cdbx-lines-highlighted-hidden" style="display:none"></div> \ 1380 <div id="cdbx-lines-highlighted"></div> \ 1381 <p style="font-size:0.8em;color:#008B8B">Select lines to be highlighted in the editor</p> \ 1382 <span id="cdbx-lines-highlight-now"></span> \ 1383 <span> \ 1384 <button type="button" id="cdbx-select-lines" style="cursor:pointer;display:none;"> \ 1385 <span class="dashicons dashicons-yes"></span> \ 1386 </button> \ 1387 </span> \ 1388 </div> \ 1389 </div> \ 1286 1390 <div id="cdbx-div-output" style="width:98%"> \ 1287 1391 Output Appears Here ... \ -
code-editor-and-compiler/trunk/common/js/include.js
r1904276 r1912838 105 105 var CDBX_PREF_THEME = '#cdbx-pref-theme'; 106 106 107 var CDBX_CODE_LINES_HIGHLIGHT = '#cdbx-code-lines-highlight'; 108 var CDBX_CODE_LINES_HIGHLIGHT_AREA = '#cdbx-code-lines-highlight-area'; 109 var CDBX_LINES_HIGHLIGHTED = '#cdbx-lines-highlighted'; 110 var CDBX_LINES_HIGHLIGHTED_HIDDEN = '#cdbx-lines-highlighted-hidden'; 111 var CDBX_LINES_HIGHLIGHT_NOW = '#cdbx-lines-highlight-now'; 112 var CDBX_SELECT_LINES = '#cdbx-select-lines'; 113 var CDBX_REMOVE_HIGHLIGHT_LINES = '.cdbx-remove-highlight-lines'; 114 107 115 var cdbx_languages = [ 108 116 { id: 0, name: 'C', mode: 'ace/mode/c_cpp', ext: '.c' }, … … 165 173 var cdbx_run_btn_status = 1; 166 174 var cdbx_linenum_status = 1; 175 var cdbx_linesHighlight = null; 167 176 var cdbx_curThemePrefId = CDBX_THEME_XCODE; 168 177 var cdbx_curThemeId = CDBX_THEME_XCODE; -
code-editor-and-compiler/trunk/public/js/editor-handler-public.js
r1904276 r1912838 14 14 return true; 15 15 } 16 return false; 16 return false; 17 }; 18 19 var cdbx_lineHighlight = function (cdbx_codeElem) { 20 var elem = document.getElementById(cdbx_codeElem.id); 21 if (cdbx_codeElem.getAttribute('class') != 'prettyprint') return; 22 var highlightedLines = ''; 23 if (elem && elem.dataset && elem.dataset.highlight) { 24 highlightedLines = elem.dataset.highlight; 25 } 26 if (highlightedLines.length == 0) return; 27 var myCodeStr = cdbx_codeElem.innerHTML; 28 var codeLineArray = myCodeStr.split('\n'); 29 var newCodeStr = ''; 30 var highlightArray = highlightedLines.split(','); 31 for (var i = 0; i < highlightArray.length; i++) { 32 var lineRange = highlightArray[i].split('-'); 33 var start = parseInt(lineRange[0]); 34 var end = parseInt(lineRange[1]); 35 for (var j = start - 1; j < end; j++) { 36 codeLineArray[j] = '<span style="background-color:rgba(240, 240, 240, 1);">' + codeLineArray[j] + '</span>'; 37 } 38 } 39 for (var i = 0; i < codeLineArray.length; i++) { 40 newCodeStr += codeLineArray[i] + '\n'; 41 } 42 cdbx_codeElem.innerHTML = newCodeStr; 17 43 }; 18 44 … … 20 46 var cdbx_preElems = document.getElementsByTagName("PRE"); 21 47 for (var i = 0; i < cdbx_preElems.length; i++) { 48 cdbx_lineHighlight(cdbx_preElems[i]); 22 49 if (cdbx_isCrayonHighlighterPresent(cdbx_preElems[i])) { 23 50 cdbx_preElems[i].classList.add('prettyprint');
Note: See TracChangeset
for help on using the changeset viewer.