PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.10
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.10
1.4.19 1.4.18 1.4.17 1.4.16 1.4.15 1.4.14 1.4.13 1.4.12 1.4.11 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.54 1.3.53 1.3.52 1.3.51 1.3.50 All 182 releases
disco / backend / views / components / Analytics / lib / utils.js

utils.js in Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO 1.4.10, at backend/views/components/Analytics/lib/utils.js

103 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { clsx } from 'clsx';
2 import { twMerge } from 'tailwind-merge';
3
4 export function cn(...inputs) {
5 return twMerge(clsx(inputs));
6 }
7
8 /**
9 *
10 * @param {number} n
11 * @returns {string}
12 */
13 export function fmt(n) {
14 const currencySymbol = DISCO.base_currency;
15 return (
16 currencySymbol +
17 Number(n).toLocaleString('en-US', {
18 minimumFractionDigits: 2,
19 maximumFractionDigits: 2,
20 })
21 );
22 }
23
24 /**
25 *
26 * @param {string} d
27 * @returns {String} Local date string
28 */
29 export function formatDate(d) {
30 if (!d) return '—';
31 return new Date(d).toLocaleDateString('en-US', {
32 month: 'short',
33 day: 'numeric',
34 year: 'numeric',
35 });
36 }
37
38 /**
39 *
40 * @param {String} dateStr date string
41 * @param {string} interval interval string format
42 * @returns {string} local date string
43 */
44 export function formatTooltipDate(dateStr, interval) {
45 const start = new Date(dateStr + 'T00:00:00');
46 const fmt = { month: 'short', day: 'numeric', year: 'numeric' };
47
48 if (interval === 'week') {
49 const end = new Date(start);
50 end.setDate(end.getDate() + 6);
51 return `${start.toLocaleDateString('en-US', fmt)} - ${end.toLocaleDateString('en-US', fmt)}`;
52 }
53
54 if (interval === 'month') {
55 const end = new Date(start.getFullYear(), start.getMonth() + 1, 0);
56 return `${start.toLocaleDateString('en-US', fmt)} - ${end.toLocaleDateString('en-US', fmt)}`;
57 }
58
59 return start.toLocaleDateString('en-US', fmt);
60 }
61
62 /**
63 *
64 * @param {String} dateStr Date
65 * @param {boolean} isLongRange
66 * @returns {String} Date string
67 */
68 export function formatXAxisDate(dateStr, isLongRange) {
69 const date = new Date(dateStr + 'T00:00:00');
70 if (isLongRange) {
71 const month = date.toLocaleDateString('en-US', { month: 'short' });
72 const year = String(date.getFullYear()).slice(-2);
73 return `${month} ${year}`;
74 }
75 return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
76 }
77
78 /**
79 * To truncate text and add an ellipsis
80 * @param {string} str
81 * @param {number} maxLength
82 * @returns {string}
83 */
84 export function truncate(str, maxLength) {
85 if (str.length > maxLength) {
86 return str.slice(0, maxLength) + '...';
87 }
88 return str;
89 }
90
91 /**
92 * - Sort unknown campaigns
93 * @param {Array} campaigns
94 * @returns {Array}
95 */
96 export function campaignsSort(campaigns) {
97 return campaigns.sort((a, b) => {
98 if (a?.name === 'Unknown') return 1;
99 if (b?.name === 'Unknown') return -1;
100 return 0;
101 });
102 }
103