mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
code-editor: initial directive for rich code editor (ace)
This commit is contained in:
parent
649fe7e462
commit
e4dabb657c
@ -63,6 +63,7 @@
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"ace-builds": "^1.2.8",
|
||||
"eventemitter3": "^2.0.2",
|
||||
"gaze": "^1.1.2",
|
||||
"grunt-jscs": "3.0.1",
|
||||
|
50
public/app/core/components/code_editor/code_editor.ts
Normal file
50
public/app/core/components/code_editor/code_editor.ts
Normal file
@ -0,0 +1,50 @@
|
||||
///<reference path="../../../headers/common.d.ts" />
|
||||
|
||||
// import angular from 'angular';
|
||||
import coreModule from 'app/core/core_module';
|
||||
import ace from 'ace';
|
||||
|
||||
// Trick for loading additional modules
|
||||
ace.config.setModuleUrl("ace/theme/solarized_dark", "public/vendor/npm/ace-builds/src-noconflict/theme-solarized_dark.js");
|
||||
|
||||
let editorTemplate = `
|
||||
<div class="gf-code-editor"></div>
|
||||
`;
|
||||
|
||||
function link(scope, elem, attrs) {
|
||||
let aceElem = elem.get(0);
|
||||
let codeEditor = ace.edit(aceElem);
|
||||
let editorSession = codeEditor.getSession();
|
||||
codeEditor.setTheme("ace/theme/solarized_dark");
|
||||
codeEditor.setHighlightActiveLine(false);
|
||||
codeEditor.setShowPrintMargin(false);
|
||||
|
||||
codeEditor.setValue(scope.content);
|
||||
codeEditor.clearSelection();
|
||||
|
||||
elem.addClass("gf-code-editor");
|
||||
let textarea = elem.find("textarea");
|
||||
textarea.addClass('gf-form-input width-25');
|
||||
textarea.attr("rows", "4");
|
||||
|
||||
editorSession.on('change', e => {
|
||||
scope.$apply(() => {
|
||||
let newValue = codeEditor.getValue();
|
||||
scope.content = newValue;
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
export function codeEditorDirective() {
|
||||
return {
|
||||
restrict: 'E',
|
||||
template: editorTemplate,
|
||||
scope: {
|
||||
content: "="
|
||||
},
|
||||
link: link
|
||||
};
|
||||
}
|
||||
|
||||
coreModule.directive('codeEditor', codeEditorDirective);
|
@ -19,6 +19,7 @@ import "./directives/diff-view";
|
||||
import './jquery_extended';
|
||||
import './partials';
|
||||
import './components/jsontree/jsontree';
|
||||
import './components/code_editor/code_editor';
|
||||
|
||||
import {grafanaAppDirective} from './components/grafana_app';
|
||||
import {sideMenuDirective} from './components/sidemenu/sidemenu';
|
||||
|
5
public/app/headers/common.d.ts
vendored
5
public/app/headers/common.d.ts
vendored
@ -72,3 +72,8 @@ declare module 'd3' {
|
||||
var d3: any;
|
||||
export default d3;
|
||||
}
|
||||
|
||||
declare module 'ace' {
|
||||
var ace: any;
|
||||
export default ace;
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ System.config({
|
||||
"jquery.flot.gauge": "vendor/flot/jquery.flot.gauge",
|
||||
"d3": "vendor/d3/d3.js",
|
||||
"jquery.flot.dashes": "vendor/flot/jquery.flot.dashes",
|
||||
"ace": "vendor/npm/ace-builds/src-noconflict/ace"
|
||||
},
|
||||
|
||||
packages: {
|
||||
@ -73,5 +74,9 @@ System.config({
|
||||
format: 'global',
|
||||
exports: 'Mousetrap'
|
||||
},
|
||||
'vendor/npm/ace-builds/src-noconflict/ace.js': {
|
||||
format: 'global',
|
||||
exports: 'ace'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -77,6 +77,7 @@
|
||||
@import "components/row.scss";
|
||||
@import "components/json_explorer.scss";
|
||||
@import "components/collapse_box.scss";
|
||||
@import "components/code_editor.scss";
|
||||
|
||||
// PAGES
|
||||
@import "pages/login";
|
||||
|
13
public/sass/components/_code_editor.scss
Normal file
13
public/sass/components/_code_editor.scss
Normal file
@ -0,0 +1,13 @@
|
||||
.gf-code-editor {
|
||||
min-height: 2.60rem;
|
||||
min-width: 20rem;
|
||||
flex-grow: 1;
|
||||
margin-right: 0.25rem;
|
||||
border: 1px solid #333333;
|
||||
|
||||
&.ace_editor {
|
||||
min-height: 6rem;
|
||||
font-family: monospace;
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
@ -19,6 +19,7 @@ module.exports = function(config) {
|
||||
cwd: './node_modules',
|
||||
expand: true,
|
||||
src: [
|
||||
'ace-builds/src-noconflict/**/*',
|
||||
'eventemitter3/*.js',
|
||||
'systemjs/dist/*.js',
|
||||
'es6-promise/**/*',
|
||||
|
Loading…
Reference in New Issue
Block a user