|
@@ -84,44 +84,70 @@ export default {
|
|
onPreviewNodeClick (ids) {
|
|
onPreviewNodeClick (ids) {
|
|
this.$root.$emit('bv::hide::popover', 'preview-node-' + this.previewNode.id)
|
|
this.$root.$emit('bv::hide::popover', 'preview-node-' + this.previewNode.id)
|
|
this.$emit('open-node', ids)
|
|
this.$emit('open-node', ids)
|
|
|
|
+ this.previewNode = null
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
created () {
|
|
created () {
|
|
|
|
+ // JS-BP
|
|
|
|
+ const radius = window.innerWidth < 769 ? 700 / 1.5 : 700
|
|
this.$store.dispatch('INIT_LIBRARY_MAP').then(nodes => {
|
|
this.$store.dispatch('INIT_LIBRARY_MAP').then(nodes => {
|
|
this.nodes = nodes.map((node, i) => {
|
|
this.nodes = nodes.map((node, i) => {
|
|
return { x: i, rotate: randomUniform(-25, 25)(), data: node }
|
|
return { x: i, rotate: randomUniform(-25, 25)(), data: node }
|
|
})
|
|
})
|
|
this.simulation.nodes(this.nodes)
|
|
this.simulation.nodes(this.nodes)
|
|
.force('attract', forceManyBody().strength(10))
|
|
.force('attract', forceManyBody().strength(10))
|
|
- .force('collision', forceCollide().radius(650 / 2))
|
|
|
|
|
|
+ .force('collision', forceCollide().radius(radius / 2))
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
-<style lang="scss" scoped>
|
|
|
|
-foreignObject {
|
|
|
|
- width: $node-card-width;
|
|
|
|
- height: $node-card-height;
|
|
|
|
- x: var(--x);
|
|
|
|
- y: var(--y);
|
|
|
|
- transform-origin: var(--x) var(--y);
|
|
|
|
- transform: rotate(var(--r)) translate(-#{$node-card-width / 2}, -#{$node-card-height / 2});
|
|
|
|
- overflow: visible;
|
|
|
|
|
|
+<style lang="scss">
|
|
|
|
+#library-map {
|
|
|
|
+ foreignObject {
|
|
|
|
+ width: $node-card-width-sm;
|
|
|
|
+ height: $node-card-height-sm;
|
|
|
|
+ x: var(--x);
|
|
|
|
+ y: var(--y);
|
|
|
|
+ transform-origin: var(--x) var(--y);
|
|
|
|
+ transform: rotate(var(--r)) translate(-#{$node-card-width / 2}, -#{$node-card-height / 2});
|
|
|
|
+ overflow: visible;
|
|
|
|
+
|
|
|
|
+ @include media-breakpoint-up($size-bp) {
|
|
|
|
+ width: $node-card-width;
|
|
|
|
+ height: $node-card-height;
|
|
|
|
+ }
|
|
|
|
|
|
- .node-view {
|
|
|
|
- cursor: pointer;
|
|
|
|
|
|
+ .node-view {
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
|
|
-.node-view.hidden {
|
|
|
|
- border: $line;
|
|
|
|
- border-style: dashed;
|
|
|
|
- background-color: transparent;
|
|
|
|
|
|
+ .node-view {
|
|
|
|
+ width: $node-card-width-sm;
|
|
|
|
+
|
|
|
|
+ @include media-breakpoint-up($size-bp) {
|
|
|
|
+ width: $node-card-width;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ &-wrapper {
|
|
|
|
+ height: $node-card-height-sm;
|
|
|
|
+
|
|
|
|
+ @include media-breakpoint-up($size-bp) {
|
|
|
|
+ height: $node-card-height;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ &.hidden {
|
|
|
|
+ border: $line;
|
|
|
|
+ border-style: dashed;
|
|
|
|
+ background-color: transparent;
|
|
|
|
|
|
- ::v-deep .node-view-wrapper {
|
|
|
|
- opacity: 0;
|
|
|
|
|
|
+ .node-view-wrapper {
|
|
|
|
+ opacity: 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|