| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import { useI18n } from "vue-i18n";
- /**
- * @description Corta uma string em um determinado tamanho.
- * @param {string} string string a ser cortada.
- * @param {string} size tamanho da string.
- * @returns {string} string cortada.
- */
- const excerpt = (string, size = 30) => {
- if (size == null) return string;
- if (string.length > size) {
- string = string.substring(0, size) + "...";
- }
- return string;
- };
- /**
- * @description Formata uma data de DD/MM/YYYY para YYYY-MM-DD
- * @param {string} date data.
- * @param {string} time tempo.
- * @throws {Error} Caso a data seja nula ou invalida.
- * @returns {string} data formatada.
- */
- const formatDateDMYtoYMD = (date, time) => {
- if (!date) throw new Error(useI18n().t("validation.rules.required"));
- const testDate =
- /^([0-2][0-9]|(3)[0-1])(\/)(((0)[0-9])|((1)[0-2]))(\/)\d{4}$/;
- if (testDate.test(date) === false)
- throw new Error(useI18n().t("validation.rules.date"));
- const [day, month, year] = date.split("/");
- return `${year}-${month}-${day} ${time ? time : ""}`;
- };
- /**
- * @description Converte uma data e hora para o formato brasileiro.
- * @param {string} dateTimeString data e hora.
- * @returns {string} data e hora no formato brasileiro.
- * @throws {Error} Caso a data seja nula ou invalida.
- * @returns {string} data formatada.
- * @example
- * // convertDateTime("2023-05-23T13:07:27.000000Z");
- * // Output: 23/05/2023 10:07:27
- */
- const convertDateTime = (dateTimeString) => {
- const dateTime = new Date(dateTimeString);
- const options = {
- timeZone: "America/Sao_Paulo",
- day: "2-digit",
- month: "2-digit",
- year: "numeric",
- hour: "2-digit",
- minute: "2-digit",
- second: "2-digit",
- };
- const formattedDateTime = dateTime
- .toLocaleString("pt-BR", options)
- .replace(",", "");
- return formattedDateTime;
- };
- /**
- * @description Formata uma data de YYYY-MM-DD para DD/MM/YYYY
- * @param {string} dateTime data e hora.
- * @returns {string} data e hora no formato brasileiro.
- * @example
- * // formatDateYMDtoDMY("2023-05-23T13:07:27.000000Z");
- * // Output: 23/05/2023 10:07:27
- */
- const formatDateYMDtoDMY = (dateTime) => {
- const [datePart, timePart] = dateTime.split(" ");
- const [year, month, day] = datePart.split("-");
- const formattedDate = `${day}/${month}/${year}`;
- if (timePart) {
- const [hours, minutes, seconds] = timePart.split(":");
- const formattedTime = `${hours}:${minutes}:${seconds}`;
- return `${formattedDate} ${formattedTime}`;
- }
- return formattedDate;
- };
- /**
- * @description Formata a moeda.
- * @param {number} value valor.
- * @returns {string} valor formatado.
- */
- const formatToBRLCurrency = (value) => {
- if (value != null) {
- value = parseFloat(value);
- return value.toLocaleString("pt-BR", {
- minimumFractionDigits: 2,
- style: "currency",
- currency: "BRL",
- });
- }
- return value;
- };
- const normalizeString = (val) =>
- val
- .toLowerCase()
- .normalize("NFKD")
- .replace(/[\u0300-\u036f~]/g, "");
- const formatPercentage = (value) => {
- if (value == null) return "\u2014";
- return `${(value * 100).toFixed(0)}%`;
- };
- export {
- formatDateDMYtoYMD,
- formatDateYMDtoDMY,
- excerpt,
- convertDateTime,
- formatToBRLCurrency,
- normalizeString,
- formatPercentage,
- };
|