diff --git a/README.md b/README.md index 92f77db5..7c84bdab 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,15 @@ Heat.js [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Heat.js%2C%20a%20free%20JavaScript%heat%20map&url=https://github.com/williamtroup/Heat.js&hashtags=javascript,heat,map) -[![npm](https://img.shields.io/badge/npmjs-v1.6.0-blue)](https://www.npmjs.com/package/jheat.js) -[![nuget](https://img.shields.io/badge/nuget-v1.6.0-purple)](https://www.nuget.org/packages/jHeat.js/) +[![npm](https://img.shields.io/badge/npmjs-v1.6.1-blue)](https://www.npmjs.com/package/jheat.js) +[![nuget](https://img.shields.io/badge/nuget-v1.6.1-purple)](https://www.nuget.org/packages/jHeat.js/) [![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/williamtroup/Heat.js/blob/main/LICENSE.txt) [![discussions Welcome](https://img.shields.io/badge/discussions-Welcome-red)](https://github.com/williamtroup/Heat.js/discussions) [![coded by William Troup](https://img.shields.io/badge/coded_by-William_Troup-yellow)](https://william-troup.com/) >

🌞 A lightweight JavaScript library that generates customizable heat maps and charts to visualize date-based activity and trends.

->

v1.6.0

+>

v1.6.1


![Heat.js](docs/images/main.png) diff --git a/README_NUGET.md b/README_NUGET.md index 974492ca..d8d98aa7 100644 --- a/README_NUGET.md +++ b/README_NUGET.md @@ -1,8 +1,8 @@ -# Heat.js v1.6.0 +# Heat.js v1.6.1 [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Heat.js%2C%20a%20free%20JavaScript%heat%20map&url=https://github.com/williamtroup/Heat.js&hashtags=javascript,heat,map) -[![npm](https://img.shields.io/badge/npmjs-v1.6.0-blue)](https://www.npmjs.com/package/jheat.js) -[![nuget](https://img.shields.io/badge/nuget-v1.6.0-purple)](https://www.nuget.org/packages/jHeat.js/) +[![npm](https://img.shields.io/badge/npmjs-v1.6.1-blue)](https://www.npmjs.com/package/jheat.js) +[![nuget](https://img.shields.io/badge/nuget-v1.6.1-purple)](https://www.nuget.org/packages/jHeat.js/) [![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/williamtroup/Heat.js/blob/main/LICENSE.txt) [![discussions Welcome](https://img.shields.io/badge/discussions-Welcome-red)](https://github.com/williamtroup/Heat.js/discussions) [![coded by William Troup](https://img.shields.io/badge/coded_by-William_Troup-yellow)](https://william-troup.com/) diff --git a/dist/heat.js b/dist/heat.js index 677b34cd..d5d35318 100644 --- a/dist/heat.js +++ b/dist/heat.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ (function() { function render() { var tagTypes = _configuration.domElementTypes; @@ -195,7 +195,7 @@ fireCustomTrigger(bindingOptions.onNextYear, bindingOptions.currentView.year); }; } else { - optionMap.className += _string.space + "title-active"; + addClass(optionMap, "title-active"); } if (bindingOptions.currentView.view !== _elements_View_Chart) { optionChart.onclick = function() { @@ -204,7 +204,7 @@ fireCustomTrigger(bindingOptions.onNextYear, bindingOptions.currentView.year); }; } else { - optionChart.className += _string.space + "title-active"; + addClass(optionChart, "title-active"); } if (bindingOptions.showExportButton) { var exportData = createElementWithHTML(titleBar, "button", "export", _configuration.exportButtonText); @@ -256,7 +256,7 @@ fireCustomTrigger(bindingOptions.onNextYear, bindingOptions.currentView.year); }; } else { - year.className += _string.space + "year-active"; + addClass(year, "year-active"); } } function renderControlMap(bindingOptions) { @@ -269,7 +269,7 @@ if (bindingOptions.showDayNames) { var days = createElement(map, "div", "days"); if (!bindingOptions.showMonthNames || bindingOptions.placeMonthNamesOnTheBottom) { - days.style.paddingTop = "0px"; + days.className = "days-months-bottom"; } var dayNameIndex = 0; for (; dayNameIndex < 7; dayNameIndex++) { @@ -357,11 +357,11 @@ fireCustomTrigger(bindingOptions.onDayClick, date, dateCount); }; } else { - day.className += _string.space + "no-click"; + addClass(day, "no-hover"); } var useMapRangeColor = getMapRangeColor(mapRangeColors, dateCount); if (isDefined(useMapRangeColor) && isHeatMapColorVisible(bindingOptions, useMapRangeColor.id)) { - day.className += _string.space + useMapRangeColor.cssClassName; + addClass(day, useMapRangeColor.cssClassName); } return day; } @@ -454,11 +454,11 @@ fireCustomTrigger(bindingOptions.onDayClick, date, dateCount); }; } else { - dayLine.className += _string.space + "no-click"; + addClass(dayLine, "no-hover"); } var useMapRangeColor = getMapRangeColor(mapRangeColors, dateCount); if (isDefined(useMapRangeColor) && isHeatMapColorVisible(bindingOptions, useMapRangeColor.id)) { - dayLine.className += _string.space + useMapRangeColor.cssClassName; + addClass(dayLine, useMapRangeColor.cssClassName); } } function renderControlViewGuide(bindingOptions) { @@ -491,7 +491,7 @@ updateMapRangeColorToggles(bindingOptions, false); }; } else { - lessText.className += _string.space + "no-click"; + addClass(lessText, "no-click"); } var days = createElement(mapToggles, "div", "days"); var mapRangeColors = bindingOptions.mapRangeColors.sort(function(a, b) { @@ -508,14 +508,14 @@ updateMapRangeColorToggles(bindingOptions, true); }; } else { - moreText.className += _string.space + "no-click"; + addClass(moreText, "no-click"); } } } function renderControlViewGuideTypeButton(bindingOptions, mapTypes, type) { var typeButton = createElementWithHTML(mapTypes, "button", "type", type); if (bindingOptions.currentView.type === type) { - typeButton.className += _string.space + "active"; + addClass(typeButton, "active"); } typeButton.onclick = function() { if (bindingOptions.currentView.type !== type) { @@ -547,7 +547,7 @@ renderControlContainer(bindingOptions); }; } else { - day.className += _string.space + "no-click"; + addClass(day, "no-hover"); } } function exportAllData(bindingOptions) { @@ -600,13 +600,13 @@ } function getCsvFilename(bindingOptions) { var date = new Date(); - var datePart = padNumber(date.getDate()) + "-" + padNumber(date.getMonth() + 1) + "-" + date.getFullYear(); - var timePart = padNumber(date.getHours()) + "-" + padNumber(date.getMinutes()); + var datePart = padNumber(date.getDate()) + _string.dash + padNumber(date.getMonth() + 1) + _string.dash + date.getFullYear(); + var timePart = padNumber(date.getHours()) + _string.dash + padNumber(date.getMinutes()); var filenameStart = _string.empty; if (bindingOptions.currentView.type !== _elements_DateCounts_DefaultType) { - filenameStart = bindingOptions.currentView.type.toLowerCase().replace(_string.space, "_") + "_"; + filenameStart = bindingOptions.currentView.type.toLowerCase().replace(_string.space, _string.underscore) + _string.underscore; } - return filenameStart + datePart + "_" + timePart + ".csv"; + return filenameStart + datePart + _string.underscore + timePart + ".csv"; } function getCsvValue(text) { text = text.toString().replace(/(\r\n|\n|\r)/gm, _string.empty).replace(/(\s\s)/gm, _string.space); @@ -767,6 +767,43 @@ } return value; } + function addClass(element, className) { + element.className += _string.space + className; + } + function cancelBubble(e) { + e.preventDefault(); + e.cancelBubble = true; + } + function getScrollPosition() { + var doc = _parameter_Document.documentElement; + var left = (_parameter_Window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0); + var top = (_parameter_Window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0); + return {left:left, top:top}; + } + function showElementAtMousePosition(e, element) { + var left = e.pageX; + var top = e.pageY; + var scrollPosition = getScrollPosition(); + element.style.display = "block"; + if (left + element.offsetWidth > _parameter_Window.innerWidth) { + left = left - element.offsetWidth; + } else { + left++; + } + if (top + element.offsetHeight > _parameter_Window.innerHeight) { + top = top - element.offsetHeight; + } else { + top++; + } + if (left < scrollPosition.left) { + left = e.pageX + 1; + } + if (top < scrollPosition.top) { + top = e.pageY + 1; + } + element.style.left = left + "px"; + element.style.top = top + "px"; + } function fireCustomTrigger(triggerFunction) { var result = null; if (isDefinedFunction(triggerFunction)) { @@ -823,46 +860,12 @@ } return {parsed:parsed, result:result}; } - function cancelBubble(e) { - e.preventDefault(); - e.cancelBubble = true; - } - function getScrollPosition() { - var doc = _parameter_Document.documentElement; - var left = (_parameter_Window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0); - var top = (_parameter_Window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0); - return {left:left, top:top}; - } - function showElementAtMousePosition(e, element) { - var left = e.pageX; - var top = e.pageY; - var scrollPosition = getScrollPosition(); - element.style.display = "block"; - if (left + element.offsetWidth > _parameter_Window.innerWidth) { - left = left - element.offsetWidth; - } else { - left++; - } - if (top + element.offsetHeight > _parameter_Window.innerHeight) { - top = top - element.offsetHeight; - } else { - top++; - } - if (left < scrollPosition.left) { - left = e.pageX + 1; - } - if (top < scrollPosition.top) { - top = e.pageY + 1; - } - element.style.left = left + "px"; - element.style.top = top + "px"; - } function newGuid() { var result = []; var charIndex = 0; for (; charIndex < 32; charIndex++) { if (charIndex === 8 || charIndex === 12 || charIndex === 16 || charIndex === 20) { - result.push("-"); + result.push(_string.dash); } var character = Math.floor(Math.random() * 16).toString(16); result.push(character); @@ -874,10 +877,10 @@ return numberString.length === 1 ? "0" + numberString : numberString; } function toStorageDate(date) { - return date.getFullYear() + "-" + padNumber(date.getMonth() + 1) + "-" + padNumber(date.getDate()); + return date.getFullYear() + _string.dash + padNumber(date.getMonth() + 1) + _string.dash + padNumber(date.getDate()); } function getStorageDateYear(data) { - return data.split("-")[0]; + return data.split(_string.dash)[0]; } function buildDefaultConfiguration() { _configuration.safeMode = getDefaultBoolean(_configuration.safeMode, true); @@ -916,7 +919,7 @@ var _parameter_Document = null; var _parameter_Window = null; var _configuration = {}; - var _string = {empty:"", space:" ", newLine:"\n"}; + var _string = {empty:"", space:" ", newLine:"\n", dash:"-", underscore:"_"}; var _elements_Type = {}; var _elements_Day_Width = null; var _elements_DateCounts = {}; @@ -1123,7 +1126,7 @@ return this; }; this.getVersion = function() { - return "1.6.0"; + return "1.6.1"; }; (function(documentObject, windowObject) { _parameter_Document = documentObject; diff --git a/dist/heat.js.css b/dist/heat.js.css index 952c05f1..2502408f 100644 --- a/dist/heat.js.css +++ b/dist/heat.js.css @@ -1,5 +1,5 @@ /* - * Heat.js Library v1.6.0 + * Heat.js Library v1.6.1 * * Copyright 2024 Bunoon * Released under the MIT License @@ -284,7 +284,8 @@ div.heat-js div.map-contents div.map { display: inline-flex; flex-direction: row; } -div.heat-js div.map-contents div.map div.days { +div.heat-js div.map-contents div.map div.days, +div.heat-js div.map-contents div.map div.days-months-bottom { background-color: var(--heat-js-container-background-color); padding-right: calc(var(--heat-js-spacing) * 3); padding-top: calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px); @@ -294,11 +295,13 @@ div.heat-js div.map-contents div.map div.days { z-index: 50; } @media (min-width: 768px) { - div.heat-js div.map-contents div.map div.days { + div.heat-js div.map-contents div.map div.days, + div.heat-js div.map-contents div.map div.days-months-bottom { display: block; } } -div.heat-js div.map-contents div.map div.days div.day-name { +div.heat-js div.map-contents div.map div.days div.day-name, +div.heat-js div.map-contents div.map div.days-months-bottom div.day-name { font-weight: var(--heat-js-text-bold-weight); text-align: left !important; height: var(--heat-js-day-size); @@ -307,6 +310,9 @@ div.heat-js div.map-contents div.map div.days div.day-name { justify-content: center; flex-direction: column; } +div.heat-js div.map-contents div.map div.days-months-bottom { + padding-top: 0 !important; +} div.heat-js div.map-contents div.map div.months { display: flex; justify-content: space-between; @@ -357,7 +363,7 @@ div.heat-js div.map-contents div.map div.months div.month div.day-columns div.da border: var(--heat-js-border-size) solid var(--heat-js-day-border-color); transition: var(--heat-js-transition); } -div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:hover { +div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:not(.no-hover):hover { cursor: pointer; background: var(--heat-js-day-background-color-hover); } @@ -444,7 +450,7 @@ div.heat-js div.chart-contents div.chart div.day-lines div.day-line:first-child div.heat-js div.chart-contents div.chart div.day-lines div.day-line:last-child { margin-right: 0; } -div.heat-js div.chart-contents div.chart div.day-lines div.day-line:hover { +div.heat-js div.chart-contents div.chart div.day-lines div.day-line:not(.no-hover):hover { cursor: pointer; background: var(--heat-js-day-background-color-hover); } @@ -572,7 +578,6 @@ div.heat-js div.guide div.map-toggles div.days div.day { width: var(--heat-js-day-size); height: var(--heat-js-day-size); margin-right: var(--heat-js-day-spacing); - cursor: pointer; transition: var(--heat-js-transition); } div.heat-js div.guide div.map-toggles div.days div.day:last-child { @@ -584,16 +589,17 @@ div.heat-js div.guide div.map-toggles div.days div.day:last-child { Heat.js - Colors ------------------------------------------------------------------------- */ -div.heat-js div.day-color-1:active, -div.heat-js div.day-color-2:active, -div.heat-js div.day-color-3:active, -div.heat-js div.day-color-4:active { +div.heat-js div.day-color-1:not(.no-hover):active, +div.heat-js div.day-color-2:not(.no-hover):active, +div.heat-js div.day-color-3:not(.no-hover):active, +div.heat-js div.day-color-4:not(.no-hover):active { opacity: var(--heat-js-day-opacity-active) !important; } -div.heat-js div.day-color-1:hover, -div.heat-js div.day-color-2:hover, -div.heat-js div.day-color-3:hover, -div.heat-js div.day-color-4:hover { +div.heat-js div.day-color-1:not(.no-hover):hover, +div.heat-js div.day-color-2:not(.no-hover):hover, +div.heat-js div.day-color-3:not(.no-hover):hover, +div.heat-js div.day-color-4:not(.no-hover):hover { + cursor: pointer; opacity: var(--heat-js-day-opacity-hover); } div.heat-js div.day-color-1 { diff --git a/dist/heat.js.css.map b/dist/heat.js.css.map index 4691ed88..f389d02b 100644 --- a/dist/heat.js.css.map +++ b/dist/heat.js.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../src/heat.js.scss","../src/foundation/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EAGA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAuDA;AAAA;AAAA;AAAA;AAAA;AAMA;EChJI;EACA;EACA;EACA;EACA;EACA;ED6IA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EAGI;EACA;EACA;EACA,gBALe;EAMf;;AAzER;EACI;EACA;EACA;EACA;EACA;EACA;EAGI,cAVuF;;AA8EvF;EACI;;AAGJ;EACI,aAfW;EAgBX;EACA;EACA;EACA,YAnBW;EAoBX;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAzJpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAwIA;EACI;;AAGJ;EACI;;AAGJ;EAGI;EACA;EACA;EACA;EACA;EACA,aAPc;EAQd,gBARc;EASd;;AArJR;EACI;EACA;EACA;EACA;EACA;EACA;EAMI,aA2IsC;;AAEtC;EACI;;AAGJ;EACI,SAlBU;EAmBV;EACA;EACA;EACA;EACA;EACA,YAxBU;;AA0BV;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAMhB;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EATJ;IAUQ;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAMgB;EACI;;AAOpB;AAAA;EAEI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGI;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;;AAWpC;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAVJ;IAWQ;;;AAGJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAMhB;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;;AAEA;EAHJ;IAIQ;;;AAGJ;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;IACA;;;AAIR;EACI;;AAEA;EAHJ;IAIQ;;;AArgBZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAifI;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EANJ;IAOQ;IACA;;;AAGJ;AAAA;EAEI;EACA;EACA;;AAEA;AAAA;EACI;EACA;;AAGJ;AAAA;EACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AASxB;AAAA;AAAA;AAAA;AAAA;AAWQ;AAAA;AAAA;AAAA;EACI;;AAGJ;AAAA;AAAA;AAAA;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAMA;EC3tBI;EACA;EACA;EACA;EACA;EACA;EDwtBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"heat.js.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../src/heat.js.scss","../src/foundation/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EAGA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAuDA;AAAA;AAAA;AAAA;AAAA;AAMA;EChJI;EACA;EACA;EACA;EACA;EACA;ED6IA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAEA;EAEI;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EAGI;EACA;EACA;EACA,gBALe;EAMf;;AAzER;EACI;EACA;EACA;EACA;EACA;EACA;EAGI,cAVuF;;AA8EvF;EACI;;AAGJ;EACI,aAfW;EAgBX;EACA;EACA;EACA,YAnBW;EAoBX;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAzJpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAwIA;EACI;;AAGJ;EACI;;AAGJ;EAGI;EACA;EACA;EACA;EACA;EACA,aAPc;EAQd,gBARc;EASd;;AArJR;EACI;EACA;EACA;EACA;EACA;EACA;EAMI,aA2IsC;;AAEtC;EACI;;AAGJ;EACI,SAlBU;EAmBV;EACA;EACA;EACA;EACA;EACA,YAxBU;;AA0BV;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;;AAMhB;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAVJ;AAAA;IAWQ;;;AAGJ;AAAA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIR;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAMgB;EACI;;AAOpB;AAAA;EAEI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGI;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;;;AAWpC;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAVJ;IAWQ;;;AAGJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAMhB;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;;AAEA;EAHJ;IAIQ;;;AAGJ;AAAA;EAEI;;AAEA;EAJJ;AAAA;IAKQ;IACA;;;AAIR;EACI;;AAEA;EAHJ;IAIQ;;;AA1gBZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAsfI;EACI;EACA;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EANJ;IAOQ;IACA;;;AAGJ;AAAA;EAEI;EACA;EACA;;AAEA;AAAA;EACI;EACA;;AAGJ;AAAA;EACI;;AAIR;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AASxB;AAAA;AAAA;AAAA;AAAA;AAWQ;AAAA;AAAA;AAAA;EACI;;AAGJ;AAAA;AAAA;AAAA;EACI;EACA;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAMA;EChuBI;EACA;EACA;EACA;EACA;EACA;ED6tBA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"heat.js.css"} \ No newline at end of file diff --git a/dist/heat.js.min.css b/dist/heat.js.min.css index c4084710..1ebe6c28 100644 --- a/dist/heat.js.min.css +++ b/dist/heat.js.min.css @@ -1,2 +1,2 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ -:root{--heat-js-color-black:#3b3a3a;--heat-js-color-white:#F5F5F5;--heat-js-color-gray:#AAA;--heat-js-container-background-color:#22272e;--heat-js-container-border-color:#454c56;--heat-js-tooltip-background-color:var(--heat-js-container-background-color);--heat-js-tooltip-border-color:var(--heat-js-container-border-color);--heat-js-tooltip-text-color:var(--heat-js-color-white);--heat-js-years-background-color:var(--heat-js-container-background-color);--heat-js-years-border-color:var(--heat-js-container-border-color);--heat-js-years-text-color:var(--heat-js-color-white);--heat-js-years-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-title-background-color:var(--heat-js-container-background-color);--heat-js-title-border-color:var(--heat-js-container-border-color);--heat-js-title-text-color:var(--heat-js-color-white);--heat-js-title-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-day-background-color:#2d333b;--heat-js-day-border-color:var(--heat-js-container-border-color);--heat-js-day-background-color-hover:var(--heat-js-container-border-color);--heat-js-day-spacing:6.3px;--heat-js-day-opacity-hover:.7;--heat-js-day-opacity-active:.5;--heat-js-day-size:1.1rem;--heat-js-day-color-1-background-color:rgba(57,211,83,.25);--heat-js-day-color-1-border-color:rgba(57,211,83,.15);--heat-js-day-color-1-text-color:var(--heat-js-color-white);--heat-js-day-color-2-background-color:rgba(57,211,83,.5);--heat-js-day-color-2-border-color:rgba(57,211,83,.25);--heat-js-day-color-2-text-color:var(--heat-js-color-white);--heat-js-day-color-3-background-color:rgba(57,211,83,.75);--heat-js-day-color-3-border-color:rgba(57,211,83,.5);--heat-js-day-color-3-text-color:var(--heat-js-color-white);--heat-js-day-color-4-background-color:rgba(57,211,83,1);--heat-js-day-color-4-border-color:rgba(57,211,83,.75);--heat-js-day-color-4-text-color:var(--heat-js-color-black);--heat-js-button-background-color:var(--heat-js-day-background-color);--heat-js-button-border-color:var(--heat-js-container-border-color);--heat-js-button-text-color:var(--heat-js-color-white);--heat-js-button-background-color-hover:var(--heat-js-container-border-color);--heat-js-button-background-color-active:#616b79;--heat-js-border-radius:.5rem;--heat-js-border-radius-day:.25rem;--heat-js-border-size:.5px;--heat-js-border-size-day:1px;--heat-js-spacing:10px;--heat-js-spacing-font-size:.85rem;--heat-js-text-bold-weight:400;--heat-js-title-bold-weight:800;--heat-js-transition:all .3s}div.heat-js{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;display:inline-block;position:relative;border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-container-background-color);color:var(--heat-js-color-white);border:var(--heat-js-border-size) solid var(--heat-js-container-border-color);padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);width:100%;max-width:700px;margin:0!important}div.heat-js div.no-click{pointer-events:none!important}div.heat-js *{box-sizing:border-box;line-height:normal}div.heat-js *::before,div.heat-js *::after{box-sizing:border-box;line-height:normal}div.heat-js div.title-bar{text-align:right;margin-bottom:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.title{float:left;font-weight:var(--heat-js-title-bold-weight);font-size:1.2rem;padding-bottom:3px;cursor:pointer}div.heat-js div.title-bar div.title div.down-arrow{display:inline-block;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:14px solid var(--heat-js-color-white);margin-right:var(--heat-js-spacing)}div.heat-js div.title-bar div.title:hover div.titles-list{display:block}div.heat-js div.title-bar div.title div.titles-list{padding-top:3px;display:none;position:absolute;width:100px;margin-top:3px;z-index:100}div.heat-js div.title-bar div.title div.titles-list div.titles{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-title-background-color);border:var(--heat-js-border-size) solid var(--heat-js-title-border-color);color:var(--heat-js-title-text-color);overflow-y:scroll}div.heat-js div.title-bar div.title div.titles-list div.titles div.title{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:left;width:100%;transition:var(--heat-js-transition);font-size:var(--heat-js-spacing-font-size)!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):active{opacity:0.5!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):hover{cursor:pointer;background-color:var(--heat-js-title-background-color-hover)}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:last-child{border-bottom:none}div.heat-js div.title-bar div.title div.titles-list div.titles div.title-active{background-color:var(--heat-js-title-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.title-bar button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.title-bar button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.title-bar button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.title-bar button.back{margin-left:calc(var(--heat-js-spacing) * 2)!important}div.heat-js div.title-bar button.export{margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.title-bar div.year-text{margin-left:var(--heat-js-spacing);margin-right:var(--heat-js-spacing);display:inline-block;font-weight:var(--heat-js-title-bold-weight);position:relative;padding-top:5px;padding-bottom:5px;cursor:pointer}div.heat-js div.title-bar div.year-text div.down-arrow{display:inline-block;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:9px solid var(--heat-js-color-white);margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.year-text:hover div.years-list{display:block}div.heat-js div.title-bar div.year-text div.years-list{padding:5px;display:none;position:absolute;width:80px;left:50%;transform:translateX(-50%);margin-top:5px}div.heat-js div.title-bar div.year-text div.years-list div.years{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-years-background-color);border:var(--heat-js-border-size) solid var(--heat-js-years-border-color);color:var(--heat-js-years-text-color);height:183px;overflow-y:scroll;scroll-snap-type:y mandatory}div.heat-js div.title-bar div.year-text div.years-list div.years div.year{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:center;width:100%;transition:var(--heat-js-transition);scroll-snap-align:start}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):active{opacity:0.5!important}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):hover{cursor:pointer;background-color:var(--heat-js-years-background-color-hover)}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:last-child{border-bottom:none}div.heat-js div.title-bar div.year-text div.years-list div.years div.year-active{background-color:var(--heat-js-years-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:none}@media (min-width:768px){div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:inline-block}}div.heat-js div.map-contents{overflow-x:scroll;overflow-y:hidden}div.heat-js div.map-contents div.map{display:inline-flex;flex-direction:row}div.heat-js div.map-contents div.map div.days{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;z-index:50}@media (min-width:768px){div.heat-js div.map-contents div.map div.days{display:block}}div.heat-js div.map-contents div.map div.days div.day-name{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);margin-bottom:var(--heat-js-day-spacing);display:inline-flex;justify-content:center;flex-direction:column}div.heat-js div.map-contents div.map div.months{display:flex;justify-content:space-between;flex-grow:1}div.heat-js div.map-contents div.map div.months div.month{flex:1;pointer-events:none}div.heat-js div.map-contents div.map div.months div.month:last-child div.day-columns div.day-column:last-child div.day{margin-right:0!important}div.heat-js div.map-contents div.map div.months div.month div.month-name,div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{font-weight:var(--heat-js-text-bold-weight);text-align:left!important}div.heat-js div.map-contents div.map div.months div.month div.month-name{margin-bottom:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{margin-top:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.day-columns{display:flex;justify-content:space-between}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled{display:flex;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);margin-bottom:var(--heat-js-day-spacing);font-size:.6rem;justify-content:center;align-items:center;overflow:hidden}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:last-child,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled:last-child{margin-bottom:0}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day{pointer-events:all;background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);transition:var(--heat-js-transition)}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents{display:flex;overflow-x:scroll;overflow-y:hidden;text-wrap:nowrap;white-space:nowrap}div.heat-js div.chart-contents div.chart{display:inline-flex;flex-direction:row}div.heat-js div.chart-contents div.chart div.labels{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;border-right:var(--heat-js-border-size) solid var(--heat-js-container-border-color);z-index:50}@media (min-width:768px){div.heat-js div.chart-contents div.chart div.labels{display:block}}div.heat-js div.chart-contents div.chart div.labels div.label-0,div.heat-js div.chart-contents div.chart div.labels div.label-25,div.heat-js div.chart-contents div.chart div.labels div.label-50,div.heat-js div.chart-contents div.chart div.labels div.label-75,div.heat-js div.chart-contents div.chart div.labels div.label-100{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);display:inline-flex;justify-content:center;flex-direction:column;position:absolute;left:0}div.heat-js div.chart-contents div.chart div.labels div.label-0{top:0}div.heat-js div.chart-contents div.chart div.labels div.label-25{top:25%;transform:translateY(-25%)}div.heat-js div.chart-contents div.chart div.labels div.label-50{top:50%;transform:translateY(-50%)}div.heat-js div.chart-contents div.chart div.labels div.label-75{top:75%;transform:translateY(-75%)}div.heat-js div.chart-contents div.chart div.labels div.label-100{bottom:0}div.heat-js div.chart-contents div.chart div.day-lines{flex:1;border-bottom:var(--heat-js-border-size) solid var(--heat-js-container-border-color)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);vertical-align:bottom;width:8px;margin-right:1px;display:inline-block;transition:var(--heat-js-transition)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:first-child{margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:last-child{margin-right:0}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents div.chart-months{position:relative;height:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing))}div.heat-js div.chart-contents div.chart-months div.month-name,div.heat-js div.chart-contents div.chart-months div.month-name-space{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;position:absolute;bottom:0}div.heat-js div.chart-contents div.chart-months div.month-name-space{left:0;top:0;position:sticky;background-color:var(--heat-js-container-background-color)}div.heat-js div.guide{display:block}@media (min-width:768px){div.heat-js div.guide{display:flex}}div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{margin-top:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}@media (min-width:768px){div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{flex-basis:100%;margin-bottom:0}}div.heat-js div.guide div.map-types{text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-types{text-align:left}}div.heat-js div.guide div.map-types button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.guide div.map-types button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.guide div.map-types button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button{margin-left:0!important;margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.guide div.map-toggles{display:flex;align-items:center;justify-content:center;text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-toggles{text-align:right;justify-content:right}}div.heat-js div.guide div.map-toggles div.less-text,div.heat-js div.guide div.map-toggles div.more-text{display:inline-block;font-weight:var(--heat-js-text-bold-weight);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.less-text:hover,div.heat-js div.guide div.map-toggles div.more-text:hover{cursor:pointer;text-decoration:underline}div.heat-js div.guide div.map-toggles div.less-text:active,div.heat-js div.guide div.map-toggles div.more-text:active{color:var(--heat-js-color-gray)}div.heat-js div.guide div.map-toggles div.less-text{margin-right:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.more-text{margin-left:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.days{display:inline-flex;align-items:center;justify-content:right}div.heat-js div.guide div.map-toggles div.days div.day{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);display:inline-block;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);cursor:pointer;transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.days div.day:last-child{margin-right:0}div.heat-js div.day-color-1:active,div.heat-js div.day-color-2:active,div.heat-js div.day-color-3:active,div.heat-js div.day-color-4:active{opacity:var(--heat-js-day-opacity-active)!important}div.heat-js div.day-color-1:hover,div.heat-js div.day-color-2:hover,div.heat-js div.day-color-3:hover,div.heat-js div.day-color-4:hover{opacity:var(--heat-js-day-opacity-hover)}div.heat-js div.day-color-1{background-color:var(--heat-js-day-color-1-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-1-border-color)!important;color:var(--heat-js-day-color-1-text-color)}div.heat-js div.day-color-2{background-color:var(--heat-js-day-color-2-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-2-border-color)!important;color:var(--heat-js-day-color-2-text-color)}div.heat-js div.day-color-3{background-color:var(--heat-js-day-color-3-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-3-border-color)!important;color:var(--heat-js-day-color-3-text-color)}div.heat-js div.day-color-4{background-color:var(--heat-js-day-color-4-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-4-border-color)!important;color:var(--heat-js-day-color-4-text-color)}div.heat-js-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;position:absolute;background-color:var(--heat-js-tooltip-background-color);border:var(--heat-js-border-size) solid var(--heat-js-tooltip-border-color);color:var(--heat-js-tooltip-text-color);border-radius:var(--heat-js-border-radius);z-index:2000;max-width:300px;padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);font-weight:var(--heat-js-text-bold-weight);display:none} \ No newline at end of file +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ +:root{--heat-js-color-black:#3b3a3a;--heat-js-color-white:#F5F5F5;--heat-js-color-gray:#AAA;--heat-js-container-background-color:#22272e;--heat-js-container-border-color:#454c56;--heat-js-tooltip-background-color:var(--heat-js-container-background-color);--heat-js-tooltip-border-color:var(--heat-js-container-border-color);--heat-js-tooltip-text-color:var(--heat-js-color-white);--heat-js-years-background-color:var(--heat-js-container-background-color);--heat-js-years-border-color:var(--heat-js-container-border-color);--heat-js-years-text-color:var(--heat-js-color-white);--heat-js-years-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-title-background-color:var(--heat-js-container-background-color);--heat-js-title-border-color:var(--heat-js-container-border-color);--heat-js-title-text-color:var(--heat-js-color-white);--heat-js-title-background-color-hover:var(--heat-js-button-background-color-hover);--heat-js-day-background-color:#2d333b;--heat-js-day-border-color:var(--heat-js-container-border-color);--heat-js-day-background-color-hover:var(--heat-js-container-border-color);--heat-js-day-spacing:6.3px;--heat-js-day-opacity-hover:.7;--heat-js-day-opacity-active:.5;--heat-js-day-size:1.1rem;--heat-js-day-color-1-background-color:rgba(57,211,83,.25);--heat-js-day-color-1-border-color:rgba(57,211,83,.15);--heat-js-day-color-1-text-color:var(--heat-js-color-white);--heat-js-day-color-2-background-color:rgba(57,211,83,.5);--heat-js-day-color-2-border-color:rgba(57,211,83,.25);--heat-js-day-color-2-text-color:var(--heat-js-color-white);--heat-js-day-color-3-background-color:rgba(57,211,83,.75);--heat-js-day-color-3-border-color:rgba(57,211,83,.5);--heat-js-day-color-3-text-color:var(--heat-js-color-white);--heat-js-day-color-4-background-color:rgba(57,211,83,1);--heat-js-day-color-4-border-color:rgba(57,211,83,.75);--heat-js-day-color-4-text-color:var(--heat-js-color-black);--heat-js-button-background-color:var(--heat-js-day-background-color);--heat-js-button-border-color:var(--heat-js-container-border-color);--heat-js-button-text-color:var(--heat-js-color-white);--heat-js-button-background-color-hover:var(--heat-js-container-border-color);--heat-js-button-background-color-active:#616b79;--heat-js-border-radius:.5rem;--heat-js-border-radius-day:.25rem;--heat-js-border-size:.5px;--heat-js-border-size-day:1px;--heat-js-spacing:10px;--heat-js-spacing-font-size:.85rem;--heat-js-text-bold-weight:400;--heat-js-title-bold-weight:800;--heat-js-transition:all .3s}div.heat-js{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;display:inline-block;position:relative;border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-container-background-color);color:var(--heat-js-color-white);border:var(--heat-js-border-size) solid var(--heat-js-container-border-color);padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);width:100%;max-width:700px;margin:0!important}div.heat-js div.no-click{pointer-events:none!important}div.heat-js *{box-sizing:border-box;line-height:normal}div.heat-js *::before,div.heat-js *::after{box-sizing:border-box;line-height:normal}div.heat-js div.title-bar{text-align:right;margin-bottom:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.title{float:left;font-weight:var(--heat-js-title-bold-weight);font-size:1.2rem;padding-bottom:3px;cursor:pointer}div.heat-js div.title-bar div.title div.down-arrow{display:inline-block;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:14px solid var(--heat-js-color-white);margin-right:var(--heat-js-spacing)}div.heat-js div.title-bar div.title:hover div.titles-list{display:block}div.heat-js div.title-bar div.title div.titles-list{padding-top:3px;display:none;position:absolute;width:100px;margin-top:3px;z-index:100}div.heat-js div.title-bar div.title div.titles-list div.titles{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-title-background-color);border:var(--heat-js-border-size) solid var(--heat-js-title-border-color);color:var(--heat-js-title-text-color);overflow-y:scroll}div.heat-js div.title-bar div.title div.titles-list div.titles div.title{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:left;width:100%;transition:var(--heat-js-transition);font-size:var(--heat-js-spacing-font-size)!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):active{opacity:0.5!important}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:not(.title-active):hover{cursor:pointer;background-color:var(--heat-js-title-background-color-hover)}div.heat-js div.title-bar div.title div.titles-list div.titles div.title:last-child{border-bottom:none}div.heat-js div.title-bar div.title div.titles-list div.titles div.title-active{background-color:var(--heat-js-title-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.title-bar button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.title-bar button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.title-bar button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.title-bar button.back{margin-left:calc(var(--heat-js-spacing) * 2)!important}div.heat-js div.title-bar button.export{margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.title-bar div.year-text{margin-left:var(--heat-js-spacing);margin-right:var(--heat-js-spacing);display:inline-block;font-weight:var(--heat-js-title-bold-weight);position:relative;padding-top:5px;padding-bottom:5px;cursor:pointer}div.heat-js div.title-bar div.year-text div.down-arrow{display:inline-block;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:9px solid var(--heat-js-color-white);margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.title-bar div.year-text:hover div.years-list{display:block}div.heat-js div.title-bar div.year-text div.years-list{padding:5px;display:none;position:absolute;width:80px;left:50%;transform:translateX(-50%);margin-top:5px}div.heat-js div.title-bar div.year-text div.years-list div.years{border-radius:var(--heat-js-border-radius);background-color:var(--heat-js-years-background-color);border:var(--heat-js-border-size) solid var(--heat-js-years-border-color);color:var(--heat-js-years-text-color);height:183px;overflow-y:scroll;scroll-snap-type:y mandatory}div.heat-js div.title-bar div.year-text div.years-list div.years div.year{color:var(--heat-js-color-white);font-weight:var(--heat-js-text-bold-weight);border-bottom:var(--heat-js-border-size) dashed var(--heat-js-container-border-color);padding:var(--heat-js-spacing);text-align:center;width:100%;transition:var(--heat-js-transition);scroll-snap-align:start}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):active{opacity:0.5!important}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:not(.year-active):hover{cursor:pointer;background-color:var(--heat-js-years-background-color-hover)}div.heat-js div.title-bar div.year-text div.years-list div.years div.year:last-child{border-bottom:none}div.heat-js div.title-bar div.year-text div.years-list div.years div.year-active{background-color:var(--heat-js-years-background-color-hover);font-weight:900;cursor:default!important}div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:none}@media (min-width:768px){div.heat-js div.title-bar button.export,div.heat-js div.title-bar button.refresh{display:inline-block}}div.heat-js div.map-contents{overflow-x:scroll;overflow-y:hidden}div.heat-js div.map-contents div.map{display:inline-flex;flex-direction:row}div.heat-js div.map-contents div.map div.days,div.heat-js div.map-contents div.map div.days-months-bottom{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;z-index:50}@media (min-width:768px){div.heat-js div.map-contents div.map div.days,div.heat-js div.map-contents div.map div.days-months-bottom{display:block}}div.heat-js div.map-contents div.map div.days div.day-name,div.heat-js div.map-contents div.map div.days-months-bottom div.day-name{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);margin-bottom:var(--heat-js-day-spacing);display:inline-flex;justify-content:center;flex-direction:column}div.heat-js div.map-contents div.map div.days-months-bottom{padding-top:0!important}div.heat-js div.map-contents div.map div.months{display:flex;justify-content:space-between;flex-grow:1}div.heat-js div.map-contents div.map div.months div.month{flex:1;pointer-events:none}div.heat-js div.map-contents div.map div.months div.month:last-child div.day-columns div.day-column:last-child div.day{margin-right:0!important}div.heat-js div.map-contents div.map div.months div.month div.month-name,div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{font-weight:var(--heat-js-text-bold-weight);text-align:left!important}div.heat-js div.map-contents div.map div.months div.month div.month-name{margin-bottom:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.month-name-bottom{margin-top:var(--heat-js-spacing)}div.heat-js div.map-contents div.map div.months div.month div.day-columns{display:flex;justify-content:space-between}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled{display:flex;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);margin-bottom:var(--heat-js-day-spacing);font-size:.6rem;justify-content:center;align-items:center;overflow:hidden}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:last-child,div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day-disabled:last-child{margin-bottom:0}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day{pointer-events:all;background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);transition:var(--heat-js-transition)}div.heat-js div.map-contents div.map div.months div.month div.day-columns div.day-column div.day:not(.no-hover):hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents{display:flex;overflow-x:scroll;overflow-y:hidden;text-wrap:nowrap;white-space:nowrap}div.heat-js div.chart-contents div.chart{display:inline-flex;flex-direction:row}div.heat-js div.chart-contents div.chart div.labels{background-color:var(--heat-js-container-background-color);padding-right:calc(var(--heat-js-spacing) * 3);padding-top:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px);position:sticky;left:0;display:none;border-right:var(--heat-js-border-size) solid var(--heat-js-container-border-color);z-index:50}@media (min-width:768px){div.heat-js div.chart-contents div.chart div.labels{display:block}}div.heat-js div.chart-contents div.chart div.labels div.label-0,div.heat-js div.chart-contents div.chart div.labels div.label-25,div.heat-js div.chart-contents div.chart div.labels div.label-50,div.heat-js div.chart-contents div.chart div.labels div.label-75,div.heat-js div.chart-contents div.chart div.labels div.label-100{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;height:var(--heat-js-day-size);display:inline-flex;justify-content:center;flex-direction:column;position:absolute;left:0}div.heat-js div.chart-contents div.chart div.labels div.label-0{top:0}div.heat-js div.chart-contents div.chart div.labels div.label-25{top:25%;transform:translateY(-25%)}div.heat-js div.chart-contents div.chart div.labels div.label-50{top:50%;transform:translateY(-50%)}div.heat-js div.chart-contents div.chart div.labels div.label-75{top:75%;transform:translateY(-75%)}div.heat-js div.chart-contents div.chart div.labels div.label-100{bottom:0}div.heat-js div.chart-contents div.chart div.day-lines{flex:1;border-bottom:var(--heat-js-border-size) solid var(--heat-js-container-border-color)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);vertical-align:bottom;width:8px;margin-right:1px;display:inline-block;transition:var(--heat-js-transition)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:first-child{margin-left:calc(var(--heat-js-spacing) / 2)}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:last-child{margin-right:0}div.heat-js div.chart-contents div.chart div.day-lines div.day-line:not(.no-hover):hover{cursor:pointer;background:var(--heat-js-day-background-color-hover)}div.heat-js div.chart-contents div.chart-months{position:relative;height:calc(var(--heat-js-spacing-font-size) + var(--heat-js-spacing))}div.heat-js div.chart-contents div.chart-months div.month-name,div.heat-js div.chart-contents div.chart-months div.month-name-space{font-weight:var(--heat-js-text-bold-weight);text-align:left!important;position:absolute;bottom:0}div.heat-js div.chart-contents div.chart-months div.month-name-space{left:0;top:0;position:sticky;background-color:var(--heat-js-container-background-color)}div.heat-js div.guide{display:block}@media (min-width:768px){div.heat-js div.guide{display:flex}}div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{margin-top:calc(var(--heat-js-spacing) + var(--heat-js-spacing) / 2)}@media (min-width:768px){div.heat-js div.guide div.map-types,div.heat-js div.guide div.map-toggles{flex-basis:100%;margin-bottom:0}}div.heat-js div.guide div.map-types{text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-types{text-align:left}}div.heat-js div.guide div.map-types button{background-color:var(--heat-js-button-background-color);border:var(--heat-js-border-size) solid var(--heat-js-button-border-color);color:var(--heat-js-button-text-color);border-radius:var(--heat-js-border-radius);padding-top:5px;padding-bottom:5px;padding-left:9px;padding-right:9px;outline:none;transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button:active{background:var(--heat-js-button-background-color-active)!important}div.heat-js div.guide div.map-types button:hover{cursor:pointer;background:var(--heat-js-button-background-color-hover)}div.heat-js div.guide div.map-types button.active{cursor:default;background:var(--heat-js-button-background-color-hover);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-types button{margin-left:0!important;margin-right:calc(var(--heat-js-spacing) / 2)!important}div.heat-js div.guide div.map-toggles{display:flex;align-items:center;justify-content:center;text-align:center}@media (min-width:768px){div.heat-js div.guide div.map-toggles{text-align:right;justify-content:right}}div.heat-js div.guide div.map-toggles div.less-text,div.heat-js div.guide div.map-toggles div.more-text{display:inline-block;font-weight:var(--heat-js-text-bold-weight);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.less-text:hover,div.heat-js div.guide div.map-toggles div.more-text:hover{cursor:pointer;text-decoration:underline}div.heat-js div.guide div.map-toggles div.less-text:active,div.heat-js div.guide div.map-toggles div.more-text:active{color:var(--heat-js-color-gray)}div.heat-js div.guide div.map-toggles div.less-text{margin-right:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.more-text{margin-left:var(--heat-js-spacing)}div.heat-js div.guide div.map-toggles div.days{display:inline-flex;align-items:center;justify-content:right}div.heat-js div.guide div.map-toggles div.days div.day{background-color:var(--heat-js-day-background-color);border:var(--heat-js-border-size) solid var(--heat-js-day-border-color);display:inline-block;border-radius:var(--heat-js-border-radius-day);width:var(--heat-js-day-size);height:var(--heat-js-day-size);margin-right:var(--heat-js-day-spacing);transition:var(--heat-js-transition)}div.heat-js div.guide div.map-toggles div.days div.day:last-child{margin-right:0}div.heat-js div.day-color-1:not(.no-hover):active,div.heat-js div.day-color-2:not(.no-hover):active,div.heat-js div.day-color-3:not(.no-hover):active,div.heat-js div.day-color-4:not(.no-hover):active{opacity:var(--heat-js-day-opacity-active)!important}div.heat-js div.day-color-1:not(.no-hover):hover,div.heat-js div.day-color-2:not(.no-hover):hover,div.heat-js div.day-color-3:not(.no-hover):hover,div.heat-js div.day-color-4:not(.no-hover):hover{cursor:pointer;opacity:var(--heat-js-day-opacity-hover)}div.heat-js div.day-color-1{background-color:var(--heat-js-day-color-1-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-1-border-color)!important;color:var(--heat-js-day-color-1-text-color)}div.heat-js div.day-color-2{background-color:var(--heat-js-day-color-2-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-2-border-color)!important;color:var(--heat-js-day-color-2-text-color)}div.heat-js div.day-color-3{background-color:var(--heat-js-day-color-3-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-3-border-color)!important;color:var(--heat-js-day-color-3-text-color)}div.heat-js div.day-color-4{background-color:var(--heat-js-day-color-4-background-color)!important;border:var(--heat-js-border-size-day) solid var(--heat-js-day-color-4-border-color)!important;color:var(--heat-js-day-color-4-text-color)}div.heat-js-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;position:absolute;background-color:var(--heat-js-tooltip-background-color);border:var(--heat-js-border-size) solid var(--heat-js-tooltip-border-color);color:var(--heat-js-tooltip-text-color);border-radius:var(--heat-js-border-radius);z-index:2000;max-width:300px;padding:var(--heat-js-spacing);font-size:var(--heat-js-spacing-font-size);font-weight:var(--heat-js-text-bold-weight);display:none} \ No newline at end of file diff --git a/dist/heat.min.js b/dist/heat.min.js index e0a635c2..050c04af 100644 --- a/dist/heat.min.js +++ b/dist/heat.min.js @@ -1,40 +1,40 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ -(function(){function Y(){for(var a=g.domElementTypes,c=a.length,b=0;bd;d++)for(var f=Q(a.currentView.year,d),e=0;e=e.minimum)d=e;else break}return d}function ka(a){r(a.currentView.tooltip)||(a.currentView.tooltip=n(y.body,"div","heat-js-tooltip"),a.currentView.tooltip.style.display="none", -y.body.addEventListener("mousemove",function(){V(a)}),y.addEventListener("scroll",function(){V(a)}))}function K(a,c,b){null!==a&&(a.onmousemove=function(d){pa(d,c,b)})}function pa(a,c,b){qa(a);V(c);c.currentView.tooltipTimer=setTimeout(function(){c.currentView.tooltip.innerHTML=b;c.currentView.tooltip.style.display="block";var d=c.currentView.tooltip,f=a.pageX,e=a.pageY,k=y.documentElement;var l=(D.pageXOffset||k.scrollLeft)-(k.clientLeft||0);var m=(D.pageYOffset||k.scrollTop)-(k.clientTop||0);d.style.display= -"block";f+d.offsetWidth>D.innerWidth?f-=d.offsetWidth:f++;e+d.offsetHeight>D.innerHeight?e-=d.offsetHeight:e++;fl;l++){m=Q(a.currentView.year,l);for(var v=0;ve;e++)-1e;e++)if(-1=C?A=!0:n(v,"div","day-disabled");if(A){var M=null;-1b;b++)if(-1l;l++)-1a.getDay()-1?6:a.getDay()-1}function ha(a,c){var b=a,d=fa(c);b=b.replace("{dddd}",g.dayNames[d]);b=b.replace("{dd}",E(c.getDate()));b=b.replace("{d}",c.getDate());d=b.replace;var f=c.getDate(),e=g.thText;if(31===f||21===f||1===f)e=g.stText;else if(22===f||2===f)e=g.ndText;else if(23===f||3===f)e=g.rdText;b=d.call(b,"{o}",e);b=b.replace("{mmmm}",g.monthNames[c.getMonth()]);b=b.replace("{mm}",E(c.getMonth()+ -1));b=b.replace("{m}",c.getMonth()+1);b=b.replace("{yyyy}",c.getFullYear());b=b.replace("{yyy}",c.getFullYear().toString().substring(1));b=b.replace("{yy}",c.getFullYear().toString().substring(2));return b=b.replace("{y}",parseInt(c.getFullYear().toString().substring(2)).toString())}function r(a){return null!==a&&void 0!==a&&a!==q.empty}function O(a){return r(a)&&"object"===typeof a}function J(a){return r(a)&&"boolean"===typeof a}function B(a){return r(a)&&"string"===typeof a}function G(a){return r(a)&& -"function"===typeof a}function R(a){return r(a)&&"number"===typeof a}function T(a){return O(a)&&a instanceof Array}function n(a,c,b){c=c.toLowerCase();var d="text"===c;X.hasOwnProperty(c)||(X[c]=d?y.createTextNode(q.empty):y.createElement(c));c=X[c].cloneNode(!1);r(b)&&(c.className=b);a.appendChild(c);return c}function u(a,c,b,d){a=n(a,c,b);a.innerHTML=d;return a}function W(a,c,b){var d=null;b=r(b)?b:!1;D.getComputedStyle?d=y.defaultView.getComputedStyle(a,null).getPropertyValue(c):a.currentStyle&& -(d=a.currentStyle[c]);b&&(d=parseFloat(d,10));return d}function p(a){var c=null;G(a)&&(c=a.apply(null,[].slice.call(arguments,1)));return c}function w(a,c){return B(a)?a:c}function x(a,c){return J(a)?a:c}function z(a,c){return G(a)?a:c}function S(a,c){return R(a)?a:c}function ja(a){var c=!0,b=null;try{B(a)&&(b=JSON.parse(a))}catch(d){try{b=eval("("+a+")"),G(b)&&(b=b())}catch(f){g.safeMode||(console.error("Errors in object: "+d.message+", "+f.message),c=!1),b=null}}return{parsed:c,result:b}}function qa(a){a.preventDefault(); -a.cancelBubble=!0}function ba(){for(var a=[],c=0;32>c;c++){8!==c&&12!==c&&16!==c&&20!==c||a.push("-");var b=Math.floor(16*Math.random()).toString(16);a.push(b)}return a.join(q.empty)}function E(a){a=a.toString();return 1===a.length?"0"+a:a}function H(a){return a.getFullYear()+"-"+E(a.getMonth()+1)+"-"+E(a.getDate())}function ia(){g.safeMode=x(g.safeMode,!0);var a=g,c=g.domElementTypes,b=["*"];B(c)?(c=c.split(q.space),0===c.length&&(c=b)):c=T(c)?c:b;a.domElementTypes=c;g.stText=w(g.stText,"st");g.ndText= -w(g.ndText,"nd");g.rdText=w(g.rdText,"rd");g.thText=w(g.thText,"th");g.backButtonText=w(g.backButtonText,"Back");g.nextButtonText=w(g.nextButtonText,"Next");g.refreshButtonText=w(g.refreshButtonText,"Refresh");g.exportButtonText=w(g.exportButtonText,"Export");g.lessText=w(g.lessText,"Less");g.moreText=w(g.moreText,"More");g.dateText=w(g.dateText,"Date");g.countText=w(g.countText,"Count");g.mapText=w(g.mapText,"Map");g.chartText=w(g.chartText,"Chart");P(g.monthNames,12)&&(g.monthNames="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ")); -P(g.dayNames,7)&&(g.dayNames="Mon Tue Wed Thu Fri Sat Sun".split(" "))}function P(a,c){c=R(c)?c:1;return!T(a)||a.lengthb&&(a.currentView.year=b,t(a),p(a.onSetYear,a.currentView.year))}return this};this.getYear=function(a){var c=null;h.hasOwnProperty(a)&&(c=h[a].options.currentView.year);return c};this.render=function(a, -c){Z(aa(c,a));return this};this.renderAll=function(){Y();return this};this.destroyAll=function(){for(var a in h)if(h.hasOwnProperty(a)){var c=h[a].options;c.currentView.element.innerHTML=q.empty;c.currentView.element.className=q.empty;y.body.removeChild(c.currentView.tooltip);p(c.onDestroy,c.currentView.element)}h={};return this};this.destroy=function(a){if(h.hasOwnProperty(a)){var c=h[a].options;c.currentView.element.innerHTML=q.empty;c.currentView.element.className=q.empty;y.body.removeChild(c.currentView.tooltip); -p(c.onDestroy,c.currentView.element);delete h[a]}return this};this.setConfiguration=function(a){g=O(a)?a:{};ia();return this};this.getVersion=function(){return"1.6.0"};(function(a,c){y=a;D=c;ia();y.addEventListener("DOMContentLoaded",function(){Y()});r(D.$heat)||(D.$heat=this)})(document,window)})(); \ No newline at end of file +c;b.currentView.tooltip=null;b.currentView.tooltipTimer=null;b.currentView.mapContents=null;b.currentView.mapContentsScrollLeft=0;b.currentView.chartContents=null;b.currentView.chartContentsScrollLeft=0;b.currentView.colorsVisible={};b.currentView.year=b.year;b.currentView.type="None";B(b.view)&&"map"!==b.view.toLowerCase()?"chart"===b.view.toLowerCase()?b.currentView.view=2:b.currentView.view=1:b.currentView.view=1;return b}function aa(a){q(a.onBeforeRender,a.currentView.element);B(a.currentView.element.id)|| +(a.currentView.element.id=ca());a.currentView.element.removeAttribute("data-heat-options");da(a.currentView.element.id,a);t(a);q(a.onRenderComplete,a.currentView.element)}function t(a){r(a.currentView.mapContents)&&(a.currentView.mapContentsScrollLeft=a.currentView.mapContents.scrollLeft);r(a.currentView.chartContents)&&(a.currentView.chartContentsScrollLeft=a.currentView.chartContents.scrollLeft);a.currentView.element.className="heat-js";a.currentView.element.innerHTML=p.empty;la(a);ma(a);na(a); +oa(a);1===a.currentView.view?(a.currentView.mapContents.style.display="block",a.currentView.chartContents.style.display="none"):(a.currentView.mapContents.style.display="none",a.currentView.chartContents.style.display="block")}function V(a,c){return!a.currentView.colorsVisible.hasOwnProperty(c)||a.currentView.colorsVisible[c]}function da(a,c){h[a]={options:c,type:{},types:1};h[a].type.None={}}function ea(a,c){for(var b=a.mapRangeColors.length,d=0;dd;d++)for(var f=R(a.currentView.year,d),e=0;e=e.minimum)d=e;else break}return d}function la(a){r(a.currentView.tooltip)||(a.currentView.tooltip=n(y.body,"div","heat-js-tooltip"),a.currentView.tooltip.style.display="none", +y.body.addEventListener("mousemove",function(){W(a)}),y.addEventListener("scroll",function(){W(a)}))}function L(a,c,b){null!==a&&(a.onmousemove=function(d){qa(d,c,b)})}function qa(a,c,b){ra(a);W(c);c.currentView.tooltipTimer=setTimeout(function(){c.currentView.tooltip.innerHTML=b;c.currentView.tooltip.style.display="block";var d=c.currentView.tooltip,f=a.pageX,e=a.pageY,k=y.documentElement;var l=(E.pageXOffset||k.scrollLeft)-(k.clientLeft||0);var m=(E.pageYOffset||k.scrollTop)-(k.clientTop||0);d.style.display= +"block";f+d.offsetWidth>E.innerWidth?f-=d.offsetWidth:f++;e+d.offsetHeight>E.innerHeight?e-=d.offsetHeight:e++;fl;l++){m=R(a.currentView.year,l);for(var v=0;ve;e++)-1e;e++)if(-1< +a.monthsToShow.indexOf(e+1)){var k=n(c,"div","month");a.showMonthNames&&!a.placeMonthNamesOnTheBottom&&u(k,"div","month-name",g.monthNames[e]);var l=n(k,"div","day-columns"),m=R(b,e),v=n(l,"div","day-column"),A=!1,D=ha(new Date(b,e,1)),M=1;m+=D;for(var G=0;G=D?A=!0:n(v,"div","day-disabled");if(A){var N=null;-1b;b++)if(-1l;l++)-1a.getDay()-1?6:a.getDay()-1}function ia(a,c){var b=a,d=ha(c);b=b.replace("{dddd}",g.dayNames[d]); +b=b.replace("{dd}",F(c.getDate()));b=b.replace("{d}",c.getDate());d=b.replace;var f=c.getDate(),e=g.thText;if(31===f||21===f||1===f)e=g.stText;else if(22===f||2===f)e=g.ndText;else if(23===f||3===f)e=g.rdText;b=d.call(b,"{o}",e);b=b.replace("{mmmm}",g.monthNames[c.getMonth()]);b=b.replace("{mm}",F(c.getMonth()+1));b=b.replace("{m}",c.getMonth()+1);b=b.replace("{yyyy}",c.getFullYear());b=b.replace("{yyy}",c.getFullYear().toString().substring(1));b=b.replace("{yy}",c.getFullYear().toString().substring(2)); +return b=b.replace("{y}",parseInt(c.getFullYear().toString().substring(2)).toString())}function r(a){return null!==a&&void 0!==a&&a!==p.empty}function P(a){return r(a)&&"object"===typeof a}function K(a){return r(a)&&"boolean"===typeof a}function B(a){return r(a)&&"string"===typeof a}function H(a){return r(a)&&"function"===typeof a}function S(a){return r(a)&&"number"===typeof a}function U(a){return P(a)&&a instanceof Array}function n(a,c,b){c=c.toLowerCase();var d="text"===c;Y.hasOwnProperty(c)||(Y[c]= +d?y.createTextNode(p.empty):y.createElement(c));c=Y[c].cloneNode(!1);r(b)&&(c.className=b);a.appendChild(c);return c}function u(a,c,b,d){a=n(a,c,b);a.innerHTML=d;return a}function X(a,c,b){var d=null;b=r(b)?b:!1;E.getComputedStyle?d=y.defaultView.getComputedStyle(a,null).getPropertyValue(c):a.currentStyle&&(d=a.currentStyle[c]);b&&(d=parseFloat(d,10));return d}function C(a,c){a.className+=p.space+c}function ra(a){a.preventDefault();a.cancelBubble=!0}function q(a){var c=null;H(a)&&(c=a.apply(null, +[].slice.call(arguments,1)));return c}function w(a,c){return B(a)?a:c}function x(a,c){return K(a)?a:c}function z(a,c){return H(a)?a:c}function T(a,c){return S(a)?a:c}function ka(a){var c=!0,b=null;try{B(a)&&(b=JSON.parse(a))}catch(d){try{b=eval("("+a+")"),H(b)&&(b=b())}catch(f){g.safeMode||(console.error("Errors in object: "+d.message+", "+f.message),c=!1),b=null}}return{parsed:c,result:b}}function ca(){for(var a=[],c=0;32>c;c++){8!==c&&12!==c&&16!==c&&20!==c||a.push(p.dash);var b=Math.floor(16*Math.random()).toString(16); +a.push(b)}return a.join(p.empty)}function F(a){a=a.toString();return 1===a.length?"0"+a:a}function I(a){return a.getFullYear()+p.dash+F(a.getMonth()+1)+p.dash+F(a.getDate())}function ja(){g.safeMode=x(g.safeMode,!0);var a=g,c=g.domElementTypes,b=["*"];B(c)?(c=c.split(p.space),0===c.length&&(c=b)):c=U(c)?c:b;a.domElementTypes=c;g.stText=w(g.stText,"st");g.ndText=w(g.ndText,"nd");g.rdText=w(g.rdText,"rd");g.thText=w(g.thText,"th");g.backButtonText=w(g.backButtonText,"Back");g.nextButtonText=w(g.nextButtonText, +"Next");g.refreshButtonText=w(g.refreshButtonText,"Refresh");g.exportButtonText=w(g.exportButtonText,"Export");g.lessText=w(g.lessText,"Less");g.moreText=w(g.moreText,"More");g.dateText=w(g.dateText,"Date");g.countText=w(g.countText,"Count");g.mapText=w(g.mapText,"Map");g.chartText=w(g.chartText,"Chart");Q(g.monthNames,12)&&(g.monthNames="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "));Q(g.dayNames,7)&&(g.dayNames="Mon Tue Wed Thu Fri Sat Sun".split(" "))}function Q(a,c){c=S(c)?c:1;return!U(a)|| +a.lengthb&&(a.currentView.year=b,t(a),q(a.onSetYear,a.currentView.year))}return this};this.getYear=function(a){var c=null;h.hasOwnProperty(a)&&(c=h[a].options.currentView.year);return c};this.render=function(a,c){aa(ba(c,a));return this};this.renderAll=function(){Z();return this};this.destroyAll=function(){for(var a in h)if(h.hasOwnProperty(a)){var c= +h[a].options;c.currentView.element.innerHTML=p.empty;c.currentView.element.className=p.empty;y.body.removeChild(c.currentView.tooltip);q(c.onDestroy,c.currentView.element)}h={};return this};this.destroy=function(a){if(h.hasOwnProperty(a)){var c=h[a].options;c.currentView.element.innerHTML=p.empty;c.currentView.element.className=p.empty;y.body.removeChild(c.currentView.tooltip);q(c.onDestroy,c.currentView.element);delete h[a]}return this};this.setConfiguration=function(a){g=P(a)?a:{};ja();return this}; +this.getVersion=function(){return"1.6.1"};(function(a,c){y=a;E=c;ja();y.addEventListener("DOMContentLoaded",function(){Z()});r(E.$heat)||(E.$heat=this)})(document,window)})(); \ No newline at end of file diff --git a/dist/themes/heat.js.light.theme.css b/dist/themes/heat.js.light.theme.css index 5d69809b..92525933 100644 --- a/dist/themes/heat.js.light.theme.css +++ b/dist/themes/heat.js.light.theme.css @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ :root { /* Colors */ --heat-js-color-black: #F5F5F5; diff --git a/dist/translations/heat.translations.ar.js b/dist/translations/heat.translations.ar.js index 33e20cf4..37c9b6ea 100644 --- a/dist/translations/heat.translations.ar.js +++ b/dist/translations/heat.translations.ar.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.bn.js b/dist/translations/heat.translations.bn.js index e43d775c..5c90c591 100644 --- a/dist/translations/heat.translations.bn.js +++ b/dist/translations/heat.translations.bn.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.de.js b/dist/translations/heat.translations.de.js index e7250138..5cc66c09 100644 --- a/dist/translations/heat.translations.de.js +++ b/dist/translations/heat.translations.de.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.en.js b/dist/translations/heat.translations.en.js index 8580dc6e..35f03626 100644 --- a/dist/translations/heat.translations.en.js +++ b/dist/translations/heat.translations.en.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "st", "ndText": "nd", diff --git a/dist/translations/heat.translations.es.js b/dist/translations/heat.translations.es.js index f8867702..2cc02fc9 100644 --- a/dist/translations/heat.translations.es.js +++ b/dist/translations/heat.translations.es.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.fr.js b/dist/translations/heat.translations.fr.js index 35186339..41beca89 100644 --- a/dist/translations/heat.translations.fr.js +++ b/dist/translations/heat.translations.fr.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.hi.js b/dist/translations/heat.translations.hi.js index f0743a48..f373b4b0 100644 --- a/dist/translations/heat.translations.hi.js +++ b/dist/translations/heat.translations.hi.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.ja.js b/dist/translations/heat.translations.ja.js index 16277dfa..e43ae4c5 100644 --- a/dist/translations/heat.translations.ja.js +++ b/dist/translations/heat.translations.ja.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.pl.js b/dist/translations/heat.translations.pl.js index c080107a..399adc40 100644 --- a/dist/translations/heat.translations.pl.js +++ b/dist/translations/heat.translations.pl.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.pt.js b/dist/translations/heat.translations.pt.js index 68503ecb..a75abcd1 100644 --- a/dist/translations/heat.translations.pt.js +++ b/dist/translations/heat.translations.pt.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.tr.js b/dist/translations/heat.translations.tr.js index 292951e2..f0c38a13 100644 --- a/dist/translations/heat.translations.tr.js +++ b/dist/translations/heat.translations.tr.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/dist/translations/heat.translations.zh.js b/dist/translations/heat.translations.zh.js index 2687d104..bdd7d36f 100644 --- a/dist/translations/heat.translations.zh.js +++ b/dist/translations/heat.translations.zh.js @@ -1,4 +1,4 @@ -/*! Heat.js v1.6.0 | (c) Bunoon 2024 | MIT License */ +/*! Heat.js v1.6.1 | (c) Bunoon 2024 | MIT License */ $heat.setConfiguration( { "stText": "", "ndText": "", diff --git a/docs/CHANGE_LOG.md b/docs/CHANGE_LOG.md index 0f15ac77..d1a34512 100644 --- a/docs/CHANGE_LOG.md +++ b/docs/CHANGE_LOG.md @@ -1,5 +1,13 @@ # Heat.js - Change Log: +## Version 1.6.1: +- Fixed a fault that prevented the tooltips from showing when click events are not assigned, or the map toggles are turned off. +- Removed more duplicate code. +- Removed a manual setter for the position of the day names in the map view (when the month names are at the bottom). + +
+ + ## Version 1.6.0: #### **New Features:** diff --git a/heat.js.nuspec b/heat.js.nuspec index f5546d55..85519b1f 100644 --- a/heat.js.nuspec +++ b/heat.js.nuspec @@ -2,7 +2,7 @@ jHeat.js - 1.6.0 + 1.6.1 Heat.js A lightweight JavaScript library that generates customizable heat maps to visualize date-based activity and trends. William Troup diff --git a/package.json b/package.json index 80af63ca..3979908a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "jheat.js", "title": "Heat.js", "description": "A lightweight JavaScript library that generates customizable heat maps to visualize date-based activity and trends.", - "version": "1.6.0", + "version": "1.6.1", "main": "dist/heat.js", "homepage": "https://www.william-troup.com/heat-js/", "author": { diff --git a/src/heat.js b/src/heat.js index 8f6d02dc..0aa620ad 100644 --- a/src/heat.js +++ b/src/heat.js @@ -4,7 +4,7 @@ * A lightweight JavaScript library that generates customizable heat maps to visualize date-based activity and trends. * * @file observe.js - * @version v1.6.0 + * @version v1.6.1 * @author Bunoon * @license MIT License * @copyright Bunoon 2024 @@ -24,6 +24,8 @@ empty: "", space: " ", newLine: "\n", + dash: "-", + underscore: "_" }, // Variables: Elements @@ -307,7 +309,7 @@ }; } else { - optionMap.className += _string.space + "title-active"; + addClass( optionMap, "title-active" ); } if ( bindingOptions.currentView.view !== _elements_View_Chart ) { @@ -319,9 +321,8 @@ }; } else { - optionChart.className += _string.space + "title-active"; + addClass( optionChart, "title-active" ); } - if ( bindingOptions.showExportButton ) { var exportData = createElementWithHTML( titleBar, "button", "export", _configuration.exportButtonText ); @@ -389,7 +390,7 @@ }; } else { - year.className += _string.space + "year-active"; + addClass( year, "year-active" ); } } @@ -414,7 +415,7 @@ var days = createElement( map, "div", "days" ); if ( !bindingOptions.showMonthNames || bindingOptions.placeMonthNamesOnTheBottom ) { - days.style.paddingTop = "0px"; + days.className = "days-months-bottom"; } for ( var dayNameIndex = 0; dayNameIndex < 7; dayNameIndex++ ) { @@ -523,13 +524,13 @@ }; } else { - day.className += _string.space + "no-click"; + addClass( day, "no-hover" ); } var useMapRangeColor = getMapRangeColor( mapRangeColors, dateCount ); if ( isDefined( useMapRangeColor ) && isHeatMapColorVisible( bindingOptions, useMapRangeColor.id ) ) { - day.className += _string.space + useMapRangeColor.cssClassName; + addClass( day, useMapRangeColor.cssClassName ); } return day; @@ -651,13 +652,13 @@ }; } else { - dayLine.className += _string.space + "no-click"; + addClass( dayLine, "no-hover" ); } var useMapRangeColor = getMapRangeColor( mapRangeColors, dateCount ); if ( isDefined( useMapRangeColor ) && isHeatMapColorVisible( bindingOptions, useMapRangeColor.id ) ) { - dayLine.className += _string.space + useMapRangeColor.cssClassName; + addClass( dayLine, useMapRangeColor.cssClassName ); } } @@ -702,7 +703,7 @@ }; } else { - lessText.className += _string.space + "no-click"; + addClass( lessText, "no-click" ); } var days = createElement( mapToggles, "div", "days" ), @@ -723,7 +724,7 @@ }; } else { - moreText.className += _string.space + "no-click"; + addClass( moreText, "no-click" ); } } } @@ -732,7 +733,7 @@ var typeButton = createElementWithHTML( mapTypes, "button", "type", type ); if ( bindingOptions.currentView.type === type ) { - typeButton.className += _string.space + "active"; + addClass( typeButton, "active" ); } typeButton.onclick = function() { @@ -774,7 +775,7 @@ }; } else { - day.className += _string.space + "no-click"; + addClass( day, "no-hover" ); } } @@ -845,15 +846,15 @@ function getCsvFilename( bindingOptions ) { var date = new Date(), - datePart = padNumber( date.getDate() ) + "-" + padNumber( date.getMonth() + 1 ) + "-" + date.getFullYear(), - timePart = padNumber( date.getHours() ) + "-" + padNumber( date.getMinutes() ), + datePart = padNumber( date.getDate() ) + _string.dash + padNumber( date.getMonth() + 1 ) + _string.dash + date.getFullYear(), + timePart = padNumber( date.getHours() ) + _string.dash + padNumber( date.getMinutes() ), filenameStart = _string.empty; if ( bindingOptions.currentView.type !== _elements_DateCounts_DefaultType ) { - filenameStart = bindingOptions.currentView.type.toLowerCase().replace( _string.space, "_" ) + "_"; + filenameStart = bindingOptions.currentView.type.toLowerCase().replace( _string.space, _string.underscore ) + _string.underscore; } - return filenameStart + datePart + "_" + timePart + ".csv"; + return filenameStart + datePart + _string.underscore + timePart + ".csv"; } function getCsvValue( text ) { @@ -1111,6 +1112,57 @@ return value; } + function addClass( element, className ) { + element.className += _string.space + className; + } + + function cancelBubble( e ) { + e.preventDefault(); + e.cancelBubble = true; + } + + function getScrollPosition() { + var doc = _parameter_Document.documentElement, + left = ( _parameter_Window.pageXOffset || doc.scrollLeft ) - ( doc.clientLeft || 0 ), + top = ( _parameter_Window.pageYOffset || doc.scrollTop ) - ( doc.clientTop || 0 ); + + return { + left: left, + top: top + }; + } + + function showElementAtMousePosition( e, element ) { + var left = e.pageX, + top = e.pageY, + scrollPosition = getScrollPosition(); + + element.style.display = "block"; + + if ( left + element.offsetWidth > _parameter_Window.innerWidth ) { + left -= element.offsetWidth; + } else { + left++; + } + + if ( top + element.offsetHeight > _parameter_Window.innerHeight ) { + top -= element.offsetHeight; + } else { + top++; + } + + if ( left < scrollPosition.left ) { + left = e.pageX + 1; + } + + if ( top < scrollPosition.top ) { + top = e.pageY + 1; + } + + element.style.left = left + "px"; + element.style.top = top + "px"; + } + /* * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -1204,53 +1256,6 @@ }; } - function cancelBubble( e ) { - e.preventDefault(); - e.cancelBubble = true; - } - - function getScrollPosition() { - var doc = _parameter_Document.documentElement, - left = ( _parameter_Window.pageXOffset || doc.scrollLeft ) - ( doc.clientLeft || 0 ), - top = ( _parameter_Window.pageYOffset || doc.scrollTop ) - ( doc.clientTop || 0 ); - - return { - left: left, - top: top - }; - } - - function showElementAtMousePosition( e, element ) { - var left = e.pageX, - top = e.pageY, - scrollPosition = getScrollPosition(); - - element.style.display = "block"; - - if ( left + element.offsetWidth > _parameter_Window.innerWidth ) { - left -= element.offsetWidth; - } else { - left++; - } - - if ( top + element.offsetHeight > _parameter_Window.innerHeight ) { - top -= element.offsetHeight; - } else { - top++; - } - - if ( left < scrollPosition.left ) { - left = e.pageX + 1; - } - - if ( top < scrollPosition.top ) { - top = e.pageY + 1; - } - - element.style.left = left + "px"; - element.style.top = top + "px"; - } - /* * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -1263,7 +1268,7 @@ for ( var charIndex = 0; charIndex < 32; charIndex++ ) { if ( charIndex === 8 || charIndex === 12 || charIndex === 16 || charIndex === 20 ) { - result.push( "-" ); + result.push( _string.dash ); } var character = Math.floor( Math.random() * 16 ).toString( 16 ); @@ -1479,11 +1484,11 @@ }; function toStorageDate( date ) { - return date.getFullYear() + "-" + padNumber( date.getMonth() + 1 ) + "-" + padNumber( date.getDate() ); + return date.getFullYear() + _string.dash + padNumber( date.getMonth() + 1 ) + _string.dash + padNumber( date.getDate() ); } function getStorageDateYear( data ) { - return data.split( "-" )[ 0 ]; + return data.split( _string.dash )[ 0 ]; } @@ -1860,7 +1865,7 @@ * @returns {string} The version number. */ this.getVersion = function() { - return "1.6.0"; + return "1.6.1"; }; diff --git a/src/heat.js.scss b/src/heat.js.scss index fb1d4182..0e2b9562 100644 --- a/src/heat.js.scss +++ b/src/heat.js.scss @@ -1,5 +1,5 @@ /* - * Heat.js Library v1.6.0 + * Heat.js Library v1.6.1 * * Copyright 2024 Bunoon * Released under the MIT License @@ -158,7 +158,7 @@ div.heat-js { width: 100%; max-width: 700px; margin: 0 !important; - + div.no-click { pointer-events: none !important; } @@ -356,7 +356,8 @@ div.heat-js { display: inline-flex; flex-direction: row; - div.days { + div.days, + div.days-months-bottom { background-color: var(--heat-js-container-background-color); padding-right: calc( var(--heat-js-spacing) * 3 ); padding-top: calc( var(--heat-js-spacing-font-size) + var(--heat-js-spacing) + 1px ); @@ -379,6 +380,10 @@ div.heat-js { flex-direction: column; } } + + div.days-months-bottom { + padding-top: 0 !important; + } div.months { display: flex; @@ -444,7 +449,7 @@ div.heat-js { border: var(--heat-js-border-size) solid var(--heat-js-day-border-color); transition: var(--heat-js-transition); - &:hover { + &:not(.no-hover):hover { cursor: pointer; background: var(--heat-js-day-background-color-hover); } @@ -549,7 +554,7 @@ div.heat-js { margin-right: 0; } - &:hover { + &:not(.no-hover):hover { cursor: pointer; background: var(--heat-js-day-background-color-hover); } @@ -667,7 +672,6 @@ div.heat-js { width: var(--heat-js-day-size); height: var(--heat-js-day-size); margin-right: var(--heat-js-day-spacing); - cursor: pointer; transition: var(--heat-js-transition); &:last-child { @@ -691,11 +695,12 @@ div.heat-js { div.day-color-2, div.day-color-3, div.day-color-4 { - &:active { + &:not(.no-hover):active { opacity: var(--heat-js-day-opacity-active) !important; } - &:hover { + &:not(.no-hover):hover { + cursor: pointer; opacity: var(--heat-js-day-opacity-hover); } } diff --git a/test/dist/heat.js.no-clicks.html b/test/dist/heat.js.no-clicks.html new file mode 100644 index 00000000..bb5abc47 --- /dev/null +++ b/test/dist/heat.js.no-clicks.html @@ -0,0 +1,46 @@ + + + + + + Heat.js - No Clicks + + + + + + +
+

Heat.js - No Clicks

+

This is a basic example of how to use Heat.js to create a basic heatmap with no click events.

+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/test/src/heat.js.no-clicks.html b/test/src/heat.js.no-clicks.html new file mode 100644 index 00000000..20b0acde --- /dev/null +++ b/test/src/heat.js.no-clicks.html @@ -0,0 +1,46 @@ + + + + + + Heat.js - No Clicks + + + + + + +
+

Heat.js - No Clicks

+

This is a basic example of how to use Heat.js to create a basic heatmap with no click events.

+
+ +
+
+
+ + + + \ No newline at end of file