diff --git a/panoramix/templates/panoramix/dashboard.html b/panoramix/assets/html/dashboard.html
similarity index 87%
rename from panoramix/templates/panoramix/dashboard.html
rename to panoramix/assets/html/dashboard.html
index 93fb684991d..7a3b7d02699 100644
--- a/panoramix/templates/panoramix/dashboard.html
+++ b/panoramix/assets/html/dashboard.html
@@ -1,17 +1,14 @@
-{% extends "panoramix/base.html" %}
+{% extends "refactor/basic.html" %}
{% block head_css %}
{{ super() }}
- {% for css in dashboard.css_files %}
-
- {% endfor %}
-
+
{% endblock %}
-{% block content_fluid %}
+{% block body %}
@@ -32,6 +29,7 @@
{% endfor %}
+
{% endblock %}
-{% block tail %}
- {{ super() }}
- {% for js in dashboard.js_files %}
-
- {% endfor %}
-
-
-
+{% block tail_js %}
+
{% endblock %}
diff --git a/panoramix/templates/panoramix/sql.html b/panoramix/assets/html/sql.html
similarity index 100%
rename from panoramix/templates/panoramix/sql.html
rename to panoramix/assets/html/sql.html
diff --git a/panoramix/assets/javascripts/dashboard.js b/panoramix/assets/javascripts/dashboard.js
new file mode 100644
index 00000000000..7e68577f41d
--- /dev/null
+++ b/panoramix/assets/javascripts/dashboard.js
@@ -0,0 +1,154 @@
+var $ = window.$ = require('jquery');
+var jQuery = window.jQuery = $;
+var px = require('./modules/panoramix.js');
+var d3 = require('d3');
+require('bootstrap');
+
+var ace = require('brace');
+require('brace/mode/css');
+require('brace/theme/crimson_editor');
+
+require('select2');
+require('./../node_modules/gridster/dist/jquery.gridster.min.js');
+
+var dashboard;
+
+var Dashboard = function(id){
+ var dash = {
+ slices: [],
+ filters: {},
+ id: id,
+ addFilter: function(slice_id, filters) {
+ this.filters[slice_id] = filters;
+ this.refreshExcept(slice_id);
+ },
+ readFilters: function() {
+ // Returns a list of human readable active filters
+ return JSON.stringify(this.filters, null, 4);
+ },
+ refreshExcept: function(slice_id) {
+ this.slices.forEach(function(slice){
+ if(slice.data.slice_id != slice_id){
+ slice.render();
+ }
+ });
+ },
+ clearFilter: function(slice_id) {
+ delete this.filters[slice_id];
+ this.refreshExcept(slice_id);
+ },
+ getSlice: function(slice_id) {
+ for(var i=0; i load vis dependencies -> read data (from dynamic html) -> render slice
// nb: to add a new vis, you must also add a Python fn in viz.py
-
+//
// js
var $ = window.$ = require('jquery');
var jQuery = window.jQuery = $;
@@ -17,48 +17,203 @@ require('../vendor/select2.sortable.js');
// css
require('../vendor/pygments.css');
require('../vendor/bootstrap-toggle/bootstrap-toggle.min.css');
+function initExploreView() {
-// vis sources
-var sourceMap = {
- area: 'nvd3_vis.js',
- bar: 'nvd3_vis.js',
- bubble: 'nvd3_vis.js',
- big_number: 'big_number.js',
- compare: 'nvd3_vis.js',
- dist_bar: 'nvd3_vis.js',
- directed_force: 'directed_force.js',
- filter_box: 'filter_box.js',
- heatmap: 'heatmap.js',
- iframe: 'iframe.js',
- line: 'nvd3_vis.js',
- markup: 'markup.js',
- para: 'parallel_coordinates.js',
- pie: 'nvd3_vis.js',
- pivot_table: 'pivot_table.js',
- sankey: 'sankey.js',
- sunburst: 'sunburst.js',
- table: 'table.js',
- word_cloud: 'word_cloud.js',
- world_map: 'world_map.js',
-};
+ function druidify(){
+ $('div.alert').remove();
+ history.pushState({}, document.title, slice.querystring());
+ renderSlice();
+ }
+
+ function get_collapsed_fieldsets(){
+ var collapsed_fieldsets = $("#collapsed_fieldsets").val();
+
+ if (collapsed_fieldsets != undefined && collapsed_fieldsets != "") {
+ collapsed_fieldsets = collapsed_fieldsets.split('||');
+ }
+ else {
+ collapsed_fieldsets = [];
+ }
+ return collapsed_fieldsets;
+ }
+
+ function toggle_fieldset(legend, animation) {
+ var parent = legend.parent();
+ var fieldset = parent.find(".legend_label").text();
+ var collapsed_fieldsets = get_collapsed_fieldsets();
+
+ if (!parent.hasClass("collapsed")){
+ if (animation) {
+ parent.find(".fieldset_content").slideUp();
+ }
+ else {
+ parent.find(".fieldset_content").hide();
+ }
+
+ parent.addClass("collapsed");
+ parent.find("span.collapser").text("[+]");
+ var index = collapsed_fieldsets.indexOf(fieldset);
+ if (index === -1 && fieldset !== "" && fieldset !== undefined) {
+ collapsed_fieldsets.push(fieldset);
+ }
+ } else {
+ if (animation) {
+ parent.find(".fieldset_content").slideDown();
+ }
+ else {
+ parent.find(".fieldset_content").show();
+ }
+ parent.removeClass("collapsed");
+ parent.find("span.collapser").text("[-]");
+
+ // removing from array, js is overcomplicated
+ var index = collapsed_fieldsets.indexOf(fieldset);
+ if (index !== -1) {
+ collapsed_fieldsets.splice(index, 1);
+ }
+ }
+ $("#collapsed_fieldsets").val(collapsed_fieldsets.join("||"));
+ }
+
+ $('legend').click(function () {
+ toggle_fieldset($(this), true);
+ });
+
+ $('#shortner').click(function () {
+ $.ajax({
+ type: "POST",
+ url: '/r/shortner/',
+ data: {'data': '/' + window.location.pathname + slice.querystring()},
+ success: function(data) {
+ data += ' ';
+ $('#shortner').popover({content: data, placement: 'left', html: true, trigger: 'manual'});
+ $('#shortner').popover('show');
+ $('#close_shortner').click(function(){
+ $('#shortner').popover('destroy');
+ });
+ },
+ error: function() {alert("Error :(");},
+ });
+ });
+ $("#viz_type").change(function() {$("#query").submit();});
+
+ var collapsed_fieldsets = get_collapsed_fieldsets();
+ for(var i=0; i < collapsed_fieldsets.length; i++){
+ toggle_fieldset($('legend:contains("' + collapsed_fieldsets[i] + '")'), false);
+ }
+
+ $(".select2").select2({dropdownAutoWidth : true});
+ $(".select2Sortable").select2({dropdownAutoWidth : true});
+ $(".select2Sortable").select2Sortable({bindOrder: 'sortableStop'});
+ $("form").show();
+ $('[data-toggle="tooltip"]').tooltip();
+ $(".ui-helper-hidden-accessible").remove(); // jQuery-ui 1.11+ creates a div for every tooltip
+
+ function set_filters(){
+ for (var i = 1; i < 10; i++){
+ var eq = px.getParam("flt_eq_" + i);
+ if (eq != ''){
+ add_filter(i);
+ }
+ }
+ }
+ set_filters();
+
+ function add_filter(i) {
+ var cp = $("#flt0").clone();
+ $(cp).appendTo("#filters");
+ $(cp).show();
+ if (i != undefined){
+ $(cp).find("#flt_eq_0").val(px.getParam("flt_eq_" + i));
+ $(cp).find("#flt_op_0").val(px.getParam("flt_op_" + i));
+ $(cp).find("#flt_col_0").val(px.getParam("flt_col_" + i));
+ }
+ $(cp).find('select').select2();
+ $(cp).find('.remove').click(function() {
+ $(this).parent().parent().remove();
+ });
+ }
+
+ $(window).bind("popstate", function(event) {
+ // Browser back button
+ var returnLocation = history.location || document.location;
+ // Could do something more lightweight here, but we're not optimizing
+ // for the use of the back button anyways
+ returnLocation.reload();
+ });
+
+
+ $("#plus").click(add_filter);
+ $("#btn_save").click(function () {
+ var slice_name = prompt("Name your slice!");
+ if (slice_name != "" && slice_name != null) {
+ $("#slice_name").val(slice_name);
+ prepForm();
+ $("#action").val("save");
+ $("#query").submit();
+ }
+ });
+ $("#btn_overwrite").click(function () {
+ var flag = confirm("Overwrite slice [" + $("#slice_name").val() + "] !?");
+ if (flag) {
+ $("#action").val("overwrite");
+ prepForm();
+ $("#query").submit();
+ }
+ });
+
+ $(".druidify").click(druidify);
+
+ function create_choices(term, data) {
+ var filtered = $(data).filter(function() {
+ return this.text.localeCompare(term) === 0;
+ });
+ if (filtered.length === 0) {
+ return {id: term, text: term};
+ }
+ }
+ function initSelectionToValue(element, callback) {
+ callback({id: element.val(), text: element.val()});
+ }
+ function list_data(arr) {
+ var obj = [];
+ for (var i=0; i'
+ );
+ $("input[name='" + name +"']").select2({
+ createSearchChoice: create_choices,
+ initSelection: initSelectionToValue,
+ dropdownAutoWidth : true,
+ multiple: false,
+ data: l,
+ });
+ $(this).remove();
+ });
+}
$(document).ready(function() {
- px.initExploreView();
+ initExploreView();
// Dynamically register this visualization
var visType = window.viz_type.value;
- var visSource = sourceMap[visType];
+ px.registerViz(visType);
- if (visSource) {
- var visFactory = require('../visualizations/' + visSource);
- if (typeof visFactory === 'function') {
- // @TODO handle px.registerViz here instead of in each file?
- px.registerViz(visType, visFactory);
- }
- }
- else {
- console.error("require(", visType, ") failed.");
- }
var data = $('.slice').data('slice');
var slice = px.Slice(data);
@@ -71,9 +226,9 @@ $(document).ready(function() {
// make checkbox inputs display as toggles
$(':checkbox')
- .addClass('pull-right')
- .attr("data-onstyle", "default")
- .bootstrapToggle({size: 'mini'});
+ .addClass('pull-right')
+ .attr("data-onstyle", "default")
+ .bootstrapToggle({size: 'mini'});
$('div.toggle').addClass('pull-right');
});
diff --git a/panoramix/assets/javascripts/modules/panoramix.js b/panoramix/assets/javascripts/modules/panoramix.js
index 6850fbdf268..38658363472 100644
--- a/panoramix/assets/javascripts/modules/panoramix.js
+++ b/panoramix/assets/javascripts/modules/panoramix.js
@@ -1,6 +1,30 @@
var $ = require('jquery'), jQuery = $;
var d3 = require('d3');
+// vis sources
+var sourceMap = {
+ area: 'nvd3_vis.js',
+ bar: 'nvd3_vis.js',
+ bubble: 'nvd3_vis.js',
+ big_number: 'big_number.js',
+ compare: 'nvd3_vis.js',
+ dist_bar: 'nvd3_vis.js',
+ directed_force: 'directed_force.js',
+ filter_box: 'filter_box.js',
+ heatmap: 'heatmap.js',
+ iframe: 'iframe.js',
+ line: 'nvd3_vis.js',
+ markup: 'markup.js',
+ para: 'parallel_coordinates.js',
+ pie: 'nvd3_vis.js',
+ pivot_table: 'pivot_table.js',
+ sankey: 'sankey.js',
+ sunburst: 'sunburst.js',
+ table: 'table.js',
+ word_cloud: 'word_cloud.js',
+ world_map: 'world_map.js',
+};
+
var color = function(){
// Color related utility functions go in this object
var bnbColors = [
@@ -58,8 +82,8 @@ var px = (function() {
function getParam(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^]*)"),
- results = regex.exec(location.search);
- return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
+ results = regex.exec(location.search);
+ return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
function UTC(dttm){
@@ -69,10 +93,10 @@ var px = (function() {
[".%L", function(d) { return d.getMilliseconds(); }], // If there are millisections, show only them
[":%S", function(d) { return d.getSeconds(); }], // If there are seconds, show only them
["%a %b %d, %I:%M %p", function(d) { return d.getMinutes()!=0; }], // If there are non-zero minutes, show Date, Hour:Minute [AM/PM]
- ["%a %b %d, %I %p", function(d) { return d.getHours() != 0; }], // If there are hours that are multiples of 3, show date and AM/PM
- ["%a %b %d, %Y", function(d) { return d.getDate() != 1; }], // If not the first of the month, do "month day, year."
- ["%B %Y", function(d) { return d.getMonth() != 0 && d.getDate() == 1; }], // If the first of the month, do "month day, year."
- ["%Y", function(d) { return true; }] // fall back on month, year
+ ["%a %b %d, %I %p", function(d) { return d.getHours() != 0; }], // If there are hours that are multiples of 3, show date and AM/PM
+ ["%a %b %d, %Y", function(d) { return d.getDate() != 1; }], // If not the first of the month, do "month day, year."
+ ["%B %Y", function(d) { return d.getMonth() != 0 && d.getDate() == 1; }], // If the first of the month, do "month day, year."
+ ["%Y", function(d) { return true; }] // fall back on month, year
]);
function formatDate(dttm) {
var d = UTC(new Date(dttm));
@@ -98,9 +122,9 @@ var px = (function() {
var dttm = 0;
var timer;
var stopwatch = function () {
- dttm += 10;
- var num = dttm / 1000;
- $('#timer').text(num.toFixed(2) + " sec");
+ dttm += 10;
+ var num = dttm / 1000;
+ $('#timer').text(num.toFixed(2) + " sec");
}
var qrystr = '';
var always = function(data) {
@@ -139,7 +163,7 @@ var px = (function() {
token.find("img.loading").hide()
container.show();
if(data !== undefined)
- $("#query_container").html(data.query);
+ $("#query_container").html(data.query);
$('#timer').removeClass('btn-warning');
$('#timer').addClass('btn-success');
$('span.query').removeClass('disabled');
@@ -179,14 +203,14 @@ var px = (function() {
timer = setInterval(stopwatch, 10);
$('#timer').removeClass('btn-danger btn-success');
$('#timer').addClass('btn-warning');
- viz.render();
+ this.viz.render();
},
resize: function() {
token.find("img.loading").show();
container.hide();
container.html('');
- viz.render();
- viz.resize();
+ this.viz.render();
+ this.viz.resize();
},
addFilter: function(col, vals) {
if(dashboard !== undefined)
@@ -197,373 +221,56 @@ var px = (function() {
delete dashboard.clearFilter(slice_id);
},
};
- var viz = visualizations[data.form_data.viz_type](slice);
- slice['viz'] = viz;
+ var visType = data.form_data.viz_type;
+ px.registerViz(visType);
+ slice['viz'] = visualizations[data.form_data.viz_type](slice);
return slice;
}
- var Dashboard = function(id){
- var dash = {
- slices: [],
- filters: {},
- id: id,
- addFilter: function(slice_id, filters) {
- this.filters[slice_id] = filters;
- this.refreshExcept(slice_id);
- },
- readFilters: function() {
- // Returns a list of human readable active filters
- return JSON.stringify(this.filters, null, 4);
- },
- refreshExcept: function(slice_id) {
- this.slices.forEach(function(slice){
- if(slice.data.slice_id != slice_id){
- slice.render();
- }
- });
- },
- clearFilter: function(slice_id) {
- delete this.filters[slice_id];
- this.refreshExcept(slice_id);
- },
- getSlice: function(slice_id) {
- for(var i=0; i div").each(function() {
- $(this).attr("id", function() {return "flt_" + i;})
- $(this).find("#flt_col_0")
- .attr("id", function() {return "flt_col_" + i;})
- .attr("name", function() {return "flt_col_" + i;});
- $(this).find("#flt_op_0")
- .attr("id", function() {return "flt_op_" + i;})
- .attr("name", function() {return "flt_op_" + i;});
- $(this).find("#flt_eq_0")
- .attr("id", function() {return "flt_eq_" + i;})
- .attr("name", function() {return "flt_eq_" + i;});
- i++;
- });
- }
- function renderSlice(){
- prepForm();
- slice.render();
- }
- function druidify(){
- $('div.alert').remove();
- history.pushState({}, document.title, slice.querystring());
- renderSlice();
- }
-
- function initExploreView() {
-
- function get_collapsed_fieldsets(){
- var collapsed_fieldsets = $("#collapsed_fieldsets").val();
-
- if (collapsed_fieldsets != undefined && collapsed_fieldsets != "") {
- collapsed_fieldsets = collapsed_fieldsets.split('||');
- }
- else {
- collapsed_fieldsets = [];
- }
- return collapsed_fieldsets;
- }
-
- function toggle_fieldset(legend, animation) {
- var parent = legend.parent();
- var fieldset = parent.find(".legend_label").text();
- var collapsed_fieldsets = get_collapsed_fieldsets();
-
- if (!parent.hasClass("collapsed")){
- if (animation) {
- parent.find(".fieldset_content").slideUp();
- }
- else {
- parent.find(".fieldset_content").hide();
- }
-
- parent.addClass("collapsed");
- parent.find("span.collapser").text("[+]");
- var index = collapsed_fieldsets.indexOf(fieldset);
- if (index === -1 && fieldset !== "" && fieldset !== undefined) {
- collapsed_fieldsets.push(fieldset);
- }
- } else {
- if (animation) {
- parent.find(".fieldset_content").slideDown();
- }
- else {
- parent.find(".fieldset_content").show();
- }
- parent.removeClass("collapsed");
- parent.find("span.collapser").text("[-]");
-
- // removing from array, js is overcomplicated
- var index = collapsed_fieldsets.indexOf(fieldset);
- if (index !== -1) {
- collapsed_fieldsets.splice(index, 1);
- }
- }
- $("#collapsed_fieldsets").val(collapsed_fieldsets.join("||"));
- }
-
- $('legend').click(function () {
- toggle_fieldset($(this), true);
- });
-
- $('#shortner').click(function () {
- $.ajax({
- type: "POST",
- url: '/r/shortner/',
- data: {'data': '/' + window.location.pathname + slice.querystring()},
- success: function(data) {
- data += ' ';
- $('#shortner').popover({content: data, placement: 'left', html: true, trigger: 'manual'});
- $('#shortner').popover('show');
- $('#close_shortner').click(function(){
- $('#shortner').popover('destroy');
- });
- },
- error: function() {alert("Error :(");},
- });
- });
- $("#viz_type").change(function() {$("#query").submit();});
-
- var collapsed_fieldsets = get_collapsed_fieldsets();
- for(var i=0; i < collapsed_fieldsets.length; i++){
- toggle_fieldset($('legend:contains("' + collapsed_fieldsets[i] + '")'), false);
- }
-
- $(".select2").select2({dropdownAutoWidth : true});
- $(".select2Sortable").select2({dropdownAutoWidth : true});
- $(".select2Sortable").select2Sortable({bindOrder: 'sortableStop'});
- $("form").show();
- $('[data-toggle="tooltip"]').tooltip();
- $(".ui-helper-hidden-accessible").remove(); // jQuery-ui 1.11+ creates a div for every tooltip
-
- function set_filters(){
- for (var i = 1; i < 10; i++){
- var eq = getParam("flt_eq_" + i);
- if (eq != ''){
- add_filter(i);
- }
- }
- }
- set_filters();
-
- function add_filter(i) {
- var cp = $("#flt0").clone();
- $(cp).appendTo("#filters");
- $(cp).show();
- if (i != undefined){
- $(cp).find("#flt_eq_0").val(getParam("flt_eq_" + i));
- $(cp).find("#flt_op_0").val(getParam("flt_op_" + i));
- $(cp).find("#flt_col_0").val(getParam("flt_col_" + i));
- }
- $(cp).find('select').select2();
- $(cp).find('.remove').click(function() {
- $(this).parent().parent().remove();
- });
- }
-
- $(window).bind("popstate", function(event) {
- // Browser back button
- var returnLocation = history.location || document.location;
- // Could do something more lightweight here, but we're not optimizing
- // for the use of the back button anyways
- returnLocation.reload();
- });
-
-
- $("#plus").click(add_filter);
- $("#btn_save").click(function () {
- var slice_name = prompt("Name your slice!");
- if (slice_name != "" && slice_name != null) {
- $("#slice_name").val(slice_name);
- prepForm();
- $("#action").val("save");
- $("#query").submit();
- }
- });
- $("#btn_overwrite").click(function () {
- var flag = confirm("Overwrite slice [" + $("#slice_name").val() + "] !?");
- if (flag) {
- $("#action").val("overwrite");
- prepForm();
- $("#query").submit();
- }
- });
-
- $(".druidify").click(druidify);
-
- function create_choices(term, data) {
- var filtered = $(data).filter(function() {
- return this.text.localeCompare(term) === 0;
- });
- if (filtered.length === 0) {
- return {id: term, text: term};
- }
- }
- function initSelectionToValue(element, callback) {
- callback({id: element.val(), text: element.val()});
- }
- function list_data(arr) {
- var obj = [];
- for (var i=0; i'
- );
- $("input[name='" + name +"']").select2({
- createSearchChoice: create_choices,
- initSelection: initSelectionToValue,
- dropdownAutoWidth : true,
- multiple: false,
- data: l,
- });
- $(this).remove();
+ function prepForm(){
+ var i = 1;
+ // Assigning the right id to form elements in filters
+ $("#filters > div").each(function() {
+ $(this).attr("id", function() {return "flt_" + i;})
+ $(this).find("#flt_col_0")
+ .attr("id", function() {return "flt_col_" + i;})
+ .attr("name", function() {return "flt_col_" + i;});
+ $(this).find("#flt_op_0")
+ .attr("id", function() {return "flt_op_" + i;})
+ .attr("name", function() {return "flt_op_" + i;});
+ $(this).find("#flt_eq_0")
+ .attr("id", function() {return "flt_eq_" + i;})
+ .attr("name", function() {return "flt_eq_" + i;});
+ i++;
});
}
-
-
- function initDashboardView() {
- var gridster = $(".gridster ul").gridster({
- widget_margins: [5, 5],
- widget_base_dimensions: [100, 100],
- draggable: {
- handle: '.drag',
- },
- resize: {
- enabled: true,
- stop: function(e, ui, element) {
- var slice_data = $(element).data('slice');
- dashboard.getSlice(slice_data.slice_id).resize();
- }
- },
- serialize_params: function(_w, wgd) {
- return {
- slice_id: $(_w).attr('slice_id'),
- col: wgd.col,
- row: wgd.row,
- size_x: wgd.size_x,
- size_y: wgd.size_y
- };
- },
- }).data('gridster');
- $("div.gridster").css('visibility', 'visible');
- $("#savedash").click(function() {
- var expanded_slices = {};
- $.each($(".slice_info"), function(i, d){
- var widget = $(this).parents('.widget');
- var slice_description = widget.find('.slice_description');
- if(slice_description.is(":visible"))
- expanded_slices[$(d).attr('slice_id')] = true;
- });
- var data = {
- positions: gridster.serialize(),
- css: editor.getValue(),
- expanded_slices: expanded_slices,
- };
- $.ajax({
- type: "POST",
- url: '/panoramix/save_dash/' + dashboard.id + '/',
- data: {'data': JSON.stringify(data)},
- success: function() {alert("Saved!")},
- error: function() {alert("Error :(")},
- });
- });
-
- var editor = ace.edit("dash_css");
- editor.$blockScrolling = Infinity
-
- editor.setTheme("ace/theme/crimson_editor");
- editor.setOptions({
- minLines: 16,
- maxLines: Infinity,
- });
- editor.getSession().setMode("ace/mode/css");
-
- $(".select2").select2({dropdownAutoWidth : true});
- $("#css_template").on("change", function() {
- var css = $(this).find('option:selected').data('css');
- editor.setValue(css);
- $('#dash_css').val(css);
- $("#user_style").html(css);
- });
- $('#filters').click( function(){
- alert(dashboard.readFilters());
- });
- $("a.closeslice").click(function() {
- var li = $(this).parents("li");
- gridster.remove_widget(li);
- });
- $(".slice_info").click(function(){
- var widget = $(this).parents('.widget');
- var slice_description = widget.find('.slice_description');
- slice_description.slideToggle(500, function(){
- widget.find('.refresh').click();
- });
- });
- $("table.slice_header").mouseover(function() {
- $(this).find("td.icons nobr").show();
- });
- $("table.slice_header").mouseout(function() {
- $(this).find("td.icons nobr").hide();
- });
- editor.on("change", function(){
- css = editor.getValue();
- $('#dash_css').val(css);
- $("#user_style").html(css);
- });
+ function renderSlice(){
+ prepForm();
+ slice.render();
}
// Export public functions
return {
registerViz: registerViz,
Slice: Slice,
- Dashboard: Dashboard,
- druidify: druidify,
- initExploreView: initExploreView,
- initDashboardView: initDashboardView,
formatDate: formatDate,
timeFormatFactory: timeFormatFactory,
color: color(),
renderSlice: renderSlice,
+ getParam: getParam,
}
})();
diff --git a/panoramix/assets/visualizations/big_number.js b/panoramix/assets/visualizations/big_number.js
index 78850c96082..8b0d9038003 100644
--- a/panoramix/assets/visualizations/big_number.js
+++ b/panoramix/assets/visualizations/big_number.js
@@ -4,6 +4,8 @@ var d3 = window.d3 || require('d3');
// CSS
require('./big_number.css');
+var px = require('../javascripts/modules/panoramix.js');
+
function bigNumberVis(slice) {
var data_attribute = slice.data;
var div = d3.select(slice.selector);
diff --git a/panoramix/assets/webpack.config.js b/panoramix/assets/webpack.config.js
index 5aff4c3797e..5a7a5d789e0 100644
--- a/panoramix/assets/webpack.config.js
+++ b/panoramix/assets/webpack.config.js
@@ -7,10 +7,10 @@ var BUILD_DIR = path.resolve(__dirname, './javascripts/dist'); // output
var config = {
// for now generate one compiled js file per entry point / html page
entry: {
- //dashboard: APP_DIR + '/javascripts/dist/dashboard.js',
+ dashboard: APP_DIR + '/javascripts/dashboard.js',
explore: APP_DIR + '/javascripts/explore.js',
- sql: APP_DIR + '/javascripts/sql.js',
featured: APP_DIR + '/javascripts/featured.js',
+ sql: APP_DIR + '/javascripts/sql.js',
},
output: {
path: BUILD_DIR,
diff --git a/panoramix/views.py b/panoramix/views.py
index f55bc378884..118eebac4d8 100644
--- a/panoramix/views.py
+++ b/panoramix/views.py
@@ -560,7 +560,7 @@ class Panoramix(BaseView):
int(o['slice_id']):o
for o in json.loads(dash.position_json)}
return self.render_template(
- "panoramix/dashboard.html", dashboard=dash,
+ "refactor/dashboard.html", dashboard=dash,
templates=templates,
pos_dict=pos_dict)
@@ -575,7 +575,7 @@ class Panoramix(BaseView):
table_name=request.args.get('table_name')
return self.render_template(
- "panoramix/sql.html",
+ "refactor/sql.html",
tables=tables,
table_name=table_name,
db=mydb)