From ba442ec2011b5e3fadf05d40f922c000733b92d5 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Sat, 2 Oct 2010 02:06:01 +0000 Subject: [PATCH] Started to implement UI redesign for project.vt page. In the process, converted all of our .css files to .less (we don't convert thirdparties ones). git-svn-id: http://google-refine.googlecode.com/svn/trunk@1420 7d457c2a-affb-35e4-300a-418c747d4874 --- .../webapp/modules/core/MOD-INF/controller.js | 61 +-- main/webapp/modules/core/about.html | 10 +- main/webapp/modules/core/error.html | 8 +- .../core/images/google-refine-home-button.png | Bin 0 -> 10559 bytes main/webapp/modules/core/index.vt | 4 +- main/webapp/modules/core/preferences.vt | 4 +- main/webapp/modules/core/project.vt | 36 +- main/webapp/modules/core/scripts/project.js | 107 ++--- .../modules/core/scripts/project/exporters.js | 128 ++++++ .../core/scripts/project/extension-bar.js | 148 +++++++ .../modules/core/scripts/project/menu-bar.js | 389 ------------------ .../core/styles/{common.css => common.less} | 58 +-- ...ring-dialog.css => clustering-dialog.less} | 2 + ...alog.css => column-reordering-dialog.less} | 2 + ...log.css => expression-preview-dialog.less} | 2 + ...og.css => extend-data-preview-dialog.less} | 2 + ...ialog.css => freebase-loading-dialog.less} | 2 + ...lot-dialog.css => scatterplot-dialog.less} | 2 + main/webapp/modules/core/styles/error.css | 3 - main/webapp/modules/core/styles/error.less | 5 + .../styles/{freebase.css => freebase.less} | 2 + .../core/styles/{index.css => index.less} | 0 ...overrides.css => jquery-ui-overrides.less} | 35 +- .../{preferences.css => preferences.less} | 2 + main/webapp/modules/core/styles/project.less | 101 +++++ .../project/{browsing.css => browsing.less} | 2 + .../core/styles/project/extension-bar.less | 7 + .../modules/core/styles/project/menu-bar.css | 22 - .../project/{process.css => process.less} | 4 +- ...ialog.css => schema-alignment-dialog.less} | 2 + .../{recon-dialog.css => recon-dialog.less} | 2 + ...-panel.css => standard-service-panel.less} | 2 + main/webapp/modules/core/styles/theme.less | 12 + ...custom-suggest.css => custom-suggest.less} | 2 + .../styles/util/{dialog.css => dialog.less} | 2 + .../core/styles/util/{menu.css => menu.less} | 2 + ...ta-table-view.css => data-table-view.less} | 7 +- ...ogram-widget.css => histogram-widget.less} | 2 + .../widgets/{history.css => history.less} | 2 + .../{slider-widget.css => slider-widget.less} | 2 + 40 files changed, 637 insertions(+), 548 deletions(-) create mode 100644 main/webapp/modules/core/images/google-refine-home-button.png create mode 100644 main/webapp/modules/core/scripts/project/exporters.js create mode 100644 main/webapp/modules/core/scripts/project/extension-bar.js delete mode 100644 main/webapp/modules/core/scripts/project/menu-bar.js rename main/webapp/modules/core/styles/{common.css => common.less} (82%) rename main/webapp/modules/core/styles/dialogs/{clustering-dialog.css => clustering-dialog.less} (97%) rename main/webapp/modules/core/styles/dialogs/{column-reordering-dialog.css => column-reordering-dialog.less} (88%) rename main/webapp/modules/core/styles/dialogs/{expression-preview-dialog.css => expression-preview-dialog.less} (97%) rename main/webapp/modules/core/styles/dialogs/{extend-data-preview-dialog.css => extend-data-preview-dialog.less} (95%) rename main/webapp/modules/core/styles/dialogs/{freebase-loading-dialog.css => freebase-loading-dialog.less} (96%) rename main/webapp/modules/core/styles/dialogs/{scatterplot-dialog.css => scatterplot-dialog.less} (96%) delete mode 100644 main/webapp/modules/core/styles/error.css create mode 100644 main/webapp/modules/core/styles/error.less rename main/webapp/modules/core/styles/{freebase.css => freebase.less} (98%) rename main/webapp/modules/core/styles/{index.css => index.less} (100%) rename main/webapp/modules/core/styles/{jquery-ui-overrides.css => jquery-ui-overrides.less} (68%) rename main/webapp/modules/core/styles/{preferences.css => preferences.less} (90%) create mode 100644 main/webapp/modules/core/styles/project.less rename main/webapp/modules/core/styles/project/{browsing.css => browsing.less} (99%) create mode 100644 main/webapp/modules/core/styles/project/extension-bar.less delete mode 100644 main/webapp/modules/core/styles/project/menu-bar.css rename main/webapp/modules/core/styles/project/{process.css => process.less} (91%) rename main/webapp/modules/core/styles/protograph/{schema-alignment-dialog.css => schema-alignment-dialog.less} (98%) rename main/webapp/modules/core/styles/reconciliation/{recon-dialog.css => recon-dialog.less} (96%) rename main/webapp/modules/core/styles/reconciliation/{standard-service-panel.css => standard-service-panel.less} (92%) create mode 100644 main/webapp/modules/core/styles/theme.less rename main/webapp/modules/core/styles/util/{custom-suggest.css => custom-suggest.less} (59%) rename main/webapp/modules/core/styles/util/{dialog.css => dialog.less} (96%) rename main/webapp/modules/core/styles/util/{menu.css => menu.less} (96%) rename main/webapp/modules/core/styles/views/{data-table-view.css => data-table-view.less} (97%) rename main/webapp/modules/core/styles/widgets/{histogram-widget.css => histogram-widget.less} (77%) rename main/webapp/modules/core/styles/widgets/{history.css => history.less} (97%) rename main/webapp/modules/core/styles/widgets/{slider-widget.css => slider-widget.less} (96%) diff --git a/main/webapp/modules/core/MOD-INF/controller.js b/main/webapp/modules/core/MOD-INF/controller.js index 467fb4fdc..6a0b9ed56 100644 --- a/main/webapp/modules/core/MOD-INF/controller.js +++ b/main/webapp/modules/core/MOD-INF/controller.js @@ -1,7 +1,7 @@ var html = "text/html"; var encoding = "UTF-8"; var ClientSideResourceManager = Packages.com.google.refine.ClientSideResourceManager; -var bundle = true; +var bundle = false; var templatedFiles = { // Requests with last path segments mentioned here @@ -169,10 +169,10 @@ function init() { module, [ "externals/jquery-ui/css/ui-lightness/jquery-ui-1.8.custom.css", - "styles/common.css", + "styles/common.less", "styles/freebase.css", - "styles/index.css", - "styles/jquery-ui-overrides.css" + "styles/index.less", + "styles/jquery-ui-overrides.less" ] ); @@ -205,7 +205,8 @@ function init() { "scripts/widgets/histogram-widget.js", "scripts/widgets/slider-widget.js", - "scripts/project/menu-bar.js", + "scripts/project/extension-bar.js", + "scripts/project/exporters.js", "scripts/project/browsing-engine.js", "scripts/project/scripting.js", @@ -250,35 +251,35 @@ function init() { "externals/jquery-ui/css/ui-lightness/jquery-ui-1.8.custom.css", "externals/imgareaselect/css/imgareaselect-default.css", - "styles/common.css", - "styles/jquery-ui-overrides.css", + "styles/common.less", + "styles/jquery-ui-overrides.less", - "styles/util/menu.css", - "styles/util/dialog.css", - "styles/util/custom-suggest.css", + "styles/util/menu.less", + "styles/util/dialog.less", + "styles/util/custom-suggest.less", - "styles/project.css", - "styles/project/browsing.css", - "styles/project/process.css", - "styles/project/menu-bar.css", + "styles/project.less", + "styles/project/browsing.less", + "styles/project/process.less", + "styles/project/extension-bar.less", - "styles/widgets/history.css", - "styles/widgets/histogram-widget.css", - "styles/widgets/slider-widget.css", + "styles/widgets/history.less", + "styles/widgets/histogram-widget.less", + "styles/widgets/slider-widget.less", - "styles/views/data-table-view.css", + "styles/views/data-table-view.less", - "styles/dialogs/expression-preview-dialog.css", - "styles/dialogs/clustering-dialog.css", - "styles/dialogs/scatterplot-dialog.css", - "styles/dialogs/freebase-loading-dialog.css", - "styles/dialogs/extend-data-preview-dialog.css", - "styles/dialogs/column-reordering-dialog.css", + "styles/dialogs/expression-preview-dialog.less", + "styles/dialogs/clustering-dialog.less", + "styles/dialogs/scatterplot-dialog.less", + "styles/dialogs/freebase-loading-dialog.less", + "styles/dialogs/extend-data-preview-dialog.less", + "styles/dialogs/column-reordering-dialog.less", - "styles/reconciliation/recon-dialog.css", - "styles/reconciliation/standard-service-panel.css", + "styles/reconciliation/recon-dialog.less", + "styles/reconciliation/standard-service-panel.less", - "styles/protograph/schema-alignment-dialog.css" + "styles/protograph/schema-alignment-dialog.less" ] ); @@ -302,9 +303,9 @@ function init() { "externals/suggest/css/suggest-1.2.min.css", "externals/jquery-ui/css/ui-lightness/jquery-ui-1.8.custom.css", - "styles/common.css", - "styles/jquery-ui-overrides.css", - "styles/preferences.css" + "styles/common.less", + "styles/jquery-ui-overrides.less", + "styles/preferences.less" ] ); } diff --git a/main/webapp/modules/core/about.html b/main/webapp/modules/core/about.html index 554bbb443..77b98717e 100644 --- a/main/webapp/modules/core/about.html +++ b/main/webapp/modules/core/about.html @@ -3,8 +3,8 @@ About Google Refine - - + + @@ -26,8 +26,8 @@
diff --git a/main/webapp/modules/core/images/google-refine-home-button.png b/main/webapp/modules/core/images/google-refine-home-button.png new file mode 100644 index 0000000000000000000000000000000000000000..b064c81e908f801d8420ab125cbf99fc288f18e8 GIT binary patch literal 10559 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 N002ovPDHLkV1l`pa*6-| literal 0 HcmV?d00001 diff --git a/main/webapp/modules/core/index.vt b/main/webapp/modules/core/index.vt index 87193b392..f9a0c6a62 100644 --- a/main/webapp/modules/core/index.vt +++ b/main/webapp/modules/core/index.vt @@ -11,8 +11,8 @@
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 ...
+
+
+ +
+
+
+
+
+
+ + +
+ +
Extensions:  Customize...
+ +
+
+ +
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); - $('') - .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;