2017-07-10 09:54:14 -07:00

69 lines
1.9 KiB
JavaScript

import Ember from 'ember';
export default Ember.Component.extend({
random: Math.floor(Math.random() * 10000),
content: Ember.computed({
get: function () {
if (!this.editor) {
return undefined;
}
if (arguments.length == 1) {
return this.editor.getSession().getValue();
}
return undefined;
},
set: function (key, val) {
if (!this.editor) {
this.preset = val;
return val;
}
var cursor = this.editor.getCursorPosition();
this.editor.getSession().setValue(val);
this.editor.moveCursorToPosition(cursor);
return val;
}
}),
didInsertElement: function () {
this.editor = window.ace.edit(this.random + '_editor');
this.editor.$blockScrolling = Infinity;
this.editor.setTheme('ace/theme/github');
this.editor.getSession().setMode('ace/mode/sql');
this.editor.setReadOnly(false);
var self = this;
this.editor.on('change', function () {
self.notifyPropertyChange('content');
});
if (this.preset) {
this.set('content', this.preset);
this.preset = null;
}
},
actions: {
save: function () {
var url = this.get('savePath');
url = url.replace(/\{.\w+\}/, this.get('itemId'))
var method = 'POST';
var token = $("#csrfToken").val().replace('/', '');
var data = {"csrfToken": token};
data[this.get('saveParam')] = this.editor.getSession().getValue()
$.ajax({
url: url,
method: method,
headers: {
'Csrf-Token': token
},
dataType: 'json',
data: data
}).done(function (data, txt, xhr) {
if (data && data.status && data.status != "success") {
Notify.toast("Failed to update data", "Failed to update data within editor", "error")
}
}).fail(function (xhr, txt, err) {
Notify.toast("Failed to update data", "Failed to update data within editor", "error")
})
}
}
});