Saltar a contenido

Campos de Formulario Personalizados

Los Rulebooks pueden usarse para agregar campos personalizados a los formularios de topics. Cada vez que se abre un topic, el motor de renderizado de formularios primero verifica la existencia de reglas de campos de formulario y las ejecuta.

Note

Esto solo funciona para topics que tienen asignado su campo de proyecto. De lo contrario, el sistema de campos personalizados no sabría qué rulebook aplicar de muchos proyectos diferentes.

Si necesita que un campo personalizado se aplique globalmente, el proyecto al que pertenece su rulebook debe ser un proyecto global.

Reglas de campos de formulario

Las reglas de campos de formulario están compuestas de una secuencia de ops, al igual que cualquier otra regla en Clarive. Pero en lugar de ejecutar comandos o enviar archivos remotamente, las reglas de campos de formulario generan definiciones de campos llamadas fieldlets.

Hay eventos especiales de campos de formulario para los que podemos crear reglas.

La siguiente lista de eventos puede ser diferente, dependiendo de los perfiles instalados en Clarive SE. En Clarive EE, el conjunto de eventos de formulario personalizables puede ser completamente diferente, ya que se pueden definir nuevos eventos a discreción de los administradores.

Evento Descripción
any_form agrega un campo a todos los formularios
form_feature agrega un campo a tipos de formulario de feature
form_bugfix agrega un campo a formularios de bugfix
form_sprint agrega un campo a formularios de sprint
form_release agrega un campo a formularios de release
form_epic agrega un campo a formularios de sprint
form_hotfix agrega un campo a formularios de hotfix
form_story agrega un campo a formularios de story
form_task agrega un campo a formularios de task
form_task_template agrega un campo a plantillas de task
form_[custom_category] agrega un campo a formularios de categoría personalizada

Por ejemplo, para agregar diferentes campos al formulario de topic bugfix, use la siguiente estructura de rulebook:

name: my custom fields

form_bugfix:
   - field_text:
        label: "Estimated duration"
        id: estimated_duration

form_sprint:
   - field_text:
        label: "Estimated duration"
        id: estimated_duration

Para mayor concisión, puede agrupar definiciones de campos con el op def.

name: grouped custom fields

def:
   time_management:
       - field_text:
             label: "Estimated duration"
             id: estimated_duration
       - field_date:
             label: "Estimated end-date"
             id: enddate

form_bugfix:
    - time_management:

form_sprint:
    - time_management:

Incluso puede parametrizar los campos con variables para hacerlos más adaptables.

name: grouped custom fields

def:
   time_management (show_date):
       - field_text:
             label: "Estimated duration"
             id: estimated_duration
       - if: {{ show_date }}
         then:
           - field_date:
                 label: "Estimated end-date"
                 id: enddate

form_bugfix:
    - time_management:
          show_date: false

form_sprint:
    - time_management:
          show_date: true

Fieldlets Disponibles

  • field_text - campo de texto simple

  • field_date - campo de fecha simple

  • field_time - campo de hora simple

  • field_textarea - campo de texto multilínea

  • field_richtext - editor de texto enriquecido basado en HTML

  • field_combo - cuadro combinado desplegable con una lista estática de opciones

  • field_pills - opciones visuales seleccionables

  • field_grid - tabla de múltiples columnas

  • field_upload - campo de adjunto

Obtener el contexto del formulario

En cada regla de evento de formulario, las siguientes variables están disponibles. Estas variables son útiles para hacer que los campos sean condicionales a cosas como seguridad o situación del topic.

Variable Descripción
username id del usuario que abre el topic
category nombre de la categoría del topic
topic_mid mid del topic (no disponible si es un topic nuevo)
any_form:
    - if: "{{ ctx.status('name') == 'In Progress' }}"
      then:
         - field_text:
              label: Assigned Tester
              id: tester

Argumentos Comunes

Cada tipo de op field_* tiene un conjunto de argumentos comunes que pueden usarse para configurar el campo de formulario.

Argumento ¿Requerido? Tipo Predeterminado
id requerido string -
label requerido string -
colspan opcional num (1-12) 12 (ancho máximo)
rowspan opcional num ( >2 ) (según el campo)
default opcional any -
required opcional bool false
edit opcional bool true
view opcional bool true
active opcional bool true
readonly opcional bool false

label (requerido)

Label es el texto que aparece junto al campo.

id (requerido)

Cuando los datos del topic se almacenan en la base de datos, se almacenan con un id de campo.

Los ids de campo son importantes ya que puede querer usarlos más tarde en otras reglas de evento o pipeline para extraer datos de configuración de ellos.

Los ids de campo deben estar en minúsculas, comenzar con caracteres alfa (de a a z) y ser seguidos por cualquier carácter de caracteres alfanuméricos y guión bajo.

Ejemplos de ids:

  • my_field (ok)

  • _my_field (no ok)

  • 2017field (no ok)

  • someField (no ok)

Tip

Prefije todos sus campos con un identificador reconocible para que pueda recordarlos fácilmente mientras mantiene la base de datos organizada. Además, use notación snake (separadores de guión bajo) para mayor claridad.

Por ejemplo, si sus campos estuvieran relacionados con estimaciones de trabajo, podrían tener el prefijo estimate_, como estimate_date, estimate_description, etc.

colspan

Número de columnas que ocupará el campo en el modo de edición, un número del 1 al 12.

rowspan

Número de filas que ocupará el campo en el modo de edición, el mínimo es 2.

