This commit is contained in:
unknown 2019-09-07 12:07:48 -04:00
commit 9e2012192d
6 changed files with 109 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.cache/*
dist/*
node_modules/*

9
index.html Normal file
View File

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<script src="./index.js"></script>
</head>
<body>
</body>
</html>

16
index.js Normal file
View 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
View 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
View 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
View 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);
});
}
}