Преглед на файлове

[heatmap] avoid timestamp use to compare, hence fix issue

tags/1.2.0
Prateeksha Singh преди 7 години
родител
ревизия
b040f31de7
променени са 8 файла, в които са добавени 66 реда и са изтрити 96 реда
  1. +30
    -45
      dist/frappe-charts.esm.js
  2. +1
    -1
      dist/frappe-charts.min.cjs.js
  3. +1
    -1
      dist/frappe-charts.min.esm.js
  4. +1
    -1
      dist/frappe-charts.min.iife.js
  5. +1
    -1
      dist/frappe-charts.min.iife.js.map
  6. +1
    -1
      docs/assets/js/frappe-charts.min.js
  7. +1
    -1
      docs/assets/js/frappe-charts.min.js.map
  8. +30
    -45
      src/js/charts/Heatmap.js

+ 30
- 45
dist/frappe-charts.esm.js Целия файл

@@ -2412,14 +2412,15 @@ function getMaxCheckpoint(value, distribution) {
return distribution.filter(d => d < value).length;
}

const COL_SIZE = HEATMAP_SQUARE_SIZE + HEATMAP_GUTTER_SIZE;
const COL_WIDTH = HEATMAP_SQUARE_SIZE + HEATMAP_GUTTER_SIZE;
const ROW_HEIGHT = COL_WIDTH;
const DAY_INCR = 1;

class Heatmap extends BaseChart {
constructor(parent, options) {
super(parent, options);
this.type = 'heatmap';

this.dataPoints = options.data.dataPoints || {};
this.discreteDomains = options.discreteDomains === 0 ? 0 : 1;
this.countLabel = options.countLabel || '';

@@ -2427,10 +2428,10 @@ class Heatmap extends BaseChart {
}

updateWidth() {
this.baseWidth = (this.state.noOfWeeks + 99) * COL_SIZE;
this.baseWidth = (this.state.noOfWeeks + 99) * COL_WIDTH;

if(this.discreteDomains) {
this.baseWidth += (COL_SIZE * NO_OF_YEAR_MONTHS);
this.baseWidth += (COL_WIDTH * NO_OF_YEAR_MONTHS);
}
}

@@ -2456,6 +2457,16 @@ class Heatmap extends BaseChart {
}
if(!data.end) { data.end = new Date(); }

data.dataPoints = data.dataPoints || {};

let points = {};
Object.keys(data.dataPoints).forEach(timestampSec$$1 => {
let date = new Date(timestampSec$$1 * NO_OF_MILLIS);
points[getDdMmYyyy(date)] = data.dataPoints[timestampSec$$1];
});

data.dataPoints = points;

return data;
}

@@ -2468,7 +2479,7 @@ class Heatmap extends BaseChart {
s.firstWeekStart = setDayToSunday(clone(s.start));
s.noOfWeeks = getWeeksBetween(s.firstWeekStart, s.end);
s.distribution = calcDistribution(
Object.values(this.dataPoints), HEATMAP_DISTRIBUTION_SIZE);
Object.values(this.data.dataPoints), HEATMAP_DISTRIBUTION_SIZE);
}

