From 563c503d5458bd0c5da920097bdbf8a8cbed83d2 Mon Sep 17 00:00:00 2001 From: Carlos Alberto Date: Mon, 4 Apr 2016 14:24:34 -0300 Subject: [PATCH] Implementação dos recursos de relatório --- cit-esi-api/src/main/java/br/com/centralit/esi/api/parameter/model/Parameter.java | 4 ++++ cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java | 25 ------------------------- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/Resource.java | 14 ++++++++++++++ cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ReportVersionService.java | 2 +- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java | 8 ++++---- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java | 16 ++++++---------- cit-esi-web/src/main/java/br/com/centralit/controller/ReportController.java | 20 ++++++++++++++++++++ cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ cit-esi-web/src/main/resources/templates/resource_report_controller.js | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cit-esi-web/src/main/resources/templates/resource_report_html.html | 30 ++++++++++++++++++++++++++++++ cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- cit-esi-web/src/main/webapp/assets/js/angular/custom/repository/ReportRepository.js | 3 +++ cit-esi-web/src/main/webapp/html/report/reportEdit.html | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------ 13 files changed, 671 insertions(+), 91 deletions(-) create mode 100644 cit-esi-web/src/main/resources/templates/resource_report_controller.js create mode 100644 cit-esi-web/src/main/resources/templates/resource_report_html.html diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/parameter/model/Parameter.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/parameter/model/Parameter.java index 0c1061e..c650dd5 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/parameter/model/Parameter.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/parameter/model/Parameter.java @@ -53,6 +53,10 @@ public class Parameter extends PersistentObjectAudit { public static final String DATAOBJECT_CRUD_CONTROLLER = "DATAOBJECT_CRUD_CONTROLLER"; public static final String DATAOBJECT_CRUD_DEPENDENCIES = "DATAOBJECT_CRUD_DEPENDENCIES"; + public static final String RESOURCE_REPORT_HTML = "RESOURCE_REPORT_HTML"; + public static final String RESOURCE_REPORT_CONTROLLER = "RESOURCE_REPORT_CONTROLLER"; + public static final String RESOURCE_REPORT_DEPENDENCIES = "RESOURCE_REPORT_DEPENDENCIES"; + public static final String BPE_SEND_MAIL = "BPE_SEND_MAIL"; public static final String BPE_SEND_NOTIFICATION = "BPE_SEND_NOTIFICATION"; public static final String BPE_EMAIL_FROM = "BPE_EMAIL_FROM"; diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java index 613bcd2..31ee36a 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java @@ -15,7 +15,6 @@ import javax.persistence.Transient; import br.com.centralit.esi.api.enumerated.ReportEngineEnum; import br.com.centralit.esi.api.enumerated.ResourceTypeEnum; import br.com.centralit.framework.json.Views; -import br.com.centralit.framework.model.Menu; import com.fasterxml.jackson.annotation.JsonView; @@ -34,14 +33,6 @@ public class ReportVersion extends ResourceVersion { @JsonView({ Views.GenericView.class}) private ReportEngineEnum engine; - @ManyToOne(fetch=FetchType.LAZY, optional=true) - @JsonView({ Views.EsiResourceEditView.class, Views.EsiPackageExportView.class}) - private Menu menu; - - @Column(nullable = true, length=100) - @JsonView({ Views.EsiResourceEditView.class, Views.EsiPackageExportView.class}) - private String menuName; - @ManyToOne(fetch=FetchType.LAZY, optional=false) @JsonView({ Views.EsiResourceEditView.class}) protected Resource form; @@ -82,22 +73,6 @@ public class ReportVersion extends ResourceVersion { this.parameters = parameters; } - public Menu getMenu() { - return menu; - } - - public void setMenu(Menu menu) { - this.menu = menu; - } - - public String getMenuName() { - return menuName; - } - - public void setMenuName(String menuName) { - this.menuName = menuName; - } - public ReportEngineEnum getEngine() { return engine; } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/Resource.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/Resource.java index 5c03a97..d80ff6f 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/Resource.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/Resource.java @@ -1,6 +1,7 @@ package br.com.centralit.esi.api.resource.model; import java.util.Calendar; +import java.util.HashMap; import javax.persistence.Column; import javax.persistence.Entity; @@ -8,6 +9,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; +import javax.persistence.Transient; import br.com.centralit.esi.api.enumerated.ResourceTypeEnum; import br.com.centralit.framework.json.Views; @@ -44,6 +46,10 @@ public class Resource extends PersistentObject { @JsonView({ Views.GenericView.class}) protected Boolean internalResource; + @Transient + @JsonView({ Views.GenericView.class}) + private HashMap inputMap; + public Resource() { } @@ -111,5 +117,13 @@ public class Resource extends PersistentObject { public void setInternalResource(Boolean internalResource) { this.internalResource = internalResource; + } + + public HashMap getInputMap() { + return inputMap; + } + + public void setInputMap(HashMap inputMap) { + this.inputMap = inputMap; } } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ReportVersionService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ReportVersionService.java index 77e3715..c3eb886 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ReportVersionService.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ReportVersionService.java @@ -7,6 +7,6 @@ import br.com.centralit.esi.api.resource.model.Resource; public interface ReportVersionService extends ResourceVersionService { - void execute(Resource report, HashMap parameters); + byte[] execute(Resource report, HashMap parameters); } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java index 8934e69..65b331e 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java @@ -1,7 +1,6 @@ package br.com.centralit.esi.api.resource.service.impl; import java.sql.Connection; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -93,9 +92,10 @@ public class JasperReportManagerImpl extends ReportManagerImpl implements Jasper case FLOW: RuntimeEnvironmentOutput output = runtimeManager.execute(reportDataSource.getFlow().getName(), inputMap); if (output.getOutputVariables() != null) { - List> variablesMap = new ArrayList>(); - variablesMap.add(ConvertUtilsESI.environmentVariablesToMap(output.getOutputVariables())); - dataSource = new JRBeanCollectionDataSource(variablesMap); + Object value = output.getValue(reportDataSource.getOutputAttributeName()); + if (value != null) { + dataSource = new JRBeanArrayDataSource(new Object[]{value}); + } } break; diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java index 43d9d5b..30db0e2 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java @@ -74,11 +74,7 @@ public class ReportVersionServiceImpl extends ResourceVersionServiceImpl impleme if (reportVersion.getDataSource() != null) { reportVersion.getDataSource().setId(null); } - - if (reportVersion.getMenu() != null) { - reportVersion.setMenu(menuService.getReference(reportVersion.getMenu().getId())); - } - + } @Override @@ -90,8 +86,6 @@ public class ReportVersionServiceImpl extends ResourceVersionServiceImpl impleme newResourceVersion.setFileName(oldResourceVersion.getFileName()); newResourceVersion.setFileSize(oldResourceVersion.getFileSize()); - newResourceVersion.setMenu(oldResourceVersion.getMenu()); - newResourceVersion.setMenuName(oldResourceVersion.getMenuName()); newResourceVersion.setDataSource(new ReportDataSource(oldResourceVersion.getDataSource())); if (oldResourceVersion.getParameters() != null) { @@ -120,13 +114,15 @@ public class ReportVersionServiceImpl extends ResourceVersionServiceImpl impleme } @Override - public void execute(Resource report, HashMap parameters) { + public byte[] execute(Resource report, HashMap parameters) { ReportVersion reportVersion = (ReportVersion) this.findByName(report.getName()); if (reportVersion.getEngine().equals(ReportEngineEnum.JASPER)) { - jasperReportManager.execute(reportVersion, parameters); + return jasperReportManager.execute(reportVersion, parameters); }else if (reportVersion.getEngine().equals(ReportEngineEnum.PENTAHO)) { - pentahoReportManager.execute(reportVersion, parameters); + return pentahoReportManager.execute(reportVersion, parameters); + }else{ + return null; } } diff --git a/cit-esi-web/src/main/java/br/com/centralit/controller/ReportController.java b/cit-esi-web/src/main/java/br/com/centralit/controller/ReportController.java index 5a8303f..3ad9bff 100644 --- a/cit-esi-web/src/main/java/br/com/centralit/controller/ReportController.java +++ b/cit-esi-web/src/main/java/br/com/centralit/controller/ReportController.java @@ -2,17 +2,37 @@ package br.com.centralit.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import br.com.centralit.esi.api.resource.model.Resource; import br.com.centralit.esi.api.resource.service.ReportVersionService; +import br.com.centralit.framework.json.ResponseBodyWrapper; @Controller @RequestMapping("/rest/esi/resource/report") public class ReportController extends ResourceController{ + @Autowired + private ReportVersionService reportVersionService; + @Autowired public ReportController(ReportVersionService reportVersionService) { super(reportVersionService); } + + @RequestMapping(method = RequestMethod.POST, value = "/execute") + @ResponseBody + public ResponseBodyWrapper execute(@RequestBody Resource report) { + + byte[] response = reportVersionService.execute(report, report.getInputMap()); + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(response, this.getListView()); + + return responseBody; + } + } diff --git a/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java b/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java index 37e621c..62a6fe5 100644 --- a/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java +++ b/cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java @@ -771,6 +771,50 @@ public class StartupListenerEsi extends UtilStartup implements ApplicationListen parameterService.save(parameter); } + parameter = parameterService.findByName(Parameter.RESOURCE_REPORT_CONTROLLER); + if (parameter == null) { + String fileName = servletContext.getRealPath("WEB-INF/classes/templates/resource_task_controller.js"); + + parameter = new Parameter(); + parameter.setName(Parameter.RESOURCE_REPORT_CONTROLLER); + parameter.setType(this.domainService.findByKeyAndName("parameterType", "JS")); + parameter.setDescription("Template JavaScript para Controller de relatório"); + try { + parameter.setTextValue(FileUtils.readFileToString(new File(fileName), "UTF-8")); + } catch (IOException e) { + e.printStackTrace(); + throw new EsiBusinessException(e); + } + parameterService.save(parameter); + } + + parameter = parameterService.findByName(Parameter.RESOURCE_REPORT_DEPENDENCIES); + if (parameter == null) { + parameter = new Parameter(); + parameter.setName(Parameter.RESOURCE_REPORT_DEPENDENCIES); + parameter.setType(this.domainService.findByKeyAndName("parameterType", "TEXTAREA")); + parameter.setDescription("Dependências para Controller relatório"); + parameter.setTextValue("FormBuilderRepository, ReportRepository"); + parameterService.save(parameter); + } + + parameter = parameterService.findByName(Parameter.RESOURCE_REPORT_HTML); + if (parameter == null) { + String fileName = servletContext.getRealPath("WEB-INF/classes/templates/resource_task_html.html"); + + parameter = new Parameter(); + parameter.setName(Parameter.RESOURCE_REPORT_HTML); + parameter.setType(this.domainService.findByKeyAndName("parameterType", "HTML")); + parameter.setDescription("Template HTML para relatório"); + try { + parameter.setTextValue(FileUtils.readFileToString(new File(fileName), "UTF-8")); + } catch (IOException e) { + e.printStackTrace(); + throw new EsiBusinessException(e); + } + parameterService.save(parameter); + } + for (Parameter param : parameterService.findAll()) { EsiAppUtils.updateParameter(param); } @@ -1856,6 +1900,7 @@ public class StartupListenerEsi extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ESI.DADOS", "Dados", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.WORKFLOW_ESI", "Workflow/ESI", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.SENHA", "Senha", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ESI.VARIAVEL_SAIDA_FLUXO", "Variável de saída do fluxo", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.CONTEXTO_JNDI", "Contexto JNDI", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.VALOR_AUTOMATICO", "Valor atribuído pelo banco", dominio, modulo)); @@ -2120,6 +2165,8 @@ public class StartupListenerEsi extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ESI.DESTINATARIOS", "Destinatários", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.TAREFA", "Tarefa", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.ATUALIZADO", "atualizado", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ESI.DATASOURCE", "Data source", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ESI.DATAOBJECT", "Objeto de dados", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.ENUMERADO.DATASOURCE_CONEXAO", "Conexão de dados", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ESI.ENUMERADO.DATASOURCE_OBJETO_DADOS", "Objeto de dados", dominio, modulo)); diff --git a/cit-esi-web/src/main/resources/templates/resource_report_controller.js b/cit-esi-web/src/main/resources/templates/resource_report_controller.js new file mode 100644 index 0000000..5bc8412 --- /dev/null +++ b/cit-esi-web/src/main/resources/templates/resource_report_controller.js @@ -0,0 +1,100 @@ + $scope.validate = function() { + return true; + } + + $scope.beforeSubmit = function() { + + } + + $scope.onSubmit = function() { + + } + + $scope.afterSubmit = function() { + + } + + $scope.initialize = function() { + $scope.showExecuteButton = true; + $scope.removeWorkspace = true; + $scope.showHelpButton = true; + $scope.showBreadcrumb = true; + + $scope.setLoading(true); + + FormBuilderRepository.getByName("${formName}").then(function(result) { + $scope.resourceVersion = result.originalElement; + $scope.setLoading(false); + $scope.initialized = true; + $scope.resetForm(); + }); + + }; + + $scope.resetForm = function() { + $timeout(function(){ + $scope.${formName}Form.$submitted = false; + $scope.${formName}Form.$setPristine(); + }); + }; + + $scope.submit = function() { + $scope.${formName}Form.$submitted = true; + if(!$scope.${formName}Form.$valid){ + $scope.showAlert("error", $translate.instant("VALIDACAO.ALERTA_OBRIGATORIOS"), " ", false); + return; + } + + if ($scope.validate && !$scope.validate()) { + return + } + + if (!$scope.businessRule || $scope.businessRule != '') { + $scope.businessRule = $scope.resourceVersion.businessRule; + } + + if ($scope.businessRule && $scope.businessRule != '') { + $scope[$scope.businessRule] = undefined; + RuntimeManagerRepository.executeBusinessRule($scope.businessRule, $scope.businessRuleVariables).then(function(result) { + $scope[$scope.businessRule] = result.originalElement.businessRule; + if ($scope[$scope.businessRule] && $scope[$scope.businessRule].valid) { + $scope.execute(); + } + }); + }else{ + $scope.execute(); + } + + }; + + $scope.execute = function() { + $scope.setLoading(true,$translate.instant("ESI.EXECUTANDO")+" "+$scope.resourceVersion.resource.description); + + if ($scope.beforeSubmit) { + $scope.beforeSubmit(); + } + if ($scope.onSubmit) { + $scope.onSubmit(); + } + + $scope.setLoading(false); + + if ($scope.afterSubmit) { + $scope.afterSubmit(); + }else{ + $scope.showAlert("success","ESI.MSG.FORM_EXECUTADO",""); + } + + if ($scope.removeWorkspace) { + $scope.close(); + } + }; + + $scope.close = function() { + var workspace = angular.element("#${formName}Edit").scope().workspace; + if (workspace) { + angular.element("#citapp-controller").scope().removeWorkspace(workspace.id); + } + }; + + $scope.initialize(); \ No newline at end of file diff --git a/cit-esi-web/src/main/resources/templates/resource_report_html.html b/cit-esi-web/src/main/resources/templates/resource_report_html.html new file mode 100644 index 0000000..5779dc7 --- /dev/null +++ b/cit-esi-web/src/main/resources/templates/resource_report_html.html @@ -0,0 +1,30 @@ +
+
+
+
+ + +     +
+ +
+ +
+
+
+ + + +
+ +

