/branches/grupo3/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java |
---|
448,14 → 448,48 |
return view.toJson(); |
} |
/* Grafico 2*/ |
public String generateGlobalLearningResultsChartYearImg(String reportDocumentJson,UserSession session) throws IOException { |
/* AA 7/12/2017 */ |
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson); |
LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class); |
LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class); |
GlobalLearningResultsChartYearImg chartImg = (GlobalLearningResultsChartYearImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartYearImg.class); |
public String save(String reportDocumentJson,UserSession session) throws IOException { |
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); |
//TODO FALTA GUARDAR O JSON NO CURSO |
return view.toJson(); |
} |
/* Guardar report 7/12/2017 */ |
public String saveCourseReportDoc(String reportDocumentJson,UserSession session) throws IOException { |
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson); |
DaoFactory.getCourseDaoImpl().findCourseByCode(reportDocument.getCourseCode()); |
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(reportDocument.getCourseCode()); |
/branches/grupo3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java |
---|
1,10 → 1,121 |
package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components; |
import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent; |
import jomm.utils.BytesUtils; |
import jomm.utils.MimeTypeGuesser; |
import org.jfree.chart.ChartFactory; |
import org.jfree.chart.JFreeChart; |
import org.jfree.chart.plot.PiePlot; |
import org.jfree.chart.plot.RingPlot; |
import org.jfree.data.general.DefaultPieDataset; |
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument; |
import pt.estgp.estgweb.utils.Globals; |
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.io.FileOutputStream; |
import java.io.IOException; |
/** |
* Created by jorgemachado on 31/10/17. |
*/ |
public class GlobalLearningResultsChartYearImg extends AutoImageWraperComponent |
public class GlobalLearningResultsChartYearImg extends ImageComponent |
{ |
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results,CourseReportDocument courseReportDocument) throws IOException |
{ |
float aprovados = results.getAprovados(); |
float reprovados = results.getReprovados(); |
float semElementos = results.getSemElementos(); |
double aprovadosPercent = ((int)(results.getAprovadosPercent()*100.0))/100.0; |
double reprovadosPercent = ((int)(results.getReprovadosPercent()*100.0))/100.0; |
double semElementosPercent = ((int)(results.getSemElementosPercent()*100.0))/100.0; |
String tempName = BytesUtils.generateHexKey() + ".png"; |
DefaultPieDataset data = new DefaultPieDataset(); |
if(reprovados > 0) |
data.setValue("Reprovados " + reprovadosPercent + "%", new Double(reprovados)); |
if(aprovados > 0) |
data.setValue("Aprovados " + aprovadosPercent + "%", new Double(aprovados)); |
if(semElementos > 0) |
data.setValue("Sem Elementos " + semElementosPercent + "%", new Double(semElementos)); |
JFreeChart chart = ChartFactory.createRingChart(null, data, false, true, false); |
chart.setBackgroundPaint(new Color(255,255,255)); |
PiePlot plot = (RingPlot) chart.getPlot(); |
plot.setLabelBackgroundPaint(new Color(255, 249, 235)); |
plot.setLabelPaint(new Color(88, 88, 90)); |
//plot.setDrawingSupplier(new ChartBuilderUtil.ChartDrawingSupplier()); |
plot.setSectionPaint(0, new Color(255, 0, 0)); |
plot.setSectionPaint(1, new Color(15, 218, 10)); |
plot.setSectionPaint(2, new Color(200, 200, 200)); |
plot.setBackgroundPaint(new Color(255, 255, 255)); |
plot.setOutlineVisible(false); |
plot.setLabelFont(new Font( |
"Helvetica", Font.PLAIN, 30)); |
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("Taxa global de aproveitamento"); |
fileUploaded.setDescription("Curso: " + courseReportDocument.getCourseName() + " (" + courseReportDocument.getCourseCode()+ ") ano " + courseReportDocument.getYear()); |
fileUploaded.setContentType(MimeTypeGuesser.getInstance().guessMimeType(output)); |
fileUploaded.setFileSize(output.length()); |
fileUploaded.setExtension("png"); |
return fileUploaded; |
} |
public static void main(String [] args) throws IOException { |
float aprovados = 10; |
float reprovados = 2; |
float semElementos = 4; |
double aprovadosPercent = ((int)10/16*100.0)/100.0; |
double reprovadosPercent = ((int)2/16*100.0)/100.0; |
double semElementosPercent = ((int)4/16*100.0)/100.0; |
String tempName = BytesUtils.generateHexKey() + ".png"; |
DefaultPieDataset data = new DefaultPieDataset(); |
if(reprovados > 0) |
data.setValue("Reprovados " + reprovadosPercent + "%", new Double(reprovados)); |
if(aprovados > 0) |
data.setValue("Aprovados " + aprovadosPercent + "%", new Double(aprovados)); |
if(semElementos > 0) |
data.setValue("Sem Elementos " + semElementosPercent + "%", new Double(semElementos)); |
JFreeChart chart = ChartFactory.createRingChart(null, data, false, true, false); |
chart.setBackgroundPaint(new Color(255,255,255)); |
PiePlot plot = (RingPlot) chart.getPlot(); |
plot.setLabelBackgroundPaint(new Color(255, 249, 235)); |
plot.setLabelPaint(new Color(88, 88, 90)); |
//plot.setDrawingSupplier(new ChartBuilderUtil.ChartDrawingSupplier()); |
plot.setSectionPaint(0, new Color(255, 0, 0)); |
plot.setSectionPaint(1, new Color(15, 218, 10)); |
plot.setSectionPaint(2, new Color(200, 200, 200)); |
plot.setBackgroundPaint(new Color(255, 255, 255)); |
plot.setOutlineVisible(false); |
plot.setLabelFont(new Font( |
"Helvetica", Font.PLAIN, 30)); |
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)); |
} |
} |
/branches/grupo3/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java |
---|
42,22 → 42,29 |
return new JSONObject(json); |
} |
public JSONObject generateGlobalLearningResultsChartYearImg(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), |
"CourseReportGenerateGlobalLearningResultsChartYearImg", |
new Object[]{courseReportDocument}); |
return new JSONObject(json); |
} |
/* AA 7/12/2017 */ |
public JSONObject saveReport(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable { |
public JSONObject saveCourseReportDoc(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), |
"CourseReportSave", |
"SaveCourseReportDoc", |
new Object[]{courseReportDocument}); |
return new JSONObject(json); |
} |
} |
/branches/grupo3/impl/src/web/user/courses/coursereport/templates.jsp |
---|
613,22 → 613,84 |
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartImg"> |
<globallearningresultschartimg> |
</globallearningresultschartimg> |
</script> |
<script> |
angular.module("courseReportApp").directive('globallearningresultschartimg', function() { |
return { |
restrict: 'E', |
link: function($scope, element, attrs) |
{ |
$scope.generateChart = function(comp) |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/courseReport.do", |
"generateGlobalLearningResultsChartImg", |
{ |
"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> |
<script type="text/ng-template" id="globallearningresultschartimg"> |
<div class="imageComponent component"> |
<div class="componentBody"> |
<div class="form-group clearfix"> |
<label class="col-md-2 control-label">Legenda</label> |
<div class="col-md-10"> |
<input type="text" class="form-control" rows="10" ng-model="comp.title"> |
</div> |
</div> |
<div class="form-group clearfix"> |
<div class="col-md-2 control-label"> |
<button class="btn btn-default" ng-click="generateChart(comp)">Refrescar/Gerar Gráfico</button> |
</div> |
<div class="col-md-10"> |
<label ng-if="comp.image.identifier"> Limites do PDF </label> |
<div ng-if="comp.image.identifier" style="text-align: center; width: 595px; border: 1px solid black; padding: 45px"> |
<center> |
<div style="width: 200px;height: 200px; max-width: 500px; max-height: 750px" resizable on-resize="resize($evt, $ui, comp)"> |
<img ng-if="comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}"> |
<img ng-if="!comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{'<%=request.getContextPath()%>/repositoryStream/' + comp.image.identifier}}"> |
</div> |
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito) |
</center> |
</div> |
</div> |
</div> |
</div> |
</div> |
</script> |
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartYearImg"> |
<globallearninglesultschartyearimg> |
</globallearninglesultschartyearimg> |
</script> |
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartImg"> |
<globallearningresultschartimg> |
</globallearningresultschartimg> |
</script> |
<script> |
angular.module("courseReportApp").directive('globallearningresultschartimg', function() { |
angular.module("courseReportApp").directive('globallearninglesultschartyearimg', function() { |
return { |
restrict: 'E', |
639,7 → 701,7 |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/courseReport.do", |
"generateGlobalLearningResultsChartImg", |
"generateGlobalLearningResultsChartYearImg", |
{ |
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report) |
}, |
662,7 → 724,8 |
} |
}); |
</script> |
<script type="text/ng-template" id="globallearningresultschartimg"> |
<script type="text/ng-template" id="globallearninglesultschartyearimg"> |
<div class="imageComponent component"> |
<div class="componentBody"> |
/branches/grupo3/impl/src/web/user/courses/courseReportEdit.jsp |
---|
315,11 → 315,11 |
} |
/* Guardar courseReport 7/12/2017 */ |
$scope.save = function() |
$scope.saveCourseReportDoc = function() |
{ |
widgetCallWithActionParameters( |
"<%=request.getContextPath()%>/user/json/repository.do", |
"saveReport", |
"saveCourseReportDoc", |
{ |
"report" : BacoJS.stringifyOrdered($scope.report) |
}, |
345,6 → 345,8 |
<div class="form-vertical"> |
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController"> |
<div class="web-mensages"></div> |
<button class="btn" ng-click="saveCourseReportDoc()">Save</button> |
<div ng-init="section=report;" ng-include="'pt_estgp_estgweb_utils_documentBuilder_DocumentSection'"> |
</div> |
355,7 → 357,6 |
</div><!--App--> |
</div> <!--form--> |
<!--<button class="md-raised md-button md-ink-ripple" type="button" ng-transclude="" ng-click="save()"><span class="ng-scope">Save</span></button> --> |
</div><!--Panel Body--> |