Allow CCPO to filter requests by DOD component
This commit is contained in:
parent
7740758cf0
commit
4dde11d0c6
@ -4,6 +4,7 @@ from flask import render_template, g, url_for
|
|||||||
from . import requests_bp
|
from . import requests_bp
|
||||||
from atst.domain.requests import Requests
|
from atst.domain.requests import Requests
|
||||||
from atst.models.permissions import Permissions
|
from atst.models.permissions import Permissions
|
||||||
|
from atst.forms.data import SERVICE_BRANCHES
|
||||||
|
|
||||||
|
|
||||||
class RequestsIndex(object):
|
class RequestsIndex(object):
|
||||||
@ -20,7 +21,11 @@ class RequestsIndex(object):
|
|||||||
else:
|
else:
|
||||||
context = self._non_ccpo_view(self.user)
|
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):
|
def _ccpo_view(self, user):
|
||||||
requests = Requests.get_many()
|
requests = Requests.get_many()
|
||||||
|
@ -23,6 +23,10 @@ export default {
|
|||||||
type: Array,
|
type: Array,
|
||||||
default: [],
|
default: [],
|
||||||
},
|
},
|
||||||
|
dodComponents: {
|
||||||
|
type: Array,
|
||||||
|
default: [],
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
data: function () {
|
data: function () {
|
||||||
@ -76,6 +80,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
searchValue: '',
|
searchValue: '',
|
||||||
statusValue: '',
|
statusValue: '',
|
||||||
|
dodComponentValue: '',
|
||||||
sort: {
|
sort: {
|
||||||
columnName: '',
|
columnName: '',
|
||||||
isAscending: true
|
isAscending: true
|
||||||
@ -88,7 +93,7 @@ export default {
|
|||||||
filteredRequests: function () {
|
filteredRequests: function () {
|
||||||
return pipe(
|
return pipe(
|
||||||
partial(this.applySearch, [this.searchValue]),
|
partial(this.applySearch, [this.searchValue]),
|
||||||
partial(this.applyFilters, [this.statusValue]),
|
partial(this.applyFilters, [this.statusValue, this.dodComponentValue]),
|
||||||
partial(this.applySort, [this.sort]),
|
partial(this.applySort, [this.sort]),
|
||||||
)(this.requests)
|
)(this.requests)
|
||||||
}
|
}
|
||||||
@ -106,11 +111,15 @@ export default {
|
|||||||
true
|
true
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
applyFilters: (status, requests) => {
|
applyFilters: (status, dodComponent, requests) => {
|
||||||
return requests.filter(
|
return requests.filter(
|
||||||
(request) => status !== '' ?
|
(request) => status !== '' ?
|
||||||
request.status === status :
|
request.status === status :
|
||||||
true
|
true
|
||||||
|
).filter(
|
||||||
|
(request) => dodComponent !== '' ?
|
||||||
|
request.dod_component === dodComponent :
|
||||||
|
true
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
applySort: function(sort, requests) {
|
applySort: function(sort, requests) {
|
||||||
|
@ -37,7 +37,13 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endcall %}
|
{% 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>
|
<div>
|
||||||
|
|
||||||
{% if num_action_required %}
|
{% if num_action_required %}
|
||||||
@ -96,6 +102,15 @@
|
|||||||
<option v-for="status in statuses" :value="status">!{ status }</option>
|
<option v-for="status in statuses" :value="status">!{ status }</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</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>
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user