blob: 9637de9bd16ab37df5dee97e4763b80791a45e21 [file] [log] [blame]
Ed Tanous7d6b44c2024-03-23 14:56:34 -07001import { createApp } from 'vue';
2
Derick Montaguefded0d12019-12-11 06:16:40 -06003import App from './App.vue';
Ed Tanous7d6b44c2024-03-23 14:56:34 -07004import i18n from './i18n';
5
Derick Montaguefded0d12019-12-11 06:16:40 -06006import router from './router';
Yoshie Muranaka8263d852020-10-16 07:58:06 -07007
Surya Vde23ea22024-07-11 15:19:46 +05308import { format } from 'date-fns-tz';
Ed Tanous7d6b44c2024-03-23 14:56:34 -07009
Yoshie Muranaka8263d852020-10-16 07:58:06 -070010//Do not change store import.
11//Exact match alias set to support
12//dotenv customizations.
Derick Montaguefded0d12019-12-11 06:16:40 -060013import store from './store';
Konstantinfb6c6de2023-06-14 17:23:14 +030014import eventBus from './eventBus';
Yoshie Muranaka8263d852020-10-16 07:58:06 -070015
Derick Montaguea2988f42020-01-17 13:46:30 -060016import {
Ed Tanous7d6b44c2024-03-23 14:56:34 -070017 BootstrapVue,
Derick Montague676f2fc2019-12-23 20:53:49 -060018 AlertPlugin,
Dixsie Wolmers97d86b32019-12-02 05:07:57 -060019 BadgePlugin,
Derick Montaguea2988f42020-01-17 13:46:30 -060020 ButtonPlugin,
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -080021 BVConfigPlugin,
Yoshie Muranaka92a0a4a2020-07-15 10:30:31 -070022 CardPlugin,
Derick Montaguea2988f42020-01-17 13:46:30 -060023 CollapsePlugin,
Yoshie Muranaka82cca542020-04-07 10:20:37 -070024 DropdownPlugin,
Derick Montaguee080a1a2019-12-04 16:30:08 -060025 FormPlugin,
Dixsie Wolmers97d86b32019-12-02 05:07:57 -060026 FormCheckboxPlugin,
Yoshie Muranaka68bbba22020-05-18 09:49:37 -070027 FormDatepickerPlugin,
Yoshie Muranaka37393812020-03-24 15:25:24 -070028 FormFilePlugin,
Derick Montaguee080a1a2019-12-04 16:30:08 -060029 FormGroupPlugin,
30 FormInputPlugin,
Yoshie Muranaka463a5702019-12-04 09:09:36 -080031 FormRadioPlugin,
32 FormSelectPlugin,
Yoshie Muranaka532a4b02020-03-27 11:00:50 -070033 FormTagsPlugin,
Yoshie Muranakac4e38ab2020-04-09 12:41:27 -070034 InputGroupPlugin,
Yoshie Muranaka35080ac2020-01-17 15:38:57 -060035 LayoutPlugin,
Derick Montague42c19892020-01-17 16:10:34 -060036 LinkPlugin,
Dixsie Wolmers97d86b32019-12-02 05:07:57 -060037 ListGroupPlugin,
Derick Montague42c19892020-01-17 16:10:34 -060038 ModalPlugin,
39 NavbarPlugin,
40 NavPlugin,
Yoshie Muranakaf9832b02020-05-12 12:04:46 -070041 PaginationPlugin,
Yoshie Muranaka3be801a2020-04-21 11:34:56 -070042 ProgressPlugin,
Yoshie Muranaka0fc91e72020-02-05 11:23:06 -080043 TablePlugin,
Dixsie Wolmersc4b87572021-10-07 16:15:50 -050044 TabsPlugin,
Yoshie Muranaka1be6b412020-04-16 12:03:38 -070045 ToastPlugin,
Derick Montague602e98a2020-10-21 16:20:00 -050046 TooltipPlugin,
Derick Montaguefded0d12019-12-11 06:16:40 -060047} from 'bootstrap-vue';
Derick Montaguea2988f42020-01-17 13:46:30 -060048
Ed Tanous7d6b44c2024-03-23 14:56:34 -070049const app = createApp({
50 router,
51 store,
52 render: (h) => h(App),
53});
54app.use(i18n);
55
56app.use(router);
57app.use(store);
Dixsie Wolmers97f41872020-02-23 15:56:16 -060058
59// Plugins
Ed Tanous7d6b44c2024-03-23 14:56:34 -070060app.use(BootstrapVue);
61app.use(AlertPlugin);
62app.use(BadgePlugin);
63app.use(ButtonPlugin);
64app.use(BVConfigPlugin, {
Derick Montague7f970a12020-03-02 17:56:09 -060065 BFormText: { textVariant: 'secondary' },
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -080066 BTable: {
67 headVariant: 'light',
Derick Montague602e98a2020-10-21 16:20:00 -050068 footVariant: 'light',
Yoshie Muranaka532a4b02020-03-27 11:00:50 -070069 },
70 BFormTags: {
71 tagVariant: 'primary',
Derick Montague602e98a2020-10-21 16:20:00 -050072 addButtonVariant: 'link-primary',
Yoshie Muranaka82cca542020-04-07 10:20:37 -070073 },
74 BBadge: {
Derick Montague602e98a2020-10-21 16:20:00 -050075 variant: 'primary',
76 },
Yoshie Muranaka4b0fc1d2020-01-06 07:36:16 -080077});
Derick Montaguea2988f42020-01-17 13:46:30 -060078
Ed Tanous7d6b44c2024-03-23 14:56:34 -070079app.use(CardPlugin);
80app.use(CollapsePlugin);
81app.use(DropdownPlugin);
82app.use(FormPlugin);
83app.use(FormCheckboxPlugin);
84app.use(FormDatepickerPlugin);
85app.use(FormFilePlugin);
86app.use(FormGroupPlugin);
87app.use(FormInputPlugin);
88app.use(FormRadioPlugin);
89app.use(FormSelectPlugin);
90app.use(FormTagsPlugin);
91app.use(InputGroupPlugin);
92app.use(LayoutPlugin);
93app.use(LayoutPlugin);
94app.use(LinkPlugin);
95app.use(ListGroupPlugin);
96app.use(ModalPlugin);
97app.use(NavbarPlugin);
98app.use(NavPlugin);
99app.use(PaginationPlugin);
100app.use(ProgressPlugin);
101app.use(TablePlugin);
102app.use(TabsPlugin);
103app.use(ToastPlugin);
104app.use(TooltipPlugin);
105
106app.mount('#app');
107app.prototype.$eventBus = eventBus;
Surya Vde23ea22024-07-11 15:19:46 +0530108//Filters
109const filter = {
110 formatDate(value) {
111 const isUtcDisplay = store.getters['global/isUtcDisplay'];
112
113 if (value instanceof Date) {
114 if (isUtcDisplay) {
115 return value.toISOString().substring(0, 10);
116 }
117 const pattern = `yyyy-MM-dd`;
118 const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
119 return format(value, pattern, { timezone });
120 }
121 },
122 formatTime(value) {
123 const isUtcDisplay = store.getters['global/isUtcDisplay'];
124
125 if (value instanceof Date) {
126 if (isUtcDisplay) {
127 let timeOptions = {
128 timeZone: 'UTC',
129 hourCycle: 'h23',
130 };
131 return `${value.toLocaleTimeString('default', timeOptions)} UTC`;
132 }
133 const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
134 const shortTz = this.shortTimeZone(value);
135 const pattern = `HH:mm:ss ('${shortTz}' O)`;
136 return format(value, pattern, { timezone }).replace('GMT', 'UTC');
137 }
138 },
139 shortTimeZone(value) {
140 const longTZ = value
141 .toString()
142 .match(/\((.*)\)/)
143 .pop();
144 const regexNotUpper = /[*a-z ]/g;
145 return longTZ.replace(regexNotUpper, '');
146 },
147};
148app.config.globalProperties.$filters = filter;