@privateaim/client-vue 0.8.7 → 0.8.9

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.
Files changed (52) hide show
  1. package/dist/components/analysis/FAnalysisBasicForm.vue.d.ts +3 -3
  2. package/dist/components/analysis/FAnalysisBasicForm.vue.d.ts.map +1 -1
  3. package/dist/components/analysis/FAnalysisImageCommandArguments.vue.d.ts +15 -15
  4. package/dist/components/analysis/FAnalysisImageCommandArguments.vue.d.ts.map +1 -1
  5. package/dist/components/analysis/FAnalysisItem.d.ts +0 -17
  6. package/dist/components/analysis/FAnalysisItem.d.ts.map +1 -1
  7. package/dist/components/analysis/FAnalysisItemCard.vue.d.ts +6 -23
  8. package/dist/components/analysis/FAnalysisItemCard.vue.d.ts.map +1 -1
  9. package/dist/components/analysis/wizard/FAnalysisWizard.vue.d.ts +2183 -17
  10. package/dist/components/analysis/wizard/FAnalysisWizard.vue.d.ts.map +1 -1
  11. package/dist/components/analysis/wizard/FAnalysisWizardLockModal.vue.d.ts +1084 -1
  12. package/dist/components/analysis/wizard/FAnalysisWizardLockModal.vue.d.ts.map +1 -1
  13. package/dist/components/analysis/wizard/FAnalysisWizardStepFiles.vue.d.ts +1084 -1
  14. package/dist/components/analysis/wizard/FAnalysisWizardStepFiles.vue.d.ts.map +1 -1
  15. package/dist/components/analysis/wizard/FAnalysisWizardStepImage.vue.d.ts +15 -15
  16. package/dist/components/analysis/wizard/FAnalysisWizardStepImage.vue.d.ts.map +1 -1
  17. package/dist/components/analysis/wizard/FAnalysisWizardStepNodes.vue.d.ts +1084 -1
  18. package/dist/components/analysis/wizard/FAnalysisWizardStepNodes.vue.d.ts.map +1 -1
  19. package/dist/components/analysis-bucket-file/FAnalysisBucketFileManager.vue.d.ts +1084 -1
  20. package/dist/components/analysis-bucket-file/FAnalysisBucketFileManager.vue.d.ts.map +1 -1
  21. package/dist/components/analysis-node/FAnalysisNodeInCard.vue.d.ts.map +1 -1
  22. package/dist/components/analysis-node/FAnalysisNodeManager.vue.d.ts +1084 -1
  23. package/dist/components/analysis-node/FAnalysisNodeManager.vue.d.ts.map +1 -1
  24. package/dist/components/analysis-node/FAnalysisNodes.d.ts.map +1 -1
  25. package/dist/components/analysis-node/FAnalysisNodesProgress.vue.d.ts +0 -17
  26. package/dist/components/analysis-node/FAnalysisNodesProgress.vue.d.ts.map +1 -1
  27. package/dist/components/login/FLoginForm.vue.d.ts +3 -3
  28. package/dist/components/login/FLoginForm.vue.d.ts.map +1 -1
  29. package/dist/components/project/FProjectCreator.vue.d.ts +10 -10
  30. package/dist/components/project/FProjectCreator.vue.d.ts.map +1 -1
  31. package/dist/components/project/FProjectItemCard.vue.d.ts +16 -16
  32. package/dist/components/project/FProjectItemCard.vue.d.ts.map +1 -1
  33. package/dist/components/project-node/FProjectNodeInCard.vue.d.ts +1084 -1
  34. package/dist/components/project-node/FProjectNodeInCard.vue.d.ts.map +1 -1
  35. package/dist/components/project-node/FProjectNodes.d.ts.map +1 -1
  36. package/dist/components/utility/form-input-list/FFormInputList.vue.d.ts +3 -3
  37. package/dist/components/utility/form-input-list/FFormInputList.vue.d.ts.map +1 -1
  38. package/dist/components/utility/form-input-list/FFormInputListItem.vue.d.ts +3 -3
  39. package/dist/components/utility/form-input-list/FFormInputListItem.vue.d.ts.map +1 -1
  40. package/dist/core/entity-socket/module.d.ts.map +1 -1
  41. package/dist/core/entity-socket/type.d.ts +6 -5
  42. package/dist/core/entity-socket/type.d.ts.map +1 -1
  43. package/dist/core/http-client/setup.d.ts.map +1 -1
  44. package/dist/core/list/utils/handlers.d.ts.map +1 -1
  45. package/dist/index.cjs +226 -234
  46. package/dist/index.cjs.map +1 -1
  47. package/dist/index.css +49 -0
  48. package/dist/index.mjs +229 -237
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/type.d.ts +1 -0
  51. package/dist/type.d.ts.map +1 -1
  52. package/package.json +28 -28
package/dist/index.mjs CHANGED
@@ -1,18 +1,17 @@
1
1
  import { hasOwnProperty as hasOwnProperty$1, isObject as isObject$5, merge, createMerger } from 'smob';
2
- import { hasInjectionContext, inject as inject$1, provide as provide$1, defineComponent, toRef, reactive, watch, ref, resolveComponent, createElementBlock, openBlock, withModifiers, createVNode, withCtx, createTextVNode, h, resolveDynamicComponent, computed, isRef, onMounted, onUnmounted, unref, nextTick, getCurrentInstance, mergeProps, createBlock, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, toDisplayString, normalizeClass, readonly, toValue, getCurrentScope, onScopeDispose, shallowRef, toRaw, withDirectives, vShow, vModelCheckbox, normalizeStyle, toRefs } from 'vue';
3
- import { injectStore, injectStoreFactory, storeToRefs, injectHTTPClient, injectStoreDispatcher, StoreDispatcherEventName, inject as inject$2, provide as provide$2, useTranslation, TranslatorTranslationDefaultKey, TranslatorTranslationGroup, usePermissionCheck, ATitle, ASearch, APagination, createFormSubmitTranslations, buildFormSubmitWithTranslations, ARobot, AUser, ARealms, ARobotForm } from '@authup/client-web-kit';
2
+ import { hasInjectionContext, inject as inject$1, provide as provide$1, defineComponent, toRef, reactive, watch, ref, resolveComponent, createElementBlock, openBlock, withModifiers, createVNode, withCtx, createTextVNode, h, resolveDynamicComponent, computed, isRef, onMounted, onUnmounted, unref, nextTick, getCurrentInstance, mergeProps, createBlock, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, toDisplayString, normalizeClass, shallowRef, shallowReadonly, toValue, getCurrentScope, onScopeDispose, toRaw, withDirectives, vShow, vModelCheckbox, normalizeStyle, toRefs } from 'vue';
3
+ import { injectStore, injectHTTPClientAuthenticationHook, inject as inject$2, provide as provide$2, storeToRefs, injectStoreDispatcher, StoreDispatcherEventName, useTranslation, TranslatorTranslationDefaultKey, TranslatorTranslationGroup, usePermissionCheck, ATitle, ASearch, APagination, createFormSubmitTranslations, buildFormSubmitWithTranslations, ARobot, AUser, ARealms, ARobotForm } from '@authup/client-web-kit';
4
4
  import { IVuelidate, install as install$1, useTranslationsForNestedValidations, getSeverity } from '@ilingo/vuelidate';
