]>
git.argeo.org Git - gpl/argeo-suite.git/blob - swt/org.argeo.app.swt/src/org/argeo/app/swt/chart/SwtJsBarChart.java
1 package org
.argeo
.app
.swt
.chart
;
3 import java
.io
.StringWriter
;
5 import org
.argeo
.app
.ux
.js
.JsClient
;
6 import org
.eclipse
.swt
.widgets
.Composite
;
8 import jakarta
.json
.Json
;
9 import jakarta
.json
.stream
.JsonGenerator
;
11 public class SwtJsBarChart
extends AbstractJsChart
{
13 public SwtJsBarChart(String chartName
, Composite parent
, int style
) {
14 super(chartName
, parent
, style
);
18 protected String
getJsImplementation() {
19 return "globalThis.argeo.app.chart.BarChart";
22 public void setLabels(String
[] labels
) {
23 executeChartMethod("setLabels(%s)", JsClient
.toJsArray(labels
));
26 public void addDataset(String label
, int[] values
) {
27 executeChartMethod("addDataset('%s', %s)", label
, JsClient
.toJsArray(values
));
30 public void setData(String
[] labels
, String label
, int[] values
) {
31 executeChartMethod("setData(%s, '%s', %s)", JsClient
.toJsArray(labels
), label
, JsClient
.toJsArray(values
));
34 public void setDatasets(String
[] labels
, String
[] label
, int[][] values
) {
35 executeChartMethod("setDatasets(%s, %s)", JsClient
.toJsArray(labels
), toDatasets(label
, values
));
38 protected String
toDatasets(String
[] label
, int[][] values
) {
39 if (label
.length
!= values
.length
)
40 throw new IllegalArgumentException("Arrays must have the same length");
41 StringWriter writer
= new StringWriter();
42 JsonGenerator g
= Json
.createGenerator(writer
);
44 for (int i
= 0; i
< label
.length
; i
++) {
46 g
.write("label", label
[i
]);
47 g
.writeStartArray("data");
48 for (int j
= 0; j
< values
[i
].length
; j
++) {
49 g
.write(values
[i
][j
]);
51 g
.writeEnd();// data array
52 g
.writeEnd();// dataset
56 return writer
.toString();
59 public void clearDatasets() {
60 executeChartMethod("clearDatasets()");