{"id":16451,"date":"2024-02-29T14:04:42","date_gmt":"2024-02-29T20:04:42","guid":{"rendered":"https:\/\/sada.services\/?p=16451"},"modified":"2024-02-29T14:04:42","modified_gmt":"2024-02-29T20:04:42","slug":"sigesa-selectmanymenu-hacer-que-solo-se-pueda-seleccionar-un-item","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=16451","title":{"rendered":"SIGESA: selectManyMenu hacer que solo se pueda seleccionar un item"},"content":{"rendered":"\n<ul class=\"wp-block-list\"><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">metaPoaEditForm.xhtml<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si tenemos este c\u00f3digo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--CAMPO-->\n                    &lt;p:selectManyMenu id=\"actividadMejoraSelectManyMenu\" \n                                      value=\"#{metaPoaBean.listaActividadesMejoraSeleccionadas}\"\n                                      converter=\"#{actividadMejoraBean.converter}\" \n                                      var=\"am\" \n                                      filter=\"true\" \n                                      filterMatchMode=\"contains\" \n                                      showCheckbox=\"true\" \n                                      styleClass=\"una-selectManyMenu\"\n                                      rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\"\n                                      >\n\n                        &lt;p:ajax process=\"@this\" \n                                listener=\"#{metaPoaBean.actualizaActividadesMejoraSeleccionadas}\"\n                                update=\"@this,\n                                :#{p:resolveFirstComponentWithId('actividadRiesgoOutputPanel', view).clientId}\"\/>\n\n                        &lt;f:selectItems value=\"#{metaPoaBean.listaAllActividadesMejora}\" \n                                       var=\"codAM\" \n                                       itemLabel=\"#{codAM.codigo}\"\n                                       itemValue=\"#{codAM}\"\n                                       >\n                        &lt;\/f:selectItems>\n\n                        &lt;p:column>\n                            &lt;h:outputText value=\"#{am.codigo}\"\/>\n                        &lt;\/p:column>\n                        &lt;p:column>\n                            &lt;h:outputText value=\"#{am.descripcion}\"\/>\n                        &lt;\/p:column>\n                    &lt;\/p:selectManyMenu>\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>que muestra <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"660\" height=\"123\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/02\/Seleccion_337.png\" alt=\"\" class=\"wp-image-16453\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/02\/Seleccion_337.png 660w, https:\/\/sada.services\/wp-content\/uploads\/2024\/02\/Seleccion_337-300x56.png 300w\" sizes=\"(max-width: 660px) 100vw, 660px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y deseamos que el usuario solo pueda seleccionar una opci\u00f3n<\/li>\n\n\n\n<li>Podemos agregarle la siguiente propiedad<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>itemDisabled=\"#{metaPoaBean.actividadMejoraDisabled(codAM)}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Donde llamar\u00eda a un metodo llamado actividadMejoraDisabled que determina si debe o no el itema estar habilitado<\/li>\n\n\n\n<li>Ahora para la tarea existe la salvedad de que existen 2 selectManyMenu uno de actividades de mejora y otro actividades de respuesta<\/li>\n\n\n\n<li>y solo se puede seleccionar uno de ambos selectManyMenu<\/li>\n\n\n\n<li>Adem\u00e1s existe este c\u00f3digo<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:ajax process=\"@this\" \n                                listener=\"#{metaPoaBean.actualizaActividadesMejoraSeleccionadas}\"\n                                update=\"@this\"\/><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Que escucha el evento \u00abchange\u00bb<\/li>\n\n\n\n<li>Entonces para aplicar la funcionalidad primero agregamos el llamado a metodo que verifica si debe o no estar habilitado el item <\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">mejora<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos dentro de selectItems<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>itemDisabled=\"#{metaPoaBean.actividadMejoraDisabled(codAM)}\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ACTIVIDAD MEJORA                                                              -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                \n                &lt;!--LABEL-->\n                &lt;p:outputLabel  id=\"actividadMejoraOutputLabel\" \n                                for=\"actividadMejoraSelectManyMenu\" \n                                value=\"#{i18n.metaPoa_actividadMejora_header_label}\"\n                                rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\"\n                               \/>\n\n                \n                &lt;!--PANEL-->\n                &lt;p:outputPanel  id=\"actividadMejoraOutputPanel\" \n                                rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\">\n        \n\n                    &lt;!--CAMPO-->\n                    &lt;p:selectManyMenu id=\"actividadMejoraSelectManyMenu\" \n                                      value=\"#{metaPoaBean.listaActividadesMejoraSeleccionadas}\"\n                                      converter=\"#{actividadMejoraBean.converter}\" \n                                      var=\"am\" \n                                      filter=\"true\" \n                                      filterMatchMode=\"contains\" \n                                      showCheckbox=\"true\" \n                                      styleClass=\"una-selectManyMenu\"\n                                      rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\"\n                                      >\n\n                        &lt;p:ajax process=\"@this\" \n                                listener=\"#{metaPoaBean.actualizaActividadesMejoraSeleccionadas}\"\n                                update=\"@this,\n                                :#{p:resolveFirstComponentWithId('actividadRiesgoOutputPanel', view).clientId}\"\/>\n\n                        &lt;f:selectItems value=\"#{metaPoaBean.listaAllActividadesMejora}\" \n                                       var=\"codAM\" \n                                       itemLabel=\"#{codAM.codigo}\"\n                                       itemValue=\"#{codAM}\"\n                                       itemDisabled=\"#{metaPoaBean.actividadMejoraDisabled(codAM)}\">\n                        &lt;\/f:selectItems>\n\n                        &lt;p:column>\n                            &lt;h:outputText value=\"#{am.codigo}\"\/>\n                        &lt;\/p:column>\n                        &lt;p:column>\n                            &lt;h:outputText value=\"#{am.descripcion}\"\/>\n                        &lt;\/p:column>\n                    &lt;\/p:selectManyMenu>\n\n                    &lt;!--MENSAJE-->\n                    &lt;p:message id=\"actividadMejoraMessage\" \n                               for=\"actividadMejoraSelectManyMenu\" \n                               rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\"\/>\n\n                &lt;\/p:outputPanel>\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** --><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y modificamos el evento change para que actualice el componete de riesgo<\/li>\n\n\n\n<li>quedando as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p:ajax process=\"@this\" \n                                listener=\"#{metaPoaBean.actualizaActividadesMejoraSeleccionadas}\"\n                                update=\"@this,\n                                :#{p:resolveFirstComponentWithId('actividadRiesgoOutputPanel', view).clientId}\"\/><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Riesgo<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Queda as\u00ed<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ACTIVIDAD RIESGO                                                              -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                \n                &lt;!--LABEL-->\n                &lt;p:outputLabel  id=\"actividadRiesgoOutputLabel\" \n                                for=\"actividadRiesgoSelectManyMenu\" \n                                value=\"#{i18n.metaPoa_actividadRiesgo_header_label}\"\n                                rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\"\n                               \/>\n                \n                &lt;!--PANEL-->\n                &lt;p:outputPanel  id=\"actividadRiesgoOutputPanel\" \n                                rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\">\n\n\n                    &lt;!--CAMPO-->\n                    &lt;p:selectManyMenu id=\"actividadRiesgoSelectManyMenu\" \n                                      value=\"#{metaPoaBean.listaActividadesRiesgoSeleccionadas}\"\n                                      converter=\"#{actividadRespuestaRiesgoBean.converter}\" \n                                      var=\"am\" \n                                      filter=\"true\" \n                                      filterMatchMode=\"contains\" \n                                      showCheckbox=\"true\" \n                                      styleClass=\"una-selectManyMenu\"\n                                      rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\"\n                                      >\n\n                        &lt;p:ajax process=\"@this\" \n                                listener=\"#{metaPoaBean.actualizaActividadesRiesgoSeleccionadas}\"\n                                update=\"@this,\n                                :#{p:resolveFirstComponentWithId('actividadMejoraOutputPanel', view).clientId}\"\/>\n\n                        &lt;f:selectItems value=\"#{metaPoaBean.listaAllActividadesRiesgo}\" \n                                       var=\"codARR\" \n                                       itemLabel=\"#{codARR.codigo}\"\n                                       itemValue=\"#{codARR}\"\n                                       itemDisabled=\"#{metaPoaBean.actividadRiesgoDisabled(codARR)}\">\n                        &lt;\/f:selectItems>\n\n                        &lt;p:column>\n                            &lt;h:outputText value=\"#{am.codigo}\"\/>\n                        &lt;\/p:column>\n                        &lt;p:column>\n                            &lt;h:outputText value=\"#{am.descripcion}\"\/>\n                        &lt;\/p:column>\n\n                    &lt;\/p:selectManyMenu>\n\n                    &lt;!--MENSAJE-->\n                    &lt;p:message id=\"actividadRiesgoMessage\" \n                               for=\"actividadRiesgoSelectManyMenu\" \n                               rendered=\"#{metaPoaBean.isPlanOperativoUnidad()}\"\/>\n\n                &lt;\/p:outputPanel>\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** -->\n                &lt;!-- ***************************************************************************** --><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">MetaPoaBean.java<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora creamos los metodos que van a aplicar la logica sobre si habilitar o no <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n     * Funci\u00f3n: Determinar si el item del selectManyMenu de ActividadMejora debe o no estar habilitado\n     * @param actividadMejoraSelected\n     * @return true = deshabilitado\/ false = habilitado\n     * @author  Gustavo Matamoros Gonz\u00e1lez\n     * @issue BTPPI-389\n     *\/\n    public boolean actividadMejoraDisabled(ActividadMejora actividadMejoraSelected){\n\n        \/\/ Si las no hay AM ni ARR seleccionadas esta habilitado\n        if( (this.getListaActividadesMejoraSeleccionadas().isEmpty()) &amp;&amp; (this.getListaActividadesRiesgoSeleccionadas().isEmpty())){\n            return false;\n        }\n\n        \/\/ Si hay ARR esta deshabilitado\n        if(!this.getListaActividadesRiesgoSeleccionadas().isEmpty()){\n            return true;\n        }\n\n        \/\/Si es el item enviado igual habilite\n        for(ActividadMejora actividadMejora : this.getListaActividadesMejoraSeleccionadas()){\n            if(actividadMejora.equals(actividadMejoraSelected)){\n                return false;\n            }\n        }\n\n        \/\/ sino deshabilite\n        return true;\n    }\n    \n    \/**\n     * Funci\u00f3n: Determinar si el item del selectManyMenu de ActividadMejora debe o no estar habilitado\n     * @param actividadMejoraSelected\n     * @return true = deshabilitado\/ false = habilitado\n     * @author  Gustavo Matamoros Gonz\u00e1lez\n     * @issue BTPPI-389\n     *\/\n    public boolean actividadRiesgoDisabled(ActividadRespuestaRiesgo actividadRespuestaRiesgoSelected){\n\n        \/\/ Si las no hay AM ni ARR esta habilitado\n        if( (this.getListaActividadesMejoraSeleccionadas().isEmpty()) &amp;&amp; (this.getListaActividadesRiesgoSeleccionadas().isEmpty())){\n            return false;\n        }\n\n        \/\/ Si hay AM esta deshabilitado\n        if(!this.getListaActividadesMejoraSeleccionadas().isEmpty()){\n            return true;\n        }\n\n        \/\/Si es el item enviado igual habilite\n        for(ActividadRespuestaRiesgo actividadRespuestaRiesgo : this.getListaActividadesRiesgoSeleccionadas()){\n            if(actividadRespuestaRiesgo.equals(actividadRespuestaRiesgoSelected)){\n                return false;\n            }\n        }\n\n        \/\/ sino deshabilite\n        return true;\n    }<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y listo<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>metaPoaEditForm.xhtml mejora Riesgo MetaPoaBean.java<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[443],"tags":[612,472,444,611],"class_list":["post-16451","post","type-post","status-publish","format-standard","hentry","category-sigesa","tag-itemdisabled","tag-selectmanymenu","tag-sigesa","tag-solo-uno"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16451"}],"version-history":[{"count":4,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16451\/revisions"}],"predecessor-version":[{"id":16456,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16451\/revisions\/16456"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16451"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16451"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}