@byu-oit/vue-decision-processing-components 8.35.7 → 8.35.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/deploy.yml +41 -0
- package/CHANGELOG.md +6 -0
- package/DetailsMission.vue +3 -3
- package/FilterButtonAdmitPeriod.vue +0 -5
- package/Queues.vue +234 -224
- package/package.json +4 -2
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Deployment
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
|
|
7
|
+
env:
|
|
8
|
+
node_version: "14"
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
concurrency: publish
|
|
13
|
+
name: Publish npm package
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Check out
|
|
17
|
+
uses: actions/checkout@v3
|
|
18
|
+
|
|
19
|
+
- name: Set up Node.js
|
|
20
|
+
uses: actions/setup-node@v4
|
|
21
|
+
with:
|
|
22
|
+
node-version: ${{ env.node_version }}
|
|
23
|
+
registry-url: https://npm.pkg.github.com
|
|
24
|
+
scope: '@byu-oit'
|
|
25
|
+
|
|
26
|
+
- name: Publish
|
|
27
|
+
run: npm publish
|
|
28
|
+
env:
|
|
29
|
+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
30
|
+
|
|
31
|
+
- name: Set up Node.js
|
|
32
|
+
uses: actions/setup-node@v4
|
|
33
|
+
with:
|
|
34
|
+
node-version: ${{ env.node_version }}
|
|
35
|
+
registry-url: https://registry.npmjs.org
|
|
36
|
+
scope: '@byu-oit'
|
|
37
|
+
|
|
38
|
+
- name: Publish
|
|
39
|
+
run: npm publish --access public
|
|
40
|
+
env:
|
|
41
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [8.35.8](https://github.com/byu-oit/vue-decision-processing-components/compare/v.8.35.8...v8.35.7) (2023-12-13)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* adjusts active admit periods ([eb5e9db](https://github.com/byu-oit/vue-decision-processing-components/commit/eb5e9dbcfd3aa8c3ae18b2caa88e1aecc9c1cda9))
|
|
10
|
+
|
|
5
11
|
|
|
6
12
|
### [8.35.7](https://github.com/byu-oit/vue-decision-processing-components/compare/v.8.35.7...v8.35.6) (2023-12-13)
|
|
7
13
|
|
package/DetailsMission.vue
CHANGED
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
<th>Mission Name</th>
|
|
36
36
|
<th>Mission Type</th>
|
|
37
37
|
<th>Mission Language</th>
|
|
38
|
-
<th>Mission Email</th>
|
|
39
38
|
<th>Mission Dates</th>
|
|
40
39
|
<th>Months of Service</th>
|
|
41
40
|
</tr>
|
|
@@ -45,7 +44,6 @@
|
|
|
45
44
|
<td>{{mission.name}}</td>
|
|
46
45
|
<td>{{mission.type}}</td>
|
|
47
46
|
<td>{{mission.language}}</td>
|
|
48
|
-
<td>{{mission.missionEmail}}</td>
|
|
49
47
|
<td>{{mission.startMonth}} - {{mission.endMonth}}</td>
|
|
50
48
|
<td>{{monthsOfService}}</td>
|
|
51
49
|
</tr>
|
|
@@ -58,6 +56,8 @@
|
|
|
58
56
|
</template>
|
|
59
57
|
<script>
|
|
60
58
|
import { mapState } from 'vuex'
|
|
59
|
+
import dayjs from 'dayjs';
|
|
60
|
+
|
|
61
61
|
|
|
62
62
|
export default {
|
|
63
63
|
name: 'DetailsMission',
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
const yyyyMm = /^[0-9]{4}-[0-9]{1,2}$/
|
|
76
76
|
const startMonth = this.mission.startMonth
|
|
77
77
|
if (!startMonth || !yyyyMm.test(startMonth)) return ''
|
|
78
|
-
const endMonth = this.mission.endMonth
|
|
78
|
+
const endMonth = (this.mission.endMonth === 'Ongoing') ? dayjs().format('YYYY-MM') : dayjs(this.mission.startMonth).format('YYYY-MM')
|
|
79
79
|
if (!endMonth || !yyyyMm.test(endMonth)) return ''
|
|
80
80
|
const [endY, endM] = endMonth.split('-')
|
|
81
81
|
const [startY, startM] = startMonth.split('-')
|
package/Queues.vue
CHANGED
|
@@ -14,255 +14,265 @@
|
|
|
14
14
|
limitations under the License.
|
|
15
15
|
-->
|
|
16
16
|
<template>
|
|
17
|
-
<section class="content-padding">
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
<section class="content-padding">
|
|
18
|
+
<h1 class="queue-title">
|
|
19
|
+
{{packetListName}}
|
|
20
|
+
<button class="btn btn-outline-primary" @click="refresh">
|
|
21
|
+
<span class="sr-only">Refresh</span>
|
|
22
|
+
<font-awesome-icon :icon="syncIcon" />
|
|
23
|
+
</button>
|
|
24
|
+
<p>{{packetListName}}</p>
|
|
25
|
+
<button vue-if="packetListName == 'Auto Admit'" class="btn btn-outline-primary" @click="SubmitAuto">
|
|
26
|
+
<span class="">Submit Applications</span>
|
|
27
|
+
</button>
|
|
28
|
+
</h1>
|
|
26
29
|
<div>
|
|
27
|
-
<
|
|
28
|
-
<
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<
|
|
46
|
-
<
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
30
|
+
<div>
|
|
31
|
+
<ul class="pagination">
|
|
32
|
+
<li class="page-item" v-if="notFirstPage">
|
|
33
|
+
<a class="page-link" href="`?offset=0`" aria-label="First" @click.prevent="loadPage('first')">First</a>
|
|
34
|
+
</li>
|
|
35
|
+
<li class="page-item" v-if="notFirstPage">
|
|
36
|
+
<a class="page-link" :href="`?offset=${prevPageOffset}`" aria-label="Previous" @click.prevent="loadPage('prev')">
|
|
37
|
+
<span aria-hidden="true"><font-awesome-icon :icon="prevIcon" /></span>
|
|
38
|
+
<span class="sr-only">Previous</span>
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
41
|
+
<li v-for="page in pageCount" :class="{ 'page-item': true, active: isPageActive(page) }">
|
|
42
|
+
<a v-if="page !== '...'"
|
|
43
|
+
class="page-link"
|
|
44
|
+
:href="`?offset=${(page - 1) * query.limit}`"
|
|
45
|
+
@click.prevent="loadPage(page)">{{page}}</a>
|
|
46
|
+
<span v-else class="page-link disabled">{{page}}</span>
|
|
47
|
+
</li>
|
|
48
|
+
<li class="page-item" v-if="notLastPage">
|
|
49
|
+
<a class="page-link" :href="`?offset=${nextPageOffset}`" aria-label="Next" @click.prevent="loadPage('next')">
|
|
50
|
+
<span aria-hidden="true"><font-awesome-icon :icon="nextIcon" /></span>
|
|
51
|
+
<span class="sr-only">Next</span>
|
|
52
|
+
</a>
|
|
53
|
+
</li>
|
|
54
|
+
<li class="page-item" v-if="notLastPage">
|
|
55
|
+
<a class="page-link" :href="`?offset=${lastPageOffset}`" aria-label="Last" @click.prevent="loadPage('last')">Last</a>
|
|
56
|
+
</li>
|
|
57
|
+
</ul>
|
|
58
|
+
<span class="match-caption">
|
|
55
59
|
{{currentPage}} of {{total}}
|
|
56
60
|
</span>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
<table class="table table-hover table-bordered">
|
|
62
|
+
<caption>
|
|
63
|
+
{{currentPage}} of {{total}}
|
|
64
|
+
</caption>
|
|
65
|
+
<thead class="thead-light">
|
|
62
66
|
<tr>
|
|
63
67
|
<slot name="columns">
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
<sortable-header @click="sortByName" v-bind="$props" field="applicant_name">Name</sortable-header>
|
|
69
|
+
<th>ID</th>
|
|
70
|
+
<th>Type</th>
|
|
71
|
+
<th>Major</th>
|
|
72
|
+
<sortable-header @click="sortByAdmitPeriod" v-bind="$props" field="admit_period">Admit Period</sortable-header>
|
|
73
|
+
<sortable-header @click="sortByNextAction" v-bind="$props" field="next_action">Next Action</sortable-header>
|
|
70
74
|
</slot>
|
|
71
75
|
</tr>
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
</thead>
|
|
77
|
+
<tbody>
|
|
74
78
|
<tr v-for="(row, i) of data" :key="row.application_uuid">
|
|
75
79
|
<slot v-bind:row="row" v-bind:i="i">
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
<td><router-link :to="`/detail/${row.application_uuid}`">{{row.applicant_name}}</router-link></td>
|
|
81
|
+
<td>{{row.applicant_id}}</td>
|
|
82
|
+
<td>{{row.applicant_type}}</td>
|
|
83
|
+
<td>{{row.applicant_major}}</td>
|
|
84
|
+
<td>{{row.admit_period}}</td>
|
|
85
|
+
<td>{{row.next_action_date | dateTime}}</td>
|
|
82
86
|
</slot>
|
|
83
87
|
</tr>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
88
|
+
</tbody>
|
|
89
|
+
</table>
|
|
90
|
+
<ul class="pagination">
|
|
91
|
+
<li class="page-item" v-if="notFirstPage">
|
|
92
|
+
<a class="page-link" href="`?offset=0`" aria-label="First" @click.prevent="loadPage('first')">First</a>
|
|
93
|
+
</li>
|
|
94
|
+
<li class="page-item" v-if="notFirstPage">
|
|
95
|
+
<a class="page-link" :href="`?offset=${prevPageOffset}`" aria-label="Previous" @click.prevent="loadPage('prev')">
|
|
96
|
+
<span aria-hidden="true"><font-awesome-icon :icon="prevIcon" /></span>
|
|
97
|
+
<span class="sr-only">Previous</span>
|
|
98
|
+
</a>
|
|
99
|
+
</li>
|
|
100
|
+
<li v-for="page in pageCount" :class="{ 'page-item': true, active: isPageActive(page) }">
|
|
101
|
+
<a v-if="page !== '...'"
|
|
102
|
+
class="page-link"
|
|
103
|
+
:href="`?offset=${(page - 1) * query.limit}`"
|
|
104
|
+
@click.prevent="loadPage(page)">{{page}}</a>
|
|
105
|
+
<span v-else class="page-link disabled">{{page}}</span>
|
|
106
|
+
</li>
|
|
107
|
+
<li class="page-item" v-if="notLastPage">
|
|
108
|
+
<a class="page-link" :href="`?offset=${nextPageOffset}`" aria-label="Next" @click.prevent="loadPage('next')">
|
|
109
|
+
<span aria-hidden="true"><font-awesome-icon :icon="nextIcon" /></span>
|
|
110
|
+
<span class="sr-only">Next</span>
|
|
111
|
+
</a>
|
|
112
|
+
</li>
|
|
113
|
+
<li class="page-item" v-if="notLastPage">
|
|
114
|
+
<a class="page-link" :href="`?offset=${lastPageOffset}`" aria-label="Last" @click.prevent="loadPage('last')">Last</a>
|
|
115
|
+
</li>
|
|
116
|
+
</ul>
|
|
117
|
+
</div>
|
|
113
118
|
</div>
|
|
114
|
-
</
|
|
115
|
-
</section>
|
|
119
|
+
</section>
|
|
116
120
|
</template>
|
|
117
121
|
<script>
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
return ['...'].concat(range(curr - 2, curr + 3)).concat(['...'])
|
|
122
|
+
import SortableHeader from './SortableHeader'
|
|
123
|
+
import range from 'lodash.range'
|
|
124
|
+
import { mapState, mapGetters, mapActions } from 'vuex'
|
|
125
|
+
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
|
|
126
|
+
import { faAngleDoubleLeft, faAngleDoubleRight, faSync } from '@fortawesome/free-solid-svg-icons'
|
|
127
|
+
import { dateTimeFormat } from './dateTimeFormat'
|
|
128
|
+
import api from '../../../src/api/index'
|
|
129
|
+
const pageSlice = (curr, total) => {
|
|
130
|
+
console.log(`in page Slice\ncurr=${curr}, total=${total}`)
|
|
131
|
+
if (curr < 4) {
|
|
132
|
+
return range(1, 6).concat(['...'])
|
|
133
|
+
} else if (curr > total - 3) {
|
|
134
|
+
return ['...'].concat(range(total - 4, total + 1))
|
|
133
135
|
}
|
|
136
|
+
return ['...'].concat(range(curr - 2, curr + 3)).concat(['...'])
|
|
137
|
+
}
|
|
134
138
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
},
|
|
149
|
-
notLastPage () {
|
|
150
|
-
const {offset, limit} = this.query
|
|
151
|
-
const total = this.total
|
|
152
|
-
return offset + limit < total
|
|
153
|
-
},
|
|
154
|
-
pageCount () {
|
|
155
|
-
const {offset, limit} = this.query
|
|
156
|
-
const total = this.total
|
|
157
|
-
const pages = Math.ceil(total / limit)
|
|
158
|
-
const curr = Math.ceil(offset / limit)
|
|
159
|
-
return pages < 2
|
|
160
|
-
? []
|
|
161
|
-
: pages > 6
|
|
162
|
-
? pageSlice(curr + 1, pages)
|
|
163
|
-
: pages
|
|
164
|
-
},
|
|
165
|
-
searchOptions () {
|
|
166
|
-
return {
|
|
167
|
-
listType: this.listType,
|
|
168
|
-
offset: this.offset,
|
|
169
|
-
sort: this.sort,
|
|
170
|
-
order: this.order
|
|
171
|
-
}
|
|
172
|
-
},
|
|
173
|
-
...mapState({
|
|
174
|
-
data: state => state.packetList.data,
|
|
175
|
-
total: state => state.packetList.total
|
|
176
|
-
}),
|
|
177
|
-
...mapGetters(['packetListName', 'packetListQuery']),
|
|
178
|
-
query () { return this.packetListQuery },
|
|
179
|
-
syncIcon () { return faSync },
|
|
180
|
-
nextIcon () { return faAngleDoubleRight },
|
|
181
|
-
prevIcon () { return faAngleDoubleLeft }
|
|
139
|
+
export default {
|
|
140
|
+
name: 'Queues',
|
|
141
|
+
props: ['listType', 'offset', 'sort', 'order'],
|
|
142
|
+
computed: {
|
|
143
|
+
currentPage () {
|
|
144
|
+
const {offset, limit} = this.query
|
|
145
|
+
const firstIndex = offset
|
|
146
|
+
const lastIndex = Math.min(firstIndex + limit, this.total)
|
|
147
|
+
return Math.min(firstIndex + 1, lastIndex) + ' - ' + (lastIndex)
|
|
148
|
+
},
|
|
149
|
+
notFirstPage () {
|
|
150
|
+
const {offset} = this.query
|
|
151
|
+
return offset > 0
|
|
182
152
|
},
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
153
|
+
notLastPage () {
|
|
154
|
+
const {offset, limit} = this.query
|
|
155
|
+
const total = this.total
|
|
156
|
+
return offset + limit < total
|
|
186
157
|
},
|
|
187
|
-
|
|
188
|
-
|
|
158
|
+
pageCount () {
|
|
159
|
+
const {offset, limit} = this.query
|
|
160
|
+
const total = this.total
|
|
161
|
+
const pages = Math.ceil(total / limit)
|
|
162
|
+
const curr = Math.ceil(offset / limit)
|
|
163
|
+
return pages < 2
|
|
164
|
+
? []
|
|
165
|
+
: pages > 6
|
|
166
|
+
? pageSlice(curr + 1, pages)
|
|
167
|
+
: pages
|
|
189
168
|
},
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
this.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
169
|
+
searchOptions () {
|
|
170
|
+
return {
|
|
171
|
+
listType: this.listType,
|
|
172
|
+
offset: this.offset,
|
|
173
|
+
sort: this.sort,
|
|
174
|
+
order: this.order
|
|
196
175
|
}
|
|
197
176
|
},
|
|
198
|
-
|
|
199
|
-
|
|
177
|
+
...mapState({
|
|
178
|
+
data: state => state.packetList.data,
|
|
179
|
+
total: state => state.packetList.total
|
|
180
|
+
}),
|
|
181
|
+
...mapGetters(['packetListName', 'packetListQuery']),
|
|
182
|
+
query () { return this.packetListQuery },
|
|
183
|
+
syncIcon () { return faSync },
|
|
184
|
+
nextIcon () { return faAngleDoubleRight },
|
|
185
|
+
prevIcon () { return faAngleDoubleLeft }
|
|
186
|
+
},
|
|
187
|
+
components: {
|
|
188
|
+
FontAwesomeIcon,
|
|
189
|
+
SortableHeader
|
|
190
|
+
},
|
|
191
|
+
filters: {
|
|
192
|
+
dateTime: dateTimeFormat
|
|
193
|
+
},
|
|
194
|
+
watch: {
|
|
195
|
+
'$route'() {
|
|
196
|
+
this.fetchAndUpdate(this.listType, this.searchOptions)
|
|
197
|
+
},
|
|
198
|
+
'$props'() {
|
|
199
|
+
this.fetchAndUpdate(this.listType, this.searchOptions)
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
mounted: function () {
|
|
203
|
+
this.fetchAndUpdate(this.listType, this.searchOptions, false)
|
|
204
|
+
},
|
|
205
|
+
methods: {
|
|
206
|
+
...mapActions(['fetchPacketList','CallAutoAdmitDecision']),
|
|
207
|
+
nextPageOffset () {
|
|
208
|
+
const {offset, limit} = this.query
|
|
209
|
+
return offset + limit
|
|
210
|
+
},
|
|
211
|
+
prevPageOffset () {
|
|
212
|
+
const {offset, limit} = this.query
|
|
213
|
+
return offset - limit
|
|
214
|
+
},
|
|
215
|
+
lastPageOffset () {
|
|
216
|
+
const {limit} = this.query
|
|
217
|
+
const total = this.total
|
|
218
|
+
return Math.floor(total / limit) * limit
|
|
219
|
+
},
|
|
220
|
+
sortBy (query, field) {
|
|
221
|
+
const { sort, order } = query
|
|
222
|
+
const newSort = field
|
|
223
|
+
const newOrder = (sort === field && order === 'asc') ? 'desc' : 'asc'
|
|
224
|
+
const routerQuery = { sort: newSort, order: newOrder, offset: 0 }
|
|
225
|
+
this.$router.push({path: `/list/${this.listType}`, query: routerQuery})
|
|
226
|
+
window.scrollTo(0, 0)
|
|
227
|
+
},
|
|
228
|
+
sortByName () { this.sortBy(this.query, 'applicant_name') },
|
|
229
|
+
sortByAdmitPeriod () { this.sortBy(this.query, 'admit_period') },
|
|
230
|
+
sortByNextAction () { this.sortBy(this.query, 'next_action_date') },
|
|
231
|
+
fetchAndUpdate (listType, query, force = true) {
|
|
232
|
+
this.fetchPacketList({...query, listType, force})
|
|
233
|
+
},
|
|
234
|
+
refresh () {
|
|
235
|
+
this.fetchAndUpdate(this.listType, this.query)
|
|
200
236
|
},
|
|
201
|
-
methods: {
|
|
202
|
-
...mapActions(['fetchPacketList']),
|
|
203
|
-
nextPageOffset () {
|
|
204
|
-
const {offset, limit} = this.query
|
|
205
|
-
return offset + limit
|
|
206
|
-
},
|
|
207
|
-
prevPageOffset () {
|
|
208
|
-
const {offset, limit} = this.query
|
|
209
|
-
return offset - limit
|
|
210
|
-
},
|
|
211
|
-
lastPageOffset () {
|
|
212
|
-
const {limit} = this.query
|
|
213
|
-
const total = this.total
|
|
214
|
-
return Math.floor(total / limit) * limit
|
|
215
|
-
},
|
|
216
|
-
sortBy (query, field) {
|
|
217
|
-
const { sort, order } = query
|
|
218
|
-
const newSort = field
|
|
219
|
-
const newOrder = (sort === field && order === 'asc') ? 'desc' : 'asc'
|
|
220
|
-
const routerQuery = { sort: newSort, order: newOrder, offset: 0 }
|
|
221
|
-
this.$router.push({path: `/list/${this.listType}`, query: routerQuery})
|
|
222
|
-
window.scrollTo(0, 0)
|
|
223
|
-
},
|
|
224
|
-
sortByName () { this.sortBy(this.query, 'applicant_name') },
|
|
225
|
-
sortByAdmitPeriod () { this.sortBy(this.query, 'admit_period') },
|
|
226
|
-
sortByNextAction () { this.sortBy(this.query, 'next_action_date') },
|
|
227
|
-
fetchAndUpdate (listType, query, force = true) {
|
|
228
|
-
this.fetchPacketList({...query, listType, force})
|
|
229
|
-
},
|
|
230
|
-
refresh () {
|
|
231
|
-
this.fetchAndUpdate(this.listType, this.query)
|
|
232
|
-
},
|
|
233
|
-
loadPage (page) {
|
|
234
|
-
const {limit, offset, sort, order} = this.query
|
|
235
|
-
const total = this.total
|
|
236
|
-
const newOffset = page === 'first' ? 0
|
|
237
|
-
: page === 'last' ? this.lastPageOffset()
|
|
238
|
-
: page === 'next' ? this.nextPageOffset()
|
|
239
|
-
: page === 'prev' ? this.prevPageOffset()
|
|
240
|
-
: (page - 1) * limit
|
|
241
|
-
this.$router.push({ path: `/list/${this.listType}`, query: {offset: newOffset, sort, order} })
|
|
242
|
-
window.scrollTo(0, 0)
|
|
243
|
-
},
|
|
244
|
-
isPageActive (page) {
|
|
245
|
-
if (page === '...') return false
|
|
246
237
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
238
|
+
SubmitAuto () {
|
|
239
|
+
console.log('submitAuto')
|
|
240
|
+
this.CallAutoAdmitDecision()
|
|
241
|
+
},
|
|
242
|
+
|
|
243
|
+
loadPage (page) {
|
|
244
|
+
const {limit, offset, sort, order} = this.query
|
|
245
|
+
const total = this.total
|
|
246
|
+
const newOffset = page === 'first' ? 0
|
|
247
|
+
: page === 'last' ? this.lastPageOffset()
|
|
248
|
+
: page === 'next' ? this.nextPageOffset()
|
|
249
|
+
: page === 'prev' ? this.prevPageOffset()
|
|
250
|
+
: (page - 1) * limit
|
|
251
|
+
this.$router.push({ path: `/list/${this.listType}`, query: {offset: newOffset, sort, order} })
|
|
252
|
+
window.scrollTo(0, 0)
|
|
253
|
+
},
|
|
254
|
+
isPageActive (page) {
|
|
255
|
+
if (page === '...') return false
|
|
256
|
+
|
|
257
|
+
const { limit, offset } = this.query
|
|
258
|
+
const pageOffset = (page - 1) * limit
|
|
259
|
+
return pageOffset === offset
|
|
251
260
|
}
|
|
252
261
|
}
|
|
262
|
+
}
|
|
253
263
|
</script>
|
|
254
264
|
<style scoped>
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
265
|
+
.queue-title {
|
|
266
|
+
display: grid;
|
|
267
|
+
grid-template-columns: auto auto 1fr;
|
|
268
|
+
grid-gap: 0.5rem;
|
|
269
|
+
align-items: center;
|
|
270
|
+
}
|
|
271
|
+
.sortable {
|
|
272
|
+
cursor: pointer;
|
|
273
|
+
}
|
|
274
|
+
.match-caption {
|
|
275
|
+
padding-left: .75rem;
|
|
276
|
+
color: var(--gray, #6c757d);
|
|
277
|
+
}
|
|
268
278
|
</style>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@byu-oit/vue-decision-processing-components",
|
|
3
|
-
"version": "8.35.
|
|
3
|
+
"version": "8.35.9",
|
|
4
4
|
"description": "Vue components shared between decision processing systems for the CES schools.",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@fortawesome/fontawesome-free": "^5.15.4",
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
"@fortawesome/free-solid-svg-icons": "^5.15.4",
|
|
10
10
|
"@fortawesome/vue-fontawesome": "^2.0.10",
|
|
11
11
|
"csv-string": "^4.0.1",
|
|
12
|
+
"dayjs": "^1.11.11",
|
|
12
13
|
"is-iso-date": "0.0.1",
|
|
13
14
|
"lodash.get": "^4.4.2",
|
|
14
15
|
"lodash.range": "^3.2.0",
|
|
15
16
|
"s-age": "^1.1.2",
|
|
16
|
-
"vue2-datepicker": "^3.10.4"
|
|
17
|
+
"vue2-datepicker": "^3.10.4",
|
|
18
|
+
"vuex": "^4.1.0"
|
|
17
19
|
},
|
|
18
20
|
"devDependencies": {
|
|
19
21
|
"standard-version": "^9.3.2"
|