SmartClient Version: v8.2p_2012-10-22/PowerEdition Deployment (built 2012-10-22)
Firefox Version: 17.01
When you have a lot of potential columns for a list grid, the column picker (right-click header - Columns) doesn't let you scroll to the bottom of the list. It scrolls momementarily then scrolls back up before you can choose a column (via mouse wheel or scroll bar drag). We don't think this issue existed a few months ago so may have been introduced recently. The behaviour does not happen in Chrome or IE.
Sample code from modified Showcase GridChart example:
Let me know if you need anything else.
Thanks again!
Matt
Firefox Version: 17.01
When you have a lot of potential columns for a list grid, the column picker (right-click header - Columns) doesn't let you scroll to the bottom of the list. It scrolls momementarily then scrolls back up before you can choose a column (via mouse wheel or scroll bar drag). We don't think this issue existed a few months ago so may have been introduced recently. The behaviour does not happen in Chrome or IE.
Sample code from modified Showcase GridChart example:
Code:
/* * Isomorphic SmartGWT web presentation layer * Copyright 2000 and beyond Isomorphic Software, Inc. * * OWNERSHIP NOTICE * Isomorphic Software owns and reserves all rights not expressly granted in this source code, * including all intellectual property rights to the structure, sequence, and format of this code * and to all designs, interfaces, algorithms, schema, protocols, and inventions expressed herein. * * If you have any questions, please email <sourcecode@isomorphic.com>. * * This entire comment must accompany any portion of Isomorphic Software source code that is * copied or moved from this file. */ package com.smartgwt.sample.showcase.client.chart; import com.smartgwt.client.types.ChartType; import com.smartgwt.client.types.ListGridEditEvent; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.HTMLFlow; import com.smartgwt.client.widgets.chart.FacetChart; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.SelectItem; import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.grid.events.EditCompleteEvent; import com.smartgwt.client.widgets.grid.events.EditCompleteHandler; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.sample.showcase.client.PanelFactory; import com.smartgwt.sample.showcase.client.ShowcasePanel; import java.util.ArrayList; import java.util.List; public class GridChart extends ShowcasePanel { private static final String DESCRIPTION = "<p>Data loaded into a ListGrid can be charted with a single API call.</p>" + "<p>Use the \"Chart Type\" selector below to see same data rendered by multiple different " + "chart types. You can also right-click on the chart to change the way data is visualized.</p>" + "Edit the data in the grid to have the chart regenerated automatically."; public static class Factory implements PanelFactory { private String id; public Canvas create() { GridChart panel = new GridChart(); id = panel.getID(); return panel; } public String getID() { return id; } public String getDescription() { return DESCRIPTION; } } @Override protected boolean isTopIntro() { return true; } public Canvas getViewPanel() { if(SC.hasCharts()) { if(SC.hasDrawing()) { List<ListGridField> fields = new ArrayList<ListGridField>(); fields.add(new ListGridField ("Jan", "January")); fields.add(new ListGridField ("Feb", "February")); fields.add(new ListGridField ("Mar", "March")); fields.add(new ListGridField ("Apr", "April")); fields.add(new ListGridField ("May", "May")); fields.add(new ListGridField ("Jun", "June")); fields.add(new ListGridField ("Jul", "July")); fields.add(new ListGridField ("Aug", "August")); fields.add(new ListGridField ("Sep", "September")); fields.add(new ListGridField ("Oct", "October")); fields.add(new ListGridField ("Nov", "November")); fields.add(new ListGridField ("Dec", "December")); fields.add(new ListGridField ("A", "A")); fields.add(new ListGridField ("B", "B")); fields.add(new ListGridField ("C", "C")); fields.add(new ListGridField ("D", "D")); fields.add(new ListGridField ("E", "E")); fields.add(new ListGridField ("F", "F")); fields.add(new ListGridField ("G", "G")); fields.add(new ListGridField ("H", "H")); fields.add(new ListGridField ("I", "I")); fields.add(new ListGridField ("J", "J")); fields.add(new ListGridField ("K", "K")); fields.add(new ListGridField ("L", "L")); fields.add(new ListGridField ("M", "M")); fields.add(new ListGridField ("N", "N")); fields.add(new ListGridField ("O", "O")); fields.add(new ListGridField ("P", "P")); fields.add(new ListGridField ("Q", "Q")); fields.add(new ListGridField ("R", "R")); fields.add(new ListGridField ("S", "S")); fields.add(new ListGridField ("T", "T")); fields.add(new ListGridField ("U", "U")); fields.add(new ListGridField ("V", "V")); fields.add(new ListGridField ("W", "W")); fields.add(new ListGridField ("X", "X")); fields.add(new ListGridField ("Y", "Y")); fields.add(new ListGridField ("Z", "Z")); fields.add(new ListGridField ("A1", "A1")); fields.add(new ListGridField ("B1", "B1")); fields.add(new ListGridField ("C1", "C1")); fields.add(new ListGridField ("D1", "D1")); fields.add(new ListGridField ("E1", "E1")); fields.add(new ListGridField ("F1", "F1")); fields.add(new ListGridField ("G1", "G1")); fields.add(new ListGridField ("H1", "H1")); fields.add(new ListGridField ("I1", "I1")); fields.add(new ListGridField ("J1", "J1")); fields.add(new ListGridField ("K1", "K1")); fields.add(new ListGridField ("L1", "L1")); fields.add(new ListGridField ("M1", "M1")); fields.add(new ListGridField ("N1", "N1")); fields.add(new ListGridField ("O1", "O1")); fields.add(new ListGridField ("P1", "P1")); fields.add(new ListGridField ("Q1", "Q1")); fields.add(new ListGridField ("R1", "R1")); fields.add(new ListGridField ("S1", "S1")); fields.add(new ListGridField ("T1", "T1")); fields.add(new ListGridField ("U1", "U1")); fields.add(new ListGridField ("V1", "V1")); fields.add(new ListGridField ("W1", "W1")); fields.add(new ListGridField ("X1", "X1")); fields.add(new ListGridField ("Y1", "Y1")); fields.add(new ListGridField ("Z1", "Z1")); for (int x=12; x < 64; ++x) { fields.get(x).setHidden(true); } // Creating product sales char maxProduct = 'E'; List<ListGridRecord> salesData = new ArrayList<ListGridRecord>(); for (char prod = 'A'; prod <= maxProduct; prod++) { ListGridRecord rec = new ListGridRecord(); rec.setAttribute("product", "Product " + prod); // Product name long minSales = Math.round(Math.random() * 8000) + 2000; // 2k-10k long maxVariance = minSales / 3; // up to 33% of min value for this product for (ListGridField field : fields) { rec.setAttribute(field.getName(), Math.round(Math.random() * maxVariance) + minSales); } salesData.add(rec); } // Creating product name field ListGridField field = new ListGridField("product", "Products"); field.setCanEdit(Boolean.FALSE); fields.add(0, field); // Creating grid and overriding getCellStyle() to use custom styling for product field // Use Dark final ListGrid grid = new ListGrid() { @Override protected String getCellStyle (ListGridRecord record, int rowNum, int colNum) { if ("product".equals(getFieldName(colNum))) { return super.getCellStyle(record, rowNum, colNum) + "Dark"; } else { return super.getCellStyle(record, rowNum, colNum); } } }; grid.setAlternateRecordStyles(Boolean.FALSE); grid.setHeight(120); grid.setCanEdit(Boolean.TRUE); grid.setEditEvent(ListGridEditEvent.CLICK); grid.setFields(fields.toArray(new ListGridField[0])); grid.setData(salesData.toArray(new ListGridRecord[0])); grid.setChartType(ChartType.AREA); // Creating chart final FacetChart chart = grid.chartData("product"); grid.addEditCompleteHandler(new EditCompleteHandler() { public void onEditComplete(EditCompleteEvent event) { // Updating chart data chart.setData(grid.getRecords()); } }); final DynamicForm chartSelector = new DynamicForm(); final SelectItem chartType = new SelectItem("chartType", "Chart Type"); chartType.setValueMap( ChartType.AREA.getValue(), ChartType.BAR.getValue(), ChartType.COLUMN.getValue(), ChartType.DOUGHNUT.getValue(), ChartType.LINE.getValue(), ChartType.PIE.getValue(), ChartType.RADAR.getValue()); chartType.setDefaultToFirstOption(true); chartType.addChangedHandler(new ChangedHandler() { public void onChanged(ChangedEvent event) { String selectedChartType = chartType.getValueAsString(); if (ChartType.AREA.getValue().equals(selectedChartType)) { chart.setChartType(ChartType.AREA); } else if (ChartType.BAR.getValue().equals(selectedChartType)) { chart.setChartType(ChartType.BAR); } else if (ChartType.COLUMN.getValue().equals(selectedChartType)) { chart.setChartType(ChartType.COLUMN); } else if (ChartType.DOUGHNUT.getValue().equals(selectedChartType)) { chart.setChartType(ChartType.DOUGHNUT); } else if (ChartType.LINE.getValue().equals(selectedChartType)) { chart.setChartType(ChartType.LINE); } else if (ChartType.PIE.getValue().equals(selectedChartType)) { chart.setChartType(ChartType.PIE); } else if (ChartType.RADAR.getValue().equals(selectedChartType)) { chart.setChartType(ChartType.RADAR); } } }); chartSelector.setFields(chartType); VLayout layout = new VLayout(15); layout.addMember(chartSelector); layout.addMember(grid); layout.addMember(chart); return layout; } else { HTMLFlow htmlFlow = new HTMLFlow("<div class='explorerCheckErrorMessage'><p>This example is disabled in this SDK because it requires the optional " + "<a href=\"http://www.smartclient.com/product/index.jsp#drawing\" target=\"_blank\">Drawing module</a>.</p>" + "<p>Click <a href=\"http://www.smartclient.com/smartgwtee/showcase/#gridCharting\" target=\"\">here</a> to see this example on smartclient.com</p></div>"); htmlFlow.setWidth100(); return htmlFlow; } } else { HTMLFlow htmlFlow = new HTMLFlow("<div class='explorerCheckErrorMessage'><p>This example is disabled in this SDK because it requires the optional " + "<a href=\"http://www.smartclient.com/product/index.jsp#analytics\" target=\"_blank\">Analytics module</a>.</p>" + "<p>Click <a href=\"http://www.smartclient.com/smartgwtee/showcase/#gridCharting\" target=\"\">here</a> to see this example on smartclient.com</p></div>"); htmlFlow.setWidth100(); return htmlFlow; } } @Override public String getIntro() { return DESCRIPTION; } }
Thanks again!
Matt
Comment