Skip to content
credentialsEditing.xhtml 23.1 KiB
Newer Older
<?xml version="1.0" encoding="UTF-8" ?>
<ui:composition template="/WEB-INF/templates/master.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:ui="http://java.sun.com/jsf/facelets" 
                xmlns:tsm_components="http://xmlns.jcp.org/jsf/composite/tsm_components"
                xmlns:ia2="http://ia2.inaf.it/component">
    <ui:define name="title">TASMAN - Credentials insertion page</ui:define>
    <ui:define name="scripts">
        <h:outputScript library="js" name="credentials.js"></h:outputScript>
        <h:outputScript library="js" name="ucd-editor.js"></h:outputScript>
    </ui:define>
    <ui:define name="content">
        <f:event listener="#{loggedInChecker.checkFromNonIndex()}" type="preRenderView" />
        <h:form id="main">

            <tsm_components:user_navbar />

            <div class="container">
                <div class="row">
                    <div class="col-sm-10 col-sm-offset-1">
                        <h1 class="text-center">Credentials insertion page</h1>
                        <br/>
                    </div>
                </div>

                <h:panelGroup id="saved-credentials">
                    <ui:repeat value="#{credentialsInsertion.savedCredentials}" var="c" varStatus="loop">
                        <div class="panel panel-default">
                            <div class="panel-body">
                                <h:panelGroup rendered="#{c.class.simpleName eq 'Credentials'}">
                                    <div class="col-xs-10">
                                        <h:commandLink action="#{credentialsInsertion.removeCredentials(loop.index)}" title="Delete">
                                            <span class="glyphicon glyphicon-trash"></span>
                                            <f:ajax execute="@this" render="@form" />
                                        </h:commandLink>
                                        <h:commandLink action="#{credentialsInsertion.editCredentials(c, loop.index)}" title="Edit">
                                            <span class="glyphicon glyphicon-pencil"></span>
                                            <f:ajax execute="@this" render=":main:credentials-modal-body" onevent="credentials.editClicked" />
                                        </h:commandLink>
                                        (${c.databaseType eq 'MYSQL' ? 'MySQL' : 'Postgres'}) ${c.hostname}:${c.port} ${c.username}
                                    </div>
                                    <div class="col-xs-2 text-right">
                                        <h:commandLink action="#{credentialsInsertion.loginWithJoinedCredentials(c)}" title="Login" immediate="true">
                                            <span class="glyphicon glyphicon-log-in"></span>
                                        </h:commandLink>
                                    </div>
                                </h:panelGroup>
                                <h:panelGroup rendered="#{c.class.simpleName eq 'SeparateCredentials'}">
                                    <div class="col-xs-10">
                                        <h:commandLink action="#{credentialsInsertion.removeCredentials(loop.index)}" title="Delete">
                                            <span class="glyphicon glyphicon-trash"></span>
                                            <f:ajax execute="@this" render="@form" />
                                        </h:commandLink>
                                        <h:commandLink action="#{credentialsInsertion.editSeparateCredentials(c, loop.index)}" title="Edit">
                                            <span class="glyphicon glyphicon-pencil"></span>
                                            <f:ajax execute="@this" render=":main:credentials-modal-body" onevent="credentials.editClicked" />
                                        </h:commandLink>
                                        <strong>Source</strong>
                                        (${c.sourceCredentials.databaseType eq 'MYSQL' ? 'MySQL' : 'Postgres'}) ${c.sourceCredentials.hostname}:${c.sourceCredentials.port} ${c.sourceCredentials.username}
                                        <strong>TAP_SCHEMA</strong>
                                        (${c.tapSchemaCredentials.databaseType eq 'MYSQL' ? 'MySQL' : 'Postgres'}) ${c.tapSchemaCredentials.hostname}:${c.tapSchemaCredentials.port} ${c.tapSchemaCredentials.username}
                                    </div>
                                    <div class="col-xs-2 text-right">
                                        <h:commandLink  action="#{credentialsInsertion.loginWithSeparatedCredentials(c.sourceCredentials, c.tapSchemaCredentials)}" title="Login" immediate="true">
                                            <span class="glyphicon glyphicon-log-in"></span>
                                        </h:commandLink>
                                    </div>
                                </h:panelGroup>
                            </div>
                        </div>
                    </ui:repeat>

                    <p class="text-danger text-center"><strong><h:message for="main" /></strong></p>

                        <h:commandLink class="btn btn-success" action="#{credentialsInsertion.addNewCredentials()}">
                            <span class="glyphicon glyphicon-plus"></span>
                            Add new database credentials
                            <f:ajax execute="@this" render="credentials-modal-body" onevent="credentials.editClicked" />
                        </h:commandLink>
                    </div>
                </h:panelGroup>

                <ia2:modal id="credentials-modal" visibility-status="#{credentialsInsertion.credentialsDialogStatus}">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&#215;</span></button>
                                <h4 class="modal-title">Credentials editing</h4>
                            </div>
                            <h:panelGroup id="credentials-modal-body" layout="block" class="modal-body">

                                <h:panelGroup class="row" layout="block" id="credentials_panels_wrapper">
                                    <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-6':'col-xs-12'}">
                                        <div class="panel panel-primary">
                                            <div class="panel-heading#{credentialsInsertion.separateCredentials ? '' : ' hide'}">
                                                <h3 class="panel-title">Source credentials</h3>
                                            <div class="panel-body">
                                                <h:panelGroup layout="block" class="form-horizontal" id="source_credentials">
                                                    <div class="form-group">
                                                        <h:outputLabel for="source_dbtype" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database type</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:selectOneMenu id="source_dbtype" value="#{credentialsInsertion.sourceCredentials.databaseType}" class="form-control">
                                                                <f:selectItem itemValue="MYSQL" itemLabel="MySQL" />
                                                                <f:selectItem itemValue="POSTGRES" itemLabel="Postgres" />
                                                                <f:ajax execute="@this" render=":main:source_credentials" listener="#{credentialsInsertion.sourceCredentials.setDefaults()}" />
                                                            </h:selectOneMenu>
                                                        </div>
                                                    </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="source_hostname" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Hostname</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="source_hostname" value="#{credentialsInsertion.sourceCredentials.hostname}" class="form-control" required="#{credentialsInsertion.credentialsDialogOpened}" requiredMessage="Hostname is required"/>
                                                            <h:message for="source_hostname" class="text-danger" /> 
                                                        </div>
                                                    </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="source_port" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Port</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="source_port" value="#{credentialsInsertion.sourceCredentials.port}" class="form-control" required="#{credentialsInsertion.credentialsDialogOpened}" requiredMessage="Port is required"/>
                                                            <h:message for="source_port" class="text-danger" /> 
                                                        </div>
                                                    </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="source_username" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Username</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="source_username" value="#{credentialsInsertion.sourceCredentials.username}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Username is required"/>
                                                            <h:message for="source_username" class="text-danger" /> 
                                                        </div>
                                                    </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="source_password" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Password</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputSecret id="source_password" value="#{credentialsInsertion.sourceCredentials.password}" class="form-control" redisplay="true" />
                                                            <h:message for="source_password" class="text-danger" /> 
                                                        </div>
                                                    </div> 
                                                    <h:panelGroup class="form-group" layout="block" rendered="#{credentialsInsertion.sourceCredentials.databaseType eq 'POSTGRES'}">
                                                        <h:outputLabel for="source_database" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="source_database" value="#{credentialsInsertion.sourceCredentials.database}" class="form-control" />
                                                            <h:message for="source_database" class="text-danger" /> 
                                                        </div>
                                                    </h:panelGroup>                        
                                                </h:panelGroup>
                                    <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-6':'col-xs-12'}">
                                        <h:panelGroup layout="block" class="panel panel-primary" rendered="#{credentialsInsertion.separateCredentials}">
                                            <h:panelGroup layout="block" class="panel-heading" rendered="#{credentialsInsertion.separateCredentials}">
                                                <h3 class="panel-title">TAP_SCHEMA credentials</h3>
                                            </h:panelGroup>
                                            <div class="panel-body">
                                                <div class="form-horizontal">
                                                    <div class="form-group">
                                                        <h:outputLabel for="tap_schema_dbtype" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database type</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:selectOneMenu id="tap_schema_dbtype" value="#{credentialsInsertion.tapSchemaCredentials.databaseType}" class="form-control">
                                                                <f:selectItem itemValue="MYSQL" itemLabel="MySQL" />
                                                                <f:selectItem itemValue="POSTGRES" itemLabel="Postgres" />
                                                                <f:ajax execute="@this" render=":main:credentials_panels_wrapper" listener="#{credentialsInsertion.tapSchemaCredentials.setDefaults()}" />
                                                            </h:selectOneMenu>
                                                        </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="tap_schema_hostname" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Hostname</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="tap_schema_hostname" value="#{credentialsInsertion.tapSchemaCredentials.hostname}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Hostname is required"/>
                                                            <h:message for="tap_schema_hostname" class="text-danger" /> 
                                                        </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="tap_schema_port" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Port</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="tap_schema_port" value="#{credentialsInsertion.tapSchemaCredentials.port}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Port is required"/>
                                                            <h:message for="tap_schema_port" class="text-danger" /> 
                                                        </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="tap_schema_username" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Username</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="tap_schema_username" value="#{credentialsInsertion.tapSchemaCredentials.username}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Username is required"/>
                                                            <h:message for="tap_schema_username" class="text-danger" /> 
                                                        </div>
                                                    <div class="form-group">
                                                        <h:outputLabel for="tap_schema_password" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Password</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputSecret id="tap_schema_password" value="#{credentialsInsertion.tapSchemaCredentials.password}" class="form-control" redisplay="true" />
                                                            <h:message for="tap_schema_password" class="text-danger" /> 
                                                        </div>
                                                    <h:panelGroup class="form-group" layout="block" rendered="#{credentialsInsertion.tapSchemaCredentials.databaseType eq 'POSTGRES'}">
                                                        <h:outputLabel for="tap_schema_database" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database</h:outputLabel>
                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
                                                            <h:inputText id="tap_schema_database" value="#{credentialsInsertion.tapSchemaCredentials.database}" class="form-control" />
                                                            <h:message for="tap_schema_database" class="text-danger" /> 
                                                        </div>
                                                    </h:panelGroup>  
                                <div class="form-horizontal">
                                    <div class="form-group">
                                        <label class="col-xs-6 col-xs-offset-4">
                                            <h:selectBooleanCheckbox value="#{credentialsInsertion.separateCredentials}" id="separate-credentials">
                                                <f:ajax render="credentials_panels_wrapper" execute="@this" onevent="credentials.separateCredentialsChanged" />
                                            </h:selectBooleanCheckbox>
                                            Separate credentials
                                        </label>
                                    </div>
                                    <div class="form-group">
                                        <h:outputLabel for="tap_schema_name" class="control-label col-xs-4">TAP_SCHEMA name</h:outputLabel>
                                        <div class="col-xs-6">
                                            <h:inputText value="#{credentialsInsertion.tapSchemaName}" class="form-control" />
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <h:outputLabel for="tap_schema_name" class="control-label col-xs-4">TAP_SCHEMA version</h:outputLabel>
                                        <div class="col-xs-6">
                                            <h:selectOneMenu value="#{credentialsInsertion.tapSchemaVersion}" class="form-control">
                                                <f:selectItems value="#{credentialsInsertion.tapSchemaVersions}" var="version" itemLabel="#{version}" itemDescription="#{version}" />
                                            </h:selectOneMenu>
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label class="col-xs-6 col-xs-offset-4">
                                            <h:selectBooleanCheckbox value="#{credentialsInsertion.hasObscore}" id="has-obscore" />
                                            Has obscore
                                        </label>
                                    </div>
                                </div>
                            </h:panelGroup>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                <h:commandLink action="#{credentialsInsertion.saveCredentialsEdited()}" class="btn btn-primary" id="save-credentials">
                                    Save changes
                                    <f:ajax execute="@form" render=":main:credentials-modal-body :main:saved-credentials" onevent="credentials.credentialsSaved" />
                                </h:commandLink>
                            </div>
                        </div>
                    </div>

                <tsm_components:ucd_editor id="ucd-editor" />
            </div>
        </h:form>
    </ui:define>
</ui:composition>