]> git.argeo.org Git - gpl/argeo-suite.git/blob - swt/chart/SwtJsBarChart.java
Prepare next development cycle
[gpl/argeo-suite.git] / swt / chart / SwtJsBarChart.java
1 package org.argeo.app.swt.chart;
2
3 import java.io.StringWriter;
4
5 import org.eclipse.swt.widgets.Composite;
6
7 import jakarta.json.Json;
8 import jakarta.json.stream.JsonGenerator;
9
10 public class SwtJsBarChart extends AbstractJsChart {
11
12 public SwtJsBarChart(String chartName, Composite parent, int style) {
13 super(chartName, parent, style);
14 }
15
16 @Override
17 protected String getJsImplementation() {
18 return "globalThis.argeo.app.chart.BarChart";
19 }
20
21 public void setLabels(String[] labels) {
22 executeChartMethod("setLabels(%s)", toJsArray(labels));
23 }
24
25 public void addDataset(String label, int[] values) {
26 executeChartMethod("addDataset('%s', %s)", label, toJsArray(values));
27 }
28
29 public void setData(String[] labels, String label, int[] values) {
30 executeChartMethod("setData(%s, '%s', %s)", toJsArray(labels), label, toJsArray(values));
31 }
32
33 public void setDatasets(String[] labels, String[] label, int[][] values) {
34 executeChartMethod("setDatasets(%s, %s)", toJsArray(labels), toDatasets(label, values));
35 }
36
37 protected String toDatasets(String[] label, int[][] values) {
38 if (label.length != values.length)
39 throw new IllegalArgumentException("Arrays must have the same length");
40 StringWriter writer = new StringWriter();
41 JsonGenerator g = Json.createGenerator(writer);
42 g.writeStartArray();
43 for (int i = 0; i < label.length; i++) {
44 g.writeStartObject();
45 g.write("label", label[i]);
46 g.writeStartArray("data");
47 for (int j = 0; j < values[i].length; j++) {
48 g.write(values[i][j]);
49 }
50 g.writeEnd();// data array
51 g.writeEnd();// dataset
52 }
53 g.writeEnd();
54 g.close();
55 return writer.toString();
56 }
57
58 public void clearDatasets() {
59 executeChartMethod("clearDatasets()");
60 }
61 }