1/** 2 * @class JuryService 3 * @classdesc Static service for the AVE / vendor jury "Save & Next" flow. Posts to the layered 4 * vendor Jury route (Modules/Jury via funcs/dashboard/events/vendor/jury/VendorJuryRoute.php). 5 * 6 * The ordered "Application N of M" set is NOT fetched here -- the vendors list already returns 7 * `all_vendor_id_list`; the modal is opened with that set. Callers MUST check `resp.success`. 8 */ 9class JuryService { 10 11 static get ROUTE() { 12 return '/funcs/dashboard/events/vendor/jury/VendorJuryRoute.php'; 13 } 14 15 /** 16 * Full jury detail for one vendor submission. 17 * @returns {Promise<{success:boolean, err_msg:string, submission:Object, jury_questions:Array, response_html:string, pictures:Array}>} 18 */ 19 static async getJuryDetail(eventId, submitId, source) { 20 const fd = new FormData(); 21 fd.append('post_type', 'get_jury_detail'); 22 fd.append('event_id', eventId); 23 fd.append('submit_id', submitId); 24 fd.append('source', source || 'data'); 25 26 const response = await fetch(JuryService.ROUTE, { method: 'POST', body: fd }); 27 if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); 28 return response.json(); 29 } 30 31 /** 32 * Save this juror's scores (and optional private note) for a vendor submission. 33 * @param {Object<string,string>} questionMap question_id => value (number or text) 34 * @param {string} [note] this juror's private note about the applicant 35 * @returns {Promise<{success:boolean, err_msg:string, jury_questions:Array}>} 36 */ 37 static async saveJuryScore(eventId, submitId, source, questionMap, note) { 38 const fd = new FormData(); 39 fd.append('post_type', 'save_jury_score'); 40 fd.append('event_id', eventId); 41 fd.append('submit_id', submitId); 42 fd.append('source', source || 'data'); 43 fd.append('note', note || ''); 44 Object.keys(questionMap || {}).forEach((qid) => { 45 fd.append(`question[${qid}]`, questionMap[qid]); 46 }); 47 48 const response = await fetch(JuryService.ROUTE, { method: 'POST', body: fd }); 49 if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); 50 return response.json(); 51 } 52} 53 54export default JuryService;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.