update(data=this.data) {
@@ -2478,29 +2489,24 @@ class Heatmap extends BaseChart {
}

render() {
this.renderAllWeeksAndStoreXValues(this.state.noOfWeeks);
}

renderAllWeeksAndStoreXValues(no_of_weeks) {
// renderAllWeeksAndStoreXValues
this.domainLabelGroup.textContent = '';
this.colGroups.textContent = '';

let currentWeekSunday = new Date(this.state.firstWeekStart);
this.weekCol = 0;
this.currentWeekCol = 0;
this.currentMonth = currentWeekSunday.getMonth();

this.months = [this.currentMonth + ''];
this.monthWeeks = {}, this.monthStartPoints = [];
this.monthWeeks[this.currentMonth] = 0;

for(var i = 0; i < no_of_weeks; i++) {
for(var i = 0; i < this.state.noOfWeeks; i++) {
let colGroup, monthChange = 0;
let day = new Date(currentWeekSunday);

[colGroup, monthChange] = this.getWeekSquaresGroup(day, this.weekCol);
[colGroup, monthChange] = this.getWeekSquaresGroup(day, this.currentWeekCol);
this.colGroups.appendChild(colGroup);
this.weekCol += 1 + parseInt(this.discreteDomains && monthChange);
this.currentWeekCol += 1 + parseInt(this.discreteDomains && monthChange);
this.monthWeeks[this.currentMonth]++;
if(monthChange) {
this.currentMonth = (this.currentMonth + 1) % NO_OF_YEAR_MONTHS;
@@ -2512,41 +2518,21 @@ class Heatmap extends BaseChart {
this.renderMonthLabels();
}

getWeekSquaresGroup(currentDate, index) {
const step = 1;

let today = new Date();

const todayTime = today.getTime();

getWeekSquaresGroup(currentDate, currentWeekCol) {
let monthChange = 0;
let weekColChange = 0;

let colGroup = makeSVGGroup(this.colGroups, 'data-group');

for(var y = 0, i = 0; i < NO_OF_DAYS_IN_WEEK; i += step, y += COL_SIZE) {
let dataValue = 0;
let colorIndex = 0;
for(var y = 0, i = 0; i < NO_OF_DAYS_IN_WEEK; i += DAY_INCR, y += ROW_HEIGHT) {
let ddmmyyyy = getDdMmYyyy(currentDate);
let dataValue = this.data.dataPoints[ddmmyyyy] || 0;
let colorIndex = getMaxCheckpoint(dataValue, this.state.distribution);

let currentTimestamp = currentDate.getTime()/NO_OF_MILLIS;
let timestamp = Math.floor(currentTimestamp - (currentTimestamp % 86400)).toFixed(1);

if(this.dataPoints[timestamp]) {
dataValue = this.dataPoints[timestamp];
}

if(this.dataPoints[Math.round(timestamp)]) {
dataValue = this.dataPoints[Math.round(timestamp)];
}

if(dataValue) {
colorIndex = getMaxCheckpoint(dataValue, this.state.distribution);
}

let x = (index + weekColChange) * COL_SIZE;
let x = (currentWeekCol + weekColChange) * COL_WIDTH;

let dataAttr = {
'data-date': getDdMmYyyy(currentDate),
'data-date': ddmmyyyy,
'data-value': dataValue,
'data-day': currentDate.getDay()
};
@@ -2558,8 +2544,7 @@ class Heatmap extends BaseChart {

let nextDate = new Date(currentDate);
addDays(nextDate, 1);
if(nextDate.getTime() > todayTime) break;

if(nextDate > this.state.end) break;

if(nextDate.getMonth() - currentDate.getMonth()) {
monthChange = 1;
@@ -2567,7 +2552,7 @@ class Heatmap extends BaseChart {
weekColChange = 1;
}

this.monthStartPoints.push((index + weekColChange) * COL_SIZE);
this.monthStartPoints.push((currentWeekCol + weekColChange) * COL_WIDTH);
}
currentDate = nextDate;
}
@@ -2597,7 +2582,7 @@ class Heatmap extends BaseChart {

this.monthStartPoints.map((start, i) => {
let month_name = getMonthName(this.months[i], true);
let text = makeText('y-value-text', start + COL_SIZE, HEATMAP_SQUARE_SIZE, month_name);
let text = makeText('y-value-text', start + COL_WIDTH, HEATMAP_SQUARE_SIZE, month_name);
this.domainLabelGroup.appendChild(text);
});
}


+ 1
- 1
dist/frappe-charts.min.cjs.js
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 1
- 1
dist/frappe-charts.min.esm.js
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 1
- 1
dist/frappe-charts.min.iife.js
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 1
- 1
dist/frappe-charts.min.iife.js.map
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 1
- 1
docs/assets/js/frappe-charts.min.js
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 1
- 1
docs/assets/js/frappe-charts.min.js.map
Файловите разлики са ограничени, защото са твърде много
Целия файл


+ 30
- 45
src/js/charts/Heatmap.js Целия файл

@@ -6,14 +6,15 @@ import { calcDistribution, getMaxCheckpoint } from '../utils/intervals';
import { HEATMAP_DISTRIBUTION_SIZE, HEATMAP_SQUARE_SIZE,
HEATMAP_GUTTER_SIZE } from '../utils/constants';

const COL_SIZE = HEATMAP_SQUARE_SIZE + HEATMAP_GUTTER_SIZE;
const COL_WIDTH = HEATMAP_SQUARE_SIZE + HEATMAP_GUTTER_SIZE;
const ROW_HEIGHT = COL_WIDTH;
const DAY_INCR = 1;

export default class Heatmap extends BaseChart {
constructor(parent, options) {
super(parent, options);
this.type = 'heatmap';

this.dataPoints = options.data.dataPoints || {};
this.discreteDomains = options.discreteDomains === 0 ? 0 : 1;
this.countLabel = options.countLabel || '';

@@ -21,10 +22,10 @@ export default class Heatmap extends BaseChart {
}

updateWidth() {
this.baseWidth = (this.state.noOfWeeks + 99) * COL_SIZE;
this.baseWidth = (this.state.noOfWeeks + 99) * COL_WIDTH;

if(this.discreteDomains) {
this.baseWidth += (COL_SIZE * NO_OF_YEAR_MONTHS);
this.baseWidth += (COL_WIDTH * NO_OF_YEAR_MONTHS);
}
}

@@ -50,6 +51,16 @@ export default class Heatmap extends BaseChart {
}
if(!data.end) { data.end = new Date(); }

data.dataPoints = data.dataPoints || {};

let points = {};
Object.keys(data.dataPoints).forEach(timestampSec => {
let date = new Date(timestampSec * NO_OF_MILLIS);
points[getDdMmYyyy(date)] = data.dataPoints[timestampSec];
});

data.dataPoints = points;

return data;
}

@@ -62,7 +73,7 @@ export default class Heatmap extends BaseChart {
s.firstWeekStart = setDayToSunday(clone(s.start));
s.noOfWeeks = getWeeksBetween(s.firstWeekStart, s.end);
s.distribution = calcDistribution(
Object.values(this.dataPoints), HEATMAP_DISTRIBUTION_SIZE);
Object.values(this.data.dataPoints), HEATMAP_DISTRIBUTION_SIZE);
}

update(data=this.data) {
@@ -72,16 +83,11 @@ export default class Heatmap extends BaseChart {
}

render() {
this.renderAllWeeksAndStoreXValues(this.state.noOfWeeks);
}

renderAllWeeksAndStoreXValues(no_of_weeks) {
// renderAllWeeksAndStoreXValues
this.domainLabelGroup.textContent = '';
this.colGroups.textContent = '';

let currentWeekSunday = new Date(this.state.firstWeekStart);
this.weekCol = 0;
this.currentWeekCol = 0;
this.currentMonth = currentWeekSunday.getMonth();

this.months = [this.currentMonth + ''];
@@ -89,13 +95,13 @@ export default class Heatmap extends BaseChart {
this.monthStartPoints = [];
this.monthWeeks[this.currentMonth] = 0;

for(var i = 0; i < no_of_weeks; i++) {
for(var i = 0; i < this.state.noOfWeeks; i++) {
let colGroup, monthChange = 0;
let day = new Date(currentWeekSunday);

[colGroup, monthChange] = this.getWeekSquaresGroup(day, this.weekCol);
[colGroup, monthChange] = this.getWeekSquaresGroup(day, this.currentWeekCol);
this.colGroups.appendChild(colGroup);
this.weekCol += 1 + parseInt(this.discreteDomains && monthChange);
this.currentWeekCol += 1 + parseInt(this.discreteDomains && monthChange);
this.monthWeeks[this.currentMonth]++;
if(monthChange) {
this.currentMonth = (this.currentMonth + 1) % NO_OF_YEAR_MONTHS;
@@ -107,41 +113,21 @@ export default class Heatmap extends BaseChart {
this.renderMonthLabels();
}

getWeekSquaresGroup(currentDate, index) {
const step = 1;

let today = new Date();

const todayTime = today.getTime();

getWeekSquaresGroup(currentDate, currentWeekCol) {
let monthChange = 0;
let weekColChange = 0;

let colGroup = makeSVGGroup(this.colGroups, 'data-group');

for(var y = 0, i = 0; i < NO_OF_DAYS_IN_WEEK; i += step, y += COL_SIZE) {
let dataValue = 0;
let colorIndex = 0;
for(var y = 0, i = 0; i < NO_OF_DAYS_IN_WEEK; i += DAY_INCR, y += ROW_HEIGHT) {
let ddmmyyyy = getDdMmYyyy(currentDate);
let dataValue = this.data.dataPoints[ddmmyyyy] || 0;
let colorIndex = getMaxCheckpoint(dataValue, this.state.distribution);

let currentTimestamp = currentDate.getTime()/NO_OF_MILLIS;
let timestamp = Math.floor(currentTimestamp - (currentTimestamp % 86400)).toFixed(1);

if(this.dataPoints[timestamp]) {
dataValue = this.dataPoints[timestamp];
}

if(this.dataPoints[Math.round(timestamp)]) {
dataValue = this.dataPoints[Math.round(timestamp)];
}

if(dataValue) {
colorIndex = getMaxCheckpoint(dataValue, this.state.distribution);
}

let x = (index + weekColChange) * COL_SIZE;
let x = (currentWeekCol + weekColChange) * COL_WIDTH;

let dataAttr = {
'data-date': getDdMmYyyy(currentDate),
'data-date': ddmmyyyy,
'data-value': dataValue,
'data-day': currentDate.getDay()
};
@@ -153,8 +139,7 @@ export default class Heatmap extends BaseChart {

let nextDate = new Date(currentDate);
addDays(nextDate, 1);
if(nextDate.getTime() > todayTime) break;

if(nextDate > this.state.end) break;

if(nextDate.getMonth() - currentDate.getMonth()) {
monthChange = 1;
@@ -162,7 +147,7 @@ export default class Heatmap extends BaseChart {
weekColChange = 1;
}

this.monthStartPoints.push((index + weekColChange) * COL_SIZE);
this.monthStartPoints.push((currentWeekCol + weekColChange) * COL_WIDTH);
}
currentDate = nextDate;
}
@@ -192,7 +177,7 @@ export default class Heatmap extends BaseChart {

this.monthStartPoints.map((start, i) => {
let month_name = getMonthName(this.months[i], true);
let text = makeText('y-value-text', start + COL_SIZE, HEATMAP_SQUARE_SIZE, month_name);
let text = makeText('y-value-text', start + COL_WIDTH, HEATMAP_SQUARE_SIZE, month_name);
this.domainLabelGroup.appendChild(text);
});
}


Зареждане…
Отказ
Запис