Display the text required for filtering on custom fields in the TKO UI.
Signed-off-by: Steve Howard <[email protected]>
--- autotest/frontend/client/src/autotest/common/table/DataTable.java
2010-01-11 11:25:45.000000000 -0800
+++ autotest/frontend/client/src/autotest/common/table/DataTable.java
2010-01-12 13:44:26.000000000 -0800
@@ -81,7 +81,8 @@
table.setCellSpacing(0);
table.setCellPadding(0);
- table.setStyleName("data-table");
+ table.setStylePrimaryName("data-table");
+ table.addStyleDependentName("outlined");
for (int i = 0; i < columns.length; i++) {
table.setText(0, i, columns[i][1]);
--- autotest/frontend/client/src/autotest/public/afeclient.css 2010-01-12
13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/public/afeclient.css 2010-01-12
13:44:26.000000000 -0800
@@ -8,10 +8,13 @@
}
.data-table {
- border: 2px solid #A0A0A0;
empty-cells: show;
}
+.data-table-outlined {
+ border: 2px solid #A0A0A0;
+}
+
.data-table td {
margin: 0;
padding: 0.2em 0.4em;
--- autotest/frontend/client/src/autotest/tko/AttributeField.java
2010-01-12 13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/tko/AttributeField.java
2010-01-12 13:44:26.000000000 -0800
@@ -3,6 +3,11 @@
public abstract class AttributeField extends ParameterizedField {
@Override
public String getSqlCondition(String value) {
- return getSimpleSqlCondition(getQuotedSqlName() + ".value", value);
+ return getSimpleSqlCondition(getFilteringName(), value);
+ }
+
+ @Override
+ public String getFilteringName() {
+ return getQuotedSqlName() + ".value";
}
}
--- autotest/frontend/client/src/autotest/tko/LabelField.java 2010-01-12
13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/tko/LabelField.java 2010-01-12
13:44:26.000000000 -0800
@@ -5,10 +5,15 @@
public abstract class LabelField extends ParameterizedField {
@Override
public String getSqlCondition(String value) {
- String condition = "IS NOT NULL";
+ String condition = " IS NOT NULL";
if (value.equals(Utils.JSON_NULL)) {
- condition = "IS NULL";
+ condition = " IS NULL";
}
- return getQuotedSqlName() + ".id " + condition;
+ return getFilteringName() + condition;
+ }
+
+ @Override
+ public String getFilteringName() {
+ return getQuotedSqlName() + ".id";
}
}
--- autotest/frontend/client/src/autotest/tko/ParameterizedField.java
2010-01-12 13:44:26.000000000 -0800
+++ autotest/frontend/client/src/autotest/tko/ParameterizedField.java
2010-01-12 13:44:26.000000000 -0800
@@ -127,4 +127,12 @@
public Object getIdentifier() {
return new FieldIdentifier(this);
}
+
+ /**
+ * Get the exact field to use in a SQL WHERE clause to filter on this
field.
+ *
+ * This is a necessary artifact of the way we directly expose SQL WHERE
clauses to the user. It
+ * will hopefully be possible to get rid of this in the future if that
changes.
+ */
+ public abstract String getFilteringName();
}
---
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListDisplay.java
2010-01-12 13:44:26.000000000 -0800
+++
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListDisplay.java
2010-01-12 13:44:26.000000000 -0800
@@ -7,23 +7,25 @@
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
public class ParameterizedFieldListDisplay extends Composite implements
Display {
- private static class FieldWidget extends Composite implements
Display.FieldWidget {
+ private static class FieldWidget implements Display.FieldWidget {
+ private String label;
private SimpleHyperlink deleteLink = new SimpleHyperlink("[X]");
public FieldWidget(String label) {
- Panel panel = new HorizontalPanel();
- panel.add(new Label(label));
- panel.add(deleteLink);
- initWidget(panel);
+ this.label = label;
+ }
+
+ public String getLabel() {
+ return label;
}
@Override
@@ -31,24 +33,36 @@
return deleteLink;
}
}
-
+
private ExtendedListBox typeSelect = new ExtendedListBox();
private TextBox valueInput = new TextBox();
private SimpleHyperlink addLink = new SimpleHyperlink("Add");
- private Panel fieldListPanel = new VerticalPanel();
-
+ private FlexTable fieldTable = new FlexTable();
+
public ParameterizedFieldListDisplay() {
Panel addFieldPanel = new HorizontalPanel();
addFieldPanel.add(new Label("Add custom field:"));
addFieldPanel.add(typeSelect);
addFieldPanel.add(valueInput);
addFieldPanel.add(addLink);
-
+
+ fieldTable.setText(0, 0, "Field name");
+ fieldTable.setText(0, 1, "Filtering name");
+ fieldTable.setCellSpacing(0);
+ fieldTable.setStylePrimaryName("data-table");
+ fieldTable.getRowFormatter().setStyleName(0, "data-row-header");
+ setFieldTableVisible();
+
Panel container = new VerticalPanel();
- container.add(fieldListPanel);
+ container.add(fieldTable);
container.add(addFieldPanel);
initWidget(container);
}
+
+ private void setFieldTableVisible() {
+ boolean visible = (fieldTable.getRowCount() > 1);
+ fieldTable.setVisible(visible);
+ }
@Override
public HasClickHandlers getAddLink() {
@@ -66,14 +80,27 @@
}
@Override
- public Display.FieldWidget addFieldWidget(String name) {
+ public Display.FieldWidget addFieldWidget(String name, String
filteringName) {
+ int row = fieldTable.getRowCount();
FieldWidget widget = new FieldWidget(name);
- fieldListPanel.add(widget);
+ fieldTable.setText(row, 0, name);
+ fieldTable.setText(row, 1, filteringName);
+ fieldTable.setWidget(row, 2, widget.deleteLink);
+ setFieldTableVisible();
return widget;
}
@Override
public void removeFieldWidget(Display.FieldWidget widget) {
- fieldListPanel.remove((Widget) widget);
+ FieldWidget fieldWidget = (FieldWidget) widget;
+ for (int row = 1; row < fieldTable.getRowCount(); row++) {
+ if (fieldTable.getText(row, 0).equals(fieldWidget.getLabel())) {
+ fieldTable.removeRow(row);
+ setFieldTableVisible();
+ return;
+ }
+ }
+
+ throw new IllegalArgumentException("Unable to find field widget " +
widget);
}
}
---
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListPresenter.java
2010-01-12 13:44:26.000000000 -0800
+++
autotest/frontend/client/src/autotest/tko/ParameterizedFieldListPresenter.java
2010-01-12 13:44:26.000000000 -0800
@@ -25,7 +25,7 @@
public SimplifiedList getTypeSelect();
public HasText getValueInput();
public HasClickHandlers getAddLink();
- public FieldWidget addFieldWidget(String name);
+ public FieldWidget addFieldWidget(String name, String filteringName);
public void removeFieldWidget(FieldWidget widget);
}
@@ -89,7 +89,8 @@
private void addField(final ParameterizedField field) {
headerFields.add(field);
- Display.FieldWidget fieldWidget =
display.addFieldWidget(field.getName());
+ Display.FieldWidget fieldWidget =
display.addFieldWidget(field.getName(),
+
field.getFilteringName());
fieldInputMap.put(field, fieldWidget);
fieldWidget.getDeleteLink().addClickHandler(new ClickHandler() {
@Override
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest