adjusted legal info, Saiku integration frame
diff --git a/org.eclipse.osbp.utils.ui.feature/feature.xml b/org.eclipse.osbp.utils.ui.feature/feature.xml
index 6999342..5bb540e 100644
--- a/org.eclipse.osbp.utils.ui.feature/feature.xml
+++ b/org.eclipse.osbp.utils.ui.feature/feature.xml
@@ -17,7 +17,7 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.utils.ui">
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.utils.ui/.classpath b/org.eclipse.osbp.utils.ui/.classpath
index 30a5795..43b9862 100644
--- a/org.eclipse.osbp.utils.ui/.classpath
+++ b/org.eclipse.osbp.utils.ui/.classpath
@@ -2,8 +2,6 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src/"/>
- <classpathentry kind="src" path="src-gen/"/>
- <classpathentry kind="src" path="test/"/>
+ <classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
diff --git a/org.eclipse.osbp.utils.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.utils.ui/META-INF/MANIFEST.MF
index 39e7f6b..bdc6bd3 100644
--- a/org.eclipse.osbp.utils.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.utils.ui/META-INF/MANIFEST.MF
@@ -8,7 +8,8 @@
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.osbp.utils.vaadin;version="0.9.0",
org.eclipse.osbp.utils.vaadin.beeper;version="0.9.0",
- org.eclipse.osbp.utils.vaadin.bpmn;version="0.9.0"
+ org.eclipse.osbp.utils.vaadin.bpmn;version="0.9.0",
+ org.eclipse.osbp.utils.vaadin.saiku
Require-Bundle: com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
com.vaadin.client;bundle-version="[7.7.6,7.8.0)",
@@ -31,13 +32,12 @@
org.eclipse.osbp.vaadin.emf.api;bundle-version="0.9.0",
org.eclipse.osbp.vaadin.emf;bundle-version="0.9.0",
org.eclipse.osbp.dsl.entity.xtext;bundle-version="0.9.0",
- javax.persistence;bundle-version="2.1.0"
+ javax.persistence;bundle-version="2.1.0",
+ mondrian.osgi
Bundle-Vendor: Eclipse OSBP
Import-Package: com.google.gwt.dev.json;version="2.7.0",
com.vaadin.ui,
javax.inject;version="1.0.0",
- mondrian.olap;version="3.5.0",
- mondrian.rolap;version="3.5.0",
org.eclipse.core.runtime;version="3.5.0",
org.eclipse.e4.core.contexts,
org.eclipse.e4.core.di.annotations,
diff --git a/org.eclipse.osbp.utils.ui/resources/index.html b/org.eclipse.osbp.utils.ui/resources/index.html
new file mode 100644
index 0000000..3d6c877
--- /dev/null
+++ b/org.eclipse.osbp.utils.ui/resources/index.html
@@ -0,0 +1,1006 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta http-equiv="cache-control" content="max-age=0" />
+ <meta http-equiv="cache-control" content="no-cache" />
+ <meta http-equiv="expires" content="0" />
+ <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
+ <meta http-equiv="pragma" content="no-cache" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+
+ <title>Saiku - Next Generation Open Source Analytics</title>
+
+ <!--[if lt IE 9]><script type="text/javascript" src="js/svgweb/svg.js" data-path="js/svgweb/"></script><![endif]-->
+ <meta name="svg.render.forceflash" content="true">
+
+ <link rel="stylesheet" href="css/saiku/src/bootstrap.css"/>
+ <link rel="stylesheet" href="js/tourist/tourist.css" type="text/css">
+ <link rel="stylesheet" href="js/intro/introjs.min.css">
+ <link rel="stylesheet" href="js/qtip/jquery.qtip.min.css" type="text/css"/>
+
+ <!-- jQuery CSS -->
+ <link rel="stylesheet" href="css/jquery/spectrum.css" type="text/css" media="all"/>
+ <link rel="stylesheet" href="css/jquery/jquery-ui.css" type="text/css" media="all" />
+ <link rel="stylesheet" href="css/saiku/src/giveitsomestyle.css" type="text/css" media="screen"/>
+ <link rel="stylesheet" href="js/fancybox/jquery.fancybox.css" type="text/css" media="screen" />
+ <link rel="stylesheet" href="js/jquery/jquery.contextMenu.css" type="text/css" media="screen" />
+
+ <!-- Saiku CSS -->
+ <link rel="stylesheet" href="css/saiku/src/styles.css" type="text/css">
+ <link rel="stylesheet" href="css/saiku/src/saiku.table.css" type="text/css">
+ <link rel="stylesheet" href="css/saiku/src/saiku.dropzone.css" type="text/css">
+
+ <!-- CHOSEN CSS PLACEHOLDER-->
+
+ <link rel="shortcut icon" href="favicon.ico">
+
+</head>
+<body>
+<div id="header" class="hide" style="display:none"></div>
+
+<div class="processing_container"></div>
+<div class="processing">
+ <div class="processing_inner">
+ <span class="saiku_logo"> </span>
+ <div class="processing_content">
+ <span class="processing_image"> </span>
+ <span class="processing_message i18n">Loading...</span>
+ </div>
+ </div>
+</div>
+
+<!--
+<script type="text/javascript" src="//www.google.com/jsapi" defer></script>
+<script src="//maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&libraries=visualization&sensor=false&callback=initialize" defer></script>
+<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.css">
+<script src="//cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.js"></script>
+-->
+
+<!--MAP PLACEHOLDER-->
+
+<!-- jQuery 1.7.2 , jQuery UI 1.8.14-->
+<script src="js/jquery/jquery.min.js" type="text/javascript"></script>
+<script src="js/jquery/jquery-ui.min.js" type="text/javascript"></script>
+<script src="js/jquery/jquery.contextMenu.js" type="text/javascript"></script>
+<script src="js/jquery/jquery-mobile-touch.js" type="text/javascript"></script>
+<script type="text/javascript" src="js/jquery/jquery.blockUI.js"></script>
+<script type="text/javascript" src="js/jquery/spectrum.js"></script>
+<script type="text/javascript" src="js/js-yaml/js-yaml.min.js"></script>
+<script type="text/javascript" src="js/fancybox/jquery.fancybox.pack.js"></script>
+
+
+<!-- CHOSEN PLACEHOLDER -->
+<script type="text/javascript">
+
+ // Replace the normal jQuery getScript function with one that supports
+ // debugging and which references the script files as external resources
+ // rather than inline.
+ jQuery.extend({
+ getScript: function(url, callback) {
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = url;
+
+ // Handle Script loading
+ {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function(){
+ if ( !done && (!this.readyState ||
+ this.readyState == "loaded" || this.readyState == "complete") ) {
+ done = true;
+ if (callback)
+ callback();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+ });
+</script>
+<!-- Backbone.js and deps -->
+
+<script type="text/javascript" src="js/backbone/underscore.js"></script>
+<script type="text/javascript" src="js/backbone/json2.js"></script>
+<script type="text/javascript" src="js/backbone/backbone.js"></script>
+<script src="js/backbone/backbone-model-file-upload.js" ></script>
+<script src="js/notify/notify.min.js"></script>
+<script src="js/fitvids/jquery.fitvids.js"></script>
+<script src="js/notify/styles/bootstrap/notify-bootstrap.js"></script>
+<script src="js/qtip/imagesloaded.pkg.min.js"></script>
+<script src="js/qtip/jquery.qtip.min.js"></script>
+<script type="text/javascript" src="js/tourist/tourist.js"></script>
+<script type="text/javascript" src="js/ozpIwc/ozpIwc-client.min.js"></script>
+<script type="text/javascript" src="js/intro/intro.min.js"></script>
+<!-- Loggly error logging service -->
+<script type="text/javascript" src="js/logger/janky.post.min.js"></script>
+<script type="text/javascript" src="js/logger/Logger.js" defer></script>
+
+<!-- D3 Library -->
+<script src="js/d3/d3.v3.min.js"></script>
+
+<!-- Saiku Project -->
+<script type="text/javascript" src="js/saiku/Settings.js"></script>
+
+<!-- CUT HERE -->
+<script type="text/javascript" src="js/saiku/models/SaikuOlapQuery.js"></script>
+<script type="text/javascript" src="js/saiku/models/DateFilter.js"></script>
+<script type="text/javascript" src="js/saiku/models/Level.js"></script>
+<script type="text/javascript" src="js/saiku/render/SaikuRenderer.js"></script>
+<script type="text/javascript" src="js/saiku/render/SaikuTableRenderer.js"></script>
+<script type="text/javascript" src="js/saiku/render/SaikuChartRenderer.js"></script>
+<script type="text/javascript" src="js/saiku/models/Dimension.js"></script>
+<script type="text/javascript" src="js/saiku/views/DimensionList.js"></script>
+<script type="text/javascript" src="js/saiku/views/Toolbar.js"></script>
+<script type="text/javascript" src="js/saiku/views/Upgrade.js"></script>
+<script type="text/javascript" src="js/saiku/views/Modal.js"></script>
+<script type="text/javascript" src="js/saiku/views/MDXModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/SelectionsModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/DrillthroughModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/DrillAcrossModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/PermissionsModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/DemoLoginForm.js"></script>
+<script type="text/javascript" src="js/saiku/views/LoginForm.js"></script>
+<script type="text/javascript" src="js/saiku/views/AboutModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/OverwriteModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/AddFolderModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/FilterModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/CustomFilterModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/CalculatedMemberModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/ParentMemberSelectorModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/DataSourcesModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/QueryToolbar.js"></script>
+<script type="text/javascript" src="js/saiku/views/WorkspaceToolbar.js"></script>
+<script type="text/javascript" src="js/saiku/views/WorkspaceDropZone.js"></script>
+<script type="text/javascript" src="js/saiku/views/Table.js"></script>
+<script type="text/javascript" src="js/saiku/views/Workspace.js"></script>
+<script type="text/javascript" src="js/saiku/views/DeleteRepositoryObject.js"></script>
+<script type="text/javascript" src="js/saiku/views/MoveRepositoryObject.js"></script>
+<script type="text/javascript" src="js/saiku/views/OpenQuery.js"></script>
+<script type="text/javascript" src="js/saiku/views/SaveQuery.js"></script>
+<script type="text/javascript" src="js/saiku/views/OpenDialog.js"></script>
+<script type="text/javascript" src="js/saiku/views/TabSet.js"></script>
+<script type="text/javascript" src="js/saiku/views/Tab.js"></script>
+<script type="text/javascript" src="js/saiku/models/Repository.js"></script>
+<script type="text/javascript" src="js/saiku/models/Result.js"></script>
+<script type="text/javascript" src="js/saiku/models/QueryAction.js"></script>
+<script type="text/javascript" src="js/saiku/models/QueryScenario.js"></script>
+<script type="text/javascript" src="js/saiku/models/Query.js"></script>
+<script type="text/javascript" src="js/saiku/views/SessionErrorModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/WarningModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/ReportTitlesModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/GrowthModal.js"></script>
+<script type="text/javascript" src="js/saiku/views/FormatAsPercentageModal.js"></script>
+<script type="text/javascript" src="js/saiku/models/Session.js"></script>
+<script type="text/javascript" src="js/saiku/views/SplashScreen.js"></script>
+<script type="text/javascript" src="js/saiku/models/SessionWorkspace.js"></script>
+<script type="text/javascript" src="js/saiku/models/Member.js"></script>
+<script type="text/javascript" src="js/saiku/models/Plugin.js"></script>
+<script type="text/javascript" src="js/saiku/models/Settings.js"></script>
+<script type="text/javascript" src="js/saiku/models/License.js"></script>
+<script type="text/javascript" src="js/saiku/models/DataSources.js"></script>
+<script type="text/javascript" src="js/saiku/Saiku.js"></script>
+<script type="text/javascript" src="js/saiku/views/DateFilterModal.js"></script>
+<script type="text/javascript" src="js/saiku/adapters/SaikuServer.js"></script>
+<script type="text/javascript" src="js/saiku/routers/QueryRouter.js"></script>
+<script type="text/javascript" src="js/saiku/views/Tour.js"></script>
+
+<!-- END CUT HERE -->
+
+<!-- Saiku Minified - remove all of the above and uncomment the following -->
+<!--
+<script type="text/javascript" src="saiku.min.js"></script>
+-->
+
+<!--
+<script src="js/leaflet/leaflet-heat.js"></script>
+-->
+
+<script type="text/javascript" src="js/saiku/plugins/I18n/plugin.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/Intro/plugin.js"></script>
+<!-- Saiku plugins -->
+
+
+<!-- FILTER PLUGIN disabled by default
+<script type="text/javascript" src="js/saiku/plugins/filters/filterconfig.js" defer></script>
+<script type="text/javascript" src="js/saiku/plugins/filters/plugin_disabled.js" defer></script>
+-->
+
+<!-- CCC dependencies -->
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart2/jquery.tipsy.js"></script>
+<link type="text/css" href="js/saiku/plugins/CCC_Chart2/tipsy.css" rel="stylesheet" media="screen" />
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart2/protovis.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart2/protovis-msie.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart2/tipsy.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart2/def.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart2/cdo.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart2/pvc.js"></script>
+
+<!-- CCC dependencies -->
+<!--script type="text/javascript" src="js/saiku/plugins/CCC_Chart/def.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart/protovis.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart/protovis-msie.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart/cdo.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart/pvc.js"></script>
+
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart/jquery.tipsy.js"></script>
+<script type="text/javascript" src="js/saiku/plugins/CCC_Chart/tipsy.js"></script>
+<link type="text/css" href="js/saiku/plugins/CCC_Chart/tipsy.css" rel="stylesheet"/-->
+
+<!--<script type="text/javascript" src="../js/saiku/render/SaikuRenderer.js"></script>
+<script type="text/javascript" src="../js/saiku/render/SaikuTableRenderer.js"></script>
+<script type="text/javascript" src="../js/saiku/render/SaikuChartRenderer.js"></script>
+<script type="text/javascript" src="../js/saiku/embed/SaikuEmbed.js"></script>-->
+
+<script type="text/javascript" src="js/saiku/embed/SaikuEmbed.js"></script>
+<!-- ACE Editor for MDX -->
+<script type="text/javascript" src="js/ace/ace.js" charset="utf-8"></script>
+
+
+
+<!-- Templates -->
+<script type="text/x-jquery-tmpl" id="template-toolbar">
+ <ul>
+ <li><a id='new_query' href='#new_query' title='New query' class='new_tab i18n sprite'></a></li>
+ <li class='separator'> </li>
+ <li><a id='open_query' href='#open_query' title='Open query' class='open_query i18n sprite'></a></li>
+ <% if (!data.buttons) { %>
+ <li class='separator'> </li>
+ <li><a id='logout' href='#logout' title='Logout' class='logout i18n sprite'></a></li>
+
+ <li class='separator'> </li>
+ <li><a id='about' href='#about' title='About' class='about i18n sprite'></a></li>
+ <li class='separator'> </li>
+ <li><a id='help_icon' href='#help' target='_blank' title='Help' class='help i18n sprite'></a></li>
+
+ <li class='separator'> </li>
+ <% } %>
+<!-- <li><a id='issue_tracker' href='#issue_tracker' title='Issue Tracker' class='bug i18n sprite'></a></li>-->
+ </ul>
+
+ <%= data.logo %>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-upgrade">
+ <div class="upgradeheader">
+ You are using Saiku Community Edition, please consider <a target="_blank" href="http://saiku.meteorite.bi/support">purchasing support, or entering a sponsorship agreement with us</a> to support development. <a href="mailto:info@meteorite.bi?subject=Supporting Saiku">info@meteorite.bi</a><span class="close_tab sprite"></span>
+ </div>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-logincount">
+ <div class="upgradeheader">
+
+ </div>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-cubes">
+ <div >
+ <select id="cubesselect" class="form-control cubes ui-widget">
+ <option value="" class="i18n">Select a cube</option>
+ <% _.each(connections, function(connection) { %>
+ <% _.each(connection.catalogs, function(catalog) { %>
+ <% _.each(catalog.schemas, function(schema) {
+ if (schema.cubes.length > 0) { %>
+ <optgroup label="<%= ( schema.name != "" ? schema.name : catalog.name) +' (' + connection.name + ')' %>">
+ <% _.each(schema.cubes, function(cube) { %>
+ <% if (typeof cube["visible"] == "undefined" || cube["visible"]) { %>
+ <option value="<%= connection.name %>/<%= catalog.name %>/<%= ((schema.name == '' || schema.name == null) ? 'null' : schema.name) %>/<%= encodeURIComponent(cube.name) %>"><%= ((cube.caption == '' || cube.caption == null) ? cube.name : cube.caption) %></option>
+ <% } %>
+ <% }); %>
+ </optgroup>
+ <% } %>
+ <% }); %>
+ <% }); %>
+ <% }); %>
+ </select>
+ </div>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-dimensions">
+ <ul>
+ <% _.each(dimensions, function(dimension) { %>
+ <% if (dimension.name != 'Measures' && (typeof dimension["visible"] == "undefined" || dimension["visible"])) { %>
+ <li class='parent_dimension'>
+ <span class="root collapsed sprite"></span>
+ <a class="folder_collapsed sprite" href="#" title="<%= dimension.description ? dimension.description : dimension.caption %>"><%= dimension.caption %></a>
+ <ul>
+ <% _.each(dimension.hierarchies, function(hierarchy) { %>
+ <% if (typeof hierarchy["visible"] == "undefined" || hierarchy["visible"]) { %>
+ <% if ((Settings.DIMENSION_HIDE_HIERARCHY === 'NONE' && dimension.hierarchies.length > 1)
+ || (Settings.DIMENSION_HIDE_HIERARCHY === 'SINGLE_LEVEL' && ((Settings.DIMENSION_SHOW_ALL && hierarchy["levels"].length > 3) || (!Settings.DIMENSION_SHOW_ALL && hierarchy["levels"].length > 2)))) { %>
+ <li class="hierarchy hide">
+ <a class="dimension" title="<%= hierarchy.description ? hierarchy.description : hierarchy.caption %>" href="#" hierarchy="<%= hierarchy.name %>"><%= hierarchy.caption %></a>
+ </li>
+ <% } %>
+ <ul class="d_hierarchy" hierarchy="<%= hierarchy.uniqueName %>" hierarchycaption="<%= hierarchy.caption %>">
+ <div class="hgroup treehidden"><%= hierarchy.caption %></div>
+ <% _.each(hierarchy.levels, function(level) { %>
+ <% if ((Settings.DIMENSION_SHOW_ALL || level.name != "(All)") && (typeof level["visible"] == "undefined" || level["visible"])) { %>
+ <li class="hide d_level">
+ <a title="<%= (Settings.DIMENSION_HIDE_HIERARCHY === 'SINGLE_LEVEL' || Settings.DIMENSION_HIDE_HIERARCHY === 'ALL') && dimension.hierarchies.length > 1? hierarchy.caption + ' - ' : '' %><%= level.description ? level.description : level.caption %>" level="<%= level.name %>" hierarchy="<%= hierarchy.uniqueName %>"
+ class="level" href="#<%= encodeURIComponent(hierarchy.uniqueName) %>/<%= encodeURIComponent(level.name) %>"><%= level.caption %></a>
+ </li>
+ <% } %>
+ <% }); %>
+ </ul>
+ <% } %>
+ <% }); %>
+ </ul>
+ <% } %>
+ <% }); %>
+ </ul>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-measures">
+ <ul>
+ <% var g = _.groupBy(measures, 'measureGroup'); %>
+ <% _.each(g, function(group, key) { %>
+ <% if(key != "null") { %>
+ <li class='parent_dimension'>
+ <span class="root <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'collapsed' : 'expand' %> sprite"></span>
+ <a class="folder_expand sprite" href="#" title="<%= key %>"><%= key %></a>
+ <ul>
+ <% _.each(group, function(measure) { %>
+ <% if (typeof measure["visible"] == "undefined" || measure["visible"]) { %>
+ <li class="d_measure <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'hide' : '' %>"><a title="<%= measure.description ? measure.description : measure.uniqueName %>"
+ measure="<%= measure.name %>" type="EXACT"
+ class="measure" href="#Measures/member/<%= encodeURIComponent(measure.uniqueName) %>"><%= measure.caption %></a>
+ </li>
+
+ <% } %>
+ <% }); %>
+ </ul>
+ </li>
+ <% } else {%>
+ <li class='parent_dimension'>
+ <span class="root <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'collapsed' : 'expand' %> sprite"></span>
+ <a class="folder_expand sprite" href="#" title=" "> </a>
+ <ul>
+ <% _.each(group, function(measure) { %>
+
+ <li class="d_measure <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'hide' : '' %>"><a title="<%= measure.description ? measure.description : measure.uniqueName %>"
+ measure="<%= measure.name %>" type="EXACT"
+ class="measure" href="#Measures/member/<%= encodeURIComponent(measure.uniqueName) %>"><%= measure.caption %></a>
+ </li>
+
+ <% }); %>
+ </ul>
+ </li>
+ <% } %>
+ <% }); %>
+ </ul>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-calculated-measures">
+ <ul>
+ <li>
+ <span class="root expand sprite"></span>
+ <a href="#" title="Calculated Measures" class="folder_expand sprite i18n">Calculated Measures</a>
+ <% if (measures) { %>
+ <ul>
+ <% _.each(measures, function(measure) { %>
+
+ <li class="d_measure"><a title="<%= measure.name %>"
+ measure="<%= measure.name %>" type="CALCULATED"
+ class="measure" href="#Measures/member/<%= encodeURIComponent(measure.uniqueName) %>"><%= measure.name %></a>
+ </li>
+
+ <% }); %>
+ <% } %>
+ </ul>
+ </li>
+ </ul>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-calculated-member">
+ <% if (member) { %>
+ <li class="hide d_level dimension-level-calcmember">
+ <a title="<%= member.name %>" level="<%= member.name %>" hierarchy="<%= member.hierarchyName %>" uniquename="<%= member.uniqueName %>" class="level level-calcmember" href="#<%= encodeURIComponent(member.hierarchyName) %>/<%= encodeURIComponent(member.name) %>" style="color: #1e7145;"><%= member.name %></a>
+ </li>
+ <% } %>
+</script>
+<script type="text/x-jquery-tmpl" id="template-workspace">
+ <div class="workspace">
+ <div class="workspace_inner">
+ <div class="query_toolbar"></div>
+ <div class="workspace_toolbar"></div>
+ <div class="upgrade"></div>
+ <div class="parameter_input" />
+ <div class="workspace_editor hide">
+ <div id='mdx_editor' class='mdx_input hide'>
+ </div>
+ <span class="editor_info hide"></span>
+
+ </div>
+ <div id="query_processing" class="query_processing" style="display:none;"><span class="processing_image"> </span> <span class="i18n">Running query...</span> [ <a class="cancel i18n" href="#cancel">Cancel</a> ]</div>
+
+ <div class="workspace_results_info" align="right" />
+ <div class="workspace_results_titles" align="center"/>
+ <div class="workspace_results">
+
+ </div>
+ </div>
+ </div>
+ <div class="sidebar">
+ <div>
+ <h3 class="top i18n">Cubes</h3>
+ <div class="refresh_cubes_nav">
+ <a id="refresh_icon" href="#refresh_cubes"
+ class="i18n button refresh_cubes"
+ title="Refresh Cubes (Clear Cache)"></a>
+ </div>
+ <div class="admin_console_nav"></div>
+ </div>
+ <div class="sidebar_inner">
+ <%= cube_navigation %>
+ </div>
+ <div class="metadata_attribute_wrapper">
+ <%= _.template($("#template-attributes").html())() %>
+ </div>
+
+ </div>
+
+ <div class="sidebar_separator"></div>
+ <div class="clear"></div>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-attributes">
+
+ <div class="metadata_attribute_container">
+ <h3 class="measure_caption"><span class="i18n">Measures</span><a class="button addMeasure i18n" style="display:none;">Add</a></h3>
+ <div class="sidebar_inner measure_tree">
+ <% if (typeof cube != "undefined" && cube && cube.dimensions) { %>
+ <%= _.template($("#template-measures").html(), { measures: cube.measures }) %>
+ <% } else { %>
+ <span class="i18n loading hide">Loading...</span>
+ <% } %>
+ <div class="calculated_measures" style="display:none;"></div>
+ <div class="calculated_members" style="display:none;"></div>
+ </div>
+ <h3 class="i18n dimension_header">Dimensions</h3>
+ <div class="sidebar_inner dimension_tree">
+ <% if (typeof cube != "undefined" && cube && cube.dimensions) { %>
+ <%= _.template($("#template-dimensions").html(), { dimensions: cube.dimensions }) %>
+ <% } else { %>
+ <span class="i18n loading hide">Loading...</span>
+ <% } %>
+
+ </div>
+ </div>
+
+ </script>
+
+
+<script type="text/x-jquery-tmpl" id="template-workspace-dropzones">
+ <div class="workspace_fields disabled">
+ <div class="fields_list details_fields" title="DETAILS">
+ <div class="fields_list_header measure_fields disabled_toolbar"><span class="i18n">Measures</span><span class="dropdown"></span></div>
+ <div class="fields_list_body details">
+ <ul class="connectable"></ul>
+ </div>
+ <span class="clear_axis i18n hide" title="Clear Axis"></span>
+ <div class="clear"></div>
+ </div>
+ <div class="fields_list columns_fields" title="COLUMNS">
+ <div class="fields_list_header axis_fields_header disabled_toolbar"><span class="i18n">Columns</span><span class="dropdown"></span></div>
+ <div class="fields_list_body columns axis_fields">
+ <ul class="connectable"></ul>
+ </div>
+ <span class="clear_axis i18n hide" title="Clear Axis"></span>
+ <div class="clear"></div>
+ </div>
+ <div class="fields_list rows_fields" title="ROWS">
+ <div class="fields_list_header axis_fields_header disabled_toolbar"><span class="i18n">Rows</span><span class="dropdown"></span></div>
+ <div class="fields_list_body rows axis_fields">
+ <ul class="connectable"></ul>
+ </div>
+ <span class="clear_axis i18n hide" title="Clear Axis"></span>
+ <div class="clear"></div>
+ </div>
+ <div class="fields_list filter_fields" title="FILTER">
+ <div class="fields_list_header axis_fields_header disabled_toolbar"><span class="i18n">Filter</span><span class="dropdown"></span></div>
+ <div class="fields_list_body filter axis_fields">
+ <ul class="connectable"></ul>
+ </div>
+ <span class="clear_axis i18n hide" title="Clear Axis"></span>
+ <div class="clear"></div>
+ </div>
+ </div>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-workspace-toolbar">
+ <ul>
+ <li><a href="#open_query"
+ class="i18n open button sprite"
+ title="Open query" id="new_icon"></a></li>
+ <li><a href="#save_query" id="save_icon"
+ class="i18n save button disabled_toolbar sprite"
+ title="Save query"></a></li>
+ <li class="seperator"><a href="#new_query"
+ class="i18n new disabled_toolbar button sprite"
+ title="Reset query"></a></li>
+ <li><a href="#edit_query"
+ class="i18n edit button on disabled_toolbar sprite"
+ title="Edit query" id="edit_icon"></a></li>
+ <li class="seperator"><a href="#run_query" id="run_icon"
+ class="i18n run button disabled_toolbar sprite"
+ title="Run query"></a></li>
+ <li><a href="#automatic_execution" id="automatic_icon"
+ class="i18n auto button disabled_toolbar sprite"
+ title="Automatic execution"></a></li>
+<!--
+ <li><a href="#toggle_fields"
+ class="i18n toggle_fields button sprite"
+ title="Toggle fields"></a></li>
+ <li><a href="#toggle_sidebar"
+ class="i18n toggle_sidebar button sprite"
+ title="Toggle sidebar"></a></li>
+-->
+ <li class="seperator"><a href="#group_parents" id="group_icon"
+ class="i18n group_parents button disabled_toolbar sprite"
+ title="Hide Parents"></a></li>
+ <li><a href="#non_empty" id="non_empty_icon"
+ class="i18n non_empty button disabled_toolbar sprite"
+ title="Non-empty"></a></li>
+ <li><a href="#swap_axis" id="swap_axis_icon"
+ class="i18n swap_axis button disabled_toolbar sprite"
+ title="Swap axis"></a></li>
+ <li><a href="#show_mdx" id="show_mdx_icon"
+ class="i18n mdx button disabled_toolbar sprite"
+ title="Show MDX"></a></li>
+ <!-- <li><a href="#explain_query"
+ class="i18n explain_query button disabled_toolbar sprite"
+ title="Show Explain Plan"></a></li> -->
+ <li class="seperator"><a href="#zoom_mode" id="zoom_mode_icon"
+ class="i18n table_mode zoom_mode button disabled_toolbar"
+ title="Zoom into table"></a></li>
+ <li class="seperator"><a href="#query_scenario"
+ class="i18n table_mode query_scenario button disabled_toolbar sprite"
+ title="Query Scenario"></a></li>
+ <% if (Settings.REPORT_TITLES) { %>
+ <li class="seperator">
+ <a href="#workspace_report_titles"
+ class="i18n workspace_report_titles button disabled_toolbar sprite"
+ title="Report Titles"></a>
+ </li>
+ <% } %>
+ <li class="seperator"><a href="#drillacross" id="drillacross_icon"
+class="i18n table_mode drillacross button disabled_toolbar sprite"
+title="Drill across on cell"></a></li>
+ <li class="seperator"><a href="#drillthrough" id="drillthrough_icon"
+ class="i18n table_mode drillthrough button disabled_toolbar sprite"
+ title="Drill through on cell"></a></li>
+ <li><a href="#export_drillthrough" id="export_drillthrough_icon"
+ class="i18n table_mode drillthrough_export button disabled_toolbar sprite"
+ title="Export Drill-Through on cell to CSV"></a></li>
+ <li class="seperator"><a href="#export_xls" id="export_xls_icon"
+ class="i18n export_xls button disabled_toolbar sprite"
+ title="Export XLS"></a></li>
+ <li><a href="#export_csv" id="export_csv_icon"
+ class="i18n export_csv button disabled_toolbar sprite"
+ title="Export CSV"></a></li>
+ <li><a href="#export_pdf" id="export_pdf_icon"
+ class="i18n export_pdf button disabled_toolbar sprite"
+ title="EXPERIMENTAL: Export PDF"></a></li>
+ <li><a href="#switch_to_mdx" id="switch_to_mdx_icon"
+ class="i18n switch_to_mdx button disabled_toolbar"
+ title="Switch to MDX Mode"></a></li>
+ <% if (Settings.BIPLUGIN5 == true) { %>
+ <li class="seperator"><a href="#about"
+ class="i18n about button sprite"
+ title="About"></a></li>
+ <% } %>
+ </ul>
+
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-query-toolbar">
+ <div class="query_toolbar_vertical">
+ <ul class="renderer">
+ <li><a href="#switch_render_button" id="table_icon"
+ class="i18n render_table button disabled_toolbar on"
+ title="Table Mode"></a></li>
+ <li><a href="#switch_render_button" id="chart_icon"
+ class="i18n render_chart button disabled_toolbar"
+ title="Chart Mode"></a></li>
+ </ul>
+ <ul class='options table hide'>
+ <!--<li class="seperator_vertical label"><a class="i18n label disabled_toolbar">Options:</a></li> -->
+
+ <li class="seperator_vertical"><a href="#spark_bar" id="spark_bar_icon"
+ class="i18n spark_bar tablebutton button disabled_toolbar"
+ title="Spark Bar"></a></li>
+ <li><a href="#spark_line" id="spark_line_icon"
+ class="i18n spark_line button disabled_toolbar"
+ title="Spark Line"></a></li>
+ <!-- <li><a href="#asdf"
+ class="i18n button disabled_toolbar"
+ title="Spark Lines">Show Totals</a></li> -->
+
+ </ul>
+ <ul class='options chart hide'>
+ <li class="seperator_vertical"><a href ="#export_button"
+ class="disabled_toolbar export_button menu button"><span class="i18n">Export</span><span class="dropdown"></span></a></li>
+ <li><a href="#bar"
+ class="i18n bar chartoption button disabled_toolbar"
+ title="Bar"></a></li>
+ <li><a href="#stackedBar"
+ class="i18n stackedBar chartoption on button disabled_toolbar"
+ title="Stacked Bar"></a></li>
+ <li><a href="#stackedBar100"
+ class="i18n stackedBar100 chartoption button disabled_toolbar"
+ title="Bar 100%"></a></li>
+ <li><a href="#multiplebar"
+ class="i18n multiple chartoption button disabled_toolbar"
+ title="Multiple Bar Chart"></a></li>
+ <li><a href="#line"
+ class="i18n line chartoption button disabled_toolbar"
+ title="Line"></a></li>
+ <li><a href="#area"
+ class="i18n area chartoption button disabled_toolbar"
+ title="Area"></a></li>
+ <li><a href="#heatgrid"
+ class="i18n heatgrid chartoption button disabled_toolbar"
+ title="Heat Grid"></a></li>
+ <li><a href="#treemap"
+ class="i18n treemap chartoption button disabled_toolbar"
+ title="Tree Map"></a></li>
+ <li><a href="#sunburst"
+ class="i18n sunburst chartoption button disabled_toolbar"
+ title="Sunburst"></a></li>
+ <li><a href="#multiplesunburst"
+ class="i18n multiplesunburst chartoption button disabled_toolbar"
+ title="Multi Sunburst"></a></li>
+ <li><a href="#dot"
+ class="i18n dot chartoption button disabled_toolbar"
+ title="Dot"></a></li>
+ <li><a href="#waterfall"
+ class="i18n waterfall chartoption button disabled_toolbar"
+ title="Waterfall"></a></li>
+ <li><a href="#pie"
+ class="i18n pie chartoption button disabled_toolbar"
+ title="Pie"></a></li>
+ <li><a href="#radar"
+ class="i18n radar chartoption button disabled_toolbar"
+ title="Radar"></a></li>
+ <li><a href="#timewheel"
+ class="i18n timewheel chartoption button disabled_toolbar"
+ title="Time Wheel"></a></li>
+ <!-- <li><a href="#chart_editor"
+ class="i18n custom_chart button disabled_toolbar"
+ title="Custom">Custom</a></li> -->
+ </ul>
+ </div>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-open-dialog">
+ <div class="workspace" style="margin-left: -305px">
+ <div class="workspace_inner" style="margin-left: 305px">
+ <div class="workspace_toolbar hide">
+ <ul>
+ <li class='for_queries hide'><a href="#open_query" class="run button sprite"></a></li>
+ <li class='for_queries hide'><a href="#edit_query" class="edit button sprite"></a></li>
+ <li class='for_queries hide'><a href="#delete_query" class="delete button sprite"></a></li>
+ <li class='for_queries hide'><a href="#edit_permissions" class="edit_permissions button sprite"></a></li>
+ <!--
+ <li class='for_folder hide'><a href="#edit_folder" class="edit_folder button"></a></li>
+ -->
+ <li class='for_folder hide'><a href="#delete_folder" class="delete button sprite"></a></li>
+ <li class='for_folder hide'><a href="#edit_permissions" class="edit_permissions button sprite"></a></li>
+ </ul>
+ </div>
+ <div class="workspace_results">
+ </div>
+ </div>
+ </div>
+
+ <div class="sidebar queries" style="width: 300px;">
+ <h3 class="top" style="padding-top: 3px; padding-bottom: 2px;">
+ <div class="form-inline">
+ <label class="i18n">Search:</label>
+ <input type="text" class="repository_search_file form-control" style="padding-right: 0; width: 230px;"></input>
+ <span class="cancel_search" style="position: absolute; top: 8px; left: 270px;"></span>
+ <span class="add_folder_button"><a href="#" class="add_folder"></a></span>
+ </div>
+ </h3>
+ <div class="sidebar_inner">
+ <ul id="queries" class="RepositoryObjects">
+ <li class="i18n">Loading...</li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="sidebar_separator"></div>
+ <div class="clear"></div>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-repository-objects">
+ <% _.each( repoObjects, function( entry ) { %>
+ <% if( entry.type === 'FOLDER' ) { %>
+ <%= _.template($("#template-repository-folder").html())({ entry: entry }) %>
+ <% } else { %>
+ <%= _.template($("#template-repository-file").html())({ entry: entry }) %>
+ <% } %>
+ <% } ); %>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-repository-folder">
+ <% if(!Settings.REPOSITORY_LAZY) { %>
+ <li class='folder'>
+ <div class='folder_row'>
+ <span class='sprite folder collapsed'></span>
+ <a href="#<%= entry.path %>"><%= entry.name %></a>
+ </div>
+
+ <ul class='hide folder_content'>
+
+ <%= _.template($("#template-repository-objects").html())( { repoObjects: entry.repoObjects }) %>
+ </ul>
+ </li>
+ <% } else { %>
+ <li class='folder'>
+ <div class='folder_row'>
+ <span class='sprite folder collapsed'></span>
+ <a href="#<%= entry.path %>"><%= entry.name %></a>
+ </div>
+ </li>
+ <% } %>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-repository-folder-lazyload">
+ <ul class='folder_content'>
+ <%= _.template($("#template-repository-objects").html())( { repoObjects: repoObjects }) %>
+ </ul>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-repository-file">
+ <li class='query'>
+ <% if (Settings.ICON_16) { %>
+ <span class='icon_override' style='background-image: url(<%= Settings.ICON_16 %>);'></span>
+ <% } else { %>
+ <span class='icon'></span>
+ <% } %>
+ <a href="#<%= entry.path %>"><%= entry.name %></a>
+ </li>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-selections">
+ <div class="form-inline header_selections">
+ <label for="filter_selections" class="i18n">Search:</label> <input name="filter_selections"
+ id="filter_selections" disabled="true" type="text" class="form-control filterbox" /> <input class="i18n form-control search_term form_button" type="submit" value="Pre-Filter on Server" /><input class="i18n form-control clear_search form_button" type="submit" value="Clear Filter" /><br />
+ </div>
+ <div class="available_selections form-inline caption">
+ <span class="i18n">Available members:</span><br/>
+ <div class="selection_options" ><ul></ul></div>
+ </div>
+ <div class="selection_buttons">
+ <a class="form_button btn btn-default" href="#move_selection" id="add_members"> >
+ </a><br><br>
+ <a class="form_button btn btn-default" href="#move_selection" id="add_all_members">>></a><br><br>
+ <a class="form_button btn btn-default" href="#move_selection" id="remove_all_members"><<</a><br><br>
+ <a class="form_button btn btn-default" href="#move_selection" id="remove_members"> < </a>
+ </div>
+ <div class="used_selections form-inline caption">
+ <span class="i18n">Used members:</span>
+ <span>
+ <input class="selection_type selection_type_inclusion" type="radio" name="inclusion_type" value="INCLUSION" checked="true"><span class="i18n">Include</span>
+ <input class="selection_type selection_type_exclusion" type="radio" name="inclusion_type"
+ value="EXCLUSION"><span class="i18n">Exclude</span>
+ </span>
+ <br/>
+ <div class="selection_options" ><ul></ul></div>
+ </div>
+ <div class="updown_buttons">
+ <a class="form_button" href="#up" id="up_members"> ↑ </a><br><br>
+ <a class="form_button" href="#down" id="down_members"> ↓ </a><br><br>
+ </div>
+
+ <div class="options form-inline">
+ <input class="form-control" name="show_unique" id="show_unique" type="checkbox" /> <label
+ for="show_unique"
+ class="i18n">Show Unique Names</label><br />
+ <input name="use_result" class="form-control" id="use_result" type="checkbox" /> <label for="use_result"
+ class="i18n">Use Result</label><br />
+ <div id="div-totals-container">
+ <div class="totals_container">
+ <label for="per_metrics_totals_checkbox" class="i18n">Totals per metrics</label>
+ <input type="checkbox" id="per_metrics_totals_checkbox"/>
+
+ </div>
+ <div class="totals_container all_metrics_container">
+ <strong>All Measures - </strong>
+ <label for="show_totals" class="i18n">Sub totals</label>
+ <select class="form-control" id="all_measures_select">
+ <option class="i18n" value="not" selected="selected">None</option>
+ <option class="i18n" value="sum">Sum</option>
+ <option class="i18n" value="min">Min</option>
+ <option class="i18n" value="max">Max</option>
+ <option class="i18n" value="avg">Avg</option>
+ </select>
+ </div>
+ </div>
+ <div class="form-inline">
+ <label for="parameter" class="parameter hidden i18n">Parameter Name</label> <input
+ name="parameter" id="parameter" class="form-control parameter hidden" type="text" /></div>
+ </div>
+ <div class="info">
+ <div><label for="items_size" class="i18n">Items</label>: <span class="items_size"></span></div>
+ <div><span class="warning i18n"></span></div>
+ </div>
+
+ <div class="hint">
+ <div><label for="search_limit" class="i18n">Display Limit</label>: <span class="members_limit"></span></div>
+ <div><label for="search_limit" class="i18n">Filter Limit</label>: <span class="search_limit"></span></div>
+ </div>
+
+ <div class="autocomplete"></div>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-selections-totals">
+ <div class="totals_container per_metrics_container">
+ <strong><%= measure.name %> - </strong>
+ <label for="show_totals" class="i18n">Sub totals</label>
+ <select class="form-control show_totals_select">
+ <option class="i18n" value="nil" selected="selected">None</option>
+ <option class="i18n" value="sum">Sum</option>
+ <option class="i18n" value="min">Min</option>
+ <option class="i18n" value="max">Max</option>
+ <option class="i18n" value="avg">Avg</option>
+ </select>
+
+ </div>
+</script>
+<script type="text/x-jquery-tmpl" id="template-selections-options">
+ <ul>
+ <li class="i18n all_options"><input type="checkbox" class="check_all_option"
+ id="check_all_option"><label for="check_all_option" class="i18n">All Members</label></li>
+ <% var counter = 0;
+ _.each(options, function(option) {
+ counter++; %>
+ <% if (!option.calc) { %>
+ <li class="option_value">
+ <input type="checkbox" class="check_option"
+ value="<%= encodeURIComponent(option.obj ? option.obj.uniqueName : option.uniqueName) %>" name="selections_checker"
+ id="selections_checker<%= counter %>"
+ label="<%= encodeURIComponent(option.obj ? option.obj.caption : option.caption) %>" />
+ <label for="selections_checker<%= counter %>" class="caption"><%= option.obj ? option.obj.caption : option.caption
+ %></label>
+ <label for="selections_checker<%= counter %>" class="unique"><%= option.obj ? option.obj.uniqueName : option.uniqueName
+ %></label>
+ </li>
+ <% } else { %>
+ <li class="option_value">
+ <input type="checkbox" class="check_option cmember"
+ value="<%= encodeURIComponent(option.obj ? option.obj.uniqueName : option.uniqueName) %>" name="selections_checker"
+ id="selections_checker<%= counter %>"
+ label="<%= encodeURIComponent(option.obj ? option.obj.caption : option.caption) %>" />
+ <label for="selections_checker<%= counter %>" class="caption" style="color: blue;"><%=
+ option.obj ? option.obj.caption : option.caption %></label>
+ <label for="selections_checker<%= counter %>" class="unique" style="color: blue;"><%=
+ option.obj ? option.obj.uniqueName : option.uniqueName %></label>
+ </li>
+ <% } %>
+ <% }); %>
+ </ul>
+ </script>
+
+
+<script type="text/x-jquery-tmpl" id="template-permissions">
+ <div class="permissions">
+
+ <label for="filter_roles" class="i18n">Add role permission:</label>
+ <br />
+ <form class="form-inline">
+ <input name="filter_roles" id="filter_roles" type="text" class="filterbox form-control" />
+ <input type="submit" value="Add" class="i18n add_role btn btn-primary" />
+ </form>
+ <input type="checkbox" class="acl" value="READ" /><span class="i18n">READ</span>
+ <input type="checkbox" class="acl" value="WRITE" /><span class="i18n">WRITE</span>
+ <input type="checkbox" class="acl" value="GRANT" /><span class="i18n">GRANT</span>
+ <br />
+ <br />
+ <span class="i18n">Roles:</span>
+ <div class="rolelist"></div>
+ <br />
+ <input type="submit" value="Remove permission" class="i18n btn btn-danger remove_acl" />
+ </div>
+ <br />
+ <div class="private">
+ <input type="checkbox" class="private" value="PRIVATE" /><span class="i18n">Keep this file private to me</span> (<b><%= Saiku.session.username %></b>)
+ <br /><br />
+ <span class="private_owner" style="display:none;"><span class="i18n">Currently private to:</span> <span class="owner"></span></span>
+ </div>
+ <br />
+ </script>
+<script type="text/x-jquery-tmpl" id="template-permissions-rolelist">
+ <select class="select_roles" multiple size="4">
+ <% _.each(roles, function(grants, role) {
+ var aclstring ="";
+ _.each(grants, function(grant, index) {
+ aclstring += (index > 0 ? (", " + grant) : grant);
+ });
+ %>
+ <option value="<%=role %>"><%= role + " [" + aclstring + "]" %></option>
+ <% }); %>
+ </select>
+ </script>
+
+<script type="text/x-jquery-tmpl" id="template-drillthrough">
+ <div class="row_limit">
+ <br />
+ <span class="i18n">Row Limit: (0 = none)</span> <input id="maxrows" name="maxrows" class="maxrows" type="text" />
+ <br />
+ <span class="i18n"><b>CAUTION:</b> The number of rows can have a significant impact on the performance of the following action.</span>
+ </div>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-drillacross">
+</script>
+<script type="text/x-jquery-tmpl" id="template-drillthrough-list">
+ <div class="sidebar" style="border:1px solid #CCCCCC">
+ <h3><input type="checkbox" class="all_dimensions"/> <span class="i18n">Dimensions</span></h3>
+ <div class="sidebar_inner dimension_tree"></div>
+ <h3><input type="checkbox" class="all_measures"/> <span class="i18n">Measures</span></h3>
+ <div class="sidebar_inner measure_tree"></div>
+ </div>
+
+ <div class="sidebar_separator"></div>
+ <div class="clear"></div>
+ </script>
+<script type="text/x-jquery-tmpl" id="template-drillthrough-dimensions">
+<ul>
+<% _.each(dimensions, function(dimension) { %>
+<% if (dimension.name != 'Measures' && (typeof dimension["visible"] == "undefined" || dimension["visible"])) { %>
+<li class='parent_dimension'>
+<span class="root collapsed sprite"></span>
+<input type="checkbox" class="check_dimension" />
+<a class="folder_collapsed sprite" href="#" title="<%= dimension.description ? dimension.description : dimension.caption %>"><%= dimension.caption %></a>
+<ul>
+<% _.each(dimension.hierarchies, function(hierarchy) { %>
+<% if (typeof hierarchy["visible"] == "undefined" || hierarchy["visible"]) { %>
+<% if (dimension.hierarchies.length > 1) { %>
+<li class="hierarchy hide">
+<a class="dimension" title="<%= hierarchy.description ? hierarchy.description : hierarchy.caption %>" href="#" key="<%= dimension.name %>###<%= hierarchy.name %>"><%= hierarchy.caption %></a>
+</li>
+<% } %>
+<% } %>
+<% _.each(hierarchy.levels, function(level) { %>
+<% if (typeof level["visible"] == "undefined" || level["visible"]) { %>
+<% if (level.caption !== "(All)" || level.levelType !== "All" || level.levelType !== "ALL") { %>
+<li class="hide">
+<input type="checkbox" class="check_level" value="<%= level.uniqueName %>" key="<%= dimension.name %>###<%= hierarchy.name %>"> <%= level.caption %></input>
+</li>
+<% } %>
+<% } %>
+<% }); %>
+<% }); %>
+</ul>
+<% } %>
+<% }); %>
+</ul>
+</script>
+
+<script type="text/x-jquery-tmpl" id="template-drillthrough-measures">
+<ul>
+<li>
+<span class="root expand sprite"></span>
+<a href="#" title="Measures" class="folder_expand i18n sprite">Measures</a>
+<ul>
+<% _.each(measures, function(measure) { %>
+<% if (typeof measure["visible"] == "undefined" || measure["visible"]) { %>
+<% if(typeof measure.calculated == "undefined" || (measure.calculated == false || allMeasures)) { %>
+<li>
+<input type="checkbox" class="check_level" value="<%= measure.uniqueName %>" key="Measures###<%= measure.name %>"> <%= measure.caption %></input>
+</li>
+<% } %>
+<% } %>
+<% }); %>
+</ul>
+</li>
+</ul>
+</script>
+<script type="text/javascript" src="js/ga.js"></script>
+</body>
+</html>
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/DTOInfoDialog.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/DTOInfoDialog.java
index d6ecc39..93a7633 100644
--- a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/DTOInfoDialog.java
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/DTOInfoDialog.java
@@ -133,6 +133,9 @@
}
public void setDto(Object dto) {
+ if(dto == null) {
+ return;
+ }
String createUser = BeanUtils.getCreateUser(dto);
if(createUser != null) {
createdByProp.setValue(createUser);
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/MDXDialog.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/MDXDialog.java
index e861fc9..55fea35 100644
--- a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/MDXDialog.java
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/MDXDialog.java
@@ -15,7 +15,10 @@
*/
package org.eclipse.osbp.utils.vaadin;
+import java.sql.Connection;
+import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -44,6 +47,7 @@
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
+import mondrian.olap4j.MondrianOlap4jDriver;
import mondrian.rolap.RolapConnection;
public class MDXDialog extends Window implements DetachListener { // NOSONAR
@@ -134,7 +138,18 @@
if (tableLayout != null) {
subLayout.removeComponent(tableLayout);
}
- DerivedCellSet cellSet = new DerivedCellSet(persistenceService.sendQuery(connection, input.getValue()),
+ RolapConnection rolapConnection = connection;
+ Connection connection;
+ // (JCD) : temporarily disabled to avoid errors with mondrian 4
+// try {
+// connection = new MondrianOlap4jDriver().connect(rolapConnection);
+// Statement statement = connection.createStatement();
+// ResultSet result = statement.executeQuery(input.getValue());
+// } catch (SQLException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
+ DerivedCellSet cellSet = new DerivedCellSet(persistenceService.sendQuery(this.connection, input.getValue()),
dslMetadataService, user);
coordinateSystem.clear();
for (int axis = 0; axis < cellSet.getAxes().size(); axis++) {
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/ViewLayoutManager.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/ViewLayoutManager.java
index 91e8d70..9b77443 100644
--- a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/ViewLayoutManager.java
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/ViewLayoutManager.java
@@ -15,10 +15,14 @@
*/
package org.eclipse.osbp.utils.vaadin;
+import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.osbp.ui.api.layout.IViewLayoutManager;
import org.eclipse.osbp.ui.api.themes.EnumCssClass;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
+import org.eclipse.osbp.ui.api.themes.IThemeResourceService.ThemeResourceType;
import com.vaadin.server.Extension;
+import com.vaadin.server.Page;
import com.vaadin.ui.AbstractOrderedLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
@@ -33,9 +37,15 @@
private HorizontalLayout topArea;
private VerticalLayout sideArea;
private VerticalLayout dataArea;
+ private String caption;
@Override
public void init(AbstractOrderedLayout parent) {
+ init(parent, null, null);
+ }
+
+ @Override
+ public void init(AbstractOrderedLayout parent, String styleName, String imagePath) {
label = new Label();
label.addStyleName(EnumCssClass.VIEW_HEADER_H2.toString());
label.setSizeUndefined();
@@ -51,7 +61,11 @@
dataArea = new VerticalLayout();
dataArea.addStyleName(EnumCssClass.DATA_AREA.toString());
dataArea.setSizeFull();
-
+ if(imagePath != null) {
+ dataArea.addStyleName(styleName);
+ addStyle(styleName, imagePath);
+ }
+
HorizontalLayout multiArea = new HorizontalLayout(sideArea, dataArea);
multiArea.addStyleName(EnumCssClass.MULTI_AREA.toString());
multiArea.setSizeFull();
@@ -71,6 +85,17 @@
}
}
+ private void addStyle(String styleName, String imagePath) {
+ String style = "."+styleName+" { background: url(\""+
+ imagePath+
+ "\") no-repeat ;" + // center center fixed
+ "-webkit-background-size: cover;" +
+ "-moz-background-size: cover;" +
+ "-o-background-size: cover;" +
+ "background-size: cover; }";
+ Page.getCurrent().getStyles().add(style);
+ }
+
@Override
public void addExtension(Extension extension) {
workArea.addExtension(extension);
@@ -83,6 +108,7 @@
@Override
public void setLabelValue(String text) {
+ this.caption = text;
if(text == null || text.isEmpty()) {
label.setWidth("0px");
label.setHeight("0px");
@@ -105,5 +131,9 @@
public VerticalLayout getDataArea() {
return dataArea;
}
-
+
+ @Override
+ public String getCaption() {
+ return caption;
+ }
}
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnRenderer.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnRenderer.java
index c1f0004..d1e584a 100644
--- a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnRenderer.java
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnRenderer.java
@@ -5,7 +5,6 @@
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.osbp.bpm.api.IBPMEngine;
-import org.eclipse.osbp.bpm.api.IBlipBPMFunctionProvider;
import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherCommand;
import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
@@ -32,7 +31,6 @@
private transient BpmnConverter bpmnConverter;
private transient IBPMEngine bpmEngine;
- private transient IBlipBPMFunctionProvider blip;
private transient IDSLMetadataService dslMetadataService;
private transient IUser user;
private String processId;
@@ -43,7 +41,7 @@
private Locale locale;
private YesNoDialog yesnoWindow;
private String yesNoUuid;
- private IEventDispatcher eventDispatcher;
+ private transient IEventDispatcher eventDispatcher;
@Override
public boolean equals(Object obj) {
@@ -55,9 +53,8 @@
return super.hashCode();
}
- public BpmnRenderer(IBPMEngine bpmEngine, IBlipBPMFunctionProvider blip, IEclipseContext context) {
+ public BpmnRenderer(IBPMEngine bpmEngine, IEclipseContext context) {
this.bpmEngine = bpmEngine;
- this.blip = blip;
user = context.get(IUser.class);
dslMetadataService = context.get(IDSLMetadataService.class);
eventDispatcher = context.get(IEventDispatcher.class);
@@ -146,7 +143,7 @@
UI.getCurrent().removeWindow(yesnoWindow);
yesnoWindow = null;
}
- blip.startProcess(processId);
+ bpmEngine.startProcess(processId);
}
if(event.getCommand() == EventDispatcherCommand.NO && event.getSender().equals(getClass().getCanonicalName()) && event.getTopic().equals(yesNoUuid)) {
if(yesnoWindow != null) {
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnView.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnView.java
index d7a3a06..1248c40 100644
--- a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnView.java
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnView.java
@@ -50,10 +50,6 @@
@Optional
private IBPMEngine bpmEngine;
- @Inject
- @Named("Blip")
- private IBlipBPMFunctionProvider blip;
-
private VerticalLayout workArea;
private BpmnRenderer bpmnRenderer;
@@ -74,7 +70,7 @@
@PostConstruct
public void createView(final VerticalLayout parent) {
parent.setPrimaryStyleName("osbp");
- bpmnRenderer = new BpmnRenderer(bpmEngine, blip, eclipseContext);
+ bpmnRenderer = new BpmnRenderer(bpmEngine, eclipseContext);
VerticalLayout inner = new VerticalLayout();
inner.setMargin(false);
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnWindow.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnWindow.java
index 06b70de..ccbd3fe 100644
--- a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnWindow.java
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/bpmn/BpmnWindow.java
@@ -37,7 +37,7 @@
private float height = 650;
private VerticalLayout inner;
- public BpmnWindow(IBPMEngine bpmEngine, IBlipBPMFunctionProvider blip, IEclipseContext context) {
+ public BpmnWindow(IBPMEngine bpmEngine, IEclipseContext context) {
super();
setClosable(true);
setModal(false);
@@ -47,7 +47,7 @@
setContent(inner);
inner.setPrimaryStyleName("osbp");
addDetachListener(this);
- bpmnRenderer = new BpmnRenderer(bpmEngine, blip, context);
+ bpmnRenderer = new BpmnRenderer(bpmEngine, context);
inner.addComponent(bpmnRenderer);
}
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuRenderState.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuRenderState.java
new file mode 100644
index 0000000..368a146
--- /dev/null
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuRenderState.java
@@ -0,0 +1,57 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.utils.vaadin.saiku;
+
+import com.vaadin.shared.ui.JavaScriptComponentState;
+
+
+@SuppressWarnings("all")
+public class SaikuRenderState extends JavaScriptComponentState {
+ public String htmlTagId = "SaikuWindowJs";
+
+ public String saikuJsJQueryPlaceHolderCode = "";
+
+ public String saikuJQueryTemplateToolbarCode = "";
+ public String saikuJQueryTemplateUpgradeCode = "";
+ public String saikuJQueryTemplateLogincountCode = "";
+ public String saikuJQueryTemplateCubesCode = "";
+ public String saikuJQueryTemplateDimensionsCode = "";
+ public String saikuJQueryTemplateMeasuresCode = "";
+ public String saikuJQueryTemplateCalculatedMeasuresCode = "";
+ public String saikuJQueryTemplateCalculatedMemberCode = "";
+ public String saikuJQueryTemplateWorkspaceCode = "";
+ public String saikuJQueryTemplateAttributesCode = "";
+ public String saikuJQueryTemplateWorkspaceDropzonesCode = "";
+ public String saikuJQueryTemplateWorkspaceToolbarCode = "";
+ public String saikuJQueryTemplateQueryToolbarCode = "";
+ public String saikuJQueryTemplateOpenDialogCode = "";
+ public String saikuJQueryTemplateRepositoryObjectsCode = "";
+ public String saikuJQueryTemplateRepositoryFolderCode = "";
+ public String saikuJQueryTemplateRepositoryFolderLazyloadCode = "";
+ public String saikuJQueryTemplateRepositoryFileCode = "";
+ public String saikuJQueryTemplateSelectionsCode = "";
+ public String saikuJQueryTemplateSelectionsTotalsCode = "";
+ public String saikuJQueryTemplateSelectionsOptionsCode = "";
+ public String saikuJQueryTemplatePermissionsCode = "";
+ public String saikuJQueryTemplatePermissionsRolelistCode = "";
+ public String saikuJQueryTemplateDrillthroughCode = "";
+ public String saikuJQueryTemplateDrillacrossCode = "";
+ public String saikuJQueryTemplateDrillthroughListCode = "";
+ public String saikuJQueryTemplateDrillthroughDimensionsCode = "";
+ public String saikuJQueryTemplateDrillthroughMeasuresCode = "";
+
+
+}
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuRenderer.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuRenderer.java
new file mode 100644
index 0000000..627bb67
--- /dev/null
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuRenderer.java
@@ -0,0 +1,365 @@
+package org.eclipse.osbp.utils.vaadin.saiku;
+
+import java.util.Locale;
+import java.util.UUID;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
+import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.user.IUser;
+import org.eclipse.osbp.utils.vaadin.YesNoDialog;
+import org.slf4j.Logger;
+
+import com.vaadin.annotations.JavaScript;
+import com.vaadin.annotations.StyleSheet;
+import com.vaadin.server.Page;
+import com.vaadin.shared.communication.PushMode;
+import com.vaadin.ui.AbstractJavaScriptComponent;
+import com.vaadin.ui.JavaScriptFunction;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.UI;
+
+import elemental.json.JsonArray;
+
+
+@StyleSheet({
+ "theme://plugin/saiku.osgi/resources/css/saiku/src/bootstrap.css",
+ "theme://plugin/saiku.osgi/resources/js/tourist/tourist.css",
+ "theme://plugin/saiku.osgi/resources/js/intro/introjs.min.css",
+ "theme://plugin/saiku.osgi/resources/js/qtip/jquery.qtip.min.css",
+
+ // <!-- jQuery CSS -->
+ "theme://plugin/saiku.osgi/resources/css/jquery/spectrum.css",
+ "theme://plugin/saiku.osgi/resources/css/jquery/jquery-ui.css",
+ "theme://plugin/saiku.osgi/resources/css/saiku/src/giveitsomestyle.css",
+ "theme://plugin/saiku.osgi/resources/js/fancybox/jquery.fancybox.css",
+ "theme://plugin/saiku.osgi/resources/js/jquery/jquery.contextMenu.css",
+
+ // <!-- Saiku CSS -->
+ "theme://plugin/saiku.osgi/resources/css/saiku/src/styles.css",
+ "theme://plugin/saiku.osgi/resources/css/saiku/src/saiku.table.css",
+ "theme://plugin/saiku.osgi/resources/css/saiku/src/saiku.dropzone.css",
+
+ // <!-- CCC dependencies -->
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/tipsy.css"
+
+})
+
+@JavaScript({
+// "theme://plugin/saiku.osgi/resources/js/ccMxClient.js",
+ //<!-- jQuery 1.7.2 , jQuery UI 1.8.14-->
+// "theme://plugin/saiku.osgi/resources/js/jquery/jquery.min.js",
+ "theme://plugin/saiku.osgi/resources/js/jquery/jquery-3.3.1.js",
+ "theme://plugin/saiku.osgi/resources/js/jquery/jquery-ui.min.js",
+ "theme://plugin/saiku.osgi/resources/js/jquery/jquery.contextMenu.js",
+ "theme://plugin/saiku.osgi/resources/js/jquery/jquery-mobile-touch.js",
+ "theme://plugin/saiku.osgi/resources/js/jquery/jquery.blockUI.js",
+ "theme://plugin/saiku.osgi/resources/js/jquery/spectrum.js",
+ "theme://plugin/saiku.osgi/resources/js/js-yaml/js-yaml.min.js",
+ "theme://plugin/saiku.osgi/resources/js/fancybox/jquery.fancybox.pack.js",
+ // <!-- Backbone.js and deps -->
+ "theme://plugin/saiku.osgi/resources/js/backbone/underscore.js",
+ "theme://plugin/saiku.osgi/resources/js/backbone/json2.js",
+ "theme://plugin/saiku.osgi/resources/js/backbone/backbone.js",
+ "theme://plugin/saiku.osgi/resources/js/backbone/backbone-model-file-upload.js" ,
+ "theme://plugin/saiku.osgi/resources/js/notify/notify.min.js",
+ "theme://plugin/saiku.osgi/resources/js/fitvids/jquery.fitvids.js",
+ "theme://plugin/saiku.osgi/resources/js/notify/styles/bootstrap/notify-bootstrap.js",
+ "theme://plugin/saiku.osgi/resources/js/qtip/imagesloaded.pkg.min.js",
+ "theme://plugin/saiku.osgi/resources/js/qtip/jquery.qtip.min.js",
+ "theme://plugin/saiku.osgi/resources/js/tourist/tourist.js",
+ "theme://plugin/saiku.osgi/resources/js/ozpIwc/ozpIwc-client.min.js",
+ "theme://plugin/saiku.osgi/resources/js/intro/intro.min.js",
+ // <!-- Saiku Project -->
+ "theme://plugin/saiku.osgi/resources/js/saiku/Settings.js",
+ //<!-- Loggly error logging service -->
+ "theme://plugin/saiku.osgi/resources/js/logger/janky.post.min.js",
+ "theme://plugin/saiku.osgi/resources/js/logger/Logger.js",
+ // <!-- D3 Library -->
+ "theme://plugin/saiku.osgi/resources/js/d3/d3.v3.min.js",
+ // <!-- Rest -->
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/SaikuOlapQuery.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/DateFilter.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Level.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/render/SaikuRenderer.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/render/SaikuTableRenderer.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/render/SaikuChartRenderer.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Dimension.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/DimensionList.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/Toolbar.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/Upgrade.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/Modal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/MDXModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/SelectionsModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/DrillthroughModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/DrillAcrossModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/PermissionsModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/DemoLoginForm.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/LoginForm.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/AboutModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/OverwriteModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/AddFolderModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/FilterModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/CustomFilterModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/CalculatedMemberModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/ParentMemberSelectorModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/DataSourcesModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/QueryToolbar.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/WorkspaceToolbar.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/WorkspaceDropZone.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/Table.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/Workspace.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/DeleteRepositoryObject.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/MoveRepositoryObject.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/OpenQuery.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/SaveQuery.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/OpenDialog.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/TabSet.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/Tab.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Repository.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Result.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/QueryAction.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/QueryScenario.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Query.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/SessionErrorModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/WarningModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/ReportTitlesModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/GrowthModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/FormatAsPercentageModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Session.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/SplashScreen.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/SessionWorkspace.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Member.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Plugin.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/Settings.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/License.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/models/DataSources.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/Saiku.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/DateFilterModal.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/adapters/SaikuServer.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/routers/QueryRouter.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/views/Tour.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/I18n/plugin.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/Intro/plugin.js",
+ //<!-- CCC dependencies -->
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/jquery.tipsy.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/protovis.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/protovis-msie.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/tipsy.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/def.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/cdo.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/plugins/CCC_Chart2/pvc.js",
+ "theme://plugin/saiku.osgi/resources/js/saiku/embed/SaikuEmbed.js",
+ //<!-- ACE Editor for MDX -->
+ "theme://plugin/saiku.osgi/resources/js/ace/ace.js",
+
+ //"theme://plugin/saiku.osgi/resources/js/ga.js",
+
+
+ "js/SaikuRendererJsClass.js" })
+
+
+public class SaikuRenderer extends AbstractJavaScriptComponent implements IUser.UserLocaleListener, IEventDispatcher.Receiver {
+ private static final long serialVersionUID = 1025480199756469267L;
+ private static Logger log = org.slf4j.LoggerFactory.getLogger(SaikuRenderer.class);
+
+// private transient BpmnConverter bpmnConverter;
+ private transient IDSLMetadataService dslMetadataService;
+ private transient IUser user;
+ private String processId;
+ private YesNoDialog yesnoDialog;
+ private String startProcessText;
+ private String answerYesText;
+ private String answerNoText;
+ private Locale locale;
+ private YesNoDialog yesnoWindow;
+ private String yesNoUuid;
+ private IEventDispatcher eventDispatcher;
+ private SaikujQueryTemplates queryTemplates;
+ @Override
+ public boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ public SaikuRenderer(IEclipseContext context) {
+ user = context.get(IUser.class);
+ dslMetadataService = context.get(IDSLMetadataService.class);
+ eventDispatcher = context.get(IEventDispatcher.class);
+ user.addUserLocaleListener(this);
+ locale = user.getLocale();
+ eventDispatcher.addEventReceiver(this);
+ localeChanged(locale);
+ queryTemplates = new SaikujQueryTemplates();
+ addFunction("onStartClick", new JavaScriptFunction() {
+ @Override
+ public void call(JsonArray arguments){
+ // ask to start process
+ yesNoUuid = UUID.randomUUID().toString();
+ yesnoWindow = yesnoDialog.init(eventDispatcher, SaikuRenderer.this.getClass().getCanonicalName(), yesNoUuid, null, startProcessText, answerYesText, answerNoText);
+ UI.getCurrent().addWindow(yesnoWindow);
+ }
+ });
+ addFunction("onSelectedClick", new JavaScriptFunction() {
+ @Override
+ public void call(JsonArray arguments){
+ // start task
+ }
+ });
+ }
+
+ public boolean drawSaiku() {
+ log.debug("start creating saiku");
+ setSizeFull();
+ getState().saikuJsJQueryPlaceHolderCode = getSaikuJsJQueryPlaceHolderCode();
+ getState().saikuJQueryTemplateToolbarCode = queryTemplates.getTemplateToolbar();
+ getState().saikuJQueryTemplateUpgradeCode = queryTemplates.getTemplateUpgrade();
+ getState().saikuJQueryTemplateLogincountCode = queryTemplates.getTemplateLogincount();
+ getState().saikuJQueryTemplateCubesCode = queryTemplates.getTemplateCubes();
+ getState().saikuJQueryTemplateDimensionsCode = queryTemplates.getTemplateDimensions();
+ getState().saikuJQueryTemplateMeasuresCode = queryTemplates.getTemplateMeasures();
+ getState().saikuJQueryTemplateCalculatedMeasuresCode = queryTemplates.getTemplateCalculatedMeasures();
+ getState().saikuJQueryTemplateCalculatedMemberCode = queryTemplates.getTemplateCalculatedMember();
+ getState().saikuJQueryTemplateWorkspaceCode = queryTemplates.getTemplateWorkspace();
+ getState().saikuJQueryTemplateAttributesCode = queryTemplates.getTemplateAttributes();
+ getState().saikuJQueryTemplateWorkspaceDropzonesCode = queryTemplates.getTemplateWorkspaceDropzones();
+ getState().saikuJQueryTemplateWorkspaceToolbarCode = queryTemplates.getTemplateWorkspaceToolbar();
+ getState().saikuJQueryTemplateQueryToolbarCode = queryTemplates.getTemplateQueryToolbar();
+ getState().saikuJQueryTemplateOpenDialogCode = queryTemplates.getTemplateOpenDialog();
+ getState().saikuJQueryTemplateRepositoryObjectsCode = queryTemplates.getTemplateRepositoryObjects();
+ getState().saikuJQueryTemplateRepositoryFolderCode = queryTemplates.getTemplateRepositoryFolder();
+ getState().saikuJQueryTemplateRepositoryFolderLazyloadCode = queryTemplates.getTemplateRepositoryFolderLazyLoad();
+ getState().saikuJQueryTemplateRepositoryFileCode = queryTemplates.getTemplateRepositoryFile();
+ getState().saikuJQueryTemplateSelectionsCode = queryTemplates.getTemplateSelections();
+ getState().saikuJQueryTemplateSelectionsTotalsCode = queryTemplates.getTemplateSelectionsTotals();
+ getState().saikuJQueryTemplateSelectionsOptionsCode = queryTemplates.getTemplateSelectionsOptions();
+ getState().saikuJQueryTemplatePermissionsCode = queryTemplates.getTemplatePermissions();
+ getState().saikuJQueryTemplatePermissionsRolelistCode = queryTemplates.getTemplatePermissionsRolelist();
+ getState().saikuJQueryTemplateDrillthroughCode = queryTemplates.getTemplateDrillthrough();
+// getState().saikuJQueryTemplateDrillacrossCode = queryTemplates.getTemplateDrillacross();
+ getState().saikuJQueryTemplateDrillthroughListCode = queryTemplates.getTemplateDrillthroughList();
+ getState().saikuJQueryTemplateDrillthroughDimensionsCode = queryTemplates.getTemplateDrillthroughDimensions();
+ getState().saikuJQueryTemplateDrillthroughMeasuresCode = queryTemplates.getTemplateDrillthroughMeasures();
+
+ log.debug("finished creating saiku");
+ return true;
+ }
+
+ @Override
+ public SaikuRenderState getState() {
+ return (SaikuRenderState) super.getState();
+ }
+
+ public void dispose() {
+ user.removeUserLocaleListener(this);
+ eventDispatcher.removeEventReceiver(this);
+ }
+
+ @Override
+ public void localeChanged(Locale locale) {
+ this.locale = locale;
+ startProcessText = dslMetadataService.translate(locale.toLanguageTag(),"startProcessText");
+ answerYesText = dslMetadataService.translate(locale.toLanguageTag(),"yes");
+ answerNoText = dslMetadataService.translate(locale.toLanguageTag(),"no");
+ }
+
+ @Override
+ public void receiveEvent(EventDispatcherEvent event) {
+// if(event.getCommand() == EventDispatcherCommand.BPMN) {
+ processId = event.getTopic();
+ UI.getCurrent().access(new Runnable() {
+ @Override
+ public void run() {
+// UI.getCurrent().getPushConfiguration().setPushMode(PushMode.DISABLED);
+// UI.getCurrent().setPollInterval(-1);
+// Notification.show("Push disabled!");
+ drawSaiku();
+ Page.getCurrent().getJavaScript().execute("document.readyState = \"loading\"");
+// Page.getCurrent().getJavaScript().execute("window.document.dispatchEvent(new Event('DOMContentLoaded', {" +
+// " bubbles: true," +
+// " cancelable: false" +
+// "}))");
+
+ }
+ });
+// }
+ }
+
+ private String getSaikuJsJQueryPlaceHolderCode() {
+ String placeHolderScript = String.join("\n",
+// "<!-- CHOSEN PLACEHOLDER -->",
+// "<script type=\"text/javascript\">",
+// "",
+ " // Replace the normal jQuery getScript function with one that supports",
+ " // debugging and which references the script files as external resources",
+ " // rather than inline.",
+ " jQuery.extend({",
+ " getScript: function(url, callback) {",
+ " var head = document.getElementsByTagName(\"head\")[0];",
+ " var script = document.createElement(\"script\");",
+ " script.src = url;",
+ "",
+ " // Handle Script loading",
+ " {",
+ " var done = false;",
+ "",
+ " // Attach handlers for all browsers",
+ " script.onload = script.onreadystatechange = function(){",
+ " if ( !done && (!this.readyState || this.readyState == \"loaded\" || this.readyState == \"complete\") ) {",
+ " done = true;",
+ " if (callback)",
+ " callback();",
+ "",
+ " // Handle memory leak in IE",
+ " script.onload = script.onreadystatechange = null;",
+ " }",
+ " };",
+ " }",
+ "",
+ " head.appendChild(script);",
+ " ",
+ " // We handle everything using the script element injection",
+ " return undefined;",
+ " }",
+ " });"/*,
+ "</script>"*/);
+ StringBuffer strBuf = new StringBuffer(placeHolderScript);
+// StringBuffer strBuf = new StringBuffer();
+// strBuf.append(queryTemplates.getTemplateToolbar());
+// strBuf.append(queryTemplates.getTemplateUpgrade());
+// strBuf.append(queryTemplates.getTemplateLogincount());
+// strBuf.append(queryTemplates.getTemplateCubes());
+// strBuf.append(queryTemplates.getTemplateDimensions());
+// strBuf.append(queryTemplates.getTemplateMeasures());
+// strBuf.append(queryTemplates.getTemplateCalculatedMeasures());
+// strBuf.append(queryTemplates.getTemplateCalculatedMember());
+// strBuf.append(queryTemplates.getTemplateWorkspace());
+// strBuf.append(queryTemplates.getTemplateAttributes());
+// strBuf.append(queryTemplates.getTemplateWorkspaceDropzones());
+// strBuf.append(queryTemplates.getTemplateWorkspaceToolbar());
+// strBuf.append(queryTemplates.getTemplateQueryToolbar());
+// strBuf.append(queryTemplates.getTemplateOpenDialog());
+// strBuf.append(queryTemplates.getTemplateRepositoryObjects());
+// strBuf.append(queryTemplates.getTemplateRepositoryFolder());
+// strBuf.append(queryTemplates.getTemplateRepositoryFolderLazyLoad());
+// strBuf.append(queryTemplates.getTemplateRepositoryFile());
+// strBuf.append(queryTemplates.getTemplateSelections());
+// strBuf.append(queryTemplates.getTemplateSelectionsTotals());
+// strBuf.append(queryTemplates.getTemplateSelectionsOptions());
+// strBuf.append(queryTemplates.getTemplatePermissions());
+// strBuf.append(queryTemplates.getTemplatePermissionsRolelist());
+// strBuf.append(queryTemplates.getTemplateDrillthrough());
+// strBuf.append(queryTemplates.getTemplateDrillacross());
+// strBuf.append(queryTemplates.getTemplateDrillthroughList());
+// strBuf.append(queryTemplates.getTemplateDrillthroughDimensions());
+// strBuf.append(queryTemplates.getTemplateDrillthroughMeasures());
+ return strBuf.toString();
+ }
+
+
+}
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuView.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuView.java
new file mode 100644
index 0000000..41eed0c
--- /dev/null
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikuView.java
@@ -0,0 +1,133 @@
+/**
+ *
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *
+ */
+ package org.eclipse.osbp.utils.vaadin.saiku;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringBufferInputStream;
+import java.net.URL;
+import java.util.stream.Collectors;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl;
+import org.eclipse.e4.ui.model.application.ui.impl.UiPackageImpl;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.bpm.api.IBPMEngine;
+import org.eclipse.osbp.bpm.api.IBlipBPMFunctionProvider;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.slf4j.Logger;
+
+import com.vaadin.annotations.JavaScript;
+import com.vaadin.server.Page;
+import com.vaadin.server.Page.BrowserWindowResizeEvent;
+import com.vaadin.server.Page.BrowserWindowResizeListener;
+import com.vaadin.shared.ui.label.ContentMode;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+@JavaScript({
+ //<!-- jQuery 1.7.2 , jQuery UI 1.8.14-->
+ "theme://plugin/saiku.osgi/resources/js/jquery/jquery.min.js"
+})
+
+
+@SuppressWarnings("all")
+public class SaikuView {
+ private static Logger log = org.slf4j.LoggerFactory
+ .getLogger(SaikuView.class);
+
+ private HorizontalLayout lowerArea;
+
+ private VerticalLayout workArea;
+
+ private SaikuRenderer saikuRenderer;
+
+ private AbstractComponent label = null;
+
+ private String processId;
+
+ private VerticalLayout parent;
+
+ private IEclipseContext eclipseContext;
+
+ @Inject
+ public SaikuView(final VerticalLayout parent, final IEclipseContext context,
+ final MApplication app) {
+ this.parent = parent;
+ this.eclipseContext = context;
+ }
+
+ @PostConstruct
+ public void createView(final VerticalLayout parent) {
+ parent.setPrimaryStyleName("osbp");
+ saikuRenderer = new SaikuRenderer(eclipseContext);
+
+ VerticalLayout inner = new VerticalLayout();
+ inner.setMargin(false);
+ inner.setSizeFull();
+ inner.setPrimaryStyleName("osbp");
+ inner.addComponent(saikuRenderer);
+ parent.addComponent(inner);
+
+
+
+// if (label != null) {
+// parent.removeComponent(label);
+// }
+// label = new Label(getSaikuIndexHTMLCode(), ContentMode.HTML);
+// label.setSizeFull();
+// parent.addComponent(label);
+// parent.setMargin(true);
+
+ }
+
+ private String getSaikuIndexHTMLCode() {
+ BundleContext context = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
+
+
+ Bundle bundle = context.getBundle();
+ URL url = bundle.getEntry("/resources/index.html");
+ String path = url.getPath();
+ try {
+ InputStream inputStream = url.openStream();
+ String result = new BufferedReader(new InputStreamReader(inputStream)).lines()
+ .parallel().collect(Collectors.joining("\n"));
+ return result;
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return "";
+ }
+
+}
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikujQueryTemplates.java b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikujQueryTemplates.java
new file mode 100644
index 0000000..6c12c5b
--- /dev/null
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/SaikujQueryTemplates.java
@@ -0,0 +1,913 @@
+package org.eclipse.osbp.utils.vaadin.saiku;
+
+public class SaikujQueryTemplates {
+ private String templateToolbar = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-toolbar\">",
+ "<ul>",
+ " <li><a id='new_query' href='#new_query' title='New query' class='new_tab i18n sprite'></a></li>",
+ " <li class='separator'> </li>",
+ " <li><a id='open_query' href='#open_query' title='Open query' class='open_query i18n sprite'></a></li>",
+ " <% if (!data.buttons) { %>",
+ " <li class='separator'> </li>",
+ " <li><a id='logout' href='#logout' title='Logout' class='logout i18n sprite'></a></li>",
+
+ " <li class='separator'> </li>",
+ " <li><a id='about' href='#about' title='About' class='about i18n sprite'></a></li>",
+ " <li class='separator'> </li>",
+ " <li><a id='help_icon' href='#help' target='_blank' title='Help' class='help i18n sprite'></a></li>",
+
+ " <li class='separator'> </li>",
+ " <% } %>",
+ "</ul>",
+
+ "<%= data.logo %>"//,
+// "</script>"
+ );
+
+
+ private String templateUpgrade = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-upgrade\">",
+ " <div class=\"upgradeheader\">",
+ " You are using Saiku Community Edition, please consider <a target=\"_blank\" href=\"http://saiku.meteorite.bi/support\">purchasing support, or entering a sponsorship agreement with us</a> to support development. <a href=\"mailto:info@meteorite.bi?subject=Supporting Saiku\">info@meteorite.bi</a><span class=\"close_tab sprite\"></span>",
+ " </div>"//,
+// "</script>"
+ );
+
+ private String templateLogincount = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-logincount\">",
+ " <div class=\"upgradeheader\">",
+ " </div>"//,
+// "</script>"
+ );
+
+ private String templateCubes = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-cubes\">",
+ " <div>",
+ " <select id=\"cubesselect\" class=\"form-control cubes ui-widget\">",
+ " <option value=\"\" class=\"i18n\">Select a cube</option>",
+ " <% _.each(connections, function(connection) { %>",
+ " <% _.each(connection.catalogs, function(catalog) { %>",
+ " <% _.each(catalog.schemas, function(schema) {",
+ " if (schema.cubes.length > 0) { %>",
+ " <optgroup label=\"<%= ( schema.name != \"\" ? schema.name : catalog.name) +' (' + connection.name + ')' %>\">",
+ " <% _.each(schema.cubes, function(cube) { %>",
+ " <% if (typeof cube[\"visible\"] == \"undefined\" || cube[\"visible\"]) { %>",
+ " <option value=\"<%= connection.name %>/<%= catalog.name %>/<%= ((schema.name == '' || schema.name == null) ? 'null' : schema.name) %>/<%= encodeURIComponent(cube.name) %>><%= ((cube.caption == '' || cube.caption == null) ? cube.name : cube.caption) %></option>",
+ " <% } %>",
+ " <% }); %>",
+ " </optgroup>",
+ " <% } %>",
+ " <% }); %>",
+ " <% }); %>",
+ " <% }); %>",
+ " </select>",
+ " </div>"//,
+// "</script>"
+ );
+
+ private String templateDimensions = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-dimensions\">",
+ " <ul>",
+ " <% _.each(dimensions, function(dimension) { %>",
+ " <% if (dimension.name != 'Measures' && (typeof dimension[\"visible\"] == \"undefined\" || dimension[\"visible\"])) { %>",
+ " <li class='parent_dimension'>",
+ " <span class=\"root collapsed sprite\"></span>",
+ " <a class=\"folder_collapsed sprite\" href=\"#\" title=\"<%= dimension.description ? dimension.description : dimension.caption %>\"><%= dimension.caption %></a>",
+ " <ul>",
+ " <% _.each(dimension.hierarchies, function(hierarchy) { %>",
+ " <% if (typeof hierarchy[\"visible\"] == \"undefined\" || hierarchy[\"visible\"]) { %>",
+ " <% if ((Settings.DIMENSION_HIDE_HIERARCHY === 'NONE' && dimension.hierarchies.length > 1)",
+ " || (Settings.DIMENSION_HIDE_HIERARCHY === 'SINGLE_LEVEL' && ((Settings.DIMENSION_SHOW_ALL && hierarchy[\"levels\"].length > 3) || (!Settings.DIMENSION_SHOW_ALL && hierarchy[\"levels\"].length > 2)))) { %>",
+ " <li class=\"hierarchy hide\">",
+ " <a class=\"dimension\" title=\"<%= hierarchy.description ? hierarchy.description : hierarchy.caption %>\" href=\"#\" hierarchy=\"<%= hierarchy.name %>\"><%= hierarchy.caption %></a>",
+ " </li>",
+ " <% } %>",
+ " <ul class=\"d_hierarchy\" hierarchy=\"<%= hierarchy.uniqueName %>\" hierarchycaption=\"<%= hierarchy.caption %>\">",
+ " <div class=\"hgroup treehidden\"><%= hierarchy.caption %></div>",
+ " <% _.each(hierarchy.levels, function(level) { %>",
+ " <% if ((Settings.DIMENSION_SHOW_ALL || level.name != \"(All)\") && (typeof level[\"visible\"] == \"undefined\" || level[\"visible\"])) { %>",
+ " <li class=\"hide d_level\">",
+ " <a title=\"<%= (Settings.DIMENSION_HIDE_HIERARCHY === 'SINGLE_LEVEL' || Settings.DIMENSION_HIDE_HIERARCHY === 'ALL') && dimension.hierarchies.length > 1? hierarchy.caption + ' - ' : '' %><%= level.description ? level.description : level.caption %>\" level=\"<%= level.name %>\" hierarchy=\"<%= hierarchy.uniqueName %>\"",
+ " class=\"level\" href=\"#<%= encodeURIComponent(hierarchy.uniqueName) %>/<%= encodeURIComponent(level.name) %>\"><%= level.caption %></a>",
+ " </li>",
+ " <% } %>",
+ " <% }); %>",
+ " </ul>",
+ " <% } %>",
+ " <% }); %>",
+ " </ul>",
+ " <% } %>",
+ " <% }); %>",
+ " </ul>"//,
+// "</script>"
+ );
+
+ private String templateMeasures = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-measures\">",
+ " <ul>",
+ " <% var g = _.groupBy(measures, 'measureGroup'); %>",
+ " <% _.each(g, function(group, key) { %>",
+ " <% if(key != \"null\") { %>",
+ " <li class='parent_dimension'>",
+ " <span class=\"root <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'collapsed' : 'expand' %> sprite\"></span>",
+ " <a class=\"folder_expand sprite\" href=\"#\" title=\"<%= key %>\"><%= key %></a>",
+ " <ul>",
+ " <% _.each(group, function(measure) { %>",
+ " <% if (typeof measure[\"visible\"] == \"undefined\" || measure[\"visible\"]) { %>",
+ " <li class=\"d_measure <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'hide' : '' %>\"><a title=\"<%= measure.description ? measure.description : measure.uniqueName %>\"",
+ " measure=\"<%= measure.name %>\" type=\"EXACT\"",
+ " class=\"measure\" href=\"#Measures/member/<%= encodeURIComponent(measure.uniqueName) %>\"><%= measure.caption %></a>",
+ " </li>",
+
+ " <% } %>",
+ " <% }); %>",
+ " </ul>",
+ " </li>",
+ " <% } else {%>",
+ " <li class='parent_dimension'>",
+ " <span class=\"root <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'collapsed' : 'expand' %> sprite\"></span>",
+ " <a class=\"folder_expand sprite\" href=\"#\" title=\" \"> </a>",
+ " <ul>",
+ " <% _.each(group, function(measure) { %>",
+
+ " <li class=\"d_measure <%= Settings.MEASURE_GROUPS_COLLAPSED ? 'hide' : '' %>\"><a title=\"<%= measure.description ? measure.description : measure.uniqueName %>\"",
+ " measure=\"<%= measure.name %>\" type=\"EXACT\"",
+ " class=\"measure\" href=\"#Measures/member/<%= encodeURIComponent(measure.uniqueName) %>\"><%= measure.caption %></a>",
+ " </li>",
+
+ " <% }); %>",
+ " </ul>",
+ " </li>",
+ " <% } %>",
+ " <% }); %>",
+ " </ul>"//,
+// "</script>"
+ );
+
+ private String templateCalculatedMeasures = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-calculated-measures\">",
+ " <ul>",
+ " <li>",
+ " <span class=\"root expand sprite\"></span>",
+ " <a href=\"#\" title=\"Calculated Measures\" class=\"folder_expand sprite i18n\">Calculated Measures</a>",
+ " <% if (measures) { %>",
+ " <ul>",
+ " <% _.each(measures, function(measure) { %>",
+
+ " <li class=\"d_measure\"><a title=\"<%= measure.name %>\"",
+ " measure=\"<%= measure.name %>\" type=\"CALCULATED\"",
+ " class=\"measure\" href=\"#Measures/member/<%= encodeURIComponent(measure.uniqueName) %>\"><%= measure.name %></a>",
+ " </li>",
+
+ " <% }); %>",
+ " <% } %>",
+ " </ul>",
+ " <li>",
+ " </ul>"//,
+// "</script>"
+ );
+
+ private String templateCalculatedMember = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-calculated-member\">",
+ " <% if (member) { %>",
+ " <li class=\"hide d_level dimension-level-calcmember\">",
+ " <a title=\"<%= member.name %>\" level=\"<%= member.name %>\" hierarchy=\"<%= member.hierarchyName %>\" uniquename=\"<%= member.uniqueName %>\" class=\"level level-calcmember\" href=\"#<%= encodeURIComponent(member.hierarchyName) %>/<%= encodeURIComponent(member.name) %>\" style=\"color: #1e7145;\"><%= member.name %></a>",
+ " </li>",
+ " <% } %>"//,
+// "</script>"
+ );
+
+private String templateWorkspace = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-workspace\">",
+ " <div class=\"workspace\">",
+ " <div class=\"workspace_inner\">",
+ " <div class=\"query_toolbar\"></div>",
+ " <div class=\"workspace_toolbar\"></div>",
+ " <div class=\"upgrade\"></div>",
+ " <div class=\"parameter_input\" />",
+ " <div class=\"workspace_editor hide\">",
+ " <div id='mdx_editor' class='mdx_input hide'>",
+ " </div>",
+ " <span class=\"editor_info hide\"></span>",
+ " </div>",
+ " <div id=\"query_processing\" class=\"query_processing\" style=\"display:none;\"><span class=\"processing_image\"> </span> <span class=\"i18n\">Running query...</span> [ <a class=\"cancel i18n\" href=\"#cancel\">Cancel</a> ]</div>",
+ " <div class=\"workspace_results_info\" align=\"right\" />",
+ " <div class=\"workspace_results_titles\" align=\"center\"/>",
+ " <div class=\"workspace_results\">",
+ " </div>",
+ " </div>",
+ " </div>",
+ " <div class=\"sidebar\">",
+ " <div>",
+ " <h3 class=\"top i18n\">Cubes</h3>",
+ " <div class=\"refresh_cubes_nav\">",
+ " <a id=\"refresh_icon\" href=\"#refresh_cubes\"",
+ " class=\"i18n button refresh_cubes\"",
+ " title=\"Refresh Cubes (Clear Cache)\"></a>",
+ " </div>",
+ " <div class=\"admin_console_nav\"></div>",
+ " </div>",
+ " <div class=\"sidebar_inner\">",
+ " <%= cube_navigation %>",
+ " </div>",
+ " <div class=\"metadata_attribute_wrapper\">",
+ " <%= _.template($(\"#template-attributes\").html())() %>",
+ " </div>",
+ " </div>",
+ " <div class=\"sidebar_separator\"></div>",
+ " <div class=\"clear\"></div>"//,
+// "</script>"
+ );
+
+ private String templateAttributes = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-attributes\">",
+ " <div class=\"metadata_attribute_container\">",
+ " <h3 class=\"measure_caption\"><span class=\"i18n\">Measures</span><a class=\"button addMeasure i18n\" style=\"display:none;\">Add</a></h3>",
+ " <div class=\"sidebar_inner measure_tree\">",
+ " <% if (typeof cube != \"undefined\" && cube && cube.dimensions) { %>",
+ " <%= _.template($(\"#template-measures\").html(), { measures: cube.measures }) %>",
+ " <% } else { %>",
+ " <span class=\"i18n loading hide\">Loading...</span>",
+ " <% } %>",
+ " <div class=\"calculated_measures\" style=\"display:none;\"></div>",
+ " <div class=\"calculated_members\" style=\"display:none;\"></div>",
+ " </div>",
+ " <h3 class=\"i18n dimension_header\">Dimensions</h3>",
+ " <div class=\"sidebar_inner dimension_tree\">",
+ " <% if (typeof cube != \"undefined\" && cube && cube.dimensions) { %>",
+ " <%= _.template($(\"#template-dimensions\").html(), { dimensions: cube.dimensions }) %>",
+ " <% } else { %>",
+ " <span class=\"i18n loading hide\">Loading...</span>",
+ " <% } %>",
+ " </div>",
+ " </div>"//,
+// "</script>"
+ );
+
+ private String templateWorkspaceDropzones = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-workspace-dropzones\">",
+ " <div class=\"workspace_fields disabled\">",
+ " <div class=\"fields_list details_fields\" title=\"DETAILS\">",
+ " <div class=\"fields_list_header measure_fields disabled_toolbar\"><span class=\"i18n\">Measures</span><span class=\"dropdown\"></span>,</div>",
+ " <div class=\"fields_list_body details\">",
+ " <ul class=\"connectable\"></ul>",
+ " </div>",
+ " <span class=\"clear_axis i18n hide\" title=\"Clear Axis\"></span>",
+ " <div class=\"clear\"></div>",
+ " </div>",
+ " <div class=\"fields_list columns_fields\" title=\"COLUMNS\">",
+ " <div class=\"fields_list_header axis_fields_header disabled_toolbar\"><span class=\"i18n\">Columns</span><span class=\"dropdown\"></span></div>",
+ " <div class=\"fields_list_body columns axis_fields\">",
+ " <ul class=\"connectable\"></ul>",
+ " </div>",
+ " <span class=\"clear_axis i18n hide\" title=\"Clear Axis\"></span>",
+ " <div class=\"clear\"></div>",
+ " </div>",
+ " <div class=\"fields_list rows_fields\" title=\"ROWS\">",
+ " <div class=\"fields_list_header axis_fields_header disabled_toolbar\"><span class=\"i18n\">Rows</span><span class=\"dropdown\"></span></div>",
+ " <div class=\"fields_list_body rows axis_fields\">",
+ " <ul class=\"connectable\"></ul>",
+ " </div>",
+ " <span class=\"clear_axis i18n hide\" title=\"Clear Axis\"></span>",
+ " <div class=\"clear\"></div>",
+ " </div>",
+ " <div class=\"fields_list filter_fields\" title=\"FILTER\">",
+ " <div class=\"fields_list_header axis_fields_header disabled_toolbar\"><span class=\"i18n\">Filter</span><span class=\"dropdown\"></span></div>",
+ " <div class=\"fields_list_body filter axis_fields\">",
+ " <ul class=\"connectable\"></ul>",
+ " </div>",
+ " <span class=\"clear_axis i18n hide\" title=\"Clear Axis\"></span>",
+ " <div class=\"clear\"></div>",
+ " </div>",
+ " </div>"//,
+// "</script>"
+ );
+
+ private String templateWorkspaceToolbar = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-workspace-toolbar\">",
+ " <ul>",
+ " <li><a href=\"#open_query\"",
+ " class=\"i18n open button sprite\"",
+ " title\"Open query\" id=\"new_icon\"></a></li>",
+ " <li><a href=\"#save_query\" id=\"save_icon\"",
+ " class=\"i18n save button disabled_toolbar sprite\"",
+ " title\"Save query\"></a></li>",
+ " <li class=\"seperator\"><a href=\"#new_query\"",
+ " class=\"i18n new disabled_toolbar button sprite\"",
+ " title\"Reset query\"></a></li>",
+ " <li><a href=\"#edit_query\"",
+ " class=\"i18n edit button on disabled_toolbar sprite\"",
+ " title\"Edit query\" id=\"edit_icon\"></a></li>",
+ " <li class=\"seperator\"><a href=\"#run_query\" id=\"run_icon\"",
+ " class=\"i18n run button disabled_toolbar sprite\"",
+ " title\"Run query\"></a></li>",
+ " <li><a href=\"#automatic_execution\" id=\"automatic_icon\"",
+ " class=\"i18n auto button disabled_toolbar sprite\"",
+ " title\"Automatic execution\"></a></li>",
+ " <li class=\"seperator\"><a href=\"#group_parents\" id=\"group_icon\"",
+ " class=\"i18n group_parents button disabled_toolbar sprite\"",
+ " title\"Hide Parents\"></a></li>",
+ " <li><a href=\"#non_empty\" id=\"non_empty_icon\"",
+ " class=\"i18n non_empty button disabled_toolbar sprite\"",
+ " title\"Non-empty\"></a></li>",
+ " <li><a href=\"#swap_axis\" id=\"swap_axis_icon\"",
+ " class=\"i18n swap_axis button disabled_toolbar sprite\"",
+ " title\"Swap axis\"></a></li>",
+ " <li><a href=\"#show_mdx\" id=\"show_mdx_icon\"",
+ " class=\"i18n mdx button disabled_toolbar sprite\"",
+ " title\"Show MDX\"></a></li>",
+ " <li class=\"seperator\"><a href=\"#zoom_mode\" id=\"zoom_mode_icon\"",
+ " class=\"i18n table_mode zoom_mode button disabled_toolbar\"",
+ " title\"Zoom into table\"></a></li>",
+ " <li class=\"seperator\"><a href=\"#query_scenario\"",
+ " class=\"i18n table_mode query_scenario button disabled_toolbar sprite\"",
+ " title\"Query Scenario\"></a></li>",
+ " <% if (Settings.REPORT_TITLES) { %>",
+ " <li class=\"seperator\">",
+ " <a href=\"#workspace_report_titles\"",
+ " class=\"i18n workspace_report_titles button disabled_toolbar sprite\"",
+ " title=\"Report Titles\"></a>",
+ " </li>",
+ " <% } %>",
+ " <li class=\"seperator\"><a href=\"#drillacross\" id=\"drillacross_icon\"",
+ " class=\"i18n table_mode drillacross button disabled_toolbar sprite\"",
+ " title=\"Drill across on cell\"></a></li>",
+ " <li class=\"seperator\"><a href=\"#drillthrough\" id=\"drillthrough_icon\"",
+ " class=\"i18n table_mode drillthrough button disabled_toolbar sprite\"",
+ " title\"Drill through on cell\"></a></li>",
+ " <li><a href=\"#export_drillthrough\" id=\"export_drillthrough_icon\"",
+ " class=\"i18n table_mode drillthrough_export button disabled_toolbar sprite\"",
+ " title\"Export Drill-Through on cell to CSV\"></a></li>",
+ " <li class=\"seperator\"><a href=\"#export_xls\" id=\"export_xls_icon\"",
+ " class=\"i18n export_xls button disabled_toolbar sprite\"",
+ " title\"Export XLS\"></a></li>",
+ " <li><a href=\"#export_csv\" id=\"export_csv_icon\"",
+ " class=\"i18n export_csv button disabled_toolbar sprite\"",
+ " title\"Export CSV\"></a></li>",
+ " <li><a href=\"#export_pdf\" id=\"export_pdf_icon\"",
+ " class=\"i18n export_pdf button disabled_toolbar sprite\"",
+ " title\"EXPERIMENTAL: Export PDF\"></a></li>",
+ " <li><a href=\"#switch_to_mdx\" id=\"switch_to_mdx_icon\"",
+ " class=\"i18n switch_to_mdx button disabled_toolbar\"",
+ " title\"Switch to MDX Mode\"></a></li>",
+ " <% if (Settings.BIPLUGIN5 == true) { %>",
+ " <li class=\"seperator\"><a href=\"#about\"",
+ " class=\"i18n about button sprite\"",
+ " title\"About\"></a></li>",
+ " <% } %>",
+ " </ul>"//,
+// "</script>"
+ );
+
+ private String templateQueryToolbar = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-query-toolbar\">",
+ " <div class=\"query_toolbar_vertical\">",
+ " <ul class=\"renderer\">",
+ " <li><a href=\"#switch_render_button\" id=\"table_icon\"",
+ " class=\"i18n render_table button disabled_toolbar on\"",
+ " title\"Table Mode\"></a></li>",
+ " <li><a href=\"#switch_render_button\" id=\"chart_icon\"",
+ " class=\"i18n render_chart button disabled_toolbar\"",
+ " title\"Chart Mode\"></a></li>",
+ " </ul>",
+ " <ul class='options table hide'>",
+ " <li class=\"seperator_vertical\"><a href=\"#spark_bar\" id=\"spark_bar_icon\"",
+ " class=\"i18n spark_bar tablebutton button disabled_toolbar\"",
+ " title\"Spark Bar\"></a></li>",
+ " <li><a href=\"#spark_line\" id=\"spark_line_icon\"",
+ " class=\"i18n spark_line button disabled_toolbar\"",
+ " title\"Spark Line\"></a></li>",
+ " </ul>",
+ " <ul class='options chart hide'>",
+ " <li class=\"seperator_vertical\"><a href =\"#export_button\"",
+ " class=\"disabled_toolbar export_button menu button\"><span class=\"i18n\">Export</span><span class=\"dropdown\"></span></a></li>",
+ " <li><a href=\"#bar\"",
+ " class=\"i18n bar chartoption button disabled_toolbar\"",
+ " title\"Bar\"></a></li>",
+ " <li><a href=\"#stackedBar\"",
+ " class=\"i18n stackedBar chartoption on button disabled_toolbar\"",
+ " title\"Stacked Bar\"></a></li>",
+ " <li><a href=\"#stackedBar100\"",
+ " class=\"i18n stackedBar100 chartoption button disabled_toolbar\"",
+ " title\"Bar 100%\"></a></li>",
+ " <li><a href=\"#multiplebar\"",
+ " class=\"i18n multiple chartoption button disabled_toolbar\"",
+ " title\"Multiple Bar Chart\"></a></li>",
+ " <li><a href=\"#line\"",
+ " class=\"i18n line chartoption button disabled_toolbar\"",
+ " title\"Line\"></a></li>",
+ " <li><a href=\"#area\"",
+ " class=\"i18n area chartoption button disabled_toolbar\"",
+ " title\"Area\"></a></li>",
+ " <li><a href=\"#heatgrid\"",
+ " class=\"i18n heatgrid chartoption button disabled_toolbar\"",
+ " title\"Heat Grid\"></a></li>",
+ " <li><a href=\"#treemap\"",
+ " class=\"i18n treemap chartoption button disabled_toolbar\"",
+ " title\"Tree Map\"></a></li>",
+ " <li><a href=\"#sunburst\"",
+ " class=\"i18n sunburst chartoption button disabled_toolbar\"",
+ " title\"Sunburst\"></a></li>",
+ " <li><a href=\"#multiplesunburst\"",
+ " class=\"i18n multiplesunburst chartoption button disabled_toolbar\"",
+ " title\"Multi Sunburst\"></a></li>",
+ " <li><a href=\"#dot\"",
+ " class=\"i18n dot chartoption button disabled_toolbar\"",
+ " title\"Dot\"></a></li>",
+ " <li><a href=\"#waterfall\"",
+ " class=\"i18n waterfall chartoption button disabled_toolbar\"",
+ " title\"Waterfall\"></a></li>",
+ " <li><a href=\"#pie\"",
+ " class=\"i18n pie chartoption button disabled_toolbar\"",
+ " title\"Pie\"></a></li>",
+ " <li><a href=\"#radar\"",
+ " class=\"i18n radar chartoption button disabled_toolbar\"",
+ " title\"Radar\"></a></li>",
+ " <li><a href=\"#timewheel\"",
+ " class=\"i18n timewheel chartoption button disabled_toolbar\"",
+ " title\"Time Wheel\"></a></li>",
+ " </ul>",
+ " </div>"//,
+// "</script>"
+ );
+
+ private String templateOpenDialog = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-open-dialog\">",
+ " <div class=\"workspace\" style=\"margin-left: -305px\">",
+ " <div class=\"workspace_inner\" style=\"margin-left: 305px\">",
+ " <div class=\"workspace_toolbar hide\">",
+ " <ul>",
+ " <li class='for_queries hide'><a href=\"#open_query\" class=\"run button sprite\"></a></li>",
+ " <li class='for_queries hide'><a href=\"#edit_query\" class=\"edit button sprite\"></a></li>",
+ " <li class='for_queries hide'><a href=\"#delete_query\" class=\"delete button sprite\"></a></li>",
+ " <li class='for_queries hide'><a href=\"#edit_permissions\" class=\"edit_permissions button sprite\"></a></li>",
+ " <li class='for_folder hide'><a href=\"#delete_folder\" class=\"delete button sprite\"></a></li>",
+ " <li class='for_folder hide'><a href=\"#edit_permissions\" class=\"edit_permissions button sprite\"></a></li>",
+ " </ul>",
+ " </div>",
+ " <div class=\"workspace_results\">",
+ " </div>",
+ " </div>",
+ " </div>",
+ " <div class=\"sidebar queries\" style=\"width: 300px;\">",
+ " <h3 class=\"top\" style=\"padding-top: 3px; padding-bottom: 2px;\">",
+ " <div class=\"form-inline\">",
+ " <label class=\"i18n\">Search:</label> ",
+ " <input type=\"text\" class=\"repository_search_file form-control\" style=\"padding-right: 0; width: 230px;\"></input>",
+ " <span class=\"cancel_search\" style=\"position: absolute; top: 8px; left: 270px;\"></span>",
+ " <span class=\"add_folder_button\"><a href=\"#\" class=\"add_folder\"></a></span>",
+ " </div>",
+ " </h3>",
+ " <div class=\"sidebar_inner\">",
+ " <ul id=\"queries\" class=\"RepositoryObjects\">",
+ " <li class=\"i18n\">Loading...</li>",
+ " </ul>",
+ " </div>",
+ " </div>",
+ " <div class=\"sidebar_separator\"></div>",
+ " <div class=\"clear\"></div>"//,
+// "</script>"
+ );
+
+ private String templateRepositoryObjects = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-repository-objects\">",
+ " <% _.each( repoObjects, function( entry ) { %>",
+ " <% if( entry.type === 'FOLDER' ) { %>",
+ " <%= _.template($(\"#template-repository-folder\").html())({ entry: entry }) %>",
+ " <% } else { %>",
+ " <%= _.template($(\"#template-repository-file\").html())({ entry: entry }) %>",
+ " <% } %>",
+ " <% } ); %>"//,
+// "</script>"
+ );
+
+ private String templateRepositoryFolder = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-repository-folder\">",
+ " <% if(!Settings.REPOSITORY_LAZY) { %>",
+ " <li class='folder'>",
+ " <div class='folder_row'>",
+ " <span class='sprite folder collapsed'></span>",
+ " <a href=\"#<%= entry.path %>\"><%= entry.name %></a>",
+ " </div>",
+ " <ul class='hide folder_content'>",
+ " <%= _.template($(\"#template-repository-objects\").html())( { repoObjects: entry.repoObjects }) %>",
+ " </ul>",
+ " </li>",
+ " <% } else { %>",
+ " <li class='folder'>",
+ " <div class='folder_row'>",
+ " <span class='sprite folder collapsed'></span>",
+ " <a href=\"#<%= entry.path %>\"><%= entry.name %></a>",
+ " </div>",
+ " </li>",
+ " <% } %>"//,
+// "</script>"
+ );
+
+ private String templateRepositoryFolderLazyLoad = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-repository-folder-lazyload\">",
+ " <ul class='folder_content'>",
+ " <%= _.template($(\"#template-repository-objects\").html())( { repoObjects: repoObjects }) %>",
+ " </ul>"//,
+// "</script>"
+ );
+
+ private String templateRepositoryFile = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-repository-file\">",
+ " <li class='query'>",
+ " <% if (Settings.ICON_16) { %>",
+ " <span class='icon_override' style='background-image: url(<%= Settings.ICON_16 %>);'></span>",
+ " <% } else { %>",
+ " <span class='icon'></span>",
+ " <% } %>",
+ " <a href=\"#<%= entry.path %>\"><%= entry.name %></a>",
+ " </li>"//,
+// "</script>"
+ );
+
+ private String templateSelections = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-selections\">",
+ " <div class=\"form-inline header_selections\">",
+ " <label for=\"filter_selections\" class=\"i18n\">Search:</label> <input name=\"filter_selections\"",
+ " id=\"filter_selections\" disabled=\"true\" type=\"text\" class=\"form-control filterbox\" /> <input class=\"i18n form-control search_term form_button\" type=\"submit\" value=\"Pre-Filter on Server\" /><input class=\"i18n form-control clear_search form_button\" type=\"submit\" value=\"Clear Filter\" /><br/>",
+ " </div>",
+ " <div class=\"available_selections form-inline caption\">",
+ " <span class=\"i18n\">Available members:</span><br/>",
+ " <div class=\"selection_options\" ><ul></ul></div>",
+ " </div>",
+ " <div class=\"selection_buttons\">",
+ " <a class=\"form_button btn btn-default\" href=\"#move_selection\" id=\"add_members\"> > ",
+ " </a><br><br>",
+ " <a class=\"form_button btn btn-default\" href=\"#move_selection\" id=\"add_all_members\">>></a><br><br>",
+ " <a class=\"form_button btn btn-default\" href=\"#move_selection\" id=\"remove_all_members\"><<</a><br><br>",
+ " <a class=\"form_button btn btn-default\" href=\"#move_selection\" id=\"remove_members\"> < </a>",
+ " </div>",
+ " <div class=\"used_selections form-inline caption\">",
+ " <span class=\"i18n\">Used members:</span>",
+ " <span>",
+ " <input class=\"selection_type selection_type_inclusion\" type=\"radio\" name=\"inclusion_type\" value=\"INCLUSION\" checked=\"true\"><span class=\"i18n\">Include</span>",
+ " <input class=\"selection_type selection_type_exclusion\" type=\"radio\" name=\"inclusion_type\" value=\"EXCLUSION\"><span class=\"i18n\">Exclude</span>",
+ " </span>",
+ " <br/>",
+ " <div class=\"selection_options\" ><ul></ul></div>",
+ " </div>",
+ " <div class=\"updown_buttons\">",
+ " <a class=\"form_button\" href=\"#up\" id=\"up_members\"> ↑ </a><br><br>",
+ " <a class=\"form_button\" href=\"#down\" id=\"down_members\"> ↓ </a><br><br>",
+ " </div>",
+ " <div class=\"options form-inline\">",
+ " <input class=\"form-control\" name=\"show_unique\" id=\"show_unique\" type=\"checkbox\" /> <label for=\"show_unique class=\"i18n\">Show Unique Names</label><br/>",
+ " <input name=\"use_result\" class=\"form-control\" id=\"use_result\" type=\"checkbox\" /> <label for=\"use_result\" class=\"i18n\">Use Result</label><br/>",
+ " <div id=\"div-totals-container\">",
+ " <div class=\"totals_container\">",
+ " <label for=\"per_metrics_totals_checkbox\" class=\"i18n\">Totals per metrics</label>",
+ " <input type=\"checkbox\" id=\"per_metrics_totals_checkbox\"/>",
+ " ",
+ " </div>",
+ " <div class=\"totals_container all_metrics_container\">",
+ " <strong>All Measures - </strong>",
+ " <label for=\"show_totals\" class=\"i18n\">Sub totals</label>",
+ " <select class=\"form-control\" id=\"all_measures_select\">",
+ " <option class=\"i18n\" value=\"not\" selected=\"selected\">None</option>",
+ " <option class=\"i18n\" value=\"sum\">Sum</option>",
+ " <option class=\"i18n\" value=\"min\">Min</option>",
+ " <option class=\"i18n\" value=\"max\">Max</option>",
+ " <option class=\"i18n\" value=\"avg\">Avg</option>",
+ " </select>",
+ " </div>",
+ " </div>",
+ " <div class=\"form-inline\">",
+ " <label for=\"parameter\" class=\"parameter hidden i18n\">Parameter Name</label> ",
+ " <input name=\"parameter\" id=\"parameter\" class=\"form-control parameter hidden\" type=\"text\" /></div>",
+ " </div>",
+ " <div class=\"info\">",
+ " <div><label for=\"items_size\" class=\"i18n\">Items</label>: <span class=\"items_size\"></span></div>",
+ " <div><span class=\"warning i18n\"></span></div>",
+ " </div>",
+ " <div class=\"hint\">",
+ " <div><label for=\"search_limit\" class=\"i18n\">Display Limit</label>: <span class=\"members_limit\"></span></div>",
+ " <div><label for=\"search_limit\" class=\"i18n\">Filter Limit</label>: <span class=\"search_limit\"></span></div>",
+ " </div>",
+ " <div class=\"autocomplete\"></div>"//,
+// "</script>"
+ );
+
+ private String templateSelectionsTotals = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-selections-totals\">",
+ " <div class=\"totals_container per_metrics_container\">",
+ " <strong><%= measure.name %> - </strong>",
+ " <label for=\"show_totals\" class=\"i18n\">Sub totals</label>",
+ " <select class=\"form-control show_totals_select\">",
+ " <option class=\"i18n\" value=\"nil\" selected=\"selected\">None</option>",
+ " <option class=\"i18n\" value=\"sum\">Sum</option>",
+ " <option class=\"i18n\" value=\"min\">Min</option>",
+ " <option class=\"i18n\" value=\"max\">Max</option>",
+ " <option class=\"i18n\" value=\"avg\">Avg</option>",
+ " </select>",
+ " ",
+ " </div>"//,
+// "</script>"
+ );
+
+ private String templateSelectionsOptions = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-selections-options\">",
+ " <ul>",
+ " <li class=\"i18n all_options\"><input type=\"checkbox\" class=\"check_all_option\"",
+ " id=\"check_all_option\"><label for=\"check_all_option\" class=\"i18n\">All Members</label></li>",
+ " <% var counter = 0;",
+ " _.each(options, function(option) {",
+ " counter++; %>",
+ " <% if (!option.calc) { %>",
+ " <li class=\"option_value\">",
+ " <input type=\"checkbox\" class=\"check_option\"",
+ " value=\"<%= encodeURIComponent(option.obj ? option.obj.uniqueName : option.uniqueName) %>\" name=\"selections_checker\"",
+ " id=\"selections_checker<%= counter %>\"",
+ " label=\"<%= encodeURIComponent(option.obj ? option.obj.caption : option.caption) %>\" />",
+ " <label for=\"selections_checker<%= counter %>\" class=\"caption\"><%= option.obj ? option.obj.caption : option.caption %></label>",
+ " <label for=\"selections_checker<%= counter %>\" class=\"unique\"><%= option.obj ? option.obj.uniqueName : option.uniqueName %></label>",
+ " </li>",
+ " <% } else { %>",
+ " <li class=\"option_value\">",
+ " <input type=\"checkbox\" class=\"check_option cmember\"",
+ " value=\"<%= encodeURIComponent(option.obj ? option.obj.uniqueName : option.uniqueName) %>\" name=\"selections_checker\"",
+ " id=\"selections_checker<%= counter %>\"",
+ " label=\"<%= encodeURIComponent(option.obj ? option.obj.caption : option.caption) %>\" />",
+ " <label for=\"selections_checker<%= counter %>\" class=\"caption\" style=\"color: blue;\"><%= option.obj ? option.obj.caption : option.caption %></label>",
+ " <label for=\"selections_checker<%= counter %>\" class=\"unique\" style=\"color: blue;\"><%= option.obj ? option.obj.uniqueName : option.uniqueName %></label>",
+ " </li>",
+ " <% } %>",
+ " <% }); %>",
+ " </ul>"//,
+// "</script>"
+ );
+
+ private String templatePermissions = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-permissions\">",
+ " <div class=\"permissions\">",
+ " <label for=\"filter_roles\" class=\"i18n\">Add role permission:</label>",
+ " <br/>",
+ " <form class=\"form-inline\">",
+ " <input name=\"filter_roles\" id=\"filter_roles\" type=\"text\" class=\"filterbox form-control\" />",
+ " <input type=\"submit\" value=\"Add\" class=\"i18n add_role btn btn-primary\" />",
+ " </form>",
+ " <input type=\"checkbox\" class=\"acl\" value=\"READ\" /><span class=\"i18n\">READ</span>",
+ " <input type=\"checkbox\" class=\"acl\" value=\"WRITE\" /><span class=\"i18n\">WRITE</span>",
+ " <input type=\"checkbox\" class=\"acl\" value=\"GRANT\" /><span class=\"i18n\">GRANT</span>",
+ " <br/><br/>",
+ " <span class=\"i18n\">Roles:</span>",
+ " <div class=\"rolelist\"></div>",
+ " <br/>",
+ " <input type=\"submit\" value=\"Remove permission\" class=\"i18n btn btn-danger remove_acl\" />",
+ " </div>",
+ " <br/>",
+ " <div class=\"private\">",
+ " <input type=\"checkbox\" class=\"private\" value=\"PRIVATE\" /><span class=\"i18n\">Keep this file private to me</span> (<b><%= Saiku.session.username %></b>)",
+ " <br/><br/>",
+ " <span class=\"private_owner\" style=\"display:none;\"><span class=\"i18n\">Currently private to:</span> <span class=\"owner\"></span></span>",
+ " </div>",
+ " <br/>"//,
+// "</script>"
+ );
+
+ private String templatePermissionsRolelist = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-permissions-rolelist\">",
+ " <select class=\"select_roles\" multiple size=\"4\">",
+ " <% _.each(roles, function(grants, role) {",
+ " var aclstring =\"\";",
+ " _.each(grants, function(grant, index) {",
+ " aclstring += (index > 0 ? (\" \" + grant) : grant);",
+ " });",
+ " %>",
+ " <option value=\"<%=role %>\"><%= role + \" [\" + aclstring + \"]\" %></option>",
+ " <% }); %>",
+ " </select>"//,
+// "</script>"
+ );
+
+ private String templateDrillthrough = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-drillthrough\">",
+ " <div class=\"row_limit\">",
+ " <br/>",
+ " <span class=\"i18n\">Row Limit: (0 = none)</span> <input id=\"maxrows\" name=\"maxrows\" class=\"maxrows\" type=\"text\" />",
+ " <br/>",
+ " <span class=\"i18n\"><b>CAUTION:</b> The number of rows can have a significant impact on the performance of the following action.</span>",
+ " </div>"//,
+// "</script>"
+ );
+
+// private String templateDrillacross = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-drillacross\">",
+// "</script>");
+
+ private String templateDrillthroughList = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-drillthrough-list\">",
+ " <div class=\"sidebar\" style=\"border:1px solid #CCCCCC\">",
+ " <h3><input type=\"checkbox\" class=\"all_dimensions\"/> <span class=\"i18n\">Dimensions</span></h3>",
+ " <div class=\"sidebar_inner dimension_tree\"></div>",
+ " <h3><input type=\"checkbox\" class=\"all_measures\"/> <span class=\"i18n\">Measures</span></h3>",
+ " <div class=\"sidebar_inner measure_tree\"></div>",
+ " </div>",
+ " <div class=\"sidebar_separator\"></div>",
+ " <div class=\"clear\"></div>"//,
+// "</script>"
+ );
+
+ private String templateDrillthroughDimensions = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-drillthrough-dimensions\">",
+ " <ul>",
+ " <% _.each(dimensions, function(dimension) { %>",
+ " <% if (dimension.name != 'Measures' && (typeof dimension[\"visible\"] == \"undefined\" || dimension[\"visible\"])) { %>",
+ " <li class='parent_dimension'>",
+ " <span class=\"root collapsed sprite\"></span>",
+ " <input type=\"checkbox\" class=\"check_dimension\" />",
+ " <a class=\"folder_collapsed sprite\" href=\"#\" title=\"<%= dimension.description ? dimension.description : dimension.caption %>\"><%= dimension.caption %></a>",
+ " <ul>",
+ " <% _.each(dimension.hierarchies, function(hierarchy) { %>",
+ " <% if (typeof hierarchy[\"visible\"] == \"undefined\" || hierarchy[\"visible\"]) { %>",
+ " <% if (dimension.hierarchies.length > 1) { %>",
+ " <li class=\"hierarchy hide\">",
+ " <a class=\"dimension\" title=\"<%= hierarchy.description ? hierarchy.description : hierarchy.caption %>\" href=\"#\" key=\"<%= dimension.name %>###<%= hierarchy.name %>\"><%= hierarchy.caption %></a>",
+ " </li>",
+ " <% } %>",
+ " <% } %>",
+ " <% _.each(hierarchy.levels, function(level) { %>",
+ " <% if (typeof level[\"visible\"] == \"undefined\" || level[\"visible\"]) { %>",
+ " <% if (level.caption !== \"(All)\" || level.levelType !== \"All\" || level.levelType !== \"ALL\") { %>",
+ " <li class=\"hide\"> ",
+ " <input type=\"checkbox\" class=\"check_level\" value=\"<%= level.uniqueName %>\" key=\"<%= dimension.name %>###<%= hierarchy.name %>\"> <%= level.caption %></input>",
+ " </li>",
+ " <% } %>",
+ " <% } %>",
+ " <% }); %>",
+ " <% }); %>",
+ " </ul>",
+ " <% } %>",
+ " <% }); %>",
+ " </ul>"//,
+// "</script>"
+ );
+
+
+ private String templateDrillthroughMeasures = String.join("\n",
+// "<script type=\"text/x-jquery-tmpl\" id=\"template-drillthrough-measures\">",
+ " <ul>",
+ " <li>",
+ " <span class=\"root expand sprite\"></span>",
+ " <a href=\"#\" title=\"Measures\" class=\"folder_expand i18n sprite\">Measures</a>",
+ " <ul>",
+ " <% _.each(measures, function(measure) { %>",
+ " <% if (typeof measure[\"visible\"] == \"undefined\" || measure[\"visible\"]) { %>",
+ " <% if(typeof measure.calculated == \"undefined\" || (measure.calculated == false || allMeasures)) { %>",
+ " <li> ",
+ " <input type=\"checkbox\" class=\"check_level\" value=\"<%= measure.uniqueName %>\" key=\"Measures###<%= measure.name %>\"> <%= measure.caption %></input>",
+ " </li>",
+ " <% } %>",
+ " <% } %>",
+ " <% }); %>",
+ " </ul>",
+ " </li>",
+ " </ul>"//,
+// "</script>"
+ );
+
+
+ public String getTemplateToolbar() {
+ return templateToolbar;
+ }
+
+
+ public String getTemplateUpgrade() {
+ return templateUpgrade;
+ }
+
+
+ public String getTemplateLogincount() {
+ return templateLogincount;
+ }
+
+
+ public String getTemplateCubes() {
+ return templateCubes;
+ }
+
+
+ public String getTemplateDimensions() {
+ return templateDimensions;
+ }
+
+
+ public String getTemplateMeasures() {
+ return templateMeasures;
+ }
+
+
+ public String getTemplateCalculatedMeasures() {
+ return templateCalculatedMeasures;
+ }
+
+
+ public String getTemplateCalculatedMember() {
+ return templateCalculatedMember;
+ }
+
+
+ public String getTemplateWorkspace() {
+ return templateWorkspace;
+ }
+
+
+ public String getTemplateAttributes() {
+ return templateAttributes;
+ }
+
+
+ public String getTemplateWorkspaceDropzones() {
+ return templateWorkspaceDropzones;
+ }
+
+
+ public String getTemplateWorkspaceToolbar() {
+ return templateWorkspaceToolbar;
+ }
+
+
+ public String getTemplateQueryToolbar() {
+ return templateQueryToolbar;
+ }
+
+
+ public String getTemplateOpenDialog() {
+ return templateOpenDialog;
+ }
+
+
+ public String getTemplateRepositoryObjects() {
+ return templateRepositoryObjects;
+ }
+
+
+ public String getTemplateRepositoryFolder() {
+ return templateRepositoryFolder;
+ }
+
+
+ public String getTemplateRepositoryFolderLazyLoad() {
+ return templateRepositoryFolderLazyLoad;
+ }
+
+
+ public String getTemplateRepositoryFile() {
+ return templateRepositoryFile;
+ }
+
+
+ public String getTemplateSelections() {
+ return templateSelections;
+ }
+
+
+ public String getTemplateSelectionsTotals() {
+ return templateSelectionsTotals;
+ }
+
+
+ public String getTemplateSelectionsOptions() {
+ return templateSelectionsOptions;
+ }
+
+
+ public String getTemplatePermissions() {
+ return templatePermissions;
+ }
+
+
+ public String getTemplatePermissionsRolelist() {
+ return templatePermissionsRolelist;
+ }
+
+
+ public String getTemplateDrillthrough() {
+ return templateDrillthrough;
+ }
+
+
+// public String getTemplateDrillacross() {
+// return templateDrillacross;
+// }
+
+
+ public String getTemplateDrillthroughList() {
+ return templateDrillthroughList;
+ }
+
+
+ public String getTemplateDrillthroughDimensions() {
+ return templateDrillthroughDimensions;
+ }
+
+
+ public String getTemplateDrillthroughMeasures() {
+ return templateDrillthroughMeasures;
+ }
+
+}
diff --git a/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/js/SaikuRendererJsClass.js b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/js/SaikuRendererJsClass.js
new file mode 100644
index 0000000..81ed10d
--- /dev/null
+++ b/org.eclipse.osbp.utils.ui/src/org/eclipse/osbp/utils/vaadin/saiku/js/SaikuRendererJsClass.js
@@ -0,0 +1,130 @@
+window.org_eclipse_osbp_utils_vaadin_saiku_SaikuRenderer = function() {
+
+ // Replace the normal jQuery getScript function with one that supports
+ // debugging and which references the script files as external resources
+ // rather than inline.
+/* */ jQuery.extend({
+ getScript: function(url, callback) {
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = url;
+
+ // Handle Script loading
+ {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function(){
+ if ( !done && (!this.readyState ||
+ this.readyState == "loaded" || this.readyState == "complete") ) {
+ done = true;
+ if (callback)
+ callback();
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+ });
+
+
+// saikuCreationCode = "";
+
+ //setCreationCode(this.getState().saikuCreationCode);
+ //this.onStateChange = function() {
+ // setCreationCode(this.getState().saikuCreationCode);
+ //}
+
+ //eval(saikuCreationCode);
+
+
+ var element = this.getElement();
+ var root = d3.select(element);
+ root.append("div").attr("id", "header").attr("class", "hide").attr("style", "display:none");
+ root.append("div").attr("class", "processing_container");
+ var processingDiv = root.append("div").attr("class", "processing");
+ var processingInnerDiv = processingDiv.append("div").attr("class", "processing_inner");
+ processingInnerDiv.append("span").attr("class", "saiku_logo");
+ var processingContentDiv = processingInnerDiv.append("div").attr("class", "processing_content");
+ processingContentDiv.append("span").attr("class", "processing_image").text("\ \;");
+ processingContentDiv.append("span").attr("class", "processing_message i18n").text("Loading...");
+
+
+ var body = d3.select("body")
+
+ addJQueryTScriptElementToBody(root, "template-toolbar", this.getState().saikuJQueryTemplateToolbarCode);
+ addJQueryTScriptElementToBody(root, "template-upgrade", this.getState().saikuJQueryTemplateUpgradeCode);
+ addJQueryTScriptElementToBody(root, "template-logincount", this.getState().saikuJQueryTemplateLogincountCode);
+ addJQueryTScriptElementToBody(root, "template-cubes", this.getState().saikuJQueryTemplateCubesCode);
+ addJQueryTScriptElementToBody(root, "template-dimensions", this.getState().saikuJQueryTemplateDimensionsCode);
+ addJQueryTScriptElementToBody(root, "template-measures", this.getState().saikuJQueryTemplateMeasuresCode);
+ addJQueryTScriptElementToBody(root, "template-calculated-measures", this.getState().saikuJQueryTemplateCalculatedMeasuresCode);
+ addJQueryTScriptElementToBody(root, "template-calculated-member", this.getState().saikuJQueryTemplateCalculatedMemberCode);
+ addJQueryTScriptElementToBody(root, "template-workspace", this.getState().saikuJQueryTemplateWorkspaceCode);
+ addJQueryTScriptElementToBody(root, "template-attributes", this.getState().saikuJQueryTemplateAttributesCode);
+ addJQueryTScriptElementToBody(root, "template-workspace-dropzones", this.getState().saikuJQueryTemplateWorkspaceDropzonesCode);
+ addJQueryTScriptElementToBody(root, "template-workspace-toolbar", this.getState().saikuJQueryTemplateWorkspaceToolbarCode);
+ addJQueryTScriptElementToBody(root, "template-query-toolbar", this.getState().saikuJQueryTemplateQueryToolbarCode);
+ addJQueryTScriptElementToBody(root, "template-open-dialog", this.getState().saikuJQueryTemplateOpenDialogCode);
+ addJQueryTScriptElementToBody(root, "template-repository-objects", this.getState().saikuJQueryTemplateRepositoryObjectsCode);
+ addJQueryTScriptElementToBody(root, "template-repository-folder", this.getState().saikuJQueryTemplateRepositoryFolderCode);
+ addJQueryTScriptElementToBody(root, "template-folder-lazyload", this.getState().saikuJQueryTemplateRepositoryFolderLazyloadCode);
+ addJQueryTScriptElementToBody(root, "template-repository-file", this.getState().saikuJQueryTemplateRepositoryFileCode);
+ addJQueryTScriptElementToBody(root, "template-selections", this.getState().saikuJQueryTemplateSelectionsCode);
+ addJQueryTScriptElementToBody(root, "template-selections-totals", this.getState().saikuJQueryTemplateSelectionsTotalsCode);
+ addJQueryTScriptElementToBody(root, "template-selections-options", this.getState().saikuJQueryTemplateSelectionsOptionsCode);
+ addJQueryTScriptElementToBody(root, "template-permissions", this.getState().saikuJQueryTemplatePermissionsCode);
+ addJQueryTScriptElementToBody(root, "template-permissions-rolelist", this.getState().saikuJQueryTemplatePermissionsRolelistCode);
+ addJQueryTScriptElementToBody(root, "template-drillthrough", this.getState().saikuJQueryTemplateDrillthroughCode);
+ addJQueryTScriptElementToBody(root, "template-drillacross", this.getState().saikuJQueryTemplateDrillacrossCode);
+ addJQueryTScriptElementToBody(root, "template-drillthrough-list", this.getState().saikuJQueryTemplateDrillthroughListCode);
+ addJQueryTScriptElementToBody(root, "template-drillthrough-dimensions", this.getState().saikuJQueryTemplateDrillthroughDimensionsCode);
+ addJQueryTScriptElementToBody(root, "template-drillthrough-measures", this.getState().saikuJQueryTemplateDrillthroughMeasuresCode);
+
+ //body.append("script").attr("src", "VAADIN/themes/osbp/plugin/saiku.osgi/resources/js/ga.js").attr("type", "text/javascript")
+
+ //eval(this.getState().saikuJsJQueryPlaceHolderCode);
+
+ //root.append("script").attr("type", "text/javascript").text(this.getState().saikuJsJQueryPlaceHolderCode);
+
+ /*window.document.dispatchEvent(new Event('DOMContentLoaded', {
+ bubbles: true,
+ cancelable: true
+ }));
+
+ document.addEventListener("DOMContentLoaded", ready);
+ document.addEventListener('readystatechange', () => log('readyState:' + document.readyState));*/
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+ jQuery.isReady = false;
+ jQuery.ready();
+}
+
+// The ready event handler and self cleanup method
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+function addJQueryTScriptElementToBody(element, templateId, code) {
+ element.append("script").attr("id", templateId).attr("type", "text/x-jquery-tmpl").text(code);
+}
+
+function ready() {
+ alert('DOM is ready');
+}
+
+
+