Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1983 → Rev 1985

/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>