From 4cc6ec86ea8dfeeb11c7e206170375e513c646c8 Mon Sep 17 00:00:00 2001 From: lana-k Date: Mon, 6 Apr 2026 20:31:51 +0200 Subject: [PATCH] #136 save seedLayout settings --- .../Graph/ForceAtlasSeedLayoutSettings.vue | 30 +++++++++++++++---- src/components/Graph/GraphEditor.vue | 1 - src/lib/storedInquiries/_migrations.js | 1 - tests/components/Graph/GraphEditor.spec.js | 4 +-- tests/lib/graphHelper.spec.js | 8 +++-- tests/lib/storedInquiries/_migrations.spec.js | 2 -- .../storedInquiries/storedInquiries.spec.js | 3 -- 7 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/components/Graph/ForceAtlasSeedLayoutSettings.vue b/src/components/Graph/ForceAtlasSeedLayoutSettings.vue index ebe0911..16e41c5 100644 --- a/src/components/Graph/ForceAtlasSeedLayoutSettings.vue +++ b/src/components/Graph/ForceAtlasSeedLayoutSettings.vue @@ -5,7 +5,7 @@ :value="modelValue.initialAlgorithm" :clearable="false" className="test_fa2_initial_layout_algorithm_select" - @change="update('initialAlgorithm', $event)" + @change="updateInitialAlgorithm" /> @@ -51,14 +51,34 @@ export default { layoutSettingsComponentMap: markRaw({ random: RandomLayoutSettings, circlepack: CirclePackLayoutSettings - }) + }), + defaultSeedLayoutSettings: { + circular: { initialAlgorithm: 'circular' }, + random: { initialAlgorithm: 'random', seedValue: 1 }, + circlepack: { + initialAlgorithm: 'circlepack', + hierarchyAttributes: [], + seedValue: 1 + } + } } }, methods: { - update(attributeName, value) { + updateInitialAlgorithm(newAlgorithm) { + const newSettings = { + ...this.modelValue + } + + const prevAlgorithmSettings = + this.defaultSeedLayoutSettings[this.modelValue.initialAlgorithm] + Object.keys(prevAlgorithmSettings).forEach(key => { + delete newSettings[key] + prevAlgorithmSettings[key] = this.modelValue[key] + }) + this.$emit('update:modelValue', { - ...this.modelValue, - [attributeName]: value + ...newSettings, + ...this.defaultSeedLayoutSettings[newAlgorithm] }) } } diff --git a/src/components/Graph/GraphEditor.vue b/src/components/Graph/GraphEditor.vue index 3c8aab3..f527325 100644 --- a/src/components/Graph/GraphEditor.vue +++ b/src/components/Graph/GraphEditor.vue @@ -791,7 +791,6 @@ export default { const sensibleSettings = forceAtlas2.default.inferSettings(this.graph) this.settings.layout.options = { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 50, adjustSizes: false, barnesHutOptimize: false, diff --git a/src/lib/storedInquiries/_migrations.js b/src/lib/storedInquiries/_migrations.js index 0ab6a3f..be788f2 100644 --- a/src/lib/storedInquiries/_migrations.js +++ b/src/lib/storedInquiries/_migrations.js @@ -24,7 +24,6 @@ export default { inquiry.viewOptions.layout.type === 'forceAtlas2' ) { inquiry.viewOptions.layout.options.initialAlgorithm = 'circular' - inquiry.viewOptions.layout.options.seedValue = 1 } }) } diff --git a/tests/components/Graph/GraphEditor.spec.js b/tests/components/Graph/GraphEditor.spec.js index f24ef42..1a288e4 100644 --- a/tests/components/Graph/GraphEditor.spec.js +++ b/tests/components/Graph/GraphEditor.spec.js @@ -1350,7 +1350,6 @@ describe('GraphEditor', () => { type: 'forceAtlas2', options: { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 55, gravity: 1.5, scalingRatio: 1.2, @@ -1543,7 +1542,6 @@ describe('GraphEditor', () => { expect(startSpy.callCount).to.equal(2) expect(wrapper.vm.settings.layout.options).to.eql({ initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 55, gravity: 1.5, scalingRatio: 1.2, @@ -1590,7 +1588,6 @@ describe('GraphEditor', () => { type: 'forceAtlas2', options: { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 55, gravity: 1.5, scalingRatio: 1.2, @@ -1949,6 +1946,7 @@ describe('GraphEditor', () => { layout: { type: 'forceAtlas2', options: { + initialAlgorithm: 'circular', initialIterationsAmount: 50, gravity: 1.5, scalingRatio: 1.2, diff --git a/tests/lib/graphHelper.spec.js b/tests/lib/graphHelper.spec.js index bf5ed2d..e2a7b1c 100644 --- a/tests/lib/graphHelper.spec.js +++ b/tests/lib/graphHelper.spec.js @@ -2248,13 +2248,17 @@ describe('graphHelper.js', () => { { key: '1', attributes: { - data: { type: 0, node_id: 1, label: 'cat' } + data: { type: 0, node_id: 1, label: 'cat' }, + x: undefined, + y: undefined } }, { key: '2', attributes: { - data: { type: 0, node_id: 2, label: 'dog' } + data: { type: 0, node_id: 2, label: 'dog' }, + x: undefined, + y: undefined } } ]) diff --git a/tests/lib/storedInquiries/_migrations.spec.js b/tests/lib/storedInquiries/_migrations.spec.js index 507bfe0..bc27484 100644 --- a/tests/lib/storedInquiries/_migrations.spec.js +++ b/tests/lib/storedInquiries/_migrations.spec.js @@ -149,7 +149,6 @@ describe('_migrations.js', () => { type: 'forceAtlas2', options: { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 50, adjustSizes: false, barnesHutOptimize: false, @@ -280,7 +279,6 @@ describe('_migrations.js', () => { type: 'forceAtlas2', options: { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 50, adjustSizes: false, barnesHutOptimize: false, diff --git a/tests/lib/storedInquiries/storedInquiries.spec.js b/tests/lib/storedInquiries/storedInquiries.spec.js index 97ffbb1..83d23e4 100644 --- a/tests/lib/storedInquiries/storedInquiries.spec.js +++ b/tests/lib/storedInquiries/storedInquiries.spec.js @@ -164,7 +164,6 @@ describe('storedInquiries.js', () => { type: 'forceAtlas2', options: { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 50, adjustSizes: false, barnesHutOptimize: false, @@ -442,7 +441,6 @@ describe('storedInquiries.js', () => { type: 'forceAtlas2', options: { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 50, adjustSizes: false, barnesHutOptimize: false, @@ -715,7 +713,6 @@ describe('storedInquiries.js', () => { type: 'forceAtlas2', options: { initialAlgorithm: 'circular', - seedValue: 1, initialIterationsAmount: 50, adjustSizes: false, barnesHutOptimize: false,