Skip to content

Instantly share code, notes, and snippets.

@laurenancona
Last active August 29, 2015 14:19
Show Gist options
  • Save laurenancona/0e4cc79c16b07243cbc8 to your computer and use it in GitHub Desktop.
Save laurenancona/0e4cc79c16b07243cbc8 to your computer and use it in GitHub Desktop.
sunbursting
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Page Path sunburst</title>
<script src="http://d3js.org/d3.v3.min.js"></script>
<link rel="stylesheet" type="text/css"
href="https://fonts.googleapis.com/css?family=Open+Sans:400,600">
<link rel="stylesheet" type="text/css" href="sequences.css"/>
</head>
<body>
<div id="main">
<div id="sequence"></div>
<div id="chart">
<div id="explanation" style="visibility: hidden;">
<span id="percentage"></span><br/>
of visits to this path
</div>
</div>
</div>
<div id="sidebar">
<input type="checkbox" id="togglelegend"> Legend<br/>
<div id="legend" style="visibility: hidden;"></div>
</div>
<script type="text/javascript" src="sequences.js"></script>
<script type="text/javascript">
// Hack to make this example display correctly in an iframe on bl.ocks.org
d3.select(self.frameElement).style("height", "700px");
</script>
</body>
</html>
body {
font-family: 'Open Sans', sans-serif;
font-size: 12px;
font-weight: 400;
background-color: #fff;
width: 960px;
height: 700px;
margin-top: 10px;
}
#main {
float: left;
width: 750px;
}
#sidebar {
float: right;
width: 100px;
}
#sequence {
width: 700px;
height: 70px;
fill: #666;
}
#legend {
padding: 10px 0 0 3px;
fill: #666;
}
#sequence text, #legend text {
font-weight: 600;
fill: #fff;
}
#chart {
position: relative;
}
#chart path {
stroke: #fff;
fill: #666;
}
#explanation {
position: absolute;
top: 260px;
left: 305px;
width: 140px;
text-align: center;
color: #666;
z-index: -1;
}
#percentage {
font-size: 2.5em;
}
body {
font-family: 'Open Sans', sans-serif;
font-size: 12px;
font-weight: 400;
background-color: #fff;
width: 960px;
height: 700px;
margin-top: 10px;
}
#main {
float: left;
width: 750px;
}
#sidebar {
float: right;
width: 100px;
}
#sequence {
width: 700px;
height: 70px;
fill: #666;
}
#legend {
padding: 10px 0 0 3px;
fill: #666;
}
#sequence text, #legend text {
font-weight: 600;
fill: #fff;
}
#chart {
position: relative;
}
#chart path {
stroke: #fff;
fill: #666;
}
#explanation {
position: absolute;
top: 260px;
left: 305px;
width: 140px;
text-align: center;
color: #666;
z-index: -1;
}
#percentage {
font-size: 2.5em;
}
// Dimensions of sunburst.
var width = 750;
var height = 600;
var radius = Math.min(width, height) / 2;
// Breadcrumb dimensions: width, height, spacing, width of tip/tail.
var b = {
w: 125, h: 30, s: 3, t: 10
};
// Mapping of step names to colors.
var colors = {
"revenue": "#E4002B",
"pages": "#027EA4",
"default": "#B5BD00",
"paymentcenter": "#FF530D",
"personnel": "#1B3B56",
"prisons": "#3497B6",
"not set": "#bbbbbb",
"other": "#666"
};
// Total size of all segments; we set this later, after loading the data.
var totalSize = 0;
var vis = d3.select("#chart").append("svg:svg")
.attr("width", width)
.attr("height", height)
.append("svg:g")
.attr("id", "container")
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");
var partition = d3.layout.partition()
.size([2 * Math.PI, radius * radius])
.value(function(d) { return d.size; });
var arc = d3.svg.arc()
.startAngle(function(d) { return d.x; })
.endAngle(function(d) { return d.x + d.dx; })
.innerRadius(function(d) { return Math.sqrt(d.y); })
.outerRadius(function(d) { return Math.sqrt(d.y + d.dy); });
// Use d3.text and d3.csv.parseRows so that we do not need to have a header
// row, and can receive the csv as an array of arrays.
d3.text("visit-sequences.csv", function(text) {
var csv = d3.csv.parseRows(text);
var json = buildHierarchy(csv);
createVisualization(json);
console.log(csv);
});
// Main function to draw and set up the visualization, once we have the data.
function createVisualization(json) {
// Basic setup of page elements.
initializeBreadcrumbTrail();
drawLegend();
d3.select("#togglelegend").on("click", toggleLegend);
// Bounding circle underneath the sunburst, to make it easier to detect
// when the mouse leaves the parent g.
vis.append("svg:circle")
.attr("r", radius)
.style("opacity", 0);
// For efficiency, filter nodes to keep only those large enough to see.
var nodes = partition.nodes(json)
.filter(function(d) {
return (d.dx > 0.005); // 0.005 radians = 0.29 degrees
});
var path = vis.data([json]).selectAll("path")
.data(nodes)
.enter().append("svg:path")
.attr("display", function(d) { return d.depth ? null : "none"; })
.attr("d", arc)
.attr("fill-rule", "evenodd")
.style("fill", function(d) { return colors[d.name]; })
.style("opacity", 1)
.on("mouseover", mouseover);
// Add the mouseleave handler to the bounding circle.
d3.select("#container").on("mouseleave", mouseleave);
// Get total size of the tree = value of root node from partition.
totalSize = path.node().__data__.value;
};
// Fade all but the current sequence, and show it in the breadcrumb trail.
function mouseover(d) {
var percentage = (100 * d.value / totalSize).toPrecision(3);
var percentageString = percentage + "%";
if (percentage < 0.1) {
percentageString = "< 0.1%";
}
d3.select("#percentage")
.text(percentageString);
d3.select("#explanation")
.style("visibility", "");
var sequenceArray = getAncestors(d);
updateBreadcrumbs(sequenceArray, percentageString);
// Fade all the segments.
d3.selectAll("path")
.style("opacity", 0.3);
// Then highlight only those that are an ancestor of the current segment.
vis.selectAll("path")
.filter(function(node) {
return (sequenceArray.indexOf(node) >= 0);
})
.style("opacity", 1);
}
// Restore everything to full opacity when moving off the visualization.
function mouseleave(d) {
// Hide the breadcrumb trail
d3.select("#trail")
.style("visibility", "hidden");
// Deactivate all segments during transition.
d3.selectAll("path").on("mouseover", null);
// Transition each segment to full opacity and then reactivate it.
d3.selectAll("path")
.transition()
.duration(1000)
.style("opacity", 1)
.each("end", function() {
d3.select(this).on("mouseover", mouseover);
});
d3.select("#explanation")
.style("visibility", "hidden");
}
// Given a node in a partition layout, return an array of all of its ancestor
// nodes, highest first, but excluding the root.
function getAncestors(node) {
var path = [];
var current = node;
while (current.parent) {
path.unshift(current);
current = current.parent;
}
return path;
}
function initializeBreadcrumbTrail() {
// Add the svg area.
var trail = d3.select("#sequence").append("svg:svg")
.attr("width", width)
.attr("height", 50)
.attr("id", "trail");
// Add the label at the end, for the percentage.
trail.append("svg:text")
.attr("id", "endlabel")
.style("fill", "#666");
}
// Generate a string that describes the points of a breadcrumb polygon.
function breadcrumbPoints(d, i) {
var points = [];
points.push("0,0");
points.push(b.w + ",0");
points.push(b.w + b.t + "," + (b.h / 2));
points.push(b.w + "," + b.h);
points.push("0," + b.h);
if (i > 0) { // Leftmost breadcrumb; don't include 6th vertex.
points.push(b.t + "," + (b.h / 2));
}
return points.join(" ");
}
// Update the breadcrumb trail to show the current sequence and percentage.
function updateBreadcrumbs(nodeArray, percentageString) {
// Data join; key function combines name and depth (= position in sequence).
var g = d3.select("#trail")
.selectAll("g")
.data(nodeArray, function(d) { return d.name + d.depth; });
// Add breadcrumb and label for entering nodes.
var entering = g.enter().append("svg:g");
entering.append("svg:polygon")
.attr("points", breadcrumbPoints)
.style("fill", function(d) { return colors[d.name]; });
entering.append("svg:text")
.attr("x", (b.w + b.t) / 2)
.attr("y", b.h / 2)
.attr("dy", "0.35em")
.attr("text-anchor", "middle")
.text(function(d) { return d.name; });
// Set position for entering and updating nodes.
g.attr("transform", function(d, i) {
return "translate(" + i * (b.w + b.s) + ", 0)";
});
// Remove exiting nodes.
g.exit().remove();
// Now move and update the percentage at the end.
d3.select("#trail").select("#endlabel")
.attr("x", (nodeArray.length + 0.5) * (b.w + b.s))
.attr("y", b.h / 2)
.attr("dy", "0.35em")
.attr("text-anchor", "middle")
.text(percentageString);
// Make the breadcrumb trail visible, if it's hidden.
d3.select("#trail")
.style("visibility", "");
}
function drawLegend() {
// Dimensions of legend item: width, height, spacing, radius of rounded rect.
var li = {
w: 125, h: 30, s: 3, r: 3
};
var legend = d3.select("#legend").append("svg:svg")
.attr("width", li.w)
.attr("height", d3.keys(colors).length * (li.h + li.s));
var g = legend.selectAll("g")
.data(d3.entries(colors))
.enter().append("svg:g")
.attr("transform", function(d, i) {
return "translate(0," + i * (li.h + li.s) + ")";
});
g.append("svg:rect")
.attr("rx", li.r)
.attr("ry", li.r)
.attr("width", li.w)
.attr("height", li.h)
.style("fill", function(d) { return d.value; });
g.append("svg:text")
.attr("x", li.w / 2)
.attr("y", li.h / 2)
.attr("dy", "0.35em")
.attr("text-anchor", "middle")
.text(function(d) { return d.key; });
}
function toggleLegend() {
var legend = d3.select("#legend");
if (legend.style("visibility") == "hidden") {
legend.style("visibility", "");
} else {
legend.style("visibility", "hidden");
}
}
// Take a 2-column CSV and transform it into a hierarchical structure suitable
// for a partition layout. The first column is a sequence of step names, from
// root to leaf, separated by hyphens. The second column is a count of how
// often that sequence occurred.
function buildHierarchy(csv) {
var root = {"name": "root", "children": []};
for (var i = 0; i < csv.length; i++) {
var sequence = csv[i][0];
var size = +csv[i][1];
if (isNaN(size)) { // e.g. if this is a header row
continue;
}
var parts = sequence.split("-");
var currentNode = root;
for (var j = 0; j < parts.length; j++) {
var children = currentNode["children"];
var nodeName = parts[j];
var childNode;
if (j + 1 < parts.length) {
// Not yet at the end of the sequence; move down the tree.
var foundChild = false;
for (var k = 0; k < children.length; k++) {
if (children[k]["name"] == nodeName) {
childNode = children[k];
foundChild = true;
break;
}
}
// If we don't already have a child node for this branch, create it.
if (!foundChild) {
childNode = {"name": nodeName, "children": []};
children.push(childNode);
}
currentNode = childNode;
} else {
// Reached the end of the sequence; create a leaf node.
childNode = {"name": nodeName, "size": size};
children.push(childNode);
}
}
}
return root;
};
revenue-revenue-revenue 129869
prisons-prisons-prisons 14419
default-not set-default 13929
pages-not set-pages 13321
pages-pages-pages 11115
default-default-default 9575
pages-revenue-revenue 8773
pages-revenue-revenue 8758
paymentcenter-paymentcenter-paymentcenter 7118
property-property-property 6181
personnel-personnel-personnel 5925
personnel-personnel-personnel 5644
default-revenue-revenue 5586
paymentcenter-paymentcenter-paymentcenter 5396
pages-paymentcenter-paymentcenter 5199
pages-paymentcenter-paymentcenter 4950
paymentcenter-paymentcenter-paymentcenter 4930
pages-paymentcenter-pages 4917
pages-paymentcenter-paymentcenter 4809
revenue-revenue-revenue 4523
pages-personnel-personnel 4394
pages-personnel-personnel 4182
pages-personnel-pages 4008
zoningarchive-zoningarchive-zoningarchive 3023
revenue-revenue-revenue 2853
pages-opa-default 2716
revenue-not set-revenue 2550
opa-default-default 2417
personnel-personnel-personnel 2404
pages-opa-pages 2383
brt-brt-brt 2357
brt-brt-default 2352
personnel-not set-personnel 2332
pages-opa-opa 2312
brt-brt-brt 2297
revenue-not set-revenue 2284
brt-brt-revenue 2254
opa-default-opa 2226
revenue-not set-revenue 2173
pages-opa-revenue 2090
opa-opa-default 2042
revenue-revenue-revenue 2028
opa-opa-opa 1970
opa-opa-opa 1966
revenue-revenue-revenue 1890
pages-revenue-pages 1837
revenue-not set-revenue 1834
opa-default-revenue 1729
paymentcenter-paymentcenter-paymentcenter 1701
revenue-revenue-paymentcenter 1671
health-health-health 1668
pages-residents-revenue 1648
revenue-revenue-revenue 1634
revenue-revenue-revenue 1627
brt-default-default 1623
revenue-not set-revenue 1621
default-revenue-default 1619
pages-revenue-pages 1609
paymentcenter-paymentcenter-paymentcenter 1590
revenue-revenue-revenue 1585
pages-pages-revenue 1578
opa-opa-revenue 1573
pages-revenue-revenue 1567
revenue-revenue-revenue 1553
revenue-revenue-revenue 1546
paymentcenter-paymentcenter-paymentcenter 1524
brt-default-brt 1481
pages-revenue-revenue 1475
paymentcenter-paymentcenter-paymentcenter 1453
pages-personnel-personnel 1434
brt-not set-brt 1427
revenue-revenue-paymentcenter 1394
revenue-revenue-revenue 1390
prisons-prisons-prisons 1368
pages-revenue-pages 1347
revenue-revenue-revenue 1342
revenue-revenue-revenue 1325
revenue-revenue-paymentcenter 1324
opa-default-default 1278
pages-li-li 1260
revenue-revenue-revenue 1258
revenue-paymentcenter-paymentcenter 1254
opa-default-opa 1248
pages-opa-opa 1244
revenue-revenue-revenue 1212
revenue-revenue-revenue 1206
revenue-revenue-default 1187
prisons-prisons-prisons 1176
revenue-revenue-revenue 1167
pages-pages-pages 1162
water-revenue-revenue 1144
personnel-personnel-personnel 1141
revenue-paymentcenter-paymentcenter 1138
brt-default-revenue 1133
revenue-revenue-paymentcenter 1125
prisons-prisons-prisons 1115
paymentcenter-paymentcenter-paymentcenter 1114
revenue-not set-revenue 1110
opa-default-revenue 1078
pages-pages-pages 1046
parksandrecreation-not set-parksandrecreation 1035
water-revenue-water 1026
revenue-paymentcenter-revenue 1020
revenue-revenue-revenue 1017
revenue-paymentcenter-paymentcenter 1014
paymentcenter-not set-paymentcenter 1001
personnel-personnel-personnel 969
pages-residents-residents 965
water-revenue-paymentcenter 932
revenue-revenue-revenue 926
pages-li-pages 925
residents-revenue-revenue 922
bikeshare-not set-bikeshare 917
revenue-revenue-revenue 896
pages-residents-pages 878
brt-revenue-revenue 874
revenue-revenue-revenue 854
revenue-revenue-revenue 842
prisons-not set-prisons 836
water-revenue-paymentcenter 836
revenue-not set-revenue 834
paymentcenter-paymentcenter-paymentcenter 833
personnel-personnel-personnel 833
revenue-revenue-revenue 811
default-default-revenue 793
revenue-not set-revenue 776
revenue-revenue-revenue 761
water-paymentcenter-paymentcenter 759
revenue-revenue-revenue 758
revenue-revenue-revenue 752
revenue-revenue-revenue 742
health-health-health 738
li-li-li 738
revenue-revenue-revenue 738
personnel-personnel-personnel 737
revenue-revenue-revenue 733
water-revenue-paymentcenter 733
revenue-not set-revenue 729
revenue-revenue-revenue 725
revenue-revenue-paymentcenter 725
revenue-revenue-revenue 720
water-paymentcenter-paymentcenter 715
revenue-revenue-revenue 713
revenue-revenue-revenue 709
revenue-revenue-revenue 708
revenue-revenue-revenue 707
records-not set-records 699
revenue-revenue-revenue 695
revenue-revenue-paymentcenter 694
revenue-revenue-revenue 689
revenue-revenue-revenue 688
revenue-revenue-revenue 661
water-not set-water 658
water-paymentcenter-paymentcenter 652
revenue-revenue-revenue 649
revenue-revenue-revenue 639
residents-not set-residents 637
waterrev-not set-waterrev 628
revenue-not set-revenue 619
revenue-revenue-paymentcenter 618
revenue-revenue-pages 614
revenue-revenue-revenue 609
water-paymentcenter-water 608
revenue-revenue-revenue 603
revenue-revenue-revenue 600
prisons-not set-prisons 598
revenue-revenue-revenue 594
pages-paymentcenter-revenue 592
personnel-not set-personnel 589
health-not set-health 582
paymentcenter-paymentcenter-paymentcenter 581
revenue-revenue-revenue 579
personnel-not set-personnel 571
health-health-health 560
311-not set-311 558
li-not set-li 557
pages-topics-topics 554
revenue-revenue-revenue 549
revenue-revenue-revenue 546
revenue-revenue-revenue 545
revenue-revenue-revenue 541
water-not set-water 540
wills-not set-wills 538
dhs-not set-dhs 532
phillylmsprod-phillylmsprod-phillylmsprod 531
phillylmsprod-phillylmsprod-phillylmsprod 531
paymentcenter-paymentcenter-paymentcenter 526
revenue-revenue-revenue 509
revenue-revenue-revenue 507
pages-revenue-paymentcenter 505
revenue-revenue-opa 504
prisons-not set-prisons 503
revenue-revenue-revenue 502
li-revenue-revenue 499
brt-brt-brt 495
pages-revenue-revenue 495
311-311-311 490
pages-ivrtoweb-ivrtoweb 490
water-revenue-revenue 490
revenue-revenue-revenue 489
personnel-personnel-personnel 488
pages-topics-pages 486
li-not set-li 482
ethicsboard-ethicsboard-ethicsboard 474
parksandrecreation-parksandrecreation-parksandrecreation 474
youthprograms-not set-youthprograms 474
health-health-health 472
revenue-revenue-revenue 466
health-health-health 465
residents-residents-residents 463
parksandrecreation-not set-parksandrecreation 461
pages-paymentcenter-paymentcenter 460
ivrtoweb-ivrtoweb-ivrtoweb 457
revenue-revenue-revenue 453
revenue-revenue-revenue 446
revenue-revenue-revenue 442
water-revenue-revenue 438
revenue-revenue-revenue 434
revenue-revenue-revenue 434
revenue-revenue-revenue 433
dhs-dhs-dhs 431
li-li-li 430
health-health-health 426
revenue-revenue-revenue 426
health-health-health 422
li-li-li 421
li-li-li 420
pages-revenue-revenue 419
waterrev-waterrev-waterrev 415
youthprograms-youthprograms-youthprograms 412
water-water-water 410
pages-revenue-revenue 409
personnel-personnel-personnel 406
prisons-prisons-prisons 404
revenue-revenue-revenue 399
youthprograms-youthprograms-youthprograms 398
revenue-not set-revenue 397
personnel-not set-personnel 394
revenue-revenue-revenue 393
health-health-health 392
revenue-revenue-revenue 392
parksandrecreation-parksandrecreation-parksandrecreation 391
revenue-revenue-revenue 391
li-not set-li 390
personnel-personnel-personnel 388
opa-not set-opa 385
health-health-health 384
revenue-paymentcenter-paymentcenter 384
crs_onlinev2-crs_onlinev2-crs_onlinev2 383
revenue-revenue-revenue 381
ivrtoweb-ivrtoweb-ivrtoweb 374
li-li-phillylmsprod 373
revenue-paymentcenter-paymentcenter 372
health-health-health 371
paymentcenter-not set-paymentcenter 371
pages-pages-personnel 369
pages-revenue-revenue 368
health-health-health 366
parksandrecreation-not set-parksandrecreation 366
pages-pages-personnel 364
pages-crs_onlinev2-crs_onlinev2 362
parksandrecreation-parksandrecreation-parksandrecreation 361
residents-residents-revenue 360
pages-personnel-personnel 357
revenue-revenue-revenue 356
records-records-records 355
revenue-revenue-revenue 355
revenue-revenue-revenue 354
personnel-not set-personnel 353
revenue-revenue-revenue 352
li-li-li 349
li-not set-li 348
procurement-not set-procurement 347
records-records-records 347
prisons-prisons-prisons 345
revenue-revenue-revenue 345
li-li-li 343
311-311-311 342
pages-brt-pages 342
pages-personnel-pages 342
revenue-not set-revenue 342
brt-residents-revenue 341
revenue-not set-revenue 340
pages-agencies-pages 338
youthprograms-not set-youthprograms 338
mayor-not set-mayor 336
pages-311-pages 333
revenue-revenue-revenue 332
revenue-revenue-opa 327
health-health-health 326
li-phillylmsprod-phillylmsprod 326
personnel-personnel-personnel 326
youthprograms-youthprograms-youthprograms 322
prisons-prisons-prisons 321
phillylmsprod-phillylmsprod-phillylmsprod 320
li-li-li 319
revenue-revenue-revenue 319
prisons-prisons-prisons 318
revenue-revenue-revenue 317
revenue-paymentcenter-revenue 317
revenue-revenue-paymentcenter 316
personnel-personnel-personnel 315
revenue-revenue-revenue 314
revenue-revenue-revenue 314
parksandrecreation-not set-parksandrecreation 313
pages-brt-brt 312
pages-brt-revenue 312
personnel-personnel-personnel 311
wills-wills-wills 311
parksandrecreation-parksandrecreation-parksandrecreation 310
revenue-revenue-revenue 307
streets-streets-streets 307
health-health-health 304
prisons-prisons-prisons 301
revenue-not set-revenue 297
health-health-health 296
cablefranchises-not set-cablefranchises 294
311-311-311 292
revenue-paymentcenter-paymentcenter 292
revenue-revenue-revenue 291
revenue-revenue-revenue 291
li-li-li 289
pages-water-pages 288
pages-311-311 286
pages-water-water 286
li-li-li 284
pages-agencies-agencies 284
revenue-not set-revenue 284
health-health-health 283
records-not set-records 283
pages-phillylmsprod-phillylmsprod 281
phillylmsprod-not set-phillylmsprod 281
streets-streets-streets 281
pages-licensespermitscert-pages 279
pages-pages-default 279
water-residents-water 279
health-health-health 278
records-records-records 278
personnel-personnel-personnel 276
revenue-revenue-revenue 276
pages-topics-personnel 275
crs_onlinev2-crs_onlinev2-crs_onlinev2 274
procurement_search-procurement_search-procurement_search 274
li-li-phillylmsprod 273
paymentcenter-paymentcenter-paymentcenter 270
revenue-revenue-residents 270
revenue-revenue-revenue 270
streets-streets-streets 269
residents-revenue-residents 268
paymentcenter-not set-paymentcenter 266
prisons-prisons-prisons 265
prisons-prisons-prisons 264
revenue-revenue-revenue 264
revenue-revenue-revenue 264
revenue-revenue-revenue 264
parksandrecreation-parksandrecreation-parksandrecreation 263
prisons-prisons-prisons 263
procurement-procurement-procurement 262
revenue-revenue-revenue 262
parksandrecreation-not set-parksandrecreation 261
revenue-revenue-paymentcenter 261
health-health-health 260
revenue-not set-revenue 260
water-residents-residents 259
pages-not set-pages 258
revenue-revenue-revenue 257
revenue-revenue-revenue 257
pages-pages-opa 256
opa-opa-opa 255
revenue-revenue-revenue 255
brt-not set-brt 252
revenue-revenue-revenue 252
pages-crs_onlinev2-pages 251
health-health-health 250
revenue-revenue-revenue 250
parksandrecreation-parksandrecreation-parksandrecreation 249
records-records-records 249
revenue-revenue-revenue 248
pages-pages-paymentcenter 247
revenue-revenue-revenue 247
health-health-health 246
pages-revenue-revenue 246
revenue-revenue-revenue 246
pages-pages-pages 244
prisons-not set-prisons 244
personnel-personnel-personnel 242
revenue-revenue-revenue 242
pages-pages-paymentcenter 240
pages-topics-personnel 240
pages-topics-personnel 240
revenue-not set-revenue 239
revenue-revenue-revenue 239
health-health-health 238
revenue-revenue-revenue 238
paymentcenter-paymentcenter-paymentcenter 237
revenue-revenue-revenue 237
revenue-revenue-revenue 237
revenue-revenue-revenue 237
health-health-health 236
revenue-revenue-revenue 236
pages-not set-pages 235
prisons-prisons-prisons 235
revenue-revenue-revenue 235
water-water-water 233
pages-topics-pages 232
revenue-revenue-revenue 232
revenue-revenue-revenue 232
paymentcenter-paymentcenter-paymentcenter 231
revenue-revenue-revenue 231
health-health-health 230
revenue-revenue-revenue 230
pages-licensespermitscert-licensespermitscert 229
revenue-revenue-revenue 229
revenue-revenue-revenue 229
revenue-revenue-revenue 229
pages-zoningarchive-zoningarchive 228
waterrev-not set-waterrev 228
revenue-not set-revenue 227
revenue-revenue-revenue 226
streets-streets-streets 226
li-li-li 225
pages-pages-pages 224
revenue-revenue-revenue 222
residents-not set-residents 221
revenue-revenue-revenue 220
revenue-revenue-revenue 220
li-li-li 216
pages-crs_onlinev2-crs_onlinev2 216
pages-personnel-personnel 215
revenue-revenue-revenue 215
revenue-revenue-revenue 215
health-health-health 214
phillylmsprod-phillylmsprod-phillylmsprod 214
mayor-mayor-mayor 213
pages-brt-brt 213
procurement-procurement-procurement 213
residents-not set-residents 213
revenue-revenue-revenue 213
districtattorney-not set-districtattorney 212
revenue-revenue-revenue 212
pages-not set-pages 211
pages-mayor-mayor 211
pages-mayor-pages 211
phillylmsprod-phillylmsprod-phillylmsprod 211
pages-brt-default 210
residents-revenue-revenue 210
pages-pages-pages 209
brt-pages-revenue 208
pages-li-li 208
revenue-revenue-revenue 208
revenue-revenue-revenue 207
water-water-water 207
health-health-health 206
opa-opa-opa 206
pages-pages-paymentcenter 206
osh-not set-osh 205
pages-parksandrecreation-pages 205
parksandrecreation-parksandrecreation-parksandrecreation 205
prisons-prisons-prisons 205
procurement-procurement-procurement 205
revenue-revenue-revenue 205
revenue-pages-revenue 205
contracts-not set-contracts 204
health-health-health 204
revenue-revenue-revenue 203
health-health-health 202
pages-parksandrecreation-parksandrecreation 202
revenue-revenue-paymentcenter 202
revenue-revenue-revenue 202
revenue-revenue-revenue 200
pages-pages-phillylmsprod 199
pensions-pensions-pensions 198
revenue-revenue-revenue 198
waterrev-waterrev-waterrev 198
pages-pages-revenue 197
revenue-revenue-revenue 197
records-records-records 196
revenue-revenue-revenue 196
tap-tap-tap 196
crs_onlinev2-crs_onlinev2-crs_onlinev2 195
health-health-health 194
health-health-health 194
pages-revenue-revenue 193
pages-pages-pages 192
waterrev-paymentcenter-paymentcenter 192
parksandrecreation-parksandrecreation-parksandrecreation 191
personnel-personnel-personnel 191
revenue-not set-revenue 191
water-water-water 190
revenue-revenue-revenue 189
pages-ivrtoweb-pages 188
pages-pages-revenue 188
revenue-revenue-paymentcenter 188
li-data-li 187
pages-contracts-pages 187
pensions-not set-pensions 187
pages-not set-pages 186
pages-water-paymentcenter 186
personnel-personnel-personnel 186
revenue-revenue-revenue 186
pages-pages-revenue 185
li-data-li 184
pages-paymentcenter-water 183
water-residents-paymentcenter 182
youthprograms-youthprograms-youthprograms 182
ethicsboard-not set-ethicsboard 181
health-health-health 181
pages-revenue-revenue 181
pages-revenue-revenue 181
revenue-default-revenue 181
waterrev-paymentcenter-paymentcenter 181
li-not set-li 180
osh-not set-osh 180
pages-residents-paymentcenter 180
prisons-prisons-prisons 180
pages-ivrtoweb-ivrtoweb 179
pages-li-zoningarchive 179
personnel-personnel-personnel 179
revenue-revenue-revenue 179
revenue-revenue-revenue 179
water-residents-paymentcenter 179
health-health-health 178
pages-residents-paymentcenter 178
revenue-revenue-revenue 178
revenue-revenue-revenue 178
revenue-revenue-revenue 178
waterrev-paymentcenter-waterrev 178
brt-brt-brt 177
health-health-health 177
pages-li-phillylmsprod 177
pages-topics-personnel 177
revenue-revenue-paymentcenter 177
pages-revenue-opa 176
revenue-revenue-revenue 176
revenue-revenue-revenue 175
revenue-revenue-revenue 175
records-records-records 174
revenue-revenue-revenue 174
openbudget-not set-openbudget 173
records-not set-records 173
revenue-revenue-revenue 173
pages-water-paymentcenter 172
youthprograms-youthprograms-youthprograms 172
parksandrecreation-parksandrecreation-parksandrecreation 171
revenue-revenue-revenue 170
revenue-revenue-revenue 170
phillylmsprod-phillylmsprod-phillylmsprod 169
prisons-not set-prisons 169
revenue-revenue-revenue 169
revenue-revenue-paymentcenter 169
topics-topics-topics 169
waterrev-waterrev-waterrev 169
youthprograms-youthprograms-youthprograms 169
brt-brt-revenue 168
li-li-li 168
li-li-phillylmsprod 168
revenue-revenue-paymentcenter 168
cablefranchises-cablefranchises-cablefranchises 167
revenue-revenue-pages 167
revenue-revenue-revenue 167
waterrev-paymentcenter-paymentcenter 167
motu-motu-motu 166
pages-contracts-contracts 166
parksandrecreation-parksandrecreation-parksandrecreation 166
revenue-revenue-revenue 166
personnel-personnel-personnel 165
revenue-revenue-revenue 165
revenue-revenue-revenue 165
li-li-li 164
pages-pages-pages 164
pages-paymentcenter-paymentcenter 164
pages-revenue-default 164
pages-topics-topics 164
revenue-revenue-revenue 164
revenue-revenue-brt 164
pages-pages-revenue 163
pages-water-paymentcenter 163
records-records-records 163
water-revenue-revenue 163
commerce-not set-commerce 162
pages-ig-pages 162
paymentcenter-paymentcenter-paymentcenter 162
records-records-records 162
revenue-revenue-revenue 162
revenue-revenue-revenue 162
pages-health-health 161
parksandrecreation-parksandrecreation-parksandrecreation 161
pages-revenue-paymentcenter 160
prisons-prisons-prisons 160
records-records-records 160
revenue-revenue-revenue 160
revenue-revenue-revenue 160
revenue-revenue-revenue 160
default-opa-revenue 159
ivrtoweb-ivrtoweb-ivrtoweb 159
pages-revenue-revenue 159
pages-water-revenue 159
revenue-revenue-revenue 159
opa-not set-opa 158
revenue-not set-revenue 158
revenue-revenue-revenue 158
revenue-pages-pages 158
pages-not set-pages 157
parksandrecreation-not set-parksandrecreation 157
revenue-revenue-revenue 157
health-health-health 156
health-health-health 156
pages-not set-pages 156
revenue-revenue-paymentcenter 156
revenue-revenue-revenue 156
waterrev-not set-waterrev 156
prisons-prisons-prisons 155
prisons-prisons-prisons 154
revenue-revenue-revenue 154
revenue-revenue-revenue 154
revenue-revenue-revenue 154
addressexplorer-not set-addressexplorer 153
contracts-contracts-contracts 153
pages-revenue-paymentcenter 153
personnel-personnel-personnel 153
water-residents-paymentcenter 153
water-topics-topics 153
pages-pages-residents 152
personnel-personnel-personnel 152
li-li-li 151
li-phillylmsprod-li 151
pages-pages-li 151
pages-residents-paymentcenter 151
parksandrecreation-not set-parksandrecreation 151
personnel-personnel-personnel 151
records-records-records 151
brt-revenue-brt 150
parksandrecreation-not set-parksandrecreation 150
rfp-not set-rfp 150
pages-li-phillylmsprod 149
procurement_search-procurement_search-procurement_search 149
revenue-revenue-revenue 149
revenue-not set-revenue 149
health-health-health 148
li-data-li 148
li-li-pages 147
pages-pages-pages 147
prisons-not set-prisons 147
records-records-records 147
revenue-revenue-revenue 147
phils-not set-phils 146
districtattorney-not set-districtattorney 145
pages-pages-pages 145
paymentcenter-revenue-revenue 145
parksandrecreation-parksandrecreation-parksandrecreation 144
li-zoningarchive-zoningarchive 143
records-not set-records 143
revenue-revenue-revenue 143
revenue-revenue-revenue 143
pages-pages-revenue 142
personnel-personnel-pages 142
prisons-prisons-prisons 142
prisons-prisons-prisons 142
revenue-revenue-revenue 142
revenue-revenue-revenue 142
li-li-li 141
opa-opa-opa 141
pages-personnel-revenue 141
parksandrecreation-parksandrecreation-parksandrecreation 141
residents-residents-residents 141
revenue-revenue-revenue 141
pages-pages-pages 140
phillylmsprod-phillylmsprod-phillylmsprod 140
procurement_search-not set-procurement_search 140
records-phils-records 140
revenue-not set-revenue 140
revenue-paymentcenter-paymentcenter 140
pages-revenue-paymentcenter 139
paymentcenter-paymentcenter-paymentcenter 139
revenue-revenue-revenue 139
revenue-revenue-revenue 139
revenue-revenue-revenue 139
pages-informationcenters-pages 138
pages-revenue-revenue 138
pages-pages-pages 138
parksandrecreation-parksandrecreation-parksandrecreation 138
revenue-revenue-paymentcenter 138
parksandrecreation-parksandrecreation-parksandrecreation 137
paymentcenter-paymentcenter-revenue 137
revenue-revenue-revenue 137
revenue-revenue-revenue 137
revenue-revenue-paymentcenter 137
li-li-li 136
li-li-li 136
personnel-personnel-personnel 136
prisons-prisons-prisons 136
revenue-revenue-revenue 135
revenue-revenue-revenue 135
openbudget-openbudget-openbudget 134
personnel-personnel-personnel 134
personnel-not set-personnel 134
phillylmsprod-phillylmsprod-phillylmsprod 134
prisons-prisons-prisons 134
revenue-revenue-revenue 134
revenue-revenue-revenue 134
revenue-revenue-revenue 134
pages-pages-revenue 133
waterrev-waterrev-waterrev 133
health-not set-health 132
health-health-health 132
pages-pages-revenue 132
revenue-revenue-revenue 132
revenue-residents-revenue 132
li-li-li 131
revenue-revenue-revenue 131
pages-pages-pages 130
pages-pages-personnel 130
records-records-records 130
revenue-revenue-revenue 130
channel64-not set-channel64 129
revenue-revenue-revenue 129
revenue-revenue-revenue 127
revenue-revenue-revenue 127
revenue-revenue-revenue 127
li-not set-li 126
pages-pages-pages 126
pages-phillylmsprod-pages 126
streets-streets-streets 126
pages-personnel-personnel 125
paymentcenter-paymentcenter-paymentcenter 125
paymentcenter-paymentcenter-paymentcenter 125
health-health-health 124
revenue-revenue-revenue 124
revenue-revenue-revenue 124
revenue-revenue-revenue 124
pages-li-li 123
revenue-revenue-revenue 123
revenue-revenue-revenue 123
revenue-revenue-revenue 123
parksandrecreation-parksandrecreation-parksandrecreation 122
records-phils-phils 122
revenue-revenue-revenue 122
li-li-phillylmsprod 121
opa-not set-opa 121
li-data-li 120
li-li-phillylmsprod 120
pages-pages-pages 120
parksandrecreation-parksandrecreation-parksandrecreation 120
revenue-revenue-li 120
revenue-revenue-revenue 119
revenue-revenue-revenue 119
revenue-default-default 119
districtattorney-not set-districtattorney 118
health-health-health 118
opa-opa-opa 118
pages-revenue-revenue 118
prisons-topics-topics 118
revenue-revenue-revenue 117
revenue-revenue-revenue 117
water-water-water 117
contracts-contracts-contracts 116
health-health-health 116
health-health-health 116
health-health-health 116
personnel-personnel-personnel 116
revenue-revenue-revenue 116
revenue-revenue-revenue 116
revenue-revenue-brt 116
revenue-revenue-revenue 116
311-311-311 115
pages-pages-revenue 115
pages-wills-pages 115
311-not set-311 114
pages-revenue-revenue 114
revenue-revenue-revenue 114
revenue-revenue-revenue 114
revenue-not set-revenue 114
revenue-revenue-revenue 114
revenue-revenue-residents 114
revenue-revenue-revenue 114
pages-revenue-revenue 113
revenue-revenue-revenue 113
revenue-revenue-revenue 113
revenue-revenue-revenue 113
water-paymentcenter-revenue 113
green-not set-green 112
licensespermitscert-health-health 112
osh-osh-osh 112
pages-crs_onlinev2-li 112
pages-topics-personnel 112
prisons-prisons-prisons 112
revenue-revenue-revenue 112
revenue-revenue-revenue 112
bikeshare-bikeshare-bikeshare 111
parksandrecreation-parksandrecreation-parksandrecreation 111
prisons-topics-prisons 111
procurement_search-procurement_search-procurement_search 111
revenue-pages-revenue 111
revenue-revenue-revenue 111
revenue-revenue-revenue 111
dhs-dhs-dhs 110
health-health-health 110
prisons-not set-prisons 110
revenue-revenue-revenue 110
revenue-pages-pages 110
revenue-revenue-revenue 110
revenue-revenue-revenue 110
revenue-revenue-revenue 110
water-water-water 110
pages-mdo-mdo 109
parksandrecreation-parksandrecreation-parksandrecreation 109
revenue-revenue-revenue 109
revenue-revenue-revenue 109
revenue-paymentcenter-revenue 109
revenue-revenue-revenue 109
data-li-li 108
health-health-health 108
pages-pages-opa 108
pages-residents-opa 108
pages-not set-pages 108
prisons-prisons-prisons 108
revenue-revenue-revenue 108
revenue-revenue-revenue 108
revenue-revenue-revenue 108
default-opa-default 107
pages-personnel-pages 107
pages-pages-pages 107
prisons-not set-prisons 107
prisons-prisons-prisons 107
pages-not set-pages 106
pages-paymentcenter-pages 106
pages-prisons-prisons 106
pages-residents-default 106
pages-not set-pages 106
prisons-prisons-prisons 106
revenue-revenue-revenue 106
topics-personnel-topics 106
ethicsboard-ethicsboard-ethicsboard 105
opa-opa-opa 105
revenue-revenue-revenue 105
revenue-revenue-revenue 105
revenue-revenue-revenue 105
revenue-revenue-revenue 105
water-topics-water 105
health-health-health 104
health-health-health 104
li-pages-li 104
parksandrecreation-parksandrecreation-parksandrecreation 104
revenue-revenue-revenue 104
revenue-revenue-revenue 104
waterrev-not set-waterrev 104
pages-zoningarchive-pages 103
phillylmsprod-phillylmsprod-phillylmsprod 103
revenue-not set-revenue 103
revenue-revenue-revenue 103
revenue-revenue-revenue 103
revenue-revenue-revenue 103
revenue-revenue-revenue 103
revenue-revenue-revenue 103
districtattorney-not set-districtattorney 102
li-li-li 102
pages-mdo-pages 102
pages-personnel-personnel 102
pages-wills-wills 102
records-not set-records 102
revenue-revenue-revenue 102
revenue-revenue-revenue 102
revenue-revenue-revenue 102
agencies-not set-agencies 101
pages-li-li 101
personnel-personnel-personnel 101
phillylmsprod-phillylmsprod-phillylmsprod 101
residents-not set-residents 101
revenue-revenue-revenue 101
revenue-revenue-revenue 101
paymentcenter-paymentcenter-paymentcenter 100
revenue-revenue-revenue 100
revenue-not set-revenue 100
revenue-revenue-revenue 100
default-residents-default 99
info-info-info 99
opa-revenue-revenue 99
pages-li-li 99
prisons-prisons-prisons 99
revenue-revenue-revenue 99
cityplanning-not set-cityplanning 98
default-opa-default 98
health-health-health 98
pages-li-li 98
personnel-personnel-personnel 98
revenue-revenue-revenue 98
revenue-revenue-revenue 98
revenue-revenue-revenue 98
revenue-pages-revenue 98
revenue-revenue-revenue 98
water-water-paymentcenter 98
li-li-li 97
licensespermitscert-not set-licensespermitscert 97
pages-agencies-deptaz 97
personnel-personnel-personnel 97
revenue-revenue-revenue 97
revenue-paymentcenter-paymentcenter 97
health-health-health 96
li-data-data 96
li-li-li 96
li-li-pages 96
licensespermitscert-pages-pages 96
pages-health-pages 96
pages-revenue-revenue 96
parksandrecreation-parksandrecreation-parksandrecreation 96
pensions-pensions-pensions 96
phils-not set-phils 96
default-pages-default 95
districtattorney-not set-districtattorney 95
li-li-zoningarchive 95
li-pages-pages 95
opa-not set-opa 95
pages-li-pages 95
paymentcenter-paymentcenter-paymentcenter 95
personnel-personnel-personnel 95
prisons-prisons-prisons 95
revenue-revenue-revenue 95
revenue-revenue-revenue 95
revenue-revenue-revenue 95
cityplanning-not set-cityplanning 94
health-health-health 94
li-li-li 94
li-li-li 94
pensions-pensions-pensions 94
revenue-revenue-revenue 94
revenue-revenue-revenue 94
revenue-revenue-revenue 94
revenue-revenue-paymentcenter 94
commerce-commerce-commerce 93
dhs-dhs-dhs 93
pages-ig-ig 93
pages-revenue-revenue 93
pages-revenue-revenue 93
personnel-personnel-personnel 93
procurement-not set-procurement 93
revenue-revenue-revenue 93
health-health-health 92
pages-pages-pages 92
parksandrecreation-parksandrecreation-parksandrecreation 92
paymentcenter-paymentcenter-paymentcenter 92
prisons-prisons-prisons 92
records-not set-records 92
revenue-not set-revenue 92
revenue-revenue-revenue 92
revenue-revenue-revenue 92
revenue-revenue-revenue 92
councillookup-councillookup-councillookup 91
health-health-health 91
li-li-li 91
li-li-phillylmsprod 91
pages-paymentcenter-revenue 91
parksandrecreation-not set-parksandrecreation 91
phillylmsprod-phillylmsprod-phillylmsprod 91
records-not set-records 91
revenue-revenue-revenue 91
revenue-revenue-revenue 91
topics-personnel-personnel 91
pages-revenue-revenue 90
procurement-procurement-procurement 90
revenue-revenue-revenue 90
revenue-revenue-revenue 90
revenue-revenue-revenue 90
li-pages-pages 89
parksandrecreation-parksandrecreation-parksandrecreation 89
parksandrecreation-parksandrecreation-parksandrecreation 89
revenue-revenue-revenue 89
revenue-revenue-revenue 89
revenue-revenue-revenue 89
waterrev-revenue-revenue 89
channel64-channel64-channel64 88
li-li-li 88
pages-pages-pages 88
parksandrecreation-not set-parksandrecreation 88
phillylmsprod-phillylmsprod-phillylmsprod 88
phillylmsprod-phillylmsprod-phillylmsprod 88
phils-phils-phils 88
revenue-revenue-revenue 88
revenue-revenue-revenue 88
revenue-revenue-revenue 88
water-paymentcenter-revenue 88
agencies-revenue-revenue 87
li-phillylmsprod-phillylmsprod 87
opa-opa-default 87
pages-pages-pages 87
pages-phillylmsprod-phillylmsprod 87
parksandrecreation-not set-parksandrecreation 87
personnel-personnel-personnel 87
prisons-not set-prisons 87
revenue-revenue-revenue 87
revenue-revenue-revenue 87
brt-brt-revenue 86
brt-residents-residents 86
health-health-health 86
li-not set-li 86
li-li-phillylmsprod 86
li-li-li 86
pages-revenue-revenue 86
paymentcenter-paymentcenter-paymentcenter 86
paymentcenter-paymentcenter-paymentcenter 86
prisons-prisons-prisons 86
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment