Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 31 additions & 57 deletions web/src/assets/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -285,9 +285,6 @@
},
"registries": {
"desc": "Organization registry credentials can be added to use private images for all pipelines of an organization."
},
"agents": {
"desc": "Agents registered for this organization."
}
}
},
Expand All @@ -303,56 +300,6 @@
"desc": "Global registry credentials can be added to use private images for all pipelines.",
"warning": "These registry credentials are available to all users."
},
"agents": {
"agents": "Agents",
"desc": "Agents registered on this server.",
"none": "There are no agents yet.",
"id": "ID",
"add": "Add agent",
"save": "Save agent",
"show": "Show agents",
"created": "Agent created",
"saved": "Agent saved",
"deleted": "Agent deleted",
"name": {
"name": "Name",
"placeholder": "Name of the agent"
},
"no_schedule": {
"name": "Disable agent",
"placeholder": "Stop agent from taking new tasks"
},
"token": "Token",
"platform": {
"platform": "Platform",
"badge": "platform"
},
"backend": {
"backend": "Backend",
"badge": "backend"
},
"capacity": {
"capacity": "Capacity",
"desc": "The maximum amount of parallel pipelines executed by this agent.",
"badge": "capacity"
},
"custom_labels": {
"custom_labels": "Custom Labels",
"desc": "The custom labels set by the agent admin on agent startup."
},
"org": {
"badge": "org"
},
"version": "Version",
"last_contact": {
"last_contact": "Last contact",
"badge": "last contact"
},
"never": "Never",
"delete_confirm": "Do you really want to delete this agent? It will no longer be able to connect to the server.",
"edit_agent": "Edit agent",
"delete_agent": "Delete agent"
},
"queue": {
"queue": "Queue",
"desc": "Tasks waiting to be executed by agents.",
Expand Down Expand Up @@ -448,9 +395,6 @@
"download_cli": "Download CLI",
"reset_token": "Reset token",
"swagger_ui": "Swagger UI"
},
"agents": {
"desc": "Agents registered to your account repos."
}
}
},
Expand Down Expand Up @@ -588,5 +532,35 @@
"exit_fullscreen": "Exit fullscreen",
"help_translating": "You can help translate Woodpecker into your language on {0}.",
"weblate": "our Weblate",
"disabled": "Disabled"
"disabled": "Disabled",
"create": "Create",
"agents_org_desc": "Agents registered for this organization.",
"agents": "Agents",
"agents_server_desc": "Agents registered on this server.",
"no_agents": "There are no agents yet.",
"id": "ID",
"add_agent": "Add agent",
"save_agent": "Save agent",
"show_agents": "Show agents",
"agent_created": "Agent created",
"agent_saved": "Agent saved",
"agent_deleted": "Agent deleted",
"name": "Name",
"agent_name_placeholder": "Name of the agent",
"agent_no_schedule": "Disable agent",
"agent_no_schedule_placeholder": "Stop agent from taking new tasks",
"token": "Token",
"platform": "Platform",
"backend": "Backend",
"capacity": "Capacity",
"capacity_desc": "The maximum amount of parallel pipelines executed by this agent.",
"custom_labels": "Custom Labels",
"custom_labels_desc": "The custom labels set by the agent admin on agent startup.",
"version": "Version",
"last_contact": "Last contact",
"never": "Never",
"agent_delete_confirm": "Do you really want to delete this agent? It will no longer be able to connect to the server.",
"edit_agent": "Edit agent",
"delete_agent": "Delete agent",
"agents_user_desc": "Agents registered to your account repos."
}
40 changes: 19 additions & 21 deletions web/src/components/agent/AgentForm.vue
Original file line number Diff line number Diff line change
@@ -1,62 +1,60 @@
<template>
<form @submit.prevent="$emit('save')">
<InputField v-slot="{ id }" :label="$t('admin.settings.agents.name.name')">
<TextField :id="id" v-model="agent.name" :placeholder="$t('admin.settings.agents.name.placeholder')" required />
<InputField v-slot="{ id }" :label="$t('name')">
<TextField :id="id" v-model="agent.name" :placeholder="$t('agent_name_placeholder')" required />
</InputField>

<InputField :label="$t('admin.settings.agents.no_schedule.name')">
<InputField :label="$t('agent_no_schedule')">
<Checkbox
:model-value="agent.no_schedule || false"
:label="$t('admin.settings.agents.no_schedule.placeholder')"
:label="$t('agent_no_schedule_placeholder')"
@update:model-value="updateAgent({ no_schedule: $event })"
/>
</InputField>

<template v-if="isEditingAgent">
<InputField v-slot="{ id }" :label="$t('admin.settings.agents.token')">
<TextField :id="id" v-model="agent.token" :placeholder="$t('admin.settings.agents.token')" disabled />
<template v-if="isEditing">
<InputField v-slot="{ id }" :label="$t('token')">
<TextField :id="id" v-model="agent.token" :placeholder="$t('token')" disabled />
</InputField>

<InputField v-slot="{ id }" :label="$t('admin.settings.agents.id')">
<InputField v-slot="{ id }" :label="$t('id')">
<TextField :id="id" :model-value="agent.id?.toString()" disabled />
</InputField>

<InputField v-slot="{ id }" :label="$t('admin.settings.agents.backend.backend')" :docs-url="backendDocsUrl">
<InputField v-slot="{ id }" :label="$t('backend')" :docs-url="backendDocsUrl">
<TextField :id="id" v-model="agent.backend" disabled />
</InputField>