+ ( * ) LABEL.CAMPOS_OBRIGATORIOS +

+ + + + + +
\ No newline at end of file diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js index 09c89dc..185095f 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js @@ -1,8 +1,189 @@ 'use strict'; -citApp.controller('ReportController', ["$scope", "appService", "ReportRepository", "$filter", "$translate", "DomainRepository", "$timeout", 'FileUploader', "$http", "$modal", - function ReportController($scope, appService, ReportRepository, $filter, $translate, DomainRepository, $timeout, FileUploader, $http, $modal) { +citApp.controller('ReportController', ["$scope", "appService", "ReportRepository", "FlowRepository", "FormWidgetRepository", "ParameterRepository", "MenuRepository", "FormBuilderRepository", "DataSourceRepository", "DataObjectRepository", "$filter", "$translate", "DomainRepository", "$timeout", 'FileUploader', "$http", "$rootScope", "$modal", + function ReportController($scope, appService, ReportRepository, FlowRepository, FormWidgetRepository, ParameterRepository, MenuRepository, FormBuilderRepository, DataSourceRepository, DataObjectRepository, $filter, $translate, DomainRepository, $timeout, FileUploader, $http, $rootScope, $modal) { + var componentsPage = '/cit-esi-web/assets/js/angular/custom/directive/html/formComponents.html'; + $scope.appController = angular.element("#citapp-controller").scope(); + + $scope.colors = ['yellow','yellow-dark','dark','black','white','red','blue','green','orange','purple','pink','brown','grey']; + $scope.iconList = FormContainerHelper.iconList; + + $scope.widgets = []; + FormWidgetRepository.getList().then(function(result) { + angular.forEach(result, function(widget){ + FormWidgetRepository.get(widget.id).then(function(result) { + $scope.widgets.push(result.originalElement); + }); + }); + }); + + ParameterRepository.getByName("RESOURCE_REPORT_HTML").then(function(result) { + $scope.RESOURCE_REPORT_HTML = result.originalElement.textValue; + }); + ParameterRepository.getByName("RESOURCE_REPORT_CONTROLLER").then(function(result) { + $scope.RESOURCE_REPORT_CONTROLLER = result.originalElement.textValue; + }); + ParameterRepository.getByName("RESOURCE_REPORT_DEPENDENCIES").then(function(result) { + $scope.RESOURCE_REPORT_DEPENDENCIES = result.originalElement.textValue; + }); + + DomainRepository.getEnumeratedDomain('ReportEngineEnum').then(function(result) { + $scope.reportEngineList = result; + }); + + DomainRepository.getEnumeratedDomain('ReportDataSourceEnum').then(function(result) { + $scope.reportDataSourceList = result; + }); + + DomainRepository.getEnumeratedDomain('ExpressionTypeEnum').then(function(result) { + $scope.expressionTypeList = []; + for (var i = 0; i < result.length; i++) { + if (result[i].chave.indexOf('VARIABLE') < 0) + $scope.expressionTypeList.push(result[i]); + } + }); + + $scope.menus = []; + MenuRepository.getAllMenusAtivos().then(function(result) { + angular.forEach(result, function (menu) { + if (menu.originalElement.submenu) { + angular.forEach(menu.originalElement.submenu, function (subMenu) { + var nome = menu.nome + ' -> ' + subMenu.nome; + $scope.menus.push({id: subMenu.id, nome: nome, nomeSubmenu: subMenu.nome, originalElement: {id: subMenu.id, nome: nome, nomeSubmenu: subMenu.nome}}); + }); + } + }); + }); + + $scope.createFormVersion = function() { + var formVersion = {resource: {type: "FORM"}, className: "FormVersion", majorVersion: 1, minorVersion: 0, previewJS: "", files:[], tabs: []}; + formVersion.defaultPage = { pageCode : $scope.RESOURCE_REPORT_HTML + ,controllerCode : $scope.RESOURCE_REPORT_CONTROLLER + ,dependencies: $scope.RESOURCE_REPORT_DEPENDENCIES ? $scope.RESOURCE_REPORT_DEPENDENCIES.split(',') : [] }; + + return formVersion; + }; + + $scope.findDataSource = function(value) { + var dataSourceVH = { + nome : value + }; + return DataSourceRepository.findDataSource(dataSourceVH).then(function(result) { + return result; + }); + }; + + $scope.clearDataSourceAutoComplete = function() { + $scope.report.dataSource.connection = null; + }; + + $scope.setDataSource = function (item) { + if(item && item.id) { + $scope.report.dataSource.connection = item; + } + }; + + $scope.findDataObject = function(value) { + var dataObjectVH = { + nome : value + }; + return DataObjectRepository.findDataObject(dataObjectVH).then(function(result) { + return result; + }); + }; + + $scope.clearDataObjectAutoComplete = function() { + $scope.report.dataSource.dataObject = null; + }; + + $scope.setDataObject = function (item) { + if(item && item.id) { + $scope.report.dataSource.dataObject = item; + } + }; + + $scope.findFlow = function(value) { + var flowVH = { + nome : value + }; + return FlowRepository.findFlow(flowVH).then(function(result) { + var flows = []; + if (result && result.length > 0) { + for (var i = 0; i < result.length; i++) { + var flow = result[i].originalElement; + if (flow.flowApplication == 'SERVICE_INTEGRATION') { + flows.push(result[i]); + } + } + } + return flows; + }); + }; + + $scope.clearFlowAutoComplete = function() { + $scope.report.dataSource.flow = null; + }; + + $scope.setFlow = function (item) { + if(item && item.id) { + $scope.report.dataSource.flow = item; + } + }; + + $scope.showComponents = function(){ + if (!$scope.canShowComponents()) { + return ; + } + + $rootScope.formVersion = $scope.report.formVersion; + $rootScope.widgets = $scope.widgets; + $rootScope.formBuilderControllerScope = $scope; + $scope.appController.addNewWorkspace($translate.instant("ESI.DESENHO_TELA"), componentsPage, true, 'mod-red-dark', $scope.report.formVersion); + }; + + $scope.canShowComponents = function() { + return $scope.edit && !appService.existsWorkspace(componentsPage); + }; + + $scope.removeComponentWorkspace = function () { + var element = angular.element("#formBuilderComponents"); + if (element && element.scope()) { + var workspace = element.scope().workspace; + if (workspace) { + $scope.appController.removeWorkspace(workspace.id); + } + } + }; + + $scope.findMenu = function(value) { + var result = []; + for (var i = 0; i < $scope.menus.length; i++) { + var menu = $scope.menus[i]; + if (menu.nome.toUpperCase().indexOf(value.toUpperCase()) >= 0) { + result.push(menu); + } + } + + return result; + }; + + $scope.limparAutoCompleteMenu = function() { + $scope.report.formVersion.menu = null; + }; + + $scope.setFormAttributes = function () { + if (!$scope.report.formVersion.menuName || $scope.report.formVersion.menuName == '') { + $scope.report.formVersion.menuName = $scope.report.description; + } + if (!$scope.report.formVersion.resource.description || $scope.report.formVersion.resource.description == '') { + $scope.report.formVersion.resource.description = $scope.report.resource.description; + } + if (!$scope.report.formVersion.resource.name || $scope.report.formVersion.resource.name == '') { + $scope.report.formVersion.resource.name = $scope.report.resource.name; + } + }; + var className = "ReportVersion"; $scope.report = {}; $scope.newReport = true; @@ -14,11 +195,14 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository $timeout(function(){ $scope.reportForm.$submitted = false; $scope.reportForm.$setPristine(); + $scope.showComponents(); + $scope.appController.activeWorkspace($scope.workspace); }); }; // Atualiza pagina de pesquisa $scope.atualizaPaginaPesquisa = function () { + $scope.removeComponentWorkspace(); angular.element('#searchReport').scope().fetchResult(); }; @@ -80,7 +264,8 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository // Limpa o formulario preenchido $scope.limparReport = function(){ - $scope.report = {resource: {type: "REPORT"}, className: className, majorVersion: 1, minorVersion: 0}; + $scope.report = {resource: {type: "REPORT"}, className: className, majorVersion: 1, minorVersion: 0 + , formVersion: $scope.createFormVersion(), dataSource: {}, parameters: []}; $scope.uploader.clearQueue(); }; @@ -93,6 +278,32 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository $scope.uploader.addToQueue("/cit-esi-web/reports/"+$scope.report.path+"/"+$scope.report.fileName); + $scope.report.formVersion = $scope.createFormVersion(); + if ($scope.report.form) { + FormBuilderRepository.getByName($scope.report.form.name).then(function(result) { + if (result.originalElement && result.originalElement.id) { + $scope.report.formVersion = result.originalElement; + $scope.report.formVersion.className = "FormVersion"; + if (!$scope.report.formVersion.tabs) { + $scope.report.formVersion.tabs = []; + } + if ($scope.report.formVersion.menu) { + angular.forEach($scope.menus, function (menu) { + if (menu.id == $scope.report.formVersion.menu.id) { + $scope.report.formVersion.menu.nome = menu.nome; + } + }); + } + if (!$scope.report.formVersion.defaultPage || !$scope.report.formVersion.defaultPage.controllerCode) { + $scope.report.formVersion.defaultPage = { pageCode : $scope.RESOURCE_REPORT_HTML + ,controllerCode : $scope.RESOURCE_REPORT_CONTROLLER + ,dependencies: $scope.RESOURCE_REPORT_DEPENDENCIES ? $scope.RESOURCE_REPORT_DEPENDENCIES.split(',') : [] }; + } + + } + }); + } + $scope.edit = edit; $scope.newReport = false; diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/repository/ReportRepository.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/repository/ReportRepository.js index 9dcf734..f6f8d8d 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/repository/ReportRepository.js +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/repository/ReportRepository.js @@ -9,6 +9,9 @@ citApp.factory('ReportRepository', ['RestangularEsi', 'AbstractRepository', '$tr this.getAllVersions = function (params) { return this.restangular.all(this.route + '/getAllVersions').post(params); }, + this.execute = function (report) { + return this.restangular.all(this.route + '/execute').post(report); + }, this.replace = function (resource) { return this.restangular.all(this.route + '/replace').post(resource); }, diff --git a/cit-esi-web/src/main/webapp/html/report/reportEdit.html b/cit-esi-web/src/main/webapp/html/report/reportEdit.html index ded1d9d..4e7b7bf 100644 --- a/cit-esi-web/src/main/webapp/html/report/reportEdit.html +++ b/cit-esi-web/src/main/webapp/html/report/reportEdit.html @@ -59,61 +59,241 @@ ( * ) LABEL.CAMPOS_OBRIGATORIOS

-
- - ESI.RELATORIO - -
-
- -
- -
- + + +  ESI.RELATORIO +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+
+ +
+ ESI.CONTEUDO +
+
+
+
+
+ MSG.ARRASTE_SOLTE_ARQUIVO + {{uploader.queue[0].file.name}} +
+
+ +
+
+
+
+ +
+
+
+
+
+ + +  ESI.DATASOURCE +
+
+
-
-
-
- -
+
+ + +
+ +
+ + +
-
+
+ + +
+ +
+ + +
+ +
+ +
+
+ + +
+
+ +
+
+ +
+
- - + +
-
-
-
- -
- ESI.CONTEUDO + + + +
+
+ +
+
+ + + + +  ESI.PARAMETROS +
+
+
+ + +  ESI.CONSTRUCAO_FORM +
+
+ +
+ +
+
+
+ +
+
+
+ +
+ +
+
+
-
-
-
-
- MSG.ARRASTE_SOLTE_ARQUIVO - {{uploader.queue[0].file.name}} +
+ + +
+ +
+ +
+
+ +
+
+ + +  ESI.INTERFACE_USUARIO.HTML +
+
+
+
-
- -
-
-
-
- -
-
-
-
+ + +  Controller +
+
+
+
+
+
+ +  ESI.INTERFACE_USUARIO.DEPENDENCIAS +
+
+ + +
+
+
+ + + + + +