rustploy-gui 0.1.50

Rustploy — desktop client (glacier-ui) for the Rustploy PaaS daemon
// Databases (servidor de banco compartilhado entre projetos)
component {
  scrollable(
    direction = vertical,
    class = u-fill-all,
  ) {
    column(width = fill, spacing = 8, class = form-panel) {
      text("{t('databases.databases', service_shared_databases_count=service_shared_databases_count)}", class = u-label-cap)

      text(
        "{t('databases.each_database_has_its_own_user')}",
        class = u-muted,
      )

      scrollable(direction = vertical, class = u-fill-all) {
        column(class = kv-list) {
          row(class = kv-list__row, :for_each = service_shared_databases, var = d) {
            button(
              class = env__del,
              on_click = shared_database_delete:@d.id,
              disabled = @busy_shared_database_delete,
              text = "✕",
            )

            text(class = env__sep)
            button(class = tabs__tab, on_click = shared_database_show:@d.id, disabled = @busy_shared_database_show, text = @d.name)
            text("→ @d.project", class = "kv-list__val kv-list__val--compact")
            text("@d.env_var", class = u-muted)
          }
        }
      }

      row(class = kv-list__row, if = @shared_database_url, not_equals = "") {
        text("{t('databases.url')}", class = kv-list__key)
        text("@shared_database_url_short", class = "kv-list__val kv-list__val--compact")

        button(
          class = "btn btn--ghost btn--xs",
          on_click = copy_ctx:shared_database_url,
          text = "{t('common.copy')}",
        )
      }

      text("{t('databases.new_database')}", class = u-label-cap)

      input(
        class = field__input,
        form_control = service_form_shared_database_name,
        :value = service_form_shared_database_name,
        on_change = field:service_form_shared_database_name,
        placeholder = "{t('databases.name_a_z_0_9')}",
      )

      select(
        class = form-select,
        :options = service_shared_database_projects,
        :value = service_form_shared_database_project,
        on_change = field:service_form_shared_database_project,
        placeholder = "{t('databases.consumer_project')}",
        label_field = name,
        value_field = id,
      )

      input(
        class = field__input,
        form_control = service_form_shared_database_env,
        :value = service_form_shared_database_env,
        on_change = field:service_form_shared_database_env,
        placeholder = "{t('databases.env_var_default_database_url')}",
      )

      input(
        class = field__input,
        form_control = service_form_shared_database_limit,
        :value = service_form_shared_database_limit,
        on_change = field:service_form_shared_database_limit,
        placeholder = "{t('databases.connection_limit_optional_does_not')}",
      )

      input(
        class = field__input,
        form_control = service_form_shared_database_timeout,
        :value = service_form_shared_database_timeout,
        on_change = field:service_form_shared_database_timeout,
        placeholder = "{t('databases.query_timeout_in_ms_optional')}",
      )

      toggle(
        :checked = service_form_shared_database_overwrite,
        on_toggle = field:service_form_shared_database_overwrite,
        label = "{t('databases.overwrite_the_env_var_if')}",
      )

      toggle(
        :checked = service_form_shared_database_skip_env,
        on_toggle = field:service_form_shared_database_skip_env,
        label = "{t('databases.do_not_touch_env_vars')}",
      )

      row(class = env__add) {
        button(
          class = "btn btn--primary",
          if = @service_form_shared_database_project,
          equals = "",
          disabled = true,
          text = "{t('databases.create_database')}",
        )

        button(
          class = "btn btn--primary",
          if = @service_form_shared_database_project,
          not_equals = "",
          on_click = shared_database_create,
          disabled = @busy_shared_database_create,
          text = "{t('databases.create_database')}",
        )

        text("@service_action_message", class = u-muted)
      }
    }
  }
}