All files / app/assets/javascripts/environments/folder environments_folder_bundle.js

0% Statements 0/19
0% Branches 0/6
0% Functions 0/6
0% Lines 0/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91                                                                                                                                                                                     
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import VueRouter from 'vue-router';
import createDefaultClient from '~/lib/graphql';
import Translate from '~/vue_shared/translate';
import { apolloProvider } from '../graphql/client';
import EnvironmentsFolderView from './environments_folder_view.vue';
import EnvironmentsFolderApp from './environments_folder_app.vue';
 
Vue.use(Translate);
Vue.use(VueApollo);
 
const legacyApolloProvider = new VueApollo({
  defaultClient: createDefaultClient(),
});
 
export default () => {
  const el = document.getElementById('environments-folder-list-view');
  const environmentsData = el.dataset;
  if (gon.features.environmentsFolderNewLook) {
    Vue.use(VueRouter);
 
    const folderPath = environmentsData.endpoint.replace('.json', '');
    const { projectPath, folderName, helpPagePath } = environmentsData;
 
    const router = new VueRouter({
      mode: 'history',
      base: window.location.pathname,
      routes: [
        {
          path: '/',
          name: 'environments_folder',
          component: EnvironmentsFolderApp,
          props: (route) => ({
            scope: route.query.scope,
            page: Number(route.query.page || '1'),
            folderName,
            folderPath,
          }),
        },
      ],
      scrollBehavior(to, from, savedPosition) {
        if (savedPosition) {
          return savedPosition;
        }
        return { top: 0 };
      },
    });
 
    return new Vue({
      el,
      provide: {
        projectPath,
        helpPagePath,
      },
      apolloProvider,
      router,
      render(createElement) {
        return createElement('router-view');
      },
    });
  }
 
  return new Vue({
    el,
    components: {
      EnvironmentsFolderView,
    },
    apolloProvider: legacyApolloProvider,
    provide: {
      projectPath: el.dataset.projectPath,
    },
    data() {
      return {
        endpoint: environmentsData.endpoint,
        folderName: environmentsData.folderName,
        cssContainerClass: environmentsData.cssClass,
      };
    },
    render(createElement) {
      return createElement('environments-folder-view', {
        props: {
          endpoint: this.endpoint,
          folderName: this.folderName,
          cssContainerClass: this.cssContainerClass,
        },
      });
    },
  });
};