diff --git a/src/components/ConnectivityQuery.vue b/src/components/ConnectivityQuery.vue index 90fe3c3a..4aac396b 100644 --- a/src/components/ConnectivityQuery.vue +++ b/src/components/ConnectivityQuery.vue @@ -563,12 +563,38 @@ export default defineComponent({ // Update state with new network store.dispatch.aggregateNetwork(undefined); - store.dispatch.updateNetwork({ network: newNetwork }); store.commit.setNetworkPreFilter(newNetwork); loading.value = false; store.commit.setDirectionalEdges(true); store.commit.setQueriedNetworkState(true); store.commit.setDegreeEntries(setNodeDegreeDict(store.state.networkPreFilter, store.state.networkOnLoad, store.state.queriedNetwork, store.state.directionalEdges)); + if (promise.length >= 100) { + // Create dictionary of degree occurences + const orderedList = Object.values(store.state.nodeDegreeDict).sort((a, b) => a - b); + const degreeCount: {[key:number]:number} = {}; + orderedList.forEach((olItem) => { + degreeCount[olItem] = (degreeCount[olItem] || 0) + 1; + }); + + // Set min value if the node degree occurrence < 100 + // Using every to stop for loop once the conditional is met + if ( + // If all degrees have 100 connections of more + Object.entries(degreeCount).every(([degree, occurrence]) => { + if (occurrence < 100) { + store.commit.setMinDegree(Number(degree)); + // This calls updateNetwork + store.commit.setDegreeNetwork([Number(degree), store.state.maxDegree]); + return false; + } return true; + }) + ) { + store.dispatch.updateNetwork({ network: newNetwork }); + } + } else { + // Update state with new network + store.dispatch.updateNetwork({ network: newNetwork }); + } } else { // Update state with empty network store.dispatch.aggregateNetwork(undefined); diff --git a/src/components/ControlPanel.vue b/src/components/ControlPanel.vue index ed684190..31ed43fb 100644 --- a/src/components/ControlPanel.vue +++ b/src/components/ControlPanel.vue @@ -88,10 +88,11 @@ export default defineComponent({ }); const maxConnections = computed(() => store.state.maxConnections); const maxDegree = computed(() => store.state.maxDegree); - const degreeRange = ref([0, maxDegree.value]); + const minDegree = computed(() => store.state.minDegree); + const degreeRange = ref([minDegree.value, maxDegree.value]); - watch([maxDegree], () => { - degreeRange.value = [0, maxDegree.value]; + watch([maxDegree, minDegree], () => { + degreeRange.value = [minDegree.value, maxDegree.value]; }); // Intermediate node table template objects diff --git a/src/components/MultiMatrix.vue b/src/components/MultiMatrix.vue index 8b077a4d..d3fa9fc0 100644 --- a/src/components/MultiMatrix.vue +++ b/src/components/MultiMatrix.vue @@ -163,7 +163,11 @@ export default defineComponent({ // Loop through other props to add to tooltip Object.keys(networkElement).forEach((key) => { if (!['_key', '_rev', 'id', 'neighbors'].includes(key)) { - message += `
${capitalizeFirstLetter(key)}: ${networkElement[key]}`; + if (key === 'children' && networkElement.children !== undefined) { + message += `
${capitalizeFirstLetter(key)}: ${networkElement.children.length}`; + } else { + message += `
${capitalizeFirstLetter(key)}: ${networkElement[key]}`; + } } }); } diff --git a/src/store/index.ts b/src/store/index.ts index a0ea9902..fb7f25c8 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -78,6 +78,7 @@ const { selectedHops: 1, nodeDegreeDict: {}, maxDegree: 0, + minDegree: 0, networkPreFilter: null, queriedNetwork: false, filteredNetwork: false, @@ -389,6 +390,10 @@ const { state.nodeDegreeDict = degreeObject.nodeDegreeDict; }, + setMinDegree(state, minDegree: number) { + state.minDegree = minDegree; + }, + setDegreeNetwork(state, degreeRange: number[]) { // Determine correct network to use let baseNetwork: Network = { nodes: [], edges: [] }; diff --git a/src/types.ts b/src/types.ts index 2d1a6bcb..b62f9bdd 100644 --- a/src/types.ts +++ b/src/types.ts @@ -129,6 +129,7 @@ export interface State { selectedHops: number; nodeDegreeDict: { [key: string]: number }; maxDegree: number; + minDegree: number; networkPreFilter: Network | null; queriedNetwork: boolean; filteredNetwork: boolean;