/branches/grupo4/impl/conf/berserk/sd.xml |
---|
4065,11 → 4065,25 |
</filterChains> |
</service> |
<service> |
<name>CourseReportGenerateLearningResultsChartSem</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass> |
<description> |
</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>generateLearningResultsChartSem</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<!-- Serviço para guardar o relatorio--> |
<service> |
<name>SaveReportEdit</name> |
/branches/grupo4/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java |
---|
480,15 → 480,49 |
view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session); |
} |
chartImg.setImage(view); |
//TODO FALTA GUARDAR O JSON NO CURSO |
return view.toJson(); |
} |
public String generateLearningResultsChartSem(String reportDocumentJson,UserSession session) throws IOException { |
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson); |
LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class); |
LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class); |
LearningResultsChartSem chartImg = (LearningResultsChartSem) learningGlobalAnalysisSection.findDocComponent(LearningResultsChartSem.class); |
UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class); |
FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument); |
RepositoryService repositoryService = new RepositoryService(); |
boolean imageInitialized = chartImg.getImage() != null |
&& |
chartImg.getImage().getIdentifier() != null; |
RepositoryFile4JsonView view; |
if(imageInitialized) |
{ |
String identifier = chartImg.getImage().getIdentifier(); |
view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session); |
} |
else |
{ |
view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session); |
} |
chartImg.setImage(view); |
return view.toJson(); |
} |
/****************************************************************************/ |
/* |
/branches/grupo4/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java |
---|
38,9 → 38,9 |
{ |
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; |
float totalAprovados1013 = results.getAprovados1013Percent(); |
float totalAprovados1416 = results.getAprovados1416Percent(); |
float totalAprovados1720 = results.getAprovados1720Percent(); |
String tempName = BytesUtils.generateHexKey() + ".png"; |
/branches/grupo4/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/LearningResultsChartSem.java |
---|
1,11 → 1,28 |
package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components; |
import jomm.utils.BytesUtils; |
import jomm.utils.MimeTypeGuesser; |
import org.jfree.chart.ChartFactory; |
import org.jfree.chart.JFreeChart; |
import org.jfree.chart.plot.PlotOrientation; |
import org.jfree.data.category.DefaultCategoryDataset; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument; |
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.image.BufferedImage; |
import java.io.FileNotFoundException; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.util.List; |
/** |
* Created by jorgemachado on 31/10/17. |
*/ |
public class LearningResultsChartSem extends AutoImageWraperComponent |
public class LearningResultsChartSem extends ImageComponent |
{ |
String semesterCode; |
24,4 → 41,42 |
public void setSemesterCode(String semesterCode) { |
this.semesterCode = semesterCode; |
} |
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results, CourseReportDocument reportDocument) throws IOException { |
String tempName = BytesUtils.generateHexKey() + ".png"; |
List<UnitsLearningResultYear> years = results.getYears(); |
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"); |
} |
JFreeChart chart = ChartFactory.createStackedBarChart( |
null, |
null, |
null, |
data, |
PlotOrientation.HORIZONTAL, |
true, |
true, |
false |
); |
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, reprovados e sem elementos"); |
fileUploaded.setDescription("Percentagem de aprovados, reprovados e sem elementos para todas as UCs"); |
fileUploaded.setContentType(MimeTypeGuesser.getInstance().guessMimeType(output)); |
fileUploaded.setFileSize(output.length()); |
fileUploaded.setExtension("png"); |
return fileUploaded; |
} |
} |
/branches/grupo4/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java |
---|
58,8 → 58,22 |
return new JSONObject(json); |
} |
public JSONObject generateLearningResultsChartSem(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable { |
String courseReportDocument = request.getParameter("courseReportDocument"); |
IServiceManager sm = ServiceManager.getInstance(); |
String json = (String) sm.execute(RequestUtils.getRequester(request, response), |
"CourseReportGenerateLearningResultsChartSem", |
new Object[]{courseReportDocument}); |
return new JSONObject(json); |
} |
//Controlador que faz load e faz forward para |
public ActionForward startLoadEdit( |
ActionMapping mapping, |
/branches/grupo4/impl/src/web/user/courses/coursereport/templates.jsp |
---|
663,6 → 663,8 |
} |
}); |
</script> |
<script type="text/ng-template" id="globallearningresultschartimg"> |
<div class="imageComponent component"> |
699,7 → 701,7 |
<!-- Primeiro gráfico --> |
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartYearImg"> |
<globallearningresultschartyearimg> |
739,4 → 741,48 |
} |
} |
}); |
</script> |
<!-- Segundo gráfico --> |
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_LearningResultsChartSem"> |
<learningresultschartsem> |
</learningresultschartsem> |
</script> |
<script> |
angular.module("courseReportApp").directive('learningresultschartsem', function() { |
return { |
restrict: 'E', |
link: function($scope, element, attrs) |
{ |
$scope.generateChart = function(comp) |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/courseReport.do", |
"generateLearningResultsChartSem", |
{ |
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report) |
}, |
"#courseReportApp", |
function(repositoryFile4JsonView) |
{ |
comp.image = repositoryFile4JsonView; |
comp.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + comp.image.identifier + "?" + new Date().getTime(); |
angular.element($("#courseReportApp")).scope().$apply(); |
}, |
function(){} |
); |
} |
}, |
templateUrl: function(elem,attrs) { |
return "globallearningresultschartimg"; |
} |
} |
}); |
</script> |