aboutsummaryrefslogtreecommitdiff
path: root/src/components/TileTree.vue
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/TileTree.vue')
-rw-r--r--src/components/TileTree.vue47
1 files changed, 26 insertions, 21 deletions
diff --git a/src/components/TileTree.vue b/src/components/TileTree.vue
index 93de090..e8c0013 100644
--- a/src/components/TileTree.vue
+++ b/src/components/TileTree.vue
@@ -1,8 +1,16 @@
-<script>
+<script lang="ts">
+import {defineComponent} from 'vue';
import Tile from './Tile.vue';
+import {staticSqrLayout, staticRectLayout, sweepToSideLayout, layoutInfoHooks} from '../layout';
+ //for importing f1.ts:
+ //using 'import f1.ts' makes vue-tsc complain, and 'import f1.js' makes vite complain
+ //using 'import f1' might cause problems with build systems other than vite
+import type {TolNode, TreeNode, LayoutNode} from '../layout';
+let LAYOUT_FUNC = sweepToSideLayout;
+
import tol from '../tol.json';
-function preprocessTol(tree){
+function preprocessTol(tree: any): void {
if (!tree.children){
tree.children = [];
} else {
@@ -10,33 +18,29 @@ function preprocessTol(tree){
}
}
preprocessTol(tol);
-//tol-node format: {name: string1, children: [node1, ...]}
-import {staticSqrLayout, staticRectLayout, sweepToSideLayout, layoutInfoHooks} from '../layout.js';
-let LAYOUT_FUNC = sweepToSideLayout;
-
-export default {
+export default defineComponent({
data(){
return {
- tree: this.initTree(tol, 1),
+ tree: this.initTree(tol as TolNode, 1),
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
resizeThrottled: false,
}
},
methods: {
- initTree(tol, lvl){
+ initTree(tol: TolNode, lvl: number): TreeNode {
let tree = {
tolNode:tol, children:[],
x:0, y:0, w:0, h:0, headerSz:0,
- sideArea:null,
+ sideArea:null, tileCount:0,
};
- function initTreeRec(tree, lvl){
+ function initTreeRec(tree: TreeNode, lvl: number){
if (lvl > 0)
- tree.children = tree.tolNode.children.map(tNode => initTreeRec({
+ tree.children = tree.tolNode.children.map((tNode: TolNode) => initTreeRec({
tolNode: tNode, children: [],
x:0, y:0, w:0, h:0, headerSz:0,
- sideArea:null,
+ sideArea:null, tileCount:0,
}, lvl-1));
return tree;
}
@@ -54,7 +58,7 @@ export default {
setTimeout(() => {this.resizeThrottled = false;}, 100);
}
},
- onInnerTileClicked(nodeList){
+ onInnerTileClicked(nodeList: TreeNode[]){
//nodeList holds an array of tree-objects, from the clicked-on-tile's tree-object upward
let numNewTiles = nodeList[0].tolNode.children.length;
if (numNewTiles == 0){
@@ -62,16 +66,17 @@ export default {
return;
}
//add children
- nodeList[0].children = nodeList[0].tolNode.children.map(tNode => ({
+ nodeList[0].children = nodeList[0].tolNode.children.map((tNode: TolNode) => ({
tolNode: tNode, children: [],
x:0, y:0, w:0, h:0, headerSz:0,
+ sideArea: null, tileCount:0,
}));
layoutInfoHooks.updateLayoutInfoOnExpand(nodeList);
//try to layout tree
if (!this.tryLayout())
nodeList[0].children = [];
},
- onInnerHeaderClicked(nodeList){ //nodeList is array of tree-objects, from clicked-on-tile's tree-object upward
+ onInnerHeaderClicked(nodeList: TreeNode[]){ //nodeList is array of tree-objects, from clicked-on-tile's tree-object upward
let children = nodeList[0].children;
nodeList[0].children = [];
layoutInfoHooks.updateLayoutInfoOnCollapse(nodeList);
@@ -88,7 +93,7 @@ export default {
return true;
}
},
- applyLayout(layout, tree){
+ applyLayout(layout: LayoutNode, tree: TreeNode){
tree.x = layout.x;
tree.y = layout.y;
tree.w = layout.w;
@@ -96,13 +101,13 @@ export default {
tree.headerSz = layout.headerSz;
layout.children.forEach((n,i) => this.applyLayout(n, tree.children[i]));
//handle case where leaf nodes placed in leftover space from parent-sweep
- if (layout.sideArea){
+ if (layout.sideArea != null){
//add parent area coords
tree.sideArea = layout.sideArea;
//move leaf node children to parent area
tree.children.filter(n => n.children.length == 0).map(n => {
- n.x += layout.sideArea.x;
- n.y += layout.sideArea.y;
+ n.x += layout.sideArea!.x;
+ n.y += layout.sideArea!.y;
});
} else {
tree.sideArea = null;
@@ -119,7 +124,7 @@ export default {
components: {
Tile
}
-}
+})
</script>
<template>