Allow CCPO to filter requests by DOD component

This commit is contained in:
richard-dds 2018-11-07 11:29:58 -05:00
parent 7740758cf0
commit 4dde11d0c6
3 changed files with 33 additions and 4 deletions

View File

@ -4,6 +4,7 @@ from flask import render_template, g, url_for
from . import requests_bp
from atst.domain.requests import Requests
from atst.models.permissions import Permissions
from atst.forms.data import SERVICE_BRANCHES
class RequestsIndex(object):
@ -20,7 +21,11 @@ class RequestsIndex(object):
else:
context = self._non_ccpo_view(self.user)
return {**context, "possible_statuses": Requests.possible_statuses()}
return {
**context,
"possible_statuses": Requests.possible_statuses(),
"possible_dod_components": [b[0] for b in SERVICE_BRANCHES[1:]],
}
def _ccpo_view(self, user):
requests = Requests.get_many()

View File

@ -23,6 +23,10 @@ export default {
type: Array,
default: [],
},
dodComponents: {
type: Array,
default: [],
}
},
data: function () {
@ -76,6 +80,7 @@ export default {
return {
searchValue: '',
statusValue: '',
dodComponentValue: '',
sort: {
columnName: '',
isAscending: true
@ -88,7 +93,7 @@ export default {
filteredRequests: function () {
return pipe(
partial(this.applySearch, [this.searchValue]),
partial(this.applyFilters, [this.statusValue]),
partial(this.applyFilters, [this.statusValue, this.dodComponentValue]),
partial(this.applySort, [this.sort]),
)(this.requests)
}
@ -106,11 +111,15 @@ export default {
true
)
},
applyFilters: (status, requests) => {
applyFilters: (status, dodComponent, requests) => {
return requests.filter(
(request) => status !== '' ?
request.status === status :
true
).filter(
(request) => dodComponent !== '' ?
request.dod_component === dodComponent :
true
)
},
applySort: function(sort, requests) {

View File

@ -37,7 +37,13 @@
</div>
{% endcall %}
<requests-list inline-template v-bind:requests='{{ requests | tojson }}' v-bind:is-extended='{{ extended_view | tojson }}' v-bind:statuses='{{ possible_statuses | tojson }}'>
<requests-list
inline-template
v-bind:requests='{{ requests | tojson }}'
v-bind:is-extended='{{ extended_view | tojson }}'
v-bind:statuses='{{ possible_statuses | tojson }}'
v-bind:dod-components='{{ possible_dod_components | tojson }}'
>
<div>
{% if num_action_required %}
@ -96,6 +102,15 @@
<option v-for="status in statuses" :value="status">!{ status }</option>
</select>
</div>
<div class='usa-input'>
<label for='filter-status'>Filter requests by DOD component</label>
<select v-model="dodComponentValue" id="filter-dod-component" name="filter-dod-component">
<option value="" selected disabled>Filter by DOD Component</option>
<option value="">All</option>
<option v-for="dodComponent in dodComponents" :value="dodComponent">!{ dodComponent }</option>
</select>
</div>
</form>
{% endif %}