@@ -2,3 +2,7 @@ |
||
| 2 | 2 |
#= require ace/mode-javascript.js |
| 3 | 3 |
#= require ace/mode-markdown.js |
| 4 | 4 |
#= require ace/mode-coffee.js |
| 5 |
+#= require ace/mode-sql.js |
|
| 6 |
+#= require ace/mode-json.js |
|
| 7 |
+#= require ace/mode-yaml.js |
|
| 8 |
+#= require ace/mode-text.js |
@@ -177,20 +177,28 @@ class @AgentEditPage |
||
| 177 | 177 |
buildAce: -> |
| 178 | 178 |
$(".ace-editor").each ->
|
| 179 | 179 |
unless $(this).data('initialized')
|
| 180 |
- $(this).data('initialized', true)
|
|
| 181 |
- $source = $($(this).data('source')).hide()
|
|
| 180 |
+ $this = $(this) |
|
| 181 |
+ $this.data('initialized', true)
|
|
| 182 |
+ $source = $($this.data('source')).hide()
|
|
| 182 | 183 |
editor = ace.edit(this) |
| 183 |
- $(this).data('ace-editor', editor)
|
|
| 184 |
+ $this.data('ace-editor', editor)
|
|
| 184 | 185 |
session = editor.getSession() |
| 185 | 186 |
session.setTabSize(2) |
| 186 | 187 |
session.setUseSoftTabs(true) |
| 187 | 188 |
session.setUseWrapMode(false) |
| 188 | 189 |
|
| 189 | 190 |
setSyntax = -> |
| 190 |
- switch $("[name='agent[options][language]']").val()
|
|
| 191 |
- when 'JavaScript' then session.setMode("ace/mode/javascript")
|
|
| 192 |
- when 'CoffeeScript' then session.setMode("ace/mode/coffee")
|
|
| 193 |
- else session.setMode("ace/mode/text")
|
|
| 191 |
+ if mode = $this.data('mode')
|
|
| 192 |
+ session.setMode("ace/mode/" + mode)
|
|
| 193 |
+ |
|
| 194 |
+ if theme = $this.data('theme')
|
|
| 195 |
+ editor.setTheme("ace/theme/" + theme);
|
|
| 196 |
+ |
|
| 197 |
+ if mode = $("[name='agent[options][language]']").val()
|
|
| 198 |
+ switch mode |
|
| 199 |
+ when 'JavaScript' then session.setMode("ace/mode/javascript")
|
|
| 200 |
+ when 'CoffeeScript' then session.setMode("ace/mode/coffee")
|
|
| 201 |
+ else session.setMode("ace/mode/" + mode)
|
|
| 194 | 202 |
|
| 195 | 203 |
$("[name='agent[options][language]']").on 'change', setSyntax
|
| 196 | 204 |
setSyntax() |
@@ -23,7 +23,9 @@ class FormConfigurableAgentPresenter < Decorator |
||
| 23 | 23 |
@view.content_tag 'div' do |
| 24 | 24 |
@view.concat @view.text_area_tag("agent[options][#{attribute}]", value, html_options.merge(class: 'form-control', rows: 3))
|
| 25 | 25 |
if data[:ace].present? |
| 26 |
- @view.concat @view.content_tag('div', '', class: 'ace-editor', data: { source: "[name='agent[options][#{attribute}]']" })
|
|
| 26 |
+ ace_options = { source: "[name='agent[options][#{attribute}]']", mode: '', theme: ''}.deep_symbolize_keys!
|
|
| 27 |
+ ace_options.deep_merge!(data[:ace].deep_symbolize_keys) if data[:ace].is_a?(Hash) |
|
| 28 |
+ @view.concat @view.content_tag('div', '', class: 'ace-editor', data: ace_options)
|
|
| 27 | 29 |
end |
| 28 | 30 |
end |
| 29 | 31 |
when :boolean |