Implementación de registro de usuarios para pacientes, medicos de
familia y medicos especialistas. * Correcciones varias a clases JPA. * Correcciones en clases POJO. * Listas desplegables para selección de especialidaes y CAPs. * Validaciones varias. * Estilo de interfaz con flexUI de PrimeFaces.
This commit is contained in:
@@ -88,7 +88,7 @@
|
||||
|
||||
<f:facet name="footer">
|
||||
<p:commandButton value="Login" update="messages" icon="pi pi-user" action="#{loginView.login}" oncomplete="handleLoginRequest(xhr, status, args)" />
|
||||
<i class="pi pi-spin pi-spinner" style="font-size: 3em"></i>
|
||||
<i class="pi pi-spin pi-spinner hide" style="font-size: 3em"></i>
|
||||
</f:facet>
|
||||
</h:panelGrid>
|
||||
</p:dialog>
|
||||
|
||||
@@ -9,85 +9,143 @@
|
||||
<h:outputScript>
|
||||
function handleRequest(xhr, status, args) {
|
||||
if(args.specs) {
|
||||
PF('panCentros').hide();
|
||||
$('#panCentros').fadeOut();
|
||||
PF('panEspecialidad').show()
|
||||
$('#panEspecialidad').fadeIn();
|
||||
$('#panCentros').slideUp();
|
||||
$('#panEspecialidades').slideDown();
|
||||
}
|
||||
else if (args.caps) {
|
||||
PF('panEspecialidad').hide();
|
||||
$('#panEspecialidad').fadeOut();
|
||||
PF('panCentros').show()
|
||||
$('#panCentros').fadeIn();
|
||||
$('#panEspecialidades').slideUp();
|
||||
$('#panCentros').slideDown();
|
||||
} else {
|
||||
$('#panCentros').slideUp();
|
||||
$('#panEspecialidades').slideUp();
|
||||
}
|
||||
}
|
||||
</h:outputScript>
|
||||
<h:form>
|
||||
<h:form id="frmRegisterUser">
|
||||
<p:messages id="mesgs" showDetail="true" closable="true" autoupdate="true" />
|
||||
|
||||
<p:panel id="tipoUsuario" header="Especifique el tipo de usuario que desea registrarse">
|
||||
<h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">
|
||||
<p:selectOneButton id="selUsertype" value="#{registerUser.userType}" required="true" requiredMessage="Debe especificar un tipo de usuario">
|
||||
<f:selectItems value="#{registerUser.userTypes}" />
|
||||
<p:ajax listener="#{registerUser.onUserTypeChange}" update="medicalSpecialty" oncomplete="handleRequest(xhr, status, args)" />
|
||||
</p:selectOneButton>
|
||||
</h:panelGrid>
|
||||
<div class="ui-g ui-fluid">
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="Tipo de usuario:" for="selUsertype" />
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:selectOneButton id="selUsertype" value="#{registerUser.userType}" required="true" unselectable="false" requiredMessage="Debe especificar un tipo de usuario">
|
||||
<f:selectItems value="#{registerUser.userTypes}" var="item" itemLabel="#{item.userTypename}" itemValue="#{item.name}" />
|
||||
<p:ajax listener="#{registerUser.onUserTypeChange}" update="selMS,selPHC" oncomplete="handleRequest(xhr, status, args)" />
|
||||
</p:selectOneButton>
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4"></div>
|
||||
</div>
|
||||
</p:panel>
|
||||
<p:panel id="RegisterUser" header="Datos personales para el usuario">
|
||||
<div class="ui-fluid">
|
||||
<h:panelGrid columns="3" layout="grid" columnClasses="p-col-12 p-md-3 p-xl-2, p-col-12 p-md-9 p-xl-4, p-col-12 p-md-3 p-xl-2, p-col-12 p-md-9 p-xl-4"
|
||||
contentStyleClass="ui-fluid">
|
||||
<p:panel id="DatosPersonales" header="Especifique el tipo de usuario que desea registrarse">
|
||||
<div class="ui-g ui-fluid">
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="NIF:" for="nif" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4">
|
||||
<p:inputText id="nif" value="#{registerUser.nif}" required="true" requiredMessage="Por favor, indque su NIF" />
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:message for="nif" display="text" />
|
||||
</div>
|
||||
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="Nombre:" for="name" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4">
|
||||
<p:inputText id="name" value="#{registerUser.name}" required="true" requiredMessage="Por favor, indique su nombre" />
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:message for="name" />
|
||||
</div>
|
||||
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="Apellidos:" for="surname" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4">
|
||||
<p:inputText id="surname" value="#{registerUser.surname}" required="true" requiredMessage="Por favor, indique sus apellidos" />
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:message for="surname" />
|
||||
</div>
|
||||
|
||||
<p:outputLabel value="Especialidad médica:" for="medicalSpecialty" />
|
||||
<p:selectOneMenu id="medicalSpecialty" value="#{registerUser.medicalSpecialty}" style="width:350px">
|
||||
<f:selectItem itemLabel="Seleccione una especialidad médica..." itemValue="" noSelectionOption="true" />
|
||||
<f:selectItems value="#{registerUser.medicalSpecialties}" var="c.TO" itemDescription="#{c.description}" itemValue="#{c.name}" />
|
||||
</p:selectOneMenu>
|
||||
|
||||
|
||||
<p:message for="medicalSpecialty" />
|
||||
<p:outputLabel value="Centro:" for="primaryHealthCareCenter" />
|
||||
<p:selectOneMenu id="primaryHealthCareCenter" value="#{registerUser.medicalSpecialty}" style="width:350px">
|
||||
<f:selectItem itemLabel="Seleccione un centro de antención primario..." itemValue="" noSelectionOption="true" />
|
||||
<f:selectItems value="#{registerUser.medicalSpecialties}" var="c" itemDescription="#{c.description}" itemValue="#{c.name}" />
|
||||
</p:selectOneMenu>
|
||||
<p:message for="primaryHealthCareCenter" />
|
||||
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="Correo electrónico:" for="email" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4">
|
||||
<p:inputText id="email" value="#{registerUser.email}" required="true" requiredMessage="Por favor, especifique su correo electrónico" />
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:message for="email" />
|
||||
|
||||
</div>
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="Contraseña" for="password" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4">
|
||||
<p:password id="password" value="#{registerUser.password}" match="passwordRepeat" required="true" requiredMessage="Por favor, especifique una contraseña" maxlength="50"
|
||||
feedback="true" promptLabel="Especifique una contraseña segura" weakLabel="La contraseña es débil" goodLabel="La contraseña es buena" strongLabel="La contraseña es segura"
|
||||
validatorMessage="La contraseña y su verificación deben ser iguales" />
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:message for="password" />
|
||||
|
||||
</div>
|
||||
<div class="ui-g-2">
|
||||
<p:outputLabel value="Verificación de contraseña:" for="passwordRepeat" />
|
||||
</div>
|
||||
<div class="ui-g-4">
|
||||
<p:password id="passwordRepeat" value="#{registerUser.password}" required="true" requiredMessage="Por favor, escriba la verificación de su contraseña" maxlength="50" />
|
||||
</div>
|
||||
<div class="ui-g-6">
|
||||
<p:message for="passwordRepeat" />
|
||||
</div>
|
||||
|
||||
<div id="panCentros" class="ui-g-12 ui-g-nopad hide">
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="Centro:" for="selPHC" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4">
|
||||
<p:selectOneMenu id="selPHC" value="#{registerUser.primaryHealthCareCenter}" converter="omnifaces.SelectItemsConverter" required="#{registerUser.familyDoctor}" requiredMessage="Por favor, selecciona un centro de antención primaria">
|
||||
<f:selectItem itemLabel="Seleccione un centro de antención primario..." itemValue="" noSelectionOption="true" />
|
||||
<f:selectItems value="#{registerUser.phcList}" var="phc" itemLabel="#{phc.location}" itemValue="#{phc}" />
|
||||
<p:column>#{phc.name}</p:column>
|
||||
<p:column>#{phc.location}</p:column>
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:message for="selPHC" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="panEspecialidades" class="ui-g-12 ui-g-nopad hide">
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:outputLabel value="Especialidad médica:" for="selMS" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4">
|
||||
<p:selectOneMenu id="selMS" value="#{registerUser.medicalSpecialty}" converter="omnifaces.SelectItemsConverter" required="#{registerUser.specialistDoctor}" requiredMessage="Por favor, seleccione una especialidad médica" >
|
||||
<f:selectItem itemLabel="Seleccione una especialidad médica..." itemValue="" noSelectionOption="true" />
|
||||
<f:selectItems value="#{registerUser.medicalSpecialtiesList}" var="ms" itemLabel="#{ms.description}" itemValue="#{ms}" />
|
||||
<p:column>#{ms.name}</p:column>
|
||||
<p:column>#{ms.description}</p:column>
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
<div class="ui-g-6 ui-md-6">
|
||||
<p:message for="selMS" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</h:panelGrid>
|
||||
<h:panelGrid columns="3" layout="grid" columnClasses="p-col-12 p-md-3 p-xl-2, p-col-12 p-md-9 p-xl-4, p-col-12 p-md-3 p-xl-2, p-col-12 p-md-9 p-xl-4">
|
||||
<p:commandButton type="button" validateClient="true" value="Registrarse" update="mesgs" action="#{registerUser.addNewUser}" icon="pi pi-check" />
|
||||
<p:commandButton type="button" value="Volver" outcome="home" />
|
||||
|
||||
</h:panelGrid>
|
||||
|
||||
<div class="ui-g-12 ui-g-nopad">
|
||||
<div class="ui-g-4 ui-md-4"></div>
|
||||
<div class="ui-g-2 ui-md-2 ">
|
||||
<p:commandButton validateClient="true" value="Registrarse" update="mesgs" action="#{registerUser.addNewUser}" icon="pi pi-check" />
|
||||
</div>
|
||||
<div class="ui-g-2 ui-md-2">
|
||||
<p:commandButton type="button" value="Volver" outcome="home" icon="pi pi-home" />
|
||||
</div>
|
||||
<div class="ui-g-4 ui-md-4"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</p:panel>
|
||||
</h:form>
|
||||
</ui:define>
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
BODY{
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.hide {
|
||||
display: none;
|
||||
}
|
||||
Reference in New Issue
Block a user