El administrador de diseño de cuadrícula de formularios intentará acomodar el fieldlet dentro de la cuadrícula, que también tiene en cuenta las filas de otros campos visibles.

default

Valor predeterminado para el campo.

required

Si un campo es requerido (establecido en true o en 1, el topic solo puede guardarse si el campo tiene datos.

edit

Booleano que determina si el campo puede verse en el panel del editor de topics.

Establezca edit en false si el campo no debe ser visible en el panel del editor. El valor predeterminado es true.

view

Booleano que determina si el campo puede verse en el panel de vista del topic (panel principal). El valor predeterminado es true.

readonly

Booleano que determina si el campo puede ser modificado en el modo de edición. El valor predeterminado es false, lo que significa que un campo siempre puede modificarse.

Ops de campo

field_text

Este campo creará un campo de texto simple de una línea.

any_form:
    - field_text:
        id: next_version
        label: Next Version String

field_textarea

Un campo de texto de múltiples líneas. El texto no tiene formato. Para un campo de texto con formato, use el op field_richtext en su lugar.

Use el parámetro rowspan para configurar la altura del campo.

any_form:
    - field_textarea:
          id: test_description
          label: Test Case Description
          rowspan: 8

field_richtext

Esto abre un editor de texto enriquecido basado en HTML, que admite formato de texto y párrafo, señales visuales, como listas y pegado de imágenes.

any_form:
    - field_richtext:
          id: test_description
          label: Test Case Description
          rowspan: 8

field_date

Un campo de fecha que abre un calendario.

any_form:
    - field_date:
          id: target_date
          label: Target Date

field_time

Un campo de hora.

any_form:
    - field_time:
          id: target_date
          label: Select Delivery Time

field_pills

Las pills son botones de opción que se resaltan en color y se muestran como insignias.

Las pills son excelentes para listas de selección cortas (de 2 a 4) que también son muy fáciles de ver y hacer clic. Cada opción debe tener al menos el parámetro name: y opcionalmente color:.

any_form:
    - field_pills:
          id: issue_type
          label: Issue Type
          options:
           - name: High
             color: e0a0a0
           - name: Low
             color: a0a0e0

field_grid

Las grids son tablas de múltiples columnas que contienen subcampos. Puede definir desde una a muchas columnas, pero intente limitar las columnas a 4 o 5 como máximo, de lo contrario, es posible que no quepa correctamente en la pantalla de los usuarios y pueda volverse difícil de leer.

any_form:
    - field_grid:
         label: Testing Issues Detected
         id: testing_issues
         columns:
             - name: "By Whom"
               type: users
             - name: "Which Project"
               type: projects
             - name: Verified?
               type: checkbox
               default: true
               width: 20
             - name: Verified?
               type: checkbox
             - name: "Problem Type"
               type: combo
               default: "Translations"
               options:
                   - Code
                   - Documentation
                   - Translations

Cada columna acepta estos parámetros comunes:

Parámetro Descripción Predeterminado
id El id de columna usado para almacenar en la bd Si no hay id, el nombre se convierte en id
name El texto del encabezado de columna (requerido)
type Tipo de campo para la columna (lista de tipos abajo) textfield
width El ancho de columna en píxeles 100
default El valor predeterminado para el campo (ninguno)
sortable Si la columna es ordenable o no true
readonly Si la columna es de solo lectura false

Este es el conjunto de tipos de columna para elegir:

Tipo de Columna Descripción Opciones Adicionales
textfield texto de una línea none
textarea texto de múltiples líneas none
checkbox Una simple casilla de verificación none
combo Una simple casilla de verificación options: [ 'column1', 'column2' ]
date Un selector de fecha none
projects Lista desplegable de todos los proyectos del sistema none
users Lista desplegable de todos los usuarios del sistema none
environments Lista desplegable de todos los entornos del sistema none

Para establecer un valor predeterminado en un campo de columna, simplemente agregue default: a la lista de opciones.

    # ...

    - field_grid:
         label: Testing Issues Detected
         id: testing_issues
         columns:
             - name: "Issue Type"
               type: combo
               default: "External"
               options:
                  - "Internal"
                  - "Documentation"
                  - "External"

field_combo

Este es un combo desplegable con un conjunto fijo de valores pasados como un array en el parámetro options.

Para establecer un valor predeterminado, use el nombre de la opción.

any_form:
    - field_combo:
        label: Select Speed
        default: Faster
        options:
            - Faster
            - Slower

field_upload

Este campo permite a los usuarios cargar uno o más archivos. Los archivos cargados se adjuntan al topic y se almacenan en la base de datos.

any_form:
    - field_upload:
        label: Upload Evidence Files
        id: evidence_files

Ops de Formulario Adicionales

También hay algunos ops de formulario adicionales que permiten que su rulebook controle campos existentes, como eliminar campos predefinidos de la vista o hacerlos de solo lectura.

remove_fields

El op remove_fields sacará el campo seleccionado de los paneles de edición y vista del topic, para que el campo sea invisible para el usuario.

El op remove_fields acepta un array como argumento con las etiquetas (o ids) de los campos individuales a eliminar.

any_form:
    - remove_fields:
          - Reviewer

readonly_fields

El op readonly_fields hará que uno o más campos sean de solo lectura, lo que significa que el usuario podrá verlo, pero no cambiar su valor.

El op readonly_fields acepta un array como argumento con las etiquetas (o ids) de los campos individuales a cambiar al modo de solo lectura.

any_form:
    - readonly_fields:
          - Reviewer
          - Assigned