PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.14
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.14
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 1.3.49 1.3.48 1.3.47 1.3.46 1.3.45 All 177 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.14, at backend/views/components/Analytics/lib/utils.js

109 lines 2.5 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 { extendTailwindMerge } from 'tailwind-merge';
3
4 // Declared without a trailing separator: Tailwind v4 prefixes are variant-style
5 // (`disco:flex`). This was previously a bare `twMerge` with no prefix at all.
6 const twMerge = extendTailwindMerge({
7 prefix: 'disco',
8 });
9
10 export function cn(...inputs) {
11 return twMerge(clsx(inputs));
12 }
13
14 /**
15 *
16 * @param {number} n
17 * @returns {string}
18 */
19 export function fmt(n) {
20 const currencySymbol = DISCO.base_currency;
21 return (
22 currencySymbol +
23 Number(n).toLocaleString('en-US', {
24 minimumFractionDigits: 2,
25 maximumFractionDigits: 2,
26 })
27 );
28 }
29
30 /**
31 *
32 * @param {string} d
33 * @returns {String} Local date string
34 */
35 export function formatDate(d) {
36 if (!d) return '';
37 return new Date(d).toLocaleDateString('en-US', {
38 month: 'short',
39 day: 'numeric',
40 year: 'numeric',
41 });
42 }
43
44 /**
45 *
46 * @param {String} dateStr date string
47 * @param {string} interval interval string format
48 * @returns {string} local date string
49 */
50 export function formatTooltipDate(dateStr, interval) {
51 const start = new Date(dateStr + 'T00:00:00');
52 const fmt = { month: 'short', day: 'numeric', year: 'numeric' };
53
54 if (interval === 'week') {
55 const end = new Date(start);
56 end.setDate(end.getDate() + 6);
57 return `${start.toLocaleDateString('en-US', fmt)} - ${end.toLocaleDateString('en-US', fmt)}`;
58 }
59
60 if (interval === 'month') {
61 const end = new Date(start.getFullYear(), start.getMonth() + 1, 0);
62 return `${start.toLocaleDateString('en-US', fmt)} - ${end.toLocaleDateString('en-US', fmt)}`;
63 }
64
65 return start.toLocaleDateString('en-US', fmt);
66 }
67
68 /**
69 *
70 * @param {String} dateStr Date
71 * @param {boolean} isLongRange
72 * @returns {String} Date string
73 */
74 export function formatXAxisDate(dateStr, isLongRange) {
75 const date = new Date(dateStr + 'T00:00:00');
76 if (isLongRange) {
77 const month = date.toLocaleDateString('en-US', { month: 'short' });
78 const year = String(date.getFullYear()).slice(-2);
79 return `${month} ${year}`;
80 }
81 return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
82 }
83
84 /**
85 * To truncate text and add an ellipsis
86 * @param {string} str
87 * @param {number} maxLength
88 * @returns {string}
89 */
90 export function truncate(str, maxLength) {
91 if (str.length > maxLength) {
92 return str.slice(0, maxLength) + '...';
93 }
94 return str;
95 }
96
97 /**
98 * - Sort unknown campaigns
99 * @param {Array} campaigns
100 * @returns {Array}
101 */
102 export function campaignsSort(campaigns) {
103 return campaigns.sort((a, b) => {
104 if (a?.name === 'Unknown') return 1;
105 if (b?.name === 'Unknown') return -1;
106 return 0;
107 });
108 }
109