Skip to content

Commit 26f3e1d

Browse files
committed
Allow creation of mixed charts
1 parent 90d8932 commit 26f3e1d

32 files changed

+197
-37
lines changed

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/AbstractChart.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
import com.fasterxml.jackson.databind.ObjectMapper;
2525
import com.fasterxml.jackson.databind.ObjectWriter;
2626

27-
import software.xdev.chartjs.model.data.Data;
27+
import software.xdev.chartjs.model.data.AbstractData;
2828
import software.xdev.chartjs.model.options.Options;
2929

3030

31-
public abstract class AbstractChart<T, O extends Options<O, ?>, D extends Data<D, ?>>
31+
public abstract class AbstractChart<T, O extends Options<?, ?>, D extends AbstractData<?, ?>>
3232
implements Chart<T, O, D>
3333
{
3434
protected D data;

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/BarChart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
package software.xdev.chartjs.model.charts;
1717

1818
import software.xdev.chartjs.model.data.BarData;
19-
import software.xdev.chartjs.model.data.Data;
19+
import software.xdev.chartjs.model.data.HomogeneousData;
2020
import software.xdev.chartjs.model.dataset.BarDataset;
2121
import software.xdev.chartjs.model.options.BarOptions;
2222
import software.xdev.chartjs.model.options.Options;
2323

2424

25-
public class BarChart extends AbstractChart<BarChart, BarOptions, BarData>
25+
public class BarChart extends HomogeneousChart<BarChart, BarOptions, BarData>
2626
{
2727
public BarChart()
2828
{
@@ -39,7 +39,7 @@ public BarChart(final BarData data, final BarOptions options)
3939
}
4040

4141
/**
42-
* Static factory, constructs an {@link Data} implementation appropriate for a {@link BarChart}.
42+
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link BarChart}.
4343
*
4444
* @return a new {@link BarData} instance
4545
*/

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/BubbleChart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
package software.xdev.chartjs.model.charts;
1717

1818
import software.xdev.chartjs.model.data.BubbleData;
19-
import software.xdev.chartjs.model.data.Data;
19+
import software.xdev.chartjs.model.data.HomogeneousData;
2020
import software.xdev.chartjs.model.options.BubbleOptions;
2121
import software.xdev.chartjs.model.options.Options;
2222

2323

24-
public class BubbleChart extends AbstractChart<BubbleChart, BubbleOptions, BubbleData>
24+
public class BubbleChart extends HomogeneousChart<BubbleChart, BubbleOptions, BubbleData>
2525
{
2626
public BubbleChart()
2727
{
@@ -38,7 +38,7 @@ public BubbleChart(final BubbleData data, final BubbleOptions options)
3838
}
3939

4040
/**
41-
* Static factory, constructs an {@link Data} implementation appropriate for a {@link BubbleChart}.
41+
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link BubbleChart}.
4242
*
4343
* @return a new {@link BubbleData} instance
4444
*/

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/Chart.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717

1818
import com.fasterxml.jackson.annotation.JsonProperty;
1919

20-
import software.xdev.chartjs.model.data.Data;
20+
import software.xdev.chartjs.model.data.AbstractData;
2121
import software.xdev.chartjs.model.options.Options;
2222

2323

2424
@SuppressWarnings("java:S119") // SELF means the Chart itself... Not a problem
25-
public interface Chart<SELF, O extends Options<O, ?>, D extends Data<D, ?>>
25+
public interface Chart<SELF, O extends Options<?, ?>, D extends AbstractData<?, ?>>
2626
{
2727
/**
2828
* @return type of this {@link Chart} implementation for proper drawing in JavaScript.

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/DoughnutChart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
*/
1616
package software.xdev.chartjs.model.charts;
1717

18-
import software.xdev.chartjs.model.data.Data;
1918
import software.xdev.chartjs.model.data.DoughnutData;
19+
import software.xdev.chartjs.model.data.HomogeneousData;
2020
import software.xdev.chartjs.model.options.DoughnutOptions;
2121
import software.xdev.chartjs.model.options.Options;
2222

2323

24-
public class DoughnutChart extends AbstractChart<DoughnutChart, DoughnutOptions, DoughnutData>
24+
public class DoughnutChart extends HomogeneousChart<DoughnutChart, DoughnutOptions, DoughnutData>
2525
{
2626
public DoughnutChart()
2727
{
@@ -38,7 +38,7 @@ public DoughnutChart(final DoughnutData data, final DoughnutOptions options)
3838
}
3939

4040
/**
41-
* Static factory, constructs an {@link Data} implementation appropriate for a {@link DoughnutChart}.
41+
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link DoughnutChart}.
4242
*
4343
* @return a new {@link DoughnutData} instance
4444
*/
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package software.xdev.chartjs.model.charts;
2+
3+
import software.xdev.chartjs.model.data.HomogeneousData;
4+
import software.xdev.chartjs.model.options.Options;
5+
6+
7+
public abstract class HomogeneousChart<T, O extends Options<O, ?>, D extends HomogeneousData<D, ?>>
8+
extends AbstractChart<T, O, D>
9+
{
10+
protected HomogeneousChart()
11+
{
12+
}
13+
14+
protected HomogeneousChart(final D data)
15+
{
16+
super(data);
17+
}
18+
19+
protected HomogeneousChart(final D data, final O options)
20+
{
21+
super(data, options);
22+
}
23+
}

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/LineChart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
*/
1616
package software.xdev.chartjs.model.charts;
1717

18-
import software.xdev.chartjs.model.data.Data;
18+
import software.xdev.chartjs.model.data.HomogeneousData;
1919
import software.xdev.chartjs.model.data.LineData;
2020
import software.xdev.chartjs.model.dataset.LineDataset;
2121
import software.xdev.chartjs.model.options.LineOptions;
2222
import software.xdev.chartjs.model.options.Options;
2323

2424

25-
public class LineChart extends AbstractChart<LineChart, LineOptions, LineData>
25+
public class LineChart extends HomogeneousChart<LineChart, LineOptions, LineData>
2626
{
2727
public LineChart()
2828
{
@@ -39,7 +39,7 @@ public LineChart(final LineData data, final LineOptions options)
3939
}
4040

4141
/**
42-
* Static factory, constructs an {@link Data} implementation appropriate for a {@link LineChart}.
42+
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link LineChart}.
4343
*
4444
* @return a new {@link LineData} instance
4545
*/
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package software.xdev.chartjs.model.charts;
2+
3+
import software.xdev.chartjs.model.data.MixedData;
4+
import software.xdev.chartjs.model.options.Options;
5+
6+
7+
/**
8+
* Allows creation of <a href="https://www.chartjs.org/docs/latest/charts/mixed.html">mixed chart types</a>
9+
*/
10+
public class MixedChart extends AbstractChart<MixedChart, Options<?, ?>, MixedData>
11+
{
12+
protected String type;
13+
14+
public MixedChart setType(final String type)
15+
{
16+
this.type = type;
17+
return this.self();
18+
}
19+
20+
@Override
21+
public String getType()
22+
{
23+
return this.type;
24+
}
25+
26+
@Override
27+
public boolean isDrawable()
28+
{
29+
// Warning: Unchecked
30+
return true;
31+
}
32+
}

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/PieChart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
*/
1616
package software.xdev.chartjs.model.charts;
1717

18-
import software.xdev.chartjs.model.data.Data;
18+
import software.xdev.chartjs.model.data.HomogeneousData;
1919
import software.xdev.chartjs.model.data.PieData;
2020
import software.xdev.chartjs.model.dataset.PieDataset;
2121
import software.xdev.chartjs.model.options.Options;
2222
import software.xdev.chartjs.model.options.PieOptions;
2323

2424

25-
public class PieChart extends AbstractChart<PieChart, PieOptions, PieData>
25+
public class PieChart extends HomogeneousChart<PieChart, PieOptions, PieData>
2626
{
2727
public PieChart()
2828
{
@@ -39,7 +39,7 @@ public PieChart(final PieData data, final PieOptions options)
3939
}
4040

4141
/**
42-
* Static factory, constructs an {@link Data} implementation appropriate for a {@link PieChart}.
42+
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link PieChart}.
4343
*
4444
* @return a new {@link PieData} instance
4545
*/

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/PolarChart.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
*/
1616
package software.xdev.chartjs.model.charts;
1717

18-
import software.xdev.chartjs.model.data.Data;
18+
import software.xdev.chartjs.model.data.HomogeneousData;
1919
import software.xdev.chartjs.model.data.PolarData;
2020
import software.xdev.chartjs.model.dataset.PolarDataset;
2121
import software.xdev.chartjs.model.options.Options;
2222
import software.xdev.chartjs.model.options.PolarOptions;
2323

2424

25-
public class PolarChart extends AbstractChart<PolarChart, PolarOptions, PolarData>
25+
public class PolarChart extends HomogeneousChart<PolarChart, PolarOptions, PolarData>
2626
{
2727
public PolarChart()
2828
{
@@ -39,7 +39,7 @@ public PolarChart(final PolarData data, final PolarOptions options)
3939
}
4040

4141
/**
42-
* Static factory, constructs an {@link Data} implementation appropriate for a {@link PolarChart}.
42+
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link PolarChart}.
4343
*
4444
* @return a new {@link PolarData} instance
4545
*/

0 commit comments

Comments
 (0)