5
5
  import useVuelidate from '@vuelidate/core';
6
6
  import { maxLength, minLength, required, helpers } from '@vuelidate/validators';
7
7
  import { VCFormSubmit, VCFormInput, buildFormGroup, buildFormSelect, VCFormGroup, buildFormTextarea, buildFormInput, buildFormInputCheckbox } from '@vuecs/form-controls';
8
- import { ServiceID, buildDomainNamespaceName, buildDomainEventSubscriptionFullName, DomainEventSubscriptionName, buildDomainEventFullName, buildDomainChannelName, DomainType, MasterImageCommand, ProjectNodeApprovalCommand, ProjectNodeApprovalStatus, DomainSubType, RegistryAPICommand, registryRobotSecretRegex, RegistryProjectType, NodeType, AnalysisBucketType, AnalysisAPICommand, AnalysisConfigurationStatus, isAnalysisAPICommandExecutable, AnalysisBuildStatus, AnalysisResultStatus, AnalysisRunStatus, AnalysisNodeRunStatus, AnalysisNodeApprovalCommand, AnalysisNodeApprovalStatus } from '@privateaim/core-kit';
8
+ import { ServiceID, buildDomainNamespaceName, DomainEventSubscriptionName, buildDomainChannelName, DomainType, MasterImageCommand, ProjectNodeApprovalCommand, ProjectNodeApprovalStatus, DomainSubType, RegistryAPICommand, registryRobotSecretRegex, RegistryProjectType, NodeType, AnalysisBucketType, AnalysisAPICommand, AnalysisConfigurationStatus, isAnalysisAPICommandExecutable, AnalysisBuildStatus, AnalysisResultStatus, AnalysisRunStatus, AnalysisNodeRunStatus, AnalysisNodeApprovalCommand, AnalysisNodeApprovalStatus } from '@privateaim/core-kit';
9
+ import { REALM_MASTER_NAME, EntityDefaultEventName } from '@authup/core-kit';
9
10
  import crypto$1 from 'crypto';
10
11
  import { buildList, SlotName } from '@vuecs/list-controls';
11
12
  import { buildQuery, SortDirection } from 'rapiq';
12
13
  import '@authup/kit';
13
- import { ClientResponseErrorTokenHook } from '@authup/core-http-kit';
14
14
  import { APIClient } from '@privateaim/storage-kit';
15
- import { REALM_MASTER_NAME, DomainEventName } from '@authup/core-kit';
16
15
  import { ClientManager } from '@authup/core-realtime-kit';
17
16
  import { VCTimeago } from '@vuecs/timeago';
18
17
  import { VCLink } from '@vuecs/link';
