17d6b44cbSEd Tanousimport { createApp } from 'vue'; 27d6b44cbSEd Tanous 3fded0d11SDerick Montagueimport App from './App.vue'; 47d6b44cbSEd Tanousimport i18n from './i18n'; 57d6b44cbSEd Tanous 6fded0d11SDerick Montagueimport router from './router'; 78263d85cSYoshie Muranaka 8*de23ea23SSurya Vimport { format } from 'date-fns-tz'; 97d6b44cbSEd Tanous 108263d85cSYoshie Muranaka//Do not change store import. 118263d85cSYoshie Muranaka//Exact match alias set to support 128263d85cSYoshie Muranaka//dotenv customizations. 13fded0d11SDerick Montagueimport store from './store'; 14fb6c6de9SKonstantinimport eventBus from './eventBus'; 158263d85cSYoshie Muranaka 167d6b44cbSEd Tanousimport './assets/styles/bmc/helpers/_index.scss'; 177d6b44cbSEd Tanousimport './assets/styles/bootstrap/_helpers.scss'; 187d6b44cbSEd Tanous 197d6b44cbSEd Tanousimport 'bootstrap/dist/css/bootstrap.css'; 207d6b44cbSEd Tanousimport 'bootstrap-vue/dist/bootstrap-vue.css'; 217d6b44cbSEd Tanous 22a2988f40SDerick Montagueimport { 237d6b44cbSEd Tanous BootstrapVue, 24676f2fcaSDerick Montague AlertPlugin, 2597d86b33SDixsie Wolmers BadgePlugin, 26a2988f40SDerick Montague ButtonPlugin, 274b0fc1dbSYoshie Muranaka BVConfigPlugin, 2892a0a4acSYoshie Muranaka CardPlugin, 29a2988f40SDerick Montague CollapsePlugin, 3082cca545SYoshie Muranaka DropdownPlugin, 31e080a1a7SDerick Montague FormPlugin, 3297d86b33SDixsie Wolmers FormCheckboxPlugin, 3368bbba29SYoshie Muranaka FormDatepickerPlugin, 3437393810SYoshie Muranaka FormFilePlugin, 35e080a1a7SDerick Montague FormGroupPlugin, 36e080a1a7SDerick Montague FormInputPlugin, 37463a5706SYoshie Muranaka FormRadioPlugin, 38463a5706SYoshie Muranaka FormSelectPlugin, 39532a4b03SYoshie Muranaka FormTagsPlugin, 40c4e38abfSYoshie Muranaka InputGroupPlugin, 4135080acbSYoshie Muranaka LayoutPlugin, 4242c19893SDerick Montague LinkPlugin, 4397d86b33SDixsie Wolmers ListGroupPlugin, 4442c19893SDerick Montague ModalPlugin, 4542c19893SDerick Montague NavbarPlugin, 4642c19893SDerick Montague NavPlugin, 47f9832b0eSYoshie Muranaka PaginationPlugin, 483be801aaSYoshie Muranaka ProgressPlugin, 490fc91e79SYoshie Muranaka TablePlugin, 50c4b8757eSDixsie Wolmers TabsPlugin, 511be6b41eSYoshie Muranaka ToastPlugin, 52602e98aaSDerick Montague TooltipPlugin, 53fded0d11SDerick Montague} from 'bootstrap-vue'; 54a2988f40SDerick Montague 557d6b44cbSEd Tanousconst app = createApp({ 567d6b44cbSEd Tanous router, 577d6b44cbSEd Tanous store, 587d6b44cbSEd Tanous render: (h) => h(App), 597d6b44cbSEd Tanous}); 607d6b44cbSEd Tanousapp.use(i18n); 617d6b44cbSEd Tanous 627d6b44cbSEd Tanousapp.use(router); 637d6b44cbSEd Tanousapp.use(store); 6497f4187eSDixsie Wolmers 6597f4187eSDixsie Wolmers// Plugins 667d6b44cbSEd Tanousapp.use(BootstrapVue); 677d6b44cbSEd Tanousapp.use(AlertPlugin); 687d6b44cbSEd Tanousapp.use(BadgePlugin); 697d6b44cbSEd Tanousapp.use(ButtonPlugin); 707d6b44cbSEd Tanousapp.use(BVConfigPlugin, { 717f970a1fSDerick Montague BFormText: { textVariant: 'secondary' }, 724b0fc1dbSYoshie Muranaka BTable: { 734b0fc1dbSYoshie Muranaka headVariant: 'light', 74602e98aaSDerick Montague footVariant: 'light', 75532a4b03SYoshie Muranaka }, 76532a4b03SYoshie Muranaka BFormTags: { 77532a4b03SYoshie Muranaka tagVariant: 'primary', 78602e98aaSDerick Montague addButtonVariant: 'link-primary', 7982cca545SYoshie Muranaka }, 8082cca545SYoshie Muranaka BBadge: { 81602e98aaSDerick Montague variant: 'primary', 82602e98aaSDerick Montague }, 834b0fc1dbSYoshie Muranaka}); 84a2988f40SDerick Montague 857d6b44cbSEd Tanousapp.use(CardPlugin); 867d6b44cbSEd Tanousapp.use(CollapsePlugin); 877d6b44cbSEd Tanousapp.use(DropdownPlugin); 887d6b44cbSEd Tanousapp.use(FormPlugin); 897d6b44cbSEd Tanousapp.use(FormCheckboxPlugin); 907d6b44cbSEd Tanousapp.use(FormDatepickerPlugin); 917d6b44cbSEd Tanousapp.use(FormFilePlugin); 927d6b44cbSEd Tanousapp.use(FormGroupPlugin); 937d6b44cbSEd Tanousapp.use(FormInputPlugin); 947d6b44cbSEd Tanousapp.use(FormRadioPlugin); 957d6b44cbSEd Tanousapp.use(FormSelectPlugin); 967d6b44cbSEd Tanousapp.use(FormTagsPlugin); 977d6b44cbSEd Tanousapp.use(InputGroupPlugin); 987d6b44cbSEd Tanousapp.use(LayoutPlugin); 997d6b44cbSEd Tanousapp.use(LayoutPlugin); 1007d6b44cbSEd Tanousapp.use(LinkPlugin); 1017d6b44cbSEd Tanousapp.use(ListGroupPlugin); 1027d6b44cbSEd Tanousapp.use(ModalPlugin); 1037d6b44cbSEd Tanousapp.use(NavbarPlugin); 1047d6b44cbSEd Tanousapp.use(NavPlugin); 1057d6b44cbSEd Tanousapp.use(PaginationPlugin); 1067d6b44cbSEd Tanousapp.use(ProgressPlugin); 1077d6b44cbSEd Tanousapp.use(TablePlugin); 1087d6b44cbSEd Tanousapp.use(TabsPlugin); 1097d6b44cbSEd Tanousapp.use(ToastPlugin); 1107d6b44cbSEd Tanousapp.use(TooltipPlugin); 1117d6b44cbSEd Tanous 1127d6b44cbSEd Tanousapp.mount('#app'); 1137d6b44cbSEd Tanousapp.prototype.$eventBus = eventBus; 114*de23ea23SSurya V//Filters 115*de23ea23SSurya Vconst filter = { 116*de23ea23SSurya V formatDate(value) { 117*de23ea23SSurya V const isUtcDisplay = store.getters['global/isUtcDisplay']; 118*de23ea23SSurya V 119*de23ea23SSurya V if (value instanceof Date) { 120*de23ea23SSurya V if (isUtcDisplay) { 121*de23ea23SSurya V return value.toISOString().substring(0, 10); 122*de23ea23SSurya V } 123*de23ea23SSurya V const pattern = `yyyy-MM-dd`; 124*de23ea23SSurya V const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; 125*de23ea23SSurya V return format(value, pattern, { timezone }); 126*de23ea23SSurya V } 127*de23ea23SSurya V }, 128*de23ea23SSurya V formatTime(value) { 129*de23ea23SSurya V const isUtcDisplay = store.getters['global/isUtcDisplay']; 130*de23ea23SSurya V 131*de23ea23SSurya V if (value instanceof Date) { 132*de23ea23SSurya V if (isUtcDisplay) { 133*de23ea23SSurya V let timeOptions = { 134*de23ea23SSurya V timeZone: 'UTC', 135*de23ea23SSurya V hourCycle: 'h23', 136*de23ea23SSurya V }; 137*de23ea23SSurya V return `${value.toLocaleTimeString('default', timeOptions)} UTC`; 138*de23ea23SSurya V } 139*de23ea23SSurya V const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; 140*de23ea23SSurya V const shortTz = this.shortTimeZone(value); 141*de23ea23SSurya V const pattern = `HH:mm:ss ('${shortTz}' O)`; 142*de23ea23SSurya V return format(value, pattern, { timezone }).replace('GMT', 'UTC'); 143*de23ea23SSurya V } 144*de23ea23SSurya V }, 145*de23ea23SSurya V shortTimeZone(value) { 146*de23ea23SSurya V const longTZ = value 147*de23ea23SSurya V .toString() 148*de23ea23SSurya V .match(/\((.*)\)/) 149*de23ea23SSurya V .pop(); 150*de23ea23SSurya V const regexNotUpper = /[*a-z ]/g; 151*de23ea23SSurya V return longTZ.replace(regexNotUpper, ''); 152*de23ea23SSurya V }, 153*de23ea23SSurya V}; 154*de23ea23SSurya Vapp.config.globalProperties.$filters = filter; 155