From cd615875797a1ba3b671a7c57c5a5453c0648ed5 Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Mon, 11 Sep 2023 13:58:07 -0600 Subject: [PATCH 1/5] Rename component to NetworkBuilder.vue --- components.d.ts | 3 +-- src/components/CreateModifyDialog.vue | 4 ++-- .../{NetworkCreationTool.vue => NetworkBuilder.vue} | 0 3 files changed, 3 insertions(+), 4 deletions(-) rename src/components/{NetworkCreationTool.vue => NetworkBuilder.vue} (100%) diff --git a/components.d.ts b/components.d.ts index 296241f..cd92d70 100644 --- a/components.d.ts +++ b/components.d.ts @@ -14,7 +14,7 @@ declare module 'vue' { DeleteTableDialog: typeof import('./src/components/DeleteTableDialog.vue')['default'] DeleteWorkspaceDialog: typeof import('./src/components/DeleteWorkspaceDialog.vue')['default'] DownloadDialog: typeof import('./src/components/DownloadDialog.vue')['default'] - NetworkCreationTool: typeof import('./src/components/NetworkCreationTool.vue')['default'] + NetworkBuilder: typeof import('./src/components/NetworkBuilder.vue')['default'] NetworkPanel: typeof import('./src/components/NetworkPanel.vue')['default'] PermissionsDialog: typeof import('./src/components/PermissionsDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] @@ -61,7 +61,6 @@ declare module 'vue' { VOverlay: typeof import('vuetify/lib')['VOverlay'] VProgressCircular: typeof import('vuetify/lib')['VProgressCircular'] VProgressLinear: typeof import('vuetify/lib')['VProgressLinear'] - VResponsive: typeof import('vuetify/lib')['VResponsive'] VRow: typeof import('vuetify/lib')['VRow'] VScrollXTransition: typeof import('vuetify/lib')['VScrollXTransition'] VSelect: typeof import('vuetify/lib')['VSelect'] diff --git a/src/components/CreateModifyDialog.vue b/src/components/CreateModifyDialog.vue index 90244d5..fe81665 100644 --- a/src/components/CreateModifyDialog.vue +++ b/src/components/CreateModifyDialog.vue @@ -36,7 +36,7 @@ - import store from '@/store'; import { computed, ref, watch } from 'vue'; -import NetworkCreationTool from './NetworkCreationTool.vue'; +import NetworkBuilder from './NetworkBuilder.vue'; import TableNetworkUploadStepper from './TableNetworkUploadStepper.vue'; const props = defineProps<{ diff --git a/src/components/NetworkCreationTool.vue b/src/components/NetworkBuilder.vue similarity index 100% rename from src/components/NetworkCreationTool.vue rename to src/components/NetworkBuilder.vue From 72a3e60831e11ac60aeb4fd9abf6c1173b14381d Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Tue, 3 Oct 2023 13:26:08 -0600 Subject: [PATCH 2/5] On network builder success start checking for build status --- src/components/CreateModifyDialog.vue | 2 +- src/views/WorkspaceDetail.vue | 56 ++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/components/CreateModifyDialog.vue b/src/components/CreateModifyDialog.vue index fe81665..156f699 100644 --- a/src/components/CreateModifyDialog.vue +++ b/src/components/CreateModifyDialog.vue @@ -39,7 +39,7 @@ - + + + + + + + Your network is being built + + + + + + + @@ -262,6 +285,30 @@ async function update(this: any) { watch(() => props.workspace, () => update()); watch(localWorkspace, () => { requestError.value = null; }); +const networkBuildRequests = ref([]); +async function checkNetworkBuilds() { + networkBuildRequests.value = await api.networkBuildRequests(props.workspace); + + if (networkBuildRequests.value.length === 0) { + update(); + return true; + } + return false; +} + +async function startCheckingNetworkBuilds() { + let timeout = 30 * 1000; + const interval = 3 * 1000; + + const checkUploadInterval = setInterval(async () => { + if ((await checkNetworkBuilds()) || timeout <= 0) { + clearInterval(checkUploadInterval); + } + + timeout -= interval; + }, interval); +} + async function checkUpload(upload: { id: number }) { const newUploadStatus = await api.uploads(props.workspace); store.commit.setUploads(newUploadStatus.results); @@ -291,6 +338,13 @@ async function startCheckingUpload(upload: { id: number }) { }, interval); } +function startChecking(upload: { id: number } | undefined) { + if (upload !== undefined) { + startCheckingUpload(upload); + } + startCheckingNetworkBuilds(); +} + update(); From 070f38dcf554d7e3534d33786981e4e2f5df2fa1 Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Tue, 3 Oct 2023 13:26:36 -0600 Subject: [PATCH 3/5] Only set _from and _to as source/target when it has a / in the name --- src/utils/files.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/files.ts b/src/utils/files.ts index 491d9bf..30c80ea 100644 --- a/src/utils/files.ts +++ b/src/utils/files.ts @@ -55,8 +55,8 @@ function generateColumnTypes(sampleRows: Record[]) { const uniqueValuesInSample = new Set(valuesInSample); const isKey = field === '_key' || field === 'id'; - const isSource = field === '_from' || field === 'source'; - const isTarget = field === '_to' || field === 'target'; + const isSource = (field === '_from' || field === 'source') && valuesInSample.every((value) => value.split('/').length === 2); + const isTarget = (field === '_to' || field === 'target') && valuesInSample.every((value) => value.split('/').length === 2); const isLabel = field.toLocaleLowerCase().includes('name') || field === 'label'; const boolean = isBoolean(uniqueValuesInSample); const category = uniqueValuesInSample.size <= 10 && !(uniqueValuesInSample.size === sampleRows.length); From b80dc40d490a143ca99efdd9310de5a92575ff5f Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Tue, 3 Oct 2023 13:26:59 -0600 Subject: [PATCH 4/5] Update network builder styles, allow _key as source/target --- src/components/NetworkBuilder.vue | 70 +++++++++++++++---------------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/src/components/NetworkBuilder.vue b/src/components/NetworkBuilder.vue index ae0b267..2e6d9ac 100644 --- a/src/components/NetworkBuilder.vue +++ b/src/components/NetworkBuilder.vue @@ -23,7 +23,7 @@ -