shouldn't use mod(%) operator.

shouldn't divide hour and then divide day again.
should use substring.
should split into 8 instead of 6.
This commit is contained in:
Cindy Chang
2024-06-17 20:53:49 +08:00
parent 452c9358c9
commit 4c18dfd8d6

View File

@@ -1,5 +1,6 @@
import moment from 'moment'; import moment from 'moment';
const NUM_OF_PARTS_TO_SPLIT = 6; const NUM_OF_PARTS_TO_SPLIT = 8;
const TOFIXED_DEICMAL = 1;
/** /**
* 若想要有等差的Y軸刻度則必須確保index是乘以一個共通的被乘數 * 若想要有等差的Y軸刻度則必須確保index是乘以一個共通的被乘數
@@ -10,8 +11,10 @@ const NUM_OF_PARTS_TO_SPLIT = 6;
export const getStepSizeOfYTicks = (maxTimeInSecond) => { export const getStepSizeOfYTicks = (maxTimeInSecond) => {
const numOfParts = NUM_OF_PARTS_TO_SPLIT; const numOfParts = NUM_OF_PARTS_TO_SPLIT;
const {unitToUse, timeValue} = getTimeUnitAndValueToUse(maxTimeInSecond); const {unitToUse, timeValue} = getTimeUnitAndValueToUse(maxTimeInSecond);
console.log('{unitToUse, timeValue}', unitToUse, timeValue); // TODO:
let resultStepSize; let resultStepSize;
resultStepSize = Math.floor(timeValue / numOfParts); resultStepSize = (timeValue / numOfParts);
console.log('resultStepSize', resultStepSize); //TODO:
return {resultStepSize, unitToUse}; return {resultStepSize, unitToUse};
} }
@@ -26,25 +29,29 @@ const getTimeUnitAndValueToUse = (secondToDecide) => {
const hour = 60 * 60; const hour = 60 * 60;
const minutes = 60; const minutes = 60;
const dd = secondToDecide / day; const dd = secondToDecide / day;
const hh = (secondToDecide % day) / hour; const hh = secondToDecide / hour;
const mm = (secondToDecide % hour) / minutes; const mm = secondToDecide / minutes;
if (dd > 0 && dd > 1) { if (dd > 0) {
console.log('dd > 0 && dd > 1 secondToDecide / day', secondToDecide / day); //TODO:
return { return {
unitToUse: "d", unitToUse: "d",
timeValue: secondToDecide / day, timeValue: secondToDecide / day,
}; };
} else if (hh > 0 && hh > 1) { } else if (hh > 0) {
console.log('hh > 0 && hh > 1 secondToDecide / hour', secondToDecide / hour);
return { return {
unitToUse: "h", unitToUse: "h",
timeValue: (secondToDecide % day) / hour, timeValue: secondToDecide / hour,
}; };
} else if (mm > 0 && mm > 1) { } else if (mm > 0) {
console.log('mm > 0 && mm > 1', secondToDecide / minutes);
return { return {
unitToUse: "m", unitToUse: "m",
timeValue: (secondToDecide % hour) / minutes, timeValue: secondToDecide / minutes,
}; };
} else { } else {
console.log('less than one minutes final case timeValue:', secondToDecide, dd, hh, mm); //TODO:
return { return {
unitToUse: "s", unitToUse: "s",
timeValue: secondToDecide, timeValue: secondToDecide,
@@ -61,7 +68,10 @@ const getTimeUnitAndValueToUse = (secondToDecide) => {
* @param {string} unitToUse time unit to display; "dhms" usually * @param {string} unitToUse time unit to display; "dhms" usually
*/ */
export function getYTicksByIndex(stepSize, index, unitToUse){ export function getYTicksByIndex(stepSize, index, unitToUse){
return `${stepSize * index}${unitToUse}`; const rawStepsizeMultIndex = (stepSize * index).toString();
const shortenStepsizeMultIndex = rawStepsizeMultIndex.substring(
0, rawStepsizeMultIndex.indexOf('.') + 1 + TOFIXED_DEICMAL);
return `${shortenStepsizeMultIndex}${unitToUse}`;
}; };
/** /**
@@ -263,9 +273,7 @@ export function dateLabel(date, maxDate, minDate) {
* @returns {string} - The suitable time format string. * @returns {string} - The suitable time format string.
*/ */
export const setTimeStringFormatBaseOnTimeDifference = (minTimeStamp, maxTimeStamp) => { export const setTimeStringFormatBaseOnTimeDifference = (minTimeStamp, maxTimeStamp) => {
const laterDate = new Date(maxTimeStamp); const timeDifferenceInSeconds = maxTimeStamp - minTimeStamp;
const earlyDate = new Date(minTimeStamp);
const timeDifferenceInSeconds = (laterDate - earlyDate);
let dateFormat; let dateFormat;
if (timeDifferenceInSeconds < 60) { if (timeDifferenceInSeconds < 60) {