]> git.sesse.net Git - ultimatescore/blobdiff - quickl3.js
Make the roster scripts executable.
[ultimatescore] / quickl3.js
index 4487c298c80708ca71460cf7a2233307104d56f8..8977f7fdb5b13ebe57a55f7973a86be9da726dd7 100644 (file)
@@ -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 = "&nbsp;" + display_number + "&nbsp;&nbsp;" + text;
                        }
                        text = text.replace(/\n/, '<br />');
-                       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();
 };