基本日期范围选择器的绝佳替代品。
DateRange UI jQuery插件结合了柱状图和日期范围选择器,提供了一个可视化的日期选择UI。
重量轻、动感十足、易于使用、反应灵敏且便于触摸。
基于jQuery和d3.js库构建。
1.加载所需的jQuery和d3.js库。
- <script src="/path/to/cdn/jquery.min.js"></script>
- <script src="/path/to/cdn/d3.min.js"></script>
2.在jQuery之后加载DateRange UI的脚本。
- <script src="plugin.js"></script>
3.创建一个empty DIV来容纳柱状图和日期范围选择器。
- <div id="graph"></div>
4.为柱状图准备时间序列数据。
- var myData = [
- {
- // year name
- "key_as_string":"1903",
- // value
- "doc_count":2,
- // unix timestamp in milliseconds
- "key":-2114384400000
- },
- {
- "key_as_string":"1904",
- "doc_count":7,
- "key":-2082848400000
- },
- // ...
- ]
5.初始化插件以生成一个柱状图,并在其底部生成一个自定义日期范围选择器。
- const graph = $("#graph").daterangeselect({
- data: myData,
- // more options here
- });
6.DateRange UI的可用选项。
- const graph = $("#graph").daterangeselect({
- data: myData,
- height: 320,
- rangeBarOpacity: 0.4,
- handleScaleFactor: 1.6,
- dataLengthTrigger: 30 // show tick values on x-axis for each bar or every 10th element
- });
7.覆盖默认样式。
- #graph {
- position: relative;
- width: 100%;
- }
- #range {
- color: #fff;
- font-size: 20px;
- background-color: #d81b60;
- padding: 5px 10px;
- }
- #graph text {
- fill: #ccc;
- }
- #graph tik {
- fill: #ccc;
- }
- #graph .domain, #graph line {
- stroke: #ccc;
- }
- #graph .bars .bar {
- fill: #bdb7b7;
- }
- #graph .bars .bar.highlight {
- fill: #d81b60 !important;
- }
- #graph .bars .axis--x path {
- display: none;
- }
- #graph .bars .bar.selected {
- fill: #fff;
- }
- #graph .handles .selector {
- fill: #fff;
- stroke: #777;
- stroke-width: 0.5px;
- }
- #graph .handles .selector.hovereffekt {
- stroke-width: 15px;
- stroke-opacity: 0.1;
- stroke: #eee;
- }
- #graph .handles .selector.active {
- fill: #ccc !important;
- }
- #graph .handles .range {
- fill: #fff; /* #d81b60 */
- stroke: none;
- }
- #graph .handles .selector .handlehovertext {
- fill: #fff;
- stroke: none;
- font-size: 11px;
- font-family: Helvetica, Arial;
- }
- #graph .empty line {
- stroke: #d81b60 !important;
- }
- #graph .empty text {
- /* fill: #d81b60 !important; */
- }
8.自定义将鼠标悬停在柱状图上时显示的工具提示。
- #graph div.tooltip {
- position: absolute;
- text-align: center;
- width: 40px;
- height: 24px;
- padding-top: 5px;
- font: 12px sans-serif;
- background: #ccc;
- border: 0px;
- border-radius: 2px;
- pointer-events: none;
- color: #333;
- }
- #graph div.tooltip:after {
- box-sizing: border-box;
- display: inline;
- width: 100%;
- line-height: 1;
- color: #ccc;
- content: "\25BC";
- position: absolute;
- text-align: center;
- margin: -3px 0 0 0;
- top: 100%;
- left: 0;
- }
9.回调函数。
- const graph = $("#graph").daterangeselect({
- data: myData,
- onRangeUpdate: function (obj) {
- //var myJSON = JSON.stringify(obj);
- //console.log("Clicked Section Data",obj);
- },
- hoverText: function (obj) {
- return obj.key_as_string;
- }
- });
10.更新柱状图。
- $("#graph").daterangeselect("update", newData);