128 lines
4 KiB
JavaScript
128 lines
4 KiB
JavaScript
|
import dayjs from "dayjs";
|
||
|
import { parseColor } from "tailwindcss/lib/util/color";
|
||
|
|
||
|
const helpers = {
|
||
|
cutText(text, length) {
|
||
|
if (text.split(" ").length > 1) {
|
||
|
let string = text.substring(0, length);
|
||
|
let splitText = string.split(" ");
|
||
|
splitText.pop();
|
||
|
return splitText.join(" ") + "...";
|
||
|
} else {
|
||
|
return text;
|
||
|
}
|
||
|
},
|
||
|
formatDate(date, format) {
|
||
|
return dayjs(date).format(format);
|
||
|
},
|
||
|
capitalizeFirstLetter(string) {
|
||
|
if (string) {
|
||
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
||
|
}
|
||
|
},
|
||
|
onlyNumber(number) {
|
||
|
if (number) {
|
||
|
return number.replace(/\D/g, "");
|
||
|
} else {
|
||
|
return "";
|
||
|
}
|
||
|
},
|
||
|
formatCurrency(number) {
|
||
|
if (number) {
|
||
|
let formattedNumber = number.toString().replace(/\D/g, "");
|
||
|
let rest = formattedNumber.length % 3;
|
||
|
let currency = formattedNumber.substr(0, rest);
|
||
|
let thousand = formattedNumber.substr(rest).match(/\d{3}/g);
|
||
|
let separator;
|
||
|
|
||
|
if (thousand) {
|
||
|
separator = rest ? "." : "";
|
||
|
currency += separator + thousand.join(".");
|
||
|
}
|
||
|
|
||
|
return currency;
|
||
|
} else {
|
||
|
return "";
|
||
|
}
|
||
|
},
|
||
|
timeAgo(time) {
|
||
|
let date = new Date(
|
||
|
(time || "").replace(/-/g, "/").replace(/[TZ]/g, " ")
|
||
|
),
|
||
|
diff = (new Date().getTime() - date.getTime()) / 1000,
|
||
|
dayDiff = Math.floor(diff / 86400);
|
||
|
|
||
|
if (isNaN(dayDiff) || dayDiff < 0 || dayDiff >= 31)
|
||
|
return dayjs(time).format("MMMM DD, YYYY");
|
||
|
|
||
|
return (
|
||
|
(dayDiff == 0 &&
|
||
|
((diff < 60 && "just now") ||
|
||
|
(diff < 120 && "1 minute ago") ||
|
||
|
(diff < 3600 && Math.floor(diff / 60) + " minutes ago") ||
|
||
|
(diff < 7200 && "1 hour ago") ||
|
||
|
(diff < 86400 &&
|
||
|
Math.floor(diff / 3600) + " hours ago"))) ||
|
||
|
(dayDiff == 1 && "Yesterday") ||
|
||
|
(dayDiff < 7 && dayDiff + " days ago") ||
|
||
|
(dayDiff < 31 && Math.ceil(dayDiff / 7) + " weeks ago")
|
||
|
);
|
||
|
},
|
||
|
diffTimeByNow(time) {
|
||
|
let startDate = dayjs(dayjs().format("YYYY-MM-DD HH:mm:ss").toString());
|
||
|
let endDate = dayjs(
|
||
|
dayjs(time).format("YYYY-MM-DD HH:mm:ss").toString()
|
||
|
);
|
||
|
|
||
|
let duration = dayjs.duration(endDate.diff(startDate));
|
||
|
let milliseconds = Math.floor(duration.asMilliseconds());
|
||
|
|
||
|
let days = Math.round(milliseconds / 86400000);
|
||
|
let hours = Math.round((milliseconds % 86400000) / 3600000);
|
||
|
let minutes = Math.round(((milliseconds % 86400000) % 3600000) / 60000);
|
||
|
let seconds = Math.round(
|
||
|
(((milliseconds % 86400000) % 3600000) % 60000) / 1000
|
||
|
);
|
||
|
|
||
|
if (seconds < 30 && seconds >= 0) {
|
||
|
minutes += 1;
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
days: days.toString().length < 2 ? "0" + days : days,
|
||
|
hours: hours.toString().length < 2 ? "0" + hours : hours,
|
||
|
minutes: minutes.toString().length < 2 ? "0" + minutes : minutes,
|
||
|
seconds: seconds.toString().length < 2 ? "0" + seconds : seconds,
|
||
|
};
|
||
|
},
|
||
|
isset(obj) {
|
||
|
return Object.keys(obj).length;
|
||
|
},
|
||
|
assign(obj) {
|
||
|
return JSON.parse(JSON.stringify(obj));
|
||
|
},
|
||
|
delay(time) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
setTimeout(() => {
|
||
|
resolve();
|
||
|
}, time);
|
||
|
});
|
||
|
},
|
||
|
randomNumbers(from, to, length) {
|
||
|
let numbers = [0];
|
||
|
for (let i = 1; i < length; i++) {
|
||
|
numbers.push(Math.ceil(Math.random() * (from - to) + to));
|
||
|
}
|
||
|
|
||
|
return numbers;
|
||
|
},
|
||
|
replaceAll(str, find, replace) {
|
||
|
return str.replace(new RegExp(find, "g"), replace);
|
||
|
},
|
||
|
toRGB(value) {
|
||
|
return parseColor(value).color.join(" ");
|
||
|
},
|
||
|
};
|
||
|
|
||
|
export default helpers;
|