rustploy-gui 0.1.49

Rustploy — desktop client (glacier-ui) for the Rustploy PaaS daemon
// Connection (valores copiáveis)
component {
  resources {
    // Estado vazio da lista de containers (`fallback` do <foreach>).
    component(name = SemContainers) {
      text("{t('connection.no_container_running')}", class = u-muted)
    }
  }

  column(class = kv-list) {
    row(class = kv-list__row) {
      text("{t('connection.container_port')}", class = kv-list__key)
      text("@service_port", class = "kv-list__val kv-list__val--compact")
      text(" ")

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

    row(class = kv-list__row) {
      text("{t('connection.host_port')}", class = kv-list__key)
      text("@service_host_port", class = "kv-list__val kv-list__val--compact")
      text(" ")

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

    row(class = kv-list__row) {
      text("{t('connection.domain')}", class = kv-list__key)
      text("@service_domain", class = "kv-list__val kv-list__val--compact")
      text(" ")

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

    row(class = kv-list__row) {
      text("{t('common.tls')}", class = kv-list__key)
      text("@service_tls", class = "kv-list__val kv-list__val--compact")
    }

    row(class = kv-list__row) {
      text("{t('connection.external_url')}", class = kv-list__key)
      text("@service_external_url_short", class = "kv-list__val kv-list__val--compact")
      text(" ")

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

    row(class = kv-list__row) {
      text("{t('connection.internal_url')}", class = kv-list__key)
      text("@service_internal_url_short", class = "kv-list__val kv-list__val--compact")
      text(" ")

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

    row(class = kv-list__row, if = @service_can_share, equals = true) {
      text("{t('connection.shared')}", class = kv-list__key)
      text("@service_shared", class = "kv-list__val kv-list__val--compact")

      if @service_shared == "false" {
        button(
          class = "btn btn--ghost btn--xs",
          on_click = shared_enable,
          disabled = @busy_shared_enable,
          text = "{t('connection.share')}",
        )
      }

      if @service_shared == "true" {
        button(
          class = "btn btn--ghost btn--xs",
          on_click = shared_disable,
          disabled = @busy_shared_disable,
          text = "{t('connection.turn_off')}",
        )
      }
    }

    row(class = kv-list__row, if = @service_database_kind, not_equals = "—") {
      text("{t('connection.type')}", class = kv-list__key)
      text("@service_database_kind", class = "kv-list__val kv-list__val--compact")
    }

    // Containers reais em execução para este serviço (id + nome + estado).
    hr

    text(
      "{t('connection.containers', service_containers_count=service_containers_count)}",
      class = u-label-cap,
    )

    each @service_containers as c (fallback = SemContainers) {
      row(class = kv-list__row) {
        rp-badge(color = @c.state_color, label = @c.state)
        text("  ", class = "kv-list__val kv-list__val--compact")
        text("@c.name", class = "kv-list__val kv-list__val--compact")
        text("  ", class = "kv-list__val kv-list__val--compact")
        text("@c.id_short", class = u-muted)
      }
    }
  }
}