mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-06-10 01:19:35 +00:00
dca01e6817
Fixes: https://github.com/woodpecker-ci/woodpecker/issues/1079 What do you think about using a consistent `woodpecker` color scheme? Right now, the `lime` color scheme from windicss is used that does not really fit the primary color used for the documentation website. I have used the primary color `#4CAF50` from the docs and created a color palette with https://palettte.app/: <details> <summary>JSON source</summary> ```Json [ { "paletteName": "New Palette", "swatches": [ { "name": "New Swatch", "color": "166E30" }, { "name": "New Swatch", "color": "248438" }, { "name": "New Swatch", "color": "369943" }, { "name": "New Swatch", "color": "4CAF50" }, { "name": "New Swatch", "color": "68C464" }, { "name": "New Swatch", "color": "8AD97F" } ] } ] ``` </details> ![image](https://github.com/woodpecker-ci/woodpecker/assets/3391958/a254f1e0-ce17-43a9-9e8b-72252296fd6f) I have added this color scheme to the windicss config and replaced the use of `lime` in the UI. While `woodpecker-300` would be the primary color that is used for the docs, I currently use `woodpecke-400` as primary color for the UI to fix some contrast issues. ![image](https://github.com/woodpecker-ci/woodpecker/assets/3391958/7bf751e1-f2a6-481c-bee7-a27d27cf8adb) ![image](https://github.com/woodpecker-ci/woodpecker/assets/3391958/e5673dc7-81c1-4fd4-bef9-14494bc5aa27) What do you think? If you would like to stay with the current colors, that's fine for me, I can just use the custom CSS feature in this case. --------- Co-authored-by: 6543 <6543@obermui.de>
118 lines
3.7 KiB
Vue
118 lines
3.7 KiB
Vue
<template>
|
|
<Popup :open="open" @close="$emit('close')">
|
|
<Panel v-if="!loading">
|
|
<form @submit.prevent="triggerDeployPipeline">
|
|
<span class="text-xl text-wp-text-100">{{
|
|
$t('repo.deploy_pipeline.title', { pipelineId: pipelineNumber })
|
|
}}</span>
|
|
<InputField :label="$t('repo.deploy_pipeline.enter_target')">
|
|
<TextField v-model="payload.environment" required />
|
|
</InputField>
|
|
<InputField :label="$t('repo.deploy_pipeline.variables.title')">
|
|
<span class="text-sm text-wp-text-alt-100 mb-2">{{ $t('repo.deploy_pipeline.variables.desc') }}</span>
|
|
<div class="flex flex-col gap-2">
|
|
<div v-for="(value, name) in payload.variables" :key="name" class="flex gap-4">
|
|
<TextField :model-value="name" disabled />
|
|
<TextField :model-value="value" disabled />
|
|
<div class="w-34 flex-shrink-0">
|
|
<Button color="red" class="ml-auto" @click="deleteVar(name)">
|
|
<i-la-times />
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
<form class="flex gap-4" @submit.prevent="addPipelineVariable">
|
|
<TextField
|
|
v-model="newPipelineVariable.name"
|
|
:placeholder="$t('repo.deploy_pipeline.variables.name')"
|
|
required
|
|
/>
|
|
<TextField
|
|
v-model="newPipelineVariable.value"
|
|
:placeholder="$t('repo.deploy_pipeline.variables.value')"
|
|
required
|
|
/>
|
|
<Button
|
|
class="w-34 flex-shrink-0"
|
|
start-icon="plus"
|
|
type="submit"
|
|
:text="$t('repo.deploy_pipeline.variables.add')"
|
|
/>
|
|
</form>
|
|
</div>
|
|
</InputField>
|
|
<Button type="submit" :text="$t('repo.deploy_pipeline.trigger')" />
|
|
</form>
|
|
</Panel>
|
|
</Popup>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { onMounted, ref, toRef } from 'vue';
|
|
import { useRouter } from 'vue-router';
|
|
|
|
import Button from '~/components/atomic/Button.vue';
|
|
import InputField from '~/components/form/InputField.vue';
|
|
import TextField from '~/components/form/TextField.vue';
|
|
import Panel from '~/components/layout/Panel.vue';
|
|
import Popup from '~/components/layout/Popup.vue';
|
|
import useApiClient from '~/compositions/useApiClient';
|
|
import { inject } from '~/compositions/useInjectProvide';
|
|
|
|
const props = defineProps<{
|
|
open: boolean;
|
|
pipelineNumber: string;
|
|
}>();
|
|
|
|
const emit = defineEmits<{
|
|
(event: 'close'): void;
|
|
}>();
|
|
|
|
const apiClient = useApiClient();
|
|
|
|
const repo = inject('repo');
|
|
|
|
const router = useRouter();
|
|
|
|
const payload = ref<{ id: string; environment: string; variables: Record<string, string> }>({
|
|
id: '',
|
|
environment: '',
|
|
variables: {},
|
|
});
|
|
const newPipelineVariable = ref<{ name: string; value: string }>({ name: '', value: '' });
|
|
|
|
const loading = ref(true);
|
|
onMounted(async () => {
|
|
loading.value = false;
|
|
});
|
|
|
|
function addPipelineVariable() {
|
|
if (!newPipelineVariable.value.name || !newPipelineVariable.value.value) {
|
|
return;
|
|
}
|
|
payload.value.variables[newPipelineVariable.value.name] = newPipelineVariable.value.value;
|
|
newPipelineVariable.value.name = '';
|
|
newPipelineVariable.value.value = '';
|
|
}
|
|
|
|
function deleteVar(key: string) {
|
|
delete payload.value.variables[key];
|
|
}
|
|
|
|
const pipelineNumber = toRef(props, 'pipelineNumber');
|
|
async function triggerDeployPipeline() {
|
|
loading.value = true;
|
|
const newPipeline = await apiClient.deployPipeline(repo.value.id, pipelineNumber.value, payload.value);
|
|
|
|
emit('close');
|
|
|
|
await router.push({
|
|
name: 'repo-pipeline',
|
|
params: {
|
|
pipelineId: newPipeline.number,
|
|
},
|
|
});
|
|
|
|
loading.value = false;
|
|
}
|
|
</script>
|