From 2d9e7c87f63a969b70f95d79befbe60a1e52e892 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Mon, 25 Oct 2010 01:07:25 +0000 Subject: [PATCH] Increased recon batch size to 10 again. Various style tweaks. Polished up freebase extension's dialogs to be a bit more helpful git-svn-id: http://google-refine.googlecode.com/svn/trunk@1625 7d457c2a-affb-35e4-300a-418c747d4874 --- .../scripts/dialogs/confirm-qa-dialog.html | 20 ++- .../dialogs/freebase-loading-dialog.html | 79 ++++++++-- .../dialogs/freebase-loading-dialog.js | 79 +++++----- .../dialogs/schema-alignment/dialog.js | 147 +++++++----------- .../schema-alignment-dialog.html | 38 +++++ .../freebase/module/scripts/extension.js | 14 +- .../dialogs/freebase-loading-dialog.less | 49 +++--- .../model/recon/StandardReconConfig.java | 2 +- .../scripts/dialogs/clustering-dialog.html | 33 ++-- .../core/scripts/dialogs/clustering-dialog.js | 8 +- .../scripts/reconciliation/recon-dialog.js | 2 +- .../scripts/reconciliation/recon-manager.js | 2 +- .../views/data-table/menu-reconcile.js | 28 ++-- main/webapp/modules/core/styles/common.less | 6 +- .../styles/dialogs/clustering-dialog.less | 2 +- .../core/styles/jquery-ui-overrides.less | 4 +- main/webapp/modules/core/styles/project.less | 7 + main/webapp/modules/core/styles/pure.css | 2 +- 18 files changed, 296 insertions(+), 226 deletions(-) create mode 100644 extensions/freebase/module/scripts/dialogs/schema-alignment/schema-alignment-dialog.html diff --git a/extensions/freebase/module/scripts/dialogs/confirm-qa-dialog.html b/extensions/freebase/module/scripts/dialogs/confirm-qa-dialog.html index 1f8e79bf3..d691dee41 100644 --- a/extensions/freebase/module/scripts/dialogs/confirm-qa-dialog.html +++ b/extensions/freebase/module/scripts/dialogs/confirm-qa-dialog.html @@ -1,11 +1,17 @@
-
Are You Sure?
-
- - -
Are you sure this data is ready to be tested for upload into Freebase?
+
QA Data Load?
+
+

Other people will be enlisted to help double-check + your data load for quality assurance purposes. Their time and labor + have a cost. +

+

You yourself should have taken all reasonable measures + to eliminate errors from your data load. Your prudence is greatly appreciated. +

+

Tell me more ...

+
\ No newline at end of file diff --git a/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.html b/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.html index f27d92f35..2c08d58cc 100644 --- a/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.html +++ b/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.html @@ -1,19 +1,70 @@
Load Data into Freebase
+ +
+
+ +
+ + + + + + + + + + + + +
Name of data load
Source ID (optional)
+

Note: Your data will only be loaded into + Sandbox. + Sandbox is where everyone can experiment with Freebase technologies without disruption + to the official Freebase. Sandbox gets + refreshed periodically. +

+

In order to load your data into the official Freebase, you must first load it + into Sandbox. Then it must pass a Quality Assurance (QA) process before it can + be loaded into Freebase proper. + Find out more ... +

