Upload
sencha
View
3.837
Download
0
Embed Size (px)
DESCRIPTION
It has always been a challenge to draw objects in GWT because SVG and VML are not supported out of the box. In Ext GWT 3.0, we solve this problem by providing a draw framework that runs everywhere, from IE6 to the latest Chrome that is developed as a pure GWT library. Learn about the new API’s and features including examples.
Citation preview
Wednesday, November 2, 2011
Brendan Coughran, Sencha
DRAWING AND CHARTING
@whereisthysting
Wednesday, November 2, 2011
Draw
Wednesday, November 2, 2011
Sprite
Canvas EngineVML EngineSVG Engine
Surface
Wednesday, November 2, 2011
Sprite
Canvas EngineVML EngineSVG Engine
Surface
Wednesday, November 2, 2011
Surface
Wednesday, November 2, 2011
SurfaceVector Primitives
TextImages
Gradients
Wednesday, November 2, 2011
Sprite
Wednesday, November 2, 2011
SpriteAbstracted drawing elements
Normalizes differences between engine API syntaxAttributes
EventsTransformsAnimations
Wednesday, November 2, 2011
DrawComponentExtends ComponentContains surfaceLayout participation
<replace-with class='com.sencha.gxt.chart.client.draw.engine.SVG'> <when-type-is class='com.sencha.gxt.chart.client.draw.Surface' /> </replace-with> <replace-with class='com.sencha.gxt.chart.client.draw.engine.VML'> <when-type-is class='com.sencha.gxt.chart.client.draw.Surface' /> <any> <when-property-is name='user.agent' value='ie6' /> <when-property-is name='user.agent' value='ie8' /> </any></replace-with>
Wednesday, November 2, 2011
DrawComponent Example DrawComponent component = new DrawComponent();
PathSprite path = new PathSprite(); path.addCommand(new MoveTo(75, 75)); path.addCommand(new CurveTo(0, -25, 50, 25, 50, 0, true)); path.addCommand(new CurveTo(0, -25, -50, 25, -50, 0, true)); path.setStroke(new RGB("#000")); path.setStrokeWidth(2); path.setFill(new RGB("#fc0")); path.setFillOpacity(0.25);
component.addSprite(path); component.redraw();
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Charts
Wednesday, November 2, 2011
Chart Example ListStore<Data> store = new ListStore<Data>(dataAccess.nameKey());
store.addAll(TestData.getData(12, 0, 100));
Chart<Data> chart = new Chart<Data>(); chart.setStore(store); chart.setChartShadow(true);
Wednesday, November 2, 2011
Scatter Example NumericAxis<Data> axis = new NumericAxis<Data>();
axis.setPosition(Position.LEFT); axis.addField(dataAccess.data1()); axis.addField(dataAccess.data2()); axis.addField(dataAccess.data3()); TextSprite title = new TextSprite("Number of Hits"); title.setFontSize(18); axis.setTitleConfig(title); chart.addAxis(axis);
ScatterSeries<Data> series = new ScatterSeries<Data>(); series.setYAxisPosition(Position.LEFT); series.setYField(dataAccess.data1()); series.setMarkerColor(RGB.GREEN); series.setMarkerType(Shape.CROSS); series.setMarkerSize(8); series.setHighlighting(true); chart.addSeries(series);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Bar Example CategoryAxis<Data, String> catAxis = new CategoryAxis<Data, String>();
catAxis.setPosition(Position.LEFT); catAxis.setField(dataAccess.name()); title = new TextSprite("Month of the Year"); title.setFontSize(18); catAxis.setTitleConfig(title); chart.addAxis(catAxis);
BarSeries<Data> bar = new BarSeries<Data>(); bar.setYAxisPosition(Position.BOTTOM); bar.addYField(dataAccess.data1()); bar.addColor(RGB.GREEN); bar.setHighlighting(true); chart.addSeries(bar);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Line Example Legend<Data> legend = new Legend<Data>();
legend.setPosition(Position.RIGHT); legend.setItemHighlighting(false); legend.setItemHiding(true); chart.setLegend(legend);
LineSeries<Data> series = new LineSeries<Data>(); series.setYAxisPosition(Position.LEFT); series.setYField(dataAccess.data1()); series.setStroke(RGB.RED); series.setShowMarkers(true); series.setMarkerType(Shape.CROSS); series.setMarkerSize(6); series.setMarkerColor(RGB.RED); series.setHighlighting(true); chart.addSeries(series);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Area Example AreaSeries<Data> series = new AreaSeries<Data>();
series.setYAxisPosition(Position.LEFT); series.setOpacity(0.93); series.addYField(dataAccess.data1()); series.addYField(dataAccess.data2()); series.addYField(dataAccess.data3()); series.addYField(dataAccess.data4()); series.addYField(dataAccess.data5()); series.addYField(dataAccess.data6()); series.addYField(dataAccess.data7()); series.addColor(new RGB(148, 174, 10)); series.addColor(new RGB(17, 95, 166)); series.addColor(new RGB(166, 17, 32)); series.addColor(new RGB(255, 136, 9)); series.addColor(new RGB(255, 209, 62)); series.addColor(new RGB(166, 17, 135)); series.addColor(new RGB(36, 173, 154)); chart.addSeries(series);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Gauge Example GaugeAxis<Data> axis = new GaugeAxis<Data>();
axis.setMargin(10); axis.setMinimum(0); axis.setMaximum(100); chart.addAxis(axis);
GaugeSeries<Data> gauge = new GaugeSeries<Data>(); gauge.addColor(color); gauge.addColor(new RGB("#ddd")); gauge.setAngleField(provider); gauge.setNeedle(needle); gauge.setDonut(donut); chart.addSeries(gauge);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Radar Example RadialAxis<Data, String> axis = new RadialAxis<Data, String>();
axis.setCategoryField(dataAccess.name()); chart.addAxis(axis);
RadarSeries<Data> radar = new RadarSeries<Data>(); radar.setYField(dataAccess.data1()); radar.setStroke(RGB.RED); radar.setShowMarkers(true); radar.setMarkerType(Shape.CIRCLE); radar.setMarkerColor(RGB.RED); chart.addSeries(radar);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Pie Example PieSeries<Data> series = new PieSeries<Data>();
series.setAngleField(dataAccess.data1()); chart.addSeries(series);
Gradient slice1 = new Gradient("slice1", 45); slice1.addStop(new Stop(0, new RGB(148, 174, 10))); slice1.addStop(new Stop(100, new RGB(107, 126, 7))); chart.addGradient(slice1);
series.addColor(slice1);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Customizationand
Interactivity
Wednesday, November 2, 2011
Events series.addSeriesSelectionHandler(new SeriesSelectionHandler() {
@Override public void onSeriesClick(SeriesSelectionEvent event) { Info.display("Click", NumberFormat.getFormat("0").format(event.getValue())); } });
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Mixed Example BarSeries<Data> bar = new BarSeries<Data>();
bar.setYAxisPosition(Position.LEFT); bar.addYField(dataAccess.data1()); bar.setColumn(true); bar.addColor(new RGB(240, 165, 10)); bar.setShownInLegend(false); chart.addSeries(bar);
ScatterSeries<Data> scatter = new ScatterSeries<Data>(); scatter.setYAxisPosition(Position.LEFT); scatter.setYField(dataAccess.data2()); scatter.setMarkerType(Shape.CIRCLE); scatter.setMarkerSize(6); scatter.setMarkerColor(RGB.RED); scatter.setLegendTitle("Scatter"); chart.addSeries(scatter);
LineSeries<Data> line = new LineSeries<Data>(); line.setYAxisPosition(Position.LEFT); line.setYField(dataAccess.data3()); line.setStroke(RGB.BLUE); line.setSmooth(true); line.setFill(new RGB(32, 68, 186)); line.setLegendTitle("Line"); chart.addSeries(line);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Renderer Example column.setRenderer(new SeriesRenderer<Data>() {
@Override public Sprite spriteRenderer(Sprite sprite, int index, ListStore<Data> store) { sprite.setFill(colors[index % colors.length]); return sprite; } }); column.setHighlighter(new SeriesHighlighter() { @Override public void hightlight(Sprite sprite) { sprite.setStroke(new RGB(85, 85, 204)); DrawFx.createStrokeWidthAnimator(sprite, 3).run(250); } @Override public void unhightlight(Sprite sprite) { sprite.setStroke(Color.NONE); DrawFx.createStrokeWidthAnimator(sprite, 0).run(250); } });
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Tooltip Exampleprivate LabelProvider<Number> million = new LabelProvider<Number>() {
@Override public String getLabel(Number item) { int value = item.intValue() / 1000000; return value + "M"; } };
SeriesToolTipConfig<Movies> config = new SeriesToolTipConfig<Movies>(); config.setNumericLabelProvider(million); bar.setToolTipConfig(config);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Label Example PieSeries<Data> series = new PieSeries<Data>();
series.setAngleField(dataAccess.data1()); series.addLengthField(dataAccess.data2()); series.setHighlighting(true); TextSprite textConfig = new TextSprite(); textConfig.setFont("Arial"); textConfig.setFontSize(14); textConfig.setTextAnchor(TextAnchor.MIDDLE); textConfig.setFill(RGB.WHITE); SeriesLabelConfig<Data> labelConfig = new SeriesLabelConfig<Data>(); labelConfig.setNumericLabelProvider(null); labelConfig.setValueProvider(dataAccess.name(), new LabelProvider<String>() { @Override public String getLabel(String item) { return item.substring(0, 3); } }); labelConfig.setSpriteConfig(textConfig); series.setLabelConfig(labelConfig); chart.addSeries(series);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Live Example line.setMarkerIndex(1);
TimeAxis<Site> time = new TimeAxis<Site>(); time.setField(siteAccess.date()); time.setStartDate(f.parse("Feb 1")); time.setEndDate(f.parse("Feb 7")); time.setLabelProvider(new LabelProvider<Date>() { @Override public String getLabel(Date item) { return f.format(item); } }); chart.addAxis(time);
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Animation Exampleprivate Animator createRadiusAnimator(final CircleSprite sprite, double radius) {
final double origin = sprite.getRadius(); final double delta = radius - origin; return new Animator() { @Override protected void onUpdate(double progress) { sprite.setRadius(origin + (delta * progress)); sprite.redraw(); } }; }
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Questions?
Wednesday, November 2, 2011