mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-03-09 22:23:28 +08:00
Merge pull request #4889 from sboursen-scinote/sb_SCI-7585
FIX: Clear/Close filter change - Inventory/Items filter [SCI-7585]
This commit is contained in:
commit
6d455d6b7b
5 changed files with 71 additions and 19 deletions
|
@ -69,7 +69,7 @@
|
||||||
@include font-h2;
|
@include font-h2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.clear-filters-btn {
|
.close {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,6 +120,10 @@
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
|
|
||||||
.apply-button {
|
.apply-button {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear-filters-btn {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,6 +276,13 @@
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
margin-top: .5em;
|
margin-top: .5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.clear-filters-btn {
|
||||||
|
margin-left: 0;
|
||||||
|
margin-top: .5em;
|
||||||
|
padding-left: 38px;
|
||||||
|
padding-right: 38px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,7 +120,12 @@ window.initRepositoryFilter = () => {
|
||||||
this.reloadDataTable();
|
this.reloadDataTable();
|
||||||
},
|
},
|
||||||
clearFilters() {
|
clearFilters() {
|
||||||
this.filters = [];
|
this.filters = this.filters
|
||||||
|
.map(filter => {
|
||||||
|
const newFilter = { ...filter };
|
||||||
|
newFilter.data["parameters"] = {};
|
||||||
|
return newFilter;
|
||||||
|
});
|
||||||
this.filterName = null;
|
this.filterName = null;
|
||||||
this.dataTableElement.removeAttr('data-repository-filter-json');
|
this.dataTableElement.removeAttr('data-repository-filter-json');
|
||||||
$('#modalSaveRepositoryTableFilter').data('repositoryTableFilterId', null);
|
$('#modalSaveRepositoryTableFilter').data('repositoryTableFilterId', null);
|
||||||
|
@ -132,6 +137,9 @@ window.initRepositoryFilter = () => {
|
||||||
},
|
},
|
||||||
updateCurrentFilterName(name) {
|
updateCurrentFilterName(name) {
|
||||||
this.filterName = name;
|
this.filterName = name;
|
||||||
|
},
|
||||||
|
hideDropdown() {
|
||||||
|
$('#filtersDropdownButton').removeClass('open');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -19,21 +19,16 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-light clear-filters-btn prevent-shrink" @click="clearFilters()">
|
<button type="button" class="close" @click="$emit('hide-dropdown')" aria-label="<%= t('general.close') %>">
|
||||||
<i class="fas fa-times-circle"></i>
|
<span aria-hidden="true">×</span>
|
||||||
{{ i18n.t('repositories.show.filters.clear') }}
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="filters-list">
|
<FiltersList
|
||||||
<FilterElement
|
:filters="filters"
|
||||||
v-for="(filter, index) in filters"
|
:my_modules="my_modules"
|
||||||
:key="filter.id"
|
:key="filterListKey ? 1 : 0"
|
||||||
:filter.sync="filters[index]"
|
@filter:update="updateFilter"
|
||||||
:my_modules.sync= "my_modules"
|
@filter:delete="deleteFilter" />
|
||||||
@filter:update="updateFilter"
|
|
||||||
@filter:delete="filters.splice(index, 1)"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div id="filtersColumnsDropdown" class="dropup filters-columns-dropdown" @click="toggleColumnsFilters">
|
<div id="filtersColumnsDropdown" class="dropup filters-columns-dropdown" @click="toggleColumnsFilters">
|
||||||
<button class="btn btn-secondary add-filter prevent-shrink" >
|
<button class="btn btn-secondary add-filter prevent-shrink" >
|
||||||
|
@ -50,6 +45,9 @@
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<button class="btn btn-secondary clear-filters-btn prevent-shrink" @click="clearFilters">
|
||||||
|
{{ i18n.t('repositories.show.filters.clear') }}
|
||||||
|
</button>
|
||||||
<button @click="$emit('filters:apply')" class="btn btn-primary apply-button prevent-shrink">
|
<button @click="$emit('filters:apply')" class="btn btn-primary apply-button prevent-shrink">
|
||||||
{{ i18n.t('repositories.show.filters.apply') }}
|
{{ i18n.t('repositories.show.filters.apply') }}
|
||||||
</button>
|
</button>
|
||||||
|
@ -59,7 +57,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ColumnElement from 'vue/repository_filter/column.vue'
|
import ColumnElement from 'vue/repository_filter/column.vue'
|
||||||
import FilterElement from 'vue/repository_filter/filter.vue'
|
import FiltersList from 'vue/repository_filter/filters_list.vue'
|
||||||
import SavedFilterElement from 'vue/repository_filter/saved_filter.vue'
|
import SavedFilterElement from 'vue/repository_filter/saved_filter.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -76,10 +74,11 @@
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
filters: this.defaultFilters,
|
filters: this.defaultFilters,
|
||||||
savedFilterScrollbar: null
|
savedFilterScrollbar: null,
|
||||||
|
filterListKey: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: { ColumnElement, FilterElement, SavedFilterElement },
|
components: { ColumnElement, FiltersList, SavedFilterElement },
|
||||||
methods: {
|
methods: {
|
||||||
addFilter(column) {
|
addFilter(column) {
|
||||||
const id = this.filters.length ? this.filters[this.filters.length - 1].id + 1 : 1
|
const id = this.filters.length ? this.filters[this.filters.length - 1].id + 1 : 1
|
||||||
|
@ -92,8 +91,11 @@
|
||||||
this.$emit("filters:update", this.filters);
|
this.$emit("filters:update", this.filters);
|
||||||
},
|
},
|
||||||
clearFilters() {
|
clearFilters() {
|
||||||
this.filters = [];
|
|
||||||
this.$emit('filters:clear');
|
this.$emit('filters:clear');
|
||||||
|
this.filterListKey = !this.filterListKey;
|
||||||
|
},
|
||||||
|
deleteFilter(index) {
|
||||||
|
this.filters.splice(index, 1);
|
||||||
},
|
},
|
||||||
closeDropdowns() {
|
closeDropdowns() {
|
||||||
this.closeColumnsFilters();
|
this.closeColumnsFilters();
|
||||||
|
|
30
app/javascript/vue/repository_filter/filters_list.vue
Normal file
30
app/javascript/vue/repository_filter/filters_list.vue
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
<template>
|
||||||
|
<div class="filters-list">
|
||||||
|
<FilterElement
|
||||||
|
v-for="(filter, index) in filters"
|
||||||
|
:key="filter.id"
|
||||||
|
:filter.sync="filters[index]"
|
||||||
|
:my_modules.sync="my_modules"
|
||||||
|
@filter:update="updateFilter"
|
||||||
|
@filter:delete="$emit('filter:delete', index)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import FilterElement from 'vue/repository_filter/filter.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'FiltersList',
|
||||||
|
props: {
|
||||||
|
filters: Array,
|
||||||
|
my_modules: Array,
|
||||||
|
},
|
||||||
|
components: {FilterElement},
|
||||||
|
methods: {
|
||||||
|
updateFilter(value) {
|
||||||
|
this.$emit('filter:update', value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -33,6 +33,7 @@
|
||||||
@filters:apply="applyFilters"
|
@filters:apply="applyFilters"
|
||||||
@filters:clear="clearFilters"
|
@filters:clear="clearFilters"
|
||||||
@filters:update="updateFilters"
|
@filters:update="updateFilters"
|
||||||
|
@hide-dropdown="hideDropdown"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue