From 5a0a8bea4f8812b9ce49ce54c53008eb87195c47 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Thu, 4 Mar 2010 00:12:39 +0000 Subject: [PATCH] Added custom dialog box for create column operation (with a field for the new column name). git-svn-id: http://google-refine.googlecode.com/svn/trunk@180 7d457c2a-affb-35e4-300a-418c747d4874 --- .../operations/ColumnAdditionOperation.java | 2 +- .../views/data-table-column-header-ui.js | 84 ++++++++++++++----- 2 files changed, 65 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java b/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java index cbeab5537..4c572e53b 100644 --- a/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java +++ b/src/main/java/com/metaweb/gridworks/operations/ColumnAdditionOperation.java @@ -136,7 +136,7 @@ public class ColumnAdditionOperation extends EngineDependentOperation { ExpressionUtils.bind(bindings, row, rowIndex, cell); Object v = eval.evaluate(bindings); - if (v != null) { + if (ExpressionUtils.isNonBlankData(v)) { Cell newCell = new Cell(v, null); cellsAtRows.add(new CellAtRow(rowIndex, newCell)); diff --git a/src/main/webapp/scripts/views/data-table-column-header-ui.js b/src/main/webapp/scripts/views/data-table-column-header-ui.js index fdfc4e542..8d1d2765b 100644 --- a/src/main/webapp/scripts/views/data-table-column-header-ui.js +++ b/src/main/webapp/scripts/views/data-table-column-header-ui.js @@ -605,27 +605,71 @@ DataTableColumnHeaderUI.prototype._doSearchToMatch = function() { DataTableColumnHeaderUI.prototype._doAddColumn = function(initialExpression) { var self = this; - DataTableView.promptExpressionOnVisibleRows( - this._column, - "Add Column Based on Column " + this._column.headerLabel, - initialExpression, - function(expression) { - var headerLabel = window.prompt("Enter header label for new column:"); - if (headerLabel != null) { - Gridworks.postProcess( - "add-column", - { - baseColumnName: self._column.headerLabel, - expression: expression, - headerLabel: headerLabel, - columnInsertIndex: self._columnIndex + 1 - }, - null, - { modelsChanged: true } - ); - } - } + var frame = DialogSystem.createDialog(); + frame.width("700px"); + + var header = $('
').addClass("dialog-header").text("Add Column Based on Column " + this._column.headerLabel).appendTo(frame); + var body = $('
').addClass("dialog-body").appendTo(frame); + var footer = $('
').addClass("dialog-footer").appendTo(frame); + + body.html( + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
' + + 'New column name' + + '' + + '' + + '
' + ExpressionPreviewDialog.generateWidgetHtml() + '
' ); + var bodyElmts = DOM.bind(body); + + footer.html( + '' + + '' + ); + var footerElmts = DOM.bind(footer); + + var level = DialogSystem.showDialog(frame); + var dismiss = function() { + DialogSystem.dismissUntil(level - 1); + }; + + footerElmts.okButton.click(function() { + var columnName = $.trim(bodyElmts.columnNameInput[0].value); + if (columnName.length == 0) { + alert("You must enter a column name."); + return; + } + + Gridworks.postProcess( + "add-column", + { + baseColumnName: self._column.headerLabel, + expression: previewWidget.getExpression(true), + headerLabel: columnName, + columnInsertIndex: self._columnIndex + 1 + }, + null, + { modelsChanged: true } + ); + dismiss(); + }) + footerElmts.cancelButton.click(dismiss); + + var o = DataTableView.sampleVisibleRows(this._column); + var previewWidget = new ExpressionPreviewDialog.Widget( + bodyElmts, + this._column.cellIndex, + o.rowIndices, + o.values, + "value" + ); }; DataTableColumnHeaderUI.prototype._doRemoveColumn = function() {