diff --git a/src/components.d.ts b/src/components.d.ts index 534c46f..ce43e6e 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -10,7 +10,9 @@ declare module 'vue' { AnnotationPopup: typeof import('./components/Tooltip/AnnotationPopup.vue')['default'] ConnectionDialog: typeof import('./components/DrawToolbar/ConnectionDialog.vue')['default'] ConnectivityGraph: typeof import('./components/ConnectivityGraph/ConnectivityGraph.vue')['default'] + ConnectivityGraphNew: typeof import('./components/ConnectivityGraph/ConnectivityGraphNew.vue')['default'] ConnectivityList: typeof import('./components/ConnectivityList/ConnectivityList.vue')['default'] + ConnectivityListNew: typeof import('./components/ConnectivityList/ConnectivityListNew.vue')['default'] CopyToClipboard: typeof import('./components/CopyToClipboard/CopyToClipboard.vue')['default'] CreateTooltipContent: typeof import('./components/Tooltip/CreateTooltipContent.vue')['default'] DrawToolbar: typeof import('./components/DrawToolbar/DrawToolbar.vue')['default'] diff --git a/src/components/CompetencyQueries/CompetencyQueries.js b/src/components/CompetencyQueries/CompetencyQueries.js index b2d21b5..3215786 100644 --- a/src/components/CompetencyQueries/CompetencyQueries.js +++ b/src/components/CompetencyQueries/CompetencyQueries.js @@ -1,3 +1,5 @@ +import { removeDuplicates } from '../utilities'; + /** * @private * Competency Queries @@ -28,6 +30,54 @@ async function _postRequest(API_URL, payload) { } } +/** + * CQ query 27: Single Connectivity List + * @param {*} flatmapAPI + * @param {*} knowledgeSource mapuuid + * @param {*} pathId + * @returns combined connectivity list + */ +async function querySingleConnectivityList(flatmapAPI, knowledgeSource, pathId) { + const data = await competencyQuery({ + flatmapAPI: flatmapAPI, + knowledgeSource: knowledgeSource, + queryId: 27, + parameters: [ + { + column: 'path_id', + value: pathId + }, + ] + }); + + if (data?.results?.values) { + const connectivityList = data.results.values.map((value) => { + // value => [ + // "sckan_id", + // "path_id", + // "sckan_node_id", + // "sckan_node_label", + // "source_id", // mapuuid + // "node_id", // map node id + // "node_label" // map node label + // ] + return { + sckanId: value[0], + mapUUID: value[4], + pathId: value[1], + sckanNodeId: value[2] ? JSON.parse(value[2]) : [], + sckanNodeLabel: value[3] || "", + mapNodeId: value[5] ? JSON.parse(value[5]) : [], + mapNodeLabel: value[6] || "", + }; + }); + // remove duplicates + return removeDuplicates(connectivityList); + } + + return []; +} + /** * Competency Query * @public @@ -392,4 +442,5 @@ export { queryPathsByDestination, queryPathsByRoute, queryForwardBackwardConnections, + querySingleConnectivityList, }; diff --git a/src/components/ConnectivityGraph/ConnectivityGraphNew.vue b/src/components/ConnectivityGraph/ConnectivityGraphNew.vue new file mode 100644 index 0000000..153d57c --- /dev/null +++ b/src/components/ConnectivityGraph/ConnectivityGraphNew.vue @@ -0,0 +1,727 @@ + + + + + + + diff --git a/src/components/ConnectivityList/ConnectivityList.vue b/src/components/ConnectivityList/ConnectivityList.vue index 853684f..fac1ffd 100644 --- a/src/components/ConnectivityList/ConnectivityList.vue +++ b/src/components/ConnectivityList/ConnectivityList.vue @@ -19,172 +19,172 @@ {{ connectivityError.errorMessage }} - {{ entry.paths }} -
-
- Origin - - - - Origin {{ originDescription }} - - -
-
- - - Search connectivity - - {{ capitalise(origin) }} -
- +
+ Origin + - Explore origin data - + + + Origin {{ originDescription }} + +
-
- Components -
-
- - - Search connectivity - - {{ capitalise(component) }} -
+ + Search connectivity + + {{ capitalise(origin) }} +
+ + Explore origin data + +
+
+
+ Components
-
- Destination - - - - Destination is where the axons terminate - - -
-
- - - Search connectivity - - {{ capitalise(destination) }} -
- + + + + + Search connectivity + + {{ capitalise(component) }} +
+
+
+
+ Destination + - Explore destination data - + + + Destination is where the axons terminate + +
- - Search for data on components - + + Search connectivity + + {{ capitalise(destination) }}
+ + Explore destination data + +
+
+ + Search for data on components + +
diff --git a/src/components/ConnectivityList/ConnectivityListNew.vue b/src/components/ConnectivityList/ConnectivityListNew.vue new file mode 100644 index 0000000..ace5d21 --- /dev/null +++ b/src/components/ConnectivityList/ConnectivityListNew.vue @@ -0,0 +1,666 @@ + + + + + diff --git a/src/components/index.js b/src/components/index.js index d3bc027..25cbd0a 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -1,7 +1,9 @@ import AnnotationPopup from "./Tooltip/AnnotationPopup.vue"; import CreateTooltipContent from "./Tooltip/CreateTooltipContent.vue"; import ConnectivityGraph from "./ConnectivityGraph/ConnectivityGraph.vue"; +import ConnectivityGraphNew from "./ConnectivityGraph/ConnectivityGraphNew.vue"; import ConnectivityList from "./ConnectivityList/ConnectivityList.vue"; +import ConnectivityListNew from "./ConnectivityList/ConnectivityListNew.vue"; import CopyToClipboard from "./CopyToClipboard/CopyToClipboard.vue"; import DrawToolbar from "./DrawToolbar/DrawToolbar.vue"; import HelpModeDialog from "./HelpModeDialog/HelpModeDialog.vue"; @@ -16,6 +18,7 @@ import { queryPathsByDestination, queryPathsByRoute, queryForwardBackwardConnections, + querySingleConnectivityList, } from "./CompetencyQueries/CompetencyQueries.js"; import { filterOrigins, @@ -37,6 +40,8 @@ export { CreateTooltipContent, ConnectivityGraph, ConnectivityList, + ConnectivityListNew, + ConnectivityGraphNew, CopyToClipboard, DrawToolbar, HelpModeDialog, @@ -50,6 +55,7 @@ export { queryPathsByDestination, queryPathsByRoute, queryForwardBackwardConnections, + querySingleConnectivityList, filterOrigins, filterDestinations, filterViaLocations, diff --git a/src/components/utilities.js b/src/components/utilities.js index f446f71..0181309 100644 --- a/src/components/utilities.js +++ b/src/components/utilities.js @@ -54,9 +54,17 @@ const delay = (ms) => { return new Promise(resolve => setTimeout(resolve, ms)); }; +const removeDuplicates = function (arrayOfAnything) { + if (!arrayOfAnything) return [] + return [...new Set(arrayOfAnything.map((e) => JSON.stringify(e)))].map((e) => + JSON.parse(e) + ) +} + export { capitalise, titleCase, xmlToJSON, delay, + removeDuplicates, };