Begin implementation of Processes List Popup
This commit is contained in:
parent
632e364cba
commit
b2d449f387
|
@ -54,6 +54,14 @@
|
||||||
:style="{color: 'white'}"
|
:style="{color: 'white'}"
|
||||||
@click="toItemsPage">{{ $i18n.get('advanced_search') }}</a>
|
@click="toItemsPage">{{ $i18n.get('advanced_search') }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
<button
|
||||||
|
@click="showProcesses = !showProcesses"
|
||||||
|
class="button is-small is-secondary level-item">
|
||||||
|
<b-icon icon="swap-vertical"/>
|
||||||
|
</button>
|
||||||
|
<processes-list
|
||||||
|
v-show="showProcesses"
|
||||||
|
@closeProcessesPopup="showProcesses = false"/>
|
||||||
<a
|
<a
|
||||||
:style="{color: 'white'}"
|
:style="{color: 'white'}"
|
||||||
class="level-item"
|
class="level-item"
|
||||||
|
@ -65,8 +73,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from 'vuex';
|
|
||||||
import AdvancedSearch from '../advanced-search/advanced-search.vue';
|
import AdvancedSearch from '../advanced-search/advanced-search.vue';
|
||||||
|
import ProcessesList from '../other/processes-list.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'TainacanHeader',
|
name: 'TainacanHeader',
|
||||||
|
@ -76,21 +84,16 @@
|
||||||
wordpressAdmin: window.location.origin + window.location.pathname.replace('admin.php', ''),
|
wordpressAdmin: window.location.origin + window.location.pathname.replace('admin.php', ''),
|
||||||
searchQuery: '',
|
searchQuery: '',
|
||||||
futureSearchQuery: '',
|
futureSearchQuery: '',
|
||||||
}
|
showProcesses: false,
|
||||||
},
|
hasNewProcess: false
|
||||||
computed: {
|
|
||||||
bgProcess() {
|
|
||||||
console.log(this.getProcess());
|
|
||||||
return this.getProcess();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
AdvancedSearch,
|
AdvancedSearch,
|
||||||
|
ProcessesList
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapGetters('bgprocess', [
|
|
||||||
'getProcess',
|
|
||||||
]),
|
|
||||||
toItemsPage() {
|
toItemsPage() {
|
||||||
if(this.$route.path == '/items') {
|
if(this.$route.path == '/items') {
|
||||||
this.$root.$emit('openAdvancedSearch', true);
|
this.$root.$emit('openAdvancedSearch', true);
|
||||||
|
|
|
@ -0,0 +1,166 @@
|
||||||
|
<template>
|
||||||
|
<div class="processes-popup">
|
||||||
|
<div class="popup-header">
|
||||||
|
<span class="header-title">{{ bgProcesses.length }}</span>
|
||||||
|
<a @click="showProcessesList = !showProcessesList">
|
||||||
|
<span class="icon has-text-tertiary">
|
||||||
|
<i
|
||||||
|
:class="{ 'mdi-chevron-up': showProcessesList,
|
||||||
|
'mdi-chevron-down': !showProcessesList }"
|
||||||
|
class="mdi"/>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a @click="$emit('closeProcessesPopup')">
|
||||||
|
<span class="icon has-text-tertiary">
|
||||||
|
<i class="mdi mdi-close"/>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="showProcessesList"
|
||||||
|
class="popup-list">
|
||||||
|
<ul>
|
||||||
|
<li
|
||||||
|
v-if="bgProcess.progress_label"
|
||||||
|
:key="index"
|
||||||
|
v-for="(bgProcess, index) of bgProcesses">
|
||||||
|
<div class="progress-label">{{ bgProcess.progress_label }}</div>
|
||||||
|
<span
|
||||||
|
v-if="bgProcess.done > 0"
|
||||||
|
class="icon has-text-success">
|
||||||
|
<i class="mdi mdi-24px mdi-checkbox-marked-circle"/>
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-if="bgProcess.done <= 0"
|
||||||
|
class="icon has-text-success">
|
||||||
|
<div class="control has-icons-right is-loading is-clearfix" />
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="popup-footer"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters, mapActions } from 'vuex';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ProcessesList',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showProcessesList: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
bgProcesses() {
|
||||||
|
return this.getProcesses();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapActions('bgprocess', [
|
||||||
|
'fetchProcesses'
|
||||||
|
]),
|
||||||
|
...mapGetters('bgprocess', [
|
||||||
|
'getProcesses',
|
||||||
|
])
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.fetchProcesses();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import "../../scss/_variables.scss";
|
||||||
|
|
||||||
|
@keyframes appear {
|
||||||
|
from {
|
||||||
|
top: 24px;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
top: 48px;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.processes-popup{
|
||||||
|
background-color: #c1dae0;
|
||||||
|
width: 320px;
|
||||||
|
max-width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 48px;
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: 0px 0px 10px -8px #222;
|
||||||
|
animation-name: appear;
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
|
||||||
|
.update-warning {
|
||||||
|
color: $tertiary;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-delay: 0.5s;
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
color: $tertiary;
|
||||||
|
padding: 12px;
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup-list {
|
||||||
|
background-color: white;
|
||||||
|
color: black;
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding: 6px 12px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.progress-label {
|
||||||
|
margin-right: auto;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
max-width: calc(100% - 40px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.control.is-loading::after {
|
||||||
|
position: relative !important;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
li:hover {
|
||||||
|
background-color: $tainacan-input-background;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&:before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
right: 47px;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
&:before {
|
||||||
|
border-color: transparent transparent $primary-light transparent;
|
||||||
|
border-right-width: 8px;
|
||||||
|
border-bottom-width: 8px;
|
||||||
|
border-left-width: 8px;
|
||||||
|
top: -10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
|
@ -154,7 +154,7 @@ export const runImporter = ( { dispatch } , importerId ) => {
|
||||||
axios.tainacan.post('importers/session/' + importerId + '/run')
|
axios.tainacan.post('importers/session/' + importerId + '/run')
|
||||||
.then( res => {
|
.then( res => {
|
||||||
let backgroundProcessId = res.data;
|
let backgroundProcessId = res.data;
|
||||||
dispatch('bgprocess/fetchProcesses');
|
dispatch('bgprocess/fetchProcesses', null, { root: true });
|
||||||
resolve( backgroundProcessId );
|
resolve( backgroundProcessId );
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
|
|
Loading…
Reference in New Issue