Skip to content

Commit

Permalink
Allow creation of mixed charts
Browse files Browse the repository at this point in the history
  • Loading branch information
AB-xdev committed May 7, 2024
1 parent 90d8932 commit 26f3e1d
Show file tree
Hide file tree
Showing 32 changed files with 197 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.AbstractData;
import software.xdev.chartjs.model.options.Options;


public abstract class AbstractChart<T, O extends Options<O, ?>, D extends Data<D, ?>>
public abstract class AbstractChart<T, O extends Options<?, ?>, D extends AbstractData<?, ?>>
implements Chart<T, O, D>
{
protected D data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.BarData;
import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.dataset.BarDataset;
import software.xdev.chartjs.model.options.BarOptions;
import software.xdev.chartjs.model.options.Options;


public class BarChart extends AbstractChart<BarChart, BarOptions, BarData>
public class BarChart extends HomogeneousChart<BarChart, BarOptions, BarData>
{
public BarChart()
{
Expand All @@ -39,7 +39,7 @@ public BarChart(final BarData data, final BarOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link BarChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link BarChart}.
*
* @return a new {@link BarData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.BubbleData;
import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.options.BubbleOptions;
import software.xdev.chartjs.model.options.Options;


public class BubbleChart extends AbstractChart<BubbleChart, BubbleOptions, BubbleData>
public class BubbleChart extends HomogeneousChart<BubbleChart, BubbleOptions, BubbleData>
{
public BubbleChart()
{
Expand All @@ -38,7 +38,7 @@ public BubbleChart(final BubbleData data, final BubbleOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link BubbleChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link BubbleChart}.
*
* @return a new {@link BubbleData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@

import com.fasterxml.jackson.annotation.JsonProperty;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.AbstractData;
import software.xdev.chartjs.model.options.Options;


@SuppressWarnings("java:S119") // SELF means the Chart itself... Not a problem
public interface Chart<SELF, O extends Options<O, ?>, D extends Data<D, ?>>
public interface Chart<SELF, O extends Options<?, ?>, D extends AbstractData<?, ?>>
{
/**
* @return type of this {@link Chart} implementation for proper drawing in JavaScript.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
*/
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.DoughnutData;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.options.DoughnutOptions;
import software.xdev.chartjs.model.options.Options;


public class DoughnutChart extends AbstractChart<DoughnutChart, DoughnutOptions, DoughnutData>
public class DoughnutChart extends HomogeneousChart<DoughnutChart, DoughnutOptions, DoughnutData>
{
public DoughnutChart()
{
Expand All @@ -38,7 +38,7 @@ public DoughnutChart(final DoughnutData data, final DoughnutOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link DoughnutChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link DoughnutChart}.
*
* @return a new {@link DoughnutData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.options.Options;


public abstract class HomogeneousChart<T, O extends Options<O, ?>, D extends HomogeneousData<D, ?>>
extends AbstractChart<T, O, D>
{
protected HomogeneousChart()
{
}

protected HomogeneousChart(final D data)
{
super(data);
}

protected HomogeneousChart(final D data, final O options)
{
super(data, options);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.data.LineData;
import software.xdev.chartjs.model.dataset.LineDataset;
import software.xdev.chartjs.model.options.LineOptions;
import software.xdev.chartjs.model.options.Options;


public class LineChart extends AbstractChart<LineChart, LineOptions, LineData>
public class LineChart extends HomogeneousChart<LineChart, LineOptions, LineData>
{
public LineChart()
{
Expand All @@ -39,7 +39,7 @@ public LineChart(final LineData data, final LineOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link LineChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link LineChart}.
*
* @return a new {@link LineData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.MixedData;
import software.xdev.chartjs.model.options.Options;


/**
* Allows creation of <a href="https://www.chartjs.org/docs/latest/charts/mixed.html">mixed chart types</a>
*/
public class MixedChart extends AbstractChart<MixedChart, Options<?, ?>, MixedData>
{
protected String type;

public MixedChart setType(final String type)
{
this.type = type;
return this.self();
}

@Override
public String getType()
{
return this.type;
}

@Override
public boolean isDrawable()
{
// Warning: Unchecked
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.data.PieData;
import software.xdev.chartjs.model.dataset.PieDataset;
import software.xdev.chartjs.model.options.Options;
import software.xdev.chartjs.model.options.PieOptions;


public class PieChart extends AbstractChart<PieChart, PieOptions, PieData>
public class PieChart extends HomogeneousChart<PieChart, PieOptions, PieData>
{
public PieChart()
{
Expand All @@ -39,7 +39,7 @@ public PieChart(final PieData data, final PieOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link PieChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link PieChart}.
*
* @return a new {@link PieData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.data.PolarData;
import software.xdev.chartjs.model.dataset.PolarDataset;
import software.xdev.chartjs.model.options.Options;
import software.xdev.chartjs.model.options.PolarOptions;


public class PolarChart extends AbstractChart<PolarChart, PolarOptions, PolarData>
public class PolarChart extends HomogeneousChart<PolarChart, PolarOptions, PolarData>
{
public PolarChart()
{
Expand All @@ -39,7 +39,7 @@ public PolarChart(final PolarData data, final PolarOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link PolarChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link PolarChart}.
*
* @return a new {@link PolarData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.data.RadarData;
import software.xdev.chartjs.model.dataset.RadarDataset;
import software.xdev.chartjs.model.options.Options;
import software.xdev.chartjs.model.options.RadarOptions;


public class RadarChart extends AbstractChart<RadarChart, RadarOptions, RadarData>
public class RadarChart extends HomogeneousChart<RadarChart, RadarOptions, RadarData>
{
public RadarChart()
{
Expand All @@ -39,7 +39,7 @@ public RadarChart(final RadarData data, final RadarOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link RadarChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link RadarChart}.
*
* @return a new {@link RadarData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@
*/
package software.xdev.chartjs.model.charts;

import software.xdev.chartjs.model.data.Data;
import software.xdev.chartjs.model.data.HomogeneousData;
import software.xdev.chartjs.model.data.ScatterData;
import software.xdev.chartjs.model.dataset.ScatterDataset;
import software.xdev.chartjs.model.options.LineOptions;
import software.xdev.chartjs.model.options.Options;


public class ScatterChart extends AbstractChart<ScatterChart, LineOptions, ScatterData>
public class ScatterChart extends HomogeneousChart<ScatterChart, LineOptions, ScatterData>
{

public ScatterChart()
Expand All @@ -40,7 +40,7 @@ public ScatterChart(final ScatterData data, final LineOptions options)
}

/**
* Static factory, constructs an {@link Data} implementation appropriate for a {@link ScatterChart}.
* Static factory, constructs an {@link HomogeneousData} implementation appropriate for a {@link ScatterChart}.
*
* @return a new {@link ScatterData} instance
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import software.xdev.chartjs.model.dataset.Dataset;


public class Data<D extends Data<D, T>, T extends Dataset<T, ?>>
public abstract class AbstractData<D extends AbstractData<D, T>, T extends Dataset<?, ?>>
{
private final List<String> labels = new ArrayList<>();
private final List<T> datasets = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.BarDataset;


public class BarData extends Data<BarData, BarDataset>
public class BarData extends HomogeneousData<BarData, BarDataset>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.BubbleDataset;


public class BubbleData extends Data<BubbleData, BubbleDataset>
public class BubbleData extends HomogeneousData<BubbleData, BubbleDataset>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.DoughnutDataset;


public class DoughnutData extends Data<DoughnutData, DoughnutDataset>
public class DoughnutData extends HomogeneousData<DoughnutData, DoughnutDataset>
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* Copyright © 2023 XDEV Software (https://xdev.software)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package software.xdev.chartjs.model.data;

import software.xdev.chartjs.model.dataset.Dataset;


public class HomogeneousData<D extends HomogeneousData<D, T>, T extends Dataset<T, ?>> extends AbstractData<D, T>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.LineDataset;


public class LineData extends Data<LineData, LineDataset>
public class LineData extends HomogeneousData<LineData, LineDataset>
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package software.xdev.chartjs.model.data;

import software.xdev.chartjs.model.dataset.Dataset;


/**
* Allows creation of <a href="https://www.chartjs.org/docs/latest/charts/mixed.html">mixed chart types</a>
*/
public class MixedData extends AbstractData<MixedData, Dataset<?, ?>>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.PieDataset;


public class PieData extends Data<PieData, PieDataset>
public class PieData extends HomogeneousData<PieData, PieDataset>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.PolarDataset;


public class PolarData extends Data<PolarData, PolarDataset>
public class PolarData extends HomogeneousData<PolarData, PolarDataset>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.RadarDataset;


public class RadarData extends Data<RadarData, RadarDataset>
public class RadarData extends HomogeneousData<RadarData, RadarDataset>
{
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@
import software.xdev.chartjs.model.dataset.ScatterDataset;


public class ScatterData extends Data<ScatterData, ScatterDataset>
public class ScatterData extends HomogeneousData<ScatterData, ScatterDataset>
{
}
Loading

0 comments on commit 26f3e1d

Please sign in to comment.