X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=quickl3.js;h=8977f7fdb5b13ebe57a55f7973a86be9da726dd7;hb=HEAD;hp=4487c298c80708ca71460cf7a2233307104d56f8;hpb=e25a399bc8ae3c714dc2535b5af80591679f2efa;p=ultimatescore diff --git a/quickl3.js b/quickl3.js index 4487c29..8977f7f 100644 --- a/quickl3.js +++ b/quickl3.js @@ -15,35 +15,77 @@ function load_l3(sheet, prefix, cb) } } + let players = []; for ( ; response.values[i] !== undefined && response.values[i].length >= 3; ++i) { - let number = response.values[i][0]; - let display_number = response.values[i][1]; + players.push({ + "number": response.values[i][0], + "display_number": response.values[i][1], + "text": response.values[i][2], + "subtext": response.values[i][4], // To the right of the “info” column. + "image": response.values[i][5] + }); + } + + // Assign fake numbers to those that have none. + let used_numbers = {}; + for (const player of players) { + used_numbers[player.number] = 1; + } + for (let player of players) { + let num = player.number; + if (num !== '' && num !== undefined) { + continue; + } + num = parseInt(player.display_number); + if (num >= 1 && num <= 999 && !used_numbers.hasOwnProperty(num)) { + player.number = '' + num; + } + } + for (let player of players) { + let num = player.number; + if (num !== '' && num !== undefined) { + continue; + } + num = 1; + while (used_numbers.hasOwnProperty(num)) { ++num; } + player.number = '' + num; + used_numbers[num] = 1; + } + + for (const player of players) { + let number = player.number; + let display_number = player.display_number; if (number === '') { number = display_number; } - let text = response.values[i][2]; + + let text = player.text; if (display_number !== undefined && display_number !== '') { text = " " + display_number + "  " + text; } text = text.replace(/\n/, '
'); - let subtext = response.values[i][3]; + let subtext = player.subtext; if (subtext === undefined || subtext === '') { - subtext = 'Norwegian Ultimate Championships 2018'; + // subtext = ultimateconfig['tournament_title']; + subtext = response.values[0][0]; } - l3s[prefix + number] = { - "raw_text": response.values[i][2], - "text": text, - "subtext": subtext - }; - let image = response.values[i][4]; - if (image !== undefined && image.match(/^file:/) !== null) { - l3s[prefix + number].image = image.match(/^file:(.*)/)[1]; + for (const num of number.split(/;/)) { // Support multiple numbers. + l3s[prefix + num] = { + "num": num, + "raw_text": player.text, + "text": text, + "subtext": subtext + }; + let image = player.image; + if (image !== undefined && image.match(/^file:/) !== null) { + l3s[prefix + num].image = image.match(/^file:(.*)/)[1]; + } } } cb(l3s, sheet); }; - req.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/1VyLIS2GeohLlIRFs6c8kk6g0ZnBFXXiYNh_JROC-iZM/values/\'' + sheet + '\'!A1:J50?key=AIzaSyAuP9yQn8g0bSay6r_RpGtpFeIbwprH1TU'); + req.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/' + ultimateconfig['roster_sheet_id'] + '/values/\'' + sheet + '\'!A1:J50?key=' + ultimateconfig['api_key']); req.send(); };