@@ -804,9 +803,6 @@ class CryptoAsymmetricAlgorithm {
804
803
  function hasOwnProperty(obj, prop) {
805
804
  return Object.prototype.hasOwnProperty.call(obj, prop);
806
805
  }
807
- function isObject$3(item) {
808
- return !!item && typeof item === 'object' && !Array.isArray(item);
809
- }
810
806
  /*
811
807
  * Copyright (c) 2021-2024.
812
808
  * Author Peter Placzek (tada5hi)
@@ -825,6 +821,14 @@ function hexToUTF8(value) {
825
821
  throw e;
826
822
  }
827
823
  }
824
+ /*
825
+ * Copyright (c) 2025.
826
+ * Author Peter Placzek (tada5hi)
827
+ * For the full copyright and license information,
828
+ * view the LICENSE file that was distributed with this source code.
829
+ */ function isObject$3(item) {
830
+ return !!item && typeof item === 'object' && !Array.isArray(item);
831
+ }
828
832
  function createNanoID(alphabetOrLen, len) {
829
833
  return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', 21)();
830
834
  }
@@ -834,6 +838,15 @@ function createNanoID(alphabetOrLen, len) {
834
838
  * For the full copyright and license information,
835
839
  * view the LICENSE file that was distributed with this source code.
836
840
  */ const alphaNumHyphenUnderscoreRegex = /^[a-z0-9-_]*$/;
841
+ /*
842
+ * Copyright (c) 2025.
843
+ * Author Peter Placzek (tada5hi)
844
+ * For the full copyright and license information,
845
+ * view the LICENSE file that was distributed with this source code.
846
+ */ function buildDomainEventFullName(type, event) {
847
+ const eventCapitalized = event.substring(0, 1).toUpperCase() + event.substring(1);
848
+ return type + eventCapitalized;
849
+ }
837
850
 
838
851
  /**
839
852
  * Returns true if either scoped or unscoped named slot exists
@@ -1145,7 +1158,7 @@ function decodeQueryValue(text) {
1145
1158
  return decode(text.replace(PLUS_RE, " "));
1146
1159
  }
1147
1160
  function parseQuery(parametersString = "") {
1148
- const object = {};
1161
+ const object = /* @__PURE__ */ Object.create(null);
1149
1162
  if (parametersString[0] === "?") {
1150
1163
  parametersString = parametersString.slice(1);
1151
1164
  }
@@ -3530,43 +3543,8 @@ class Client extends Client$1 {
3530
3543
  }
3531
3544
 
3532
3545
  function setupBaseHTTPClient(app, client) {
3533
- const storeCreator = injectStoreFactory(app);
3534
- const store = storeCreator();
3535
- const { refreshToken } = storeToRefs(store);
3536
- const authupClient = injectHTTPClient(app);
3537
- const tokenHook = new ClientResponseErrorTokenHook(client, {
3538
- baseURL: authupClient.getBaseURL(),
3539
- tokenCreator: ()=>{
3540
- if (!refreshToken.value) {
3541
- throw new Error('No refresh token available.');
3542
- }
3543
- return authupClient.token.createWithRefreshToken({
3544
- refresh_token: refreshToken.value
3545
- });
3546
- },
3547
- tokenCreated: (response)=>{
3548
- store.applyTokenGrantResponse(response);
3549
- },
3550
- tokenFailed: ()=>{
3551
- store.logout();
3552
- },
3553
- timer: false
3554
- });
3555
- const handleAccessTokenEvent = (token)=>{
3556
- if (token) {
3557
- client.setAuthorizationHeader({
3558
- type: 'Bearer',
3559
- token
3560
- });
3561
- tokenHook.mount();
3562
- } else {
3563
- client.unsetAuthorizationHeader();
3564
- tokenHook.unmount();
3565
- }
3566
- };
3567
- const dispatcher = injectStoreDispatcher(app);
3568
- dispatcher.on(StoreDispatcherEventName.ACCESS_TOKEN_UPDATED, (token)=>handleAccessTokenEvent(token));
3569
- handleAccessTokenEvent(store.accessToken);
3546
+ const hook = injectHTTPClientAuthenticationHook(app);
3547
+ hook.attach(client);
3570
3548
  }
3571
3549
 
3572
3550
  const symbol$1 = Symbol.for('FCoreHTTPClient');
@@ -3657,8 +3635,8 @@ function installSocketManager(app, options) {
3657
3635
  function createEntitySocket(ctx) {
3658
3636
  if (!isSocketManagerUsable()) {
3659
3637
  return {
3660
- mount () {},
3661
- unmount () {}
3638
+ subscribe () {},
3639
+ unsubscribe () {}
3662
3640
  };
3663
3641
  }
3664
3642
  const socketManager = injectSocketManager();
@@ -3715,65 +3693,88 @@ function createEntitySocket(ctx) {
3715
3693
  ctx.onDeleted(event.data);
3716
3694
  }
3717
3695
  };
3718
- let mounted = false;
3719
- const mount = async ()=>{
3720
- if (ctx.target && !targetId.value || mounted) {
3696
+ let emitEventRetryCount = 0;
3697
+ const emitEvent = async (socket, event)=>{
3698
+ try {
3699
+ await socket.emitWithAck(event, targetId.value, (err)=>{
3700
+ console.log(err);
3701
+ // todo: handle error!
3702
+ });
3703
+ } catch (e) {
3704
+ if (emitEventRetryCount > 3) {
3705
+ throw e;
3706
+ }
3707
+ emitEventRetryCount += 1;
3708
+ await new Promise((resolve)=>{
3709
+ setTimeout(resolve, 0);
3710
+ });
3711
+ await emitEvent(socket, event);
3712
+ }
3713
+ };
3714
+ let isActive = false;
3715
+ const subscribe = async ()=>{
3716
+ if (ctx.target && !targetId.value || isActive) {
3721
3717
  return;
3722
3718
  }
3723
- mounted = true;
3719
+ isActive = true;
3724
3720
  const socket = await socketManager.connect(buildDomainNamespaceName(realmId.value));
3725
3721
  let event;
3726
3722
  if (ctx.buildSubscribeEventName) {
3727
3723
  event = ctx.buildSubscribeEventName();
3728
3724
  } else {
3729
- event = buildDomainEventSubscriptionFullName(ctx.type, DomainEventSubscriptionName.SUBSCRIBE);
3725
+ event = buildDomainEventFullName(ctx.type, DomainEventSubscriptionName.SUBSCRIBE);
3730
3726
  }
3731
- socket.emit(event, targetId.value, ()=>{
3732
- // todo: handle error!
3733
- });
3734
3727
  if (ctx.onCreated) {
3735
- socket.on(buildDomainEventFullName(ctx.type, DomainEventName.CREATED), handleCreated);
3728
+ socket.on(buildDomainEventFullName(ctx.type, EntityDefaultEventName.CREATED), handleCreated);
3736
3729
  }
3737
3730
  if (ctx.onUpdated) {
3738
- socket.on(buildDomainEventFullName(ctx.type, DomainEventName.UPDATED), handleUpdated);
3731
+ socket.on(buildDomainEventFullName(ctx.type, EntityDefaultEventName.UPDATED), handleUpdated);
3739
3732
  }
3740
3733
  if (ctx.onDeleted) {
3741
- socket.on(buildDomainEventFullName(ctx.type, DomainEventName.DELETED), handleDeleted);
3734
+ socket.on(buildDomainEventFullName(ctx.type, EntityDefaultEventName.DELETED), handleDeleted);
3742
3735
  }
3736
+ await emitEvent(socket, event);
3743
3737
  };
3744
- const unmount = async ()=>{
3745
- if (ctx.target && !targetId.value || !mounted) {
3738
+ const unsubscribe = async ()=>{
3739
+ if (ctx.target && !targetId.value || !isActive) {
3746
3740
  return;
3747
3741
  }
3748
- mounted = false;
3742
+ isActive = false;
3749
3743
  const socket = await socketManager.connect(buildDomainNamespaceName(realmId.value));
3750
3744
  let event;
3751
3745
  if (ctx.buildUnsubscribeEventName) {
3752
3746
  event = ctx.buildUnsubscribeEventName();
3753
3747
  } else {
3754
- event = buildDomainEventSubscriptionFullName(ctx.type, DomainEventSubscriptionName.SUBSCRIBE);
3748
+ event = buildDomainEventFullName(ctx.type, DomainEventSubscriptionName.UNSUBSCRIBE);
3755
3749
  }
3756
- socket.emit(event, targetId.value);
3757
3750
  if (ctx.onCreated) {
3758
- socket.off(buildDomainEventFullName(ctx.type, DomainEventName.UPDATED), handleCreated);
3751
+ socket.off(buildDomainEventFullName(ctx.type, EntityDefaultEventName.UPDATED), handleCreated);
3759
3752
  }
3760
3753
  if (ctx.onUpdated) {
3761
- socket.off(buildDomainEventFullName(ctx.type, DomainEventName.UPDATED), handleUpdated);
3754
+ socket.off(buildDomainEventFullName(ctx.type, EntityDefaultEventName.UPDATED), handleUpdated);
3762
3755
  }
3763
3756
  if (ctx.onDeleted) {
3764
- socket.off(buildDomainEventFullName(ctx.type, DomainEventName.DELETED), handleDeleted);
3757
+ socket.off(buildDomainEventFullName(ctx.type, EntityDefaultEventName.DELETED), handleDeleted);
3765
3758
  }
3759
+ await emitEvent(socket, event);
3766
3760
  };
3767
- onMounted(()=>mount());
3768
- onUnmounted(()=>unmount());
3761
+ let isMounted = false;
3762
+ onMounted(()=>{
3763
+ isMounted = true;
3764
+ return subscribe();
3765
+ });
3766
+ onUnmounted(()=>{
3767
+ isMounted = false;
3768
+ return unsubscribe();
3769
+ });
3769
3770
  watch(targetId, (val, oldValue)=>{
3770
- if (val !== oldValue) {
3771
- Promise.resolve().then(()=>unmount()).then(()=>mount());
3771
+ if (val !== oldValue && isMounted) {
3772
+ Promise.resolve().then(()=>unsubscribe()).then(()=>subscribe());
3772
3773
  }
3773
3774
  });
3774
3775
  return {
3775
- mount,
3776
- unmount
3776
+ subscribe,
3777
+ unsubscribe
3777
3778
  };
3778
3779
  }
3779
3780
 
@@ -4239,7 +4240,7 @@ function createEntityManager(ctx) {
4239
4240
  if (ctx.props.entity) {
4240
4241
  entity.value = ctx.props.entity;
4241
4242
  if (socket) {
4242
- socket.mount();
4243
+ socket.subscribe();
4243
4244
  }
4244
4245
  resolved(entity.value);
4245
4246
  return true;
@@ -4253,10 +4254,10 @@ function createEntityManager(ctx) {
4253
4254
  entity.value = propEntityRef.value;
4254
4255
  if (val) {
4255
4256
  if (socket) {
4256
- socket.mount();
4257
+ socket.subscribe();
4257
4258
  }
4258
4259
  } else if (socket) {
4259
- socket.unmount();
4260
+ socket.unsubscribe();
4260
4261
  }
4261
4262
  });
4262
4263
  }
@@ -4277,7 +4278,7 @@ function createEntityManager(ctx) {
4277
4278
  if (ctx.props.entity) {
4278
4279
  entity.value = ctx.props.entity;
4279
4280
  if (socket) {
4280
- socket.mount();
4281
+ socket.subscribe();
4281
4282
  }
4282
4283
  resolved(entity.value);
4283
4284
  return;
@@ -4305,7 +4306,7 @@ function createEntityManager(ctx) {
4305
4306
  try {
4306
4307
  entity.value = await domainAPI.getOne(id, query);
4307
4308
  if (socket) {
4308
- socket.mount();
4309
+ socket.subscribe();
4309
4310
  }
4310
4311
  resolved(entity.value);
4311
4312
  return;
@@ -4326,7 +4327,7 @@ function createEntityManager(ctx) {
4326
4327
  if (response.data.length === 1) {
4327
4328
  [entity.value] = response.data;
4328
4329
  if (socket) {
4329
- socket.mount();
4330
+ socket.subscribe();
4330
4331
  }
4331
4332
  }
4332
4333
  resolved(entity.value);
@@ -5485,7 +5486,7 @@ const _hoisted_3$g = {
5485
5486
  const _hoisted_4$g = {
5486
5487
  class: "ms-auto"
5487
5488
  };
5488
- const _hoisted_5$b = [
5489
+ const _hoisted_5$c = [
5489
5490
  "disabled"
5490
5491
  ];
5491
5492
  const _hoisted_6$b = {
@@ -5521,7 +5522,7 @@ function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
5521
5522
  createVNode(_component_FTranslationDefault, {
5522
5523
  name: "add"
5523
5524
  })
5524
- ], 8, _hoisted_5$b)
5525
+ ], 8, _hoisted_5$c)
5525
5526
  ])
5526
5527
  ])
5527
5528
  ]),
@@ -5947,20 +5948,20 @@ var FProjectNodes = defineComponent({
5947
5948
  buildSubscribeEventName () {
5948
5949
  if (props.realmId) {
5949
5950
  if (props.direction === "in") {
5950
- return buildDomainEventSubscriptionFullName(DomainSubType.PROJECT_NODE_IN, DomainEventSubscriptionName.SUBSCRIBE);
5951
+ return buildDomainEventFullName(DomainSubType.PROJECT_NODE_IN, DomainEventSubscriptionName.SUBSCRIBE);
5951
5952
  }
5952
- return buildDomainEventSubscriptionFullName(DomainSubType.PROJECT_NODE_OUT, DomainEventSubscriptionName.SUBSCRIBE);
5953
+ return buildDomainEventFullName(DomainSubType.PROJECT_NODE_OUT, DomainEventSubscriptionName.SUBSCRIBE);
5953
5954
  }
5954
- return buildDomainEventSubscriptionFullName(DomainType.PROJECT_NODE, DomainEventSubscriptionName.SUBSCRIBE);
5955
+ return buildDomainEventFullName(DomainType.PROJECT_NODE, DomainEventSubscriptionName.SUBSCRIBE);
5955
5956
  },
5956
5957
  buildUnsubscribeEventName () {
5957
5958
  if (props.realmId) {
5958
5959
  if (props.direction === "in") {
5959
- return buildDomainEventSubscriptionFullName(DomainSubType.PROJECT_NODE_IN, DomainEventSubscriptionName.UNSUBSCRIBE);
5960
+ return buildDomainEventFullName(DomainSubType.PROJECT_NODE_IN, DomainEventSubscriptionName.UNSUBSCRIBE);
5960
5961
  }
5961
- return buildDomainEventSubscriptionFullName(DomainSubType.PROJECT_NODE_OUT, DomainEventSubscriptionName.UNSUBSCRIBE);
5962
+ return buildDomainEventFullName(DomainSubType.PROJECT_NODE_OUT, DomainEventSubscriptionName.UNSUBSCRIBE);
5962
5963
  }
5963
- return buildDomainEventSubscriptionFullName(DomainType.PROJECT_NODE, DomainEventSubscriptionName.UNSUBSCRIBE);
5964
+ return buildDomainEventFullName(DomainType.PROJECT_NODE, DomainEventSubscriptionName.UNSUBSCRIBE);
5964
5965
  }
5965
5966
  },
5966
5967
  queryFilters: (filters)=>{
@@ -6206,7 +6207,7 @@ const _hoisted_3$f = {
6206
6207
  const _hoisted_4$f = {
6207
6208
  class: "ms-auto d-flex flex-row gap-1"
6208
6209
  };
6209
- const _hoisted_5$a = {
6210
+ const _hoisted_5$b = {
6210
6211
  class: "row"
6211
6212
  };
6212
6213
  const _hoisted_6$a = {
@@ -6320,7 +6321,7 @@ function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
6320
6321
  renderSlot(_ctx.$slots, "body", {
6321
6322
  data: _ctx.entity
6322
6323
  }, ()=>[
6323
- createElementVNode("div", _hoisted_5$a, [
6324
+ createElementVNode("div", _hoisted_5$b, [
6324
6325
  createElementVNode("div", _hoisted_6$a, [
6325
6326
  _cache[5] || (_cache[5] = createElementVNode("div", null, [
6326
6327
  createElementVNode("strong", null, [
@@ -6761,7 +6762,7 @@ const _hoisted_3$e = {
6761
6762
  const _hoisted_4$e = {
6762
6763
  class: "ms-auto"
6763
6764
  };
6764
- const _hoisted_5$9 = {
6765
+ const _hoisted_5$a = {
6765
6766
  class: "d-flex justify-content-between flex-row"
6766
6767
  };
6767
6768
  const _hoisted_6$9 = {
@@ -6849,7 +6850,7 @@ function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
6849
6850
  renderSlot(_ctx.$slots, "body", {
6850
6851
  data: _ctx.entity
6851
6852
  }, ()=>[
6852
- createElementVNode("div", _hoisted_5$9, [
6853
+ createElementVNode("div", _hoisted_5$a, [
6853
6854
  createElementVNode("div", _hoisted_6$9, [
6854
6855
  _cache[2] || (_cache[2] = createElementVNode("div", null, [
6855
6856
  createElementVNode("strong", null, [
@@ -8012,7 +8013,7 @@ function createSingletonPromise(fn) {
8012
8013
  }
8013
8014
  wrapper.reset = async ()=>{
8014
8015
  const _prev = _promise;
8015
- _promise = undefined;
8016
+ _promise = void 0;
8016
8017
  if (_prev) await _prev;
8017
8018
  };
8018
8019
  return wrapper;
@@ -8023,8 +8024,8 @@ function toArray(value) {
8023
8024
  ];
8024
8025
  }
8025
8026
  function useTimeoutFn(cb, interval, options = {}) {
8026
- const { immediate = true } = options;
8027
- const isPending = ref(false);
8027
+ const { immediate = true, immediateCallback = false } = options;
8028
+ const isPending = shallowRef(false);
8028
8029
  let timer = null;
8029
8030
  function clear() {
8030
8031
  if (timer) {
@@ -8037,6 +8038,7 @@ function useTimeoutFn(cb, interval, options = {}) {
8037
8038
  clear();
8038
8039
  }
8039
8040
  function start(...args) {
8041
+ if (immediateCallback) cb();
8040
8042
  clear();
8041
8043
  isPending.value = true;
8042
8044
  timer = setTimeout(()=>{
@@ -8051,7 +8053,7 @@ function useTimeoutFn(cb, interval, options = {}) {
8051
8053
  }
8052
8054
  tryOnScopeDispose(stop);
8053
8055
  return {
8054
- isPending: readonly(isPending),
8056
+ isPending: shallowReadonly(isPending),
8055
8057
  start,
8056
8058
  stop
8057
8059
  };
@@ -8063,12 +8065,12 @@ function watchImmediate(source, cb, options) {
8063
8065
  });
8064
8066
  }
8065
8067
 
8066
- const defaultWindow = isClient ? window : undefined;
8067
- const defaultNavigator = isClient ? window.navigator : undefined;
8068
+ const defaultWindow = isClient ? window : void 0;
8069
+ const defaultNavigator = isClient ? window.navigator : void 0;
8068
8070
  function unrefElement(elRef) {
8069
8071
  var _a;
8070
8072
  const plain = toValue(elRef);
8071
- return (_a = plain == null ? undefined : plain.$el) != null ? _a : plain;
8073
+ return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;
8072
8074
  }
8073
8075
  function useEventListener(...args) {
8074
8076
  const cleanups = [];
@@ -8082,12 +8084,12 @@ function useEventListener(...args) {
8082
8084
  };
8083
8085
  const firstParamTargets = computed(()=>{
8084
8086
  const test = toArray(toValue(args[0])).filter((e)=>e != null);
8085
- return test.every((e)=>typeof e !== "string") ? test : undefined;
8087
+ return test.every((e)=>typeof e !== "string") ? test : void 0;
8086
8088
  });
8087
8089
  const stopWatch = watchImmediate(()=>{
8088
8090
  var _a, _b;
8089
8091
  return [
8090
- (_b = (_a = firstParamTargets.value) == null ? undefined : _a.map((e)=>unrefElement(e))) != null ? _b : [
8092
+ (_b = (_a = firstParamTargets.value) == null ? void 0 : _a.map((e)=>unrefElement(e))) != null ? _b : [
8091
8093
  defaultWindow
8092
8094
  ].filter((e)=>e != null),
8093
8095
  toArray(toValue(firstParamTargets.value ? args[1] : args[0])),
@@ -8097,7 +8099,7 @@ function useEventListener(...args) {
8097
8099
  ];
8098
8100
  }, ([raw_targets, raw_events, raw_listeners, raw_options])=>{
8099
8101
  cleanup();
8100
- if (!(raw_targets == null ? undefined : raw_targets.length) || !(raw_events == null ? undefined : raw_events.length) || !(raw_listeners == null ? undefined : raw_listeners.length)) return;
8102
+ if (!(raw_targets == null ? void 0 : raw_targets.length) || !(raw_events == null ? void 0 : raw_events.length) || !(raw_listeners == null ? void 0 : raw_listeners.length)) return;
8101
8103
  const optionsClone = isObject(raw_options) ? {
8102
8104
  ...raw_options
8103
8105
  } : raw_options;
@@ -8113,7 +8115,7 @@ function useEventListener(...args) {
8113
8115
  return stop;
8114
8116
  }
8115
8117
  function useMounted() {
8116
- const isMounted = ref(false);
8118
+ const isMounted = shallowRef(false);
8117
8119
  const instance = getCurrentInstance();
8118
8120
  if (instance) {
8119
8121
  onMounted(()=>{
@@ -8139,7 +8141,7 @@ function usePermission(permissionDesc, options = {}) {
8139
8141
  const state = shallowRef();
8140
8142
  const update = ()=>{
8141
8143
  var _a, _b;
8142
- state.value = (_b = (_a = permissionStatus.value) == null ? undefined : _a.state) != null ? _b : "prompt";
8144
+ state.value = (_b = (_a = permissionStatus.value) == null ? void 0 : _a.state) != null ? _b : "prompt";
8143
8145
  };
8144
8146
  useEventListener(permissionStatus, "change", update, {
8145
8147
  passive: true
@@ -8150,7 +8152,7 @@ function usePermission(permissionDesc, options = {}) {
8150
8152
  try {
8151
8153
  permissionStatus.value = await navigator1.permissions.query(desc);
8152
8154
  } catch (e) {
8153
- permissionStatus.value = undefined;
8155
+ permissionStatus.value = void 0;
8154
8156
  } finally{
8155
8157
  update();
8156
8158
  }
@@ -8174,18 +8176,16 @@ function useClipboard(options = {}) {
8174
8176
  const permissionRead = usePermission("clipboard-read");
8175
8177
  const permissionWrite = usePermission("clipboard-write");
8176
8178
  const isSupported = computed(()=>isClipboardApiSupported.value || legacy);
8177
- const text = ref("");
8178
- const copied = ref(false);
8179
+ const text = shallowRef("");
8180
+ const copied = shallowRef(false);
8179
8181
  const timeout = useTimeoutFn(()=>copied.value = false, copiedDuring, {
8180
8182
  immediate: false
8181
8183
  });
8182
- function updateText() {
8184
+ async function updateText() {
8183
8185
  let useLegacy = !(isClipboardApiSupported.value && isAllowed(permissionRead.value));
8184
8186
  if (!useLegacy) {
8185
8187
  try {
8186
- navigator1.clipboard.readText().then((value)=>{
8187
- text.value = value;
8188
- });
8188
+ text.value = await navigator1.clipboard.readText();
8189
8189
  } catch (e) {
8190
8190
  useLegacy = true;
8191
8191
  }
@@ -8228,7 +8228,7 @@ function useClipboard(options = {}) {
8228
8228
  }
8229
8229
  function legacyRead() {
8230
8230
  var _a, _b, _c;
8231
- return (_c = (_b = (_a = document == null ? undefined : document.getSelection) == null ? undefined : _a.call(document)) == null ? undefined : _b.toString()) != null ? _c : "";
8231
+ return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : "";
8232
8232
  }
8233
8233
  function isAllowed(status) {
8234
8234
  return status === "granted" || status === "prompt";
@@ -8362,7 +8362,7 @@ const _hoisted_3$d = {
8362
8362
  const _hoisted_4$d = {
8363
8363
  class: "d-flex flex-row"
8364
8364
  };
8365
- const _hoisted_5$8 = {
8365
+ const _hoisted_5$9 = {
8366
8366
  class: "ms-auto"
8367
8367
  };
8368
8368
  const _hoisted_6$8 = {
@@ -8403,7 +8403,7 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
8403
8403
  label: withCtx(()=>[
8404
8404
  createElementVNode("div", _hoisted_4$d, [
8405
8405
  _cache[8] || (_cache[8] = createElementVNode("div", null, " PublicKey ", -1)),
8406
- createElementVNode("div", _hoisted_5$8, [
8406
+ createElementVNode("div", _hoisted_5$9, [
8407
8407
  withDirectives(createElementVNode("button", {
8408
8408
  type: "button",
8409
8409
  class: "btn btn-xs btn-dark",
@@ -8755,8 +8755,8 @@ var FAnalysisNodes = defineComponent({
8755
8755
  default: `${"out"}`
8756
8756
  }
8757
8757
  },
8758
- slots: Object,
8759
8758
  emits: defineListEvents(),
8759
+ slots: Object,
8760
8760
  async setup (props, ctx) {
8761
8761
  const source = computed(()=>props.target === DomainType.NODE ? DomainType.ANALYSIS : DomainType.NODE);
8762
8762
  const isSameSocketRoom = (room)=>{
@@ -8798,20 +8798,20 @@ var FAnalysisNodes = defineComponent({
8798
8798
  buildSubscribeEventName () {
8799
8799
  if (props.realmId) {
8800
8800
  if (props.direction === "in") {
8801
- return buildDomainEventSubscriptionFullName(DomainSubType.ANALYSIS_NODE_IN, DomainEventSubscriptionName.SUBSCRIBE);
8801
+ return buildDomainEventFullName(DomainSubType.ANALYSIS_NODE_IN, DomainEventSubscriptionName.SUBSCRIBE);
8802
8802
  }
8803
- return buildDomainEventSubscriptionFullName(DomainSubType.ANALYSIS_NODE_OUT, DomainEventSubscriptionName.SUBSCRIBE);
8803
+ return buildDomainEventFullName(DomainSubType.ANALYSIS_NODE_OUT, DomainEventSubscriptionName.SUBSCRIBE);
8804
8804
  }
8805
- return buildDomainEventSubscriptionFullName(DomainType.ANALYSIS_NODE, DomainEventSubscriptionName.SUBSCRIBE);
8805
+ return buildDomainEventFullName(DomainType.ANALYSIS_NODE, DomainEventSubscriptionName.SUBSCRIBE);
8806
8806
  },
8807
8807
  buildUnsubscribeEventName () {
8808
8808
  if (props.realmId) {
8809
8809
  if (props.direction === "in") {
8810
- return buildDomainEventSubscriptionFullName(DomainSubType.ANALYSIS_NODE_IN, DomainEventSubscriptionName.UNSUBSCRIBE);
8810
+ return buildDomainEventFullName(DomainSubType.ANALYSIS_NODE_IN, DomainEventSubscriptionName.UNSUBSCRIBE);
8811
8811
  }
8812
- return buildDomainEventSubscriptionFullName(DomainSubType.ANALYSIS_NODE_OUT, DomainEventSubscriptionName.UNSUBSCRIBE);
8812
+ return buildDomainEventFullName(DomainSubType.ANALYSIS_NODE_OUT, DomainEventSubscriptionName.UNSUBSCRIBE);
8813
8813
  }
8814
- return buildDomainEventSubscriptionFullName(DomainType.ANALYSIS_NODE, DomainEventSubscriptionName.UNSUBSCRIBE);
8814
+ return buildDomainEventFullName(DomainType.ANALYSIS_NODE, DomainEventSubscriptionName.UNSUBSCRIBE);
8815
8815
  }
8816
8816
  },
8817
8817
  queryFilters: (filters)=>{
@@ -9065,7 +9065,7 @@ const _hoisted_3$c = {
9065
9065
  const _hoisted_4$c = {
9066
9066
  class: "ms-auto"
9067
9067
  };
9068
- const _hoisted_5$7 = [
9068
+ const _hoisted_5$8 = [
9069
9069
  "disabled",
9070
9070
  "onClick"
9071
9071
  ];
@@ -9152,7 +9152,7 @@ function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
9152
9152
  createElementVNode("i", {
9153
9153
  class: "fa fa-trash"
9154
9154
  }, null, -1)
9155
- ]), 8, _hoisted_5$7)
9155
+ ]), 8, _hoisted_5$8)
9156
9156
  ])
9157
9157
  ])
9158
9158
  ]),
@@ -9693,7 +9693,7 @@ const _hoisted_4$a = [
9693
9693
  "disabled",
9694
9694
  "onClick"
9695
9695
  ];
9696
- const _hoisted_5$6 = {
9696
+ const _hoisted_5$7 = {
9697
9697
  class: "col"
9698
9698
  };
9699
9699
  const _hoisted_6$6 = [
@@ -9752,7 +9752,7 @@ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
9752
9752
  "onChanged"
9753
9753
  ])
9754
9754
  ]),
9755
- createElementVNode("div", _hoisted_5$6, [
9755
+ createElementVNode("div", _hoisted_5$7, [
9756
9756
  createVNode(_component_FFormInputList, {
9757
9757
  ref: "itemsAfterVNode",
9758
9758
  names: _ctx.itemsAfter,
@@ -10261,7 +10261,7 @@ const _hoisted_4$7 = [
10261
10261
  "webkitdirectory",
10262
10262
  "disbaled"
10263
10263
  ];
10264
- const _hoisted_5$5 = {
10264
+ const _hoisted_5$6 = {
10265
10265
  class: "form-group mb-0"
10266
10266
  };
10267
10267
  const _hoisted_6$5 = {
@@ -10297,7 +10297,7 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
10297
10297
  onChange: _cache[0] || (_cache[0] = (...args)=>_ctx.checkTempFiles && _ctx.checkTempFiles(...args))
10298
10298
  }, null, 40, _hoisted_4$7)
10299
10299
  ]),
10300
- createElementVNode("div", _hoisted_5$5, [
10300
+ createElementVNode("div", _hoisted_5$6, [
10301
10301
  createElementVNode("div", _hoisted_6$5, [
10302
10302
  withDirectives(createElementVNode("input", {
10303
10303
  id: "train-file-manager-switch",
@@ -10531,7 +10531,7 @@ const _hoisted_3$6 = {
10531
10531
  const _hoisted_4$6 = {
10532
10532
  class: "form-group"
10533
10533
  };
10534
- const _hoisted_5$4 = [
10534
+ const _hoisted_5$5 = [
10535
10535
  "disabled"
10536
10536
  ];
10537
10537
  const _hoisted_6$4 = {
@@ -10657,7 +10657,7 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
10657
10657
  class: "fa fa-trash"
10658
10658
  }, null, -1),
10659
10659
  createTextVNode(" Delete ")
10660
- ]), 8, _hoisted_5$4)
10660
+ ]), 8, _hoisted_5$5)
10661
10661
  ])
10662
10662
  ]),
10663
10663
  createElementVNode("div", null, [
@@ -10942,7 +10942,7 @@ const _hoisted_3$4 = {
10942
10942
  const _hoisted_4$4 = [
10943
10943
  "for"
10944
10944
  ];
10945
- const _hoisted_5$3 = {
10945
+ const _hoisted_5$4 = {
10946
10946
  class: "d-flex flex-row",
10947
10947
  style: {
10948
10948
  "width": "100%"
@@ -11040,7 +11040,7 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
11040
11040
  ])
11041
11041
  ]),
11042
11042
  footer: withCtx((props)=>[
11043
- createElementVNode("div", _hoisted_5$3, [
11043
+ createElementVNode("div", _hoisted_5$4, [
11044
11044
  createElementVNode("div", null, [
11045
11045
  createElementVNode("button", {
11046
11046
  disabled: _ctx.isBusy,
@@ -11102,6 +11102,33 @@ var _sfc_main$7 = defineComponent({
11102
11102
  const { confirm } = useModalController();
11103
11103
  const apiClient = injectCoreHTTPClient();
11104
11104
  const entity = toRef(props, 'entity');
11105
+ const form = reactive({
11106
+ query: null,
11107
+ master_image_id: null,
11108
+ files: [],
11109
+ hash_signed: '',
11110
+ hash: null
11111
+ });
11112
+ const updateForm = (entity)=>{
11113
+ initFormAttributesFromSource(form, entity);
11114
+ };
11115
+ updateForm(entity.value);
11116
+ const isBusy = ref(false);
11117
+ const initialized = ref(false);
11118
+ const valid = ref(false);
11119
+ const startIndex = ref(0);
11120
+ const index = ref(0);
11121
+ const steps = [
11122
+ AnalysisConfigurationStatus.NODES,
11123
+ AnalysisConfigurationStatus.FILES,
11124
+ AnalysisConfigurationStatus.MASTER_IMAGE
11125
+ ];
11126
+ const updatedAt = computed(()=>entity.value ? entity.value.updated_at : undefined);
11127
+ watch(updatedAt, (val, oldValue)=>{
11128
+ if (val && val !== oldValue) {
11129
+ updateForm(entity.value);
11130
+ }
11131
+ });
11105
11132
  const entrypointFile = ref(null);
11106
11133
  const masterImage = ref(null);
11107
11134
  const resolveRelations = async ()=>{
@@ -11132,33 +11159,6 @@ var _sfc_main$7 = defineComponent({
11132
11159
  }
11133
11160
  };
11134
11161
  await resolveRelations();
11135
- const form = reactive({
11136
- query: null,
11137
- master_image_id: null,
11138
- files: [],
11139
- hash_signed: '',
11140
- hash: null
11141
- });
11142
- const updateForm = (entity)=>{
11143
- initFormAttributesFromSource(form, entity);
11144
- };
11145
- updateForm(entity.value);
11146
- const isBusy = ref(false);
11147
- const initialized = ref(false);
11148
- const valid = ref(false);
11149
- const startIndex = ref(0);
11150
- const index = ref(0);
11151
- const steps = [
11152
- AnalysisConfigurationStatus.NODES,
11153
- AnalysisConfigurationStatus.FILES,
11154
- AnalysisConfigurationStatus.MASTER_IMAGE
11155
- ];
11156
- const updatedAt = computed(()=>entity.value ? entity.value.updated_at : undefined);
11157
- watch(updatedAt, (val, oldValue)=>{
11158
- if (val && val !== oldValue) {
11159
- updateForm(entity.value);
11160
- }
11161
- });
11162
11162
  const handleUpdated = (entity)=>{
11163
11163
  updateForm(entity);
11164
11164
  emit('updated', entity);
@@ -11558,7 +11558,7 @@ const _hoisted_4$3 = {
11558
11558
  key: 0,
11559
11559
  class: "col"
11560
11560
  };
11561
- const _hoisted_5$2 = [
11561
+ const _hoisted_5$3 = [
11562
11562
  "disabled",
11563
11563
  "onClick"
11564
11564
  ];
@@ -11691,7 +11691,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
11691
11691
  "fa fa-minus": _ctx.form.project_id === props.data.id
11692
11692
  })
11693
11693
  }, null, 2)
11694
- ], 10, _hoisted_5$2)
11694
+ ], 10, _hoisted_5$3)
11695
11695
  ]),
11696
11696
  _: 1
11697
11697
  }, 8, [
@@ -12162,65 +12162,9 @@ var TrainPipeline = /* @__PURE__ */ _export_sfc(_sfc_main$3, [
12162
12162
  ]
12163
12163
  ]);
12164
12164
 
12165
- var FAnalysisNodeRunStatus = defineComponent({
12166
- props: {
12167
- status: {
12168
- type: String,
12169
- default: null
12170
- }
12171
- },
12172
- setup (props, { slots }) {
12173
- const statusText = computed(()=>{
12174
- if (props.status) {
12175
- return props.status;
12176
- }
12177
- return 'none';
12178
- });
12179
- const classSuffix = computed(()=>{
12180
- switch(props.status){
12181
- case AnalysisNodeRunStatus.STARTED:
12182
- case AnalysisNodeRunStatus.STARTING:
12183
- {
12184
- return 'primary';
12185
- }
12186
- case AnalysisNodeRunStatus.FINISHED:
12187
- {
12188
- return 'success';
12189
- }
12190
- case AnalysisNodeRunStatus.RUNNING:
12191
- {
12192
- return 'dark';
12193
- }
12194
- case AnalysisNodeRunStatus.STOPPED:
12195
- case AnalysisNodeRunStatus.STOPPING:
12196
- {
12197
- return 'warning';
12198
- }
12199
- case AnalysisNodeRunStatus.FAILED:
12200
- {
12201
- return 'danger';
12202
- }
12203
- }
12204
- return 'info';
12205
- });
12206
- if (hasNormalizedSlot('default', slots)) {
12207
- return ()=>normalizeSlot('default', {
12208
- classSuffix: classSuffix.value,
12209
- statusText: statusText.value
12210
- }, slots);
12211
- }
12212
- return ()=>h('span', {
12213
- class: `text-${classSuffix.value}`
12214
- }, [
12215
- statusText.value
12216
- ]);
12217
- }
12218
- });
12219
-
12220
12165
  var _sfc_main$2 = defineComponent({
12221
12166
  components: {
12222
- FAnalysisNodes,
12223
- FAnalysisNodeRunStatus
12167
+ FAnalysisNodes
12224
12168
  },
12225
12169
  props: {
12226
12170
  entity: {
@@ -12263,20 +12207,22 @@ var _sfc_main$2 = defineComponent({
12263
12207
 
12264
12208
  const _hoisted_1$2 = {
12265
12209
  key: 0,
12266
- class: "train-stations-progress"
12210
+ class: "analysis-nodes"
12267
12211
  };
12268
12212
  const _hoisted_2$2 = {
12269
- class: "icon"
12213
+ class: "text-left"
12270
12214
  };
12271
12215
  const _hoisted_3$2 = {
12216
+ class: "icon"
12217
+ };
12218
+ const _hoisted_4$2 = {
12272
12219
  key: 1,
12273
12220
  class: "progress bg-white"
12274
12221
  };
12275
- const _hoisted_4$2 = [
12222
+ const _hoisted_5$2 = [
12276
12223
  "aria-valuenow"
12277
12224
  ];
12278
12225
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
12279
- const _component_FAnalysisNodeRunStatus = resolveComponent("FAnalysisNodeRunStatus");
12280
12226
  const _component_FAnalysisNodes = resolveComponent("FAnalysisNodes");
12281
12227
  return openBlock(), createElementBlock("div", null, [
12282
12228
  _ctx.elementType === "steps" ? (openBlock(), createElementBlock("div", _hoisted_1$2, [
@@ -12291,8 +12237,11 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
12291
12237
  (openBlock(true), createElementBlock(Fragment, null, renderList(props.data, (item)=>{
12292
12238
  return openBlock(), createElementBlock("div", {
12293
12239
  key: item.id,
12294
- class: "d-flex flex-column progress-step"
12240
+ class: "d-flex flex-column progress-step flex-grow-1"
12295
12241
  }, [
12242
+ createElementVNode("div", _hoisted_2$2, [
12243
+ createElementVNode("h6", null, toDisplayString(item.node.name), 1)
12244
+ ]),
12296
12245
  createElementVNode("div", {
12297
12246
  class: normalizeClass([
12298
12247
  "d-flex justify-content-center icon-circle text-light p-1",
@@ -12306,20 +12255,8 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
12306
12255
  }
12307
12256
  ])
12308
12257
  }, [
12309
- createElementVNode("span", _hoisted_2$2, toDisplayString(item.node.name), 1)
12310
- ], 2),
12311
- _cache[0] || (_cache[0] = createElementVNode("div", {
12312
- class: "mt-1"
12313
- }, [
12314
- createElementVNode("strong", null, "Status")
12315
- ], -1)),
12316
- createElementVNode("div", null, [
12317
- createVNode(_component_FAnalysisNodeRunStatus, {
12318
- status: item.run_status
12319
- }, null, 8, [
12320
- "status"
12321
- ])
12322
- ])
12258
+ createElementVNode("span", _hoisted_3$2, toDisplayString(item.run_status || "none"), 1)
12259
+ ], 2)
12323
12260
  ]);
12324
12261
  }), 128))
12325
12262
  ]),
@@ -12329,7 +12266,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
12329
12266
  "realm-id",
12330
12267
  "source-id"
12331
12268
  ])
12332
- ])) : (openBlock(), createElementBlock("div", _hoisted_3$2, [
12269
+ ])) : (openBlock(), createElementBlock("div", _hoisted_4$2, [
12333
12270
  createElementVNode("div", {
12334
12271
  class: normalizeClass([
12335
12272
  "progress-bar",
@@ -12344,7 +12281,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
12344
12281
  "aria-valuenow": _ctx.progressPercentage,
12345
12282
  "aria-valuemin": "0",
12346
12283
  "aria-valuemax": "100"
12347
- }, null, 14, _hoisted_4$2)
12284
+ }, null, 14, _hoisted_5$2)
12348
12285
  ]))
12349
12286
  ]);
12350
12287
  }
@@ -13215,6 +13152,61 @@ const FAnalysisNodeApprovalStatus = defineComponent({
13215
13152
  }
13216
13153
  });
13217
13154
 
13155
+ var FAnalysisNodeRunStatus = defineComponent({
13156
+ props: {
13157
+ status: {
13158
+ type: String,
13159
+ default: null
13160
+ }
13161
+ },
13162
+ setup (props, { slots }) {
13163
+ const statusText = computed(()=>{
13164
+ if (props.status) {
13165
+ return props.status;
13166
+ }
13167
+ return 'none';
13168
+ });
13169
+ const classSuffix = computed(()=>{
13170
+ switch(props.status){
13171
+ case AnalysisNodeRunStatus.STARTED:
13172
+ case AnalysisNodeRunStatus.STARTING:
13173
+ {
13174
+ return 'primary';
13175
+ }
13176
+ case AnalysisNodeRunStatus.FINISHED:
13177
+ {
13178
+ return 'success';
13179
+ }
13180
+ case AnalysisNodeRunStatus.RUNNING:
13181
+ {
13182
+ return 'dark';
13183
+ }
13184
+ case AnalysisNodeRunStatus.STOPPED:
13185
+ case AnalysisNodeRunStatus.STOPPING:
13186
+ {
13187
+ return 'warning';
13188
+ }
13189
+ case AnalysisNodeRunStatus.FAILED:
13190
+ {
13191
+ return 'danger';
13192
+ }
13193
+ }
13194
+ return 'info';
13195
+ });
13196
+ if (hasNormalizedSlot('default', slots)) {
13197
+ return ()=>normalizeSlot('default', {
13198
+ classSuffix: classSuffix.value,
13199
+ statusText: statusText.value
13200
+ }, slots);
13201
+ }
13202
+ return ()=>h('span', {
13203
+ class: `text-${classSuffix.value}`
13204
+ }, [
13205
+ statusText.value
13206
+ ]);
13207
+ }
13208
+ });
13209
+
13218
13210
  var _sfc_main = defineComponent({
13219
13211
  components: {
13220
13212
  FAnalysisBucket,