<!DOCTYPE html>
<html ng-app="githubViewer">
<head>
<script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<script data-require="lodash.js@*" data-semver="2.4.1" src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="MainController">
<p>{{message1}}</p>
<p>{{message2}}</p>
<p>{{message3|json}}</p>
<br />
</body>
</html>
// Code goes here
(function() {
var app = angular.module("githubViewer", []);
var MainController = function($scope) {
var items=[
{currency:"USD", trader:"TRAD1", type:"FRA"},
{currency:"USD", trader:"TRAD1", type:"FX"},
{currency:"GBP", trader:"TRAD2", type:"FRA"},
{currency:"USD", trader:"TRAD1", type:"DL"},
{currency:"GBP", trader:"TRAD1", type:"FRA"}
];
//console.log(data);
var groups = ["type","currency","trader"]; //_.keys(items[0]);
$scope.message1 = groups;
$scope.message2 = genJSON(items,groups);
function genJSON(csvData, groups) {
var genGroups = function (data, isLast) {
return _.map(data, function(element, index) {
if(!isLast)
return { name : index, selected : false, children : element };
else
return { name : index };
});
};
var nest = function (node, curIndex) {
var isLastNode = false;
if (curIndex === 0) {
node.children = genGroups(_.groupBy(csvData, groups[0]), isLastNode);
_.each(node.children, function (child) {
nest(child, curIndex + 1);
});
}
else {
if (curIndex == groups.length-1) isLastNode = true;
if (curIndex < groups.length) {
node.children = genGroups(
_.groupBy(node.children, groups[curIndex]), isLastNode);
_.each(node.children, function (child) {
nest(child, curIndex + 1);
});
}
}
return node;
};
//var table = {};
return nest({}, 0).children;
//return node2.children;
}
};
app.controller("MainController", MainController);
}());
/* Styles go here */