Like a Bucle in MasterDetail components

Community Driven Extensions Project
Post Reply
Holistor
Posts: 1
Joined: 09 May 2013, 16:45

01 Aug 2014, 19:07

Hi People,

I'm using the component MasterDetail of the Primefaces Extensions (version 0.7.1) and I have problems...

The problem occurs when I work with a pop-up with a masterdetail for a period prolong of time (20 or 30 minutes). After this time the application look like dead, and don't respond to the invocation of process on the server. I note that the CPU keep executing operation, like it were in a bucle. In all this time I performed operations changing the levels in the masterdetail. I probe this acctions in a pop-up without masterdetail but the application works well.

This the code of the pop-up:

Code: Select all

<p:dialog id="dialogCircuAdjuntos" 
			  widgetVar="dlgCircuAdjuntos" showEffect="clip" hideEffect="clip" 
			  onShow="adjuntosDtb.onRowClick = onRowClickCustom;"
			  onHide="hayCambiosAdjuntosCirc=false" 
			  header="Circularizacion - Adjuntos" resizable="false"
			  dynamic="true" modal="true">
		<h:form id="formAltaCircuAdjuntos" enctype="multipart/form-data" >
			<p:growl id="messagesCircuAdjuntos" showDetail="true" life="#{circularizaciones.lifeGrowl}" />
			<p:remoteCommand name="updateTableAdjuntos" update="adjuntosDtb"></p:remoteCommand>
			<pe:masterDetail id="masterDetail" style="width:800px;"
							 showAllBreadcrumbItems="false">
				<pe:masterDetailLevel level="1" levelLabel="Inicio">
				<h:panelGrid columns="4" id="pnlCabeceraCircularizacion">
					<h:outputLabel for="txtTipoCircularizacion" value="Tipo de #{circularizaciones.labelCircularizacion}" />
					<p:inputText id="txtTipoCircularizacion" disabled="true"
								 size="50"
								 value="#{circularizaciones.current.tipoLabel}"/>
					<h:outputLabel for="txtEntidadPersona" value="Entidad/Persona" />
					<p:inputText id="txtEntidadPersona" disabled="true"
								 size="50"
								 value="#{circularizaciones.current.entidad}"/>
					<h:outputLabel for="txtCircuNro" value="#{circularizaciones.labelCircularizacion} Nro." />
					<p:inputText id="txtCircuNro"  disabled="true"
								 value="#{circularizaciones.current.numero}"/>
				</h:panelGrid>
				<p:panel header="Adjuntos">
				<p:contextMenu for="adjuntosDtb" model="#{circularizaciones.modelDataTableAdjuntos}" /> 
				<p:dataTable id="adjuntosDtb" var="adjunto" 
					value="#{circularizaciones.adjuntos}"
					emptyMessage="#{circularizaciones.sinDatosMessage}"
					widgetVar="adjuntosDtb" paginator="true" rows="#{circularizaciones.rows}"
					paginatorTemplate="#{circularizaciones.paginatorTemplate}"
					rowKey="#{adjunto.id}" selectionMode="single" selection="#{circularizaciones.adjuntoSelected}"
					filteredValue="#{circularizaciones.adjuntosFiltered}" >
					<p:ajax event="sort" listener="#{circularizaciones.cleanFilteredAdjuntos()}" 
            				oncomplete="adjuntosDtb.filter()"></p:ajax>
