From 745c5ee8eca90fa8df18cc93cb2c00e4a5850ad9 Mon Sep 17 00:00:00 2001 From: "Barbara B. Frosik" <bfrosik@aps.anl.gov> Date: Thu, 11 Dec 2014 22:56:03 +0000 Subject: [PATCH] --- .../ExperimentUsersController.java | 106 ++++++++++++++++++ .../experiment/experimentListDataTable.xhtml | 8 +- .../experimentUserRemoveDialog.xhtml | 13 +++ .../experimentUsersListDataTable.xhtml | 67 +++++++++++ .../web/views/experiment/view.xhtml | 9 +- 5 files changed, 198 insertions(+), 5 deletions(-) create mode 100644 src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java create mode 100644 src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml create mode 100644 src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java new file mode 100644 index 00000000..10ef1839 --- /dev/null +++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentUsersController.java @@ -0,0 +1,106 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package gov.anl.aps.dm.portal.controllers; + + +import gov.anl.aps.dm.portal.model.beans.UserExperimentRoleFacade; +import gov.anl.aps.dm.portal.model.entities.Experiment; +import gov.anl.aps.dm.portal.model.entities.UserInfo; +import java.io.Serializable; +import java.util.List; +import javax.ejb.EJB; +import javax.enterprise.context.SessionScoped; +import javax.inject.Named; +import org.apache.log4j.Logger; + +@Named("experimentUsersController") +@SessionScoped +public class ExperimentUsersController implements Serializable { + + private static final Logger logger = Logger.getLogger(ExperimentUsersController.class.getName()); + + @EJB + private UserExperimentRoleFacade userExperimentRoleFacade; + + public ExperimentUsersController() { + this.experimentUsersTable = new ExperimentUsersTable(); + } + + class ExperimentUsersTable extends DataTableController<UserInfo> { + + @Override + public String getEntityTypeName() { + return "UserInfo"; + } + + @Override + public List<UserInfo> findAll() { + // find all users in experiment + return null; + } + } + + private ExperimentUsersTable experimentUsersTable; + private Experiment experiment; + + public Experiment getExperiment() { + return experiment; + } + + public void setExperiment(Experiment experiment) { + this.experiment = experiment; + } + + public ExperimentUsersTable getExperimentUsersTable() { + return experimentUsersTable; + } + + public void setExperimentUsersTable(ExperimentUsersTable experimentUsersTable) { + this.experimentUsersTable = experimentUsersTable; + } + + public String getCurrentEntityInstanceName() { + return null; + } + + public String remove() { + return null; + } + + public boolean canRemove(String removerUsername, UserInfo removee) { + return false; + } + + public boolean canAddUsers(String username) { + return true; + } + + public boolean isManager(String userId) { + return true; + } + + public boolean isPI(String userId) { + return true; + } + + public boolean isUser(String userId) { + return true; + } + + public boolean canAssignManager(String userId) { + return true; + } + + public boolean canAssignPI(String userId) { + return true; + } + + public boolean canAssignUser(String userId) { + return true; + } + +} diff --git a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml index fafd0ef0..0e3880e3 100644 --- a/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/experimentListDataTable.xhtml @@ -49,14 +49,16 @@ filterBy="#{experimentObject.endDate}" filterMatchMode="contains" width="120"> <h:outputText value="#{experimentObject.endDate}"> - <f:convertDateTime pattern="#{resources.DatePattern}" type="date" /> + <f:convertDateTime pattern="#{resources.DatePattern}" type="date" /> </h:outputText> </p:column> - + <c:set var="isEntityWriteable" value="#{loginController.loggedIn}"/> <p:column headerText="Actions" width="70"> <div class="actionLink"> - <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View"/> + <p:commandLink action="#{experimentController.prepareView(experimentObject)}" styleClass="ui-icon ui-icon-info" title="View"> + <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentUsersController.experiment}"/> + </p:commandLink> <p:commandLink action="#{experimentController.prepareEdit(experimentObject)}" rendered="#{isEntityWriteable}" styleClass="ui-icon ui-icon-pencil" title="Edit"/> <p:commandLink oncomplete="PF('experimentDestroyDialogWidget').show()" rendered="#{loginController.loggedIn}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form"> <f:setPropertyActionListener value="#{experimentObject}" target="#{experimentController.current}"/> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml new file mode 100644 index 00000000..6b5a7432 --- /dev/null +++ b/src/java/DmWebPortal/web/views/experiment/experimentUserRemoveDialog.xhtml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<ui:composition xmlns="http://www.w3.org/1999/xhtml" + xmlns:p="http://primefaces.org/ui" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> + + <p:confirmDialog id="experimentUserRemoveDialog" message="Remove user #{experimentUsersController.getCurrentEntityInstanceName()} from Experiment?" + header="Remove User" severity="alert" widgetVar="experimentUserRemoveDialogWidget" + styleClass="dialog"> + <p:commandButton value="Yes" oncomplete="experimentUserRemoveDialogWidget.hide()" action="#{experimentUsersController.remove()}"/> + <p:commandButton value="No" onclick="PF('experimentUserRemoveDialogWidget').hide()" type="button" /> + </p:confirmDialog> +</ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml new file mode 100644 index 00000000..e9679706 --- /dev/null +++ b/src/java/DmWebPortal/web/views/experiment/experimentUsersListDataTable.xhtml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<ui:composition xmlns="http://www.w3.org/1999/xhtml" + xmlns:h="http://java.sun.com/jsf/html" + xmlns:p="http://primefaces.org/ui" + xmlns:f="http://java.sun.com/jsf/core" + xmlns:ui="http://xmlns.jcp.org/jsf/facelets" + xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"> + + <div class="actionButton"> + + <p:commandButton id="experimentUserAddButton" value="Add" rendered="#{experimentUsersController.canAddUsers(loginController.username)}" icon="ui-icon-plus" > + <p:tooltip for="experimentUserAddButton" value="Add new Users."/> + </p:commandButton> + + <p:commandButton id="ResetFiltersButton" action="#{experimentUsersController.experimentUsersTable.resetFilterList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight"> + <p:tooltip for="ResetFiltersButton" value="Reset list filters."/> + </p:commandButton> + </div> + + <p:dataTable id="experimentUsersListDataTable" + var="experimentUserObject" + value="#{experimentUsersController.experimentUsersTable.listDataModel}" + filteredValue="#{experimentUsersController.experimentUsersTable.filteredObjectList}" + paginator="true" + paginatorAlwaysVisible="false" + rows="25" + binding="#{experimentUsersController.experimentUsersTable.listDataTable}" + widgetVar="experimentUsersListWidget" + emptyMessage="No users found."> + + <p:column sortBy="#{experimentUserObject.username}" headerText="Username" + filterBy="#{experimentUserObject.username}" filterMatchMode="contains" width="100"> + <h:outputText value="#{experimentUserObject.username}"/> + </p:column> + + <p:column sortBy="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}" headerText="Last, First Name" + filterBy="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}" filterMatchMode="contains" width="120"> + <h:outputText value="#{experimentUserObject.lastName}, #{experimentUserObject.firstName}"/> + </p:column> + + <p:column headerText="Manager" width="40"> + <p:selectBooleanCheckbox value="#{experimentUsersController.isManager(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignManager(loginController.username)}" /> + </p:column> + + <p:column headerText="PI" width="40"> + <p:selectBooleanCheckbox value="#{experimentUsersController.isPI(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignPI(loginController.username)}" /> + + </p:column> + + <p:column headerText="User" width="40"> + <p:selectBooleanCheckbox value="#{experimentUsersController.isUser(experimentUserObject.id)}" rendered="#{experimentUserObject.canAssignUser(loginController.username)}" /> + + </p:column> + + + <p:column headerText="Actions" width="40"> + <div class="actionLink" > + <p:commandLink oncomplete="PF('experimentUserRemoveDialogWidget').show()" rendered="#{experimentUsersController.canRemove(loginController.username, experimentUserObject)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" > + <f:setPropertyActionListener value="#{experimentUserObject}" target="#{experimentUsersController.experimentUsersTable.current}" /> + </p:commandLink> + </div> + </p:column> + + </p:dataTable> + +</ui:composition> diff --git a/src/java/DmWebPortal/web/views/experiment/view.xhtml b/src/java/DmWebPortal/web/views/experiment/view.xhtml index c6fb3708..97d346db 100644 --- a/src/java/DmWebPortal/web/views/experiment/view.xhtml +++ b/src/java/DmWebPortal/web/views/experiment/view.xhtml @@ -31,9 +31,14 @@ <ui:include src="experimentDestroyDialog.xhtml"/> + <p/> + <h2>Experiment Users</h2> + <p/> + + <ui:include src="experimentUsersListDataTable.xhtml"/> + + </div> - - </h:form> -- GitLab