xref: /openbmc/webui-vue/src/main.js (revision fb6c6de9)
1fded0d11SDerick Montagueimport Vue from 'vue';
2fded0d11SDerick Montagueimport App from './App.vue';
3fded0d11SDerick Montagueimport router from './router';
48263d85cSYoshie Muranaka
58263d85cSYoshie Muranaka//Do not change store import.
68263d85cSYoshie Muranaka//Exact match alias set to support
78263d85cSYoshie Muranaka//dotenv customizations.
8fded0d11SDerick Montagueimport store from './store';
9*fb6c6de9SKonstantinimport eventBus from './eventBus';
108263d85cSYoshie Muranaka
11a2988f40SDerick Montagueimport {
12676f2fcaSDerick Montague  AlertPlugin,
1397d86b33SDixsie Wolmers  BadgePlugin,
14a2988f40SDerick Montague  ButtonPlugin,
154b0fc1dbSYoshie Muranaka  BVConfigPlugin,
1692a0a4acSYoshie Muranaka  CardPlugin,
17a2988f40SDerick Montague  CollapsePlugin,
1882cca545SYoshie Muranaka  DropdownPlugin,
19e080a1a7SDerick Montague  FormPlugin,
2097d86b33SDixsie Wolmers  FormCheckboxPlugin,
2168bbba29SYoshie Muranaka  FormDatepickerPlugin,
2237393810SYoshie Muranaka  FormFilePlugin,
23e080a1a7SDerick Montague  FormGroupPlugin,
24e080a1a7SDerick Montague  FormInputPlugin,
25463a5706SYoshie Muranaka  FormRadioPlugin,
26463a5706SYoshie Muranaka  FormSelectPlugin,
27532a4b03SYoshie Muranaka  FormTagsPlugin,
28c4e38abfSYoshie Muranaka  InputGroupPlugin,
2935080acbSYoshie Muranaka  LayoutPlugin,
3042c19893SDerick Montague  LinkPlugin,
3197d86b33SDixsie Wolmers  ListGroupPlugin,
3242c19893SDerick Montague  ModalPlugin,
3342c19893SDerick Montague  NavbarPlugin,
3442c19893SDerick Montague  NavPlugin,
35f9832b0eSYoshie Muranaka  PaginationPlugin,
363be801aaSYoshie Muranaka  ProgressPlugin,
370fc91e79SYoshie Muranaka  TablePlugin,
38c4b8757eSDixsie Wolmers  TabsPlugin,
391be6b41eSYoshie Muranaka  ToastPlugin,
40602e98aaSDerick Montague  TooltipPlugin,
41fded0d11SDerick Montague} from 'bootstrap-vue';
424b0fc1dbSYoshie Muranakaimport Vuelidate from 'vuelidate';
43cbcd2136SDixsie Wolmersimport i18n from './i18n';
44fc16f3c2SSukanya Pandeyimport { format } from 'date-fns-tz';
45a2988f40SDerick Montague
4697f4187eSDixsie Wolmers// Filters
47fc16f3c2SSukanya PandeyVue.filter('shortTimeZone', function (value) {
48fc16f3c2SSukanya Pandey  const longTZ = value
49fc16f3c2SSukanya Pandey    .toString()
50fc16f3c2SSukanya Pandey    .match(/\((.*)\)/)
51fc16f3c2SSukanya Pandey    .pop();
52fc16f3c2SSukanya Pandey  const regexNotUpper = /[*a-z ]/g;
53fc16f3c2SSukanya Pandey  return longTZ.replace(regexNotUpper, '');
54fc16f3c2SSukanya Pandey});
55fc16f3c2SSukanya Pandey
5697f4187eSDixsie WolmersVue.filter('formatDate', function (value) {
57fc16f3c2SSukanya Pandey  const isUtcDisplay = store.getters['global/isUtcDisplay'];
58fc16f3c2SSukanya Pandey
5997f4187eSDixsie Wolmers  if (value instanceof Date) {
60fc16f3c2SSukanya Pandey    if (isUtcDisplay) {
610e4760e6SDixsie Wolmers      return value.toISOString().substring(0, 10);
6297f4187eSDixsie Wolmers    }
63fc16f3c2SSukanya Pandey    const pattern = `yyyy-MM-dd`;
64fc16f3c2SSukanya Pandey    const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
65fc16f3c2SSukanya Pandey    return format(value, pattern, { timezone });
66fc16f3c2SSukanya Pandey  }
6797f4187eSDixsie Wolmers});
6897d86b33SDixsie Wolmers
6997f4187eSDixsie WolmersVue.filter('formatTime', function (value) {
70fc16f3c2SSukanya Pandey  const isUtcDisplay = store.getters['global/isUtcDisplay'];
71fc16f3c2SSukanya Pandey
7297f4187eSDixsie Wolmers  if (value instanceof Date) {
73fc16f3c2SSukanya Pandey    if (isUtcDisplay) {
74fc16f3c2SSukanya Pandey      let timeOptions = {
75fc16f3c2SSukanya Pandey        timeZone: 'UTC',
7607b85ef3SDerick Montague        hourCycle: 'h23',
77fc16f3c2SSukanya Pandey      };
78fc16f3c2SSukanya Pandey      return `${value.toLocaleTimeString('default', timeOptions)} UTC`;
79fc16f3c2SSukanya Pandey    }
80fc16f3c2SSukanya Pandey    const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
81fc16f3c2SSukanya Pandey    const shortTz = Vue.filter('shortTimeZone')(value);
82fc16f3c2SSukanya Pandey    const pattern = `HH:mm:ss ('${shortTz}' O)`;
83fc16f3c2SSukanya Pandey    return format(value, pattern, { timezone }).replace('GMT', 'UTC');
8497f4187eSDixsie Wolmers  }
8597f4187eSDixsie Wolmers});
8697f4187eSDixsie Wolmers
8797f4187eSDixsie Wolmers// Plugins
88676f2fcaSDerick MontagueVue.use(AlertPlugin);
8997d86b33SDixsie WolmersVue.use(BadgePlugin);
90a2988f40SDerick MontagueVue.use(ButtonPlugin);
914b0fc1dbSYoshie MuranakaVue.use(BVConfigPlugin, {
927f970a1fSDerick Montague  BFormText: { textVariant: 'secondary' },
934b0fc1dbSYoshie Muranaka  BTable: {
944b0fc1dbSYoshie Muranaka    headVariant: 'light',
95602e98aaSDerick Montague    footVariant: 'light',
96532a4b03SYoshie Muranaka  },
97532a4b03SYoshie Muranaka  BFormTags: {
98532a4b03SYoshie Muranaka    tagVariant: 'primary',
99602e98aaSDerick Montague    addButtonVariant: 'link-primary',
10082cca545SYoshie Muranaka  },
10182cca545SYoshie Muranaka  BBadge: {
102602e98aaSDerick Montague    variant: 'primary',
103602e98aaSDerick Montague  },
1044b0fc1dbSYoshie Muranaka});
10592a0a4acSYoshie MuranakaVue.use(CardPlugin);
106a2988f40SDerick MontagueVue.use(CollapsePlugin);
10782cca545SYoshie MuranakaVue.use(DropdownPlugin);
108e080a1a7SDerick MontagueVue.use(FormPlugin);
10997d86b33SDixsie WolmersVue.use(FormCheckboxPlugin);
11068bbba29SYoshie MuranakaVue.use(FormDatepickerPlugin);
11137393810SYoshie MuranakaVue.use(FormFilePlugin);
112e080a1a7SDerick MontagueVue.use(FormGroupPlugin);
113e080a1a7SDerick MontagueVue.use(FormInputPlugin);
114463a5706SYoshie MuranakaVue.use(FormRadioPlugin);
115463a5706SYoshie MuranakaVue.use(FormSelectPlugin);
116532a4b03SYoshie MuranakaVue.use(FormTagsPlugin);
117c4e38abfSYoshie MuranakaVue.use(InputGroupPlugin);
118e080a1a7SDerick MontagueVue.use(LayoutPlugin);
11997d86b33SDixsie WolmersVue.use(LayoutPlugin);
120a2988f40SDerick MontagueVue.use(LinkPlugin);
12197d86b33SDixsie WolmersVue.use(ListGroupPlugin);
12235080acbSYoshie MuranakaVue.use(ModalPlugin);
12342c19893SDerick MontagueVue.use(NavbarPlugin);
12442c19893SDerick MontagueVue.use(NavPlugin);
125f9832b0eSYoshie MuranakaVue.use(PaginationPlugin);
1263be801aaSYoshie MuranakaVue.use(ProgressPlugin);
12742c19893SDerick MontagueVue.use(TablePlugin);
128c4b8757eSDixsie WolmersVue.use(TabsPlugin);
1290fc91e79SYoshie MuranakaVue.use(ToastPlugin);
1301be6b41eSYoshie MuranakaVue.use(TooltipPlugin);
1314b0fc1dbSYoshie MuranakaVue.use(Vuelidate);
132a2988f40SDerick Montague
133a2988f40SDerick Montaguenew Vue({
134a2988f40SDerick Montague  router,
135a2988f40SDerick Montague  store,
136cbcd2136SDixsie Wolmers  i18n,
137602e98aaSDerick Montague  render: (h) => h(App),
138fded0d11SDerick Montague}).$mount('#app');
139*fb6c6de9SKonstantinVue.prototype.$eventBus = eventBus;
140