Commit e753c812 authored by S Anand's avatar S Anand

BUG: fix aggregate logic in kpartite

Let's assume aggregate is sum(). Earlier, we had link = sum(source,
target). Now, we have link = sum(nodes were source & target match). This
is clearly much more useful, and more intuitive
parent fff98583
This diff is collapsed.
......@@ -37,14 +37,18 @@ _G_network.kpartite = function() {
// Aggregate values in a column, setting the [col] attr of every node and link
var aggregator = cols[col].aggregator,
accessor = cols[col].accessor
if (typeof accessor == 'function')
if (typeof accessor == 'function') {
nodes.forEach(function(node) {node[col] = aggregator(node.rows.map(function(row) { return accessor(data[row]) })) })
else if (typeof accessor == 'string')
links.forEach(function(link) {link[col] = aggregator(link.rows.map(function(row) { return accessor(data[row]) })) })
}
else if (typeof accessor == 'string') {
nodes.forEach(function(node) { node[col] = aggregator(node.rows.map(function(row) { return data[row][accessor] })) })
else
links.forEach(function(link) { link[col] = aggregator(link.rows.map(function(row) { return data[row][accessor] })) })
}
else {
nodes.forEach(function(node) { node[col] = aggregator(node.rows.map(function(row) { return data[row] })) })
links.forEach(function(link) {link[col] = aggregator([link.source[col], link.target[col]])})
links.forEach(function(link) { link[col] = aggregator(link.rows.map(function(row) { return data[row] })) })
}
}
function recompute() {
......
......@@ -1138,22 +1138,40 @@
}
function agg(col) {
var aggregator = cols[col].aggregator, accessor = cols[col].accessor;
if (typeof accessor == "function") nodes.forEach(function(node) {
node[col] = aggregator(node.rows.map(function(row) {
return accessor(data[row]);
}));
}); else if (typeof accessor == "string") nodes.forEach(function(node) {
node[col] = aggregator(node.rows.map(function(row) {
return data[row][accessor];
}));
}); else nodes.forEach(function(node) {
node[col] = aggregator(node.rows.map(function(row) {
return data[row];
}));
});
links.forEach(function(link) {
link[col] = aggregator([ link.source[col], link.target[col] ]);
});
if (typeof accessor == "function") {
nodes.forEach(function(node) {
node[col] = aggregator(node.rows.map(function(row) {
return accessor(data[row]);
}));
});
links.forEach(function(link) {
link[col] = aggregator(link.rows.map(function(row) {
return accessor(data[row]);
}));
});
} else if (typeof accessor == "string") {
nodes.forEach(function(node) {
node[col] = aggregator(node.rows.map(function(row) {
return data[row][accessor];
}));
});
links.forEach(function(link) {
link[col] = aggregator(link.rows.map(function(row) {
return data[row][accessor];
}));
});
} else {
nodes.forEach(function(node) {
node[col] = aggregator(node.rows.map(function(row) {
return data[row];
}));
});
links.forEach(function(link) {
link[col] = aggregator(link.rows.map(function(row) {
return data[row];
}));
});
}
}
function recompute() {
var i, row, j, lj, k, lk, key, key1, key2, value, vals, id, row_nodes, col_nodes, indices1, indices2;
......
Source libraries
----------------
When you `npm install -g mocha` the following files are installed at
`C:\Users\...\AppData\Roaming\npm\...`. Copy these files from there:
- `mocha.js`
- `mocha.css`
- `chai.js`
Also copy [jQuery](http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js) (1.8.2 or above)
- `jquery.min.js`
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
@charset "utf-8";
body {
margin:0;
}
#mocha {
font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
margin: 60px 50px;
}
#mocha ul, #mocha li {
margin: 0;
padding: 0;
}
#mocha ul {
list-style: none;
}
#mocha h1, #mocha h2 {
margin: 0;
}
#mocha h1 {
margin-top: 15px;
font-size: 1em;
font-weight: 200;
}
#mocha h1 a {
text-decoration: none;
color: inherit;
}
#mocha h1 a:hover {
text-decoration: underline;
}
#mocha .suite .suite h1 {
margin-top: 0;
font-size: .8em;
}
#mocha .hidden {
display: none;
}
#mocha h2 {
font-size: 12px;
font-weight: normal;
cursor: pointer;
}
#mocha .suite {
margin-left: 15px;
}
#mocha .test {
margin-left: 15px;
overflow: hidden;
}
#mocha .test.pending:hover h2::after {
content: '(pending)';
font-family: arial, sans-serif;
}
#mocha .test.pass.medium .duration {
background: #C09853;
}
#mocha .test.pass.slow .duration {
background: #B94A48;
}
#mocha .test.pass::before {
content: '✓';
font-size: 12px;
display: block;
float: left;
margin-right: 5px;
color: #00d6b2;
}
#mocha .test.pass .duration {
font-size: 9px;
margin-left: 5px;
padding: 2px 5px;
color: white;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
}
#mocha .test.pass.fast .duration {
display: none;
}
#mocha .test.pending {
color: #0b97c4;
}
#mocha .test.pending::before {
content: '◦';
color: #0b97c4;
}
#mocha .test.fail {
color: #c00;
}
#mocha .test.fail pre {
color: black;
}
#mocha .test.fail::before {
content: '✖';
font-size: 12px;
display: block;
float: left;
margin-right: 5px;
color: #c00;
}
#mocha .test pre.error {
color: #c00;
max-height: 300px;
overflow: auto;
}
#mocha .test pre {
display: block;
float: left;
clear: left;
font: 12px/1.5 monaco, monospace;
margin: 5px;
padding: 15px;
border: 1px solid #eee;
border-bottom-color: #ddd;
-webkit-border-radius: 3px;
-webkit-box-shadow: 0 1px 3px #eee;
-moz-border-radius: 3px;
-moz-box-shadow: 0 1px 3px #eee;
border-radius: 3px;
}
#mocha .test h2 {
position: relative;
}
#mocha .test a.replay {
position: absolute;
top: 3px;
right: 0;
text-decoration: none;
vertical-align: middle;
display: block;
width: 15px;
height: 15px;
line-height: 15px;
text-align: center;
background: #eee;
font-size: 15px;
-moz-border-radius: 15px;
border-radius: 15px;
-webkit-transition: opacity 200ms;
-moz-transition: opacity 200ms;
transition: opacity 200ms;
opacity: 0.3;
color: #888;
}
#mocha .test:hover a.replay {
opacity: 1;
}
#mocha-report.pass .test.fail {
display: none;
}
#mocha-report.fail .test.pass {
display: none;
}
#mocha-report.pending .test.pass,
#mocha-report.pending .test.fail {
display: none;
}
#mocha-report.pending .test.pass.pending {
display: block;
}
#mocha-error {
color: #c00;
font-size: 1.5em;
font-weight: 100;
letter-spacing: 1px;
}
#mocha-stats {
position: fixed;
top: 15px;
right: 10px;
font-size: 12px;
margin: 0;
color: #888;
z-index: 1;
}
#mocha-stats .progress {
float: right;
padding-top: 0;
}
#mocha-stats em {
color: black;
}
#mocha-stats a {
text-decoration: none;
color: inherit;
}
#mocha-stats a:hover {
border-bottom: 1px solid #eee;
}
#mocha-stats li {
display: inline-block;
margin: 0 5px;
list-style: none;
padding-top: 11px;
}
#mocha-stats canvas {
width: 40px;
height: 40px;
}
#mocha code .comment { color: #ddd }
#mocha code .init { color: #2F6FAD }
#mocha code .string { color: #5890AD }
#mocha code .keyword { color: #8A6343 }
#mocha code .number { color: #2F6FAD }
@media screen and (max-device-width: 480px) {
#mocha {
margin: 60px 0px;
}
#mocha #stats {
position: absolute;
}
}
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment