pianello-api/resources/js/helper.js

128 lines
4 KiB
JavaScript
Raw Normal View History

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;