<!--              		<p:ajax event="filter" onstart="controlFoco=jQuery('#dialogCircuAdjuntos').find('.ui-state-focus');" -->
<!--              				oncomplete="if (!focusCustomAuditoria(controlFoco)) {PrimeFaces.focus('dialogCircuAdjuntos');controlFoco=''}"></p:ajax>  -->
					<p:focus context="adjuntosDtb" />

					<p:column headerText="Nombre de Archivo"
						style="#{circularizaciones.styleColumn40}" 
						sortBy="#{adjunto.nombreArchivo.toUpperCase()}"
						filterBy="#{adjunto.nombreArchivo}" filterMatchMode="contains">
						<h:outputText value="#{adjunto.nombreArchivo}"
									  title="#{adjunto.nombreArchivo}"
									  converter="#{circularizaciones.converter40}" />
					</p:column>
					<p:column headerText="Archivo" 
                          	  sortBy="#{adjunto.archivo.toUpperCase()}"
                          	  filterBy="#{adjunto.archivo}" filterMatchMode="contains">
                    	<componentes:fileDownload entity="#{adjunto}" backBean="#{circularizaciones}" 
                    							  id="downloadArchivo"
                    							  converter="#{circularizaciones.converter40}" />
                	</p:column>
					<p:column headerText="Observaciones"
						style="#{circularizaciones.styleColumn40}"
						sortBy="#{adjunto.observacion.toUpperCase()}"
						filterBy="#{adjunto.observacion}" filterMatchMode="contains">
						<h:outputText value="#{adjunto.observacion}"
									  title="#{adjunto.observacion}"
									  converter="#{circularizaciones.converter40}" />
					</p:column>
					<p:column headerText="Fecha y Hora"
						style="#{circularizaciones.styleColumn20}"
						sortBy="#{adjunto.fechaHoraModificacion}" filterBy="#{adjunto.fechaHoraModificacion}"
						filterMatchMode="contains">
						<h:outputText value="#{circularizaciones.getFechaHoraString(adjunto.fechaHoraModificacion)}">
 		               </h:outputText>
					</p:column>
					<p:column headerText="Auditor"
							  style="#{circularizaciones.styleColumn20}"
							  sortBy="#{adjunto.operadorAlta.nombreApellido.toUpperCase()}" 
							  filterBy="#{adjunto.operadorAlta.nombreApellido}"
							  filterMatchMode="contains">
						<h:outputText value="#{adjunto.operadorAlta.nombreApellido}"
									  title="#{adjunto.operadorAlta.nombreApellido}"
									  converter="#{circularizaciones.converter20}" />
					</p:column>
					<p:column style="width: 110px"
						headerText="#{circularizaciones.getAccionesMensaje()}">
						<p:outputPanel>
							<p:commandButton title="Editar" id="btnEditarAdjunto"
											 icon="ui-icon-pencil" process="@this"							
											 action="#{circularizaciones.editarAdjunto(adjunto)}">
								<pe:selectDetailLevel level="2" preserveInputs="@all"/>
							</p:commandButton>
						</p:outputPanel>
						<p:commandButton title="Eliminar" ajax="true" icon="ui-icon-close" 
										 oncomplete="confirmDialogCircuAdjunto.show()" process="@this"
										 actionListener="#{circularizaciones.toDeleteAdjunto(adjunto)}"
										 disabled="#{legajos.onlyRead or legajos.legajo.cerradoCircularizacion}">
						</p:commandButton>
					</p:column>
				</p:dataTable>
				<h:panelGrid columns="3">
				<p:commandButton title="Agregar"
								 value="Agregar" id="btnAgregarCircuAdjunto"
								 style="#{circularizaciones.styleButtons}" process="@this"
								 actionListener="#{circularizaciones.agregarAdjunto}" ajax="true"
								 immediate="true" disabled="#{legajos.onlyRead or legajos.legajo.cerradoCircularizacion}">
					<pe:selectDetailLevel level="2"/>
				</p:commandButton>
 				<p:commandButton title="Actualizar" id="btnActualizarCircuAdjunto" 
                                     style="#{circularizaciones.styleButtons}"
                                     actionListener="#{circularizaciones.refreshAdjuntos()}"
                                     ajax="true" oncomplete="updateTableAdjuntos();adjuntosDtb.filter()" 
                                     value="Actualizar">
                 </p:commandButton>
                 </h:panelGrid>
                 </p:panel>
                 <table style="width:100%">
	                    <tr>
	                        <td style="width:100%"></td>
	                        <td>
								<p:commandButton title="Cancelar" ajax="true" value="Cancelar"
												 type="button" onclick="dlgCircuAdjuntos.hide();"
								 				 style="#{circularizaciones.styleButtons}">
								</p:commandButton>
							</td>
						</tr>
				</table>
				<p:confirmDialog id="confirmDialogCircuAdjunto"
								 message="#{circularizaciones.confirmDelete}" header="Eliminar"
								 severity="alert" widgetVar="confirmDialogCircuAdjunto" appendToBody="true">
					<p:commandButton id="confirmDeleteCircuAdjunto" value="Confirmar"
									 ajax="true" process="@this"
									 oncomplete="updateTableAdjuntos();adjuntosDtb.filter();confirmDialogCircuAdjunto.hide();"
									 actionListener="#{circularizaciones.eliminarAdjunto(circularizaciones.adjuntoTemp)}"
									 style="#{circularizaciones.styleButtons}">
					</p:commandButton>
					<p:commandButton id="decline" value="Cancelar"
									 onclick="confirmDialogCircuAdjunto.hide()" 
									 type="button" style="#{circularizaciones.styleButtons}" />
				</p:confirmDialog>
				<script type="text/javascript">
					jQuery('#formAltaCircuAdjuntos\\:confirmDialogCircuAdjunto').eq(1).remove();
				</script>
				</pe:masterDetailLevel> 
				<pe:masterDetailLevel level="2" contextVar="a"
					levelLabel="#{circularizaciones.getTituloAdjuntoAltaEdicionByModule(circularizaciones.moduleName)}">
				<p:messages id="#{circularizaciones.idControlErrorAdjunto}" globalOnly="true" severity="error"></p:messages>
				<p:focus for="txtNombre" rendered="#{not legajos.onlyRead and not legajos.legajo.cerradoCircularizacion}"></p:focus>
				<p:panel header="#{circularizaciones.getTituloAdjuntoAltaEdicionByModule(circularizaciones.moduleName)}">
				<pe:blockUI target="pnlCircuAdjunto" widgetVar="dlgCircuAdjuntosBlock" style="padding:;">
            		<h:outputLabel value="" />
            	</pe:blockUI> 
				<h:panelGrid columns="3" id="pnlCircuAdjunto">
					<h:outputLabel for="txtTipoCircularizacion2" 
								   value="Tipo de #{circularizaciones.labelCircularizacion}" />
					<p:inputText id="txtTipoCircularizacion2" disabled="true"
								 size="75" maxlength="50"
								 value="#{circularizaciones.current.tipoLabel}"/>
					<p:message id="msgTipoCircularizacion2" for="txtTipoCircularizacion2"/>
					<h:outputLabel for="txtEntidadPersona2" value="Entidad / Persona" />
					<p:inputText id="txtEntidadPersona2"  disabled="true"
								 size="75" maxlength="50"
								 value="#{circularizaciones.adjuntoTemp.circularizacion.entidad}"/>
					<p:message id="msgEntidadPersona2" for="txtEntidadPersona2"/>
					<h:outputLabel for="txtCircuNro2" value="#{circularizaciones.labelCircularizacion} Nro." />
					<p:inputText id="txtCircuNro2"  disabled="true"
								 value="#{circularizaciones.adjuntoTemp.circularizacion.numero}"/>
					<p:message id="msgCircuNro2" for="txtCircuNro2"/>

					<h:outputLabel for="txtNombre" value="Nombre Archivo *" />
					<p:inputText id="txtNombre"
						value="#{circularizaciones.adjuntoTemp.nombreArchivo}"
						maxlength="50" size="75"
						required="true" onchange="hayCambiosAdjuntosCirc=true"
						requiredMessage="Debe ingresar Nombre de Archivo." />
					<p:message id="msgNombre" for="txtNombre" />
				
					<h:outputLabel for="txtArchivo" value="Archivo *" />
					<h:panelGroup>
					<p:fileUpload id="txtArchivo" value="#{circularizaciones.adjuntoTemp.file}" 
    					  sizeLimit="#{circularizaciones.sizeLimit}"
                          mode="advanced" auto="true" label="Seleccionar" 
                          required="true" requiredMessage="#{circularizaciones.archivoRequerido}"
                          fileUploadListener="#{circularizaciones.upload}"
                          update="txtArchivoNombre" oncomplete="hayCambiosAdjuntosCirc=true"/>
           			<p:inputText id="txtArchivoNombre" size="75" disabled="true" 
           						 value="#{circularizaciones.adjuntoTemp.nombreArchivoUpdate}"/>
           			</h:panelGroup>
					<p:message id="msgArchivo" for="txtArchivoNombre" />
				
					<h:outputLabel for="txtAdjuntoObservacion" value="Observaciones *" />
					<p:inputTextarea id="txtAdjuntoObservacion"
									 onchange="hayCambiosAdjuntosCirc=true"
									 maxlength="200" cols="34" rows="3"
									 value="#{circularizaciones.adjuntoTemp.observacion}" 
						 			 required="true" requiredMessage="Debe ingresar Observaciones."/>
					<p:message id="msgObs" for="txtAdjuntoObservacion" />
				</h:panelGrid>
				<p:commandButton id="btnGuardarCircuAdjunto" style="width:100px" value="Guardar"
								 action="#{circularizaciones.guardarAdjunto}"
						 		 ajax="true" update="pnlCircuAdjunto" 
						 		 process="txtAdjuntoObservacion,txtNombre,@this"
						 		 disabled="#{legajos.onlyRead or legajos.legajo.cerradoCircularizacion}"
								 oncomplete="if (args) {if (args.guardarSuccess) {hayCambiosAdjuntosCirc=false;}}" >
					<pe:selectDetailLevel step="-1"/>
				</p:commandButton>
				<p:commandButton id="btnCancelarCirc" style="width:100px" process="@this"
								 oncomplete="adjuntosDtb.filter()"
								 onclick="if (cambiosAdjuntosCirc()) {confirmCancelarCircuAdjuntos.show();return false}"
								 value="Cancelar" title="Cancelar">
						<pe:selectDetailLevel level="1"/>
				</p:commandButton>
				</p:panel>
				<table style="width:100%">
	                    <tr>
	                        <td style="width:100%"></td>
	                        <td>
								<p:commandButton title="Cerrar" ajax="true" value="Cerrar"
												 type="button" onclick="if (cambiosAdjuntosCirc()) {confirmCerrarCircuAdjuntos.show();} else {dlgCircuAdjuntos.hide();}"
								 				 style="#{circularizaciones.styleButtons}">
								</p:commandButton>
							</td>
						</tr>
				</table>
				<h:panelGroup rendered="#{legajos.onlyRead or legajos.legajo.cerradoCircularizacion}">
					<script type="text/javascript">
						dlgCircuAdjuntosBlock.block();
						document.getElementById('formAltaCircuAdjuntos:btnCancelarCirc').focus();
					</script>
				</h:panelGroup>
				<componentes:confirmCancelarInMasterDetail backBean="#{circularizaciones}"
										 id="confirmCancelarCircuAdjuntos"
		        		 			 	 onstart="hayCambiosAdjuntosCirc=false;adjuntosDtb.filter()"
		        		 			 	 widgetVar="confirmCancelarCircuAdjuntos"
		        						 idBtnConfirm="btnConfirmCancelarCircuAdjuntos"
		        						 idBtnDecline="btnDeclineCancelarCircuAdjuntos">
				</componentes:confirmCancelarInMasterDetail>
				<script type="text/javascript">
					jQuery('#formAltaCircuAdjuntos\\:confirmCancelarCircuAdjuntos\\:confirmCancelarCircuAdjuntos').eq(1).remove();
				</script>
			</pe:masterDetailLevel>
			</pe:masterDetail>
		</h:form>
		<componentes:confirmCancelar backBean="#{circularizaciones}"
								 id="confirmCerrarCircuAdjuntos"
        		 			 	 dlgAlta="dlgCircuAdjuntos"
        		 			 	 widgetVar="confirmCerrarCircuAdjuntos"
        						 idBtnConfirm="btnConfirmCerrarCircuAdjuntos"
        						 idBtnDecline="btnDeclineCerrarCircuAdjuntos">
		</componentes:confirmCancelar>
	</p:dialog>

User avatar
Oleg
Expert Member
Posts: 3805
Joined: 02 Oct 2009, 09:41
Location: Germany, Black Forest

02 Aug 2014, 08:09

I don't think your problem has something to do with the MasterDetail. Maybe you have JS errors (check Firebug / Chrome console). I also suggest to use the latest JSF, PrimeFaces und Extensions libs. The latest PF Extensions is 2.0.0. Your version 0.7.0 is very old.
PrimeFaces Cookbook (2. edition): http://ova2.github.io/primefaces-cookbook/ Learning Angular UI Development with PrimeNG: https://github.com/ova2/angular-develop ... th-primeng Blog: https://medium.com/@OlegVaraksin

Post Reply

Return to “Extensions”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 9 guests