Saiku更改導出文件的文件名
Saiku查询完数据之后,可以以excel,pdf,csv等格式将数据导出,这里我们来讲一下怎么更改导出的文件名。
找到对应的导出方法所在的js文件: saiku-server\tomcat\webapps\ROOT\js\saiku\views\WorkspaceToolbar.js
这里分别有三个方法导出不同形式的文件:
export_xls
export_csv
export_pdf
我们主要更改里面的filename即可啦!
可以自定义filename,我这里是需要将入参中的日期纳入文件名中,所以我的更改后的export_xls方法如下:(其余两种形式的导出方法也类似)
export_xls: function(event) {
if(this.workspace.query.name!=undefined){
var filename = this.workspace.query.name.substring(this.workspace.query.name.lastIndexOf('/')+1).slice(0, -5);
var paramsURI = Saiku.URLParams.paramsURI(); //get the param from url
if(paramsURI.startdate != null && paramsURI.startdate != undefined && paramsURI.enddate != null && paramsURI.enddate != undefined){
var datename = (paramsURI.startdate).substring(-1,10).replace(/-/g,'') +"-"+ (paramsURI.enddate).substring(-1,10).replace(/-/g,'');//获取参数中的日期
filename = filename.replace('.','') + datename + ".";//将参数中的日期添加到的文件名中
}
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/xls/" + this.workspace.query.getProperty('saiku.olap.result.formatter')+"?exportname=" + "\"" + encodeURIComponent(filename)+"xls" + "\"";
}
else{
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/xls/" + this.workspace.query.getProperty('saiku.olap.result.formatter');
} },
需要注意的是我这里更改后的文件名与我的入参有关,主要是因为我这边是将saiku嵌入公司系统使用的,所以用到日期参数。
请求URl如下:(请求中携带入参 startdate与enddate)
http://10.22.33.44:8080/?username=test&password=111&startdate=2019-03-06&enddate=2019-03-18&plugin=false&mode=view#query/open//KPII/bb.saiku
最后这里给出修改后完整的WorkspaceToolbar.js文件
/*
* Copyright 2012 OSBI Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/ /**
* The workspace toolbar, and associated actions
*/
var WorkspaceToolbar = Backbone.View.extend({
enabled: false,
events: {
'click a': 'call'
}, initialize: function(args) {
// Keep track of parent workspace
this.workspace = args.workspace; // Maintain `this` in callbacks
_.bindAll(this, "call", "reflect_properties", "run_query",
"swap_axes_on_dropzones", "display_drillthrough","clicked_cell_drillthrough_export",
"clicked_cell_drillacross","clicked_cell_drillthrough","activate_buttons", "switch_to_mdx","post_mdx_transform", "toggle_fields_action", "group_parents");
this.workspace.bind('workspace:toolbar:render', this.translate); // Redraw the toolbar to reflect properties
this.workspace.bind('properties:loaded', this.reflect_properties); // Fire off workspace event
this.workspace.trigger('workspace:toolbar:render', {
workspace: this.workspace
}); // Activate buttons when a new query is created or run
this.workspace.bind('query:new', this.activate_buttons);
this.workspace.bind('query:result', this.activate_buttons); }, activate_buttons: function(args) {
if (args !== null && args.data && args.data.cellset && args.data.cellset.length > 0 ) {
$(args.workspace.toolbar.el).find('.button')
.removeClass('disabled_toolbar'); $(args.workspace.el).find("td.data").removeClass('cellhighlight').unbind('click');
$(args.workspace.el).find(".table_mode").removeClass('on'); } else {
$(args.workspace.toolbar.el).find('.button')
.addClass('disabled_toolbar').removeClass('on');
$(args.workspace.el).find('.fields_list .disabled_toolbar').removeClass('disabled_toolbar');
$(args.workspace.toolbar.el)
.find('.about, .new, .open, .save, .edit, .run,.auto,.non_empty,.toggle_fields,.toggle_sidebar,.switch_to_mdx, .mdx')
.removeClass('disabled_toolbar');
} this.reflect_properties(); }, template: function() {
var template = $("#template-workspace-toolbar").html() || "";
return _.template(template)();
}, render: function() {
$(this.el).html(this.template()); return this;
}, translate: function() {
//Saiku.i18n.translate();
},
call: function(event) {
// Determine callback
event.preventDefault();
var callback = event.target.hash.replace('#', ''); // Attempt to call callback
if (! $(event.target).hasClass('disabled_toolbar') && this[callback]) {
this[callback](event);
} return false;
}, reflect_properties: function() {
var properties = this.workspace.query.model.properties ?
this.workspace.query.model.properties : Settings.QUERY_PROPERTIES; // Set properties appropriately
if (properties['saiku.olap.query.nonempty'] === true) {
$(this.el).find('.non_empty').addClass('on');
}
if (properties['saiku.olap.query.automatic_execution'] === true) {
$(this.el).find('.auto').addClass('on');
} if (properties['saiku.olap.query.drillthrough'] !== true) {
$(this.el).find('.drillthrough, .drillthrough_export').addClass('disabled_toolbar');
} if (properties['org.saiku.query.explain'] !== true) {
$(this.el).find('.explain_query').addClass('disabled_toolbar');
} if (properties['org.saiku.connection.scenario'] !== true) {
$(this.el).find('.query_scenario').addClass('disabled_toolbar');
} else {
$(this.el).find('.query_scenario').removeClass('disabled_toolbar');
$(this.el).find('.drillthrough, .drillthrough_export').addClass('disabled_toolbar');
}
if (properties['saiku.olap.query.limit'] == 'true' || properties['saiku.olap.query.filter'] === true) {
$(this.workspace.el).find('.fields_list_header').addClass('limit');
} if (this.workspace.query.getProperty('saiku.olap.result.formatter') !== "undefined" && this.workspace.query.getProperty('saiku.olap.result.formatter') == "flattened") {
if (! $(this.el).find('.group_parents').hasClass('on')) {
$(this.el).find('.group_parents').addClass('on');
}
}
if ($(this.workspace.el).find( ".workspace_results tbody.ui-selectable" ).length > 0) {
$(this.el).find('.zoom_mode').addClass('on');
} $(this.el).find(".spark_bar, .spark_line").removeClass('on');
$(this.el).find('a.edit').removeClass('disabled_toolbar'); if (Settings.MODE == 'VIEW' || this.workspace.isReadOnly) {
$(this.el).find('a.edit').hide();
$(this.el).find('a.save').hide();
} else {
if (this.workspace.viewState == 'view') {
$(this.el).find('a.edit').removeClass('on');
} else {
$(this.el).find('a.edit').addClass('on');
}
$(this.el).find('a.edit').show('normal');
}
}, new_query: function(event) {
if(typeof ga!= 'undefined'){
ga('send', 'event', 'Toolbar', 'New Query');
}
this.workspace.switch_view_state('edit');
this.workspace.new_query(); return false;
}, edit_query: function(event) {
$(event.target).toggleClass('on'); if ($(event.target).hasClass('on')) {
this.workspace.switch_view_state('edit');
} else {
this.workspace.switch_view_state('view');
}
}, save_query: function(event) {
var self = this;
if (this.workspace.query) {
if (typeof this.editor != "undefined") {
var mdx = this.editor.getValue();
this.workspace.query.model.mdx = mdx;
}
(new SaveQuery({ query: this.workspace.query })).render().open();
}
}, open_query: function(event) {
(new OpenDialog()).render().open();
}, run_query: function(event) {
this.workspace.query.run(true);
}, automatic_execution: function(event) {
// Change property
var newState = !this.workspace.query.getProperty('saiku.olap.query.automatic_execution');
this.workspace.query.setProperty('saiku.olap.query.automatic_execution', newState); if (newState) {
$(event.target).addClass('on');
} else {
$(event.target).removeClass('on');
}
}, toggle_fields: function(event) {
var self = this;
if (event) {
$(this.el).find('.toggle_fields').toggleClass('on');
}
if (!$(this.el).find('.toggle_fields').hasClass('on')) {
this.toggle_fields_action('hide');
} else {
this.toggle_fields_action('show');
} }, toggle_fields_action: function(action, dontAnimate) {
var self = this;
if ( action == 'show' && $('.workspace_editor').is(':visible')) {
return;
} else if ( action == 'hide' && $('.workspace_editor').is(':hidden')) {
return;
}
if (dontAnimate) {
$('.workspace_editor').css('height','');
if ($('.workspace_editor').is(':hidden')) {
$('.workspace_editor').show();
} else {
$('.workspace_editor').hide();
}
return;
} if (action == 'hide') {
$(this.workspace.el).find('.workspace_editor').hide();
} else {
$(this.workspace.el).find('.workspace_editor').show();
} // avoid scrollbar on the right /*
var wf = $('.workspace_editor').height();
if ( action == 'hide') {
var wr = $('.workspace_results').height();
$('.workspace_results').height(wr - wf);
}
$(this.workspace.el).find('.workspace_editor').slideToggle({
queue: false,
progress: function() {
self.workspace.adjust();
},
complete: function() {
if ($('.workspace_editor').is(':hidden')) {
$('.workspace_editor').height(wf);
} else {
$('.workspace_editor').css('height','');
} self.workspace.adjust();
}
}); */
}, about: function() {
(new AboutModal()).render().open();
return false;
}, toggle_sidebar: function() {
this.workspace.toggle_sidebar();
}, // group_parents: function(event) {
// $(event.target).toggleClass('on');
// if ($(event.target).hasClass('on')) {
// this.workspace.query.setProperty('saiku.olap.result.formatter', 'flattened');
// } else {
// this.workspace.query.setProperty('saiku.olap.result.formatter', 'flat');
// }
// this.workspace.query.run();
// }, group_parents: function(event) {
if (event) {
$(event.target).toggleClass('on');
}
// this.$el.find('.group_parents').toggleClass('on')
if (this.$el.find('.group_parents').hasClass('on')) {
this.workspace.query.setProperty('saiku.olap.result.formatter', 'flattened');
} else {
this.workspace.query.setProperty('saiku.olap.result.formatter', 'flat');
}
this.workspace.query.run();
}, non_empty: function(event) {
// Change property
var nonEmpty = !this.workspace.query.getProperty('saiku.olap.query.nonempty');
this.workspace.query.helper.nonEmpty(nonEmpty); this.workspace.query.setProperty('saiku.olap.query.nonempty', nonEmpty); // Toggle state of button
$(event.target).toggleClass('on'); // Run query
this.workspace.query.run();
}, swap_axis: function(event) {
// Swap axes
$(this.workspace.el).find('.workspace_results table').html('');
this.workspace.query.helper.swapAxes();
this.workspace.sync_query();
this.workspace.query.run(true);
}, check_modes: function(source) {
if (typeof source === "undefined" || source === null)
return; if ($(this.workspace.el).find( ".workspace_results tbody.ui-selectable" ).length > 0) {
$(this.workspace.el).find( ".workspace_results tbody" ).selectable( "destroy" );
}
if (!$(source).hasClass('on')) {
$(this.workspace.el).find("td.data").removeClass('cellhighlight').unbind('click');
$(this.workspace.el).find(".table_mode").removeClass('on'); this.workspace.query.run();
} else {
if ($(source).hasClass('drillthrough_export')) {
$(this.workspace.el).find("td.data").addClass('cellhighlight').unbind('click').click(this.clicked_cell_drillthrough_export);
$(this.workspace.el).find(".query_scenario, .drillthrough, .zoom_mode, .drillacross").removeClass('on');
} else if ($(source).hasClass('drillthrough')) {
$(this.workspace.el).find("td.data").addClass('cellhighlight').unbind('click').click(this.clicked_cell_drillthrough);
$(this.workspace.el).find(".query_scenario, .drillthrough_export, .zoom_mode, .drillacross").removeClass('on');
} else if ($(source).hasClass('query_scenario')) {
this.workspace.query.scenario.activate();
$(this.workspace.el).find(".drillthrough, .drillthrough_export, .zoom_mode, .drillacross").removeClass('on');
} else if ($(source).hasClass('drillacross')) {
$(this.workspace.el).find("td.data").addClass('cellhighlight').unbind('click').click(this.clicked_cell_drillacross);
$(this.workspace.el).find(".query_scenario, .drillthrough, .drillthrough_export, .zoom_mode").removeClass('on');
} else if ($(source).hasClass('zoom_mode')) { var self = this;
$(self.workspace.el).find( ".workspace_results tbody" ).selectable({ filter: "td", stop: function( event, ui ) {
var positions = [];
$(self.workspace.el).find( ".workspace_results" ).find('td.ui-selected div').each(function(index, element) {
var p = $(element).attr('rel');
if (p) {
positions.push(p);
}
});
$(self.workspace.el).find( ".workspace_results" ).find('.ui-selected').removeClass('.ui-selected'); positions = _.uniq(positions);
if (positions.length > 0) {
self.workspace.query.action.put("/zoomin", { success: function(model, response) {
self.workspace.query.parse(response);
self.workspace.unblock();
self.workspace.sync_query();
Saiku.ui.unblock();
self.workspace.query.run();
},
data: { selections : JSON.stringify(positions) }
});
}
} });
$(this.workspace.el).find(".drillthrough, .drillthrough_export, .query_scenario, .drillacross, .about").removeClass('on');
}
} },
query_scenario: function(event) {
$(event.target).toggleClass('on');
this.check_modes($(event.target)); },
zoom_mode: function(event) {
$(event.target).toggleClass('on');
this.check_modes($(event.target)); },
drillacross: function(event) {
$(event.target).toggleClass('on');
this.check_modes($(event.target));
},
drillthrough: function(event) {
$(event.target).toggleClass('on');
this.check_modes($(event.target));
}, display_drillthrough: function(model, response) {
this.workspace.table.render({ data: response });
Saiku.ui.unblock();
}, export_drillthrough: function(event) {
$(event.target).toggleClass('on');
this.check_modes($(event.target));
}, clicked_cell_drillacross: function(event) {
$target = $(event.target).hasClass('data') ?
$(event.target).find('div') : $(event.target);
var pos = $target.attr('rel');
(new DrillAcrossModal({
workspace: this.workspace,
title: "Drill Across",
action: "export",
position: pos,
query: this.workspace.query
})).open(); },
clicked_cell_drillthrough_export: function(event) {
$target = $(event.target).hasClass('data') ?
$(event.target).find('div') : $(event.target);
var pos = $target.attr('rel');
(new DrillthroughModal({
workspace: this.workspace,
maxrows: 10000,
title: "Drill-Through to CSV",
action: "export",
position: pos,
query: this.workspace.query
})).open(); }, clicked_cell_drillthrough: function(event) {
$target = $(event.target).hasClass('data') ?
$(event.target).find('div') : $(event.target);
var pos = $target.attr('rel');
(new DrillthroughModal({
workspace: this.workspace,
maxrows: 200,
title: "Drill-Through",
action: "table",
success: this.display_drillthrough,
position: pos,
query: this.workspace.query
})).open(); }, swap_axes_on_dropzones: function(model, response) {
this.workspace.query.parse(response);
this.workspace.unblock();
this.workspace.sync_query();
Saiku.ui.unblock();
/*
$columns = $(this.workspace.drop_zones.el).find('.columns')
.children()
.detach();
$rows = $(this.workspace.drop_zones.el).find('.rows')
.children()
.detach(); $(this.workspace.drop_zones.el).find('.columns').append($rows);
$(this.workspace.drop_zones.el).find('.rows').append($columns);
var rowLimit = $(this.workspace).find('fields_list.ROWS .limit').hasClass('on') | false;
var colLimit = $(this.workspace).find('fields_list.COLUMNS .limit').hasClass('on') | false;
$(this.workspace).find('fields_list.ROWS .limit').removeClass('on');
$(this.workspace).find('fields_list.COLUMNS .limit').removeClass('on');
if (rowLimit) {
$(this.workspace).find('fields_list.COLUMNS .limit').addClass('on');
}
if (colLimit) {
$(this.workspace).find('fields_list.ROWS .limit').addClass('on');
}
*/
this.workspace.unblock();
this.workspace.sync_query();
Saiku.ui.unblock();
}, show_mdx: function(event) {
//this.workspace.query.enrich(); (new MDXModal({ mdx: this.workspace.query.model.mdx })).render().open();
}, workspace_report_titles: function(event) {
(new ReportTitlesModal({ query: this.workspace.query })).render().open();
}, export_xls: function(event) {
if(this.workspace.query.name!=undefined){
var filename = this.workspace.query.name.substring(this.workspace.query.name.lastIndexOf('/')+1).slice(0, -5);
var paramsURI = Saiku.URLParams.paramsURI(); //get the param from url
if(paramsURI.startdate != null && paramsURI.startdate != undefined && paramsURI.enddate != null && paramsURI.enddate != undefined){
var datename = (paramsURI.startdate).substring(-1,10).replace(/-/g,'') +"-"+ (paramsURI.enddate).substring(-1,10).replace(/-/g,'');//获取参数中的日期
filename = filename.replace('.','') + datename + ".";//将参数中的日期添加到下载的文件名中
}
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/xls/" + this.workspace.query.getProperty('saiku.olap.result.formatter')+"?exportname=" + "\"" + encodeURIComponent(filename)+"xls" + "\"";
}
else{
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/xls/" + this.workspace.query.getProperty('saiku.olap.result.formatter');
} }, export_csv: function(event) {
if(this.workspace.query.name!=undefined){
var filename = this.workspace.query.name.substring(this.workspace.query.name.lastIndexOf('/')+1).slice(0, -6);
var paramsURI = Saiku.URLParams.paramsURI(); //get the param from url
if(paramsURI.startdate != null && paramsURI.startdate != undefined && paramsURI.enddate != null && paramsURI.enddate != undefined){
var datename = (paramsURI.startdate).substring(-1,10).replace(/-/g,'') +"-"+ (paramsURI.enddate).substring(-1,10).replace(/-/g,'');//获取参数中的日期
filename = filename.replace('.','') + datename + ".";//将参数中的日期添加到下载的文件名中
}
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/csv/" + this.workspace.query.getProperty('saiku.olap.result.formatter')+"?exportname=" + "\"" + encodeURIComponent(filename) + "\"";
}
else{
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/csv/" + this.workspace.query.getProperty('saiku.olap.result.formatter');
} }, export_pdf: function(event) {
if(this.workspace.query.name!=undefined){
var filename = this.workspace.query.name.substring(this.workspace.query.name.lastIndexOf('/')+1).slice(0, -6);
var paramsURI = Saiku.URLParams.paramsURI(); //get the param from url
if(paramsURI.startdate != null && paramsURI.startdate != undefined && paramsURI.enddate != null && paramsURI.enddate != undefined){
var datename = (paramsURI.startdate).substring(-1,10).replace(/-/g,'') +"-"+ (paramsURI.enddate).substring(-1,10).replace(/-/g,'');//获取参数中的日期
filename = filename.replace('.','') + datename + ".";//将参数中的日期添加到下载的文件名中
}
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/pdf/" + this.workspace.query.getProperty('saiku.olap.result.formatter')+"?exportname=" + "\"" + encodeURIComponent(filename) + "\"";
}
else{
window.location = Settings.REST_URL +
this.workspace.query.url() + "/export/pdf/" + this.workspace.query.getProperty('saiku.olap.result.formatter');
}
}, switch_to_mdx: function(event) {
var self = this;
$(this.workspace.el).find('.workspace_fields').addClass('hide');
$(this.el).find('.auto, .query_scenario, .buckets, .non_empty, .swap_axis, .mdx, .switch_to_mdx, .zoom_mode, .drillacross').parent().hide(); if ($(this.workspace.el).find( ".workspace_results tbody.ui-selectable" ).length > 0) {
$(this.workspace.el).find( ".workspace_results tbody" ).selectable( "destroy" );
} $(this.el).find('.run').attr('href','#run_mdx');
$(this.el).find('.run, .save, .open, .new, .edit').removeClass('disabled_toolbar'); if (Settings.MODE != "view" && Settings.MODE != "table" && !this.workspace.isReadOnly) {
$mdx_editor = $(this.workspace.el).find('.mdx_input');
//$mdx_editor.width($(this.el).width()-5);
$(this.workspace.el).find('.workspace_editor .mdx_input, .workspace_editor .editor_info, .workspace_editor').removeClass('hide').show();
this.editor = ace.edit("mdx_editor");
this.editor.setShowPrintMargin(false);
this.editor.setFontSize(11);
this.editor.commands.addCommand({
name: 'runmdx',
bindKey: {win: 'Ctrl-Enter', mac: 'Command-Enter'},
exec: function(editor) {
self.run_mdx();
},
readOnly: true // false if this command should not apply in readOnly mode
}); var showPosition = function() {
var pos = self.editor.getCursorPosition();
$mdx_editor.parent().find('.editor_info').html(" " + (pos.row +1) + ", " + pos.column);
}; this.editor.on('changeSelection', showPosition);
showPosition(); var heightUpdateFunction = function() { // http://*.com/questions/11584061/
var max_height = $(document).height() / 3;
var height = Math.floor(max_height / self.editor.renderer.lineHeight);
var screen_length = self.editor.getSession().getScreenLength() > height ? height : self.editor.getSession().getScreenLength();
var newHeight =
(screen_length + 1) *
self.editor.renderer.lineHeight +
self.editor.renderer.scrollBar.getWidth(); $mdx_editor.height(newHeight.toString() + "px");
self.editor.resize();
self.workspace.adjust();
}; var resizeFunction = function() {
var session = self.editor.session;
//$mdx_editor.width($(self.el).width()-5);
self.editor.resize();
session.setUseWrapMode(true);
if(session.getUseWrapMode()) {
var characterWidth = self.editor.renderer.characterWidth;
var contentWidth = self.editor.renderer.scroller.clientWidth; if(contentWidth > 0) {
session.setWrapLimitRange(null, parseInt(contentWidth / characterWidth, 10));
}
}
}; resizeFunction(); heightUpdateFunction(); self.editor.focus();
self.editor.clearSelection();
self.editor.getSession().setValue("");
self.editor.getSession().on('change', heightUpdateFunction);
$(window).resize(resizeFunction); self.editor.on('changeSelection', heightUpdateFunction);
self.editor.on('focus', function(e) { heightUpdateFunction(); return true; });
self.editor.on('blur', function(e) {
if ($(self.workspace.el).find(".mdx_input").height() > 100) {
$(self.workspace.el).find(".mdx_input").height(100);
}
self.editor.resize();
self.workspace.adjust();
return true; }); //this.editor.on('focusout', function(e) { alert('blur'); }); //this.editor.setTheme("ace/theme/crimson_editor");
this.editor.getSession().setMode("ace/mode/text"); } if (this.workspace.dimension_list) {
$(this.workspace.el).find('.sidebar_inner ul li a')
.css({fontWeight: "normal"}).parent('li').removeClass('ui-draggable ui-draggable-disabled ui-state-disabled');
}
this.activate_buttons({ workspace: this.workspace });
$(this.workspace.toolbar.el)
.find('.run')
.removeClass('disabled_toolbar'); $(this.workspace.table.el).empty(); if (this.workspace.timeSeriesFilter) {
$(this.workspace.timeSeriesFilter.el).empty();
} this.workspace.adjust();
this.post_mdx_transform();
}, post_mdx_transform: function() {
var self = this; if (this.workspace.query.model.type !== "MDX") {
//this.workspace.query.enrich();
this.workspace.query.model.queryModel = {};
this.workspace.query.model.type = "MDX";
this.workspace.query.setProperty('saiku.olap.result.formatter', 'flat');
self.workspace.query.helper.model().parameters = {}; }
var mdx = this.workspace.query.model.mdx; if (self.editor) {
self.editor.setValue(mdx,0);
self.editor.clearSelection();
self.editor.focus();
}
$(self.el).find('.group_parents').removeClass('on'); if (Settings.ALLOW_PARAMETERS) { var parameterDetector = function() {
var mdx = self.editor.getValue();
var parameters = [];
if (mdx) {
for (var i = 0, len = mdx.length; i < (len-1); i++ ) {
if (mdx[i] === "$" && mdx[i+1] === "{") {
var param = "";
var closed = false;
for(i = i + 2; i < len; i++) {
if (mdx[i] !== '}') {
param += mdx[i];
} else {
closed = true;
i++;
break;
}
}
if (closed && param && param.length > 0) {
parameters.push(param);
}
}
}
}
var qParams = self.workspace.query.helper.model().parameters;
var newParams = {};
_.each(parameters, function(p) {
if (!qParams[p]) {
newParams[p] = "";
} else {
newParams[p] = qParams[p];
} });
self.workspace.query.helper.model().parameters = newParams;
self.workspace.update_parameters(); }; var lazyDetector = function() { _.delay(parameterDetector, 1000); };
if (self.editor) {
self.editor.getSession().off('change', lazyDetector);
self.editor.getSession().on('change', lazyDetector);
}
self.workspace.update_parameters();
} }, run_mdx: function(event) {
//var mdx = $(this.workspace.el).find(".mdx_input").val();
if ($(this.workspace.el).find(".mdx_input").height() > 100) {
$(this.workspace.el).find(".mdx_input").height(100);
}
this.editor.resize();
var mdx = this.editor.getValue();
this.workspace.query.model.mdx = mdx;
this.workspace.query.run(true);
}, explain_query: function(event) {
var self = this;
var explained = function(model, args) { var explainPlan = "<textarea style='width: " + ($("body").width() - 165) + "px;height:" + ($("body").height() - 175) + "px;'>";
if (args !== null && args.error !== null) {
explainPlan += args.error;
} else if (args.cellset && args.cellset.length === 0) {
explainPlan += "Empty explain plan!";
} else {
explainPlan += args.cellset[1][0].value;
}
explainPlan += "</textarea>"; Saiku.ui.unblock(); var html = '<div id="fancy_results" class="workspace_results" style="overflow:visible"><table>' +
'<tr><th clas="row_header">Explain Plan</th></tr>' +
'<tr><td>' + explainPlan + '</td></tr>' +
'</table></div>'; $.fancybox(html,
{
'autoDimensions' : false,
'autoScale' : false,
'height' : ($("body").height() - 100),
'width' : ($("body").width() - 100),
'transitionIn' : 'none',
'transitionOut' : 'none'
}
);
}; self.workspace.query.action.gett("/explain", { success: explained } ); return false; }
});