Commit e0b9ec8e authored by Filipa Lacerda's avatar Filipa Lacerda

Use vue files for vue components.

Remove from globalnamespace
parent b8988cb6
<script>
/* eslint-disable no-new */ /* eslint-disable no-new */
/* global Flash */ /* global Flash */
import Vue from 'vue';
import EnvironmentsService from '../services/environments_service'; import EnvironmentsService from '../services/environments_service';
import EnvironmentTable from './environments_table.vue'; import EnvironmentTable from './environments_table.vue';
import EnvironmentsStore from '../stores/environments_store'; import EnvironmentsStore from '../stores/environments_store';
...@@ -8,7 +9,7 @@ import TablePaginationComponent from '../../vue_shared/components/table_paginati ...@@ -8,7 +9,7 @@ import TablePaginationComponent from '../../vue_shared/components/table_paginati
import '../../lib/utils/common_utils'; import '../../lib/utils/common_utils';
import eventHub from '../event_hub'; import eventHub from '../event_hub';
export default Vue.component('environment-component', { export default {
components: { components: {
'environment-table': EnvironmentTable, 'environment-table': EnvironmentTable,
...@@ -162,12 +163,15 @@ export default Vue.component('environment-component', { ...@@ -162,12 +163,15 @@ export default Vue.component('environment-component', {
}); });
}, },
}, },
};
template: ` </script>
<template>
<div :class="cssContainerClass"> <div :class="cssContainerClass">
<div class="top-area"> <div class="top-area">
<ul v-if="!isLoading" class="nav-links"> <ul
<li v-bind:class="{ 'active': scope === null || scope === 'available' }"> v-if="!isLoading"
class="nav-links">
<li :class="{ 'active': scope === null || scope === 'available' }">
<a :href="projectEnvironmentsPath"> <a :href="projectEnvironmentsPath">
Available Available
<span class="badge js-available-environments-count"> <span class="badge js-available-environments-count">
...@@ -175,7 +179,7 @@ export default Vue.component('environment-component', { ...@@ -175,7 +179,7 @@ export default Vue.component('environment-component', {
</span> </span>
</a> </a>
</li> </li>
<li v-bind:class="{ 'active' : scope === 'stopped' }"> <li :class="{ 'active' : scope === 'stopped' }">
<a :href="projectStoppedEnvironmentsPath"> <a :href="projectStoppedEnvironmentsPath">
Stopped Stopped
<span class="badge js-stopped-environments-count"> <span class="badge js-stopped-environments-count">
...@@ -184,19 +188,29 @@ export default Vue.component('environment-component', { ...@@ -184,19 +188,29 @@ export default Vue.component('environment-component', {
</a> </a>
</li> </li>
</ul> </ul>
<div v-if="canCreateEnvironmentParsed && !isLoading" class="nav-controls"> <div
<a :href="newEnvironmentPath" class="btn btn-create"> v-if="canCreateEnvironmentParsed && !isLoading"
class="nav-controls">
<a
:href="newEnvironmentPath"
class="btn btn-create">
New environment New environment
</a> </a>
</div> </div>
</div> </div>
<div class="content-list environments-container"> <div class="content-list environments-container">
<div class="environments-list-loading text-center" v-if="isLoading"> <div
<i class="fa fa-spinner fa-spin" aria-hidden="true"></i> class="environments-list-loading text-center"
v-if="isLoading">
<i
class="fa fa-spinner fa-spin"
aria-hidden="true" />
</div> </div>
<div class="blank-state blank-state-no-icon" <div
class="blank-state blank-state-no-icon"
v-if="!isLoading && state.environments.length === 0"> v-if="!isLoading && state.environments.length === 0">
<h2 class="blank-state-title js-blank-state-title"> <h2 class="blank-state-title js-blank-state-title">
You don't have any environments right now. You don't have any environments right now.
...@@ -209,14 +223,16 @@ export default Vue.component('environment-component', { ...@@ -209,14 +223,16 @@ export default Vue.component('environment-component', {
</a> </a>
</p> </p>
<a v-if="canCreateEnvironmentParsed" <a
v-if="canCreateEnvironmentParsed"
:href="newEnvironmentPath" :href="newEnvironmentPath"
class="btn btn-create js-new-environment-button"> class="btn btn-create js-new-environment-button">
New Environment New Environment
</a> </a>
</div> </div>
<div class="table-holder" <div
class="table-holder"
v-if="!isLoading && state.environments.length > 0"> v-if="!isLoading && state.environments.length > 0">
<environment-table <environment-table
...@@ -231,9 +247,7 @@ export default Vue.component('environment-component', { ...@@ -231,9 +247,7 @@ export default Vue.component('environment-component', {
<table-pagination v-if="state.paginationInformation && state.paginationInformation.totalPages > 1" <table-pagination v-if="state.paginationInformation && state.paginationInformation.totalPages > 1"
:change="changePage" :change="changePage"
:pageInfo="state.paginationInformation"> :pageInfo="state.paginationInformation" />
</table-pagination>
</div> </div>
</div> </div>
`, </template>
});
import EnvironmentsComponent from './components/environment'; import Vue from 'vue';
import EnvironmentsComponent from './components/environment.vue';
$(() => { document.addEventListener('DOMContentLoaded', () => {
window.gl = window.gl || {}; // eslint-disable-next-line no-new
new Vue({
if (gl.EnvironmentsListApp) { el: '#environments-list-view',
gl.EnvironmentsListApp.$destroy(true); components: {
} 'environments-table-app': EnvironmentsComponent,
},
gl.EnvironmentsListApp = new EnvironmentsComponent({ render: createElement => createElement('environments-table-app'),
el: document.querySelector('#environments-list-view'),
}); });
}); });
import Vue from 'vue'; import Vue from 'vue';
import '~/flash'; import '~/flash';
import EnvironmentsComponent from '~/environments/components/environment'; import environmentsComponent from '~/environments/components/environment.vue';
import { environment, folder } from './mock_data'; import { environment, folder } from './mock_data';
describe('Environment', () => { describe('Environment', () => {
preloadFixtures('static/environments/environments.html.raw'); preloadFixtures('static/environments/environments.html.raw');
let EnvironmentsComponent;
let component; let component;
beforeEach(() => { beforeEach(() => {
loadFixtures('static/environments/environments.html.raw'); loadFixtures('static/environments/environments.html.raw');
EnvironmentsComponent = Vue.extend(environmentsComponent);
}); });
describe('successfull request', () => { describe('successfull request', () => {
...@@ -31,9 +34,10 @@ describe('Environment', () => { ...@@ -31,9 +34,10 @@ describe('Environment', () => {
}); });
it('should render the empty state', (done) => { it('should render the empty state', (done) => {
console.log(EnvironmentsComponent);
component = new EnvironmentsComponent({ component = new EnvironmentsComponent({
el: document.querySelector('#environments-list-view'), el: document.querySelector('#environments-list-view'),
}); }).$mount();
setTimeout(() => { setTimeout(() => {
expect( expect(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment