Skip to content
Snippets Groups Projects

REDMINE_ISSUE-19722 | Créer des filtres pour les attributs projet sur l'accueil de l'application

Merged REDMINE_ISSUE-19722 | Créer des filtres pour les attributs projet sur l'accueil de l'application
Merged Timothee P requested to merge redmine-issues/19722 into develop
1 file
+ 74
36
Compare changes
  • Side-by-side
  • Inline
@@ -15,42 +15,67 @@
@@ -15,42 +15,67 @@
/>
/>
</div>
</div>
</div>
</div>
<div :class="['ui menu filters', { 'hidden': displayFilters }]">
<div :class="['full-width', { 'hidden': displayFilters }]">
<div class="item">
<div class="ui menu filters">
<label>
<div class="item">
Niveau d'autorisation requis
<label>
</label>
Niveau d'autorisation requis
<DropdownMenuItem
</label>
:options="accessLevelOptions"
<DropdownMenuItem
v-on="$listeners"
:options="accessLevelOptions"
/>
v-on="$listeners"
</div>
/>
<div class="item">
</div>
<label>
<div class="item">
Mon niveau d'autorisation
<label>
</label>
Mon niveau d'autorisation
<DropdownMenuItem
</label>
:options="userAccessLevelOptions"
<DropdownMenuItem
v-on="$listeners"
:options="userAccessLevelOptions"
/>
v-on="$listeners"
</div>
/>
<div class="item">
</div>
<label>
<div class="item">
Modération
<label>
</label>
Modération
<DropdownMenuItem
</label>
:options="moderationOptions"
<DropdownMenuItem
v-on="$listeners"
:options="moderationOptions"
/>
v-on="$listeners"
 
/>
 
</div>
 
<div class="item">
 
<label>
 
Recherche par nom
 
</label>
 
<search-projects
 
:search-function="SEARCH_PROJECTS"
 
v-on="$listeners"
 
/>
 
</div>
</div>
</div>
<div class="item">
<div class="ui menu filters">
<label>
<div
Recherche par nom
v-for="projectAttribute in displayedProjectAttributes"
</label>
:key="projectAttribute.id"
<search-projects
class="item"
:search-function="SEARCH_PROJECTS"
>
v-on="$listeners"
<label>
 
{{ projectAttribute.label }}
 
</label>
 
<!-- <FeatureExtraForm
 
:options="projectAttribute.options"
 
v-on="$listeners"
 
/> -->
 
<FeatureExtraForm
 
:id="`attribute-value-for-${projectAttribute.name}`"
 
ref="extraForm"
 
name="attribute-value"
 
:field="{ ...projectAttribute, value: projectAttribute.default_filter_value }"
 
:use-value-only="true"
 
@update:value="updateValue($event.toString(), projectAttribute.id)"
/>
/>
 
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -61,6 +86,7 @@ import { mapState, mapActions } from 'vuex';
@@ -61,6 +86,7 @@ import { mapState, mapActions } from 'vuex';
import DropdownMenuItem from '@/components/Projects/DropdownMenuItem.vue';
import DropdownMenuItem from '@/components/Projects/DropdownMenuItem.vue';
import SearchProjects from '@/components/Projects/SearchProjects.vue';
import SearchProjects from '@/components/Projects/SearchProjects.vue';
 
import FeatureExtraForm from '@/components/Feature/Edit/FeatureExtraForm';
export default {
export default {
name: 'ProjectsMenu',
name: 'ProjectsMenu',
@@ -68,6 +94,7 @@ export default {
@@ -68,6 +94,7 @@ export default {
components: {
components: {
DropdownMenuItem,
DropdownMenuItem,
SearchProjects,
SearchProjects,
 
FeatureExtraForm,
},
},
data() {
data() {
@@ -143,12 +170,17 @@ export default {
@@ -143,12 +170,17 @@ export default {
filter: 'user_access_level',
filter: 'user_access_level',
value: '5'
value: '5'
},
},
]
],
 
projectAttributesFilter: {},
};
};
},
},
computed: {
computed: {
...mapState(['user'])
...mapState(['user', 'projectAttributes']),
 
 
displayedProjectAttributes() {
 
return this.projectAttributes.filter(el => el.display_filter);
 
},
},
},
created() {
created() {
@@ -165,6 +197,12 @@ export default {
@@ -165,6 +197,12 @@ export default {
...mapActions('projects', [
...mapActions('projects', [
'SEARCH_PROJECTS'
'SEARCH_PROJECTS'
]),
]),
 
updateValue(value, id) {
 
// update the project attributes key/value object
 
this.projectAttributesFilter[id] = value;
 
// emit the new project attributes object to be set as a project filter in query
 
this.$emit('filter', { filter: 'attributes', value: JSON.stringify(this.projectAttributesFilter) });
 
}
}
}
};
};
</script>
</script>
Loading