We are using SmartClient Version: SNAPSHOT_v9.0d_2013-04-04/PowerEdition Deployment (built 2013-04-04) and facing problem while drawing scatter chart having date values on X-axis.
Code snippet is:
package com.woodmac.datavisualizer.client.widget.charts;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.data.RecordList;
import com.smartgwt.client.types.ChartType;
import com.smartgwt.client.widgets.cube.Facet;
import com.smartgwt.client.widgets.cube.FacetValue;
import com.woodmac.datavisualizer.shared.DVConstants;
import com.woodmac.datavisualizer.shared.DVLogger;
import com.woodmac.datavisualizer.shared.LogUtil;
/**
* Draws scatter chart.
*
* @author Suchitra/Isomorphic
*
*/
public class DynamicScatterChart extends DynamicChart {
// logger
private static DVLogger logger = LogUtil.getLogger(DynamicScatterChart.class);
/**
* Constructor.
*
* @param portlet
* -portlet
*
* @param records
* - Data records
* @param chartConfiguration
* - Chart Configuration records
* @param chartProp
* - chartProperties
*/
protected DynamicScatterChart(final ChartsDataToolsPortlet portlet, final RecordList records,
final Record[] chartConfiguration, Record[] chartProp) {
super(portlet);
logger.logInfo("DynamicScatterChart.DynamicScatter Chart() - ", "START");
setChartConfiguration(chartConfiguration);
// Set chart type.
setChartType(ChartType.SCATTER);
// Y Metric title
String yMetricTitle = chartProp[0].getAttributeAsString("Y_AXIS_LABEL");
String colorMetric = null;
String yMetric = null;
String[] valueField = new String[2];
// Loop through chart configuration records.
for (int chartConfCounter = 0, viewColumnCounter = 0;
chartConfCounter < chartConfiguration.length; chartConfCounter++) {
String fetchObject = chartConfiguration[chartConfCounter]
.getAttribute("MAP_FETCH_OBJECT");
if (chartConfiguration[chartConfCounter].getAttribute("COLOR_SERIES_METRIC") != null
&& (chartConfiguration[chartConfCounter].getAttributeAsInt("COLOR_SERIES_METRIC") == 1)) {
colorMetric = fetchObject.split(DVConstants.SPLIT_ON_DOT)[1];
}
if (chartConfiguration[chartConfCounter].getAttribute("Y_METRIC") != null
&& (chartConfiguration[chartConfCounter].getAttributeAsInt("Y_METRIC") == 1)) {
yMetric = fetchObject.split(DVConstants.SPLIT_ON_DOT)[1];
}
if (chartConfiguration[chartConfCounter].getAttribute("VALUE_FIELD") != null
&& (chartConfiguration[chartConfCounter].getAttributeAsInt("VALUE_FIELD") == 1)) {
valueField[viewColumnCounter++] = fetchObject.split(DVConstants.SPLIT_ON_DOT)[1];
}
}
// Values facets.
Facet groupingFacet = new Facet();
groupingFacet.setValues(new FacetValue(valueField[1]), new FacetValue(valueField[0]));
// groupingFacet.setValues(new FacetValue("WI_DIS_RES"),new FacetValue("DIM_WELL_ID"));
groupingFacet.setInlinedValues(true);
groupingFacet.setId("metric");
// Item facet.
Facet field = new Facet();
field.setId(colorMetric);
setFacets(groupingFacet, field);
setValueProperty(yMetric);
setValueTitle(yMetricTitle);
// Set data.
setData(records);
setDataColors(COLORS);
// Check for hover popup to be enabled.
applyHoverPopup(chartProp);
// Check for legends to be enabled.
applyLegends(chartProp);
// Check for log scale to be enabled with the defined log base.
applyLogScale(chartProp);
// Apply X & Y titles
applyXYTitles(chartProp);
logger.logInfo("DynamicScatterChart.DynamicScatter Chart() - ", "END");
}
}
The SQL query which is executed to get the record successfully is:
In below queries I have modified the SPUD_DATE to string type:-
SELECT LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, SPUD_DATE ||'' AS SPUD_DATE , WELL_NAME, DIM_WELL_ID, SUM(WI_DIS_RES) AS WI_DIS_RES
FROM well_calc_attr_view
WHERE SPUD_DATE is not null And WI_DIS_RES is not null
GROUP BY LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, SPUD_DATE, WELL_NAME, DIM_WELL_ID
ORDER BY SPUD_DATE ;
Or
SELECT LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, to_char(SPUD_DATE,'MM/dd/yyyy') AS SPUD_DATE, WELL_NAME, DIM_WELL_ID, SUM(WI_DIS_RES) AS WI_DIS_RES
FROM well_calc_attr_view
WHERE SPUD_DATE is not null And WI_DIS_RES is not null
GROUP BY LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, SPUD_DATE, WELL_NAME, DIM_WELL_ID
ORDER BY SPUD_DATE ;
OIL_GAS_DRY
to_char(SPUD_DATE,'MM/dd/yyyy')
WI_DIS_RES
GAS
1/1/1959
66.2581872
GAS
1/1/1960
91.2401728
OIL
10/6/1960
0.102
OIL
11/12/1961
0.1014
GAS
11/20/1961
11.4229216
GAS
4/29/1962
11.7143008
GAS
10/20/1963
22.0742288
OIL
12/2/1963
116.9281296
Also in the ds.xml file the type for SPUD_DATE is taken as type =text.
The code runs fine without any warning or run time error, but the dates are not coming on x-axis.
Code snippet is:
package com.woodmac.datavisualizer.client.widget.charts;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.data.RecordList;
import com.smartgwt.client.types.ChartType;
import com.smartgwt.client.widgets.cube.Facet;
import com.smartgwt.client.widgets.cube.FacetValue;
import com.woodmac.datavisualizer.shared.DVConstants;
import com.woodmac.datavisualizer.shared.DVLogger;
import com.woodmac.datavisualizer.shared.LogUtil;
/**
* Draws scatter chart.
*
* @author Suchitra/Isomorphic
*
*/
public class DynamicScatterChart extends DynamicChart {
// logger
private static DVLogger logger = LogUtil.getLogger(DynamicScatterChart.class);
/**
* Constructor.
*
* @param portlet
* -portlet
*
* @param records
* - Data records
* @param chartConfiguration
* - Chart Configuration records
* @param chartProp
* - chartProperties
*/
protected DynamicScatterChart(final ChartsDataToolsPortlet portlet, final RecordList records,
final Record[] chartConfiguration, Record[] chartProp) {
super(portlet);
logger.logInfo("DynamicScatterChart.DynamicScatter Chart() - ", "START");
setChartConfiguration(chartConfiguration);
// Set chart type.
setChartType(ChartType.SCATTER);
// Y Metric title
String yMetricTitle = chartProp[0].getAttributeAsString("Y_AXIS_LABEL");
String colorMetric = null;
String yMetric = null;
String[] valueField = new String[2];
// Loop through chart configuration records.
for (int chartConfCounter = 0, viewColumnCounter = 0;
chartConfCounter < chartConfiguration.length; chartConfCounter++) {
String fetchObject = chartConfiguration[chartConfCounter]
.getAttribute("MAP_FETCH_OBJECT");
if (chartConfiguration[chartConfCounter].getAttribute("COLOR_SERIES_METRIC") != null
&& (chartConfiguration[chartConfCounter].getAttributeAsInt("COLOR_SERIES_METRIC") == 1)) {
colorMetric = fetchObject.split(DVConstants.SPLIT_ON_DOT)[1];
}
if (chartConfiguration[chartConfCounter].getAttribute("Y_METRIC") != null
&& (chartConfiguration[chartConfCounter].getAttributeAsInt("Y_METRIC") == 1)) {
yMetric = fetchObject.split(DVConstants.SPLIT_ON_DOT)[1];
}
if (chartConfiguration[chartConfCounter].getAttribute("VALUE_FIELD") != null
&& (chartConfiguration[chartConfCounter].getAttributeAsInt("VALUE_FIELD") == 1)) {
valueField[viewColumnCounter++] = fetchObject.split(DVConstants.SPLIT_ON_DOT)[1];
}
}
// Values facets.
Facet groupingFacet = new Facet();
groupingFacet.setValues(new FacetValue(valueField[1]), new FacetValue(valueField[0]));
// groupingFacet.setValues(new FacetValue("WI_DIS_RES"),new FacetValue("DIM_WELL_ID"));
groupingFacet.setInlinedValues(true);
groupingFacet.setId("metric");
// Item facet.
Facet field = new Facet();
field.setId(colorMetric);
setFacets(groupingFacet, field);
setValueProperty(yMetric);
setValueTitle(yMetricTitle);
// Set data.
setData(records);
setDataColors(COLORS);
// Check for hover popup to be enabled.
applyHoverPopup(chartProp);
// Check for legends to be enabled.
applyLegends(chartProp);
// Check for log scale to be enabled with the defined log base.
applyLogScale(chartProp);
// Apply X & Y titles
applyXYTitles(chartProp);
logger.logInfo("DynamicScatterChart.DynamicScatter Chart() - ", "END");
}
}
The SQL query which is executed to get the record successfully is:
In below queries I have modified the SPUD_DATE to string type:-
SELECT LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, SPUD_DATE ||'' AS SPUD_DATE , WELL_NAME, DIM_WELL_ID, SUM(WI_DIS_RES) AS WI_DIS_RES
FROM well_calc_attr_view
WHERE SPUD_DATE is not null And WI_DIS_RES is not null
GROUP BY LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, SPUD_DATE, WELL_NAME, DIM_WELL_ID
ORDER BY SPUD_DATE ;
Or
SELECT LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, to_char(SPUD_DATE,'MM/dd/yyyy') AS SPUD_DATE, WELL_NAME, DIM_WELL_ID, SUM(WI_DIS_RES) AS WI_DIS_RES
FROM well_calc_attr_view
WHERE SPUD_DATE is not null And WI_DIS_RES is not null
GROUP BY LOC_COUNTRY_SHORT_NAME, OIL_GAS_DRY, SPUD_DATE, WELL_NAME, DIM_WELL_ID
ORDER BY SPUD_DATE ;
OIL_GAS_DRY
to_char(SPUD_DATE,'MM/dd/yyyy')
WI_DIS_RES
GAS
1/1/1959
66.2581872
GAS
1/1/1960
91.2401728
OIL
10/6/1960
0.102
OIL
11/12/1961
0.1014
GAS
11/20/1961
11.4229216
GAS
4/29/1962
11.7143008
GAS
10/20/1963
22.0742288
OIL
12/2/1963
116.9281296
Also in the ds.xml file the type for SPUD_DATE is taken as type =text.
The code runs fine without any warning or run time error, but the dates are not coming on x-axis.