1,30 → 1,109 |
package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components; |
|
import com.orsoncharts.label.StandardCategoryItemLabelGenerator; |
import jomm.utils.BytesUtils; |
import jomm.utils.MimeTypeGuesser; |
import org.jfree.chart.ChartFactory; |
import org.jfree.chart.JFreeChart; |
import org.jfree.chart.labels.CategoryItemLabelGenerator; |
import org.jfree.chart.plot.CategoryPlot; |
import org.jfree.chart.plot.PlotOrientation; |
import org.jfree.chart.renderer.category.StackedBarRenderer; |
import org.jfree.data.KeyToGroupMap; |
import org.jfree.data.category.DefaultCategoryDataset; |
import org.jfree.data.general.Dataset; |
import org.jfree.ui.RectangleInsets; |
import org.jfree.ui.TextAnchor; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument; |
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.DataTable; |
import pt.estgp.estgweb.utils.Globals; |
import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent; |
import pt.estgp.estgweb.utils.documentBuilder.ImageComponent; |
import pt.estgp.estgweb.web.controllers.utils.FileUploaded; |
|
import javax.imageio.ImageIO; |
import java.awt.*; |
import java.awt.image.BufferedImage; |
import java.awt.image.ColorModel; |
import java.io.FileNotFoundException; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.text.DecimalFormat; |
import java.util.List; |
|
/** |
* Created by jorgemachado on 31/10/17. |
*/ |
public class GlobalLearningResultsChartYearImg extends ImageComponent |
{ |
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results, CourseReportDocument courseReportDocument) { |
float aprovados1013 = results.aprovados1013Percent; |
float aprovados1416 = results.aprovados1416Percent; |
float aprovados1720 = results.aprovados1720Percent; |
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results, CourseReportDocument courseReportDocument) throws IOException { |
List<UnitsLearningResultYear> years = results.getYears(); |
float totalAprovados1013 = results.aprovados1013Percent; |
float totalAprovados1416 = results.aprovados1416Percent; |
float totalAprovados1720 = results.aprovados1720Percent; |
|
|
String tempName = BytesUtils.generateHexKey() + ".png"; |
|
DefaultCategoryDataset data = new DefaultCategoryDataset(); |
for (UnitsLearningResultYear year : years) { |
data.addValue(year.getAprovados1013Percent(), "Aprovados 10-13", year.getAno() + " ano"); |
data.addValue(year.getAprovados1416Percent(), "Aprovados 14-16", year.getAno() + " ano"); |
data.addValue(year.getAprovados1720Percent(), "Aprovados 17-20", year.getAno() + " ano"); |
} |
|
data.addValue(totalAprovados1013, "Aprovados 10-13", "Total"); |
data.addValue(totalAprovados1416, "Aprovados 14-16", "Total"); |
data.addValue(totalAprovados1720, "Aprovados 17-20", "Total"); |
|
//JFreeChart chart = ChartFactory.createStackedBarChart("StackedBarChart","","",); |
JFreeChart chart = ChartFactory.createStackedBarChart( |
null, |
null, |
null, |
data, |
PlotOrientation.VERTICAL, |
true, |
true, |
false |
); |
chart.setBackgroundPaint(new Color(255,255,255)); |
|
return null; |
|
CategoryPlot plot = (CategoryPlot) chart.getPlot(); |
plot.setBackgroundPaint(Color.white); |
plot.setRangeGridlinePaint(Color.gray); |
|
plot.getDomainAxis().setTickLabelFont(new Font("Arial", Font.PLAIN, 25)); |
plot.getRangeAxis().setTickLabelFont(new Font("Arial", Font.PLAIN, 25)); |
|
|
StackedBarRenderer renderer = (StackedBarRenderer) plot.getRenderer(); |
renderer.setItemMargin(0.0); |
Paint ap1013Color = new Color(255, 150, 1); |
Paint ap1416Color = new Color(255, 215, 1); |
Paint ap1720Color = new Color(1, 170, 1); |
renderer.setSeriesPaint(0, ap1013Color); |
renderer.setSeriesPaint(1, ap1416Color); |
renderer.setSeriesPaint(2, ap1720Color); |
|
plot.setRenderer(renderer); |
|
RectangleInsets chartRectangle = new RectangleInsets(0,0,50F,0); |
chart.setPadding(chartRectangle); |
|
|
BufferedImage image = chart.createBufferedImage( 300*4, 200*4); |
String pathGraficoTiposAlunos = Globals.TMP_DIR + java.io.File.separator + tempName; |
java.io.File output = new java.io.File(pathGraficoTiposAlunos); |
ImageIO.write(image, "png", new FileOutputStream(output)); |
|
FileUploaded fileUploaded = new FileUploaded(); |
fileUploaded.setTmpName(tempName); |
fileUploaded.setTitle("Percentagem de aprovados entre 10-13, 14-16, 17-20"); |
fileUploaded.setDescription("Percentagem de aprovados entre 10-13, 14-16, 17-20"); |
fileUploaded.setContentType(MimeTypeGuesser.getInstance().guessMimeType(output)); |
fileUploaded.setFileSize(output.length()); |
fileUploaded.setExtension("png"); |
return fileUploaded; |
} |
} |