mirror of
https://github.com/kestra-io/kestra.git
synced 2025-12-25 11:12:12 -05:00
Compare commits
4 Commits
tmp/showca
...
run-develo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9575cc1c87 | ||
|
|
3cbad1ce0d | ||
|
|
760050e9fc | ||
|
|
43f47ec337 |
@@ -1,6 +1,7 @@
|
||||
package io.kestra.core.models.triggers;
|
||||
|
||||
import io.kestra.core.junit.annotations.KestraTest;
|
||||
import io.kestra.core.models.TenantInterface;
|
||||
import io.kestra.core.models.flows.Flow;
|
||||
import io.kestra.core.runners.RunContextFactory;
|
||||
import jakarta.inject.Inject;
|
||||
@@ -22,21 +23,15 @@ class StatefulTriggerInterfaceTest {
|
||||
RunContextFactory runContextFactory;
|
||||
|
||||
@Test
|
||||
void shouldPersistAndReadState() throws Exception {
|
||||
void shouldPersistAndReadState() {
|
||||
var flow = Flow.builder()
|
||||
.tenantId("main")
|
||||
.namespace("io.kestra.unittest")
|
||||
.id("test-flow")
|
||||
.revision(1)
|
||||
.build();
|
||||
|
||||
var runContext = runContextFactory.of(flow, Map.of(
|
||||
"flow", Map.of(
|
||||
"tenantId", "main",
|
||||
"namespace", "io.kestra.unittest",
|
||||
"id", "test-flow",
|
||||
"revision", 1
|
||||
)
|
||||
));
|
||||
var runContext = runContextFactory.of(flow, Map.of());
|
||||
|
||||
var key = defaultKey("ns", "test-flow", "trigger-persist");
|
||||
var ttl = Optional.of(Duration.ofMinutes(5));
|
||||
@@ -59,21 +54,15 @@ class StatefulTriggerInterfaceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExpireOldEntriesAfterTTL() throws Exception {
|
||||
void shouldExpireOldEntriesAfterTTL() {
|
||||
var flow = Flow.builder()
|
||||
.tenantId("main")
|
||||
.namespace("io.kestra.unittest")
|
||||
.id("test-flow")
|
||||
.revision(1)
|
||||
.build();
|
||||
|
||||
var runContext = runContextFactory.of(flow, Map.of(
|
||||
"flow", Map.of(
|
||||
"tenantId", "main",
|
||||
"namespace", "io.kestra.unittest",
|
||||
"id", "test-flow",
|
||||
"revision", 1
|
||||
)
|
||||
));
|
||||
var runContext = runContextFactory.of(flow, Map.of());
|
||||
|
||||
var key = defaultKey("ns", "test-flow", "trigger-ttl");
|
||||
var ttl = Optional.of(Duration.ofMinutes(5));
|
||||
|
||||
@@ -24,6 +24,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class DockerService {
|
||||
// DDDDDDD
|
||||
public static DockerClient client(DockerClientConfig dockerClientConfig) {
|
||||
DockerHttpClient dockerHttpClient = new ApacheDockerHttpClient.Builder()
|
||||
.dockerHost(dockerClientConfig.getDockerHost())
|
||||
|
||||
7
ui/package-lock.json
generated
7
ui/package-lock.json
generated
@@ -11,7 +11,6 @@
|
||||
"dependencies": {
|
||||
"@js-joda/core": "^5.6.5",
|
||||
"@kestra-io/ui-libs": "^0.0.263",
|
||||
"@swc/core-linux-x64-gnu": "1.15.3",
|
||||
"@vue-flow/background": "^1.3.2",
|
||||
"@vue-flow/controls": "^1.1.2",
|
||||
"@vue-flow/core": "^1.47.0",
|
||||
@@ -14767,9 +14766,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/mdast-util-to-hast": {
|
||||
"version": "13.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
|
||||
"integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
|
||||
"version": "13.2.1",
|
||||
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
|
||||
"integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/hast": "^3.0.0",
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
<template>
|
||||
<div class="tabs-wrapper">
|
||||
<div class="tabs">
|
||||
<button
|
||||
<el-tooltip
|
||||
v-for="element of tabs"
|
||||
:key="element.uid"
|
||||
:class="{active: openTabs.includes(element.uid)}"
|
||||
@click="setTabValue(element.uid)"
|
||||
:content="element.button.label"
|
||||
placement="bottom"
|
||||
:showAfter="500"
|
||||
>
|
||||
<component class="tabs-icon" :is="element.button.icon" />
|
||||
{{ element.button.label }}
|
||||
</button>
|
||||
<button
|
||||
:class="{active: openTabs.includes(element.uid)}"
|
||||
@click="setTabValue(element.uid)"
|
||||
>
|
||||
<component class="tabs-icon" :is="element.button.icon" />
|
||||
<span class="tab-label">{{ element.button.label }}</span>
|
||||
</button>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<slot />
|
||||
</div>
|
||||
@@ -34,19 +40,19 @@
|
||||
|
||||
<style scoped lang="scss">
|
||||
@use "@kestra-io/ui-libs/src/scss/color-palette.scss" as colorPalette;
|
||||
.tabs-wrapper{
|
||||
display:flex;
|
||||
|
||||
.tabs-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid var(--ks-border-primary);
|
||||
background: var(--ks-background-card);
|
||||
background-image: linear-gradient(
|
||||
to right,
|
||||
colorPalette.$base-blue-400 0%,
|
||||
colorPalette.$base-blue-500 35%,
|
||||
rgba(colorPalette.$base-blue-500, 0) 55%,
|
||||
rgba(colorPalette.$base-blue-500, 0) 100%
|
||||
);
|
||||
background-size: 250% 100%;
|
||||
background-position: 100% 0;
|
||||
transition: background-position .2s;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none;
|
||||
|
||||
.dark & {
|
||||
background-image: linear-gradient(
|
||||
to right,
|
||||
@@ -56,35 +62,38 @@
|
||||
rgba(colorPalette.$base-blue-700, 0) 100%
|
||||
);
|
||||
}
|
||||
background-size: 250% 100%;
|
||||
background-position: 100% 0;
|
||||
transition: background-position .2s;
|
||||
}
|
||||
.tabs{
|
||||
|
||||
.tabs {
|
||||
padding: .5rem 1rem;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: .25rem .5rem;
|
||||
align-items: center;
|
||||
gap: .5rem;
|
||||
|
||||
> button{
|
||||
background: none;
|
||||
border: none;
|
||||
padding: .5rem;
|
||||
font-size: .8rem;
|
||||
> button {
|
||||
background: transparent;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 6px;
|
||||
padding: 0.35rem 0.75rem;
|
||||
font-size: 0.85rem;
|
||||
white-space: nowrap;
|
||||
color: var(--ks-color-text-primary);
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: opacity .2s;
|
||||
gap: .25rem;
|
||||
opacity: .5;
|
||||
transition: all 0.2s ease-in-out;
|
||||
gap: 0.4rem;
|
||||
opacity: .7;
|
||||
|
||||
&:hover{
|
||||
color: var(--ks-color-text-secondary);
|
||||
&:hover {
|
||||
background-color: var(--ks-background-body);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&.active{
|
||||
&.active {
|
||||
background-color: var(--ks-background-body);
|
||||
border-color: var(--ks-border-primary);
|
||||
color: var(--ks-color-text-primary);
|
||||
opacity: 1;
|
||||
}
|
||||
@@ -92,7 +101,25 @@
|
||||
}
|
||||
|
||||
.tabs-icon {
|
||||
margin-right: .25rem;
|
||||
vertical-align: bottom;
|
||||
font-size: 1.1em;
|
||||
vertical-align: middle;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.tab-label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
gap: 0.25rem;
|
||||
padding: 0.4rem 0.5rem;
|
||||
}
|
||||
|
||||
.tabs > button {
|
||||
padding: 0.5rem;
|
||||
gap: 0;
|
||||
aspect-ratio: 1 / 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -190,6 +190,8 @@
|
||||
},
|
||||
onSubmit(formRef) {
|
||||
if (formRef && this.flowCanBeExecuted) {
|
||||
this.checks = [];
|
||||
this.executeClicked = false;
|
||||
formRef.validate((valid) => {
|
||||
if (!valid) {
|
||||
return false;
|
||||
@@ -223,6 +225,7 @@
|
||||
nextStep: true,
|
||||
});
|
||||
}
|
||||
this.executeClicked = true;
|
||||
this.$emit("executionTrigger");
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user