Skip to content

Commit b755f11

Browse files
committed
ui improvement
1 parent d7c96fb commit b755f11

File tree

4 files changed

+65
-60
lines changed

4 files changed

+65
-60
lines changed

src/components/InputPanel.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,13 +308,13 @@ onBeforeUnmount(() => {
308308
309309
<template>
310310
<div class="input-container row">
311-
<q-tabs v-model="tab" class="input-language-switcher" vertical dense>
311+
<!-- <q-tabs v-model="tab" class="input-language-switcher" vertical dense>
312312
<q-tab v-if="!GlobalVariables.disableCypherInput" name="cypher" label="Cypher" />
313313
<q-tab v-if="!GlobalVariables.disableTextInput" name="text" label="Text" disable>
314314
<q-badge>Coming Soon</q-badge>
315315
</q-tab>
316-
</q-tabs>
317-
<div ref="code" class="code col q-mr-md"></div>
316+
</q-tabs> -->
317+
<div ref="code" class="code col q-mr-md q-ml-xs"></div>
318318
<div class="col-auto q-mr-md">
319319
<div class="row q-mb-sm">
320320
<q-btn flat square color="primary" icon="play_arrow" class="full-width" @click="runQuery" />

src/components/OutputPanel.vue

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const cypherQuery = ref('')
2626
const textQuery = ref('')
2727
const queryType = ref('')
2828
const tab = ref('graph')
29-
const splitter = ref(110)
3029
const loading = ref(false)
3130
const nodes = ref([])
3231
const relationships = ref([])
@@ -117,6 +116,10 @@ const handleNodeUnexpanded = ({ newNodes, newRels }) => {
117116
relationships.value = newRels
118117
}
119118
119+
const changeTab = (tabName) => {
120+
tab.value = tabName
121+
}
122+
120123
onMounted(() => {
121124
run(props.query, props.queryTypeInput)
122125
if (!props.disableResizer) {
@@ -174,37 +177,36 @@ onMounted(() => {
174177
/>
175178
<q-skeleton v-if="loading" class="output-skeleton" animation="wave" />
176179
<div v-else class="output-container">
177-
<q-splitter v-model="splitter" disable unit="px" class="output-tabs">
178-
<template v-slot:before>
179-
<q-tabs v-model="tab" dense vertical>
180-
<q-tab name="graph" label="Graph" v-if="nodes.length" />
181-
<q-tab name="table" label="Table" v-if="rows.length" />
182-
<q-tab name="explanation" label="Explanation" v-if="textQuery !== ''" />
183-
<q-tab name="error" label="Error" v-if="errorText !== ''" />
184-
</q-tabs>
185-
</template>
186-
<template v-slot:after>
187-
<q-tab-panels v-model="tab" vertical class="output-panels">
188-
<q-tab-panel name="graph" v-if="nodes.length" class="output-tab-panel">
189-
<GraphOutput
190-
:nodes="nodes"
191-
:relationships="relationships"
192-
@nodeExpanded="handleNodeExpanded"
193-
@nodeUnexpanded="handleNodeUnexpanded"
194-
/>
195-
</q-tab-panel>
196-
<q-tab-panel name="table" v-if="rows.length" class="output-tab-panel">
197-
<TableOutput :rows="rows" :columns="columns" />
198-
</q-tab-panel>
199-
<q-tab-panel name="explanation" v-if="textQuery !== ''" class="output-tab-panel">
200-
<ExplanationOutput :text="explanationText" />
201-
</q-tab-panel>
202-
<q-tab-panel name="error" v-if="errorText !== ''" class="output-tab-panel">
203-
<p>{{ errorText }}</p>
204-
</q-tab-panel>
205-
</q-tab-panels>
206-
</template>
207-
</q-splitter>
180+
<q-btn-group outline class="output-tabs q-ml-md q-pt-sm">
181+
<q-btn outline label="Graph" v-if="nodes.length" @click="changeTab('graph')" />
182+
<q-btn outline label="Table" v-if="rows.length" @click="changeTab('table')" />
183+
<q-btn
184+
outline
185+
label="Explanation"
186+
v-if="textQuery !== ''"
187+
@click="changeTab('explanation')"
188+
/>
189+
<q-btn outline label="Error" v-if="errorText !== ''" @click="changeTab('error')" />
190+
</q-btn-group>
191+
<q-tab-panels v-model="tab" vertical class="output-panels">
192+
<q-tab-panel name="graph" v-if="nodes.length" class="output-tab-panel">
193+
<GraphOutput
194+
:nodes="nodes"
195+
:relationships="relationships"
196+
@nodeExpanded="handleNodeExpanded"
197+
@nodeUnexpanded="handleNodeUnexpanded"
198+
/>
199+
</q-tab-panel>
200+
<q-tab-panel name="table" v-if="rows.length" class="output-tab-panel">
201+
<TableOutput :rows="rows" :columns="columns" />
202+
</q-tab-panel>
203+
<q-tab-panel name="explanation" v-if="textQuery !== ''" class="output-tab-panel">
204+
<ExplanationOutput :text="explanationText" />
205+
</q-tab-panel>
206+
<q-tab-panel name="error" v-if="errorText !== ''" class="output-tab-panel">
207+
<div class="text-body2 q-pt-xl">{{ errorText }}</div>
208+
</q-tab-panel>
209+
</q-tab-panels>
208210
</div>
209211
<div class="footer">
210212
<div class="row">
@@ -272,7 +274,8 @@ onMounted(() => {
272274
}
273275
.output-tabs {
274276
background-color: #ffffff;
275-
height: 100%;
277+
position: absolute;
278+
z-index: 1;
276279
}
277280
.footer {
278281
width: 100%;

src/components/output/GraphOutput.vue

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -88,19 +88,19 @@ const fetchConnectedNodes = async (nodeId) => {
8888
const nodeExpansion = async (nodeId) => {
8989
const { nodes: newNodes, relationships: newRels } = await fetchConnectedNodes(nodeId)
9090
91-
const existingNodeIds = new Set(nvl.getNodes().map(n => n.id));
92-
const existingRelIds = new Set(nvl.getRelationships().map(r => r.id));
91+
const existingNodeIds = new Set(nvl.getNodes().map((n) => n.id))
92+
const existingRelIds = new Set(nvl.getRelationships().map((r) => r.id))
9393
94-
const filteredNodes = newNodes.filter(n => !existingNodeIds.has(n.id));
95-
const filteredRels = newRels.filter(r => !existingRelIds.has(r.id));
94+
const filteredNodes = newNodes.filter((n) => !existingNodeIds.has(n.id))
95+
const filteredRels = newRels.filter((r) => !existingRelIds.has(r.id))
9696
9797
if (filteredNodes.length || filteredRels.length) {
98-
nvl.addAndUpdateElementsInGraph(filteredNodes, filteredRels);
98+
nvl.addAndUpdateElementsInGraph(filteredNodes, filteredRels)
9999
expandedNodesMap.value.set(nodeId, {
100100
nodes: filteredNodes,
101101
relationships: filteredRels
102-
});
103-
emit('nodeExpanded', { newNodes: filteredNodes, newRels: filteredRels });
102+
})
103+
emit('nodeExpanded', { newNodes: filteredNodes, newRels: filteredRels })
104104
} else {
105105
q.notify({
106106
message: 'Node is not expandable',
@@ -112,13 +112,12 @@ const nodeExpansion = async (nodeId) => {
112112
}
113113
}
114114
115-
116115
const nodeUnexpand = (nodeId) => {
117116
const expansion = expandedNodesMap.value.get(nodeId)
118117
if (expansion) {
119118
const nodeIds = expansion.nodes.map((n) => n.id)
120119
const relIds = expansion.relationships.map((r) => r.id)
121-
120+
122121
nvl.removeNodesWithIds(nodeIds)
123122
nvl.removeRelationshipsWithIds(relIds)
124123
expandedNodesMap.value.delete(nodeId)
@@ -292,22 +291,25 @@ onUnmounted(() => {
292291
<div ref="graph">
293292
<q-menu v-model="nodeRightClickMenu.clicked" context-menu>
294293
<q-list dense>
295-
<q-item
296-
clickable
297-
v-close-popup
298-
@click="() => {
299-
const nodeId = nodeRightClickMenu.node?.id;
300-
if (!nodeId) return;
301-
if (isNodeExpanded(nodeId)) {
302-
nodeUnexpand(nodeId);
303-
} else {
304-
nodeExpansion(nodeId);
294+
<q-item
295+
clickable
296+
v-close-popup
297+
@click="
298+
() => {
299+
const nodeId = nodeRightClickMenu.node?.id
300+
if (!nodeId) return
301+
if (isNodeExpanded(nodeId)) {
302+
nodeUnexpand(nodeId)
303+
} else {
304+
nodeExpansion(nodeId)
305+
}
305306
}
306-
}"
307+
"
307308
>
308-
<q-item-section>
309-
{{ isNodeExpanded(nodeRightClickMenu.node?.id) ? 'Unexpand' : 'Expand' }}
309+
<q-item-section v-if="isNodeExpanded(nodeRightClickMenu.node?.id)">
310+
Unexpand
310311
</q-item-section>
312+
<q-item-section v-else> Expand </q-item-section>
311313
</q-item>
312314
</q-list>
313315
</q-menu>

src/components/output/TableOutput.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ const exportTable = () => {
5151
</script>
5252

5353
<template>
54-
<div class="row q-mb-sm">
55-
<div class="col q-mr-md">
54+
<div class="row justify-end q-mb-sm">
55+
<div class="col-3 q-mr-md">
5656
<q-input outlined dense debounce="300" v-model="filter" placeholder="Search">
5757
<template v-slot:append>
5858
<q-icon name="search" />

0 commit comments

Comments
 (0)