diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/chart/DailyValuesChart.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/chart/DailyValuesChart.java index 64b76c728498ebd5a6702cb2c9ec39f96a16a4e7..c73f2f3fcd32e01f4ca070019545506c87c22eae 100644 --- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/chart/DailyValuesChart.java +++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/chart/DailyValuesChart.java @@ -72,8 +72,8 @@ public final class DailyValuesChart extends TimeSeriesLineChart { this.unit = summary.getIndicator().getUnit(); final String subtitle = MSGS.chartSubtitle(summary.getDate(), unit); - setTitle(CSTS.dailyValues(), subtitle); - setCredits(); + setTitle(CSTS.dailyValues() + " − " + DateUtils.getYear(summary.getDate()), subtitle); + setPlugins(); final TimeSeriesLineDataset q5Dataset = this.newDataset(); setDatasetColor(q5Dataset); @@ -111,19 +111,20 @@ public final class DailyValuesChart extends TimeSeriesLineChart { final CartesianTimeSeriesAxis axis = this.getOptions().getScales().getTimeAxis(); axis.getTime().setUnit(TimeUnit.MONTH); axis.getTime().getDisplayFormats().setDisplayFormat(TimeUnit.MONTH, "MMM"); - axis.getTitle().setText("" + DateUtils.getYear(summary.getDate())); - axis.getTitle().setDisplay(true); final CartesianLinearAxis axis2 = this.getOptions().getScales().getLinearAxis(); axis2.setDisplay(true); axis2.setBeginAtZero(true); axis2.setStacked(false); + axis2.getTitle().setDisplay(true); + axis2.getTitle().setText(summary.getIndicator().getDescription()); this.getData().setDatasets(q5Dataset, dataset, q95Dataset); } - private void setCredits() { + private void setPlugins() { this.getPlugins().add(new CreditsPlugin()); + this.getPlugins().add(new LogoPlugin()); } private void setTitle(final String title, final String subtitle) { diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/chart/LogoPlugin.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/chart/LogoPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..ad540cbb32c96cbef0918109ade384756bc8d054 --- /dev/null +++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/chart/LogoPlugin.java @@ -0,0 +1,73 @@ +package fr.agrometinfo.www.client.ui.chart; + +import org.pepstock.charba.client.IsChart; +import org.pepstock.charba.client.dom.elements.CastHelper; +import org.pepstock.charba.client.dom.elements.Context2dItem; +import org.pepstock.charba.client.plugins.AbstractPlugin; + +import com.google.gwt.canvas.client.Canvas; +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Document; +import com.google.gwt.dom.client.ImageElement; + +/** + * Append RF+AgroMetInfo logo on the chart. + * + * @author Olivier Maury + */ +public final class LogoPlugin extends AbstractPlugin { + /** + * Width of logo. + */ + private static final double LOGO_WIDTH = 150; + + /** + * Coefficient between Div width and logo width in canvas. + * + * Value found after tests. + */ + private static final double LOGO_WIDTH_COEFF = 0.45; + + /** + * Width / height computed from SVG file. + */ + private static final double LOGO_SIZE_RATIO = 2.1087; + + /** + * The application logo. + */ + private final ImageElement logoImg = Document.get().createImageElement(); + + /** + * Constructor. + */ + public LogoPlugin() { + super("Logo"); + // Load the image once for all + logoImg.setSrc("app/img/logo_etat-agrometinfo.svg"); + } + + @Override + public void onAfterDraw(final IsChart chart) { + GWT.log("LogoPlugin.onAfterShow()"); + final Context2dItem ctx = chart.getCanvas().getContext2d(); + // limit logo width to available space on left side + final double logoWidth = Math.min(LOGO_WIDTH, chart.getChartElement().getClientWidth() * LOGO_WIDTH_COEFF); + // Charba Canvas only accept a canvas as image + // 1. create a GWT canvas with the logo + final Canvas logoCanvas = Canvas.createIfSupported(); + logoCanvas.getContext2d().drawImage(logoImg, // + 0d, // + 0d, // + logoWidth, // + logoWidth / LOGO_SIZE_RATIO // + ); + // 2. convert GWT canvas to Charba Canvas and draw it + ctx.drawImage(CastHelper.toCanvas(logoCanvas.getCanvasElement()), // + 0d, // + 0d, // + logoWidth, // + logoWidth / LOGO_SIZE_RATIO // + ); + } +} diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java b/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java index 8fe7c34605ef6387685f73e9341c9b2634186bb6..c1e1ab3c03f654986e4544cbb7d34d6a0118a565 100644 --- a/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java +++ b/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java @@ -135,6 +135,7 @@ public final class RightPanelView implements RightPanelPresenter.View { private void createLineChart() { GWT.log("RightPanelView.createLineChart()"); chart = new DailyValuesChart(summary); + chart.getChartElement().getStyle().setWidth("100%"); lineChartContainer.setHeight("300px"); lineChartContainer.clearElement();