th) {
- @apply px-2 text-left font-medium first-of-type:rounded-tl last-of-type:rounded-tr;
+ @apply whitespace-nowrap px-2 text-left font-medium first-of-type:rounded-tl last-of-type:rounded-tr;
}
}
@@ -98,7 +98,7 @@
}
:global(tr > td) {
- @apply px-2;
+ @apply whitespace-nowrap px-2;
}
:global(tr > td > .table-link) {
diff --git a/src/lib/holocene/time-picker.svelte b/src/lib/holocene/time-picker.svelte
index cd0b3d7ba..56df9d4fa 100644
--- a/src/lib/holocene/time-picker.svelte
+++ b/src/lib/holocene/time-picker.svelte
@@ -1,4 +1,6 @@
@@ -24,6 +33,7 @@
hideCount
error={twelveHourClock ? parseInt(hour) > 12 : parseInt(hour) > 23}
{disabled}
+ on:input={onInput}
/>
59)}
{disabled}
+ on:input={onInput}
/>
{#if includeSeconds}
59)}
{disabled}
+ on:input={onInput}
/>
{/if}
{#if twelveHourClock}
diff --git a/src/lib/i18n/locales/en/common.ts b/src/lib/i18n/locales/en/common.ts
index 0ffadbf8e..30df93180 100644
--- a/src/lib/i18n/locales/en/common.ts
+++ b/src/lib/i18n/locales/en/common.ts
@@ -160,7 +160,6 @@ export const Strings = {
'more-options': 'More options',
download: 'Download',
duration: 'Duration',
- 'search-attributes': 'Search Attributes',
'history-size-bytes': 'History Size (Bytes)',
'execution-details': 'Execution Details',
day: 'Day',
@@ -171,6 +170,7 @@ export const Strings = {
active: 'Active',
inactive: 'Inactive',
'page-not-found': 'Page Not Found',
+ value: 'Value',
table: 'Table',
failure: 'Failure',
'stack-trace': 'Stack Trace',
diff --git a/src/lib/i18n/locales/en/events.ts b/src/lib/i18n/locales/en/events.ts
index fe6af19a5..205b9e9f2 100644
--- a/src/lib/i18n/locales/en/events.ts
+++ b/src/lib/i18n/locales/en/events.ts
@@ -52,6 +52,9 @@ export const Strings = {
'task-queue': 'Task Queue',
workflow: 'Workflow',
},
+ 'custom-search-attributes': 'Custom Search Attributes',
+ 'custom-search': 'custom search',
+ attribute: 'attribute',
'event-group': 'Events related to {{eventName}}',
'error-event': 'Error Event',
'import-event-history': 'Import Event History',
diff --git a/src/lib/i18n/locales/en/schedules.ts b/src/lib/i18n/locales/en/schedules.ts
index 2382b32b2..d0fbd365f 100644
--- a/src/lib/i18n/locales/en/schedules.ts
+++ b/src/lib/i18n/locales/en/schedules.ts
@@ -7,13 +7,14 @@ export const Strings = {
creating: 'Creating Schedule...',
'back-to-schedule': 'Back to Schedule',
'back-to-schedules': 'Back to Schedules',
- name: 'Schedule Name',
+ id: 'Schedule ID',
schedule: 'Schedule',
frequency: 'Frequency',
'schedule-spec': 'Schedule Spec',
'schedule-input': 'Schedule Input',
'empty-state-title': 'No Schedules Found',
- 'empty-state-description': 'Try a different search',
+ 'empty-state-description':
+ 'Try adjusting or clearing the filters to see the Schedules running on this Namespace.',
'error-message-fetching': 'Error fetching schedules',
'recent-runs': 'Recent Runs',
'recent-runs-empty-state-title': 'No Recent Runs',
@@ -58,12 +59,12 @@ export const Strings = {
'delete-modal-title': 'Delete Schedule?',
'delete-modal-confirmation': 'Are you sure you want to delete {{schedule}}?',
'advanced-settings': 'Advanced Settings ',
- 'start-time': 'Schedule Start Time: ',
- 'end-time': 'Schedule End Time: ',
- jitter: 'Jitter: ',
- 'exclusion-calendar': 'Exclusion Calendar: ',
- 'remaining-actions': 'Remaining Actions: ',
- 'overlap-policy': 'Overlap Policy: ',
+ 'start-time': 'Schedule Start Time',
+ 'end-time': 'Schedule End Time',
+ jitter: 'Jitter',
+ 'exclusion-calendar': 'Exclusion Calendar',
+ 'remaining-actions': 'Remaining Actions',
+ 'overlap-policy': 'Overlap Policy',
'recurring-dates-heading': 'Recurring date(s)',
'recurring-dates-description':
'Select the specific dates for the schedule to always run on.',
@@ -84,10 +85,10 @@ export const Strings = {
'cron-view-description':
'Write or paste in a cron string to generate a schedule.',
'error-title': 'Error Message',
- 'name-label': 'Name*',
- 'workflow-id-label': 'Workflow Id*',
- 'workflow-type-label': 'Workflow Type*',
- 'task-queue-label': 'Task Queue*',
+ 'name-label': 'Name',
+ 'workflow-id-label': 'Workflow Id',
+ 'workflow-type-label': 'Workflow Type',
+ 'task-queue-label': 'Task Queue',
'getting-started-docs-link-preface': 'Go to',
'getting-started-docs-link': 'docs',
'getting-started-cli-link-preface': 'or get started with',
diff --git a/src/lib/i18n/locales/en/workflows.ts b/src/lib/i18n/locales/en/workflows.ts
index 7ac46b9a9..312c2b475 100644
--- a/src/lib/i18n/locales/en/workflows.ts
+++ b/src/lib/i18n/locales/en/workflows.ts
@@ -37,11 +37,10 @@ export const Strings = {
'The batch cancel request is processing in the background.',
'batch-reset-all-success':
'The batch reset request is processing in the background.',
- 'configure-workflows': 'Configure Workflow List',
- 'open-configure-workflows': 'Open workflow list configuration',
- 'close-configure-workflows': 'Close workflow list configuration',
- 'configure-workflows-description':
- 'Add (<1>1>), re-arrange (<2>2>), and remove (<3>3>), Workflow Headings to personalize the Workflow List Table.',
+ 'configure-headers': 'Configure {{title}}',
+ 'close-configure-headers': 'Close {{title}} configuration',
+ 'configure-headers-description':
+ 'Add (<1>1>), re-arrange (<2>2>), and remove (<3>3>), {{type}} Headings to personalize the {{title}} Table.',
'all-statuses': 'All Statuses',
running: 'Running',
'timed-out': 'Timed Out',
@@ -237,4 +236,7 @@ export const Strings = {
'e.g. "2h45m", "hh:mm:ss", or "1000" nanoseconds',
'start-workflow': 'Start Workflow',
'start-workflow-like-this-one': 'Start Workflow Like This One',
+ 'custom-search-attribute': 'Custom Search Attribute',
+ 'select-attribute': 'Select Attribute',
+ 'add-search-attribute': 'Add a Search Attribute',
} as const;
diff --git a/src/lib/models/search-attribute-filters.ts b/src/lib/models/search-attribute-filters.ts
new file mode 100644
index 000000000..c0de1b6f7
--- /dev/null
+++ b/src/lib/models/search-attribute-filters.ts
@@ -0,0 +1,14 @@
+import type {
+ SearchAttributes,
+ SearchAttributeType,
+} from '$lib/types/workflows';
+
+export type SearchAttributeFilter = {
+ attribute: Extract;
+ type: SearchAttributeType;
+ value: string;
+ operator: string;
+ parenthesis: string;
+ conditional: string;
+ customDate?: boolean;
+};
diff --git a/src/lib/models/workflow-filters.ts b/src/lib/models/workflow-filters.ts
index 1e006ea7f..583a4b558 100644
--- a/src/lib/models/workflow-filters.ts
+++ b/src/lib/models/workflow-filters.ts
@@ -1,8 +1,4 @@
-import type {
- SearchAttributes,
- SearchAttributesValue,
- WorkflowExecution,
-} from '$lib/types/workflows';
+import type { SearchAttributes, WorkflowExecution } from '$lib/types/workflows';
export type TextFilterAttributes = 'WorkflowId' | 'WorkflowType' | 'RunId';
export type TextFilterKeys = Extract<
@@ -31,16 +27,6 @@ export const searchAttributeToWorkflowKey: Record<
RunId: 'runId',
};
-export type WorkflowFilter = {
- attribute: Extract;
- type: SearchAttributesValue;
- value: string;
- operator: string;
- parenthesis: string;
- conditional: string;
- customDate?: boolean;
-};
-
export type SortOrder = 'asc' | 'desc';
export type WorkflowSort = {
diff --git a/src/lib/pages/schedule-edit.svelte b/src/lib/pages/schedule-edit.svelte
index 544dda9a7..c61b73824 100644
--- a/src/lib/pages/schedule-edit.svelte
+++ b/src/lib/pages/schedule-edit.svelte
@@ -45,6 +45,7 @@
daysOfMonth,
days,
months,
+ searchAttributes,
} = args;
const action: ScheduleActionParameters = {
namespace,
@@ -53,6 +54,7 @@
workflowId,
taskQueue,
input,
+ searchAttributes,
};
const spec: Partial = {
hour,
@@ -75,6 +77,6 @@
{#await scheduleFetch}
-{:then { schedule }}
-
+{:then { schedule, searchAttributes }}
+
{/await}
diff --git a/src/lib/pages/schedule-view.svelte b/src/lib/pages/schedule-view.svelte
index e389826e1..6dec760a1 100644
--- a/src/lib/pages/schedule-view.svelte
+++ b/src/lib/pages/schedule-view.svelte
@@ -11,6 +11,7 @@
import ScheduleFrequencyPanel from '$lib/components/schedule/schedule-frequency-panel.svelte';
import ScheduleInput from '$lib/components/schedule/schedule-input.svelte';
import ScheduleRecentRuns from '$lib/components/schedule/schedule-recent-runs.svelte';
+ import ScheduleSearchAttributes from '$lib/components/schedule/schedule-search-attributes.svelte';
import ScheduleUpcomingRuns from '$lib/components/schedule/schedule-upcoming-runs.svelte';
import WorkflowCounts from '$lib/components/workflow/workflow-counts.svelte';
import WorkflowStatus from '$lib/components/workflow-status.svelte';
@@ -390,6 +391,9 @@
policies={schedule?.schedule?.policies}
notes={schedule?.schedule?.state?.notes}
/>
+
= {
hour,
diff --git a/src/lib/pages/schedules.svelte b/src/lib/pages/schedules.svelte
index e43e8f27a..1a3a7b213 100644
--- a/src/lib/pages/schedules.svelte
+++ b/src/lib/pages/schedules.svelte
@@ -1,44 +1,89 @@
-{#key namespace}
+{#key [namespace, query, refresh]}
+ {@const showActions = visibleItems.length || query}
-
-
- {#if visibleItems.length}
-
-
-
- {/if}
- {#if !createDisabled && visibleItems.length}
+
+ {#if showActions}
+ {
+ refresh = Date.now();
+ }}
+ />
+ leadingIcon="settings"
+ variant="secondary"
+ on:click={openCustomizationDrawer}
+ />
+ {#if !createDisabled}
+
+ {/if}
{/if}
- {translate('common.status')} |
- {translate('schedules.name')} |
- {translate('common.workflow-type')} |
- {translate('schedules.recent-runs')} |
- {translate('schedules.upcoming-runs')} |
- {translate('schedules.schedule-spec')} |
+ {#each columns as { label }}
+ {label} |
+ {/each}
- {#each filteredSchedules(visibleItems) as schedule}
-
- {:else}
- {#if search}
-
-
-
- |
-
- {/if}
+ {#each visibleItems as schedule}
+
{/each}
-
-
- {translate('schedules.getting-started-docs-link-preface')}
- {translate('schedules.getting-started-docs-link')}
- {translate('schedules.getting-started-cli-link-preface')}
- Temporal CLI.
-
- {#if !createDisabled}
-
- {/if}
-
+ {#if error}
+
+
+ {error}
+
+
+ {:else if query}
+
+ {:else}
+
+
+ {translate('schedules.getting-started-docs-link-preface')}
+ {translate('schedules.getting-started-docs-link')}
+ {translate('schedules.getting-started-cli-link-preface')}
+ Temporal CLI.
+
+ {#if !createDisabled}
+
+ {/if}
+
+ {/if}
{/key}
+
+
diff --git a/src/lib/pages/start-workflow.svelte b/src/lib/pages/start-workflow.svelte
index 434041bc4..39cf33cfb 100644
--- a/src/lib/pages/start-workflow.svelte
+++ b/src/lib/pages/start-workflow.svelte
@@ -5,7 +5,7 @@
import { goto } from '$app/navigation';
import { page } from '$app/stores';
- import StartWorkflowSearchAttributes from '$lib/components/workflow/start-workflow-search-attributes.svelte';
+ import AddSearchAttributes from '$lib/components/workflow/add-search-attributes.svelte';
import Alert from '$lib/holocene/alert.svelte';
import Button from '$lib/holocene/button.svelte';
import CodeBlock from '$lib/holocene/code-block.svelte';
@@ -255,7 +255,7 @@
{#if viewAdvancedOptions}
-
+
{/if}