rustploy-gui 0.1.21

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(class = u-muted, content = "Nenhum container em execução.")
    }
  }

  column(class = kv-list) {
    row(class = kv-list__row) {
      text(class = kv-list__key, content = "Container port")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_port")
      text(content = " ")

      button(
        class = "btn btn--ghost btn--xs",
        on_click = copy_ctx:service_port,
        text = Copiar,
      )
    }

    row(class = kv-list__row) {
      text(class = kv-list__key, content = "Host port")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_host_port")
      text(content = " ")

      button(
        class = "btn btn--ghost btn--xs",
        on_click = copy_ctx:service_host_port,
        text = Copiar,
      )
    }

    row(class = kv-list__row) {
      text(class = kv-list__key, content = "Domain")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_domain")
      text(content = " ")

      button(
        class = "btn btn--ghost btn--xs",
        on_click = copy_ctx:service_domain,
        text = Copiar,
      )
    }

    row(class = kv-list__row) {
      text(class = kv-list__key, content = "TLS")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_tls")
    }

    row(class = kv-list__row) {
      text(class = kv-list__key, content = "External URL")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_external_url_short")
      text(content = " ")

      button(
        class = "btn btn--ghost btn--xs",
        on_click = copy_ctx:service_external_url,
        text = Copiar,
      )
    }

    row(class = kv-list__row) {
      text(class = kv-list__key, content = "Internal URL")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_internal_url_short")
      text(content = " ")

      button(
        class = "btn btn--ghost btn--xs",
        on_click = copy_ctx:service_internal_url,
        text = Copiar,
      )
    }

    row(class = kv-list__row, if = @service_can_share, equals = true) {
      text(class = kv-list__key, content = "Compartilhado")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_shared")

      if @service_shared == "false" {
        button(
          class = "btn btn--ghost btn--xs",
          on_click = shared_enable,
          disabled = @busy_shared_enable,
          text = Compartilhar,
        )
      }

      if @service_shared == "true" {
        button(
          class = "btn btn--ghost btn--xs",
          on_click = shared_disable,
          disabled = @busy_shared_disable,
          text = Desligar,
        )
      }
    }

    row(class = kv-list__row, if = @service_database_kind, not_equals = "—") {
      text(class = kv-list__key, content = "Tipo")
      text(class = "kv-list__val kv-list__val--compact", content = "@service_database_kind")
    }

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

    text(
      class = u-label-cap,
      content = "CONTAINERS (@service_containers_count)",
    )

    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", content = "  ")
        text(class = "kv-list__val kv-list__val--compact", content = "@c.name")
        text(class = "kv-list__val kv-list__val--compact", content = "  ")
        text(class = u-muted, content = "@c.id_short")
      }
    }
  }
}