rustploy-gui 0.1.53

Rustploy — desktop client (glacier-ui) for the Rustploy PaaS daemon
// Aba Logs do detalhe do serviço (importada por service.component.gv).
component {
  column(class = log-panel) {
    text(
      "{t('logs.runtime_logs_open_in_their_own')}",
      class = u-muted,
    )

    row(class = env__add) {
      button(
        class = "btn btn--primary",
        on_click = open_logs_window,
        disabled = @busy_open_logs_window,
        text = "{t('logs.execution_logs')}",
      )
    }

    // Execuções anteriores: uma por container. "Ver logs" abre uma janela só dela, com data
    // e hora; "Excluir" e "Limpar selecionados" apagam o log guardado (irreversível).
    column(class = form-panel, if = @log_executions_visible, equals = true) {
      row(class = env__head) {
        text("{t('logs.previous_executions')}", class = u-label-cap)

        column(class = u-fill)

        button(
          class = "btn btn--ghost btn--sm",
          on_click = log_exec_toggle_all,
          text = "{t('logs.select_all')}",
        )

        button(
          class = "btn btn--danger btn--sm",
          if = @log_selected_none,
          equals = true,
          disabled = true,
          text = "@log_selected_label",
        )

        button(
          class = "btn btn--danger btn--sm",
          if = @log_selected_none,
          not_equals = true,
          on_click = log_exec_delete_selected,
          disabled = @busy_log_exec_delete_selected,
          text = "@log_selected_label",
        )
      }

      scrollable(direction = vertical, class = u-fill-all) {
        column(class = kv-list) {
          template(:for_each = log_executions, var = e) {
            row(class = kv-list__row) {
              button(
                class = "btn btn--ghost btn--sm",
                on_click = log_exec_toggle:@e.key,
                text = "@e.mark",
              )

              column(class = u-fill, spacing = 2) {
                text("@e.range", class = "kv-list__val kv-list__val--compact")
                text("@e.summary", class = u-muted)
              }

              text("@e.outcome_label", class = badge__label, color = @e.outcome_color)
              text("@e.partial", class = badge__label)

              button(
                class = "btn btn--ghost btn--sm",
                on_click = log_exec_open:@e.key,
                disabled = @busy_log_exec_open,
                text = "{t('logs.view_logs')}",
              )

              button(
                class = "btn btn--ghost btn--sm",
                on_click = log_exec_delete:@e.key,
                disabled = @busy_log_exec_delete,
                text = "{t('logs.delete')}",
              )
            }
          }
        }
      }
    }
  }
}