heavyai-charting/example/exampleStackedBarchart.html
2022-03-09 09:24:25 -06:00

165 lines
5.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>HEAVY.AI</title>
<meta charset="UTF-8">
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link href='https://fonts.googleapis.com/css?family=Roboto:400,700,300' rel='stylesheet' type='text/css'>
<style>
.title {
font-weight: bold;
text-align:center;
}
.heavyai {
position: relative;
top: 2px;
}
.search{
display: inline-block;
margin-top: 12px;
margin-left: 50px;
}
.data-count {
padding-right:20px;
}
.filter-count {
font-weight: bold;
color: #45B1E8;
}
</style>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header" style="margin-top:10px">
<img alt="Brand" src="images/favicon.png" height="30" width="30">
<span class="heavyai">HEAVY.AI Demo</span>
</div>
</div>
</nav>
<div class="col-xs-12">
<div class="title">Stacked Bar Chart</div>
<div class="stacked-bar-example"></div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script src="assets/app.bundle.js"></script>
<script>
var globalGeocoder = null;
function createCharts(crossFilter, con, tableName) {
var w = document.documentElement.clientWidth - 30;
var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 150;
var timeChartMeasures = [
{
expression: "join_time",
agg_mode:"min",
name: "minimum"
},
{
expression: "join_time",
agg_mode:"max",
name: "maximum"}
]
crossFilter
.groupAll()
.reduce(timeChartMeasures)
.valuesAsync(true).then(function(timeChartBounds) {
var joinDimension = crossFilter.dimension(["join_time", "country"])
var joinGroup = joinDimension
.group()
.reduceCount()
var dcTimeChart = dc.barChart('.stacked-bar-example')
.width(w)
.height(h)
.elasticY(true)
.renderHorizontalGridLines(true)
.xAxisLabel('Join Time')
.yAxisLabel('Number of New Users')
.dimension(joinDimension)
.group(joinGroup)
.binParams({
timeBin: 'month',
binBounds: [timeChartBounds.minimum, timeChartBounds.maximum]
});
/* Pass in a series to enable stacking function */
dcTimeChart.series().group(crossFilter.dimension('country').group())
dcTimeChart.series().selected(['US','BR','ID','AR','TR'])
/* Set the x and y axis formatting with standard d3 functions */
dcTimeChart
.x(d3.time.scale.utc().domain([timeChartBounds.minimum, timeChartBounds.maximum]))
.yAxis().ticks(5);
dcTimeChart
.xAxis()
.scale(dcTimeChart.x())
.tickFormat(dc.utils.customTimeFormat)
.orient('top');
dc.renderAllAsync()
/*--------------------------RESIZE EVENT------------------------------*/
window.addEventListener("resize", _.debounce(reSizeAll, 500));
function reSizeAll(){
var w = document.documentElement.clientWidth - 30;
var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0) - 150;
dcTimeChart
.width(w)
.height(h)
dc.redrawAllAsync();
}
});
}
function init() {
// A connector-js instance is used for performing raw queries on a HeavyDB GPU database.
new DbCon()
.protocol("https")
.host("metis.mapd.com")
.port("443")
.dbName("mapd")
.user("mapd")
.password("HyperInteractive")
.connect(function(error, con) {
// Get a table from the database
var tableName = 'tweets_nov_feb';
// A CrossFilter instance is used for generating the raw query strings for your connector-js.
var crossFilter = crossfilter.crossfilter(con, tableName)
.then(function(cf) {
createCharts(cf, con, tableName)
})
// Pass instance of crossfilter into our CreateCharts.
;
});
}
document.addEventListener('DOMContentLoaded', init, false);
function mapApiLoaded() {
globalGeocoder = new google.maps.Geocoder();
geocoderObject.geocoder = globalGeocoder;
}
</script>
</body>
</html>