75
75
76
76
<script lang='ts'>
77
77
import { defineComponent , PropType } from ' vue' ;
78
- import { getTranscriptionsFromIds } from ' @/js/serverCalls.ts' ;
79
- import { TransMetadataType } from ' @/ts/types.ts' ;
78
+ import {
79
+ getTranscriptionsFromIds ,
80
+ getSortedMusicians
81
+ } from ' @/js/serverCalls.ts' ;
82
+ import { TransMetadataType , MusicianNameType } from ' @/ts/types.ts' ;
80
83
81
84
82
85
// title, transcriber, raga, created, modified, permissions
@@ -95,6 +98,7 @@ type MiniTranscriptionsDataType = {
95
98
initialMouseX? : number ,
96
99
selectedSortIdx: number ,
97
100
labelRowHeight: number ,
101
+ allMusicians? : MusicianNameType [],
98
102
}
99
103
export default defineComponent ({
100
104
name: ' MiniTranscriptions' ,
@@ -120,6 +124,15 @@ export default defineComponent({
120
124
sortType: ' transcriber' ,
121
125
sortState: ' down'
122
126
},
127
+ {
128
+ name: ' Soloist' ,
129
+ func : (t : TransMetadataType ) => {
130
+ console .log (t )
131
+ return t .soloist || ' '
132
+ },
133
+ sortType: ' Soloist' ,
134
+ sortState: ' down'
135
+ },
123
136
{
124
137
name: ' Raga' ,
125
138
func : (t : TransMetadataType ) => t .raga .name ,
@@ -169,6 +182,7 @@ export default defineComponent({
169
182
try {
170
183
const userID = this .$store .state .userID ! ;
171
184
this .trans = await getTranscriptionsFromIds (this .tIds , userID );
185
+ this .allMusicians = await getSortedMusicians (true )
172
186
} catch (err ) {
173
187
console .error (err );
174
188
}
@@ -186,6 +200,54 @@ export default defineComponent({
186
200
187
201
methods: {
188
202
203
+ soloistSorter(a : TransMetadataType , b : TransMetadataType ) {
204
+ const aObj = this .allMusicians ! .find (m => {
205
+ return m [' Initial Name' ] === a .soloist ;
206
+ });
207
+ const bObj = this .allMusicians ! .find (m => {
208
+ return m [' Initial Name' ] === b .soloist ;
209
+ });
210
+ const aLastName = aObj ? aObj [' Last Name' ] : ' ' ;
211
+ const bLastName = bObj ? bObj [' Last Name' ] : ' ' ;
212
+ const aFirstName = aObj ? aObj [' First Name' ] : ' ' ;
213
+ const bFirstName = bObj ? bObj [' First Name' ] : ' ' ;
214
+ const aMidName = aObj ? aObj [' Middle Name' ] : ' ' ;
215
+ const bMidName = bObj ? bObj [' Middle Name' ] : ' ' ;
216
+
217
+ if (aLastName === undefined && bLastName === undefined ) {
218
+ return 0 ;
219
+ } else if (aLastName === undefined ) {
220
+ return - 1 ;
221
+ } else if (bLastName === undefined ) {
222
+ return 1 ;
223
+ } else if (aLastName < bLastName ) {
224
+ return - 1 ;
225
+ } else if (aLastName > bLastName ) {
226
+ return 1 ;
227
+ } else if (aFirstName === undefined && bFirstName === undefined ) {
228
+ return 0 ;
229
+ } else if (aFirstName === undefined ) {
230
+ return - 1 ;
231
+ } else if (bFirstName === undefined ) {
232
+ return 1 ;
233
+ } else if (aFirstName < bFirstName ) {
234
+ return - 1 ;
235
+ } else if (aFirstName > bFirstName ) {
236
+ return 1 ;
237
+ } else if (aMidName === undefined && bMidName === undefined ) {
238
+ return 0 ;
239
+ } else if (aMidName === undefined ) {
240
+ return - 1 ;
241
+ } else if (bMidName === undefined ) {
242
+ return 1 ;
243
+ } else if (aMidName < bMidName ) {
244
+ return - 1 ;
245
+ } else if (aMidName > bMidName ) {
246
+ return 1 ;
247
+ }
248
+ return 0 ;
249
+ },
250
+
189
251
handleDblClick(t : TransMetadataType ) {
190
252
this .$store .commit (' update_id' , t ._id );
191
253
this .$cookies .set (' currentPieceId' , t ._id );
@@ -398,7 +460,9 @@ export default defineComponent({
398
460
sorter = this .modifiedSorter ;
399
461
} else if (sort === ' permissions' ) {
400
462
sorter = this .permissionsSorter ;
401
- }
463
+ } else if (sort === ' Soloist' ) {
464
+ sorter = this .soloistSorter ;
465
+ }
402
466
this .trans .sort (sorter );
403
467
if (! fromTop ) {
404
468
this .trans .reverse ();
0 commit comments