component {
resources {
link(rel = import, href = "project_env.component.gv", as = ProjectEnvTab)
link(rel = import, href = "project_secrets.component.gv", as = ProjectSecretsTab)
link(rel = import, href = "project_jobs.component.gv", as = ProjectJobsTab)
component(name = SemServicosNoProjeto) {
text("{t('project_services.no_service_in_this_project')}", class = u-muted)
}
}
column(class = content) {
row(class = page-head) {
column(class = page-head__titles) {
row(class = proj-bar) {
button(
class = "btn btn--ghost",
on_click = nav_projects,
disabled = @busy_nav_projects,
text = "{t('project_services.projects')}",
)
column(class = u-fill)
if @editing_project != "true" {
flow(class = proj-bar__actions) {
button(
class = "btn btn--ghost btn--sm",
on_click = open_services_reorder_window,
disabled = @busy_open_services_reorder_window,
text = "{t('project_services.reorder_services')}",
)
button(
class = "btn btn--ghost btn--sm",
on_click = project_deploy,
disabled = @busy_project_deploy,
text = "{t('project_services.deploy')}",
)
button(
class = "btn btn--primary btn--sm",
on_click = open_new_service_window,
disabled = @busy_open_new_service_window,
text = "{t('project_services.new_service')}",
)
button(
class = "btn btn--ghost btn--sm",
on_click = edit_project_toggle,
disabled = @busy_edit_project_toggle,
text = "{t('project_services.edit_project')}",
)
if @project_can_delete == "1" {
button(
class = "btn btn--danger btn--sm",
on_click = delete_project:@selected_project_id,
disabled = @busy_delete_project,
text = "{t('project_services.remove_project')}",
)
}
}
}
}
if @editing_project == "true" {
form(
name = edit_project,
on_submit = save_project_edit,
on_validation_error = project_edit_show_validation_errors,
class = "form form--gap-6",
) {
input(
class = field__input,
form_control = edit_project_name,
rules = required,
msg = "{t('common.enter_a_name')}",
placeholder = "{t('common.project_name')}",
)
text(
"@error_edit_project_name",
class = u-error,
if = @error_edit_project_name,
not_empty,
)
input(
class = field__input,
form_control = edit_project_description,
placeholder = "{t('project_services.description_optional')}",
)
row(class = env__add) {
button(type = submit, disabled = @busy_save_project_edit, class = "btn btn--primary", text = "{t('common.save')}")
button(
class = "btn btn--ghost",
on_click = cancel_project_edit,
disabled = @busy_cancel_project_edit,
text = "{t('common.cancel')}",
)
text("@project_action_message", class = u-muted)
}
}
} else {
text("@project_name", class = page-head__title)
text("@project_description", class = page-head__subtitle)
text(
"@project_action_message",
if = @project_action_message,
not_equals = "",
class = u-muted,
)
}
}
}
scroll(class = tabs__scroll, direction = horizontal) {
row(class = tabs__main) {
TabButton(
label = "{t('project_services.services')}",
current = @project_tab,
target = services,
action = project_tab:services,
)
TabButton(
label = "{t('project_services.variables', project_env_count=project_env_count)}",
current = @project_tab,
target = env,
action = project_tab:env,
)
TabButton(
label = "{t('project_services.secrets', project_secrets_count=project_secrets_count)}",
current = @project_tab,
target = secrets,
action = project_tab:secrets,
)
TabButton(
label = "{t('project_services.jobs', project_jobs_count=project_jobs_count)}",
current = @project_tab,
target = jobs,
action = project_tab:jobs,
)
}
}
hr
if @project_loading == "true" {
LoadingRow
}
if @project_tab == "env" {
ProjectEnvTab(if = @project_loading, not_equals = true)
}
if @project_tab == "secrets" {
ProjectSecretsTab(if = @project_loading, not_equals = true)
}
if @project_tab == "jobs" {
ProjectJobsTab
}
if @project_tab == "services" {
scrollable(
if = @project_loading,
not_equals = true,
direction = vertical,
class = u-fill-all,
) {
column(class = grid) {
each @project_services as r (fallback = SemServicosNoProjeto) {
row(class = grid__row) {
ServiceCard(:for_each = r.cards, var = c, spread = @c)
}
}
}
}
}
}
}