').addClass("expression-preview-table-wrapper").appendTo(elmt))[0];
var renderEntry = function(self,tr,entry) {
$(tr).empty();
var o = Scripting.parse(entry.code);
$('
')
.addClass(entry.starred ? "data-table-star-on" : "data-table-star-off")
.appendTo(tr.insertCell(0))
.click(function() {
$.post(
"/command/core/toggle-starred-expression",
{ expression: entry.code },
function(data) {
entry.starred = !entry.starred;
renderEntry(self,tr,entry);
self._renderStarredExpressionsTab();
},
"json"
);
});
$('
Reuse').appendTo(tr.insertCell(1)).click(function() {
self._elmts.expressionPreviewTextarea[0].value = o.expression;
self._elmts.expressionPreviewLanguageSelect[0].value = o.language;
$("#expression-preview-tabs").tabs('option', 'selected', 0);
self._elmts.expressionPreviewTextarea.select().focus();
self.update();
});
$(tr.insertCell(2)).html(entry.global ? "Other projects" : "This project");
$(tr.insertCell(3)).text(o.language + ":");
$(tr.insertCell(4)).text(o.expression);
};
for (var i = 0; i < data.expressions.length; i++) {
var tr = table.insertRow(table.rows.length);
var entry = data.expressions[i];
renderEntry(self,tr,entry);
}
};
ExpressionPreviewDialog.Widget.prototype._renderStarredExpressionsTab = function() {
var self = this;
$.getJSON(
"/command/core/get-starred-expressions",
null,
function(data) {
self._renderStarredExpressions(data);
},
"json"
);
};
ExpressionPreviewDialog.Widget.prototype._renderStarredExpressions = function(data) {
var self = this;
var elmt = this._elmts.expressionPreviewStarredContainer.empty().width(this._tabContentWidth);
var table = $(
'
'
).appendTo($('
').addClass("expression-preview-table-wrapper").appendTo(elmt))[0];
var renderEntry = function(entry) {
var tr = table.insertRow(table.rows.length);
var o = Scripting.parse(entry.code);
$('
Remove').appendTo(tr.insertCell(0)).click(function() {
$.post(
"/command/core/toggle-starred-expression",
{ expression: entry.code, returnList: true },
function(data) {
self._renderStarredExpressions(data);
self._renderExpressionHistoryTab();
},
"json"
);
});
$('
Reuse').appendTo(tr.insertCell(1)).click(function() {
self._elmts.expressionPreviewTextarea[0].value = o.expression;
self._elmts.expressionPreviewLanguageSelect[0].value = o.language;
$("#expression-preview-tabs").tabs('option', 'selected', 0);
self._elmts.expressionPreviewTextarea.select().focus();
self.update();
});
$(tr.insertCell(2)).text(o.language + ":");
$(tr.insertCell(3)).text(o.expression);
};
for (var i = 0; i < data.expressions.length; i++) {
var entry = data.expressions[i];
renderEntry(entry);
}
};
ExpressionPreviewDialog.Widget.prototype._scheduleUpdate = function() {
if (this._timerID !== null) {
window.clearTimeout(this._timerID);
}
var self = this;
this._timerID = window.setTimeout(function() { self.update(); }, 300);
};
ExpressionPreviewDialog.Widget.prototype.update = function() {
var self = this;
var expression = this.expression = $.trim(this._elmts.expressionPreviewTextarea[0].value);
var params = {
project: theProject.id,
expression: this._getLanguage() + ":" + expression,
cellIndex: this._cellIndex
};
this._prepareUpdate(params);
$.post(
"/command/core/preview-expression?" + $.param(params),
{
rowIndices: JSON.stringify(this._rowIndices)
},
function(data) {
if (data.code != "error") {
self._results = data.results;
} else {
self._results = null;
}
self._renderPreview(expression, data);
},
"json"
);
};
ExpressionPreviewDialog.Widget.prototype._prepareUpdate = function(params) {
};
ExpressionPreviewDialog.Widget.prototype._renderPreview = function(expression, data) {
var container = this._elmts.expressionPreviewPreviewContainer.empty().width(this._tabContentWidth);
var table = $('
').appendTo(
$('
').addClass("expression-preview-table-wrapper").appendTo(container))[0];
var tr = table.insertRow(0);
$(tr.insertCell(0)).addClass("expression-preview-heading").text("row");
$(tr.insertCell(1)).addClass("expression-preview-heading").text("value");
$(tr.insertCell(2)).addClass("expression-preview-heading").text(expression);
var renderValue = function(td, v) {
if (v !== null && v !== undefined) {
if ($.isPlainObject(v)) {
$('').addClass("expression-preview-special-value").text("Error: " + v.message).appendTo(td);
} else {
td.text(v);
}
} else {
$('null').addClass("expression-preview-special-value").appendTo(td);
}
};
if (this._results !== null) {
this._elmts.expressionPreviewParsingStatus.empty().removeClass("error").text("No syntax error.");
} else {
var message = (data.type == "parser") ? data.message : "Internal error";
this._elmts.expressionPreviewParsingStatus.empty().addClass("error").text(message);
}
for (var i = 0; i < this._values.length; i++) {
var tr = table.insertRow(table.rows.length);
$(tr.insertCell(0)).attr("width", "1%").html((this._rowIndices[i] + 1) + ".");
renderValue($(tr.insertCell(1)).addClass("expression-preview-value"), this._values[i]);
var tdValue = $(tr.insertCell(2)).addClass("expression-preview-value");
if (this._results !== null) {
var v = this._results[i];
renderValue(tdValue, v);
}
}
};