setup
This commit is contained in:
commit
9e2012192d
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.cache/*
|
||||||
|
dist/*
|
||||||
|
node_modules/*
|
9
index.html
Normal file
9
index.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="./index.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
16
index.js
Normal file
16
index.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import {Table} from './table.ts';
|
||||||
|
|
||||||
|
var rows = [
|
||||||
|
["a","1"],
|
||||||
|
["b","2"],
|
||||||
|
["a","3"],
|
||||||
|
["b","1"],
|
||||||
|
["a","2"],
|
||||||
|
["b","3"],
|
||||||
|
]
|
||||||
|
|
||||||
|
var t;
|
||||||
|
t = new Table("Root", rows);
|
||||||
|
t.PivotTree([0, 1]);
|
||||||
|
|
||||||
|
console.log(t);
|
14
package-lock.json
generated
Normal file
14
package-lock.json
generated
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "dag-editor",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"requires": true,
|
||||||
|
"dependencies": {
|
||||||
|
"typescript": {
|
||||||
|
"version": "3.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.2.tgz",
|
||||||
|
"integrity": "sha512-lmQ4L+J6mnu3xweP8+rOrUwzmN+MRAj7TgtJtDaXE5PMyX2kCrklhg3rvOsOIfNeAWMQWO2F1GPc1kMD2vLAfw==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
14
package.json
Normal file
14
package.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "dag-editor",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"typescript": "^3.6.2"
|
||||||
|
}
|
||||||
|
}
|
53
table.ts
Normal file
53
table.ts
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
export class Table
|
||||||
|
{
|
||||||
|
Name: string;
|
||||||
|
Rows: Array<Array<string>>;
|
||||||
|
Parent?: Table;
|
||||||
|
Children: Array<Table>;
|
||||||
|
|
||||||
|
constructor(inName: string, inRows: Array<Array<string>>)
|
||||||
|
{
|
||||||
|
this.Name = inName;
|
||||||
|
this.Rows = inRows;
|
||||||
|
this.Parent = null;
|
||||||
|
this.Children = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
Pivot(inColumn: number)
|
||||||
|
{
|
||||||
|
var cell: string;
|
||||||
|
var child: Table;
|
||||||
|
var context: Table;
|
||||||
|
|
||||||
|
context = this;
|
||||||
|
this.Rows.forEach((inRow)=>
|
||||||
|
{
|
||||||
|
cell = inRow[inColumn];
|
||||||
|
child = this.Children.find( inChild => inChild.Name == cell );
|
||||||
|
if(!child)
|
||||||
|
{
|
||||||
|
child = new Table(cell, []);
|
||||||
|
child.Parent = context;
|
||||||
|
context.Children.push(child);
|
||||||
|
}
|
||||||
|
child.Rows.push(inRow);
|
||||||
|
});
|
||||||
|
this.Rows = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
PivotTree(inColumns: Array<number>)
|
||||||
|
{
|
||||||
|
var columns: Array<number>;
|
||||||
|
|
||||||
|
if(inColumns.length == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
columns = [...inColumns];
|
||||||
|
this.Pivot(columns.shift());
|
||||||
|
this.Children.forEach( (inChild) =>
|
||||||
|
{
|
||||||
|
inChild.PivotTree(columns);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user