+
Quality assuranceAfter loaded into Sandbox, enlist other people's help to double-check + this data load's quality so that it can be loaded into Freebase. +
+ +
+
+ +
- +
\ No newline at end of file diff --git a/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js b/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js index 5f85f368c..679cb6f39 100644 --- a/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js +++ b/extensions/freebase/module/scripts/dialogs/freebase-loading-dialog.js @@ -59,11 +59,17 @@ FreebaseLoadingDialog.prototype._createDialog = function() { loadButton.unbind().click(function() { self._load(); }); + self._signedin = true; $("#freebase-loading-source-name").keyup(); + if (typeof cont == "function") cont(data); } else { authorization.html('Sign into Freebase to enable loading').show(); + + self._signedin = false; + $("#freebase-loading-source-name").keyup(); + DOM.bind(authorization).signin.click(function() { Sign.signin(function() { check_authorization(cont); @@ -105,24 +111,19 @@ FreebaseLoadingDialog.prototype._createDialog = function() { engine: JSON.stringify(ui.browsingEngine.getJSON()) }, function(data) { - var body = self._elmts.dialogBody; if ("tripleloader" in data) { - body.html( - '
' + - '' + - '' + - '
Name this data load ¬ required
' + - '
Source ID ¬ optional
' + - '
' + - '
' + data.tripleloader + '
' - ); - self._elmts = DOM.bind(dialog); + self._elmts.functionalCase.show(); + self._level = DialogSystem.showDialog(dialog); + + self._elmts.functionalTabs.tabs(); + + self._elmts.previewContainer.text(data.tripleloader).show(); self._elmts.source_name.keyup(function() { if (self._signedin && $(this).val() != "") { - loadButton.removeAttr("disabled"); + loadButton.removeAttr("disabled").removeClass("button-disabled"); } else { - loadButton.attr("disabled","disabled"); + loadButton.attr("disabled","disabled").addClass("button-disabled"); } }); @@ -139,24 +140,21 @@ FreebaseLoadingDialog.prototype._createDialog = function() { "/command/core/get-preference?" + $.param({ project: theProject.id, name: "freebase.load.jobName" }), null, function(data) { - if (data.value != null) { - self._elmts.source_name[0].value = data.value; - } + self._elmts.source_name[0].value = (data.value) ? data.value : theProject.metadata.name; } ); if (typeof cont == "function") cont(); } else { - body.html( - '
'+ - '

This dataset has no triples

' + - '

Have you aligned it with the Freebase schemas yet?

' + - '
' - ); - self._elmts = DOM.bind(dialog); + self._elmts.unalignedCase.show(); + self._level = DialogSystem.showDialog(dialog); + + self._elmts.alignButton.click(function() { + self._dismiss(); + FreebaseExtension.handlers.editSchemaAlignment(false); + }); self._end(); } - self._level = DialogSystem.showDialog(dialog); }, "json" ); @@ -189,12 +187,10 @@ FreebaseLoadingDialog.prototype._load = function() { var body = self._elmts.dialogBody; if ("status" in data && typeof data.status == "object" && "code" in data.status && data.status.code == 200) { - body.html( - '
' + - '

' + data.result.added + ' triples successfully scheduled for loading

' + - '

Follow the loading progress in the Freebase Refinery

' + - '
' - ); + self._elmts.tripleCountSpan.text(data.result.added); + self._elmts.refineryLink.attr("href", get_refinery_url(data.result.status_url)); + self._elmts.functionalCase.hide(); + self._elmts.loadedCase.show(); self._end(); } else { self._show_error("Error loading data",data); @@ -229,25 +225,22 @@ FreebaseLoadingDialog.prototype._dismiss = function() { }; FreebaseLoadingDialog.prototype._show_error = function(msg, error) { - console.log(error); - var self = this; - var body = self._elmts.dialogBody; - body.html( - '
' + - '

' + msg + '

' + - (('message' in error) ? '

' + error.message + '

' : '
' + JSON.stringify(error, null, 2) + '
') + - (('stack' in error) ? '
' + error.stack.replace(/\\n/g,'\n').replace(/\\t/g,'\t') + '
' : "") + - '
' + this._elmts.dialogBody.children().hide(); + this._elmts.errorCase.show(); + this._elmts.errorMessage.text(msg); + this._elmts.errorDetails.html( + (('message' in error) ? '

' + error.message + '

' : '
' + JSON.stringify(error, null, 2) + '
') + + (('stack' in error) ? '
' + error.stack.replace(/\\n/g,'\n').replace(/\\t/g,'\t') + '
' : "") ); this._end(); + console.log(error); }; FreebaseLoadingDialog.prototype._end = function() { var self = this; - self._elmts.loadButton.text("Close").removeAttr("disabled").unbind().click(function() { + this._elmts.loadButton.text("Close").removeAttr("disabled").removeClass("button-disabled").unbind().click(function() { self._dismiss(); }); - self._elmts.cancelButton.hide(); - self._elmts.qaCheckboxContainer.hide(); - self._elmts.authorization.hide(); + this._elmts.cancelButton.hide(); + this._elmts.authorization.hide(); }; \ No newline at end of file diff --git a/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js b/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js index c81fe8064..e23fe80a2 100644 --- a/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js +++ b/extensions/freebase/module/scripts/dialogs/schema-alignment/dialog.js @@ -166,6 +166,11 @@ SchemaAlignment.createNewRootNode = function() { function SchemaAlignmentDialog(protograph, onDone) { this._onDone = onDone; + this._createDialog(); + this._reset(protograph); +} + +SchemaAlignmentDialog.prototype._reset = function(protograph) { this._originalProtograph = protograph || { rootNodes: [] }; this._protograph = cloneDeep(this._originalProtograph); // this is what can be munched on @@ -173,94 +178,9 @@ function SchemaAlignmentDialog(protograph, onDone) { this._protograph.rootNodes.push(SchemaAlignment.createNewRootNode()); } + $(this._nodeTable).empty(); + this._nodeUIs = []; - this._createDialog(); - this.preview(); -} - -SchemaAlignmentDialog.prototype._createDialog = function() { - var self = this; - var frame = DialogSystem.createDialog(); - - frame.width("800px"); - - var header = $('
').addClass("dialog-header").text("Schema Alignment").appendTo(frame); - var body = $('
').addClass("dialog-body").appendTo(frame); - var footer = $('
').addClass("dialog-footer").appendTo(frame); - - this._constructFooter(footer); - this._constructBody(body); - - this._level = DialogSystem.showDialog(frame); - - this._renderBody(body); -}; - -SchemaAlignmentDialog.prototype._constructFooter = function(footer) { - var self = this; - - $('').html("  OK  ").click(function() { - var protograph = self.getJSON(); - - Refine.postProcess( - "freebase", - "save-protograph", - {}, - { protograph: JSON.stringify(protograph) }, - {}, - { - onDone: function() { - DialogSystem.dismissUntil(self._level - 1); - theProject.overlayModels.freebaseProtograph = protograph; - } - } - ); - }).appendTo(footer); - - $('').text("Cancel").click(function() { - DialogSystem.dismissUntil(self._level - 1); - }).appendTo(footer); -}; - -SchemaAlignmentDialog.prototype._constructBody = function(body) { - $('

' + - 'The schema alignment skeleton below specifies how the graph-shaped data that will get generated ' + - 'from your grid-shaped data and written into Freebase. The cells in each record of your data will ' + - 'get placed into nodes within the skeleton. Configure the skeleton by specifying which ' + - 'column to substitute into which node. A node can also be an automatically generated ' + - 'anonymous node, or it can be an explicit value or topic that is the same for all records.' + - '

').appendTo(body); - - $( - '
' + - '' + - '
' + - '
' + - '
' + - '' + - '' + - '
' - ).appendTo(body); -}; - -SchemaAlignmentDialog.prototype._renderBody = function(body) { - var self = this; - - $("#schema-alignment-tabs").tabs(); - $("#schema-alignment-tabs-preview-mqllike").css("display", ""); - $("#schema-alignment-tabs-preview-tripleloader").css("display", ""); - - this._canvas = $(".schema-alignment-dialog-canvas"); - this._nodeTable = $('
').addClass("schema-alignment-table-layout").appendTo(this._canvas)[0]; - for (var i = 0; i < this._protograph.rootNodes.length; i++) { this._nodeUIs.push(new SchemaAlignmentDialog.UINode( this, @@ -273,7 +193,60 @@ SchemaAlignmentDialog.prototype._renderBody = function(body) { )); } + this.preview(); +}; + +SchemaAlignmentDialog.prototype._save = function(onDone) { + var protograph = this.getJSON(); + + Refine.postProcess( + "freebase", + "save-protograph", + {}, + { protograph: JSON.stringify(protograph) }, + {}, + { + onDone: function() { + theProject.overlayModels.freebaseProtograph = protograph; + onDone(); + } + } + ); +}; + +SchemaAlignmentDialog.prototype._createDialog = function() { + var self = this; + var frame = $(DOM.loadHTML("freebase", "scripts/dialogs/schema-alignment/schema-alignment-dialog.html")); + var elmts = DOM.bind(frame); + + this._level = DialogSystem.showDialog(frame); + + var dismiss = function() { + DialogSystem.dismissUntil(self._level - 1); + }; + + elmts.saveAndCloseButton.click(function() { + self._save(dismiss); + }); + elmts.saveAndLoadButton.click(function() { + self._save(function() { + dismiss(); + FreebaseExtension.handlers.loadIntoFreebase(); + }); + }); + elmts.resetButton.click(function() { + self._reset(null); + }); + elmts.cancelButton.click(dismiss); + + $("#schema-alignment-tabs").tabs(); + $("#schema-alignment-tabs-preview-mqllike").css("display", ""); + $("#schema-alignment-tabs-preview-tripleloader").css("display", ""); + this._previewPanes = $(".schema-alignment-dialog-preview"); + + this._canvas = $(".schema-alignment-dialog-canvas"); + this._nodeTable = $('
').addClass("schema-alignment-table-layout").appendTo(this._canvas)[0]; }; SchemaAlignmentDialog.prototype.getJSON = function() { diff --git a/extensions/freebase/module/scripts/dialogs/schema-alignment/schema-alignment-dialog.html b/extensions/freebase/module/scripts/dialogs/schema-alignment/schema-alignment-dialog.html new file mode 100644 index 000000000..d85eb07ce --- /dev/null +++ b/extensions/freebase/module/scripts/dialogs/schema-alignment/schema-alignment-dialog.html @@ -0,0 +1,38 @@ +
+
Align to Freebase's Schemas
+
+

+ The schema alignment skeleton below specifies how the graph-shaped data will get generated + from your grid-shaped data and written into Freebase. The cells in each record of your data will + get placed into nodes within the skeleton. Configure the skeleton by specifying which + column to substitute into which node. A node can also be an automatically generated + anonymous node, or it can be an explicit value or topic that is the same for all records. +

+
+ +
+
+
+ + +
+
+ +
\ No newline at end of file diff --git a/extensions/freebase/module/scripts/extension.js b/extensions/freebase/module/scripts/extension.js index b7336406c..9792883ad 100644 --- a/extensions/freebase/module/scripts/extension.js +++ b/extensions/freebase/module/scripts/extension.js @@ -33,9 +33,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. var FreebaseExtension = { handlers: {} }; -FreebaseExtension.handlers.editSchemaAlignment = function(reset) { - new SchemaAlignmentDialog( - reset ? null : theProject.overlayModels.freebaseProtograph, function(newProtograph) {}); +FreebaseExtension.handlers.editSchemaAlignment = function() { + new SchemaAlignmentDialog(theProject.overlayModels.freebaseProtograph, function(newProtograph) {}); }; FreebaseExtension.handlers.loadIntoFreebase = function() { @@ -87,20 +86,15 @@ ExtensionBar.addExtensionMenu({ "submenu" : [ { "id" : "freebase/schema-alignment", - label: "Edit schema aligment skeleton...", + label: "Align to Freebase's schemas...", click: function() { FreebaseExtension.handlers.editSchemaAlignment(false); } }, - { - "id" : "freebase/reset-schema-alignment", - label: "Reset schema alignment skeleton...", - click: function() { FreebaseExtension.handlers.editSchemaAlignment(true); } - }, - {}, { "id" : "freebase/load-info-freebase", label: "Load into Freebase...", click: function() { FreebaseExtension.handlers.loadIntoFreebase(); } }, + {}, { "id" : "freebase/browse-load", label: "Browse data load details...", diff --git a/extensions/freebase/module/styles/dialogs/freebase-loading-dialog.less b/extensions/freebase/module/styles/dialogs/freebase-loading-dialog.less index 6ad84144d..ad5821b8e 100644 --- a/extensions/freebase/module/styles/dialogs/freebase-loading-dialog.less +++ b/extensions/freebase/module/styles/dialogs/freebase-loading-dialog.less @@ -33,10 +33,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @import-less url("../theme.less"); +.freebase-loading-dialog-functional-tab-panel { + height: 400px !important; +} .freebase-loading-tripleloader-data { - height: 375px; width: 99%; - overflow: auto; + overflow: scroll; border: 1px solid #aaa; white-space: pre; padding: 0.3em 0.5em 0.5em 0.5em; @@ -44,50 +46,47 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } .freebase-loading-tripleloader-message { - height: 500px; + height: 400px; overflow: auto; border: 1px solid #aaa; - padding: 0.3em 0.5em 0.5em 0.5em; + padding: 1em; } .freebase-loading-tripleloader-message h2 { - text-align: center; - font-size: 150%; - margin-top: 3em; - font-weight: normal; + font-size: 150%; + font-weight: normal; } .freebase-loading-tripleloader-message h2 span { - font-size; 130%; - font-weight: bold; + font-size; 130%; + font-weight: bold; } .freebase-loading-tripleloader-message h4 { - text-align: center; - font-size: 120%; - margin-top: 2em; - font-weight: normal; + font-size: 120%; + margin-top: 2em; + font-weight: normal; } .freebase-loading-tripleloader-message a { - font-size: 120%; - font-weight: bold; + font-size: 120%; + font-weight: bold; } .freebase-loading-authorization { - margin: 0em 2em; - padding: 0.6em 0.8em; - border: 1px solid #ccc; - background-color: #fff; - -moz-border-radius: 0.8em; - -webkit-border-radius: 0.8em; + margin: 0em 2em; + padding: 0.6em 0.8em; + border: 1px solid #ccc; + background-color: #fff; + -moz-border-radius: 0.8em; + -webkit-border-radius: 0.8em; } .freebase-loading-tripleloader-info { - margin-bottom: 0.5em; + margin-bottom: 0.5em; } .freebase-loading-tripleloader-info textarea { - width: 99%; - height: 5em; + width: 99%; + height: 5em; } \ No newline at end of file diff --git a/main/src/com/google/refine/model/recon/StandardReconConfig.java b/main/src/com/google/refine/model/recon/StandardReconConfig.java index 7aeca9c02..739c1edde 100644 --- a/main/src/com/google/refine/model/recon/StandardReconConfig.java +++ b/main/src/com/google/refine/model/recon/StandardReconConfig.java @@ -190,7 +190,7 @@ public class StandardReconConfig extends ReconConfig { @Override public int getBatchSize() { - return 3; + return 10; } @Override diff --git a/main/webapp/modules/core/scripts/dialogs/clustering-dialog.html b/main/webapp/modules/core/scripts/dialogs/clustering-dialog.html index 8de36b32c..0a1276584 100644 --- a/main/webapp/modules/core/scripts/dialogs/clustering-dialog.html +++ b/main/webapp/modules/core/scripts/dialogs/clustering-dialog.html @@ -1,43 +1,52 @@ -
+
+ + + - - +
+ This feature helps you find groups of different cell values that might be + alternative representations of the same thing. For example, the two strings + "New York" and "new york" are very likely to refer to the same concept and + just have capitalization differences, and "Gödel" and "Godel" probably refer + to the same person. + Find out more ... +
- Method: - -
Keying Function:
-
+
@@ -48,8 +57,8 @@ - - + + diff --git a/main/webapp/modules/core/scripts/dialogs/clustering-dialog.js b/main/webapp/modules/core/scripts/dialogs/clustering-dialog.js index c2795b3d8..97f0ad4b6 100644 --- a/main/webapp/modules/core/scripts/dialogs/clustering-dialog.js +++ b/main/webapp/modules/core/scripts/dialogs/clustering-dialog.js @@ -386,10 +386,10 @@ ClusteringDialog.prototype._resetFacets = function() { } this._facets = []; - this._createFacet("Cluster Size", "size"); - this._createFacet("Row Count", "rowCount"); - this._createFacet("Value Length Average", "avg"); - this._createFacet("Value Length Variance", "variance"); + this._createFacet("# Choices in Cluster", "size"); + this._createFacet("# Rows in Cluster", "rowCount"); + this._createFacet("Average Length of Choices", "avg"); + this._createFacet("Length Variance of Choices", "variance"); }; ClusteringDialog.prototype._createFacet = function(title, property) { diff --git a/main/webapp/modules/core/scripts/reconciliation/recon-dialog.js b/main/webapp/modules/core/scripts/reconciliation/recon-dialog.js index 2fb73cb5c..c06b5a799 100644 --- a/main/webapp/modules/core/scripts/reconciliation/recon-dialog.js +++ b/main/webapp/modules/core/scripts/reconciliation/recon-dialog.js @@ -214,7 +214,7 @@ ReconDialog.prototype._onAddNamespacedService = function() { var namespaceData = elmts.namespaceInput.data("data.suggest"); var typeData = elmts.typeInput.data("data.suggest"); if (namespaceData) { - var url = "http://2.standard-reconcile.dfhuynh.user.dev.freebaseapps.com/namespace_reconcile?namespace=" + + var url = "http://4.standard-reconcile.dfhuynh.user.dev.freebaseapps.com/namespace_reconcile?namespace=" + escape(namespaceData.id); if (typeData) { url += "&type=" + typeData.id; diff --git a/main/webapp/modules/core/scripts/reconciliation/recon-manager.js b/main/webapp/modules/core/scripts/reconciliation/recon-manager.js index 47a68fca3..fd1bbf191 100644 --- a/main/webapp/modules/core/scripts/reconciliation/recon-manager.js +++ b/main/webapp/modules/core/scripts/reconciliation/recon-manager.js @@ -150,7 +150,7 @@ ReconciliationManager.save = function(f) { ReconciliationManager._rebuildMap(); } else { ReconciliationManager.registerStandardService( - "http://3.standard-reconcile.dfhuynh.user.dev.freebaseapps.com/reconcile"); + "http://4.standard-reconcile.dfhuynh.user.dev.freebaseapps.com/reconcile"); } }, dataType: "json" diff --git a/main/webapp/modules/core/scripts/views/data-table/menu-reconcile.js b/main/webapp/modules/core/scripts/views/data-table/menu-reconcile.js index 9dca9f2fc..abbab8ed4 100644 --- a/main/webapp/modules/core/scripts/views/data-table/menu-reconcile.js +++ b/main/webapp/modules/core/scripts/views/data-table/menu-reconcile.js @@ -196,10 +196,9 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { ui.browsingEngine.addFacet( "list", { - "name" : column.name, + "name" : column.name + ": judgment", "columnName" : column.name, - "expression" : "cell.recon.judgment", - "omitError" : true + "expression" : 'forNonBlank(cell.recon.judgment, v, v, if(isNonBlank(value), "(unreconciled)", "(blank)"))' }, { "scroll" : false @@ -215,7 +214,7 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { ui.browsingEngine.addFacet( "range", { - "name" : column.name, + "name" : column.name + ": best candidate's score", "columnName" : column.name, "expression" : "cell.recon.best.score", "mode" : "range" @@ -232,10 +231,9 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { ui.browsingEngine.addFacet( "list", { - "name" : column.name, + "name" : column.name + ": best candidate's types match?", "columnName" : column.name, - "expression" : "cell.recon.features.typeMatch", - "omitError" : true + "expression" : 'forNonBlank(cell.recon.features.typeMatch, v, v, if(isNonBlank(value), "(unreconciled)", "(blank)"))' }, { "scroll" : false @@ -250,10 +248,9 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { ui.browsingEngine.addFacet( "list", { - "name" : column.name, + "name" : column.name + ": best candidate's name match?", "columnName" : column.name, - "expression" : "cell.recon.features.nameMatch", - "omitError" : true + "expression" : 'forNonBlank(cell.recon.features.nameMatch, v, v, if(isNonBlank(value), "(unreconciled)", "(blank)"))' }, { "scroll" : false @@ -269,7 +266,7 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { ui.browsingEngine.addFacet( "range", { - "name" : column.name, + "name" : column.name + ": best candidate's name edit distance", "columnName" : column.name, "expression" : "cell.recon.features.nameLevenshtein", "mode" : "range" @@ -286,7 +283,7 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { ui.browsingEngine.addFacet( "range", { - "name" : column.name, + "name" : column.name + ": best candidate's name word similarity", "columnName" : column.name, "expression" : "cell.recon.features.nameWordDistance", "mode" : "range" @@ -304,10 +301,9 @@ DataTableColumnHeaderUI.extendMenu(function(column, columnHeaderUI, menu) { ui.browsingEngine.addFacet( "list", { - "name" : column.name, - "columnName" : column.name, - "expression" : "cell.recon.best.type", - "omitError" : true + "name" : column.name + ": best candidate's types", + "columnName" : column.name, + "expression" : 'forNonBlank(cell.recon.best.type, v, v, if(isNonBlank(value), "(unreconciled)", "(blank)"))' } ); } diff --git a/main/webapp/modules/core/styles/common.less b/main/webapp/modules/core/styles/common.less index 13739d650..70053dfca 100644 --- a/main/webapp/modules/core/styles/common.less +++ b/main/webapp/modules/core/styles/common.less @@ -139,7 +139,7 @@ a img { .sharp_corners_right(); } -.button-disabled, a.button-disabled { +.button-disabled, a.button-disabled, .button.button-disabled, a.button.button-disabled { color: #666; border: 1px solid #ddd; background: #f3f3f3; @@ -399,3 +399,7 @@ img { font-family: inherit; font-size: inherit; } + +p.body-text { + margin-bottom: 1em; +} \ No newline at end of file diff --git a/main/webapp/modules/core/styles/dialogs/clustering-dialog.less b/main/webapp/modules/core/styles/dialogs/clustering-dialog.less index 3c6fda32c..e2e06e3a6 100644 --- a/main/webapp/modules/core/styles/dialogs/clustering-dialog.less +++ b/main/webapp/modules/core/styles/dialogs/clustering-dialog.less @@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @import-less url("../theme.less"); .clustering-dialog-table-container { - height: 500px; + height: 450px; overflow: auto; border: 1px solid #aaa; } diff --git a/main/webapp/modules/core/styles/jquery-ui-overrides.less b/main/webapp/modules/core/styles/jquery-ui-overrides.less index cf7a70ffd..e58aa2816 100644 --- a/main/webapp/modules/core/styles/jquery-ui-overrides.less +++ b/main/webapp/modules/core/styles/jquery-ui-overrides.less @@ -96,8 +96,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .ui-tabs .ui-tabs-panel { margin: 0; - padding: 0; - border-top: 1px solid @chrome_primary; + padding: @padding_normal; + border: 1px solid @chrome_primary; background: white; } diff --git a/main/webapp/modules/core/styles/project.less b/main/webapp/modules/core/styles/project.less index 83ce4d34b..8fa34dce0 100644 --- a/main/webapp/modules/core/styles/project.less +++ b/main/webapp/modules/core/styles/project.less @@ -80,6 +80,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. font-size: 1.3em; background: @chrome_secondary; } + +#left-panel .ui-tabs .ui-tabs-panel { + border-left: none; + border-right: none; + border-bottom: none; + padding: 0; + } #right-panel { position: fixed; diff --git a/main/webapp/modules/core/styles/pure.css b/main/webapp/modules/core/styles/pure.css index 5aa5d42d6..3acfca3df 100644 --- a/main/webapp/modules/core/styles/pure.css +++ b/main/webapp/modules/core/styles/pure.css @@ -41,4 +41,4 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. background: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f9f9f9)); background: -moz-linear-gradient(top, #e3e3e3, #f9f9f9); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e3e3e3', endColorstr='#f9f9f9'); -} \ No newline at end of file +}