@parallelworks/ui 0.35.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/ai/agent/permissions.d.ts +2 -2
- package/dist/ai/agent/permissions.js +3 -1
- package/dist/ai/components/agent/AgentMessageParts.js +8 -2
- package/dist/ai/components/agent/PermissionPicker.js +1 -0
- package/dist/ai/strings.d.ts +8 -0
- package/dist/ai/strings.js +8 -0
- package/dist/ai/types.d.ts +2 -0
- package/dist/components/Dropdown.d.ts +2 -0
- package/dist/components/Dropdown.js +7 -2
- package/dist/components/Input.d.ts +11 -6
- package/dist/components/Input.js +93 -74
- package/dist/components/Provider.d.ts +31 -0
- package/dist/components/Provider.js +50 -2
- package/dist/editing.d.ts +404 -0
- package/dist/editor/EditorField.js +1 -1
- package/dist/editor/Monaco.d.ts +15 -1
- package/dist/editor/Monaco.js +117 -13
- package/dist/editor/editorModel.d.ts +5 -0
- package/dist/editor/editorModel.js +23 -0
- package/dist/editor/index.d.ts +4 -0
- package/dist/editor/index.js +5 -1
- package/dist/editor/lintContext.d.ts +21 -0
- package/dist/editor/lintContext.js +136 -0
- package/dist/editor/lintOwner.d.ts +2 -0
- package/dist/editor/lintOwner.js +5 -0
- package/dist/editor/nestedText.d.ts +13 -0
- package/dist/editor/nestedText.js +15 -0
- package/dist/editor/reveal.d.ts +4 -0
- package/dist/editor/reveal.js +15 -0
- package/dist/editor/settingsYaml.d.ts +12 -0
- package/dist/editor/settingsYaml.js +41 -0
- package/dist/form/Fields/DropdownField.js +1 -1
- package/dist/form/Fields/DurationField.js +1 -1
- package/dist/form/Form.js +1 -1
- package/dist/form/fieldRegistry.js +1 -1
- package/dist/form/index.js +5 -5
- package/dist/graph/InputDialog.d.ts +80 -0
- package/dist/graph/InputDialog.js +596 -0
- package/dist/graph/ProblemsButton.d.ts +9 -0
- package/dist/graph/ProblemsButton.js +61 -0
- package/dist/graph/ShortcutsButton.d.ts +15 -0
- package/dist/graph/SuggestionInput.d.ts +18 -0
- package/dist/graph/ToolbarPopover.d.ts +8 -0
- package/dist/graph/ToolbarPopover.js +71 -0
- package/dist/graph/editorApi.d.ts +51 -0
- package/dist/graph/editorChrome.d.ts +27 -0
- package/dist/graph/editorFields.d.ts +180 -0
- package/dist/graph/editorPrimitives.d.ts +60 -0
- package/dist/graph/editorPrimitives.js +59 -0
- package/dist/graph/editorStrings.d.ts +695 -0
- package/dist/graph/editorStrings.js +699 -0
- package/dist/graph/expressionRefs.d.ts +12 -0
- package/dist/graph/fieldProblems.d.ts +32 -0
- package/dist/graph/index.d.ts +6 -0
- package/dist/graph/index.js +5 -1
- package/dist/graph/inputLayout.d.ts +25 -0
- package/dist/graph/inputRefs.d.ts +103 -0
- package/dist/graph/records.d.ts +3 -0
- package/dist/graph/records.js +7 -0
- package/dist/graph/refusalText.d.ts +6 -0
- package/dist/graph/settingsViews.d.ts +26 -0
- package/dist/graph/usesInputs.d.ts +17 -0
- package/dist/graph/usesInputs.js +40 -0
- package/dist/icons/bi/BiRedo.js +16 -0
- package/dist/icons/bi/BiUndo.js +16 -0
- package/dist/icons/lu/LuBraces.js +27 -0
- package/dist/icons/lu/LuCode.js +27 -0
- package/dist/icons/lu/LuKeyboard.js +71 -0
- package/dist/icons/lu/LuNetwork.js +63 -0
- package/dist/icons/lu/LuTextCursorInput.js +45 -0
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +8 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -2
- package/dist/list/ActionToolbar.d.ts +2 -0
- package/dist/list/ActionToolbar.js +18 -5
- package/dist/list/RowContextMenu.d.ts +10 -1
- package/dist/list/RowContextMenu.js +185 -30
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,699 @@
|
|
|
1
|
+
import { useStrings } from "../components/Provider.js";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
//#region src/graph/editorStrings.ts
|
|
4
|
+
var GRAPH_EDITOR_STRINGS = {
|
|
5
|
+
undo: "Undo",
|
|
6
|
+
redo: "Redo",
|
|
7
|
+
addJob: "Job",
|
|
8
|
+
addJobHint: "Drag into the graph to add a job, or click to add one",
|
|
9
|
+
addMatrixJob: "Matrix job",
|
|
10
|
+
addMatrixJobHint: "Drag into the graph to add a matrix job, or click to add one",
|
|
11
|
+
resetLayout: "Reset layout",
|
|
12
|
+
dropToDelete: "Drop here to delete",
|
|
13
|
+
jobActions: "Job actions",
|
|
14
|
+
stepActions: "Step actions",
|
|
15
|
+
stepCount: (count) => count === 1 ? "1 step" : `${count} steps`,
|
|
16
|
+
problemCount: (count) => count === 1 ? "1 problem" : `${count} problems`,
|
|
17
|
+
problemLine: (line) => `Line ${line}`,
|
|
18
|
+
connectOutHint: "Drag onto a job to make it depend on this node. Drop on a circle to cover every job in that node.",
|
|
19
|
+
connectInHint: "Drag onto a job to make this node depend on it. Drop on a circle to cover every job in that node.",
|
|
20
|
+
moveBoxHint: "Drag to move these jobs together",
|
|
21
|
+
moveSelectionHint: "Drag to move the selected jobs together",
|
|
22
|
+
selectionOutHint: "Drag onto a job to make it depend on the selected jobs. Drop on a circle to cover every job there.",
|
|
23
|
+
selectionInHint: "Drag onto a job to make the selected jobs depend on it. Drop on a circle to cover every job there.",
|
|
24
|
+
duplicate: "Duplicate",
|
|
25
|
+
makeMatrix: "Make matrix",
|
|
26
|
+
editMatrix: "Edit matrix",
|
|
27
|
+
removeMatrix: "Remove matrix",
|
|
28
|
+
addStep: "Add step",
|
|
29
|
+
deleteJob: "Delete job",
|
|
30
|
+
deleteStep: "Delete step",
|
|
31
|
+
removeDependency: "Remove dependency",
|
|
32
|
+
dependencyInUse: "An expression in the job reads this dependency's outputs",
|
|
33
|
+
dependency: "Dependency",
|
|
34
|
+
dependencyOf: (from, to) => `${to} depends on ${from}`,
|
|
35
|
+
refusal: (_reason) => "",
|
|
36
|
+
menuDependsOn: "Depends on",
|
|
37
|
+
menuNeededBy: "Needed by",
|
|
38
|
+
shortcuts: "Shortcuts",
|
|
39
|
+
shortcutGroups: {
|
|
40
|
+
select: "Select",
|
|
41
|
+
change: "Change",
|
|
42
|
+
view: "View"
|
|
43
|
+
},
|
|
44
|
+
shortcutKeys: {
|
|
45
|
+
click: "Click",
|
|
46
|
+
drag: "Drag",
|
|
47
|
+
dragJob: "Drag a job",
|
|
48
|
+
dragCircle: "Drag a circle",
|
|
49
|
+
dragButton: "Drag a button",
|
|
50
|
+
dragSpace: "Drag empty space",
|
|
51
|
+
dragHandle: "Drag a handle",
|
|
52
|
+
dragEdge: "Drag the edge between two inputs",
|
|
53
|
+
rightClick: "Right-click",
|
|
54
|
+
scroll: "Scroll",
|
|
55
|
+
shift: "Shift",
|
|
56
|
+
enter: "Enter",
|
|
57
|
+
delete: "Delete"
|
|
58
|
+
},
|
|
59
|
+
shortcutDoes: {
|
|
60
|
+
select: "Add a job, step or dependency to the selection, one kind at a time",
|
|
61
|
+
box: "Select with a box drawn on empty space: jobs if it reaches any, else steps, else dependencies",
|
|
62
|
+
pan: "Pan",
|
|
63
|
+
zoom: "Zoom",
|
|
64
|
+
move: "Move the job or the selection; a grip moves its node. Drop on another node to group them",
|
|
65
|
+
connect: "Connect the node to a job or another circle",
|
|
66
|
+
addJob: "Add a job or matrix job where you drop it",
|
|
67
|
+
edit: "Open the selected job's or step's settings",
|
|
68
|
+
dependency: "Select a dependency, then drag its ends to move it",
|
|
69
|
+
menu: "Menu of a job, step or dependency",
|
|
70
|
+
remove: "Delete the selection",
|
|
71
|
+
nudge: "Nudge the selected jobs",
|
|
72
|
+
copy: "Copy or paste the selected jobs or steps",
|
|
73
|
+
undo: "Undo or redo",
|
|
74
|
+
escape: "Clear the selection or cancel a drag",
|
|
75
|
+
focus: "Move between jobs and dependencies",
|
|
76
|
+
pickJob: "Select the focused job",
|
|
77
|
+
pickDependency: "Select the focused dependency",
|
|
78
|
+
moveInput: "Move the input, or all the selected ones. Drop on another input’s left or right side to put them side by side, or on its lower half to go under it",
|
|
79
|
+
resizeInputs: "Change how much of the line each input takes",
|
|
80
|
+
pickInput: "Select the input above, below or beside",
|
|
81
|
+
extendInputs: "Add each input passed to the selection",
|
|
82
|
+
reorderInputs: "Move the selected inputs up or down",
|
|
83
|
+
addInput: "Add an input where you drop it",
|
|
84
|
+
editInput: "Open the selected input's settings",
|
|
85
|
+
inputMenu: "Menu of an input",
|
|
86
|
+
selectInput: "Add an input to the selection",
|
|
87
|
+
boxInputs: "Select inputs with a box",
|
|
88
|
+
removeInputs: "Delete the selected inputs"
|
|
89
|
+
},
|
|
90
|
+
moveDependencyEnd: "Drag onto another job or node to move this end",
|
|
91
|
+
openOnAdd: "Open when adding",
|
|
92
|
+
openOnAddHelp: "Adding a job, step or input opens this editor first. Off, it's added with its defaults, for you to edit later.",
|
|
93
|
+
waitForAny: "Wait for any matrix instance",
|
|
94
|
+
matrixBadge: "matrix",
|
|
95
|
+
jobName: "Job name",
|
|
96
|
+
stepName: "Step name",
|
|
97
|
+
invalidJobName: "Use only lowercase letters, numbers, dashes, and underscores.",
|
|
98
|
+
jobExists: "A job with this name already exists.",
|
|
99
|
+
matrixVariable: "Variable",
|
|
100
|
+
matrixValues: "Values, separated by commas",
|
|
101
|
+
addVariable: "Add variable",
|
|
102
|
+
removeVariable: "Remove variable",
|
|
103
|
+
save: "Save",
|
|
104
|
+
cancel: "Cancel",
|
|
105
|
+
editJob: "Edit job",
|
|
106
|
+
editStep: "Edit step",
|
|
107
|
+
sectionDependencies: "Dependencies and condition",
|
|
108
|
+
sectionRemoteHost: "Remote host",
|
|
109
|
+
sectionMatrix: "Matrix",
|
|
110
|
+
sectionEnvironment: "Environment variables",
|
|
111
|
+
sectionOutputs: "Outputs",
|
|
112
|
+
sectionAdvanced: "Advanced",
|
|
113
|
+
sectionBehavior: "Condition and behavior",
|
|
114
|
+
sectionRetry: "Retry",
|
|
115
|
+
sectionCleanup: "Cleanup",
|
|
116
|
+
noOtherJobs: "There are no other jobs to depend on.",
|
|
117
|
+
dependsOnThisJob: "That job already depends on this one.",
|
|
118
|
+
missingJob: "not found",
|
|
119
|
+
runsInWorkspace: "Leave Host empty to run in your workspace.",
|
|
120
|
+
sectionComputeEnvironment: "Compute environment",
|
|
121
|
+
runsOnHint: "Run this job as a scheduler job on a compute environment, without your workspace.",
|
|
122
|
+
runsOnNeedsEnvironment: "Fill in both the cluster and the environment name.",
|
|
123
|
+
runsOnByName: "Environment by name",
|
|
124
|
+
runsOnByTarget: "Compute target",
|
|
125
|
+
runsOnNeedsMode: "Choose where the job runs: a login node, an environment or a worker.",
|
|
126
|
+
targetModes: {
|
|
127
|
+
login: "Login node",
|
|
128
|
+
environment: "Environment",
|
|
129
|
+
worker: "Worker"
|
|
130
|
+
},
|
|
131
|
+
runsOnWithSsh: "A job runs on a compute environment or on a remote host, not both. Clear one of them.",
|
|
132
|
+
matrixOn: "Run once for every combination of values.",
|
|
133
|
+
matrixNeedsVariable: "Add at least one variable.",
|
|
134
|
+
matrixInvalidVariable: "Each variable needs a unique name and at least one value.",
|
|
135
|
+
invalidMaxParallel: "Use a whole number of 1 or more.",
|
|
136
|
+
invalidDuration: "Use seconds (300) or a duration such as 30s, 10m or 2h.",
|
|
137
|
+
invalidExpressionValue: "Type an expression here, such as one that reads an input.",
|
|
138
|
+
invalidEnvKey: "Use letters, numbers, and underscores.",
|
|
139
|
+
invalidKey: "Use letters, numbers, dashes, and underscores.",
|
|
140
|
+
duplicateKey: "Each key must be unique.",
|
|
141
|
+
remoteHostRequired: "Fill in Host to connect to a remote machine.",
|
|
142
|
+
key: "Key",
|
|
143
|
+
value: "Value",
|
|
144
|
+
addRow: "Add",
|
|
145
|
+
removeRow: "Remove",
|
|
146
|
+
/** A list's row, by the list's name and its place in it. */
|
|
147
|
+
listItem: (list, n) => `${list}, item ${n}`,
|
|
148
|
+
stepRun: "Run commands",
|
|
149
|
+
stepUses: "Use a workflow or action",
|
|
150
|
+
required: "Required.",
|
|
151
|
+
invalidShell: "Use a bash or sh command.",
|
|
152
|
+
missingInput: (name) => `Add the ${name} input.`,
|
|
153
|
+
invalidCount: "Use a whole number.",
|
|
154
|
+
moveUp: "Move up",
|
|
155
|
+
moveDown: "Move down",
|
|
156
|
+
sshInherit: "Same as the job",
|
|
157
|
+
sshCustom: "Another host",
|
|
158
|
+
sshNone: "Your workspace",
|
|
159
|
+
workflowSettings: "Workflow settings",
|
|
160
|
+
invalidJson: "Use valid JSON.",
|
|
161
|
+
jsonValue: "A nested value, written as JSON",
|
|
162
|
+
matrixFromVariables: "Variables",
|
|
163
|
+
matrixFromExpression: "Expression",
|
|
164
|
+
addEntry: "Add entry",
|
|
165
|
+
removeEntry: "Remove entry",
|
|
166
|
+
invalidMatrixEntry: "Each entry needs at least one key.",
|
|
167
|
+
sectionGeneral: "General",
|
|
168
|
+
sectionPermissions: "Permissions",
|
|
169
|
+
sectionSessions: "Sessions",
|
|
170
|
+
sectionLinks: "Links",
|
|
171
|
+
sectionRequiredVariables: "Required variables",
|
|
172
|
+
sectionInputForm: "Input form",
|
|
173
|
+
addPermission: "Add permission",
|
|
174
|
+
addSession: "Add session",
|
|
175
|
+
addLink: "Add link",
|
|
176
|
+
addOrganizationVariable: "Add organization variable",
|
|
177
|
+
addUserVariable: "Add user variable",
|
|
178
|
+
sessionTypeTunnel: "Tunnel",
|
|
179
|
+
sessionTypeLink: "Link",
|
|
180
|
+
promptOff: "Don’t ask",
|
|
181
|
+
promptAsk: "Ask for a name",
|
|
182
|
+
linkToEndpoint: "An endpoint session",
|
|
183
|
+
linkToUrl: "An address",
|
|
184
|
+
invalidLinkName: "Use lowercase letters, numbers, dashes, and underscores, ending in a letter or number.",
|
|
185
|
+
invalidOrganizationVariable: "Use uppercase letters, numbers, and underscores, starting with a letter.",
|
|
186
|
+
oneRedirect: "Only one session or link can redirect.",
|
|
187
|
+
labelsBeside: "Beside the fields",
|
|
188
|
+
labelsAbove: "Above the fields",
|
|
189
|
+
notActionInput: "Not an input this takes. Remove it.",
|
|
190
|
+
invalidNumberInput: "Use a number.",
|
|
191
|
+
invalidChoice: (name) => `Use one of the listed values for ${name}.`,
|
|
192
|
+
invalidUses: "Use workflow/NAME, marketplace/NAME, a github/ or gitlab/ address, or a built-in action.",
|
|
193
|
+
chooseInput: "Choose an input",
|
|
194
|
+
noMatchingInputs: "No inputs of this kind yet",
|
|
195
|
+
newInput: "New input…",
|
|
196
|
+
newInputOf: (type) => `New ${type} input…`,
|
|
197
|
+
conditionNever: "Never",
|
|
198
|
+
useExpression: "Use an expression instead",
|
|
199
|
+
stopExpression: "Back to the regular field",
|
|
200
|
+
whenOn: (label) => `When ${label} is on`,
|
|
201
|
+
whenOff: (label) => `When ${label} is off`,
|
|
202
|
+
whenIs: (label, option) => `When ${label} is ${option}`,
|
|
203
|
+
insertValue: "Insert a value…",
|
|
204
|
+
applyFix: (text) => `Use ${text}`,
|
|
205
|
+
refGroups: {
|
|
206
|
+
inputs: "Inputs",
|
|
207
|
+
outputs: "Outputs of jobs it needs",
|
|
208
|
+
matrix: "Matrix values",
|
|
209
|
+
variables: "Variables",
|
|
210
|
+
sessions: "Sessions",
|
|
211
|
+
env: "Environment"
|
|
212
|
+
},
|
|
213
|
+
stepConditions: {
|
|
214
|
+
default: "After the steps before it succeed",
|
|
215
|
+
always: "Always, even after a failure or a cancel",
|
|
216
|
+
failure: "Only after a step failed",
|
|
217
|
+
cancelled: "Only after the run was canceled",
|
|
218
|
+
success: "Only if nothing failed or was canceled"
|
|
219
|
+
},
|
|
220
|
+
jobConditions: {
|
|
221
|
+
default: "After the jobs it needs succeed",
|
|
222
|
+
always: "Always, whatever the jobs it needs did",
|
|
223
|
+
failure: "Only if a job it needs failed",
|
|
224
|
+
cancelled: "Only if a job it needs was canceled",
|
|
225
|
+
success: "Only if every job it needs succeeded"
|
|
226
|
+
},
|
|
227
|
+
modeFromInput: "From an input",
|
|
228
|
+
clearValue: "Clear",
|
|
229
|
+
matrixValuesListed: "Listed values",
|
|
230
|
+
outputName: "Name",
|
|
231
|
+
outputStep: "Step",
|
|
232
|
+
outputKey: "Output",
|
|
233
|
+
outputValue: "Value",
|
|
234
|
+
outputNeedsStep: "Pick a step and name one of its outputs.",
|
|
235
|
+
noStepIds: "To hand on a step’s outputs, first give it a step ID in its Advanced settings.",
|
|
236
|
+
usesAction: "Action",
|
|
237
|
+
usesWorkflow: "My workflow",
|
|
238
|
+
usesMarketplace: "Marketplace",
|
|
239
|
+
usesRepository: "Repository",
|
|
240
|
+
chooseAction: "Choose an action",
|
|
241
|
+
chooseWorkflow: "Choose a workflow",
|
|
242
|
+
chooseMarketplace: "Choose a marketplace workflow",
|
|
243
|
+
otherInputs: "Other inputs",
|
|
244
|
+
viewForm: "Form",
|
|
245
|
+
viewYaml: "YAML",
|
|
246
|
+
yamlSyntax: (message) => `The YAML doesn’t parse: ${message}`,
|
|
247
|
+
yamlNotMap: "Write the settings as keys and values, such as run: make.",
|
|
248
|
+
fields: {
|
|
249
|
+
needs: "Depends on",
|
|
250
|
+
condition: "When to run",
|
|
251
|
+
remoteHost: "Host",
|
|
252
|
+
remoteUser: "User",
|
|
253
|
+
jumpNodeHost: "Jump host",
|
|
254
|
+
jumpNodeUser: "Jump host user",
|
|
255
|
+
disconnectTimeout: "Disconnect timeout",
|
|
256
|
+
runsOn: "Environment",
|
|
257
|
+
environmentCluster: "Cluster",
|
|
258
|
+
environmentName: "Environment name",
|
|
259
|
+
schedulingParams: "Scheduling parameters",
|
|
260
|
+
targetMode: "Runs on",
|
|
261
|
+
targetId: "Target",
|
|
262
|
+
environmentId: "Environment ID",
|
|
263
|
+
newWorker: "New worker",
|
|
264
|
+
workerId: "Worker ID",
|
|
265
|
+
matrix: "Run as a matrix",
|
|
266
|
+
matrixSource: "Matrix source",
|
|
267
|
+
matrixExpression: "Matrix expression",
|
|
268
|
+
include: "Extra combinations",
|
|
269
|
+
exclude: "Skipped combinations",
|
|
270
|
+
failFast: "Stop others on a failure",
|
|
271
|
+
maxParallel: "Runs at the same time",
|
|
272
|
+
workingDirectory: "Folder to run in",
|
|
273
|
+
timeout: "Time limit",
|
|
274
|
+
run: "Commands",
|
|
275
|
+
uses: "Workflow or action",
|
|
276
|
+
with: "Inputs",
|
|
277
|
+
cleanup: "Cleanup commands",
|
|
278
|
+
ignoreErrors: "Keep going if it fails",
|
|
279
|
+
earlyCancel: "Stop if any job fails",
|
|
280
|
+
retry: "Try again if it fails",
|
|
281
|
+
maxRetries: "Number of retries",
|
|
282
|
+
retryInterval: "Wait between attempts",
|
|
283
|
+
retryTimeout: "Time limit per attempt",
|
|
284
|
+
cleanOnRetry: "Start each retry clean",
|
|
285
|
+
stepId: "Step ID",
|
|
286
|
+
shell: "Shell",
|
|
287
|
+
env: "Environment variables",
|
|
288
|
+
name: "Name",
|
|
289
|
+
sessionType: "Type",
|
|
290
|
+
promptForName: "Ask for a name",
|
|
291
|
+
promptDefault: "Suggested name",
|
|
292
|
+
redirect: "Open when the run starts",
|
|
293
|
+
useTLS: "Use HTTPS",
|
|
294
|
+
useCustomDomain: "Use a custom domain",
|
|
295
|
+
openAI: "OpenAI-compatible API",
|
|
296
|
+
detach: "Keep after the run",
|
|
297
|
+
linkTarget: "Link to",
|
|
298
|
+
organizationVariables: "Organization variables",
|
|
299
|
+
userVariables: "User variables",
|
|
300
|
+
labelPosition: "Where labels go",
|
|
301
|
+
wizard: "Split into pages",
|
|
302
|
+
showSteps: "Show page progress",
|
|
303
|
+
allowJump: "Allow going back",
|
|
304
|
+
hideStepNumbers: "Hide page numbers",
|
|
305
|
+
submitLabel: "Last button text",
|
|
306
|
+
flatten: "Leave out page names"
|
|
307
|
+
},
|
|
308
|
+
help: {
|
|
309
|
+
jobName: "Lowercase letters, numbers, dashes and underscores. Other jobs use this name to depend on this one.",
|
|
310
|
+
needs: "This job starts only after these jobs finish successfully. If one of them fails, this job is skipped.",
|
|
311
|
+
waitForAny: "Start when the first run of that matrix job finishes, instead of waiting for all of them.",
|
|
312
|
+
needsExpression: "An expression that works out which jobs this one waits for when the run starts.",
|
|
313
|
+
jobIf: "Leave empty to run once the jobs it depends on succeed. Pick a choice from the list, such as always or only after a failure, or type your own condition.",
|
|
314
|
+
remoteHost: "The machine to run on over SSH. Pick a cluster input from the list, or type a hostname or IP address.",
|
|
315
|
+
remoteUser: "The account to log in as. Leave empty to use your username.",
|
|
316
|
+
jumpNodeHost: "A machine to connect through first, when the remote machine can’t be reached directly. Leave empty to connect directly.",
|
|
317
|
+
jumpNodeUser: "The account to log in to the jump host as. Leave empty to use your username.",
|
|
318
|
+
disconnectTimeout: "How long to keep trying to reconnect if the connection drops, such as 300 or 5m. 0 gives up at once, and a negative number never gives up. The default is 5 minutes.",
|
|
319
|
+
runsOn: "The compute environment this job runs on. Switch to an expression to work it out when the run starts.",
|
|
320
|
+
environmentCluster: "The cluster the environment is on. For one shared with you, put its owner first, as owner/cluster.",
|
|
321
|
+
environmentName: "The environment’s name on that cluster.",
|
|
322
|
+
schedulingParams: "Settings for the scheduler, such as walltime. They’re checked against the environment’s own, after its defaults.",
|
|
323
|
+
targetMode: "A cluster’s login node, one of its environments, or one of its connected workers. A compute target input fills these in when the workflow is launched.",
|
|
324
|
+
targetId: "The cluster’s ID, or user-workspace for your workspace.",
|
|
325
|
+
environmentId: "For an environment: the ID of the environment to run in.",
|
|
326
|
+
newWorker: "For an environment: start a new worker for this job instead of using one that’s running.",
|
|
327
|
+
workerId: "For a worker: the ID of the connected worker to run on.",
|
|
328
|
+
matrixMode: "Type the values of each variable, or work the whole matrix out with an expression.",
|
|
329
|
+
matrixVariables: "Give each variable a name and a list of values, separated by commas, or take them from a multi-select input. The job runs once for every combination: two variables with three values each make nine runs.",
|
|
330
|
+
matrixExpression: "An expression that works out the whole matrix when the run starts, such as one that reads an input.",
|
|
331
|
+
include: "Combinations to run on top of the ones the variables make. An entry that matches an existing combination adds its extra values to it instead.",
|
|
332
|
+
exclude: "Combinations not to run. Any combination that matches every value in an entry is skipped.",
|
|
333
|
+
failFast: "When one run of the matrix fails, cancel the runs that are still going.",
|
|
334
|
+
maxParallel: "How many runs of the matrix can go at the same time. Leave empty for no limit.",
|
|
335
|
+
jobEnv: "Variables every step of this job can read from its environment, such as DATA_DIR.",
|
|
336
|
+
outputs: "Values this job hands on to the jobs that depend on it, such as an output of one of its steps.",
|
|
337
|
+
jobWorkingDirectory: "The folder this job’s steps run in. It’s created if it doesn’t exist.",
|
|
338
|
+
jobTimeout: "How long the job can run before it’s stopped and marked as failed, such as 300 (seconds), 10m or 2h.",
|
|
339
|
+
stepName: "Shown in the graph and the run logs. If empty, the step’s command or workflow is shown.",
|
|
340
|
+
stepKind: "Run shell commands, or run another workflow or a built-in action.",
|
|
341
|
+
run: "The commands to run, as a shell script.",
|
|
342
|
+
uses: "What the step runs: a built-in action, one of your workflows, a marketplace workflow, or a workflow in a github/ or gitlab/ repository. Pick one from the list or type your own.",
|
|
343
|
+
view: "Edit these settings in the form, or as the YAML the workflow stores. Changes carry over when you switch.",
|
|
344
|
+
with: "The values passed to the workflow or action this step runs.",
|
|
345
|
+
withInputs: "The inputs that workflow asks for, by the names its form uses.",
|
|
346
|
+
stepIf: "Leave empty to run once the steps before it succeed. Pick a choice from the list, such as always or only after a failure, or type your own condition.",
|
|
347
|
+
stepTimeout: "How long the step can run before it’s stopped and marked as failed, such as 300 (seconds), 10m or 2h.",
|
|
348
|
+
ignoreErrors: "If the commands fail, mark the step as passed and carry on with the next one.",
|
|
349
|
+
earlyCancel: "Stop this step as soon as any other job in the run fails.",
|
|
350
|
+
retry: "Run the step again if it fails.",
|
|
351
|
+
maxRetries: "How many more times to try after the first failure. The default is 10.",
|
|
352
|
+
retryInterval: "How long to wait before each new attempt, such as 5s or 1m. The default is 5 seconds.",
|
|
353
|
+
retryTimeout: "How long each attempt can run, such as 30s or 5m. The default is 30 seconds.",
|
|
354
|
+
cleanOnRetry: "Delete the step’s files before each new attempt so it starts fresh.",
|
|
355
|
+
stepSsh: "Where this step runs: on the job’s host, on another host, or in your workspace.",
|
|
356
|
+
stepEnv: "Variables this step can read from its environment, added to the job’s.",
|
|
357
|
+
stepWorkingDirectory: "The folder this step runs in. It’s created if it doesn’t exist. If empty, the job’s folder is used.",
|
|
358
|
+
stepId: "A short name other steps and jobs use to read this step’s outputs. It must be unique in the job.",
|
|
359
|
+
shell: "The program that runs the commands, such as bash -l. It must be bash or sh.",
|
|
360
|
+
cleanup: "Commands that run when the job ends, if this step ran, even if a later step failed. Use it to remove temporary files or stop services.",
|
|
361
|
+
workflowEnv: "Variables every job and step of the workflow can read from its environment.",
|
|
362
|
+
workflowTimeout: "How long a whole run can take before it’s stopped, such as 30m or 2h.",
|
|
363
|
+
permissions: "What the run’s API key is allowed to do, such as * for everything you can do. Users approve this before their first run.",
|
|
364
|
+
sessions: "Interactive sessions the run opens, such as a web app on a cluster. The workflow’s steps fill in how to connect.",
|
|
365
|
+
sessionName: "The name the workflow’s steps use to update this session.",
|
|
366
|
+
sessionType: "A tunnel connects to a port on a cluster. A link opens an address the workflow sets.",
|
|
367
|
+
promptForName: "Ask users to name the session before the run starts.",
|
|
368
|
+
promptDefault: "The name filled in for them.",
|
|
369
|
+
sessionRedirect: "Open this session for the user as soon as the run starts. Only one session or link can do this.",
|
|
370
|
+
useTLS: "Connect to the session over HTTPS. Turn this on only if the app needs it.",
|
|
371
|
+
useCustomDomain: "Serve the session on its own domain. Turn this on only if the app needs it.",
|
|
372
|
+
openAI: "The session runs an AI model server, so connect it to the built-in chat.",
|
|
373
|
+
sessionDetach: "Keep the session open after the run ends, until someone deletes it.",
|
|
374
|
+
links: "Links shown on the run’s page, to sessions the workflow starts or to any web address.",
|
|
375
|
+
linkName: "Lowercase letters, numbers, dashes, and underscores, ending in a letter or number.",
|
|
376
|
+
linkTarget: "Link to a session the workflow starts, or straight to a web address.",
|
|
377
|
+
linkEndpoint: "The name of the session to link to. The link works once the session is up.",
|
|
378
|
+
linkUrl: "A web address starting with http or https. Without one, https is used.",
|
|
379
|
+
linkRedirect: "Open this link for the user as soon as the run starts. Only one session or link can do this.",
|
|
380
|
+
linkDetach: "Keep the session this link points to open after the run ends.",
|
|
381
|
+
organizationVariables: "Organization variables that must be set before anyone can run the workflow.",
|
|
382
|
+
userVariables: "Your own variables the workflow reads. Users approve access before their first run.",
|
|
383
|
+
userVariableHint: "Why the workflow needs this variable. Users see it when asked for access.",
|
|
384
|
+
labelPosition: "Whether field names sit beside or above the fields on the input form.",
|
|
385
|
+
wizard: "Show the input form one page at a time. Each input of the Wizard step type becomes a page.",
|
|
386
|
+
showSteps: "Show which page the user is on, above the form.",
|
|
387
|
+
allowJump: "Let users go back to pages they’ve already filled in.",
|
|
388
|
+
hideStepNumbers: "Hide the page numbers in the progress bar.",
|
|
389
|
+
submitLabel: "The text of the button on the last page. The default is Execute.",
|
|
390
|
+
wizardFlatten: "On, the default: the workflow reads each field as inputs.FIELD. Off: as inputs.PAGE.FIELD, under its page’s name."
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
var INPUTS_EDITOR_STRINGS = {
|
|
394
|
+
addInput: "Input",
|
|
395
|
+
addInputHint: "Drag into the form to add an input, or click to pick its type",
|
|
396
|
+
addInputHere: "Add input",
|
|
397
|
+
splitIntoPages: "Split into pages",
|
|
398
|
+
unsplitPages: "Unsplit pages",
|
|
399
|
+
addPage: "Add a page after the last",
|
|
400
|
+
page: "Page",
|
|
401
|
+
pageNumber: "Page shown",
|
|
402
|
+
/** The title of a wizard's `count`th page when the editor adds it. */
|
|
403
|
+
stepTitle: (count) => `Step ${count}`,
|
|
404
|
+
/** The submit button label of a form the editor splits into pages. */
|
|
405
|
+
submitLabel: "Submit",
|
|
406
|
+
/** The label of the group a wizard step added outside a wizard comes in. */
|
|
407
|
+
stepsGroup: "Steps",
|
|
408
|
+
addInputBelow: "Add input below",
|
|
409
|
+
addField: "Add field",
|
|
410
|
+
/** The add button ending a group's, page's or list row's fields, named by its label or title. */
|
|
411
|
+
addFieldTo: (name) => `Add field to ${name}`,
|
|
412
|
+
/** A repeatable page's title or description given per copy, as a list. */
|
|
413
|
+
onePerCopy: "One per copy",
|
|
414
|
+
inputActions: "Input actions",
|
|
415
|
+
editInput: "Edit input",
|
|
416
|
+
duplicate: "Duplicate",
|
|
417
|
+
moveUp: "Move up",
|
|
418
|
+
moveDown: "Move down",
|
|
419
|
+
deleteInput: "Delete input",
|
|
420
|
+
hidden: "hidden",
|
|
421
|
+
noInputs: "No inputs yet. Add one to build the form users fill in to run this workflow.",
|
|
422
|
+
noFields: "No fields yet.",
|
|
423
|
+
inputName: "Name",
|
|
424
|
+
inputType: "Type",
|
|
425
|
+
invalidInputName: "Use letters, numbers, dashes, and underscores.",
|
|
426
|
+
inputExists: "An input with this name already exists here.",
|
|
427
|
+
invalidNumber: "Use a number.",
|
|
428
|
+
invalidDurationText: "Use HH:MM:SS or D-HH:MM:SS.",
|
|
429
|
+
invalidWidth: "Use a number of pixels, such as 320, or a percentage, such as 50%.",
|
|
430
|
+
resizeInputs: "Resize the inputs on each side",
|
|
431
|
+
sectionField: "Field",
|
|
432
|
+
sectionBehavior: "Behavior",
|
|
433
|
+
sectionSettings: "Settings",
|
|
434
|
+
optionValue: "Value",
|
|
435
|
+
optionLabel: "Label",
|
|
436
|
+
optionDescription: "Description",
|
|
437
|
+
addOption: "Add option",
|
|
438
|
+
removeOption: "Remove option",
|
|
439
|
+
addValue: "Add value",
|
|
440
|
+
searchTypes: "Search types",
|
|
441
|
+
noMatchingTypes: "No matching types",
|
|
442
|
+
optionsList: "One list",
|
|
443
|
+
optionsExpression: "Expression",
|
|
444
|
+
optionsByKey: "Per value of another input",
|
|
445
|
+
optionsJson: "As JSON",
|
|
446
|
+
optionsByKeyHelp: "For each value of the input the options depend on, list the options to show, as JSON.",
|
|
447
|
+
optionsJsonHelp: "These options have settings a list can’t show, so they’re edited as JSON.",
|
|
448
|
+
impliesNeedsOptions: "Add at least two options above to link them.",
|
|
449
|
+
impliesWhen: (option) => `${option} also ticks`,
|
|
450
|
+
choices: { optionLabelPosition: {
|
|
451
|
+
left: "Side by side",
|
|
452
|
+
top: "One per line"
|
|
453
|
+
} },
|
|
454
|
+
needsOptions: "Add at least one option.",
|
|
455
|
+
needsFields: "Add at least one field.",
|
|
456
|
+
optionsJsonShape: "Use a JSON list of options.",
|
|
457
|
+
optOutPlaceholder: "Unlimited",
|
|
458
|
+
optionsByKeyDropdownOnly: "Only a dropdown takes options per value of another input. Use a list.",
|
|
459
|
+
optionsByKeyShape: "Use a JSON object that maps each key to a list of options.",
|
|
460
|
+
jsonObject: "Use a JSON object.",
|
|
461
|
+
jsonObjectOrList: "Use a JSON object or list.",
|
|
462
|
+
typeChangeNote: "Settings the new type doesn’t use are removed when you save.",
|
|
463
|
+
flattenClash: (name) => `${name} is also the name of an input beside this group.`,
|
|
464
|
+
disableNeedsBoth: "Fill in both the checkbox text and its value.",
|
|
465
|
+
keptValueDoesNotFit: "This value doesn’t suit the new type. Change it or clear it.",
|
|
466
|
+
wholeNumberFrom: (least) => `Use a whole number of ${least} or more.`,
|
|
467
|
+
invalidPattern: "Use a valid regular expression.",
|
|
468
|
+
radioOptionShape: "Each option is a text value, or a value and a label as text.",
|
|
469
|
+
checkboxOptionShape: "Each option is a text value, or a value with a label and a description as text.",
|
|
470
|
+
typeGroups: {
|
|
471
|
+
basic: "Basic",
|
|
472
|
+
choices: "Choices",
|
|
473
|
+
layout: "Layout",
|
|
474
|
+
compute: "Clusters and storage",
|
|
475
|
+
schedulers: "Schedulers",
|
|
476
|
+
cloud: "Cloud",
|
|
477
|
+
kubernetes: "Kubernetes",
|
|
478
|
+
platform: "Platform"
|
|
479
|
+
},
|
|
480
|
+
types: {
|
|
481
|
+
string: "Text",
|
|
482
|
+
number: "Number",
|
|
483
|
+
duration: "Duration",
|
|
484
|
+
boolean: "Switch",
|
|
485
|
+
password: "Password",
|
|
486
|
+
editor: "Code editor",
|
|
487
|
+
"color-picker": "Color",
|
|
488
|
+
dropdown: "Dropdown",
|
|
489
|
+
"multi-dropdown": "Multi-select",
|
|
490
|
+
radio: "Radio buttons",
|
|
491
|
+
"checkbox-group": "Checkboxes",
|
|
492
|
+
group: "Group",
|
|
493
|
+
list: "List",
|
|
494
|
+
header: "Header",
|
|
495
|
+
step: "Wizard step",
|
|
496
|
+
"compute-clusters": "Cluster",
|
|
497
|
+
"compute-resources": "Cluster or Kubernetes cluster",
|
|
498
|
+
"compute-target": "Compute target",
|
|
499
|
+
bucket: "Storage bucket",
|
|
500
|
+
"slurm-accounts": "Slurm account",
|
|
501
|
+
"slurm-partitions": "Slurm partition",
|
|
502
|
+
"slurm-qos": "Slurm QOS",
|
|
503
|
+
"pbs-queues": "PBS queue",
|
|
504
|
+
region: "Region",
|
|
505
|
+
zone: "Zone",
|
|
506
|
+
"instance-type": "Instance type",
|
|
507
|
+
"organization-groups": "Organization group",
|
|
508
|
+
"ai-model": "AI model",
|
|
509
|
+
allocations: "Allocation",
|
|
510
|
+
"kubernetes-clusters": "Kubernetes cluster",
|
|
511
|
+
"kubernetes-namespaces": "Namespace",
|
|
512
|
+
"kubernetes-pods": "Pod",
|
|
513
|
+
"kubernetes-pvc": "Persistent volume claim",
|
|
514
|
+
"kubernetes-secrets": "Secret",
|
|
515
|
+
"kubernetes-configmaps": "Config map",
|
|
516
|
+
"kubernetes-statefulsets": "Stateful set",
|
|
517
|
+
"kubernetes-deployments": "Deployment",
|
|
518
|
+
"kubernetes-services": "Service",
|
|
519
|
+
"kubernetes-workloads": "Workload"
|
|
520
|
+
},
|
|
521
|
+
typeHelp: {
|
|
522
|
+
string: "A line of text, or a larger text area.",
|
|
523
|
+
number: "A number, typed in or picked on a slider.",
|
|
524
|
+
duration: "A length of time typed as HH:MM:SS or D-HH:MM:SS. The run gets it in seconds.",
|
|
525
|
+
boolean: "An on or off switch.",
|
|
526
|
+
password: "Text that stays hidden as it is typed.",
|
|
527
|
+
editor: "A code editor for scripts or configuration files.",
|
|
528
|
+
"color-picker": "A color picker.",
|
|
529
|
+
dropdown: "Pick one value from a list of options.",
|
|
530
|
+
"multi-dropdown": "Pick any number of values from a list of options.",
|
|
531
|
+
radio: "Choices shown as radio buttons. The user picks one.",
|
|
532
|
+
"checkbox-group": "Choices shown as checkboxes, each with an optional description. The user picks any.",
|
|
533
|
+
group: "A collapsible section of fields. Their values are nested under the group’s name.",
|
|
534
|
+
list: "Rows users add and remove, each with the same fields.",
|
|
535
|
+
header: "A heading that separates parts of the form. It has no value.",
|
|
536
|
+
step: "One page of fields when the form is shown as a wizard.",
|
|
537
|
+
"compute-clusters": "Pick one of the user’s clusters.",
|
|
538
|
+
"compute-resources": "Pick one of the user’s clusters or Kubernetes clusters.",
|
|
539
|
+
"compute-target": "Pick where a job runs: the user’s workspace, a cluster’s login node, or one of its environments. A job runs there when its compute environment reads this input.",
|
|
540
|
+
bucket: "Pick one of the user’s storage buckets.",
|
|
541
|
+
"slurm-accounts": "Pick a Slurm account on a cluster.",
|
|
542
|
+
"slurm-partitions": "Pick a Slurm partition on a cluster.",
|
|
543
|
+
"slurm-qos": "Pick a Slurm quality of service on a cluster.",
|
|
544
|
+
"pbs-queues": "Pick a PBS queue on a cluster.",
|
|
545
|
+
region: "Pick a region of a cloud provider.",
|
|
546
|
+
zone: "Pick a zone in a cloud region.",
|
|
547
|
+
"instance-type": "Pick a machine type in a cloud region.",
|
|
548
|
+
"organization-groups": "Pick one of the organization’s groups.",
|
|
549
|
+
"ai-model": "Pick one of the AI models the user has access to.",
|
|
550
|
+
allocations: "Pick one of the allocations the user has access to.",
|
|
551
|
+
"kubernetes-clusters": "Pick a Kubernetes cluster.",
|
|
552
|
+
"kubernetes-namespaces": "Pick a namespace in a Kubernetes cluster.",
|
|
553
|
+
"kubernetes-pods": "Pick a pod in a namespace.",
|
|
554
|
+
"kubernetes-pvc": "Pick a persistent volume claim in a namespace.",
|
|
555
|
+
"kubernetes-secrets": "Pick a secret in a namespace.",
|
|
556
|
+
"kubernetes-configmaps": "Pick a config map in a namespace.",
|
|
557
|
+
"kubernetes-statefulsets": "Pick a stateful set in a namespace.",
|
|
558
|
+
"kubernetes-deployments": "Pick a deployment in a namespace.",
|
|
559
|
+
"kubernetes-services": "Pick a service in a namespace.",
|
|
560
|
+
"kubernetes-workloads": "Pick a workload in a namespace."
|
|
561
|
+
},
|
|
562
|
+
fields: {
|
|
563
|
+
label: "Label",
|
|
564
|
+
description: "Description",
|
|
565
|
+
tooltip: "Tooltip",
|
|
566
|
+
width: "Width",
|
|
567
|
+
"anchor-below": "Below the input before it",
|
|
568
|
+
optional: "Optional",
|
|
569
|
+
hidden: "Hidden",
|
|
570
|
+
disabled: "Read-only",
|
|
571
|
+
ignore: "Leave out of the run",
|
|
572
|
+
default: "Default",
|
|
573
|
+
placeholder: "Hint text",
|
|
574
|
+
textarea: "Multiple lines",
|
|
575
|
+
prefillDefault: "Fill in the default",
|
|
576
|
+
minLength: "Shortest",
|
|
577
|
+
maxLength: "Longest",
|
|
578
|
+
lowercase: "Lowercase",
|
|
579
|
+
sanitize: "Characters to strip",
|
|
580
|
+
min: "Minimum",
|
|
581
|
+
max: "Maximum",
|
|
582
|
+
step: "Step size",
|
|
583
|
+
slider: "Slider",
|
|
584
|
+
language: "Language",
|
|
585
|
+
options: "Options",
|
|
586
|
+
"option-key": "Options depend on",
|
|
587
|
+
autoselect: "Select the first option",
|
|
588
|
+
optionLabelPosition: "Option layout",
|
|
589
|
+
implies: "Linked options",
|
|
590
|
+
disableLabel: "Checkbox text",
|
|
591
|
+
disableValue: "Value when ticked",
|
|
592
|
+
optOut: "Checkbox to turn it off",
|
|
593
|
+
collapsed: "Start folded",
|
|
594
|
+
flatten: "Leave out the group name",
|
|
595
|
+
template: "Row fields",
|
|
596
|
+
"items-collapsible": "Foldable rows",
|
|
597
|
+
text: "Text",
|
|
598
|
+
size: "Font size",
|
|
599
|
+
bold: "Bold",
|
|
600
|
+
title: "Title",
|
|
601
|
+
nextLabel: "Next button",
|
|
602
|
+
prevLabel: "Back button",
|
|
603
|
+
"include-workspace": "Offer the workspace",
|
|
604
|
+
"include-unprovisioned": "Offer clusters that are off",
|
|
605
|
+
csp: "Cloud provider",
|
|
606
|
+
provider: "Cluster types",
|
|
607
|
+
multi: "Multiple choices",
|
|
608
|
+
multiStep: "Repeatable page",
|
|
609
|
+
generateCredentials: "Generate credentials",
|
|
610
|
+
region: "Region",
|
|
611
|
+
resource: "Cluster",
|
|
612
|
+
account: "Account",
|
|
613
|
+
partition: "Partition",
|
|
614
|
+
clusterName: "Kubernetes cluster",
|
|
615
|
+
namespace: "Namespace",
|
|
616
|
+
includeEmpty: "Offer an empty choice"
|
|
617
|
+
},
|
|
618
|
+
help: {
|
|
619
|
+
name: "Letters, numbers, dashes and underscores. The workflow reads what users enter as inputs.NAME.",
|
|
620
|
+
type: "The kind of field users fill in.",
|
|
621
|
+
label: "The field’s name on the form. If empty, the input’s name is shown.",
|
|
622
|
+
description: "Help text shown under the field.",
|
|
623
|
+
tooltip: "Extra help shown when users hover over the field’s info icon.",
|
|
624
|
+
width: "How wide the field is: a number of pixels, such as 320, or a share of the row, such as 50%. Fields whose widths fit side by side share a row. Empty means the full width.",
|
|
625
|
+
"anchor-below": "Puts the field under the input before it, in that input’s column, when that input shares a row. It can be no wider than that input.",
|
|
626
|
+
default: "The value the field starts with.",
|
|
627
|
+
defaultList: "The values picked when the form opens.",
|
|
628
|
+
defaultResource: "What’s picked when the form opens, by its resource address.",
|
|
629
|
+
defaultResources: "What’s picked when the form opens, by resource address.",
|
|
630
|
+
defaultFromInput: "Start with the value of this other input.",
|
|
631
|
+
durationDefault: "The time the field starts with, as HH:MM:SS or D-HH:MM:SS.",
|
|
632
|
+
optional: "Let users leave the field empty. Use an expression to decide when.",
|
|
633
|
+
hidden: "Hide the field from the form; its default is still used. Use an expression to decide when.",
|
|
634
|
+
disabled: "Show the field but don’t let users change it. Use an expression to decide when.",
|
|
635
|
+
ignore: "Don’t pass this field’s value to the run. Use an expression to decide when.",
|
|
636
|
+
placeholder: "Grey hint text shown while the field is empty.",
|
|
637
|
+
prefillDefault: "Put the default in the field as its value. When off, the field starts empty and shows the default as grey hint text.",
|
|
638
|
+
textarea: "Show a bigger box for several lines of text.",
|
|
639
|
+
minLength: "The fewest characters the value can have.",
|
|
640
|
+
maxLength: "The most characters the value can have.",
|
|
641
|
+
lowercase: "Turn what users type into lowercase.",
|
|
642
|
+
sanitize: "A regular expression matching the characters to remove as users type, such as [^a-z0-9-].",
|
|
643
|
+
minNumber: "The smallest value allowed.",
|
|
644
|
+
maxNumber: "The largest value allowed.",
|
|
645
|
+
minDuration: "The shortest length of time allowed.",
|
|
646
|
+
maxDuration: "The longest length of time allowed.",
|
|
647
|
+
disableLabel: "What the checkbox says, such as Never suspend idle nodes.",
|
|
648
|
+
disableValue: "What the workflow gets instead of a time while the box is ticked, such as -1.",
|
|
649
|
+
optOut: "Adds a checkbox under the field. Ticking it hides the time and sends a fixed value instead, such as -1 for no limit.",
|
|
650
|
+
step: "How much the value goes up or down at a time, such as with the slider.",
|
|
651
|
+
slider: "Pick the value by dragging a slider. It needs a minimum, a maximum and a step size.",
|
|
652
|
+
options: "The choices users pick from. Each has a value the workflow gets and, optionally, a label users see.",
|
|
653
|
+
optionLabelPosition: "Show the choices side by side, or one per line.",
|
|
654
|
+
implies: "Choose which other options each one ticks with it. While an option is ticked, the ones it ticks stay ticked and can’t be unticked.",
|
|
655
|
+
optionKey: "Another input whose value picks which options to show, such as a cloud provider picking its regions.",
|
|
656
|
+
autoselect: "Pick the first option for users when the form opens.",
|
|
657
|
+
template: "The fields each row has.",
|
|
658
|
+
listDefault: "The rows the list starts with. Runs started from the form or the API both get them.",
|
|
659
|
+
itemsCollapsible: "Let users fold each row away.",
|
|
660
|
+
minItems: "The fewest rows users must add.",
|
|
661
|
+
maxItems: "The most rows users can add.",
|
|
662
|
+
language: "The language the editor colors code for, such as bash, python or yaml.",
|
|
663
|
+
collapsed: "Start with the group folded away. Use an expression to decide when.",
|
|
664
|
+
flatten: "Pass the group’s fields as inputs.FIELD instead of inputs.GROUP.FIELD.",
|
|
665
|
+
items: "The fields in this group.",
|
|
666
|
+
size: "The header’s font size, in pixels.",
|
|
667
|
+
text: "The header’s text.",
|
|
668
|
+
bold: "Show the header in bold.",
|
|
669
|
+
title: "The heading at the top of this page.",
|
|
670
|
+
nextLabel: "The text of the button to the next page. The default is Next.",
|
|
671
|
+
prevLabel: "The text of the button to the previous page. The default is Previous.",
|
|
672
|
+
clusterName: "The Kubernetes cluster to list from. Pick a Kubernetes cluster input, or type a cluster’s name.",
|
|
673
|
+
namespace: "The namespace to list from. Pick a namespace input, or type its name.",
|
|
674
|
+
csp: "Which cloud to list from: aws, azure, google or openstack. Or pick the input where users choose it.",
|
|
675
|
+
region: "The region to list from. Pick a region input, or type its name.",
|
|
676
|
+
provider: "Show only clusters of these types, separated by commas, such as aws-slurm or existing.",
|
|
677
|
+
multi: "Let users pick more than one.",
|
|
678
|
+
multiStep: "Lets the person running the workflow add copies of this page. Its fields’ values become a list under the page’s name, one row per copy.",
|
|
679
|
+
minCopies: "The fewest copies of a repeatable page. It starts with this many, and no copy can be removed below it.",
|
|
680
|
+
maxCopies: "The most copies of a repeatable page. Once it has this many, no more can be added. Set to the same as the minimum, the number is fixed.",
|
|
681
|
+
includeWorkspace: "Also offer the user’s own workspace.",
|
|
682
|
+
includeUnprovisioned: "Also offer clusters that aren’t running yet.",
|
|
683
|
+
generateCredentials: "Create credentials for the bucket and pass them to the run with it.",
|
|
684
|
+
resource: "The input where users pick the cluster to list from.",
|
|
685
|
+
account: "The input where users pick the Slurm account. Only what that account can use is listed.",
|
|
686
|
+
partition: "The input where users pick the Slurm partition. Only what that partition allows is listed.",
|
|
687
|
+
includeEmpty: "Add an empty choice at the top of the list."
|
|
688
|
+
}
|
|
689
|
+
};
|
|
690
|
+
/** The graph editor's strings: the host's translations over the English defaults. */
|
|
691
|
+
function useGraphEditorStrings() {
|
|
692
|
+
const overrides = useStrings().graphEditor;
|
|
693
|
+
return useMemo(() => ({
|
|
694
|
+
...GRAPH_EDITOR_STRINGS,
|
|
695
|
+
...overrides
|
|
696
|
+
}), [overrides]);
|
|
697
|
+
}
|
|
698
|
+
//#endregion
|
|
699
|
+
export { GRAPH_EDITOR_STRINGS, INPUTS_EDITOR_STRINGS, useGraphEditorStrings };
|