@elixir-cloud/trs-filer 2.0.0-alpha.4 → 2.0.0-alpha.41
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/dist/chunks/chunk.3S22ENXV.js +252 -0
- package/dist/chunks/{chunk.JMC4ZIIA.js → chunk.DJ2LLCQL.js} +6 -5
- package/dist/chunks/{chunk.X4SIVSZN.js → chunk.DTNNXROY.js} +1 -1
- package/dist/chunks/{chunk.4N7ZYKCA.js → chunk.JW7KBVNO.js} +694 -659
- package/dist/chunks/chunk.S3NI7NKU.js +30 -0
- package/dist/chunks/chunk.TEZHVCRK.js +1 -0
- package/dist/chunks/{chunk.Q5GOJN3Z.js → chunk.WG3VQJ2S.js} +172 -30
- package/dist/components/index.js +5 -3
- package/dist/components/tool-create/index.js +5 -3
- package/dist/components/tool-create/tool-create.d.ts +66 -12
- package/dist/components/tool-create/tool-create.js +4 -2
- package/dist/components/tool-create/tw-styles.js +2 -1
- package/dist/custom-elements.json +289 -58
- package/dist/events/ecc-tool-create-failed.d.ts +6 -0
- package/dist/events/ecc-tool-create-input-changed.d.ts +6 -0
- package/dist/events/ecc-tool-create-validation-failed.d.ts +6 -0
- package/dist/events/{ecc-tool-create-success.d.ts → ecc-tool-created.d.ts} +2 -2
- package/dist/events/ecc-tools-changed.d.ts +6 -0
- package/dist/events/ecc-tools-selected.d.ts +6 -0
- package/dist/events/index.d.ts +6 -5
- package/dist/index.js +5 -3
- package/dist/providers/index.js +3 -0
- package/dist/providers/rest-trs-filer-provider.js +2 -0
- package/dist/providers/trs-filer-provider.d.ts +3 -3
- package/dist/providers/trs-filer-provider.js +1 -0
- package/dist/react/ecc-client-elixir-trs-tool-create/index.d.ts +48 -12
- package/dist/react/ecc-client-elixir-trs-tool-create/index.js +5 -3
- package/dist/react/index.js +5 -3
- package/dist/vscode.html-custom-data.json +1 -1
- package/dist/web-types.json +154 -73
- package/package.json +4 -4
- package/dist/events/ecc-tool-create-error.d.ts +0 -6
- package/dist/events/ecc-tool-create-validation-error.d.ts +0 -6
- package/dist/events/ecc-tools-change.d.ts +0 -6
- package/dist/events/ecc-tools-click.d.ts +0 -6
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { ComponentStyles
|
|
1
|
+
import { ComponentStyles } from './chunk.WG3VQJ2S.js';
|
|
2
|
+
import { RestTrsFilerProvider } from './chunk.3S22ENXV.js';
|
|
3
|
+
import { __decorateClass, __spreadProps, __spreadValues } from './chunk.S3NI7NKU.js';
|
|
2
4
|
import { css, LitElement, html } from 'lit';
|
|
3
5
|
import { property, state } from 'lit/decorators.js';
|
|
6
|
+
import JSZip from '@progress/jszip-esm';
|
|
4
7
|
import '@elixir-cloud/design/components/button/index.js';
|
|
5
8
|
import '@elixir-cloud/design/components/input/index.js';
|
|
6
9
|
import '@elixir-cloud/design/components/select/index.js';
|
|
@@ -13,7 +16,6 @@ import '@elixir-cloud/design/components/tabs/index.js';
|
|
|
13
16
|
import '@elixir-cloud/design/components/separator/index.js';
|
|
14
17
|
import '@elixir-cloud/design/components/checkbox/index.js';
|
|
15
18
|
import '@elixir-cloud/design/components/collapsible/index.js';
|
|
16
|
-
import JSZip from '@progress/jszip-esm';
|
|
17
19
|
|
|
18
20
|
var GlobalStyles = css`
|
|
19
21
|
:host {
|
|
@@ -107,253 +109,26 @@ var GlobalStyles = css`
|
|
|
107
109
|
--sidebar-ring: var(--ecc-sidebar-ring, oklch(0.439 0 0));
|
|
108
110
|
}
|
|
109
111
|
`;
|
|
110
|
-
|
|
111
|
-
// src/providers/rest-trs-filer-provider.ts
|
|
112
|
-
var RestTrsFilerProvider = class {
|
|
113
|
-
constructor(baseUrl) {
|
|
114
|
-
this.baseUrl = baseUrl;
|
|
115
|
-
}
|
|
116
|
-
async getToolClasses() {
|
|
117
|
-
const url = `${this.baseUrl}/toolClasses`;
|
|
118
|
-
const response = await fetch(url);
|
|
119
|
-
if (!response.ok) {
|
|
120
|
-
throw new Error(`Failed to fetch tool classes: ${response.statusText}`);
|
|
121
|
-
}
|
|
122
|
-
return response.json();
|
|
123
|
-
}
|
|
124
|
-
async getToolsList(limit, offset, filters, query) {
|
|
125
|
-
let url = `${this.baseUrl}/tools?${limit ? `limit=${limit}&` : ""}${offset ? `offset=${offset}&` : ""}`;
|
|
126
|
-
if (query && query.length > 0) {
|
|
127
|
-
url += `&name=${encodeURIComponent(query)}`;
|
|
128
|
-
}
|
|
129
|
-
Object.entries(filters).forEach(([key, value]) => {
|
|
130
|
-
if (value !== "" && value !== void 0 && key !== "offset") {
|
|
131
|
-
url += `&${key}=${encodeURIComponent(String(value))}`;
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
const response = await fetch(url);
|
|
135
|
-
if (!response.ok) {
|
|
136
|
-
throw new Error(`Failed to fetch tools: ${response.statusText}`);
|
|
137
|
-
}
|
|
138
|
-
return response.json();
|
|
139
|
-
}
|
|
140
|
-
async getTool(url, id) {
|
|
141
|
-
const encodedToolId = encodeURIComponent(id);
|
|
142
|
-
const response = await fetch(`${this.baseUrl}/tools/${encodedToolId}`);
|
|
143
|
-
if (!response.ok) {
|
|
144
|
-
throw new Error(`Failed to fetch tool: ${response.statusText}`);
|
|
145
|
-
}
|
|
146
|
-
return response.json();
|
|
147
|
-
}
|
|
148
|
-
async getToolVersions(url, id) {
|
|
149
|
-
const encodedToolId = encodeURIComponent(id);
|
|
150
|
-
const response = await fetch(
|
|
151
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions`
|
|
152
|
-
);
|
|
153
|
-
if (!response.ok) {
|
|
154
|
-
throw new Error(`Failed to fetch tool versions: ${response.statusText}`);
|
|
155
|
-
}
|
|
156
|
-
return response.json();
|
|
157
|
-
}
|
|
158
|
-
async getToolVersion(url, id, versionId) {
|
|
159
|
-
const encodedToolId = encodeURIComponent(id);
|
|
160
|
-
const version = versionId.split(":")[1] ? versionId.split(":")[1] : versionId;
|
|
161
|
-
const encodedVersionId = encodeURIComponent(version);
|
|
162
|
-
const response = await fetch(
|
|
163
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}`
|
|
164
|
-
);
|
|
165
|
-
if (!response.ok) {
|
|
166
|
-
throw new Error(`Failed to fetch tool version: ${response.statusText}`);
|
|
167
|
-
}
|
|
168
|
-
return response.json();
|
|
169
|
-
}
|
|
170
|
-
async getToolFiles(url, id, version, descriptorType, format) {
|
|
171
|
-
const encodedToolId = encodeURIComponent(id);
|
|
172
|
-
const versionPart = version.split(":")[1] ? version.split(":")[1] : version;
|
|
173
|
-
const encodedVersionId = encodeURIComponent(versionPart);
|
|
174
|
-
const encodedType = encodeURIComponent(descriptorType);
|
|
175
|
-
let requestUrl = `${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}/${encodedType}/files`;
|
|
176
|
-
if (format) {
|
|
177
|
-
requestUrl += `?format=${format}`;
|
|
178
|
-
}
|
|
179
|
-
const response = await fetch(requestUrl);
|
|
180
|
-
if (!response.ok) {
|
|
181
|
-
throw new Error(`Failed to fetch tool files: ${response.statusText}`);
|
|
182
|
-
}
|
|
183
|
-
return response.json();
|
|
184
|
-
}
|
|
185
|
-
async getToolDescriptor(url, id, version, descriptorType) {
|
|
186
|
-
const encodedToolId = encodeURIComponent(id);
|
|
187
|
-
const versionPart = version.split(":")[1] ? version.split(":")[1] : version;
|
|
188
|
-
const encodedVersionId = encodeURIComponent(versionPart);
|
|
189
|
-
const encodedType = encodeURIComponent(descriptorType);
|
|
190
|
-
const response = await fetch(
|
|
191
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}/${encodedType}/descriptor`
|
|
192
|
-
);
|
|
193
|
-
if (!response.ok) {
|
|
194
|
-
throw new Error(
|
|
195
|
-
`Failed to fetch tool descriptor: ${response.statusText}`
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
return response.json();
|
|
199
|
-
}
|
|
200
|
-
async getToolDescriptorByPath(url, id, version, descriptorType, path) {
|
|
201
|
-
const encodedToolId = encodeURIComponent(id);
|
|
202
|
-
const versionPart = version.split(":")[1] ? version.split(":")[1] : version;
|
|
203
|
-
const encodedVersionId = encodeURIComponent(versionPart);
|
|
204
|
-
const encodedType = encodeURIComponent(descriptorType);
|
|
205
|
-
try {
|
|
206
|
-
const response = await fetch(
|
|
207
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}/${encodedType}/descriptor/${path}`
|
|
208
|
-
);
|
|
209
|
-
if (response.ok) {
|
|
210
|
-
return response.json();
|
|
211
|
-
}
|
|
212
|
-
const encodedPath = encodeURIComponent(path);
|
|
213
|
-
const encodedResponse = await fetch(
|
|
214
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}/${encodedType}/descriptor/${encodedPath}`
|
|
215
|
-
);
|
|
216
|
-
if (encodedResponse.ok) {
|
|
217
|
-
return encodedResponse.json();
|
|
218
|
-
}
|
|
219
|
-
throw new Error(
|
|
220
|
-
`Failed to fetch tool descriptor by path: ${encodedResponse.statusText}`
|
|
221
|
-
);
|
|
222
|
-
} catch (error) {
|
|
223
|
-
const encodedPath = encodeURIComponent(path);
|
|
224
|
-
try {
|
|
225
|
-
const encodedResponse = await fetch(
|
|
226
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}/${encodedType}/descriptor/${encodedPath}`
|
|
227
|
-
);
|
|
228
|
-
if (encodedResponse.ok) {
|
|
229
|
-
return encodedResponse.json();
|
|
230
|
-
}
|
|
231
|
-
throw new Error(
|
|
232
|
-
`Failed to fetch tool descriptor by path: ${encodedResponse.statusText}`
|
|
233
|
-
);
|
|
234
|
-
} catch (encodedError) {
|
|
235
|
-
throw error;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
async getContainerfile(url, id, version) {
|
|
240
|
-
const encodedToolId = encodeURIComponent(id);
|
|
241
|
-
const versionPart = version.split(":")[1] ? version.split(":")[1] : version;
|
|
242
|
-
const encodedVersionId = encodeURIComponent(versionPart);
|
|
243
|
-
const response = await fetch(
|
|
244
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}/containerfile`
|
|
245
|
-
);
|
|
246
|
-
if (!response.ok) {
|
|
247
|
-
throw new Error(`Failed to fetch containerfile: ${response.statusText}`);
|
|
248
|
-
}
|
|
249
|
-
return response.json();
|
|
250
|
-
}
|
|
251
|
-
async getToolTests(url, id, version, descriptorType) {
|
|
252
|
-
const encodedToolId = encodeURIComponent(id);
|
|
253
|
-
const versionPart = version.split(":")[1] ? version.split(":")[1] : version;
|
|
254
|
-
const encodedVersionId = encodeURIComponent(versionPart);
|
|
255
|
-
const encodedType = encodeURIComponent(descriptorType);
|
|
256
|
-
const response = await fetch(
|
|
257
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}/${encodedType}/tests`
|
|
258
|
-
);
|
|
259
|
-
if (!response.ok) {
|
|
260
|
-
throw new Error(`Failed to fetch tool tests: ${response.statusText}`);
|
|
261
|
-
}
|
|
262
|
-
return response.json();
|
|
263
|
-
}
|
|
264
|
-
// Creation methods (TRS-Filer specific functionality)
|
|
265
|
-
async createTool(tool) {
|
|
266
|
-
console.log("Creating tool:", tool);
|
|
267
|
-
const response = await fetch(`${this.baseUrl}/tools`, {
|
|
268
|
-
method: "POST",
|
|
269
|
-
headers: {
|
|
270
|
-
"Content-Type": "application/json"
|
|
271
|
-
},
|
|
272
|
-
body: JSON.stringify(tool)
|
|
273
|
-
});
|
|
274
|
-
if (!response.ok) {
|
|
275
|
-
throw new Error(`Failed to create tool: ${response.statusText}`);
|
|
276
|
-
}
|
|
277
|
-
return response.text();
|
|
278
|
-
}
|
|
279
|
-
async createToolWithId(id, tool) {
|
|
280
|
-
const encodedToolId = encodeURIComponent(id);
|
|
281
|
-
const response = await fetch(`${this.baseUrl}/tools/${encodedToolId}`, {
|
|
282
|
-
method: "PUT",
|
|
283
|
-
headers: {
|
|
284
|
-
"Content-Type": "application/json"
|
|
285
|
-
},
|
|
286
|
-
body: JSON.stringify(tool)
|
|
287
|
-
});
|
|
288
|
-
if (!response.ok) {
|
|
289
|
-
throw new Error(`Failed to create/update tool: ${response.statusText}`);
|
|
290
|
-
}
|
|
291
|
-
return response.text();
|
|
292
|
-
}
|
|
293
|
-
async createToolVersion(toolId, version) {
|
|
294
|
-
const encodedToolId = encodeURIComponent(toolId);
|
|
295
|
-
const response = await fetch(`${this.baseUrl}/tools/${encodedToolId}/versions`, {
|
|
296
|
-
method: "POST",
|
|
297
|
-
headers: {
|
|
298
|
-
"Content-Type": "application/json"
|
|
299
|
-
},
|
|
300
|
-
body: JSON.stringify(version)
|
|
301
|
-
});
|
|
302
|
-
if (!response.ok) {
|
|
303
|
-
throw new Error(`Failed to create tool version: ${response.statusText}`);
|
|
304
|
-
}
|
|
305
|
-
return response.text();
|
|
306
|
-
}
|
|
307
|
-
async createToolVersionWithId(toolId, versionId, version) {
|
|
308
|
-
const encodedToolId = encodeURIComponent(toolId);
|
|
309
|
-
const encodedVersionId = encodeURIComponent(versionId);
|
|
310
|
-
const response = await fetch(
|
|
311
|
-
`${this.baseUrl}/tools/${encodedToolId}/versions/${encodedVersionId}`,
|
|
312
|
-
{
|
|
313
|
-
method: "PUT",
|
|
314
|
-
headers: {
|
|
315
|
-
"Content-Type": "application/json"
|
|
316
|
-
},
|
|
317
|
-
body: JSON.stringify(version)
|
|
318
|
-
}
|
|
319
|
-
);
|
|
320
|
-
if (!response.ok) {
|
|
321
|
-
throw new Error(`Failed to create/update tool version: ${response.statusText}`);
|
|
322
|
-
}
|
|
323
|
-
return response.text();
|
|
324
|
-
}
|
|
325
|
-
async createToolClass(toolClass) {
|
|
326
|
-
const response = await fetch(`${this.baseUrl}/toolClasses`, {
|
|
327
|
-
method: "POST",
|
|
328
|
-
headers: {
|
|
329
|
-
"Content-Type": "application/json"
|
|
330
|
-
},
|
|
331
|
-
body: JSON.stringify(toolClass)
|
|
332
|
-
});
|
|
333
|
-
if (!response.ok) {
|
|
334
|
-
throw new Error(`Failed to create tool class: ${response.statusText}`);
|
|
335
|
-
}
|
|
336
|
-
return response.text();
|
|
337
|
-
}
|
|
338
|
-
async createToolClassWithId(id, toolClass) {
|
|
339
|
-
const encodedId = encodeURIComponent(id);
|
|
340
|
-
const response = await fetch(`${this.baseUrl}/toolClasses/${encodedId}`, {
|
|
341
|
-
method: "PUT",
|
|
342
|
-
headers: {
|
|
343
|
-
"Content-Type": "application/json"
|
|
344
|
-
},
|
|
345
|
-
body: JSON.stringify(toolClass)
|
|
346
|
-
});
|
|
347
|
-
if (!response.ok) {
|
|
348
|
-
throw new Error(`Failed to create/update tool class: ${response.statusText}`);
|
|
349
|
-
}
|
|
350
|
-
return response.text();
|
|
351
|
-
}
|
|
352
|
-
};
|
|
353
|
-
var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
112
|
+
var _ECCClientElixirTrsToolCreate = class _ECCClientElixirTrsToolCreate extends LitElement {
|
|
354
113
|
constructor() {
|
|
355
114
|
super(...arguments);
|
|
356
115
|
this.baseUrl = "";
|
|
116
|
+
this.defaultName = "";
|
|
117
|
+
this.defaultOrganization = "";
|
|
118
|
+
this.defaultDescription = "";
|
|
119
|
+
this.defaultToolClassId = "";
|
|
120
|
+
this.defaultAliases = "";
|
|
121
|
+
this.defaultCheckerUrl = "";
|
|
122
|
+
this.defaultCustomToolId = "";
|
|
123
|
+
this.defaultVersionName = "";
|
|
124
|
+
this.defaultVersionAuthor = "";
|
|
125
|
+
this.defaultIsProduction = false;
|
|
126
|
+
this.defaultSigned = false;
|
|
127
|
+
this.defaultVerified = false;
|
|
128
|
+
this.defaultVerifiedSource = "";
|
|
129
|
+
this.defaultIncludedApps = "";
|
|
130
|
+
this.defaultCustomVersionId = "";
|
|
131
|
+
this.supportedDescriptorTypes = [];
|
|
357
132
|
this.toolClasses = [];
|
|
358
133
|
this.loading = false;
|
|
359
134
|
this.error = null;
|
|
@@ -390,9 +165,10 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
390
165
|
this.activeDescriptorType = {};
|
|
391
166
|
}
|
|
392
167
|
async firstUpdated() {
|
|
168
|
+
this.initializeFormWithDefaults();
|
|
393
169
|
if (!this.baseUrl && !this.provider) {
|
|
394
170
|
this.dispatchEvent(
|
|
395
|
-
new CustomEvent("ecc-tool-create-validation-
|
|
171
|
+
new CustomEvent("ecc-tool-create-validation-failed", {
|
|
396
172
|
detail: {
|
|
397
173
|
error: "Please provide either a base URL for the TRS API or a custom provider."
|
|
398
174
|
},
|
|
@@ -413,21 +189,66 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
413
189
|
await this.loadToolClasses();
|
|
414
190
|
}
|
|
415
191
|
}
|
|
192
|
+
initializeFormWithDefaults() {
|
|
193
|
+
this.formData = {
|
|
194
|
+
name: this.defaultName,
|
|
195
|
+
organization: this.defaultOrganization,
|
|
196
|
+
description: this.defaultDescription,
|
|
197
|
+
toolClassId: this.defaultToolClassId,
|
|
198
|
+
aliases: this.defaultAliases ? this.defaultAliases.split(",").map((s) => s.trim()).filter(Boolean) : [],
|
|
199
|
+
checkerUrl: this.defaultCheckerUrl,
|
|
200
|
+
hasChecker: Boolean(this.defaultCheckerUrl),
|
|
201
|
+
customToolId: this.defaultCustomToolId,
|
|
202
|
+
useCustomId: Boolean(this.defaultCustomToolId)
|
|
203
|
+
};
|
|
204
|
+
if (this.versions.length > 0) {
|
|
205
|
+
this.versions[0] = __spreadProps(__spreadValues({}, this.versions[0]), {
|
|
206
|
+
name: this.defaultVersionName,
|
|
207
|
+
author: this.defaultVersionAuthor ? this.defaultVersionAuthor.split(",").map((s) => s.trim()).filter(Boolean) : [],
|
|
208
|
+
isProduction: this.defaultIsProduction,
|
|
209
|
+
signed: this.defaultSigned,
|
|
210
|
+
verified: this.defaultVerified,
|
|
211
|
+
verifiedSource: this.defaultVerifiedSource ? this.defaultVerifiedSource.split(",").map((s) => s.trim()).filter(Boolean) : [],
|
|
212
|
+
includedApps: this.defaultIncludedApps ? this.defaultIncludedApps.split(",").map((s) => s.trim()).filter(Boolean) : [],
|
|
213
|
+
customVersionId: this.defaultCustomVersionId,
|
|
214
|
+
useCustomVersionId: Boolean(this.defaultCustomVersionId)
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
416
218
|
updated(changedProperties) {
|
|
219
|
+
const defaultProps = [
|
|
220
|
+
"defaultName",
|
|
221
|
+
"defaultOrganization",
|
|
222
|
+
"defaultDescription",
|
|
223
|
+
"defaultToolClassId",
|
|
224
|
+
"defaultAliases",
|
|
225
|
+
"defaultCheckerUrl",
|
|
226
|
+
"defaultCustomToolId",
|
|
227
|
+
"defaultVersionName",
|
|
228
|
+
"defaultVersionAuthor",
|
|
229
|
+
"defaultIsProduction",
|
|
230
|
+
"defaultSigned",
|
|
231
|
+
"defaultVerified",
|
|
232
|
+
"defaultVerifiedSource",
|
|
233
|
+
"defaultIncludedApps",
|
|
234
|
+
"defaultCustomVersionId"
|
|
235
|
+
];
|
|
236
|
+
if (defaultProps.some((prop) => changedProperties.has(prop))) {
|
|
237
|
+
this.initializeFormWithDefaults();
|
|
238
|
+
}
|
|
417
239
|
if (changedProperties.has("baseUrl") && this.baseUrl) {
|
|
418
240
|
this._provider = new RestTrsFilerProvider(this.baseUrl);
|
|
419
241
|
this.loadToolClasses();
|
|
420
242
|
}
|
|
421
243
|
}
|
|
422
244
|
async loadToolClasses() {
|
|
423
|
-
if (!this._provider)
|
|
424
|
-
return;
|
|
245
|
+
if (!this._provider) return;
|
|
425
246
|
try {
|
|
426
247
|
this.toolClasses = await this._provider.getToolClasses();
|
|
427
248
|
} catch (error) {
|
|
428
249
|
console.error("Failed to load tool classes:", error);
|
|
429
250
|
this.dispatchEvent(
|
|
430
|
-
new CustomEvent("ecc-tool-create-
|
|
251
|
+
new CustomEvent("ecc-tool-create-failed", {
|
|
431
252
|
detail: { error: "Failed to load tool classes" },
|
|
432
253
|
bubbles: true,
|
|
433
254
|
composed: true
|
|
@@ -454,18 +275,18 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
454
275
|
this.versions = [
|
|
455
276
|
...this.versions,
|
|
456
277
|
{
|
|
457
|
-
name:
|
|
458
|
-
author: [],
|
|
278
|
+
name: this.defaultVersionName,
|
|
279
|
+
author: this.defaultVersionAuthor ? this.defaultVersionAuthor.split(",").map((s) => s.trim()).filter(Boolean) : [],
|
|
459
280
|
descriptorTypes: [],
|
|
460
|
-
isProduction:
|
|
461
|
-
signed:
|
|
462
|
-
verified:
|
|
463
|
-
verifiedSource: [],
|
|
464
|
-
includedApps: [],
|
|
281
|
+
isProduction: this.defaultIsProduction,
|
|
282
|
+
signed: this.defaultSigned,
|
|
283
|
+
verified: this.defaultVerified,
|
|
284
|
+
verifiedSource: this.defaultVerifiedSource ? this.defaultVerifiedSource.split(",").map((s) => s.trim()).filter(Boolean) : [],
|
|
285
|
+
includedApps: this.defaultIncludedApps ? this.defaultIncludedApps.split(",").map((s) => s.trim()).filter(Boolean) : [],
|
|
465
286
|
files: [],
|
|
466
287
|
images: [],
|
|
467
|
-
customVersionId:
|
|
468
|
-
useCustomVersionId:
|
|
288
|
+
customVersionId: this.defaultCustomVersionId,
|
|
289
|
+
useCustomVersionId: Boolean(this.defaultCustomVersionId)
|
|
469
290
|
}
|
|
470
291
|
];
|
|
471
292
|
}
|
|
@@ -479,8 +300,10 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
479
300
|
const activeDescriptorType = this.activeDescriptorType[versionIndex] || (version.descriptorTypes.length > 0 ? version.descriptorTypes[0] : null);
|
|
480
301
|
if (!activeDescriptorType) {
|
|
481
302
|
this.dispatchEvent(
|
|
482
|
-
new CustomEvent("ecc-tool-create-validation-
|
|
483
|
-
detail: {
|
|
303
|
+
new CustomEvent("ecc-tool-create-validation-failed", {
|
|
304
|
+
detail: {
|
|
305
|
+
error: "Please select a descriptor type before adding files."
|
|
306
|
+
},
|
|
484
307
|
bubbles: true,
|
|
485
308
|
composed: true
|
|
486
309
|
})
|
|
@@ -489,9 +312,16 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
489
312
|
}
|
|
490
313
|
const updatedVersions = [...this.versions];
|
|
491
314
|
const descriptorType = activeDescriptorType;
|
|
315
|
+
let fileType = "PRIMARY_DESCRIPTOR";
|
|
316
|
+
if (updatedVersions[versionIndex].files.find(
|
|
317
|
+
(file) => file.fileType === "PRIMARY_DESCRIPTOR"
|
|
318
|
+
)) {
|
|
319
|
+
fileType = "SECONDARY_DESCRIPTOR";
|
|
320
|
+
}
|
|
492
321
|
updatedVersions[versionIndex].files.push({
|
|
493
322
|
path: "",
|
|
494
|
-
fileType
|
|
323
|
+
fileType,
|
|
324
|
+
uiFileType: fileType,
|
|
495
325
|
content: "",
|
|
496
326
|
checksumType: "sha256",
|
|
497
327
|
checksumValue: "",
|
|
@@ -524,14 +354,16 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
524
354
|
}
|
|
525
355
|
handleBulkFileUpload(versionIndex, event) {
|
|
526
356
|
const input = event.target;
|
|
527
|
-
const files = input
|
|
357
|
+
const { files } = input;
|
|
528
358
|
if (files && files.length > 0) {
|
|
529
359
|
const version = this.versions[versionIndex];
|
|
530
360
|
const activeDescriptorType = this.activeDescriptorType[versionIndex] || (version.descriptorTypes.length > 0 ? version.descriptorTypes[0] : null);
|
|
531
361
|
if (!activeDescriptorType) {
|
|
532
362
|
this.dispatchEvent(
|
|
533
|
-
new CustomEvent("ecc-tool-create-validation-
|
|
534
|
-
detail: {
|
|
363
|
+
new CustomEvent("ecc-tool-create-validation-failed", {
|
|
364
|
+
detail: {
|
|
365
|
+
error: "Please select a descriptor type before uploading files."
|
|
366
|
+
},
|
|
535
367
|
bubbles: true,
|
|
536
368
|
composed: true
|
|
537
369
|
})
|
|
@@ -541,15 +373,25 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
541
373
|
}
|
|
542
374
|
const updatedVersions = [...this.versions];
|
|
543
375
|
const descriptorType = activeDescriptorType;
|
|
544
|
-
Array.from(files).forEach((file
|
|
376
|
+
Array.from(files).forEach((file) => {
|
|
377
|
+
const defaultFileType = _ECCClientElixirTrsToolCreate.getDefaultFileType(
|
|
378
|
+
file.name
|
|
379
|
+
);
|
|
380
|
+
const uiFileType = _ECCClientElixirTrsToolCreate.getUIFileType(
|
|
381
|
+
file.name,
|
|
382
|
+
defaultFileType
|
|
383
|
+
);
|
|
384
|
+
const containerImageType = defaultFileType === "CONTAINERFILE" ? _ECCClientElixirTrsToolCreate.getContainerImageType(file.name) : void 0;
|
|
545
385
|
const fileData = {
|
|
546
386
|
path: file.name,
|
|
547
|
-
fileType:
|
|
387
|
+
fileType: defaultFileType,
|
|
388
|
+
uiFileType,
|
|
548
389
|
content: "",
|
|
549
390
|
file,
|
|
550
391
|
checksumType: "sha256",
|
|
551
392
|
checksumValue: "",
|
|
552
|
-
descriptorType
|
|
393
|
+
descriptorType,
|
|
394
|
+
containerImageType
|
|
553
395
|
};
|
|
554
396
|
updatedVersions[versionIndex].files.push(fileData);
|
|
555
397
|
const reader = new FileReader();
|
|
@@ -576,7 +418,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
576
418
|
const file = (_a = input.files) == null ? void 0 : _a[0];
|
|
577
419
|
if (!file || !file.name.toLowerCase().endsWith(".zip")) {
|
|
578
420
|
this.dispatchEvent(
|
|
579
|
-
new CustomEvent("ecc-tool-create-validation-
|
|
421
|
+
new CustomEvent("ecc-tool-create-validation-failed", {
|
|
580
422
|
detail: { error: "Please select a valid ZIP file" },
|
|
581
423
|
bubbles: true,
|
|
582
424
|
composed: true
|
|
@@ -588,8 +430,10 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
588
430
|
const activeDescriptorType = this.activeDescriptorType[versionIndex] || (version.descriptorTypes.length > 0 ? version.descriptorTypes[0] : null);
|
|
589
431
|
if (!activeDescriptorType) {
|
|
590
432
|
this.dispatchEvent(
|
|
591
|
-
new CustomEvent("ecc-tool-create-validation-
|
|
592
|
-
detail: {
|
|
433
|
+
new CustomEvent("ecc-tool-create-validation-failed", {
|
|
434
|
+
detail: {
|
|
435
|
+
error: "Please select a descriptor type before uploading ZIP files."
|
|
436
|
+
},
|
|
593
437
|
bubbles: true,
|
|
594
438
|
composed: true
|
|
595
439
|
})
|
|
@@ -603,17 +447,16 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
603
447
|
const zipContent = await zip.loadAsync(file);
|
|
604
448
|
const updatedVersions = [...this.versions];
|
|
605
449
|
const filePromises = [];
|
|
606
|
-
let extractedCount = 0;
|
|
607
450
|
const descriptorType = activeDescriptorType;
|
|
608
451
|
zipContent.forEach((relativePath, zipEntry) => {
|
|
609
|
-
if (zipEntry.dir)
|
|
610
|
-
|
|
611
|
-
|
|
452
|
+
if (zipEntry.dir) return;
|
|
453
|
+
const promise = _ECCClientElixirTrsToolCreate.extractFileFromZip(
|
|
454
|
+
zipEntry,
|
|
455
|
+
relativePath
|
|
456
|
+
).then((fileData) => {
|
|
612
457
|
if (fileData) {
|
|
613
|
-
|
|
614
|
-
updatedVersions[versionIndex].files.push(
|
|
615
|
-
extractedCount++;
|
|
616
|
-
} else {
|
|
458
|
+
const fileDataWithDescriptor = __spreadProps(__spreadValues({}, fileData), { descriptorType });
|
|
459
|
+
updatedVersions[versionIndex].files.push(fileDataWithDescriptor);
|
|
617
460
|
}
|
|
618
461
|
}).catch((error) => {
|
|
619
462
|
console.error(`Failed to extract file ${relativePath}:`, error);
|
|
@@ -635,7 +478,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
635
478
|
error instanceof Error ? error.stack : "No stack trace"
|
|
636
479
|
);
|
|
637
480
|
this.dispatchEvent(
|
|
638
|
-
new CustomEvent("ecc-tool-create-
|
|
481
|
+
new CustomEvent("ecc-tool-create-failed", {
|
|
639
482
|
detail: {
|
|
640
483
|
error: `Failed to extract ZIP file: ${error instanceof Error ? error.message : "Unknown error"}. Please ensure it's a valid ZIP archive.`
|
|
641
484
|
},
|
|
@@ -647,9 +490,9 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
647
490
|
this.loading = false;
|
|
648
491
|
}
|
|
649
492
|
}
|
|
650
|
-
async extractFileFromZip(zipEntry, relativePath) {
|
|
493
|
+
static async extractFileFromZip(zipEntry, relativePath) {
|
|
651
494
|
try {
|
|
652
|
-
const isTextFile =
|
|
495
|
+
const isTextFile = _ECCClientElixirTrsToolCreate.isTextFile(relativePath);
|
|
653
496
|
let content;
|
|
654
497
|
if (isTextFile) {
|
|
655
498
|
content = await zipEntry.async("text");
|
|
@@ -658,16 +501,24 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
658
501
|
const uint8Array = new Uint8Array(arrayBuffer);
|
|
659
502
|
content = btoa(String.fromCharCode(...uint8Array));
|
|
660
503
|
}
|
|
504
|
+
const defaultFileType = _ECCClientElixirTrsToolCreate.getDefaultFileType(relativePath);
|
|
505
|
+
const uiFileType = _ECCClientElixirTrsToolCreate.getUIFileType(
|
|
506
|
+
relativePath,
|
|
507
|
+
defaultFileType
|
|
508
|
+
);
|
|
509
|
+
const containerImageType = defaultFileType === "CONTAINERFILE" ? _ECCClientElixirTrsToolCreate.getContainerImageType(relativePath) : void 0;
|
|
661
510
|
const fileData = {
|
|
662
511
|
path: relativePath,
|
|
663
|
-
fileType:
|
|
512
|
+
fileType: defaultFileType,
|
|
513
|
+
uiFileType,
|
|
664
514
|
content,
|
|
665
515
|
file: void 0,
|
|
666
516
|
// No actual File object for extracted files
|
|
667
517
|
checksumType: "sha256",
|
|
668
518
|
checksumValue: "",
|
|
669
|
-
descriptorType: void 0
|
|
519
|
+
descriptorType: void 0,
|
|
670
520
|
// Will be set by the calling method
|
|
521
|
+
containerImageType
|
|
671
522
|
};
|
|
672
523
|
return fileData;
|
|
673
524
|
} catch (error) {
|
|
@@ -679,7 +530,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
679
530
|
return null;
|
|
680
531
|
}
|
|
681
532
|
}
|
|
682
|
-
isTextFile(filename) {
|
|
533
|
+
static isTextFile(filename) {
|
|
683
534
|
var _a;
|
|
684
535
|
const textExtensions = [
|
|
685
536
|
"txt",
|
|
@@ -715,7 +566,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
715
566
|
const extension = (_a = filename.split(".").pop()) == null ? void 0 : _a.toLowerCase();
|
|
716
567
|
return textExtensions.includes(extension || "") || filename.toLowerCase().includes("readme") || filename.toLowerCase().includes("license") || filename.toLowerCase().includes("changelog");
|
|
717
568
|
}
|
|
718
|
-
getDefaultFileType(filename) {
|
|
569
|
+
static getDefaultFileType(filename) {
|
|
719
570
|
var _a;
|
|
720
571
|
const extension = (_a = filename.split(".").pop()) == null ? void 0 : _a.toLowerCase();
|
|
721
572
|
const basename = filename.toLowerCase();
|
|
@@ -733,10 +584,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
733
584
|
}
|
|
734
585
|
return "OTHER";
|
|
735
586
|
}
|
|
736
|
-
|
|
737
|
-
return void 0;
|
|
738
|
-
}
|
|
739
|
-
getContainerImageType(filename) {
|
|
587
|
+
static getContainerImageType(filename) {
|
|
740
588
|
var _a;
|
|
741
589
|
const basename = filename.toLowerCase();
|
|
742
590
|
const extension = (_a = filename.split(".").pop()) == null ? void 0 : _a.toLowerCase();
|
|
@@ -748,7 +596,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
748
596
|
}
|
|
749
597
|
return "Docker";
|
|
750
598
|
}
|
|
751
|
-
getFileExtension(filename) {
|
|
599
|
+
static getFileExtension(filename) {
|
|
752
600
|
var _a;
|
|
753
601
|
return ((_a = filename.split(".").pop()) == null ? void 0 : _a.toLowerCase()) || "txt";
|
|
754
602
|
}
|
|
@@ -775,11 +623,12 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
775
623
|
this.versions = updatedVersions;
|
|
776
624
|
}
|
|
777
625
|
async handleSubmit() {
|
|
778
|
-
console.log("handleSubmit");
|
|
779
626
|
if (!this._provider || !this._provider.createTool) {
|
|
780
627
|
this.dispatchEvent(
|
|
781
|
-
new CustomEvent("ecc-tool-create-
|
|
782
|
-
detail: {
|
|
628
|
+
new CustomEvent("ecc-tool-create-failed", {
|
|
629
|
+
detail: {
|
|
630
|
+
error: "Tool creation is not supported by the current provider"
|
|
631
|
+
},
|
|
783
632
|
bubbles: true,
|
|
784
633
|
composed: true
|
|
785
634
|
})
|
|
@@ -829,7 +678,9 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
829
678
|
}
|
|
830
679
|
] : void 0
|
|
831
680
|
},
|
|
832
|
-
type: file.fileType === "CONTAINERFILE" ?
|
|
681
|
+
type: file.fileType === "CONTAINERFILE" ? file.containerImageType || _ECCClientElixirTrsToolCreate.getContainerImageType(
|
|
682
|
+
file.path
|
|
683
|
+
) : file.descriptorType || version.descriptorTypes[0] || "CWL"
|
|
833
684
|
// Use file's descriptor type or first version descriptor type as default
|
|
834
685
|
})) : void 0,
|
|
835
686
|
images: version.images.length > 0 ? version.images : void 0
|
|
@@ -846,7 +697,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
846
697
|
}
|
|
847
698
|
const successMessage = `Tool created successfully with ID: ${toolId}`;
|
|
848
699
|
this.dispatchEvent(
|
|
849
|
-
new CustomEvent("ecc-tool-
|
|
700
|
+
new CustomEvent("ecc-tool-created", {
|
|
850
701
|
detail: { toolId, toolData, message: successMessage },
|
|
851
702
|
bubbles: true,
|
|
852
703
|
composed: true
|
|
@@ -856,7 +707,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
856
707
|
} catch (err) {
|
|
857
708
|
const errorMessage = err instanceof Error ? err.message : "Failed to create tool";
|
|
858
709
|
this.dispatchEvent(
|
|
859
|
-
new CustomEvent("ecc-tool-create-
|
|
710
|
+
new CustomEvent("ecc-tool-create-failed", {
|
|
860
711
|
detail: { error: errorMessage },
|
|
861
712
|
bubbles: true,
|
|
862
713
|
composed: true
|
|
@@ -867,40 +718,20 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
867
718
|
}
|
|
868
719
|
}
|
|
869
720
|
resetForm() {
|
|
870
|
-
this.
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
aliases: [],
|
|
876
|
-
checkerUrl: "",
|
|
877
|
-
hasChecker: false,
|
|
878
|
-
customToolId: "",
|
|
879
|
-
useCustomId: false
|
|
880
|
-
};
|
|
881
|
-
this.versions = [
|
|
882
|
-
{
|
|
883
|
-
name: "",
|
|
884
|
-
author: [],
|
|
885
|
-
descriptorTypes: [],
|
|
886
|
-
isProduction: false,
|
|
887
|
-
signed: false,
|
|
888
|
-
verified: false,
|
|
889
|
-
verifiedSource: [],
|
|
890
|
-
includedApps: [],
|
|
891
|
-
files: [],
|
|
892
|
-
images: [],
|
|
893
|
-
customVersionId: "",
|
|
894
|
-
useCustomVersionId: false
|
|
895
|
-
}
|
|
896
|
-
];
|
|
721
|
+
this.initializeFormWithDefaults();
|
|
722
|
+
this.error = null;
|
|
723
|
+
this.success = null;
|
|
724
|
+
this.activeFileIndex = {};
|
|
725
|
+
this.activeDescriptorType = {};
|
|
897
726
|
}
|
|
898
727
|
renderBasicFields() {
|
|
899
728
|
return html`
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
729
|
+
<div class="grid gap-4">
|
|
730
|
+
<!-- Tool Name, Organization, Tool Class in same row on desktop -->
|
|
731
|
+
<div class="flex md:flex-row flex-col">
|
|
732
|
+
<!-- Tool Name Field -->
|
|
733
|
+
<slot name="tool-name">
|
|
734
|
+
<div class="flex-1 pr-4">
|
|
904
735
|
<ecc-utils-design-label
|
|
905
736
|
for="tool-name"
|
|
906
737
|
class="text-sm font-medium"
|
|
@@ -910,13 +741,16 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
910
741
|
<ecc-utils-design-input
|
|
911
742
|
id="tool-name"
|
|
912
743
|
.value=${this.formData.name}
|
|
913
|
-
@ecc-
|
|
744
|
+
@ecc-input-changed=${(e) => this.handleInputChange("name", e.detail.value)}
|
|
914
745
|
placeholder="Enter a descriptive name for your tool"
|
|
915
746
|
class="h-10"
|
|
916
747
|
></ecc-utils-design-input>
|
|
917
748
|
</div>
|
|
749
|
+
</slot>
|
|
918
750
|
|
|
919
|
-
|
|
751
|
+
<!-- Organization Field -->
|
|
752
|
+
<slot name="organization">
|
|
753
|
+
<div class="flex-1 pr-4">
|
|
920
754
|
<ecc-utils-design-label
|
|
921
755
|
for="organization"
|
|
922
756
|
class="text-sm font-medium"
|
|
@@ -926,14 +760,17 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
926
760
|
<ecc-utils-design-input
|
|
927
761
|
id="organization"
|
|
928
762
|
.value=${this.formData.organization}
|
|
929
|
-
@ecc-
|
|
763
|
+
@ecc-input-changed=${(e) => this.handleInputChange("organization", e.detail.value)}
|
|
930
764
|
placeholder="Enter your organization name"
|
|
931
765
|
required
|
|
932
766
|
class="h-10"
|
|
933
767
|
></ecc-utils-design-input>
|
|
934
768
|
</div>
|
|
769
|
+
</slot>
|
|
935
770
|
|
|
936
|
-
|
|
771
|
+
<!-- Tool Class Field -->
|
|
772
|
+
<slot name="tool-class">
|
|
773
|
+
<div class="flex-1">
|
|
937
774
|
<ecc-utils-design-label
|
|
938
775
|
for="tool-class"
|
|
939
776
|
class="text-sm font-medium"
|
|
@@ -943,7 +780,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
943
780
|
<ecc-utils-design-select
|
|
944
781
|
id="tool-class-select"
|
|
945
782
|
.value=${this.formData.toolClassId}
|
|
946
|
-
@ecc-
|
|
783
|
+
@ecc-input-changed=${(e) => {
|
|
947
784
|
this.handleInputChange("toolClassId", e.detail.value);
|
|
948
785
|
}}
|
|
949
786
|
required
|
|
@@ -970,9 +807,11 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
970
807
|
</ecc-utils-design-select-content>
|
|
971
808
|
</ecc-utils-design-select>
|
|
972
809
|
</div>
|
|
973
|
-
</
|
|
810
|
+
</slot>
|
|
811
|
+
</div>
|
|
974
812
|
|
|
975
|
-
|
|
813
|
+
<!-- Description spans full width -->
|
|
814
|
+
<slot name="description">
|
|
976
815
|
<div class="grid gap-2">
|
|
977
816
|
<ecc-utils-design-label
|
|
978
817
|
for="description"
|
|
@@ -983,14 +822,17 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
983
822
|
<ecc-utils-design-textarea
|
|
984
823
|
id="description"
|
|
985
824
|
.value=${this.formData.description}
|
|
986
|
-
@ecc-
|
|
825
|
+
@ecc-input-changed=${(e) => this.handleInputChange("description", e.detail.value)}
|
|
987
826
|
placeholder="Provide a detailed description of what your tool does"
|
|
988
827
|
rows="4"
|
|
989
828
|
class="resize-none"
|
|
990
829
|
></ecc-utils-design-textarea>
|
|
991
830
|
</div>
|
|
992
|
-
|
|
993
|
-
|
|
831
|
+
</slot>
|
|
832
|
+
|
|
833
|
+
<!-- Advanced Fields -->
|
|
834
|
+
<slot name="advanced-fields"> ${this.renderAdvancedFields()} </slot>
|
|
835
|
+
</div>
|
|
994
836
|
`;
|
|
995
837
|
}
|
|
996
838
|
renderAdvancedFields() {
|
|
@@ -1027,67 +869,73 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1027
869
|
<!-- Tool Configuration in grid layout -->
|
|
1028
870
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
|
1029
871
|
<!-- Custom Tool ID Section -->
|
|
1030
|
-
<
|
|
1031
|
-
<
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
872
|
+
<slot name="custom-tool-id">
|
|
873
|
+
<div class="grid gap-2">
|
|
874
|
+
<ecc-utils-design-label
|
|
875
|
+
for="custom-tool-id"
|
|
876
|
+
class="text-sm font-medium h-6"
|
|
877
|
+
>
|
|
878
|
+
Custom Tool ID
|
|
879
|
+
</ecc-utils-design-label>
|
|
880
|
+
<ecc-utils-design-input
|
|
881
|
+
id="custom-tool-id"
|
|
882
|
+
.value=${this.formData.customToolId}
|
|
883
|
+
@ecc-input-changed=${(e) => {
|
|
1041
884
|
this.handleInputChange("customToolId", e.detail.value);
|
|
1042
885
|
this.handleInputChange(
|
|
1043
886
|
"useCustomId",
|
|
1044
887
|
Boolean(e.detail.value)
|
|
1045
888
|
);
|
|
1046
889
|
}}
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
890
|
+
placeholder="my-org/my-tool (optional)"
|
|
891
|
+
class="h-10"
|
|
892
|
+
></ecc-utils-design-input>
|
|
893
|
+
</div>
|
|
894
|
+
</slot>
|
|
1051
895
|
|
|
1052
896
|
<!-- Aliases Section -->
|
|
1053
|
-
<
|
|
1054
|
-
<
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
897
|
+
<slot name="aliases">
|
|
898
|
+
<div class="grid gap-2">
|
|
899
|
+
<ecc-utils-design-label
|
|
900
|
+
for="aliases"
|
|
901
|
+
class="text-sm font-medium h-6"
|
|
902
|
+
>
|
|
903
|
+
Aliases
|
|
904
|
+
</ecc-utils-design-label>
|
|
905
|
+
<ecc-utils-design-input
|
|
906
|
+
id="aliases"
|
|
907
|
+
.value=${this.formData.aliases.join(", ")}
|
|
908
|
+
@ecc-input-changed=${(e) => this.handleArrayInputChange("aliases", e.detail.value)}
|
|
909
|
+
placeholder="alias1, alias2, alias3"
|
|
910
|
+
class="h-10"
|
|
911
|
+
></ecc-utils-design-input>
|
|
912
|
+
</div>
|
|
913
|
+
</slot>
|
|
1068
914
|
|
|
1069
915
|
<!-- Checker Tool Section -->
|
|
1070
|
-
<
|
|
1071
|
-
<
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
916
|
+
<slot name="checker-url">
|
|
917
|
+
<div class="grid gap-2">
|
|
918
|
+
<ecc-utils-design-label
|
|
919
|
+
for="checker-url"
|
|
920
|
+
class="text-sm font-medium h-6"
|
|
921
|
+
>
|
|
922
|
+
Checker Tool URL
|
|
923
|
+
</ecc-utils-design-label>
|
|
924
|
+
<ecc-utils-design-input
|
|
925
|
+
id="checker-url"
|
|
926
|
+
.value=${this.formData.checkerUrl}
|
|
927
|
+
@ecc-input-changed=${(e) => {
|
|
1081
928
|
this.handleInputChange("checkerUrl", e.detail.value);
|
|
1082
929
|
this.handleInputChange(
|
|
1083
930
|
"hasChecker",
|
|
1084
931
|
Boolean(e.detail.value)
|
|
1085
932
|
);
|
|
1086
933
|
}}
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
934
|
+
placeholder="https://example.com/checker-tool (optional)"
|
|
935
|
+
class="h-10"
|
|
936
|
+
></ecc-utils-design-input>
|
|
937
|
+
</div>
|
|
938
|
+
</slot>
|
|
1091
939
|
</div>
|
|
1092
940
|
</div>
|
|
1093
941
|
</ecc-utils-design-collapsible-content>
|
|
@@ -1183,43 +1031,58 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1183
1031
|
return html`
|
|
1184
1032
|
<div class="flex flex-col gap-4 pt-4">
|
|
1185
1033
|
<!-- Basic Version Information -->
|
|
1186
|
-
<div class="
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1034
|
+
<div class="flex md:flex-row flex-col">
|
|
1035
|
+
<!-- Version Name Field -->
|
|
1036
|
+
<slot name="version-${index}-name">
|
|
1037
|
+
<div class="flex-1 pr-4">
|
|
1038
|
+
<ecc-utils-design-label class="text-sm font-medium h-6"
|
|
1039
|
+
>Version Name</ecc-utils-design-label
|
|
1040
|
+
>
|
|
1041
|
+
<ecc-utils-design-input
|
|
1042
|
+
.value=${version.name}
|
|
1043
|
+
@ecc-input-changed=${(e) => this.handleVersionChange(index, "name", e.detail.value)}
|
|
1044
|
+
placeholder="e.g., v1.0.0"
|
|
1045
|
+
class="h-10"
|
|
1046
|
+
></ecc-utils-design-input>
|
|
1047
|
+
</div>
|
|
1048
|
+
</slot>
|
|
1198
1049
|
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1050
|
+
<!-- Version Author Field -->
|
|
1051
|
+
<slot name="version-${index}-author">
|
|
1052
|
+
<div class="flex-1 pr-4">
|
|
1053
|
+
<ecc-utils-design-label class="text-sm font-medium h-6">
|
|
1054
|
+
Authors (comma-separated)
|
|
1055
|
+
</ecc-utils-design-label>
|
|
1056
|
+
<ecc-utils-design-input
|
|
1057
|
+
.value=${version.author.join(", ")}
|
|
1058
|
+
@ecc-input-changed=${(e) => {
|
|
1206
1059
|
const authors = e.detail.value.split(",").map((a) => a.trim()).filter((a) => a);
|
|
1207
1060
|
this.handleVersionChange(index, "author", authors);
|
|
1208
1061
|
}}
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1062
|
+
placeholder="author1, author2"
|
|
1063
|
+
class="h-10"
|
|
1064
|
+
></ecc-utils-design-input>
|
|
1065
|
+
</div>
|
|
1066
|
+
</slot>
|
|
1213
1067
|
|
|
1214
1068
|
<!-- Descriptor Types Selection -->
|
|
1215
|
-
<div class="
|
|
1069
|
+
<div class="flex-1">
|
|
1216
1070
|
<ecc-utils-design-label class="text-sm font-medium"
|
|
1217
|
-
>
|
|
1071
|
+
>Languages</ecc-utils-design-label
|
|
1218
1072
|
>
|
|
1219
1073
|
<ecc-utils-design-multi-select
|
|
1220
1074
|
.value=${version.descriptorTypes}
|
|
1221
|
-
placeholder="Select
|
|
1222
|
-
@ecc-
|
|
1075
|
+
placeholder="Select languages..."
|
|
1076
|
+
@ecc-input-changed=${(e) => {
|
|
1077
|
+
this.dispatchEvent(
|
|
1078
|
+
new CustomEvent("ecc-tool-create-input-changed", {
|
|
1079
|
+
detail: {
|
|
1080
|
+
value: e.detail.value,
|
|
1081
|
+
versionIndex: index,
|
|
1082
|
+
type: "version-descriptor-types"
|
|
1083
|
+
}
|
|
1084
|
+
})
|
|
1085
|
+
);
|
|
1223
1086
|
const updatedVersions = [...this.versions];
|
|
1224
1087
|
const oldDescriptorTypes = updatedVersions[index].descriptorTypes;
|
|
1225
1088
|
const newDescriptorTypes = e.detail.value;
|
|
@@ -1233,7 +1096,9 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1233
1096
|
);
|
|
1234
1097
|
}
|
|
1235
1098
|
const currentActiveDescriptor = this.activeDescriptorType[index];
|
|
1236
|
-
if (currentActiveDescriptor && removedDescriptorTypes.includes(
|
|
1099
|
+
if (currentActiveDescriptor && removedDescriptorTypes.includes(
|
|
1100
|
+
currentActiveDescriptor
|
|
1101
|
+
)) {
|
|
1237
1102
|
this.activeDescriptorType = __spreadProps(__spreadValues({}, this.activeDescriptorType), {
|
|
1238
1103
|
[index]: newDescriptorTypes.length > 0 ? newDescriptorTypes[0] : void 0
|
|
1239
1104
|
});
|
|
@@ -1249,168 +1114,184 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1249
1114
|
</ecc-utils-design-multi-select-trigger>
|
|
1250
1115
|
|
|
1251
1116
|
<ecc-utils-design-multi-select-content>
|
|
1252
|
-
|
|
1253
|
-
CWL (Common Workflow Language)
|
|
1254
|
-
</ecc-utils-design-multi-select-item>
|
|
1255
|
-
<ecc-utils-design-multi-select-item value="WDL">
|
|
1256
|
-
WDL (Workflow Description Language)
|
|
1257
|
-
</ecc-utils-design-multi-select-item>
|
|
1258
|
-
<ecc-utils-design-multi-select-item value="NFL">
|
|
1259
|
-
Nextflow
|
|
1260
|
-
</ecc-utils-design-multi-select-item>
|
|
1261
|
-
<ecc-utils-design-multi-select-item value="GALAXY">
|
|
1262
|
-
Galaxy
|
|
1263
|
-
</ecc-utils-design-multi-select-item>
|
|
1264
|
-
<ecc-utils-design-multi-select-item value="SMK">
|
|
1265
|
-
Snakemake
|
|
1266
|
-
</ecc-utils-design-multi-select-item>
|
|
1117
|
+
${this.renderDescriptorTypeOptions()}
|
|
1267
1118
|
</ecc-utils-design-multi-select-content>
|
|
1268
1119
|
</ecc-utils-design-multi-select>
|
|
1269
1120
|
</div>
|
|
1270
1121
|
</div>
|
|
1271
1122
|
|
|
1272
1123
|
<!-- Advanced Version Options -->
|
|
1273
|
-
<
|
|
1274
|
-
<
|
|
1275
|
-
<ecc-utils-design-collapsible
|
|
1276
|
-
<
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
<h4 class="text-sm font-medium text-muted-foreground">
|
|
1280
|
-
Advance Version Configuration
|
|
1281
|
-
</h4>
|
|
1282
|
-
<svg
|
|
1283
|
-
class="w-4 h-4 text-muted-foreground/60 transition-transform duration-200 shrink-0"
|
|
1284
|
-
fill="none"
|
|
1285
|
-
stroke="currentColor"
|
|
1286
|
-
viewBox="0 0 24 24"
|
|
1124
|
+
<slot name="version-${index}-advanced-options">
|
|
1125
|
+
<div class="">
|
|
1126
|
+
<ecc-utils-design-collapsible>
|
|
1127
|
+
<ecc-utils-design-collapsible-trigger>
|
|
1128
|
+
<div
|
|
1129
|
+
class="flex items-center justify-between w-full py-2 text-left hover:bg-muted/50 focus:outline-none focus:ring-1 focus:ring-ring rounded cursor-pointer transition-colors px-2"
|
|
1287
1130
|
>
|
|
1288
|
-
<
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1131
|
+
<h4 class="text-sm font-medium text-muted-foreground">
|
|
1132
|
+
Advance Version Configuration
|
|
1133
|
+
</h4>
|
|
1134
|
+
<svg
|
|
1135
|
+
class="w-4 h-4 text-muted-foreground/60 transition-transform duration-200 shrink-0"
|
|
1136
|
+
fill="none"
|
|
1137
|
+
stroke="currentColor"
|
|
1138
|
+
viewBox="0 0 24 24"
|
|
1139
|
+
>
|
|
1140
|
+
<path
|
|
1141
|
+
stroke-linecap="round"
|
|
1142
|
+
stroke-linejoin="round"
|
|
1143
|
+
stroke-width="2"
|
|
1144
|
+
d="M19 9l-7 7-7-7"
|
|
1145
|
+
></path>
|
|
1146
|
+
</svg>
|
|
1147
|
+
</div>
|
|
1148
|
+
</ecc-utils-design-collapsible-trigger>
|
|
1297
1149
|
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1150
|
+
<ecc-utils-design-collapsible-content>
|
|
1151
|
+
<div class="pt-4 space-y-4 border-t border-border/50">
|
|
1152
|
+
<!-- Tags and Custom Version ID in same row -->
|
|
1153
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
1154
|
+
<div class="grid gap-1">
|
|
1155
|
+
<ecc-utils-design-label class="text-sm font-medium h-6">
|
|
1156
|
+
Tags
|
|
1157
|
+
</ecc-utils-design-label>
|
|
1158
|
+
<ecc-utils-design-multi-select
|
|
1159
|
+
.value=${_ECCClientElixirTrsToolCreate.getVersionTags(
|
|
1160
|
+
version
|
|
1161
|
+
)}
|
|
1162
|
+
placeholder="Select tags..."
|
|
1163
|
+
@ecc-input-changed=${(e) => {
|
|
1310
1164
|
this.handleVersionTagsChange(index, e.detail.value);
|
|
1311
1165
|
}}
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1166
|
+
>
|
|
1167
|
+
<ecc-utils-design-multi-select-trigger>
|
|
1168
|
+
</ecc-utils-design-multi-select-trigger>
|
|
1315
1169
|
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1170
|
+
<ecc-utils-design-multi-select-content>
|
|
1171
|
+
<ecc-utils-design-multi-select-item value="prod">
|
|
1172
|
+
Production
|
|
1173
|
+
</ecc-utils-design-multi-select-item>
|
|
1174
|
+
<ecc-utils-design-multi-select-item value="verified">
|
|
1175
|
+
Verified
|
|
1176
|
+
</ecc-utils-design-multi-select-item>
|
|
1177
|
+
<ecc-utils-design-multi-select-item value="signed">
|
|
1178
|
+
Signed
|
|
1179
|
+
</ecc-utils-design-multi-select-item>
|
|
1180
|
+
</ecc-utils-design-multi-select-content>
|
|
1181
|
+
</ecc-utils-design-multi-select>
|
|
1182
|
+
</div>
|
|
1329
1183
|
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1184
|
+
<div class="grid gap-2">
|
|
1185
|
+
<ecc-utils-design-label class="text-sm font-medium h-6">
|
|
1186
|
+
Custom Version ID
|
|
1187
|
+
</ecc-utils-design-label>
|
|
1188
|
+
<ecc-utils-design-input
|
|
1189
|
+
.value=${version.customVersionId}
|
|
1190
|
+
@ecc-input-changed=${(e) => this.handleVersionChange(
|
|
1337
1191
|
index,
|
|
1338
1192
|
"customVersionId",
|
|
1339
1193
|
e.detail.value
|
|
1340
1194
|
)}
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1195
|
+
placeholder="Enter custom version ID (optional)"
|
|
1196
|
+
class="h-10"
|
|
1197
|
+
></ecc-utils-design-input>
|
|
1198
|
+
</div>
|
|
1344
1199
|
</div>
|
|
1345
1200
|
</div>
|
|
1346
|
-
</
|
|
1347
|
-
</ecc-utils-design-collapsible
|
|
1348
|
-
</
|
|
1349
|
-
</
|
|
1201
|
+
</ecc-utils-design-collapsible-content>
|
|
1202
|
+
</ecc-utils-design-collapsible>
|
|
1203
|
+
</div>
|
|
1204
|
+
</slot>
|
|
1350
1205
|
|
|
1351
1206
|
<!-- Files Section -->
|
|
1352
|
-
<
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1207
|
+
<slot
|
|
1208
|
+
name="version-${index}-files-section"
|
|
1209
|
+
version-index=${index}
|
|
1210
|
+
.version=${version}
|
|
1211
|
+
.files=${version.files}
|
|
1212
|
+
.descriptorTypes=${version.descriptorTypes}
|
|
1213
|
+
.activeDescriptorType=${this.activeDescriptorType[index]}
|
|
1214
|
+
.activeFileIndex=${this.activeFileIndex[index]}
|
|
1215
|
+
.onBulkFileUpload=${(e) => this.handleBulkFileUpload(index, e)}
|
|
1216
|
+
.onZipFileUpload=${(e) => this.handleZipFileUpload(index, e)}
|
|
1217
|
+
.onAddFile=${() => this.addFileToVersion(index)}
|
|
1218
|
+
.onRemoveFile=${(fileIndex) => this.removeFileFromVersion(index, fileIndex)}
|
|
1219
|
+
.onDescriptorTypeChange=${(descriptorType) => {
|
|
1220
|
+
this.activeDescriptorType = __spreadProps(__spreadValues({}, this.activeDescriptorType), {
|
|
1221
|
+
[index]: descriptorType
|
|
1222
|
+
});
|
|
1223
|
+
this.requestUpdate();
|
|
1224
|
+
}}
|
|
1225
|
+
.onFileSelect=${(fileIndex) => {
|
|
1226
|
+
this.activeFileIndex = __spreadProps(__spreadValues({}, this.activeFileIndex), {
|
|
1227
|
+
[index]: fileIndex
|
|
1228
|
+
});
|
|
1229
|
+
this.requestUpdate();
|
|
1230
|
+
}}
|
|
1231
|
+
.onFileFieldChange=${(fileIndex, field, value) => this.handleFileFieldChange(index, fileIndex, field, value)}
|
|
1232
|
+
>
|
|
1233
|
+
<div class="space-y-2">
|
|
1234
|
+
<div class="flex justify-between items-center">
|
|
1235
|
+
<h4 class="text-base font-semibold">Files</h4>
|
|
1236
|
+
<div class="flex gap-2">
|
|
1237
|
+
<div class="relative">
|
|
1238
|
+
<input
|
|
1239
|
+
type="file"
|
|
1240
|
+
multiple
|
|
1241
|
+
@change=${(e) => this.handleBulkFileUpload(index, e)}
|
|
1242
|
+
class="absolute inset-0 w-full h-full opacity-0 cursor-pointer"
|
|
1243
|
+
id="bulk-upload-${index}"
|
|
1244
|
+
?disabled=${version.descriptorTypes.length === 0}
|
|
1245
|
+
/>
|
|
1246
|
+
<ecc-utils-design-button
|
|
1247
|
+
variant="outline"
|
|
1248
|
+
size="sm"
|
|
1249
|
+
as="label"
|
|
1250
|
+
for="bulk-upload-${index}"
|
|
1251
|
+
.disabled=${version.descriptorTypes.length === 0}
|
|
1252
|
+
>
|
|
1253
|
+
Upload Files
|
|
1254
|
+
</ecc-utils-design-button>
|
|
1255
|
+
</div>
|
|
1256
|
+
<div class="relative">
|
|
1257
|
+
<input
|
|
1258
|
+
type="file"
|
|
1259
|
+
accept=".zip"
|
|
1260
|
+
@change=${(e) => this.handleZipFileUpload(index, e)}
|
|
1261
|
+
class="absolute inset-0 w-full h-full opacity-0 cursor-pointer"
|
|
1262
|
+
id="zip-upload-${index}"
|
|
1263
|
+
?disabled=${version.descriptorTypes.length === 0}
|
|
1264
|
+
/>
|
|
1265
|
+
<ecc-utils-design-button
|
|
1266
|
+
variant="outline"
|
|
1267
|
+
size="sm"
|
|
1268
|
+
as="label"
|
|
1269
|
+
for="zip-upload-${index}"
|
|
1270
|
+
.disabled=${version.descriptorTypes.length === 0}
|
|
1271
|
+
>
|
|
1272
|
+
Upload ZIP
|
|
1273
|
+
</ecc-utils-design-button>
|
|
1274
|
+
</div>
|
|
1384
1275
|
<ecc-utils-design-button
|
|
1276
|
+
@click=${() => this.addFileToVersion(index)}
|
|
1385
1277
|
variant="outline"
|
|
1386
1278
|
size="sm"
|
|
1387
|
-
as="label"
|
|
1388
|
-
for="zip-upload-${index}"
|
|
1389
1279
|
.disabled=${version.descriptorTypes.length === 0}
|
|
1390
1280
|
>
|
|
1391
|
-
|
|
1281
|
+
Add File Manually
|
|
1392
1282
|
</ecc-utils-design-button>
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
variant="outline"
|
|
1397
|
-
size="sm"
|
|
1398
|
-
.disabled=${version.descriptorTypes.length === 0}
|
|
1399
|
-
>
|
|
1400
|
-
Add File Manually
|
|
1401
|
-
</ecc-utils-design-button>
|
|
1402
|
-
${version.descriptorTypes.length > 0 ? html`
|
|
1403
|
-
<div
|
|
1404
|
-
class="flex items-center gap-2 text-sm text-muted-foreground"
|
|
1405
|
-
>
|
|
1406
|
-
<span
|
|
1407
|
-
class="text-sm text-muted-foreground"
|
|
1408
|
-
style="font-style: italic;"
|
|
1409
|
-
>for:</span
|
|
1283
|
+
${version.descriptorTypes.length > 0 ? html`
|
|
1284
|
+
<div
|
|
1285
|
+
class="flex items-center gap-2 text-sm text-muted-foreground"
|
|
1410
1286
|
>
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1287
|
+
<span
|
|
1288
|
+
class="text-sm text-muted-foreground"
|
|
1289
|
+
style="font-style: italic;"
|
|
1290
|
+
>for:</span
|
|
1291
|
+
>
|
|
1292
|
+
<ecc-utils-design-select
|
|
1293
|
+
.value=${this.activeDescriptorType[index] || version.descriptorTypes[0]}
|
|
1294
|
+
@ecc-input-changed=${(e) => {
|
|
1414
1295
|
this.activeDescriptorType = __spreadProps(__spreadValues({}, this.activeDescriptorType), {
|
|
1415
1296
|
[index]: e.detail.value
|
|
1416
1297
|
});
|
|
@@ -1437,39 +1318,40 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1437
1318
|
}
|
|
1438
1319
|
this.requestUpdate();
|
|
1439
1320
|
}}
|
|
1440
|
-
|
|
1441
|
-
>
|
|
1442
|
-
<ecc-utils-design-select-trigger
|
|
1443
|
-
class="part:text-sm part:h-8 part:w-24"
|
|
1444
|
-
>
|
|
1445
|
-
<ecc-utils-design-select-value></ecc-utils-design-select-value>
|
|
1446
|
-
</ecc-utils-design-select-trigger>
|
|
1447
|
-
<ecc-utils-design-select-content
|
|
1448
|
-
class="part:text-sm part:w-24 part:min-w-24"
|
|
1321
|
+
class="w-24"
|
|
1449
1322
|
>
|
|
1450
|
-
|
|
1323
|
+
<ecc-utils-design-select-trigger
|
|
1324
|
+
class="part:text-sm part:h-8 part:w-24"
|
|
1325
|
+
>
|
|
1326
|
+
<ecc-utils-design-select-value></ecc-utils-design-select-value>
|
|
1327
|
+
</ecc-utils-design-select-trigger>
|
|
1328
|
+
<ecc-utils-design-select-content
|
|
1329
|
+
class="part:text-sm part:w-24 part:min-w-24"
|
|
1330
|
+
>
|
|
1331
|
+
${version.descriptorTypes.map(
|
|
1451
1332
|
(descriptorType) => html`
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1333
|
+
<ecc-utils-design-select-item
|
|
1334
|
+
value=${descriptorType}
|
|
1335
|
+
class="part:text-sm"
|
|
1336
|
+
>
|
|
1337
|
+
${descriptorType}
|
|
1338
|
+
</ecc-utils-design-select-item>
|
|
1339
|
+
`
|
|
1459
1340
|
)}
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1341
|
+
</ecc-utils-design-select-content>
|
|
1342
|
+
</ecc-utils-design-select>
|
|
1343
|
+
</div>
|
|
1344
|
+
` : ``}
|
|
1345
|
+
</div>
|
|
1464
1346
|
</div>
|
|
1465
|
-
</div>
|
|
1466
1347
|
|
|
1467
|
-
|
|
1348
|
+
<!-- Language Filter Section -->
|
|
1468
1349
|
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1350
|
+
${version.files.length === 0 ? html`<p class="text-gray-500 text-sm">
|
|
1351
|
+
${version.descriptorTypes.length > 0 ? "No files added yet. Upload files or add them manually." : "Select a language this version supports to upload and manage files."}
|
|
1352
|
+
</p>` : this.renderFilesLayout(index, version.files)}
|
|
1353
|
+
</div>
|
|
1354
|
+
</slot>
|
|
1473
1355
|
</div>
|
|
1474
1356
|
`;
|
|
1475
1357
|
}
|
|
@@ -1490,62 +1372,79 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1490
1372
|
(file) => file.descriptorType === activeDescriptor
|
|
1491
1373
|
);
|
|
1492
1374
|
return html`
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1375
|
+
<!-- Descriptor-specific files slot -->
|
|
1376
|
+
<slot
|
|
1377
|
+
name="version-${versionIndex}-${activeDescriptor}-files"
|
|
1378
|
+
version-index=${versionIndex}
|
|
1379
|
+
descriptor-type=${activeDescriptor}
|
|
1380
|
+
.filteredFiles=${filteredFiles}
|
|
1381
|
+
.activeFileIndex=${this.activeFileIndex[versionIndex]}
|
|
1382
|
+
.onFileSelect=${(fileIndex) => {
|
|
1383
|
+
this.activeFileIndex = __spreadProps(__spreadValues({}, this.activeFileIndex), {
|
|
1384
|
+
[versionIndex]: fileIndex
|
|
1385
|
+
});
|
|
1386
|
+
this.requestUpdate();
|
|
1387
|
+
}}
|
|
1388
|
+
.onRemoveFile=${(originalIndex) => this.removeFileFromVersion(versionIndex, originalIndex)}
|
|
1389
|
+
.onFileFieldChange=${(fileIndex, field, value) => this.handleFileFieldChange(versionIndex, fileIndex, field, value)}
|
|
1390
|
+
>
|
|
1391
|
+
<div class="grid grid-cols-5 gap-4">
|
|
1392
|
+
<!-- Files List Section - 1/5 of screen -->
|
|
1393
|
+
<div class="col-span-5 md:col-span-1">
|
|
1394
|
+
<div class="space-y-1 max-h-[400px] overflow-y-auto">
|
|
1395
|
+
${filteredFiles.map((file) => {
|
|
1498
1396
|
const originalIndex = files.indexOf(file);
|
|
1499
1397
|
return html`
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1398
|
+
<ecc-utils-design-button
|
|
1399
|
+
variant="ghost"
|
|
1400
|
+
type="button"
|
|
1401
|
+
class="part:h-8 part:w-full part:text-left part:px-3 part:py-1 part:rounded-md part:text-sm part:flex part:items-center part:justify-between ${this.activeFileIndex[versionIndex] === originalIndex ? "part:bg-primary/10" : "part:hover:bg-muted"}"
|
|
1402
|
+
@click=${() => {
|
|
1505
1403
|
this.activeFileIndex = __spreadProps(__spreadValues({}, this.activeFileIndex), {
|
|
1506
1404
|
[versionIndex]: originalIndex
|
|
1507
1405
|
});
|
|
1508
1406
|
this.requestUpdate();
|
|
1509
1407
|
}}
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1408
|
+
>
|
|
1409
|
+
<span class="truncate">
|
|
1410
|
+
${file.path || `File ${originalIndex + 1}`}
|
|
1411
|
+
${file.uiFileType ? html`<span class="text-xs text-muted-foreground ml-1"
|
|
1412
|
+
>(${file.uiFileType})</span
|
|
1413
|
+
>` : ""}
|
|
1414
|
+
</span>
|
|
1415
|
+
<ecc-utils-design-button
|
|
1416
|
+
type="button"
|
|
1417
|
+
variant="ghost"
|
|
1418
|
+
class="part:h-8 part:w-8 part:text-left part:px-3 part:py-1 part:rounded-md part:text-sm part:flex part:items-center part:justify-between"
|
|
1419
|
+
@click=${(e) => {
|
|
1522
1420
|
e.stopPropagation();
|
|
1523
1421
|
this.removeFileFromVersion(versionIndex, originalIndex);
|
|
1524
1422
|
}}
|
|
1525
|
-
|
|
1526
|
-
|
|
1423
|
+
>
|
|
1424
|
+
×
|
|
1425
|
+
</ecc-utils-design-button>
|
|
1527
1426
|
</ecc-utils-design-button>
|
|
1528
|
-
|
|
1529
|
-
`;
|
|
1427
|
+
`;
|
|
1530
1428
|
})}
|
|
1429
|
+
</div>
|
|
1531
1430
|
</div>
|
|
1532
|
-
</div>
|
|
1533
1431
|
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1432
|
+
<!-- Mobile Separator -->
|
|
1433
|
+
<div class="block md:hidden col-span-5">
|
|
1434
|
+
<ecc-utils-design-separator
|
|
1435
|
+
orientation="horizontal"
|
|
1436
|
+
class="part:my-4"
|
|
1437
|
+
></ecc-utils-design-separator>
|
|
1438
|
+
</div>
|
|
1541
1439
|
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1440
|
+
<!-- File Content Section - 4/5 of screen -->
|
|
1441
|
+
<div
|
|
1442
|
+
class="col-span-5 md:col-span-4 md:border-l md:pl-4 md:border-muted w-full"
|
|
1443
|
+
>
|
|
1444
|
+
${this.renderFileContentArea(versionIndex, files)}
|
|
1445
|
+
</div>
|
|
1547
1446
|
</div>
|
|
1548
|
-
</
|
|
1447
|
+
</slot>
|
|
1549
1448
|
`;
|
|
1550
1449
|
}
|
|
1551
1450
|
renderFileContentArea(versionIndex, files) {
|
|
@@ -1560,24 +1459,19 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1560
1459
|
</div>
|
|
1561
1460
|
`;
|
|
1562
1461
|
}
|
|
1563
|
-
const
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
{ value: "TEST_FILE", label: "Test File" },
|
|
1567
|
-
{ value: "CONTAINERFILE", label: "Container File" },
|
|
1568
|
-
{ value: "OTHER", label: "Other" }
|
|
1569
|
-
];
|
|
1462
|
+
const otherFileHasPrimaryDescriptor = files.some(
|
|
1463
|
+
(file, index) => index !== activeIndex && file.uiFileType === "PRIMARY_DESCRIPTOR" && file.descriptorType === activeFile.descriptorType
|
|
1464
|
+
);
|
|
1570
1465
|
const checksumTypes = ["sha256", "sha1", "md5"];
|
|
1571
1466
|
return html`
|
|
1572
1467
|
<div class="space-y-4">
|
|
1573
|
-
|
|
1574
1468
|
<!-- File Configuration -->
|
|
1575
1469
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-4">
|
|
1576
1470
|
<div>
|
|
1577
1471
|
<ecc-utils-design-label>File Path</ecc-utils-design-label>
|
|
1578
1472
|
<ecc-utils-design-input
|
|
1579
1473
|
.value=${activeFile.path}
|
|
1580
|
-
@ecc-
|
|
1474
|
+
@ecc-input-changed=${(e) => {
|
|
1581
1475
|
this.handleFileFieldChange(
|
|
1582
1476
|
versionIndex,
|
|
1583
1477
|
activeIndex,
|
|
@@ -1592,27 +1486,87 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1592
1486
|
<div>
|
|
1593
1487
|
<ecc-utils-design-label>File Type</ecc-utils-design-label>
|
|
1594
1488
|
<ecc-utils-design-select
|
|
1595
|
-
.value=${activeFile.
|
|
1596
|
-
@ecc-
|
|
1489
|
+
.value=${activeFile.uiFileType}
|
|
1490
|
+
@ecc-input-changed=${(e) => {
|
|
1491
|
+
const newUIFileType = e.detail.value;
|
|
1492
|
+
const newFileType = _ECCClientElixirTrsToolCreate.convertUIFileTypeToFileType(
|
|
1493
|
+
newUIFileType
|
|
1494
|
+
);
|
|
1495
|
+
const newContainerImageType = _ECCClientElixirTrsToolCreate.convertUIFileTypeToImageType(
|
|
1496
|
+
newUIFileType
|
|
1497
|
+
);
|
|
1498
|
+
this.handleFileFieldChange(
|
|
1499
|
+
versionIndex,
|
|
1500
|
+
activeIndex,
|
|
1501
|
+
"uiFileType",
|
|
1502
|
+
newUIFileType
|
|
1503
|
+
);
|
|
1597
1504
|
this.handleFileFieldChange(
|
|
1598
1505
|
versionIndex,
|
|
1599
1506
|
activeIndex,
|
|
1600
1507
|
"fileType",
|
|
1601
|
-
|
|
1508
|
+
newFileType
|
|
1602
1509
|
);
|
|
1510
|
+
if (newContainerImageType) {
|
|
1511
|
+
this.handleFileFieldChange(
|
|
1512
|
+
versionIndex,
|
|
1513
|
+
activeIndex,
|
|
1514
|
+
"containerImageType",
|
|
1515
|
+
newContainerImageType
|
|
1516
|
+
);
|
|
1517
|
+
} else {
|
|
1518
|
+
this.handleFileFieldChange(
|
|
1519
|
+
versionIndex,
|
|
1520
|
+
activeIndex,
|
|
1521
|
+
"containerImageType",
|
|
1522
|
+
void 0
|
|
1523
|
+
);
|
|
1524
|
+
}
|
|
1603
1525
|
}}
|
|
1604
1526
|
>
|
|
1605
1527
|
<ecc-utils-design-select-trigger>
|
|
1606
1528
|
<ecc-utils-design-select-value></ecc-utils-design-select-value>
|
|
1607
1529
|
</ecc-utils-design-select-trigger>
|
|
1608
1530
|
<ecc-utils-design-select-content>
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1531
|
+
<!-- Source Files Group -->
|
|
1532
|
+
<ecc-utils-design-select-group>
|
|
1533
|
+
<ecc-utils-design-select-label
|
|
1534
|
+
>Source file</ecc-utils-design-select-label
|
|
1535
|
+
>
|
|
1536
|
+
<ecc-utils-design-select-item
|
|
1537
|
+
value="PRIMARY_DESCRIPTOR"
|
|
1538
|
+
.disabled=${otherFileHasPrimaryDescriptor && activeFile.uiFileType !== "PRIMARY_DESCRIPTOR"}
|
|
1539
|
+
>
|
|
1540
|
+
Primary Descriptor
|
|
1541
|
+
</ecc-utils-design-select-item>
|
|
1542
|
+
<ecc-utils-design-select-item value="SECONDARY_DESCRIPTOR">
|
|
1543
|
+
Secondary Descriptor
|
|
1544
|
+
</ecc-utils-design-select-item>
|
|
1545
|
+
<ecc-utils-design-select-item value="TEST_FILE">
|
|
1546
|
+
Test File
|
|
1547
|
+
</ecc-utils-design-select-item>
|
|
1548
|
+
<ecc-utils-design-select-item value="OTHER">
|
|
1549
|
+
Other
|
|
1550
|
+
</ecc-utils-design-select-item>
|
|
1551
|
+
</ecc-utils-design-select-group>
|
|
1552
|
+
|
|
1553
|
+
<ecc-utils-design-select-separator></ecc-utils-design-select-separator>
|
|
1554
|
+
|
|
1555
|
+
<!-- Image Files Group -->
|
|
1556
|
+
<ecc-utils-design-select-group>
|
|
1557
|
+
<ecc-utils-design-select-label
|
|
1558
|
+
>Image file</ecc-utils-design-select-label
|
|
1559
|
+
>
|
|
1560
|
+
<ecc-utils-design-select-item value="Docker">
|
|
1561
|
+
Docker
|
|
1562
|
+
</ecc-utils-design-select-item>
|
|
1563
|
+
<ecc-utils-design-select-item value="Singularity">
|
|
1564
|
+
Singularity
|
|
1565
|
+
</ecc-utils-design-select-item>
|
|
1566
|
+
<ecc-utils-design-select-item value="Conda">
|
|
1567
|
+
Conda
|
|
1568
|
+
</ecc-utils-design-select-item>
|
|
1569
|
+
</ecc-utils-design-select-group>
|
|
1616
1570
|
</ecc-utils-design-select-content>
|
|
1617
1571
|
</ecc-utils-design-select>
|
|
1618
1572
|
</div>
|
|
@@ -1621,7 +1575,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1621
1575
|
<ecc-utils-design-label>Checksum Type</ecc-utils-design-label>
|
|
1622
1576
|
<ecc-utils-design-select
|
|
1623
1577
|
.value=${activeFile.checksumType}
|
|
1624
|
-
@ecc-
|
|
1578
|
+
@ecc-input-changed=${(e) => {
|
|
1625
1579
|
this.handleFileFieldChange(
|
|
1626
1580
|
versionIndex,
|
|
1627
1581
|
activeIndex,
|
|
@@ -1651,7 +1605,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1651
1605
|
>
|
|
1652
1606
|
<ecc-utils-design-input
|
|
1653
1607
|
.value=${activeFile.checksumValue}
|
|
1654
|
-
@ecc-
|
|
1608
|
+
@ecc-input-changed=${(e) => {
|
|
1655
1609
|
this.handleFileFieldChange(
|
|
1656
1610
|
versionIndex,
|
|
1657
1611
|
activeIndex,
|
|
@@ -1671,8 +1625,10 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1671
1625
|
${activeFile.content !== void 0 ? html`
|
|
1672
1626
|
<ecc-utils-design-code
|
|
1673
1627
|
value=${activeFile.content}
|
|
1674
|
-
extension=${
|
|
1675
|
-
|
|
1628
|
+
extension=${_ECCClientElixirTrsToolCreate.getFileExtension(
|
|
1629
|
+
activeFile.path
|
|
1630
|
+
)}
|
|
1631
|
+
@ecc-input-changed=${(e) => {
|
|
1676
1632
|
this.handleFileFieldChange(
|
|
1677
1633
|
versionIndex,
|
|
1678
1634
|
activeIndex,
|
|
@@ -1694,17 +1650,11 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1694
1650
|
</div>
|
|
1695
1651
|
`;
|
|
1696
1652
|
}
|
|
1697
|
-
|
|
1698
|
-
return html``;
|
|
1699
|
-
}
|
|
1700
|
-
getVersionTags(version) {
|
|
1653
|
+
static getVersionTags(version) {
|
|
1701
1654
|
const tags = [];
|
|
1702
|
-
if (version.isProduction)
|
|
1703
|
-
|
|
1704
|
-
if (version.
|
|
1705
|
-
tags.push("verified");
|
|
1706
|
-
if (version.signed)
|
|
1707
|
-
tags.push("signed");
|
|
1655
|
+
if (version.isProduction) tags.push("prod");
|
|
1656
|
+
if (version.verified) tags.push("verified");
|
|
1657
|
+
if (version.signed) tags.push("signed");
|
|
1708
1658
|
return tags;
|
|
1709
1659
|
}
|
|
1710
1660
|
handleVersionTagsChange(index, tags) {
|
|
@@ -1716,6 +1666,24 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1716
1666
|
});
|
|
1717
1667
|
this.versions = updatedVersions;
|
|
1718
1668
|
}
|
|
1669
|
+
static getUIFileType(filename, fileType) {
|
|
1670
|
+
if (fileType === "CONTAINERFILE") {
|
|
1671
|
+
return _ECCClientElixirTrsToolCreate.getContainerImageType(filename);
|
|
1672
|
+
}
|
|
1673
|
+
return fileType;
|
|
1674
|
+
}
|
|
1675
|
+
static convertUIFileTypeToFileType(uiFileType) {
|
|
1676
|
+
if (uiFileType === "Docker" || uiFileType === "Singularity" || uiFileType === "Conda") {
|
|
1677
|
+
return "CONTAINERFILE";
|
|
1678
|
+
}
|
|
1679
|
+
return uiFileType;
|
|
1680
|
+
}
|
|
1681
|
+
static convertUIFileTypeToImageType(uiFileType) {
|
|
1682
|
+
if (uiFileType === "Docker" || uiFileType === "Singularity" || uiFileType === "Conda") {
|
|
1683
|
+
return uiFileType;
|
|
1684
|
+
}
|
|
1685
|
+
return void 0;
|
|
1686
|
+
}
|
|
1719
1687
|
render() {
|
|
1720
1688
|
return html`
|
|
1721
1689
|
<div class="">
|
|
@@ -1726,8 +1694,7 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1726
1694
|
}}
|
|
1727
1695
|
>
|
|
1728
1696
|
<div class="space-y-4">
|
|
1729
|
-
${this.renderBasicFields()}
|
|
1730
|
-
${this.renderVersions()}
|
|
1697
|
+
${this.renderBasicFields()} ${this.renderVersions()}
|
|
1731
1698
|
</div>
|
|
1732
1699
|
|
|
1733
1700
|
<div class="flex justify-between items-center mt-4">
|
|
@@ -1753,8 +1720,27 @@ var ECCClientElixirTrsToolCreate = class extends LitElement {
|
|
|
1753
1720
|
</div>
|
|
1754
1721
|
`;
|
|
1755
1722
|
}
|
|
1723
|
+
renderDescriptorTypeOptions() {
|
|
1724
|
+
const allDescriptorTypes = [
|
|
1725
|
+
{ value: "CWL", label: "CWL (Common Workflow Language)" },
|
|
1726
|
+
{ value: "WDL", label: "WDL (Workflow Description Language)" },
|
|
1727
|
+
{ value: "NFL", label: "Nextflow" },
|
|
1728
|
+
{ value: "GALAXY", label: "Galaxy" },
|
|
1729
|
+
{ value: "SMK", label: "Snakemake" }
|
|
1730
|
+
];
|
|
1731
|
+
const availableTypes = this.supportedDescriptorTypes.length > 0 ? allDescriptorTypes.filter(
|
|
1732
|
+
(type) => this.supportedDescriptorTypes.includes(type.value)
|
|
1733
|
+
) : allDescriptorTypes;
|
|
1734
|
+
return availableTypes.map(
|
|
1735
|
+
(type) => html`
|
|
1736
|
+
<ecc-utils-design-multi-select-item value=${type.value}>
|
|
1737
|
+
${type.label}
|
|
1738
|
+
</ecc-utils-design-multi-select-item>
|
|
1739
|
+
`
|
|
1740
|
+
);
|
|
1741
|
+
}
|
|
1756
1742
|
};
|
|
1757
|
-
|
|
1743
|
+
_ECCClientElixirTrsToolCreate.styles = [
|
|
1758
1744
|
ComponentStyles,
|
|
1759
1745
|
GlobalStyles,
|
|
1760
1746
|
css`
|
|
@@ -1775,34 +1761,83 @@ ECCClientElixirTrsToolCreate.styles = [
|
|
|
1775
1761
|
];
|
|
1776
1762
|
__decorateClass([
|
|
1777
1763
|
property({ type: String, reflect: true })
|
|
1778
|
-
],
|
|
1764
|
+
], _ECCClientElixirTrsToolCreate.prototype, "baseUrl", 2);
|
|
1779
1765
|
__decorateClass([
|
|
1780
1766
|
property({ attribute: false, reflect: true })
|
|
1781
|
-
],
|
|
1767
|
+
], _ECCClientElixirTrsToolCreate.prototype, "provider", 2);
|
|
1768
|
+
__decorateClass([
|
|
1769
|
+
property({ type: String, attribute: "default-name" })
|
|
1770
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultName", 2);
|
|
1771
|
+
__decorateClass([
|
|
1772
|
+
property({ type: String, attribute: "default-organization" })
|
|
1773
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultOrganization", 2);
|
|
1774
|
+
__decorateClass([
|
|
1775
|
+
property({ type: String, attribute: "default-description" })
|
|
1776
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultDescription", 2);
|
|
1777
|
+
__decorateClass([
|
|
1778
|
+
property({ type: String, attribute: "default-tool-class-id" })
|
|
1779
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultToolClassId", 2);
|
|
1780
|
+
__decorateClass([
|
|
1781
|
+
property({ type: String, attribute: "default-aliases" })
|
|
1782
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultAliases", 2);
|
|
1783
|
+
__decorateClass([
|
|
1784
|
+
property({ type: String, attribute: "default-checker-url" })
|
|
1785
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultCheckerUrl", 2);
|
|
1786
|
+
__decorateClass([
|
|
1787
|
+
property({ type: String, attribute: "default-custom-tool-id" })
|
|
1788
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultCustomToolId", 2);
|
|
1789
|
+
__decorateClass([
|
|
1790
|
+
property({ type: String, attribute: "default-version-name" })
|
|
1791
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultVersionName", 2);
|
|
1792
|
+
__decorateClass([
|
|
1793
|
+
property({ type: String, attribute: "default-version-author" })
|
|
1794
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultVersionAuthor", 2);
|
|
1795
|
+
__decorateClass([
|
|
1796
|
+
property({ type: Boolean, attribute: "default-is-production" })
|
|
1797
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultIsProduction", 2);
|
|
1798
|
+
__decorateClass([
|
|
1799
|
+
property({ type: Boolean, attribute: "default-signed" })
|
|
1800
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultSigned", 2);
|
|
1801
|
+
__decorateClass([
|
|
1802
|
+
property({ type: Boolean, attribute: "default-verified" })
|
|
1803
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultVerified", 2);
|
|
1804
|
+
__decorateClass([
|
|
1805
|
+
property({ type: String, attribute: "default-verified-source" })
|
|
1806
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultVerifiedSource", 2);
|
|
1807
|
+
__decorateClass([
|
|
1808
|
+
property({ type: String, attribute: "default-included-apps" })
|
|
1809
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultIncludedApps", 2);
|
|
1810
|
+
__decorateClass([
|
|
1811
|
+
property({ type: String, attribute: "default-custom-version-id" })
|
|
1812
|
+
], _ECCClientElixirTrsToolCreate.prototype, "defaultCustomVersionId", 2);
|
|
1813
|
+
__decorateClass([
|
|
1814
|
+
property({ type: Array, reflect: true })
|
|
1815
|
+
], _ECCClientElixirTrsToolCreate.prototype, "supportedDescriptorTypes", 2);
|
|
1782
1816
|
__decorateClass([
|
|
1783
1817
|
state()
|
|
1784
|
-
],
|
|
1818
|
+
], _ECCClientElixirTrsToolCreate.prototype, "toolClasses", 2);
|
|
1785
1819
|
__decorateClass([
|
|
1786
1820
|
state()
|
|
1787
|
-
],
|
|
1821
|
+
], _ECCClientElixirTrsToolCreate.prototype, "loading", 2);
|
|
1788
1822
|
__decorateClass([
|
|
1789
1823
|
state()
|
|
1790
|
-
],
|
|
1824
|
+
], _ECCClientElixirTrsToolCreate.prototype, "error", 2);
|
|
1791
1825
|
__decorateClass([
|
|
1792
1826
|
state()
|
|
1793
|
-
],
|
|
1827
|
+
], _ECCClientElixirTrsToolCreate.prototype, "success", 2);
|
|
1794
1828
|
__decorateClass([
|
|
1795
1829
|
state()
|
|
1796
|
-
],
|
|
1830
|
+
], _ECCClientElixirTrsToolCreate.prototype, "formData", 2);
|
|
1797
1831
|
__decorateClass([
|
|
1798
1832
|
state()
|
|
1799
|
-
],
|
|
1833
|
+
], _ECCClientElixirTrsToolCreate.prototype, "versions", 2);
|
|
1800
1834
|
__decorateClass([
|
|
1801
1835
|
state()
|
|
1802
|
-
],
|
|
1836
|
+
], _ECCClientElixirTrsToolCreate.prototype, "activeFileIndex", 2);
|
|
1803
1837
|
__decorateClass([
|
|
1804
1838
|
state()
|
|
1805
|
-
],
|
|
1839
|
+
], _ECCClientElixirTrsToolCreate.prototype, "activeDescriptorType", 2);
|
|
1840
|
+
var ECCClientElixirTrsToolCreate = _ECCClientElixirTrsToolCreate;
|
|
1806
1841
|
var tool_create_default = ECCClientElixirTrsToolCreate;
|
|
1807
1842
|
|
|
1808
1843
|
export { ECCClientElixirTrsToolCreate, tool_create_default };
|