rustploy-gui 0.1.53

Rustploy — desktop client (glacier-ui) for the Rustploy PaaS daemon
// Aba "Executando" do Deploy Engine; importada por deploy_engine.component.gv.
component {
  resources {
    component(name = SemDeployAtivo) {
      text("{t('deploy_engine_executando.no_deploy_in_progress')}", class = empty-state)
    }
  }

  column(class = u-fill) {
    column(class = section) {
      row(class = section__head) {
        text(
          "{t('deploy_engine_executando.running_now', deploy_engine_active_count=deploy_engine_active_count)}",
          class = section__title,
        )
      }

      column(class = section__body) {
        row(class = table__head, if = @deploy_engine_active, not_empty) {
          text(
            "{t('common.service')}",
            class = "table__head-cell table__col-svc"
          )

          text(
            "{t('common.project')}",
            class = "table__head-cell table__col-proj"
          )

          text(
            "{t('common.state')}",
            class = "table__head-cell table__col-state"
          )

          text(
            "{t('deploy_engine_executando.total')}",
            class = "table__head-cell table__col-dur"
          )

          text(
            "{t('deploy_engine_executando.phase')}",
            class = "table__head-cell table__col-start"
          )

          text(class = "table__head-cell table__col-act")
        }

        if @data_loading == "true" {
          LoadingRow
        }

        column(if = @data_loading, not_equals = true, class = u-fill) {
          each @deploy_engine_active as a (fallback = SemDeployAtivo) {
            column(class = u-fill) {
              row(class = table__row) {
                row(class = table__col-svc) {
                  TableLink(kind = service, id = @a.service_id, label = @a.service)
                }
                row(class = table__col-proj) {
                  TableLink(kind = project, id = @a.project_id, label = @a.project)
                }
                StateCell(kind = @a.state_kind, label = @a.state_label)

                text("@a.total", class = "u-muted table__col-dur")
                text("@a.phase", class = "u-muted table__col-start")

                button(
                  if = @a.is_deploy,
                  equals = true,
                  class = "btn btn--ghost btn--xs",
                  on_click = deploy_engine_open_detail:@a.service_id,
                  disabled = @busy_deploy_engine_open_detail,
                  text = "{t('deploy_engine_executando.details')}",
                )

                // Mata o deploy em andamento na hora (DeployAbort): derruba o
                // build e marca o deployment como Failed.
                button(
                  class = env__del,
                  on_click = queue_cancel:@a.deployment_id,
                  disabled = @busy_queue_cancel,
                  text = "■",
                  tooltip = "{t('deploy_engine_executando.abort_deploy')}",
                )
              }

              row(if = @a.is_deploy, equals = true, class = stepper) {
                each @a.steps as st {
                  text("@st.text", class = "stepper__step stepper__step--@st.status")
                }
              }

              hr
            }
          }
        }
      }
    }

    popup(
      value = deploy_engine_detail_open,
      trigger = none,
      on_close = deploy_engine_close_detail
    ) {
      column(class = "panel panel--round detail") {
        row(class = detail__head) {
          text(
            "{t('deploy_engine_executando.deploy', deploy_engine_detail_title=deploy_engine_detail_title)}",
            class = detail__title
          )

          button(
            class = "btn btn--ghost btn--xs",
            on_click = deploy_engine_close_detail,
            disabled = @busy_deploy_engine_close_detail,
            text = "{t('common.close')}"
          )
        }

        row(class = stepper) {
          each @deploy_engine_detail_steps as st {
            text("@st.text", class = "stepper__step stepper__step--@st.status")
          }
        }

        // Sem `sort`: as etapas ficam na ordem em que aconteceram.
        tableview(
          :items = deploy_engine_detail_rows,
          var = d,
          header_class = "table__head table__head-cell",
          row_class = "table__row table__cell table__row--divided",
          class = u-fill-all,
        ) {
          tablecolumn(label = "{t('common.state')}", class = table__col-state) {
            row(class = "state-cell state-cell--@d.kind") {
              text("@d.label", class = state-cell__label)
            }
          }

          tablecolumn(label = "{t('common.duration')}", class = table__col-dur) {
            text("@d.dur", class = u-muted)
          }

          tablecolumn(
            label = "{t('deploy_engine_executando.message')}",
            class = table__col-start
          ) {
            text("@d.msg", class = u-muted)
          }
        }
      }
    }
  }
}