From 441c06203f95f9fd43c52881250d444d066e1d78 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Tue, 26 May 2020 22:28:37 +0200 Subject: [PATCH] ref 17249: Save produced charts as report https://support.d4science.org/issues/17249 Added PDF support for SynopticTable --- .../BoxPlotAnnualPanelResult.java | 24 ++- .../ScatterAnnualPanelResult.java | 20 +-- .../SpeedometerAnnualPanelResult.java | 22 ++- .../SynopticTableAnnualPanelResult.java | 159 +++++++++++++++--- .../client/viewbinder/BoxPlotPanelResult.java | 23 ++- .../client/viewbinder/ScatterPanelResult.java | 20 +-- .../viewbinder/SpeedometerPanelResult.java | 20 +-- .../viewbinder/SynopticTablePanelResult.java | 159 +++++++++++++++--- 8 files changed, 335 insertions(+), 112 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/BoxPlotAnnualPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/BoxPlotAnnualPanelResult.java index 9dae0b2..5a7bb4a 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/BoxPlotAnnualPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/BoxPlotAnnualPanelResult.java @@ -559,26 +559,24 @@ public class BoxPlotAnnualPanelResult { } if (i < outputIteration) { - //var numberOfPages=pdoc.internal.getNumberOfPages(); - //console.log('NumberOfPages: '+numberOfPages); - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); pdoc.addPage(); - yPos = tMargin; // Restart position } else { - if (i = outputIteration) { - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); - } } } + + + var numberOfPages=pdoc.internal.getNumberOfPages() + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/"+numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + + } console.log('Done'); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/ScatterAnnualPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/ScatterAnnualPanelResult.java index 4015a54..112630c 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/ScatterAnnualPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/ScatterAnnualPanelResult.java @@ -519,24 +519,22 @@ public class ScatterAnnualPanelResult { } else { if (pdfHeightInMM - yPos < pdfHeightInMM / 4) { - //var numberOfPages=pdoc.internal.getNumberOfPages(); - //console.log('NumberOfPages: '+numberOfPages); - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); pdoc.addPage(); - yPos = tMargin; // Restart position } } } - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + var numberOfPages=pdoc.internal.getNumberOfPages() + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/"+numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + + } console.log('Done'); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SpeedometerAnnualPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SpeedometerAnnualPanelResult.java index 11e979c..0553574 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SpeedometerAnnualPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SpeedometerAnnualPanelResult.java @@ -547,25 +547,23 @@ public class SpeedometerAnnualPanelResult { } else { if (pdfHeightInMM - yPos < pdfHeightInMM / 4) { - //var numberOfPages=pdoc.internal.getNumberOfPages(); - //console.log('NumberOfPages: '+numberOfPages); - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); pdoc.addPage(); - yPos = tMargin; // Restart position } } } - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); - + var numberOfPages=pdoc.internal.getNumberOfPages() + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/"+numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + + } + console.log('Done'); pdoc.save(filename); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SynopticTableAnnualPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SynopticTableAnnualPanelResult.java index ffed24f..34540f6 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SynopticTableAnnualPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewannualbinder/SynopticTableAnnualPanelResult.java @@ -44,13 +44,13 @@ public class SynopticTableAnnualPanelResult { private PerformFishAnnualAnalyticsViewController viewAnnualController; private int requestId; - private int outputIteration = 0; + private int outputIteration = 1; private int outputNumber = 0; public SynopticTableAnnualPanelResult(int reqId, PerformFishAnnualAnalyticsViewController viewAnnualController, PerformFishResponse performFishResponse) { - GWT.log("RequestID: "+reqId); - requestId=reqId; + GWT.log("RequestID: " + reqId); + requestId = reqId; this.viewAnnualController = viewAnnualController; final DataMinerAlgorithms algorithm = DataMinerAlgorithms.PERFORMFISH_SYNOPTIC_TABLE_FARM; @@ -77,7 +77,6 @@ public class SynopticTableAnnualPanelResult { res.add(savePDFButton); submitRequestPanel.addWidget(res); - outputIteration = 1; StringBuilder dataInputsFormatter = new StringBuilder(); Map performFishResponseMap = performFishResponse.getMapParameters(); @@ -126,14 +125,15 @@ public class SynopticTableAnnualPanelResult { // field_unary_algorithm.setVisible(true); GWT.log("I'm displaying: " + dmResponse); displayOutputFilesAsStaticEntities(dmResponse, algorithm, null, null, null, panelContainer, - false, 1); + false, outputIteration); } @Override public void onFailure(Throwable caught) { loaderIcon.setVisible(false); checkTabSpinner(submitRequestPanel, tab); - displayOutputFilesAsStaticEntities(null, algorithm, null, null, null, panelContainer, true, 1); + displayOutputFilesAsStaticEntities(null, algorithm, null, null, null, panelContainer, true, + outputIteration); } }); @@ -184,9 +184,20 @@ public class SynopticTableAnnualPanelResult { } } + private String getOutputId(int oIteration, boolean isLegend) { + String outputId; + if (isLegend) { + outputId = "OutputId_" + requestId + "_" + oIteration + "_" + 1; + } else { + outputNumber++; + outputId = "OutputId_" + requestId + "_" + oIteration + "_" + outputNumber; + } + return outputId; + } + private void displayOutputFilesAsStaticEntities(final DataMinerResponse dmResponse, final DataMinerAlgorithms chartType, List inputKPIs, List outputKPIs, final String focusID, - final Panel container, boolean displayError, int oIteration) { + final Panel container, boolean displayError, final int oIteration) { String title = displayError ? "No results " : ""; @@ -201,15 +212,11 @@ public class SynopticTableAnnualPanelResult { final String toTitle = title; - - - int oNumber = 0; - + outputNumber = 1; for (OutputFile outputFile : dmResponse.getListOutput()) { - oNumber++; - final String outputId = "OutputId_" + requestId+"_"+oIteration + "_" + oNumber; - final FileContentType fileContentType= outputFile.getDataType(); - + + final FileContentType fileContentType = outputFile.getDataType(); + switch (outputFile.getDataType()) { case IMAGE: PerformFishAnalyticsServiceAsync.Util.getInstance().getImageFile(outputFile, @@ -229,6 +236,7 @@ public class SynopticTableAnnualPanelResult { String title = toTitle; + String outputId = getOutputId(oIteration, false); ShowResult showResult = new ShowResult(outputId, title, fileContentType); showResult.showImage(base64Content); container.add(showResult); @@ -257,13 +265,16 @@ public class SynopticTableAnnualPanelResult { String title = toTitle; switch (chartType) { case PERFORMFISH_SYNOPTIC_TABLE_FARM: + String outputId; if (!result.getFileName().contains("legend")) { cssTableStyle = "synoptictable-farm"; + outputId = getOutputId(oIteration, false); } else { cssTableStyle = "simpletable-synoptic"; + outputId = getOutputId(oIteration, true); } - ShowResult showResultSin = new ShowResult(outputId, title, - fileContentType); + + ShowResult showResultSin = new ShowResult(outputId, title, fileContentType); showResultSin.showCSVFile(result, cssTableStyle); displayingOrderedSynopticTable(dmResponse, result.getFileName(), container, showResultSin); @@ -278,6 +289,7 @@ public class SynopticTableAnnualPanelResult { break; } + String outputId = getOutputId(oIteration, false); ShowResult showResult = new ShowResult(outputId, title, fileContentType); showResult.showCSVFile(result, cssTableStyle); container.add(showResult); @@ -291,12 +303,8 @@ public class SynopticTableAnnualPanelResult { } } - outputNumber=oNumber; - } - - private void displayingOrderedSynopticTable(final DataMinerResponse dmResponse, String fileName, final Panel container, ShowResult showResult) { int hashcode = dmResponse.hashCode(); @@ -389,11 +397,85 @@ public class SynopticTableAnnualPanelResult { // foo could get resolved and it's defined var childrenTable = resultOutputNumber.children; + var titleCurrentTable = childrenTable[0].rows[0].cells[0]; + console.log('Title current table: ' + + titleCurrentTable.textContent); + yPos += 2; + pdoc.setFontSize(10); + pdoc.setFontType("bold"); + pdoc.text(titleCurrentTable.textContent, xPos, yPos, + 'left'); + yPos += 6; + + pdoc.setFontSize(10); + pdoc.setFontType("normal"); + var secondDiv = childrenTable[0].rows[1].cells[0]; var secondTable = secondDiv.children[0].children[0]; console.log('CSV SecondTable: ' + secondTable); + var checkColor = function(data) { + if (data.section === 'body') { + console.log(data); + var good = '
'; + var normal = '
'; + var bad = '
'; + + if (typeof data.cell !== 'undefined' + && data.cell !== null) { + if (typeof data.cell.raw !== 'undefined' + && data.cell.raw !== null) { + + console.log(data.cell.raw.innerHTML); + if (data.cell.raw.innerHTML === good) { + console.log('good'); + var posIW = (data.cell.x + (data.cell.width / 2)-2); + var posIH = (data.cell.y + (data.cell.height / 2)-2); + var greenImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAWAQEBAQAAAAAAAAAAAAAAAAAACAn/2gAMAwEAAhADEAAAAbSM8+wB/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABBQIf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwIf/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABPyEf/9oADAMBAAIAAwAAABAAD//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEAAT8QH//Z' + pdoc.addImage(greenImg, 'JPEG', posIW, posIH, 4, 4); + //pdoc.setFontSize(10); + //pdoc.setFontType("normal"); + //var posW = (data.cell.x + (data.cell.width / 2)); + //var posH = (data.cell.y + (data.cell.height / 2)); + //pdoc.text('G', posW, posH,'center'); + } else { + if (data.cell.raw.innerHTML === normal) { + console.log('normal'); + var posIW = (data.cell.x + (data.cell.width / 2)-2); + var posIH = (data.cell.y + (data.cell.height / 2)-2); + var yellowImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAn/xAAWAQEBAQAAAAAAAAAAAAAAAAAABwr/2gAMAwEAAhADEAAAAbEZ/wCqAD//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAh//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Ah//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAE/IR//2gAMAwEAAgADAAAAEAAP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABPxAf/9k=' + pdoc.addImage(yellowImg, 'JPEG', posIW, posIH, 4, 4); + //pdoc.setFontSize(10); + //pdoc.setFontType("normal"); + //var posW = (data.cell.x + (data.cell.width / 2)); + //var posH = (data.cell.y + (data.cell.height / 2)); + //pdoc.text('N', posW, posH,'center'); + } else { + if (data.cell.raw.innerHTML === bad) { + console.log('bad'); + var posIW = (data.cell.x + (data.cell.width / 2)-2); + var posIH = (data.cell.y + (data.cell.height / 2)-2); + var redImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAWAQEBAQAAAAAAAAAAAAAAAAAACAn/2gAMAwEAAhADEAAAAYvlPfwAf//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEAAQUCH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CH//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEAAT8hH//aAAwDAQACAAMAAAAQAA//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAE/EB//2Q==' + pdoc.addImage(redImg, 'JPEG', posIW, posIH, 4, 4); + //pdoc.setFontSize(10); + //pdoc.setFontType("normal"); + //var posW = (data.cell.x + (data.cell.width / 2)); + //var posH = (data.cell.y + (data.cell.height / 2)); + //pdoc.text('B', posW, posH,'center'); + } else { + + } + + } + + } + } + } + + } + }; + pdoc.autoTable({ theme : 'grid', startY : yPos, @@ -401,6 +483,7 @@ public class SynopticTableAnnualPanelResult { bodyStyles : { fontSize : 9 }, + didDrawCell : checkColor, html : secondTable }); @@ -409,6 +492,20 @@ public class SynopticTableAnnualPanelResult { if (resultType == 'image') { console.log('Result Type image: ' + i); var childrenTable = resultOutputNumber.children; + + var titleCurrentImage = childrenTable[0].rows[0].cells[0]; + console.log('Title current image: ' + + titleCurrentImage.textContent); + yPos += 2; + pdoc.setFontSize(10); + pdoc.setFontType("bold"); + pdoc.text(titleCurrentImage.textContent, xPos, + yPos, 'left'); + yPos += 6; + + pdoc.setFontSize(10); + pdoc.setFontType("normal"); + var secondDiv = childrenTable[0].rows[1].cells[0]; var imageElement = secondDiv.getElementsByTagName( 'img').item(0); @@ -427,6 +524,26 @@ public class SynopticTableAnnualPanelResult { } } + + if (i == outputNumber) { + + } else { + if (pdfHeightInMM - yPos < pdfHeightInMM / 7) { + pdoc.addPage(); + yPos = tMargin; // Restart position + } + } + + } + + var numberOfPages = pdoc.internal.getNumberOfPages(); + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/" + numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + } console.log('Done'); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/BoxPlotPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/BoxPlotPanelResult.java index bd25b56..0665977 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/BoxPlotPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/BoxPlotPanelResult.java @@ -510,26 +510,23 @@ public class BoxPlotPanelResult { } if (i < outputIteration) { - //var numberOfPages=pdoc.internal.getNumberOfPages(); - //console.log('NumberOfPages: '+numberOfPages); - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); pdoc.addPage(); - yPos = tMargin; // Restart position } else { - if (i = outputIteration) { - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); - } } } + + var numberOfPages=pdoc.internal.getNumberOfPages() + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/"+numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + + } console.log('Done'); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ScatterPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ScatterPanelResult.java index db965a6..6865f4e 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ScatterPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/ScatterPanelResult.java @@ -468,24 +468,22 @@ public class ScatterPanelResult { } else { if (pdfHeightInMM - yPos < pdfHeightInMM / 4) { - //var numberOfPages=pdoc.internal.getNumberOfPages(); - //console.log('NumberOfPages: '+numberOfPages); - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); pdoc.addPage(); - yPos = tMargin; // Restart position } } } - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + var numberOfPages=pdoc.internal.getNumberOfPages() + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/"+numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + + } console.log('Done'); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SpeedometerPanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SpeedometerPanelResult.java index 054d8a4..1b3d8e4 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SpeedometerPanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SpeedometerPanelResult.java @@ -469,24 +469,22 @@ public class SpeedometerPanelResult { } else { if (pdfHeightInMM - yPos < pdfHeightInMM / 4) { - //var numberOfPages=pdoc.internal.getNumberOfPages(); - //console.log('NumberOfPages: '+numberOfPages); - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); pdoc.addPage(); - yPos = tMargin; // Restart position } } } - var currentPage = pdoc.internal.getCurrentPageInfo().pageNumber; - console.log('CurrentPage: ' + currentPage); - var footner = 'Page ' + currentPage; - pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + var numberOfPages=pdoc.internal.getNumberOfPages() + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/"+numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + + } console.log('Done'); diff --git a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SynopticTablePanelResult.java b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SynopticTablePanelResult.java index 8aa4866..6b8c4b8 100644 --- a/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SynopticTablePanelResult.java +++ b/src/main/java/org/gcube/portlets/user/performfishanalytics/client/viewbinder/SynopticTablePanelResult.java @@ -41,13 +41,13 @@ public class SynopticTablePanelResult { private PerformFishAnalyticsViewController viewController; private int requestId; - private int outputIteration = 0; + private int outputIteration = 1; private int outputNumber = 0; public SynopticTablePanelResult(int reqId, PerformFishAnalyticsViewController viewController, PerformFishResponse performFishResponse, final Map> performFishRequestParameters) { - GWT.log("RequestID: "+reqId); - requestId=reqId; + GWT.log("RequestID: " + reqId); + requestId = reqId; this.viewController = viewController; String batchTableURL = performFishResponse.getMapParameters().get(PerformFishAnalyticsConstant.BATCHES_TABLE); @@ -119,7 +119,6 @@ public class SynopticTablePanelResult { res.add(savePDFButton); submitRequestPanel.addWidget(res); - outputIteration=1; final HTMLPanel panelContainer = submitRequestPanel.getContainerPanel(); @@ -146,7 +145,7 @@ public class SynopticTablePanelResult { // field_unary_algorithm.setVisible(true); GWT.log("I'm displaying: " + dmResponse); displayOutputFilesAsStaticEntities(dmResponse, toFinalChartType, null, null, null, - panelContainer, false, 1); + panelContainer, false, outputIteration); } @Override @@ -154,7 +153,7 @@ public class SynopticTablePanelResult { loaderIcon.setVisible(false); checkTabSpinner(submitRequestPanel, tab); displayOutputFilesAsStaticEntities(null, toFinalChartType, null, null, null, panelContainer, - true, 1); + true, outputIteration); } }); @@ -179,9 +178,20 @@ public class SynopticTablePanelResult { } } + private String getOutputId(int oIteration, boolean isLegend) { + String outputId; + if (isLegend) { + outputId = "OutputId_" + requestId + "_" + oIteration + "_" + 1; + } else { + outputNumber++; + outputId = "OutputId_" + requestId + "_" + oIteration + "_" + outputNumber; + } + return outputId; + } + private void displayOutputFilesAsStaticEntities(final DataMinerResponse dmResponse, final DataMinerAlgorithms chartType, List inputKPIs, List outputKPIs, final String focusID, - final Panel container, boolean displayError, int oIteration) { + final Panel container, boolean displayError, final int oIteration) { String title = displayError ? "No results " : ""; @@ -195,14 +205,12 @@ public class SynopticTablePanelResult { } final String toTitle = title; - - int oNumber = 0; + outputNumber = 1; for (OutputFile outputFile : dmResponse.getListOutput()) { - oNumber++; - final String outputId = "OutputId_" + requestId+"_"+oIteration + "_" + oNumber; - final FileContentType fileContentType= outputFile.getDataType(); - + + final FileContentType fileContentType = outputFile.getDataType(); + switch (outputFile.getDataType()) { case IMAGE: PerformFishAnalyticsServiceAsync.Util.getInstance().getImageFile(outputFile, @@ -222,6 +230,7 @@ public class SynopticTablePanelResult { String title = toTitle; + String outputId = getOutputId(oIteration, false); ShowResult showResult = new ShowResult(outputId, title, fileContentType); showResult.showImage(base64Content); container.add(showResult); @@ -253,14 +262,16 @@ public class SynopticTablePanelResult { case PERFORMFISH_SYNOPTICTABLE_BATCH_HATCHERY: case PERFORMFISH_SYNOPTICTABLE_BATCH_PREGROW: + String outputId; if (!result.getFileName().contains("legend")) { - cssTableStyle = "synoptictable-batch"; + cssTableStyle = "synoptictable-farm"; + outputId = getOutputId(oIteration, false); } else { cssTableStyle = "simpletable-synoptic"; + outputId = getOutputId(oIteration, true); } - ShowResult showResultSin = new ShowResult(outputId, title, - fileContentType); + ShowResult showResultSin = new ShowResult(outputId, title, fileContentType); showResultSin.showCSVFile(result, cssTableStyle); displayingOrderedSynopticTable(dmResponse, result.getFileName(), container, showResultSin); @@ -272,6 +283,8 @@ public class SynopticTablePanelResult { break; } // ALL OTHER CASES + + String outputId = getOutputId(oIteration, false); ShowResult showResult = new ShowResult(outputId, title, fileContentType); showResult.showCSVFile(result, cssTableStyle); container.add(showResult); @@ -284,8 +297,6 @@ public class SynopticTablePanelResult { } } - - outputNumber = oNumber; } @@ -359,7 +370,7 @@ public class SynopticTablePanelResult { //pdoc.text("Analysis:", xPos, yPos, 'left'); yPos += 6; - for (var i = 1; i <= outputIteration; i++) { + for (var i = 1; i <= outputIteration; i++) { for (var j = 1; j <= outputNumber; j++) { @@ -381,11 +392,85 @@ public class SynopticTablePanelResult { // foo could get resolved and it's defined var childrenTable = resultOutputNumber.children; + var titleCurrentTable = childrenTable[0].rows[0].cells[0]; + console.log('Title current table: ' + + titleCurrentTable.textContent); + yPos += 2; + pdoc.setFontSize(10); + pdoc.setFontType("bold"); + pdoc.text(titleCurrentTable.textContent, xPos, yPos, + 'left'); + yPos += 6; + + pdoc.setFontSize(10); + pdoc.setFontType("normal"); + var secondDiv = childrenTable[0].rows[1].cells[0]; var secondTable = secondDiv.children[0].children[0]; console.log('CSV SecondTable: ' + secondTable); + var checkColor = function(data) { + if (data.section === 'body') { + console.log(data); + var good = '
'; + var normal = '
'; + var bad = '
'; + + if (typeof data.cell !== 'undefined' + && data.cell !== null) { + if (typeof data.cell.raw !== 'undefined' + && data.cell.raw !== null) { + + console.log(data.cell.raw.innerHTML); + if (data.cell.raw.innerHTML === good) { + console.log('good'); + var posIW = (data.cell.x + (data.cell.width / 2)-2); + var posIH = (data.cell.y + (data.cell.height / 2)-2); + var greenImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAb/xAAWAQEBAQAAAAAAAAAAAAAAAAAACAn/2gAMAwEAAhADEAAAAbSM8+wB/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABBQIf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwIf/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABPyEf/9oADAMBAAIAAwAAABAAD//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEAAT8QH//Z' + pdoc.addImage(greenImg, 'JPEG', posIW, posIH, 4, 4); + //pdoc.setFontSize(10); + //pdoc.setFontType("normal"); + //var posW = (data.cell.x + (data.cell.width / 2)); + //var posH = (data.cell.y + (data.cell.height / 2)); + //pdoc.text('G', posW, posH,'center'); + } else { + if (data.cell.raw.innerHTML === normal) { + console.log('normal'); + var posIW = (data.cell.x + (data.cell.width / 2)-2); + var posIH = (data.cell.y + (data.cell.height / 2)-2); + var yellowImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAn/xAAWAQEBAQAAAAAAAAAAAAAAAAAABwr/2gAMAwEAAhADEAAAAbEZ/wCqAD//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAh//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Ah//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAE/IR//2gAMAwEAAgADAAAAEAAP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABPxAf/9k=' + pdoc.addImage(yellowImg, 'JPEG', posIW, posIH, 4, 4); + //pdoc.setFontSize(10); + //pdoc.setFontType("normal"); + //var posW = (data.cell.x + (data.cell.width / 2)); + //var posH = (data.cell.y + (data.cell.height / 2)); + //pdoc.text('N', posW, posH,'center'); + } else { + if (data.cell.raw.innerHTML === bad) { + console.log('bad'); + var posIW = (data.cell.x + (data.cell.width / 2)-2); + var posIH = (data.cell.y + (data.cell.height / 2)-2); + var redImg = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wgARCAAKAAoDAREAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAWAQEBAQAAAAAAAAAAAAAAAAAACAn/2gAMAwEAAhADEAAAAYvlPfwAf//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEAAQUCH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CH//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEAAT8hH//aAAwDAQACAAMAAAAQAA//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAE/EB//2Q==' + pdoc.addImage(redImg, 'JPEG', posIW, posIH, 4, 4); + //pdoc.setFontSize(10); + //pdoc.setFontType("normal"); + //var posW = (data.cell.x + (data.cell.width / 2)); + //var posH = (data.cell.y + (data.cell.height / 2)); + //pdoc.text('B', posW, posH,'center'); + } else { + + } + + } + + } + } + } + + } + }; + pdoc.autoTable({ theme : 'grid', startY : yPos, @@ -393,6 +478,7 @@ public class SynopticTablePanelResult { bodyStyles : { fontSize : 9 }, + didDrawCell : checkColor, html : secondTable }); @@ -401,6 +487,20 @@ public class SynopticTablePanelResult { if (resultType == 'image') { console.log('Result Type image: ' + i); var childrenTable = resultOutputNumber.children; + + var titleCurrentImage = childrenTable[0].rows[0].cells[0]; + console.log('Title current image: ' + + titleCurrentImage.textContent); + yPos += 2; + pdoc.setFontSize(10); + pdoc.setFontType("bold"); + pdoc.text(titleCurrentImage.textContent, xPos, + yPos, 'left'); + yPos += 6; + + pdoc.setFontSize(10); + pdoc.setFontType("normal"); + var secondDiv = childrenTable[0].rows[1].cells[0]; var imageElement = secondDiv.getElementsByTagName( 'img').item(0); @@ -419,6 +519,26 @@ public class SynopticTablePanelResult { } } + + if (i == outputNumber) { + + } else { + if (pdfHeightInMM - yPos < pdfHeightInMM / 7) { + pdoc.addPage(); + yPos = tMargin; // Restart position + } + } + + } + + var numberOfPages = pdoc.internal.getNumberOfPages(); + console.log('NumberOfPages: ' + numberOfPages); + for (var k = 1; k <= numberOfPages; k++) { + pdoc.setPage(k); + console.log('CurrentPage: ' + k); + var footner = 'Page ' + k + "/" + numberOfPages; + pdoc.text(footner, pageCenter, pdfHeightInMM - 7, 'center'); + } console.log('Done'); @@ -426,5 +546,4 @@ public class SynopticTablePanelResult { pdoc.save(filename); }-*/; - }