rustploy-gui 0.1.53

Rustploy — desktop client (glacier-ui) for the Rustploy PaaS daemon
component {
  resources {
    component(name = SemDependencias) {
      text("{t('advanced.no_dependencies')}", class = u-muted)
    }
  }

  scrollable(
    direction = vertical,
    class = u-fill-all,
  ) {
    column(class = service__main) {
      form(name = advanced, on_submit = advanced_save, class = form-panel) {
        text("{t('advanced.replicas')}", class = u-label-cap)

        spinbox(
          field_class = field__spin,
          form_control = service_form_replicas,
          :value = service_form_replicas,
          min = 1,
          max = 20,
          width = 90,
          placeholder = 1,
        )

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

        input(
          class = field__input,
          form_control = service_form_run_command,
          :value = service_form_run_command,
          on_change = field:service_form_run_command,
          placeholder = "{t('advanced.image_default')}",
        )

        text("{t('advanced.current_run_args', service_run_args=service_run_args)}", class = u-muted)

        toggle(
          :checked = service_form_autostart,
          on_toggle = field:service_form_autostart,
          label = "{t('advanced.autostart')}",
        )

        text("{t('advanced.autostart_hint')}", class = u-muted)

        if @service_source_kind == "Registry" {
          toggle(
            :checked = service_form_registry_auto_deploy,
            on_toggle = field:service_form_registry_auto_deploy,
            label = "{t('advanced.registry_auto_deploy')}",
          )

          text("{t('advanced.registry_auto_deploy_hint')}", class = u-muted)
        }

        row(class = env__add) {
          button(class = "btn btn--primary", on_click = advanced_save, disabled = @busy_advanced_save, text = "{t('common.save_2')}")
          text("@service_action_message", class = u-muted)
        }
      }

      column(class = form-panel) {
        text(
          "{t('advanced.depends_on', service_dependencies_count=service_dependencies_count)}",
          class = u-label-cap,
        )

        text("{t('advanced.depends_on_hint')}", class = u-muted)

        column(class = kv-list, height = shrink) {
          each @service_dependencies as d (fallback = SemDependencias) {
            row(class = kv-list__row) {
              button(
                class = env__del,
                on_click = dependency_delete:@d.id,
                disabled = @busy_dependency_delete,
                text = "✕",
              )

              text(class = env__sep)
              text("@d.index.", class = env__key)
              text("@d.name", class = "kv-list__val kv-list__val--compact")
            }
          }
        }

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

        select(
          class = form-select,
          :options = service_dependency_options,
          :value = service_form_dependency_add_id,
          on_change = field:service_form_dependency_add_id,
          placeholder = "{t('advanced.choose_service')}",
          label_field = name,
          value_field = id,
        )

        // Sem serviço escolhido (valor nulo do select) o botão fica travado.
        row(class = env__add) {
          button(
            class = "btn btn--primary",
            if = @service_form_dependency_add_id,
            equals = "",
            disabled = true,
            text = "{t('advanced.add_dependency_button')}",
          )

          button(
            class = "btn btn--primary",
            if = @service_form_dependency_add_id,
            not_equals = "",
            on_click = dependency_add,
            disabled = @busy_dependency_add,
            text = "{t('advanced.add_dependency_button')}",
          )
        }
      }

      column(class = form-panel) {
        text(
          "{t('advanced.pre_deploy_queue', pre_deploy_checks_count=pre_deploy_checks_count)}",
          class = u-label-cap,
        )

        text(
          "{t('advanced.runs_these_jobs_in_order_before')}",
          class = u-muted,
        )

        scrollable(direction = vertical, class = u-fill-all) {
          column(class = kv-list, height = shrink) {
            template(
              :for_each = pre_deploy_checks,
              foreach_fallback = SemChecks,
              var = c,
              on_reorder = pre_deploy_check_reorder,
              reorder_key = id,
            ) {
              if @c.__dragging == "true" {
                row(class = "kv-list__row kv-list__row--dragging") {
                  text(
                    "⋮",
                    class = "env__drag-handle env__drag-handle--dragging",
                    drag_handle = true,
                  )

                  button(
                    class = env__del,
                    on_click = pre_deploy_check_delete:@c.id,
                    disabled = @busy_pre_deploy_check_delete,
                    text = "✕",
                  )

                  text(class = env__sep)
                  text("@c.index.", class = env__key)
                  text("@c.name", class = "kv-list__val kv-list__val--compact")
                }
              } else {
                row(class = kv-list__row) {
                  text(
                    "⋮",
                    class = env__drag-handle,
                    drag_handle = true,
                  )

                  button(
                    class = env__del,
                    on_click = pre_deploy_check_delete:@c.id,
                    disabled = @busy_pre_deploy_check_delete,
                    text = "✕",
                  )

                  text(class = env__sep)
                  text("@c.index.", class = env__key)
                  text("@c.name", class = "kv-list__val kv-list__val--compact")
                }
              }
            }
          }
        }

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

        select(
          class = form-select,
          :options = pre_deploy_available_jobs,
          :value = service_form_pre_deploy_check_add_job_id,
          on_change = field:service_form_pre_deploy_check_add_job_id,
          placeholder = "{t('advanced.choose_job')}",
          label_field = name,
          value_field = id,
        )

        row(class = env__add) {
          button(
            class = "btn btn--primary",
            if = @service_form_pre_deploy_check_add_job_id,
            equals = "",
            disabled = true,
            text = "{t('advanced.add_to_the_queue_2')}",
          )

          button(
            class = "btn btn--primary",
            if = @service_form_pre_deploy_check_add_job_id,
            not_equals = "",
            on_click = pre_deploy_check_add,
            disabled = @busy_pre_deploy_check_add,
            text = "{t('advanced.add_to_the_queue_2')}",
          )
        }
      }
    }
  }
}