From 934c0f81c327394058d493e9140d694b2978603f Mon Sep 17 00:00:00 2001 From: David Huynh Date: Mon, 22 Feb 2010 01:28:13 +0000 Subject: [PATCH] Forgot to check in image files. Added commands for judging similar cells. Started to fix/unify terminologies for recon operations. git-svn-id: http://google-refine.googlecode.com/svn/trunk@116 7d457c2a-affb-35e4-300a-418c747d4874 --- src/graphics/big-check.psd | Bin 0 -> 29638 bytes src/graphics/checks-map.psd | Bin 0 -> 35155 bytes src/graphics/small-checks.psd | Bin 0 -> 29910 bytes .../metaweb/gridworks/GridworksServlet.java | 4 +- .../commands/recon/JudgeOneCellCommand.java | 3 +- .../recon/JudgeSimilarCellsCommand.java | 220 ++++++++++++++++++ .../gridworks/model/AbstractOperation.java | 4 +- src/main/webapp/images/checks-map.png | Bin 0 -> 568 bytes .../scripts/project/data-table-cell-ui.js | 108 ++++++--- .../project/data-table-column-header-ui.js | 35 +-- .../webapp/scripts/project/recon-dialog.js | 2 +- src/main/webapp/styles/data-table-view.css | 43 +++- 12 files changed, 370 insertions(+), 49 deletions(-) create mode 100644 src/graphics/big-check.psd create mode 100644 src/graphics/checks-map.psd create mode 100644 src/graphics/small-checks.psd create mode 100644 src/main/java/com/metaweb/gridworks/commands/recon/JudgeSimilarCellsCommand.java create mode 100644 src/main/webapp/images/checks-map.png diff --git a/src/graphics/big-check.psd b/src/graphics/big-check.psd new file mode 100644 index 0000000000000000000000000000000000000000..25daff4cc3a97e6aaed857782d86180728d3e204 GIT binary patch literal 29638 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 literal 0 HcmV?d00001 diff --git a/src/graphics/checks-map.psd b/src/graphics/checks-map.psd new file mode 100644 index 0000000000000000000000000000000000000000..b11b63bd9f3722aa72536a5ddb8ff20118cea47a GIT binary patch literal 35155 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 cellChanges = new ArrayList(_project.rows.size()); + String similarValue = cell.value.toString(); + + RowVisitor rowVisitor = new RowVisitor() { + List cellChanges; + String similarValue; + + public RowVisitor init(List cellChanges, String similarValue) { + this.cellChanges = cellChanges; + this.similarValue = similarValue; + return this; + } + + public boolean visit(Project project, int rowIndex, Row row, boolean contextual) { + Cell cell = row.getCell(cellIndex); + if (cell != null && !ExpressionUtils.isBlank(cell.value) && similarValue.equals(cell.value)) { + Cell newCell = new Cell( + cell.value, + cell.recon == null ? new Recon() : cell.recon.dup() + ); + + if (match != null) { + newCell.recon.judgment = Recon.Judgment.Matched; + newCell.recon.match = match; + } else { + if ("match".equals(judgment)) { + ReconCandidate match = null; + + if (cell.recon != null) { + for (ReconCandidate c : cell.recon.candidates) { + if (candidateID.equals(c.topicID)) { + match = c; + break; + } + } + } + if (match == null) { + return false; + } + + newCell.recon.judgment = Recon.Judgment.Matched; + newCell.recon.match = match; + } else if ("new".equals(judgment)) { + newCell.recon.judgment = Recon.Judgment.New; + } else if ("discard".equals(judgment)) { + newCell.recon.judgment = Recon.Judgment.None; + newCell.recon.match = null; + } + } + + CellChange cellChange = new CellChange(rowIndex, cellIndex, cell, newCell); + cellChanges.add(cellChange); + } + return false; + } + }.init(cellChanges, similarValue); + + FilteredRows filteredRows = engine.getAllFilteredRows(false); + filteredRows.accept(_project, rowVisitor); + + String description = null; + if (match != null) { + description = "Match " + + cellChanges.size() + " cell(s) in column " + + column.getHeaderLabel() + " containing " + + similarValue + " to topic " + + match.topicName + " (" + + match.topicID + ")"; + } else { + if ("match".equals(judgment)) { + description = "Match " + + cellChanges.size() + " cell(s) in column " + + column.getHeaderLabel() + " containing " + + similarValue + " to topic " + + candidateID; + } else if ("new".equals(judgment)) { + description = "Mark to create new topic for " + + cellChanges.size() + " cell(s) in column " + + column.getHeaderLabel() + " containing " + + similarValue; + } else if ("discard".equals(judgment)) { + description = "Discard recon judgments for " + + cellChanges.size() + " cell(s) in column " + + column.getHeaderLabel() + " containing " + + similarValue; + } + } + + MassCellChange massCellChange = new MassCellChange( + cellChanges, column.getHeaderLabel(), false); + + return new HistoryEntry(_project, description, null, massCellChange); + } + } +} diff --git a/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java b/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java index 8da7a1ee6..8bb96262b 100644 --- a/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java +++ b/src/main/java/com/metaweb/gridworks/model/AbstractOperation.java @@ -15,7 +15,9 @@ import com.metaweb.gridworks.process.QuickHistoryEntryProcess; * projects. */ abstract public class AbstractOperation implements Serializable, Jsonizable { - public Process createProcess(Project project, Properties options) throws Exception { + private static final long serialVersionUID = 3916055862440019600L; + + public Process createProcess(Project project, Properties options) throws Exception { return new QuickHistoryEntryProcess(project, getBriefDescription()) { @Override protected HistoryEntry createHistoryEntry() throws Exception { diff --git a/src/main/webapp/images/checks-map.png b/src/main/webapp/images/checks-map.png new file mode 100644 index 0000000000000000000000000000000000000000..8e39cbd024d1a8fb56a0a6a75f3a9ef28c74f156 GIT binary patch literal 568 zcmV-80>}M{P)QGfo=f-2ONQhjsT|;O4tW@0sQn2#1?dwEx5}_`ZxIG$pN^1<|fbO}yEYjg#I82p@VfQ8U#qCoUa`01;HEA1_a-xdpOrENj{nTU!Ej09wn zR+a#Vm9?XkC?!gXLK2L%#Z_LUi>iyO+(5$bp02@p0Ri4UZG*Mcb>fPhm#$Z$o+#?aBA1DCq}aCMHJRyV||l!50ucioT(yArQ=8gvKghPxKA8hCndC zJ}F>CXQFC8NdkE?M6@ER=DsALk)d#qQy~%v08NXk%p315=7 zASpwc{e&D;&X8GeA!kUdsfh;Z8w(_5sBCIViInF@fB^uz^KtoZ^DgKB0000 ').appendTo(divContent); - $('mark as new') - .addClass("data-table-recon-action") - .appendTo(divContent).click(function(evt) { - self._doMarkAsNew(); - }); + var ul = $('
').addClass("data-table-recon-candidates").appendTo(divContent); if (this._dataTableView._showRecon && "c" in r && r.c.length > 0) { var candidates = r.c; - var ul = $('
    ').addClass("data-table-recon-candidates").appendTo(divContent); var renderCandidate = function(candidate, index) { - var li = $('
  • ').appendTo(ul); + var li = $('
    ').addClass("data-table-recon-candidate").appendTo(ul); + + $(' ') + .addClass("data-table-recon-match-similar") + .attr("title", "Match this topic to this cell and other cells with the same content") + .appendTo(li).click(function(evt) { + self._doMatchTopicToSimilarCells(candidate.id); + }); + + $(' ') + .addClass("data-table-recon-match") + .attr("title", "Match this topic to this cell") + .appendTo(li).click(function(evt) { + self._doMatchTopicToOneCell(candidate.id); + }); + $('') .addClass("data-table-recon-topic") .attr("href", "http://www.freebase.com/view" + candidate.id) @@ -75,11 +85,6 @@ DataTableCellUI.prototype._render = function() { .appendTo(li); $('').addClass("data-table-recon-score").text("(" + Math.round(candidate.score) + ")").appendTo(li); - $('match') - .addClass("data-table-recon-action") - .appendTo(li).click(function(evt) { - self._doSetAsMatch(candidate.id); - }); }; for (var i = 0; i < candidates.length; i++) { @@ -87,6 +92,23 @@ DataTableCellUI.prototype._render = function() { } } + var liNew = $('
    ').addClass("data-table-recon-candidate").appendTo(ul); + $(' ') + .addClass("data-table-recon-match-similar") + .attr("title", "Create a new topic for this cell and other cells with the same content") + .appendTo(liNew).click(function(evt) { + self._doMatchNewTopicToSimilarCells(); + }); + + $(' ') + .addClass("data-table-recon-match") + .attr("title", "Create a new topic for this cell") + .appendTo(liNew).click(function(evt) { + self._doMatchNewTopicToOneCell(); + }); + + $('').text("(New topic)").appendTo(liNew); + $('') .addClass("data-table-recon-search") .click(function(evt) { @@ -103,14 +125,22 @@ DataTableCellUI.prototype._doRematch = function() { this._doJudgment("discard"); }; -DataTableCellUI.prototype._doMarkAsNew = function() { +DataTableCellUI.prototype._doMatchNewTopicToOneCell = function() { this._doJudgment("new"); }; -DataTableCellUI.prototype._doSetAsMatch = function(candidateID) { +DataTableCellUI.prototype._doMatchNewTopicToSimilarCells = function() { + this._doJudgmentForSimilarCells("new"); +}; + +DataTableCellUI.prototype._doMatchTopicToOneCell = function(candidateID) { this._doJudgment("match", { candidate : candidateID }); }; +DataTableCellUI.prototype._doMatchTopicToSimilarCells = function(candidateID) { + this._doJudgmentForSimilarCells("match", { candidate : candidateID }); +}; + DataTableCellUI.prototype._doJudgment = function(judgment, params) { params = params || {}; params.row = this._rowIndex; @@ -119,10 +149,19 @@ DataTableCellUI.prototype._doJudgment = function(judgment, params) { this.doPostThenUpdate("recon-judge-one-cell", params); }; +DataTableCellUI.prototype._doJudgmentForSimilarCells = function(judgment, params) { + params = params || {}; + params.row = this._rowIndex; + params.cell = this._cellIndex; + params.judgment = judgment; + + ui.dataTableView.doPostThenUpdate("recon-judge-similar-cells", params); +}; + DataTableCellUI.prototype._searchForMatch = function() { var self = this; var frame = DialogSystem.createDialog(); - frame.width("200px"); + frame.width("400px"); var header = $('
    ').addClass("dialog-header").text("Search for Match").appendTo(frame); var body = $('
    ').addClass("dialog-body").appendTo(frame); @@ -131,26 +170,41 @@ DataTableCellUI.prototype._searchForMatch = function() { $('

    ').text("Search Freebase for topic to match " + this._cell.v).appendTo(body); var input = $('').attr("value", this._cell.v).appendTo($('

    ').appendTo(body)); + var match = null; input.suggest({}).bind("fb-select", function(e, data) { - var params = { - row: self._rowIndex, - cell: self._cellIndex, - topicID: data.id, - topicGUID: data.guid, - topicName: data.name, - types: $.map(data.type, function(elmt) { return elmt.id; }).join(",") - }; - self.doPostThenUpdate("recon-judge-one-cell", params); - - DialogSystem.dismissUntil(level - 1); + match = data; }); + var pSimilar = $('

    ').appendTo(body); + var checkSimilar = $('').appendTo(pSimilar); + $('').text(" Match other cells with the same content as well").appendTo(pSimilar); + + $('').text("Match").click(function() { + if (match != null) { + var params = { + row: self._rowIndex, + cell: self._cellIndex, + topicID: match.id, + topicGUID: match.guid, + topicName: match.name, + types: $.map(match.type, function(elmt) { return elmt.id; }).join(",") + }; + if (checkSimilar[0].checked) { + ui.dataTableView.doPostThenUpdate("recon-judge-similar-cells", params); + } else { + self.doPostThenUpdate("recon-judge-one-cell", params); + } + + DialogSystem.dismissUntil(level - 1); + } + }).appendTo(footer); + $('').text("Cancel").click(function() { DialogSystem.dismissUntil(level - 1); }).appendTo(footer); var level = DialogSystem.showDialog(frame); - input[0].focus(); + input.focus().data("suggest").textchange(); }; DataTableCellUI.prototype.createUpdateFunction = function(onBefore) { diff --git a/src/main/webapp/scripts/project/data-table-column-header-ui.js b/src/main/webapp/scripts/project/data-table-column-header-ui.js index 1beb9a7b2..1ee90eceb 100644 --- a/src/main/webapp/scripts/project/data-table-column-header-ui.js +++ b/src/main/webapp/scripts/project/data-table-column-header-ui.js @@ -195,24 +195,31 @@ DataTableColumnHeaderUI.prototype._createMenuForColumnHeader = function(elmt) { }, {}, { - label: "Approve Best Candidates", - tooltip: "Approve best reconciliaton candidate per cell in this column for all current filtered rows", + label: "Match Each Cell to Its Best Candidate", + tooltip: "Match each cell to its best candidate in this column for all current filtered rows", click: function() { - self._doApproveBestCandidates(); + self._doReconMatchBestCandidates(); } }, { - label: "Approve As New Topics", - tooltip: "Set to create new topics for cells in this column for all current filtered rows", + label: "Create a New Topic for Each Cell", + tooltip: "Mark to create one new topic for each cell in this column for all current filtered rows", click: function() { - self._doApproveNewTopics(); + self._doReconMarkNewTopics(false); } }, { - label: "Discard Reconciliation Results", + label: "Create One New Topic for All Cells", + tooltip: "Mark to create one new, common topic for all cells in this column for all current filtered rows", + click: function() { + self._doReconMarkNewTopics(true); + } + }, + { + label: "Discard Reconciliation Judgments", tooltip: "Discard reconciliaton results in this column for all current filtered rows", click: function() { - self._doDiscardReconResults(); + self._doReconDiscardJudgments(); } }, {}, @@ -438,21 +445,21 @@ DataTableColumnHeaderUI.prototype._doReconcile = function() { }; -DataTableColumnHeaderUI.prototype._doDiscardReconResults = function() { +DataTableColumnHeaderUI.prototype._doReconDiscardJudgments = function() { this._dataTableView.doPostThenUpdate( "recon-discard-judgments", { columnName: this._column.headerLabel } ); }; -DataTableColumnHeaderUI.prototype._doApproveBestCandidates = function() { +DataTableColumnHeaderUI.prototype._doReconMatchBestCandidates = function() { this._dataTableView.doPostThenUpdate( - "recon-approve-best-matches", + "recon-match-best-candidates", { columnName: this._column.headerLabel } ); }; -DataTableColumnHeaderUI.prototype._doApproveNewTopics = function() { +DataTableColumnHeaderUI.prototype._doReconMarkNewTopics = function() { this._dataTableView.doPostThenUpdate( "recon-mark-new-topics", { columnName: this._column.headerLabel } @@ -462,7 +469,7 @@ DataTableColumnHeaderUI.prototype._doApproveNewTopics = function() { DataTableColumnHeaderUI.prototype._doSearchToMatch = function() { var self = this; var frame = DialogSystem.createDialog(); - frame.width("200px"); + frame.width("400px"); var header = $('
    ').addClass("dialog-header").text("Search for Match").appendTo(frame); var body = $('
    ').addClass("dialog-body").appendTo(frame); @@ -491,7 +498,7 @@ DataTableColumnHeaderUI.prototype._doSearchToMatch = function() { }).appendTo(footer); var level = DialogSystem.showDialog(frame); - input[0].focus(); + input.focus().data("suggest").textchange(); }; DataTableColumnHeaderUI.prototype._doAddColumn = function(initialExpression) { diff --git a/src/main/webapp/scripts/project/recon-dialog.js b/src/main/webapp/scripts/project/recon-dialog.js index dd6b6e750..fb2e32533 100644 --- a/src/main/webapp/scripts/project/recon-dialog.js +++ b/src/main/webapp/scripts/project/recon-dialog.js @@ -97,6 +97,6 @@ ReconDialog.prototype._createDialog = function() { var level = DialogSystem.showDialog(frame); - input[0].focus(); + input.focus().data("suggest").textchange(); }; diff --git a/src/main/webapp/styles/data-table-view.css b/src/main/webapp/styles/data-table-view.css index e8d2a67ad..37bdd905b 100644 --- a/src/main/webapp/styles/data-table-view.css +++ b/src/main/webapp/styles/data-table-view.css @@ -52,12 +52,15 @@ img.column-header-menu { } -ul.data-table-recon-candidates { - margin: 0.75em 1.5em; - padding: 0; - list-style: circle; +div.data-table-recon-candidates { + margin: 0.5em 0; + min-width: 15em; color: #88a; } +div.data-table-recon-candidate { + padding-left: 35px; + position: relative; +} a.data-table-recon-topic { text-decoration: none; @@ -82,3 +85,35 @@ a.data-table-recon-action:hover, a.data-table-recon-search:hover { text-decoration: underline; color: #008; } + +a.data-table-recon-match { + display: block; + width: 16px; + height: 16px; + background-image: url('../images/checks-map.png'); + background-repeat: no-repeat; + background-position: -17px 0px; + text-decoration: none; + position: absolute; + top: 0px; + left: 0px; +} +a.data-table-recon-match:hover { + background-position: 0px 0px; +} + +a.data-table-recon-match-similar { + display: block; + width: 16px; + height: 16px; + background-image: url('../images/checks-map.png'); + background-repeat: no-repeat; + background-position: -17px -17px; + text-decoration: none; + position: absolute; + top: 0px; + left: 16px; +} +a.data-table-recon-match-similar:hover { + background-position: 0px -17px; +}