diff --git a/main/webapp/modules/core/preferences.vt b/main/webapp/modules/core/preferences.vt
index 6a4ee29ca..42036a39d 100644
--- a/main/webapp/modules/core/preferences.vt
+++ b/main/webapp/modules/core/preferences.vt
@@ -13,8 +13,8 @@
diff --git a/main/webapp/modules/core/project.vt b/main/webapp/modules/core/project.vt
index 8ad0dd171..3273abe77 100644
--- a/main/webapp/modules/core/project.vt
+++ b/main/webapp/modules/core/project.vt
@@ -14,12 +14,42 @@
+
starting up ...
+
-
starting up ...
+
+
+
+
diff --git a/main/webapp/modules/core/scripts/project.js b/main/webapp/modules/core/scripts/project.js
index 759fcd9d1..2d1e9d426 100644
--- a/main/webapp/modules/core/scripts/project.js
+++ b/main/webapp/modules/core/scripts/project.js
@@ -14,30 +14,32 @@ Refine.reportException = function(e) {
function resize() {
var header = $("#header");
- ui.menuBarContainer.css("top", header.outerHeight() + "px");
-
var leftPanelWidth = 300;
- var leftPanelMargin = 7;
var width = $(window).width();
- var top = ui.menuBarContainer.offset().top + ui.menuBarContainer.outerHeight();
+ var top = $("#header").outerHeight();
var height = $(window).height() - top;
- ui.viewPanel
+ ui.leftPanel
+ .css("top", top + "px")
+ .css("left", "0px")
+ .css("height", height + "px")
+ .css("width", leftPanelWidth + "px");
+
+ var leftPanelPaddings = ui.leftPanel.outerHeight(true) - ui.leftPanel.height();
+ var leftPanelTabsPaddings = ui.leftPanelTabs.outerHeight(true) - ui.leftPanelTabs.height();
+ ui.leftPanelTabs.height(ui.leftPanel.height() - leftPanelTabsPaddings - leftPanelPaddings);
+
+ var rightPanelVPaddings = ui.rightPanel.outerHeight(true) - ui.rightPanel.height();
+ var rightPanelHPaddings = ui.rightPanel.outerWidth(true) - ui.rightPanel.width();
+ ui.rightPanel
.css("top", top + "px")
.css("left", leftPanelWidth + "px")
- .css("height", height + "px")
- .css("width", (width - leftPanelWidth) + "px");
+ .css("height", (height - rightPanelVPaddings) + "px")
+ .css("width", (width - leftPanelWidth - rightPanelHPaddings) + "px");
+
+
+ ui.viewPanel.height((height - ui.toolPanel.outerHeight() - rightPanelVPaddings) + "px");
- ui.leftPanel
- .css("top", (top + leftPanelMargin) + "px")
- .css("left", leftPanelMargin + "px")
- .css("height", (height - 2 * leftPanelMargin) + "px")
- .css("width", (leftPanelWidth - 2 * leftPanelMargin) + "px");
-
- var leftPanelTabsPaddings = ui.leftPanelTabs.outerHeight(true) - ui.leftPanelTabs.innerHeight();
- ui.leftPanelTabs
- .height(ui.leftPanel.height() - leftPanelTabsPaddings);
-
var processPanelWidth = 400;
ui.processPanel
.css("width", processPanelWidth + "px")
@@ -49,7 +51,7 @@ function resizeTabs() {
var headerHeight = ui.leftPanelTabs.find(".ui-tabs-nav").outerHeight(true);
var visibleTabPanels = ui.leftPanelTabs.find(".ui-tabs-panel:not(.ui-tabs-hide)");
- var paddings = visibleTabPanels.innerHeight(true) - visibleTabPanels.height();
+ var paddings = visibleTabPanels.outerHeight(true) - visibleTabPanels.height();
var allTabPanels = ui.leftPanelTabs.find(".ui-tabs-panel");
allTabPanels.height(totalHeight - headerHeight - paddings - 1);
@@ -59,7 +61,7 @@ function resizeAll() {
resize();
resizeTabs();
- ui.menuBar.resize();
+ ui.extensionBar.resize();
ui.browsingEngine.resize();
ui.processWidget.resize();
ui.historyWidget.resize();
@@ -67,34 +69,21 @@ function resizeAll() {
}
function initializeUI(uiState) {
- var path = $("#path");
- $('
').appendTo(path);
- $('
permalink')
- .mouseenter(function() {
- this.href = Refine.getPermanentLink();
- }).appendTo(path);
+ $("#loading-message").hide();
+ $("#header-layout").show();
+ $("#body").show();
+
+ $('#project-name-button').click(Refine._renameProject);
+ $('#project-permalink-button').mouseenter(function() {
+ this.href = Refine.getPermanentLink();
+ });
Refine.setTitle();
- var body = $("#body").empty().html(
- '
' +
- '
' +
- '
' +
- '
' +
- '
' +
- '
' +
- '
' +
- '
' +
- '
' +
- ''
- );
- ui = DOM.bind(body);
+ ui = DOM.bind($("#body"));
- ui.menuBarContainer.css("top", $("#header").outerHeight() + "px");
- ui.menuBar = new MenuBar(ui.menuBarPanel); // construct the menu first so we can resize everything else
+ ui.extensionBar = new ExtensionBar(ui.extensionBar); // construct the menu first so we can resize everything else
+ ui.exporterManager = new ExporterManager($("#export-button"));
ui.leftPanelTabs.tabs({ selected: 0 });
resize();
@@ -127,10 +116,7 @@ Refine.setTitle = function(status) {
}
document.title = title;
- var name = $("#project-name-in-path");
- name.empty();
- name.text('project: ');
- $('
' + theProject.metadata.name + '').appendTo(name);
+ $("#project-name-button").text(theProject.metadata.name);
};
Refine.reinitializeProjectData = function(f) {
@@ -151,6 +137,33 @@ Refine.reinitializeProjectData = function(f) {
);
};
+Refine._renameProject = function() {
+ var name = window.prompt("Rename Project", theProject.metadata.name);
+ if (name == null) {
+ return;
+ }
+
+ name = $.trim(name);
+ if (theProject.metadata.name == name || name.length == 0) {
+ return;
+ }
+
+ $.ajax({
+ type: "POST",
+ url: "/command/core/rename-project",
+ data: { "project" : theProject.id, "name" : name },
+ dataType: "json",
+ success: function (data) {
+ if (data && typeof data.code != 'undefined' && data.code == "ok") {
+ theProject.metadata.name = name;
+ Refine.setTitle();
+ } else {
+ alert("Failed to rename project: " + data.message);
+ }
+ }
+ });
+};
+
/*
* Utility state functions
*/
diff --git a/main/webapp/modules/core/scripts/project/exporters.js b/main/webapp/modules/core/scripts/project/exporters.js
new file mode 100644
index 000000000..6386a79e4
--- /dev/null
+++ b/main/webapp/modules/core/scripts/project/exporters.js
@@ -0,0 +1,128 @@
+function ExporterManager(button) {
+ this._button = button;
+ this._initializeUI();
+}
+
+ExporterManager.handlers = {};
+
+ExporterManager.MenuItems = [
+ {
+ "id" : "core/export-project",
+ "label": "Export Project",
+ "click": function() { ExporterManager.handlers.exportProject(); }
+ },
+ {},
+ {
+ "id" : "core/export-tsv",
+ "label": "Tab-Separated Value",
+ "click": function() { ExporterManager.handlers.exportRows("tsv", "tsv"); }
+ },
+ {
+ "id" : "core/export-csv",
+ "label": "Comma-Separated Value",
+ "click": function() { ExporterManager.handlers.exportRows("csv", "csv"); }
+ },
+ {
+ "id" : "core/export-html-table",
+ "label": "HTML Table",
+ "click": function() { ExporterManager.handlers.exportRows("html", "html"); }
+ },
+ {
+ "id" : "core/export-excel",
+ "label": "Excel",
+ "click": function() { ExporterManager.handlers.exportRows("xls", "xls"); }
+ },
+ {},
+ {
+ "id" : "core/export-tripleloader",
+ "label": "Tripleloader",
+ "click": function() { ExporterManager.handlers.exportTripleloader("tripleloader"); }
+ },
+ {
+ "id" : "core/export-mqlwrite",
+ "label": "MQLWrite",
+ "click": function() { ExporterManager.handlers.exportTripleloader("mqlwrite"); }
+ },
+ {},
+ {
+ "id" : "core/export-templating",
+ "label": "Templating...",
+ "click": function() { new TemplatingExporterDialog(); }
+ }
+];
+
+ExporterManager.prototype._initializeUI = function() {
+ this._button.click(function(evt) {
+ MenuSystem.createAndShowStandardMenu(
+ ExporterManager.MenuItems,
+ this,
+ { horizontal: false }
+ );
+
+ evt.preventDefault();
+ return false;
+ });
+};
+
+ExporterManager.handlers.exportTripleloader = function(format) {
+ if (!theProject.overlayModels.freebaseProtograph) {
+ alert(
+ "You haven't done any schema alignment yet,\nso there is no triple to export.\n\n" +
+ "Use the Schemas > Edit Schema Alignment Skeleton...\ncommand to align your data with Freebase schemas first."
+ );
+ } else {
+ ExporterManager.handlers.exportRows(format, "txt");
+ }
+};
+
+ExporterManager.handlers.exportRows = function(format, ext) {
+ var name = $.trim(theProject.metadata.name.replace(/\W/g, ' ')).replace(/\s+/g, '-');
+ var form = document.createElement("form");
+ $(form)
+ .css("display", "none")
+ .attr("method", "post")
+ .attr("action", "/command/core/export-rows/" + name + "." + ext)
+ .attr("target", "refine-export");
+
+ $('
')
+ .attr("name", "engine")
+ .attr("value", JSON.stringify(ui.browsingEngine.getJSON()))
+ .appendTo(form);
+ $('
')
+ .attr("name", "project")
+ .attr("value", theProject.id)
+ .appendTo(form);
+ $('
')
+ .attr("name", "format")
+ .attr("value", format)
+ .appendTo(form);
+
+ document.body.appendChild(form);
+
+ window.open("about:blank", "refine-export");
+ form.submit();
+
+ document.body.removeChild(form);
+};
+
+ExporterManager.handlers.exportProject = function() {
+ var name = $.trim(theProject.metadata.name.replace(/\W/g, ' ')).replace(/\s+/g, '-');
+ var form = document.createElement("form");
+ $(form)
+ .css("display", "none")
+ .attr("method", "post")
+ .attr("action", "/command/core/export-project/" + name + ".google-refine.tar.gz")
+ .attr("target", "refine-export");
+ $('
')
+ .attr("name", "project")
+ .attr("value", theProject.id)
+ .appendTo(form);
+
+ document.body.appendChild(form);
+
+ window.open("about:blank", "refine-export");
+ form.submit();
+
+ document.body.removeChild(form);
+};
+
diff --git a/main/webapp/modules/core/scripts/project/extension-bar.js b/main/webapp/modules/core/scripts/project/extension-bar.js
new file mode 100644
index 000000000..1a8c621cb
--- /dev/null
+++ b/main/webapp/modules/core/scripts/project/extension-bar.js
@@ -0,0 +1,148 @@
+function ExtensionBar(div) {
+ this._div = div;
+ this._initializeUI();
+}
+
+ExtensionBar.MenuItems = [
+ {
+ "id" : "freebase",
+ "label" : "Freebase",
+ "submenu" : [
+ {
+ "id" : "freebase/schema-alignment",
+ label: "Edit Schema Aligment Skeleton ...",
+ click: function() { ExtensionBar.handlers.editSchemaAlignment(false); }
+ },
+ {
+ "id" : "freebase/reset-schema-alignment",
+ label: "Reset Schema Alignment Skeleton ...",
+ click: function() { ExtensionBar.handlers.editSchemaAlignment(true); }
+ },
+ {},
+ {
+ "id" : "freebase/load-info-freebase",
+ label: "Load into Freebase ...",
+ click: function() { ExtensionBar.handlers.loadIntoFreebase(); }
+ },
+ {
+ "id" : "freebase/browse-load",
+ label: "Browse to Data Load ...",
+ click: function() { ExtensionBar.handlers.browseToDataLoad(); }
+ },
+ {
+ "id" : "freebase/import-qa-data",
+ label: "Import QA Data",
+ click: function() { ExtensionBar.handlers.importQAData(); }
+ }
+ ]
+ }
+];
+
+ExtensionBar.addExtensionMenu = function(what) {
+ ExtensionBar.appendTo(ExtensionBar.MenuItems, [], what);
+}
+
+ExtensionBar.appendTo = function(path, what) {
+ ExtensionBar.appendTo(ExtensionBar.MenuItems, path, what);
+};
+
+ExtensionBar.insertBefore = function(path, what) {
+ MenuSystem.insertBefore(ExtensionBar.MenuItems, path, what);
+};
+
+ExtensionBar.insertAfter = function(path, what) {
+ MenuSystem.insertAfter(ExtensionBar.MenuItems, path, what);
+};
+
+ExtensionBar.prototype.resize = function() {
+};
+
+ExtensionBar.prototype._initializeUI = function() {
+ var elmts = DOM.bind(this._div);
+ for (var i = 0; i < ExtensionBar.MenuItems.length; i++) {
+ var menuItem = ExtensionBar.MenuItems[i];
+ var menuButton = this._createMenuButton(menuItem.label, menuItem.submenu);
+ elmts.menuContainer.append(menuButton);
+ }
+};
+
+ExtensionBar.prototype._createMenuButton = function(label, submenu) {
+ var self = this;
+
+ var menuItem = $("
").addClass("app-menu-button").text(label);
+
+ menuItem.click(function(evt) {
+ MenuSystem.createAndShowStandardMenu(
+ submenu,
+ this,
+ { horizontal: false }
+ );
+
+ evt.preventDefault();
+ return false;
+ });
+
+ return menuItem;
+};
+
+ExtensionBar.handlers = {};
+
+ExtensionBar.handlers.openWorkspaceDir = function() {
+ $.ajax({
+ type: "POST",
+ url: "/command/core/open-workspace-dir",
+ dataType: "json",
+ success: function (data) {
+ if (data.code != "ok" && "message" in data) {
+ alert(data.message);
+ }
+ }
+ });
+};
+
+ExtensionBar.handlers.editSchemaAlignment = function(reset) {
+ new SchemaAlignmentDialog(
+ reset ? null : theProject.overlayModels.freebaseProtograph, function(newProtograph) {});
+};
+
+ExtensionBar.handlers.loadIntoFreebase = function() {
+ new FreebaseLoadingDialog();
+};
+
+ExtensionBar.handlers.browseToDataLoad = function() {
+ // The form has to be created as part of the click handler. If you create it
+ // inside the getJSON success handler, it won't work.
+
+ var form = document.createElement("form");
+ $(form)
+ .css("display", "none")
+ .attr("method", "GET")
+ .attr("target", "dataload");
+
+ document.body.appendChild(form);
+ var w = window.open("about:blank", "dataload");
+
+ $.getJSON(
+ "/command/core/get-preference?" + $.param({ project: theProject.id, name: "freebase.load.jobID" }),
+ null,
+ function(data) {
+ if (data.value == null) {
+ alert("You have not tried to load the data in this project into Freebase yet.");
+ } else {
+ $(form).attr("action", "http://refinery.freebaseapps.com/load/" + data.value);
+ form.submit();
+ w.focus();
+ }
+ document.body.removeChild(form);
+ }
+ );
+};
+
+ExtensionBar.handlers.importQAData = function() {
+ Refine.postCoreProcess(
+ "import-qa-data",
+ {},
+ {},
+ { cellsChanged: true }
+ );
+};
diff --git a/main/webapp/modules/core/scripts/project/menu-bar.js b/main/webapp/modules/core/scripts/project/menu-bar.js
deleted file mode 100644
index 99e920afc..000000000
--- a/main/webapp/modules/core/scripts/project/menu-bar.js
+++ /dev/null
@@ -1,389 +0,0 @@
-function MenuBar(div) {
- this._div = div;
- this._initializeUI();
-}
-
-MenuBar.MenuItems = [
- {
- "id" : "core/project",
- "label" : "Project",
- "submenu" : [
- /*
- {
- "label": "Data Model",
- "submenu": [
- {
- "label": "Denormalize Records",
- "click": function() { MenuBar.handlers.denormalizeRecords(); }
- }
- ]
- },
- {},
- */
- {
- "id" : "core/rename-project",
- "label": "Rename...",
- "click": function() { MenuBar.handlers.renameProject(); }
- },
- {},
- {
- "id" : "core/export",
- "label": "Export Filtered Rows",
- "submenu": [
- {
- "id" : "core/export-tsv",
- "label": "Tab-Separated Value",
- "click": function() { MenuBar.handlers.exportRows("tsv", "tsv"); }
- },
- {
- "id" : "core/export-csv",
- "label": "Comma-Separated Value",
- "click": function() { MenuBar.handlers.exportRows("csv", "csv"); }
- },
- {
- "id" : "core/export-html-table",
- "label": "HTML Table",
- "click": function() { MenuBar.handlers.exportRows("html", "html"); }
- },
- {
- "id" : "core/export-excel",
- "label": "Excel",
- "click": function() { MenuBar.handlers.exportRows("xls", "xls"); }
- },
- {},
- {
- "id" : "core/export-tripleloader",
- "label": "Tripleloader",
- "click": function() { MenuBar.handlers.exportTripleloader("tripleloader"); }
- },
- {
- "id" : "core/export-mqlwrite",
- "label": "MQLWrite",
- "click": function() { MenuBar.handlers.exportTripleloader("mqlwrite"); }
- },
- {},
- {
- "id" : "core/export-templating",
- "label": "Templating...",
- "click": function() { new TemplatingExporterDialog(); }
- }
- ]
- },
- {
- "id" : "core/export-project",
- "label": "Export Project",
- "click": function() { MenuBar.handlers.exportProject(); }
- },
- {},
- {
- "id" : "core/open-workspace-dir",
- "label": "Open Workspace Directory",
- "click": function() { MenuBar.handlers.openWorkspaceDir(); }
- }
- ]
- },
- {
- "id" : "core/schemas",
- "label" : "Schemas",
- "submenu" : [
- /*{
- "id" : "core/auto-schema-alignment",
- label: "Auto-Align with Freebase ...",
- click: function() { MenuBar.handlers.autoSchemaAlignment(); }
- },*/
- {
- "id" : "core/schema-alignment",
- label: "Edit Schema Aligment Skeleton ...",
- click: function() { MenuBar.handlers.editSchemaAlignment(false); }
- },
- {
- "id" : "core/reset-schema-alignment",
- label: "Reset Schema Alignment Skeleton ...",
- click: function() { MenuBar.handlers.editSchemaAlignment(true); }
- },
- {},
- {
- "id" : "core/load-info-freebase",
- label: "Load into Freebase ...",
- click: function() { MenuBar.handlers.loadIntoFreebase(); }
- },
- {
- "id" : "core/browse-load",
- label: "Browse to Data Load ...",
- click: function() { MenuBar.handlers.browseToDataLoad(); }
- },
- {
- "id" : "core/import-qa-data",
- label: "Import QA Data",
- click: function() { MenuBar.handlers.importQAData(); }
- }
- ]
- }
-];
-
-MenuBar.appendTo = function(path, what) {
- MenuBar.appendTo(MenuBar.MenuItems, path, what);
-};
-
-MenuBar.insertBefore = function(path, what) {
- MenuSystem.insertBefore(MenuBar.MenuItems, path, what);
-};
-
-MenuBar.insertAfter = function(path, what) {
- MenuSystem.insertAfter(MenuBar.MenuItems, path, what);
-};
-
-MenuBar.handlers = {};
-
-MenuBar.prototype.resize = function() {
-};
-
-MenuBar.prototype._initializeUI = function() {
- this._mode = "inactive";
- this._menuItemRecords = [];
-
- this._div.addClass("menu-bar").html(" ");
- this._innerDiv = $('').addClass("menu-bar-inner").appendTo(this._div);
-
- var self = this;
- for (var i = 0; i < MenuBar.MenuItems.length; i++) {
- var menuItem = MenuBar.MenuItems[i];
- this._createTopLevelMenuItem(menuItem.label, menuItem.submenu);
- }
- this._wireAllMenuItemsInactive();
-};
-
-MenuBar.prototype._createTopLevelMenuItem = function(label, submenu) {
- var self = this;
-
- var menuItem = MenuSystem.createMenuItem().text(label).appendTo(this._innerDiv);
-
- this._menuItemRecords.push({
- menuItem: menuItem,
- show: function() {
- MenuSystem.dismissUntil(self._level);
-
- menuItem.addClass("menu-expanded");
-
- MenuSystem.createAndShowStandardMenu(
- submenu,
- this,
- {
- horizontal: false,
- onDismiss: function() {
- menuItem.removeClass("menu-expanded");
- }
- }
- );
- }
- });
-};
-
-MenuBar.prototype._wireMenuItemInactive = function(record) {
- var self = this;
- var click = function() {
- self._activateMenu();
- record.show.apply(record.menuItem[0]);
- };
-
- record.menuItem.click(function() {
- // because we're going to rewire the menu bar, we have to
- // make this asynchronous, or jquery event binding won't work.
- window.setTimeout(click, 100);
- });
-};
-
-MenuBar.prototype._wireAllMenuItemsInactive = function() {
- for (var i = 0; i < this._menuItemRecords.length; i++) {
- this._wireMenuItemInactive(this._menuItemRecords[i]);
- }
-};
-
-MenuBar.prototype._wireMenuItemActive = function(record) {
- record.menuItem.mouseover(function() {
- record.show.apply(this);
- });
-};
-
-MenuBar.prototype._wireAllMenuItemsActive = function() {
- for (var i = 0; i < this._menuItemRecords.length; i++) {
- this._wireMenuItemActive(this._menuItemRecords[i]);
- }
-};
-
-MenuBar.prototype._activateMenu = function() {
- var self = this;
-
- var top = this._innerDiv.offset().top;
-
- this._innerDiv.remove().css("top", top + "px");
- this._wireAllMenuItemsActive();
- this._mode = "active";
-
- this._level = MenuSystem.showMenu(this._innerDiv, function() {
- self._deactivateMenu();
- });
-};
-
-MenuBar.prototype._deactivateMenu = function() {
- this._innerDiv.remove()
- .css("z-index", "auto")
- .css("top", "0px")
- .appendTo(this._div);
-
- this._wireAllMenuItemsInactive();
- this._mode = "inactive";
-};
-
-MenuBar.handlers.exportTripleloader = function(format) {
- if (!theProject.overlayModels.freebaseProtograph) {
- alert(
- "You haven't done any schema alignment yet,\nso there is no triple to export.\n\n" +
- "Use the Schemas > Edit Schema Alignment Skeleton...\ncommand to align your data with Freebase schemas first."
- );
- } else {
- MenuBar.handlers.exportRows(format, "txt");
- }
-};
-
-MenuBar.handlers.exportRows = function(format, ext) {
- var name = $.trim(theProject.metadata.name.replace(/\W/g, ' ')).replace(/\s+/g, '-');
- var form = document.createElement("form");
- $(form)
- .css("display", "none")
- .attr("method", "post")
- .attr("action", "/command/core/export-rows/" + name + "." + ext)
- .attr("target", "refine-export");
-
- $('')
- .attr("name", "engine")
- .attr("value", JSON.stringify(ui.browsingEngine.getJSON()))
- .appendTo(form);
- $('')
- .attr("name", "project")
- .attr("value", theProject.id)
- .appendTo(form);
- $('')
- .attr("name", "format")
- .attr("value", format)
- .appendTo(form);
-
- document.body.appendChild(form);
-
- window.open("about:blank", "refine-export");
- form.submit();
-
- document.body.removeChild(form);
-};
-
-MenuBar.handlers.exportProject = function() {
- var name = $.trim(theProject.metadata.name.replace(/\W/g, ' ')).replace(/\s+/g, '-');
- var form = document.createElement("form");
- $(form)
- .css("display", "none")
- .attr("method", "post")
- .attr("action", "/command/core/export-project/" + name + ".google-refine.tar.gz")
- .attr("target", "refine-export");
- $('')
- .attr("name", "project")
- .attr("value", theProject.id)
- .appendTo(form);
-
- document.body.appendChild(form);
-
- window.open("about:blank", "refine-export");
- form.submit();
-
- document.body.removeChild(form);
-};
-
-MenuBar.handlers.renameProject = function() {
- var name = window.prompt("Rename Project", theProject.metadata.name);
- if (name == null) {
- return;
- }
-
- name = $.trim(name);
- if (theProject.metadata.name == name || name.length == 0) {
- return;
- }
-
- $.ajax({
- type: "POST",
- url: "/command/core/rename-project",
- data: { "project" : theProject.id, "name" : name },
- dataType: "json",
- success: function (data) {
- if (data && typeof data.code != 'undefined' && data.code == "ok") {
- theProject.metadata.name = name;
- Refine.setTitle();
- } else {
- alert("Failed to rename project: " + data.message);
- }
- }
- });
-};
-
-MenuBar.handlers.openWorkspaceDir = function() {
- $.ajax({
- type: "POST",
- url: "/command/core/open-workspace-dir",
- dataType: "json",
- success: function (data) {
- if (data.code != "ok" && "message" in data) {
- alert(data.message);
- }
- }
- });
-};
-
-MenuBar.handlers.autoSchemaAlignment = function() {
- //SchemaAlignment.autoAlign();
-};
-
-MenuBar.handlers.editSchemaAlignment = function(reset) {
- new SchemaAlignmentDialog(
- reset ? null : theProject.overlayModels.freebaseProtograph, function(newProtograph) {});
-};
-
-MenuBar.handlers.loadIntoFreebase = function() {
- new FreebaseLoadingDialog();
-};
-
-MenuBar.handlers.browseToDataLoad = function() {
- // The form has to be created as part of the click handler. If you create it
- // inside the getJSON success handler, it won't work.
-
- var form = document.createElement("form");
- $(form)
- .css("display", "none")
- .attr("method", "GET")
- .attr("target", "dataload");
-
- document.body.appendChild(form);
- var w = window.open("about:blank", "dataload");
-
- $.getJSON(
- "/command/core/get-preference?" + $.param({ project: theProject.id, name: "freebase.load.jobID" }),
- null,
- function(data) {
- if (data.value == null) {
- alert("You have not tried to load the data in this project into Freebase yet.");
- } else {
- $(form).attr("action", "http://refinery.freebaseapps.com/load/" + data.value);
- form.submit();
- w.focus();
- }
- document.body.removeChild(form);
- }
- );
-};
-
-MenuBar.handlers.importQAData = function() {
- Refine.postCoreProcess(
- "import-qa-data",
- {},
- {},
- { cellsChanged: true }
- );
-};
diff --git a/main/webapp/modules/core/styles/common.css b/main/webapp/modules/core/styles/common.less
similarity index 82%
rename from main/webapp/modules/core/styles/common.css
rename to main/webapp/modules/core/styles/common.less
index e3041a76a..373c549a6 100644
--- a/main/webapp/modules/core/styles/common.css
+++ b/main/webapp/modules/core/styles/common.less
@@ -1,3 +1,5 @@
+@import-less url("theme.less");
+
html {
font-size: 62.5%;
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
@@ -146,53 +148,53 @@ img {
}
#header {
- background: url(../images/header-background.png) repeat-x 0 0;
- border-bottom: 1px solid #ffb800;
- height: 32px;
- padding-bottom: 1px;
+ height: 40px;
position: relative;
overflow: hidden;
+ background: white;
+ padding-left: 125px;
}
-#logo {
- float: left;
+#app-home-button {
+ position: absolute;
+ top: 50%;
+ margin-top: -16px;
+ left: 0px;
}
#path {
position: absolute;
+ height: 40px;
top: 50%;
margin-top: -0.5em;
+ left: 125px;
+ right: 10px;
line-height: 1em;
- left: 70px;
- height: 31px;
}
#path .app-path-section {
- background: url(../images/path-delimiter.png) no-repeat center right;
- padding: 18px 20px 20px 20px;
+ font-size: 150%;
+ margin: 0 0.5em;
+ padding: 0 0.5em;
}
#path a {
- font-weight: bold;
text-decoration: none;
- color: #333;
}
#path a:hover {
text-decoration: underline;
}
-#path a.permalink {
- padding: 18px 20px 20px 10px;
- color: #ff6a00;
-}
-
-#footer {
- font-size: 85%;
- padding: 1em 0;
- color: #666;
- text-align: center;
- border-top: 1px solid #ccc;
-}
-#footer a {
- color: #448;
-}
-
#body {
}
+a.app-menu-button, #path a.app-menu-button {
+ text-decoration: none;
+ font-weight: bold;
+ padding: 4px 8px;
+ color: black;
+ background: #eee;
+ border: 1px solid #aaa;
+ border-radius: 5px;
+ cursor: pointer;
+}
+a.app-menu-button:hover, #path a.app-menu-button:hover {
+ text-decoration: none;
+ background: #white;
+}
\ No newline at end of file
diff --git a/main/webapp/modules/core/styles/dialogs/clustering-dialog.css b/main/webapp/modules/core/styles/dialogs/clustering-dialog.less
similarity index 97%
rename from main/webapp/modules/core/styles/dialogs/clustering-dialog.css
rename to main/webapp/modules/core/styles/dialogs/clustering-dialog.less
index a56fb581a..b8c67e4b2 100644
--- a/main/webapp/modules/core/styles/dialogs/clustering-dialog.css
+++ b/main/webapp/modules/core/styles/dialogs/clustering-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.clustering-dialog-table-container {
height: 500px;
overflow: auto;
diff --git a/main/webapp/modules/core/styles/dialogs/column-reordering-dialog.css b/main/webapp/modules/core/styles/dialogs/column-reordering-dialog.less
similarity index 88%
rename from main/webapp/modules/core/styles/dialogs/column-reordering-dialog.css
rename to main/webapp/modules/core/styles/dialogs/column-reordering-dialog.less
index c61491eb1..a1a4388bb 100644
--- a/main/webapp/modules/core/styles/dialogs/column-reordering-dialog.css
+++ b/main/webapp/modules/core/styles/dialogs/column-reordering-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.column-reordering-dialog-column {
border: 1px solid #aaa;
background: #eee;
diff --git a/main/webapp/modules/core/styles/dialogs/expression-preview-dialog.css b/main/webapp/modules/core/styles/dialogs/expression-preview-dialog.less
similarity index 97%
rename from main/webapp/modules/core/styles/dialogs/expression-preview-dialog.css
rename to main/webapp/modules/core/styles/dialogs/expression-preview-dialog.less
index c96ae31d2..0ad9bd4f8 100644
--- a/main/webapp/modules/core/styles/dialogs/expression-preview-dialog.css
+++ b/main/webapp/modules/core/styles/dialogs/expression-preview-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
#expression-preview-tabs .ui-tabs-nav li a {
padding: 0.15em 1em;
}
diff --git a/main/webapp/modules/core/styles/dialogs/extend-data-preview-dialog.css b/main/webapp/modules/core/styles/dialogs/extend-data-preview-dialog.less
similarity index 95%
rename from main/webapp/modules/core/styles/dialogs/extend-data-preview-dialog.css
rename to main/webapp/modules/core/styles/dialogs/extend-data-preview-dialog.less
index 6bf96b43d..a10d37926 100644
--- a/main/webapp/modules/core/styles/dialogs/extend-data-preview-dialog.css
+++ b/main/webapp/modules/core/styles/dialogs/extend-data-preview-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.extend-data-preview-dialog .suggested-property-container {
border: 1px solid #aaa;
padding: 5px;
diff --git a/main/webapp/modules/core/styles/dialogs/freebase-loading-dialog.css b/main/webapp/modules/core/styles/dialogs/freebase-loading-dialog.less
similarity index 96%
rename from main/webapp/modules/core/styles/dialogs/freebase-loading-dialog.css
rename to main/webapp/modules/core/styles/dialogs/freebase-loading-dialog.less
index b5e260823..d4a681204 100644
--- a/main/webapp/modules/core/styles/dialogs/freebase-loading-dialog.css
+++ b/main/webapp/modules/core/styles/dialogs/freebase-loading-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.freebase-loading-tripleloader-data {
height: 400px;
width: 99%;
diff --git a/main/webapp/modules/core/styles/dialogs/scatterplot-dialog.css b/main/webapp/modules/core/styles/dialogs/scatterplot-dialog.less
similarity index 96%
rename from main/webapp/modules/core/styles/dialogs/scatterplot-dialog.css
rename to main/webapp/modules/core/styles/dialogs/scatterplot-dialog.less
index 953526a77..6f25c1267 100644
--- a/main/webapp/modules/core/styles/dialogs/scatterplot-dialog.css
+++ b/main/webapp/modules/core/styles/dialogs/scatterplot-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.scatterplot-dialog-selectors-container {
}
diff --git a/main/webapp/modules/core/styles/error.css b/main/webapp/modules/core/styles/error.css
deleted file mode 100644
index eb1457a7b..000000000
--- a/main/webapp/modules/core/styles/error.css
+++ /dev/null
@@ -1,3 +0,0 @@
-#body {
- padding: 5em;
-}
\ No newline at end of file
diff --git a/main/webapp/modules/core/styles/error.less b/main/webapp/modules/core/styles/error.less
new file mode 100644
index 000000000..651e29786
--- /dev/null
+++ b/main/webapp/modules/core/styles/error.less
@@ -0,0 +1,5 @@
+@import-less url("theme.less");
+
+#body {
+ padding: 5em;
+}
\ No newline at end of file
diff --git a/main/webapp/modules/core/styles/freebase.css b/main/webapp/modules/core/styles/freebase.less
similarity index 98%
rename from main/webapp/modules/core/styles/freebase.css
rename to main/webapp/modules/core/styles/freebase.less
index 0d5c7993b..69536ac41 100644
--- a/main/webapp/modules/core/styles/freebase.css
+++ b/main/webapp/modules/core/styles/freebase.less
@@ -1,3 +1,5 @@
+@import-less url("theme.less");
+
/*
-----------------------------------------
Buttons
diff --git a/main/webapp/modules/core/styles/index.css b/main/webapp/modules/core/styles/index.less
similarity index 100%
rename from main/webapp/modules/core/styles/index.css
rename to main/webapp/modules/core/styles/index.less
diff --git a/main/webapp/modules/core/styles/jquery-ui-overrides.css b/main/webapp/modules/core/styles/jquery-ui-overrides.less
similarity index 68%
rename from main/webapp/modules/core/styles/jquery-ui-overrides.css
rename to main/webapp/modules/core/styles/jquery-ui-overrides.less
index ce0cdd41f..cd89d2115 100644
--- a/main/webapp/modules/core/styles/jquery-ui-overrides.css
+++ b/main/webapp/modules/core/styles/jquery-ui-overrides.less
@@ -1,3 +1,5 @@
+@import-less url("theme.less");
+
.refine-tabs.ui-tabs {
padding: 0;
}
@@ -9,7 +11,7 @@
color: inherit;
}
.refine-tabs.ui-tabs .ui-tabs-nav {
- padding: 0;
+ padding: 0 @padding_normal;
}
.refine-tabs.ui-tabs .ui-widget-header {
background: none;
@@ -26,35 +28,46 @@
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-default,
.refine-tabs.ui-tabs .ui-tabs-nav .ui-widget-content .ui-state-default {
- background: #C5D1D4;
+ background: none;
+ border: none;
}
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-default a,
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-default a:link,
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-default a:visited {
- color: black;
+ color: @link_color;
+ font-weight: normal;
}
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-active,
.refine-tabs.ui-tabs .ui-tabs-nav .ui-widget-content .ui-state-active {
- background: #DBE8EB;
- border: none;
+ margin-top: 1px;
+ border: 1px solid @line_accent;
+ border-bottom: none;
+ background: white;
color: black;
+ font-weight: bold;
}
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-active a,
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-active a:link,
.refine-tabs.ui-tabs .ui-tabs-nav .ui-state-active a:visited {
color: black;
+ font-weight: bold;
+}
+
+.refine-tabs.ui-tabs .ui-corner-top {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.refine-tabs.ui-tabs .ui-corner-bottom {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
}
.refine-tabs.ui-tabs .ui-tabs-panel {
margin: 0px;
padding: 15px;
- border: 1px solid #DBE8EB;
- background: #DBE8EB;
- -moz-border-radius: 7px;
- -webkit-border-radius: 7px;
- -moz-border-radius-topleft: 0px;
- -webkit-border-top-left-radius: 0px;
+ border: 1px solid @line_accent;
+ background: white;
}
diff --git a/main/webapp/modules/core/styles/preferences.css b/main/webapp/modules/core/styles/preferences.less
similarity index 90%
rename from main/webapp/modules/core/styles/preferences.css
rename to main/webapp/modules/core/styles/preferences.less
index b76337f4c..fa51a39b6 100644
--- a/main/webapp/modules/core/styles/preferences.css
+++ b/main/webapp/modules/core/styles/preferences.less
@@ -1,3 +1,5 @@
+@import-less url("theme.less");
+
#body {
padding: 5em;
margin: 0;
diff --git a/main/webapp/modules/core/styles/project.less b/main/webapp/modules/core/styles/project.less
new file mode 100644
index 000000000..bb1c810a6
--- /dev/null
+++ b/main/webapp/modules/core/styles/project.less
@@ -0,0 +1,101 @@
+@import-less url("theme.less");
+
+body {
+ background: white;
+}
+
+#body {
+ padding: 0;
+ margin: 0;
+ display: none;
+}
+
+#header-layout {
+ display: none;
+ width: 100%;
+ border-collapse: collapse;
+ border: none;
+}
+#header-layout > tbody > tr > td {
+ padding: 0;
+}
+#header-layout-right {
+ text-align: right;
+}
+
+#project-name-button {
+ :hover {
+ background: #fffee0;
+ }
+}
+
+#project-permalink-button {
+}
+
+#loading-message {
+ text-align: center;
+ font-size: 300%;
+ color: #aaa;
+ padding: 1in;
+ font-style: italic;
+}
+
+#left-panel {
+ position: fixed;
+ overflow: hidden;
+ padding: 0px;
+ padding-top: @padding_tight;
+ font-size: 11px;
+ background: @fill_normal;
+}
+#right-panel {
+ position: fixed;
+ overflow: hidden;
+ padding: 0px;
+ padding-left: @padding_tight;
+ font-size: 11px;
+ background: @fill_accent;
+}
+
+#tool-panel {
+ padding: @padding_tight @padding_tight @padding_tight 0;
+}
+
+#tool-panel-layout {
+ width: 100%;
+ border-collapse: collapse;
+}
+#tool-panel-layout > tbody > tr >td {
+ padding: 0px;
+}
+
+#summary-bar-container {
+ padding: @padding_tight 0;
+}
+
+#extension-bar-container {
+ text-align: right;
+}
+
+#extension-bar {
+ padding: @padding_tight 0;
+}
+
+#view-panel {
+ background: white;
+ overflow: hidden;
+}
+#left-panel .refine-tabs.ui-tabs .ui-tabs-panel {
+ border-bottom: none;
+ border-left: none;
+ border-right: none;
+ padding: @padding_loose;
+ overflow: hidden;
+}
+
+#facet-panel {
+ overflow: auto;
+}
+#history-panel {
+ overflow: auto;
+}
diff --git a/main/webapp/modules/core/styles/project/browsing.css b/main/webapp/modules/core/styles/project/browsing.less
similarity index 99%
rename from main/webapp/modules/core/styles/project/browsing.css
rename to main/webapp/modules/core/styles/project/browsing.less
index b9afc28ee..7e32bc69f 100644
--- a/main/webapp/modules/core/styles/project/browsing.css
+++ b/main/webapp/modules/core/styles/project/browsing.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.browsing-panel-modes {
padding-bottom: 0.5em;
text-align: center;
diff --git a/main/webapp/modules/core/styles/project/extension-bar.less b/main/webapp/modules/core/styles/project/extension-bar.less
new file mode 100644
index 000000000..f6421f0dd
--- /dev/null
+++ b/main/webapp/modules/core/styles/project/extension-bar.less
@@ -0,0 +1,7 @@
+@import-less url("../theme.less");
+
+#extension-bar {
+}
+
+#extension-bar-menu-container {
+}
diff --git a/main/webapp/modules/core/styles/project/menu-bar.css b/main/webapp/modules/core/styles/project/menu-bar.css
deleted file mode 100644
index 153a4ceff..000000000
--- a/main/webapp/modules/core/styles/project/menu-bar.css
+++ /dev/null
@@ -1,22 +0,0 @@
-.menu-bar {
- padding: 5px 10px;
- background: #e8e8e8;
- position: relative;
- border-bottom: 1px solid #CCCCCC;
-}
-
-.menu-bar-inner {
- position: absolute;
- top: 0px;
- left: 0px;
- padding: 5px 10px;
-}
-
-.menu-bar-inner a.menu-item {
- display: inline;
- padding: 5px 10px;
-}
-
-.menu-bar-inner a.menu-item:hover {
- background: #ddd;
-}
diff --git a/main/webapp/modules/core/styles/project/process.css b/main/webapp/modules/core/styles/project/process.less
similarity index 91%
rename from main/webapp/modules/core/styles/project/process.css
rename to main/webapp/modules/core/styles/project/process.less
index dc116dfbc..bac4c3e88 100644
--- a/main/webapp/modules/core/styles/project/process.css
+++ b/main/webapp/modules/core/styles/project/process.less
@@ -1,4 +1,6 @@
-.process-panel {
+@import-less url("../theme.less");
+
+#process-panel {
position: fixed;
top: 0px;
z-index: 1000;
diff --git a/main/webapp/modules/core/styles/protograph/schema-alignment-dialog.css b/main/webapp/modules/core/styles/protograph/schema-alignment-dialog.less
similarity index 98%
rename from main/webapp/modules/core/styles/protograph/schema-alignment-dialog.css
rename to main/webapp/modules/core/styles/protograph/schema-alignment-dialog.less
index 243aace62..fcd9de427 100644
--- a/main/webapp/modules/core/styles/protograph/schema-alignment-dialog.css
+++ b/main/webapp/modules/core/styles/protograph/schema-alignment-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.schema-alignment-dialog-canvas {
height: 400px;
overflow: auto;
diff --git a/main/webapp/modules/core/styles/reconciliation/recon-dialog.css b/main/webapp/modules/core/styles/reconciliation/recon-dialog.less
similarity index 96%
rename from main/webapp/modules/core/styles/reconciliation/recon-dialog.css
rename to main/webapp/modules/core/styles/reconciliation/recon-dialog.less
index 2578f82dc..e11fcc9d2 100644
--- a/main/webapp/modules/core/styles/reconciliation/recon-dialog.css
+++ b/main/webapp/modules/core/styles/reconciliation/recon-dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.recon-dialog-service-list {
border: 1px solid #aaa;
padding: 1px;
diff --git a/main/webapp/modules/core/styles/reconciliation/standard-service-panel.css b/main/webapp/modules/core/styles/reconciliation/standard-service-panel.less
similarity index 92%
rename from main/webapp/modules/core/styles/reconciliation/standard-service-panel.css
rename to main/webapp/modules/core/styles/reconciliation/standard-service-panel.less
index faf9737ee..a141e9963 100644
--- a/main/webapp/modules/core/styles/reconciliation/standard-service-panel.css
+++ b/main/webapp/modules/core/styles/reconciliation/standard-service-panel.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.recon-dialog-standard-service-panel-message {
text-align: center;
font-size: 150%;
diff --git a/main/webapp/modules/core/styles/theme.less b/main/webapp/modules/core/styles/theme.less
new file mode 100644
index 000000000..a8f397ba5
--- /dev/null
+++ b/main/webapp/modules/core/styles/theme.less
@@ -0,0 +1,12 @@
+@fill_normal: #e3e9ff;
+@fill_accent: #bbccff;
+
+@line_accent: #bbccff;
+
+@padding_normal: 7px;
+@padding_tight: 5px;
+@padding_tighter: 3px;
+@padding_loose: 10px;
+@padding_looser: 15px;
+
+@link_color: blue;
\ No newline at end of file
diff --git a/main/webapp/modules/core/styles/util/custom-suggest.css b/main/webapp/modules/core/styles/util/custom-suggest.less
similarity index 59%
rename from main/webapp/modules/core/styles/util/custom-suggest.css
rename to main/webapp/modules/core/styles/util/custom-suggest.less
index e8230164e..4003782b2 100644
--- a/main/webapp/modules/core/styles/util/custom-suggest.css
+++ b/main/webapp/modules/core/styles/util/custom-suggest.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.fbs-pane-property, .fbs-pane-type {
width: 400px;
}
\ No newline at end of file
diff --git a/main/webapp/modules/core/styles/util/dialog.css b/main/webapp/modules/core/styles/util/dialog.less
similarity index 96%
rename from main/webapp/modules/core/styles/util/dialog.css
rename to main/webapp/modules/core/styles/util/dialog.less
index c506328bb..25b97d42d 100644
--- a/main/webapp/modules/core/styles/util/dialog.css
+++ b/main/webapp/modules/core/styles/util/dialog.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.dialog-overlay {
position: fixed;
padding: 0px;
diff --git a/main/webapp/modules/core/styles/util/menu.css b/main/webapp/modules/core/styles/util/menu.less
similarity index 96%
rename from main/webapp/modules/core/styles/util/menu.css
rename to main/webapp/modules/core/styles/util/menu.less
index 20b2fa247..565e9ec70 100644
--- a/main/webapp/modules/core/styles/util/menu.css
+++ b/main/webapp/modules/core/styles/util/menu.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.menu-overlay {
background: black;
opacity: 0.15;
diff --git a/main/webapp/modules/core/styles/views/data-table-view.css b/main/webapp/modules/core/styles/views/data-table-view.less
similarity index 97%
rename from main/webapp/modules/core/styles/views/data-table-view.css
rename to main/webapp/modules/core/styles/views/data-table-view.less
index 3eb0237d7..a7189bd49 100644
--- a/main/webapp/modules/core/styles/views/data-table-view.css
+++ b/main/webapp/modules/core/styles/views/data-table-view.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.viewPanel-summary-row-count {
font-size: 150%;
font-weight: bold;
@@ -16,7 +18,7 @@ a.viewPanel-pagingControls-page.inaction {
}
.data-table-container {
- border: 1px solid #ccc;
+ border-top: 1px solid @line_accent;
overflow: auto;
}
@@ -53,7 +55,8 @@ table.data-table td.column-header {
background: #e8e8e8;
cursor: pointer;
padding: 5px 5px;
- border-bottom: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+ border-bottom: double #ccc;
white-space: pre;
font-weight: bold;
}
diff --git a/main/webapp/modules/core/styles/widgets/histogram-widget.css b/main/webapp/modules/core/styles/widgets/histogram-widget.less
similarity index 77%
rename from main/webapp/modules/core/styles/widgets/histogram-widget.css
rename to main/webapp/modules/core/styles/widgets/histogram-widget.less
index f225171e7..bf005161e 100644
--- a/main/webapp/modules/core/styles/widgets/histogram-widget.css
+++ b/main/webapp/modules/core/styles/widgets/histogram-widget.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.histogram-widget {
margin: 0;
padding: 0;
diff --git a/main/webapp/modules/core/styles/widgets/history.css b/main/webapp/modules/core/styles/widgets/history.less
similarity index 97%
rename from main/webapp/modules/core/styles/widgets/history.css
rename to main/webapp/modules/core/styles/widgets/history.less
index a400d8ed4..5bb703140 100644
--- a/main/webapp/modules/core/styles/widgets/history.css
+++ b/main/webapp/modules/core/styles/widgets/history.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.history-panel-help {
padding: 10px;
background: white;
diff --git a/main/webapp/modules/core/styles/widgets/slider-widget.css b/main/webapp/modules/core/styles/widgets/slider-widget.less
similarity index 96%
rename from main/webapp/modules/core/styles/widgets/slider-widget.css
rename to main/webapp/modules/core/styles/widgets/slider-widget.less
index e13684fe9..29079ffc2 100644
--- a/main/webapp/modules/core/styles/widgets/slider-widget.css
+++ b/main/webapp/modules/core/styles/widgets/slider-widget.less
@@ -1,3 +1,5 @@
+@import-less url("../theme.less");
+
.slider-widget {
position: relative;
overflow: visible;