<InputField v-slot="{ id }" :label="$t('admin.settings.agents.platform.platform')">
<InputField v-slot="{ id }" :label="$t('platform')">
<TextField :id="id" v-model="agent.platform" disabled />
</InputField>

<InputField
v-if="agent.custom_labels && Object.keys(agent.custom_labels).length > 0"
v-slot="{ id }"
:label="$t('admin.settings.agents.custom_labels.custom_labels')"
:label="$t('custom_labels')"
>
<span class="text-wp-text-alt-100">{{ $t('admin.settings.agents.custom_labels.desc') }}</span>
<span class="text-wp-text-alt-100">{{ $t('custom_labels_desc') }}</span>
<TextField :id="id" :model-value="formatCustomLabels(agent.custom_labels)" disabled />
</InputField>

<InputField
v-slot="{ id }"
:label="$t('admin.settings.agents.capacity.capacity')"
:label="$t('capacity')"
docs-url="docs/administration/configuration/agent#max_workflows"
>
<span class="text-wp-text-alt-100">{{ $t('admin.settings.agents.capacity.desc') }}</span>
<span class="text-wp-text-alt-100">{{ $t('capacity_desc') }}</span>
<TextField :id="id" :model-value="agent.capacity?.toString()" disabled />
</InputField>

<InputField v-slot="{ id }" :label="$t('admin.settings.agents.version')">
<InputField v-slot="{ id }" :label="$t('version')">
<TextField :id="id" :model-value="agent.version" disabled />
</InputField>

<InputField v-slot="{ id }" :label="$t('admin.settings.agents.last_contact.last_contact')">
<InputField v-slot="{ id }" :label="$t('last_contact')">
<TextField
:id="id"
:model-value="
agent.last_contact ? date.timeAgo(agent.last_contact * 1000) : $t('admin.settings.agents.never')
"
:model-value="agent.last_contact ? date.timeAgo(agent.last_contact * 1000) : $t('never')"
disabled
/>
</InputField>
Expand All @@ -68,7 +66,7 @@
:is-loading="isSaving"
type="submit"
color="green"
:text="isEditingAgent ? $t('admin.settings.agents.save') : $t('admin.settings.agents.add')"
:text="isEditing ? $t('save_agent') : $t('add_agent')"
/>
</div>
</form>
Expand All @@ -86,7 +84,7 @@ import type { Agent } from '~/lib/api/types';

const props = defineProps<{
modelValue: Partial<Agent>;
isEditingAgent: boolean;
isEditing?: boolean;
isSaving: boolean;
}>();

Expand Down
27 changes: 9 additions & 18 deletions web/src/components/agent/AgentList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,20 @@
<span>{{ agent.name || `Agent ${agent.id}` }}</span>
<span class="ml-auto flex gap-2">
<Badge v-if="agent.no_schedule" :value="$t('disabled')" />
<Badge v-if="isAdmin === true && agent.org_id !== -1" :label="$t('org').toLowerCase()" :value="agent.org_id" />
<Badge v-if="agent.platform" :label="$t('platform')" :value="agent.platform" />
<Badge v-if="agent.backend" :label="$t('backend')" :value="agent.backend" />
<Badge v-if="agent.capacity" :label="$t('capacity')" :value="agent.capacity" />
<Badge
v-if="isAdmin === true && agent.org_id !== -1"
:label="$t('admin.settings.agents.org.badge')"
:value="agent.org_id"
/>
<Badge v-if="agent.platform" :label="$t('admin.settings.agents.platform.badge')" :value="agent.platform" />
<Badge v-if="agent.backend" :label="$t('admin.settings.agents.backend.badge')" :value="agent.backend" />
<Badge v-if="agent.capacity" :label="$t('admin.settings.agents.capacity.badge')" :value="agent.capacity" />
<Badge
:label="$t('admin.settings.agents.last_contact.badge')"
:value="agent.last_contact ? date.timeAgo(agent.last_contact * 1000) : $t('admin.settings.agents.never')"
:label="$t('last_contact')"
:value="agent.last_contact ? date.timeAgo(agent.last_contact * 1000) : $t('never')"
/>
</span>
<div class="ml-2 flex items-center gap-2">
<IconButton
icon="edit"
:title="$t('admin.settings.agents.edit_agent')"
class="h-8 w-8"
@click="$emit('edit', agent)"
/>
<IconButton icon="edit" :title="$t('edit_agent')" class="h-8 w-8" @click="$emit('edit', agent)" />
<IconButton
icon="trash"
:title="$t('admin.settings.agents.delete_agent')"
:title="$t('delete_agent')"
class="hover:text-wp-error-100 h-8 w-8"
:is-loading="isDeleting"
@click="$emit('delete', agent)"
Expand All @@ -41,7 +32,7 @@
<div v-if="loading" class="flex justify-center">
<Icon name="spinner" class="animate-spin" />
</div>
<div v-else-if="agents?.length === 0" class="ml-2">{{ $t('admin.settings.agents.none') }}</div>
<div v-else-if="agents?.length === 0" class="ml-2">{{ $t('no_agents') }}</div>
</div>
</template>

Expand Down
101 changes: 0 additions & 101 deletions web/src/components/agent/AgentManager.vue

This file was deleted.

Loading