From 450db08cf003e4524e956b4cee7c95fcee4a21d9 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Sun, 16 Aug 2015 22:00:37 +0000 Subject: [PATCH] Extract JS objects to separate files --- compute.html | 209 ----------------- index.html | 132 ---------- bridge_compute.js | 207 +++++++++++++++++ bridge_results_table.js | 130 ++++++++++ 4 files changed, 339 insertions(+), 339 deletions(-) diff --git a/bridge_compute.js b/bridge_compute.js new file mode 100644 index 0000000..155d9e8 --- /dev/null +++ b/bridge_compute.js @@ -0,0 +1,207 @@ +BrydzLicz = { + lewy: [ + [0, 20, 40, 60, 80, 100, 120, 140], // młodsze + [0, 30, 60, 90, 120, 150, 180, 210], // starsze + [0, 40, 70, 100, 130, 160, 190, 220] // bez atu + ], + + wpadki: [ + [ // przed partią + [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650], // normalnie + [0, 100, 300, 500, 700, 900, 1100, 1300, 1500, 1700, 1900, 2100, 2300, 2500], // kontra + [0, 200, 600, 1000, 1400, 1800, 2200, 2600, 3000, 3400, 3800, 4200, 4600, 5000] // rekontra + ], + [ // po partii + [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300], // normalnie + [0, 200, 500, 800, 1100, 1400, 1700, 2000, 2300, 2600, 2900, 3200, 3500, 3800], // kontra + [0, 400, 1000, 1600, 2200, 2800, 3400, 4000, 4600, 5200, 5800, 6400, 7000, 7600] // rekontra + ] + ], + + PC: [ + [ // MY: przed, WY: przed partią + [-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490, -460, -430, -400, -350, -300, -200, -110, -70, -50, 0, 50, 70, 110, 200, 300, 350, 400, 430, 460, 490, 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400], + // MY: przed, WY: po partii + [-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690, -660, -630, -600, -520, -440, -290, -110, -70, -50, 0, 50, 70, 110, 200, 300, 350, 400, 430, 460, 490, 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400] + ], + [ // MY: po, WY: przed partią + [-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490, -460, -430, -400, -350, -300, -200, -110, -70, -50, 0, 50, 70, 110, 290, 440, 520, 600, 630, 660, 690, 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100], + // MY: po, WY: po partii + [-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690, -660, -630, -600, -520, -440, -290, -110, -70, -50, 0, 50, 70, 110, 290, 440, 520, 600, 630, 660, 690, 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100] + ] + ], + + IMP_t: [0, 20, 50, 90, 130, 170, 220, 270, 320, 370, 430, 500, 600, 750, 900, 1100, 1300, 1500, 1750, 2000, 2250, 2500, 3000, 3500, 4000, 9999999], + + procenty_punkty: [ + [0, 50, 90, 120, 150, 180, 210, 300, 400, 430, 460, 490, 520, 800, 920, 940, 980, 990, 1020, 1400, 1440, 1520, 1530, 9999999], // przed + [0, 50, 90, 120, 150, 180, 210, 500, 600, 630, 660, 690, 720, 810, 1370, 1390, 1430, 1440, 1470, 1700, 2000, 2220, 2230, 9999999] //po + ], + + procenty_PC: [0, 6, 10, 16, 21, 25, 31, 35, 9999999], + + procenty_t: [ + [-1, -1, -1, 50, 44, 26, 8, 0], + [83, 74, 65, 56, 47, 29, 11, 0], + [86, 77, 68, 59, 50, 32, 14, 0], + [89, 80, 71, 62, 53, 35, 17, 0], + [92, 83, 74, 65, 56, 38, 20, 2], + [95, 86, 77, 68, 59, 41, 23, 5], + [98, 89, 80, 71, 62, 44, 26, 8], + [100, 92, 83, 74, 65, 47, 29, 11], + [100, 95, 86, 77, 68, 50, 32, 14], + [100, 98, 89, 80, 71, 53, 35, 17], + [100, 100, 92, 83, 74, 56, 38, 20], + [100, 100, 95, 86, 77, 59, 41, 23], + [100, 100, 98, 89, 80, 62, 44, 26], + [100, 100, 100, 92, 83, 65, 47, 29], + [100, 100, 100, 95, 86, 68, 50, 32], + [100, 100, 100, 98, 89, 71, 53, 35], + [100, 100, 100, 100, 92, 74, 56, 38], + [100, 100, 100, 100, 95, 77, 59, 41], + [100, 100, 100, 100, 98, 80, 62, 44], + [100, 100, 100, 100, 100, 83, 65, 47], + [100, 100, 100, 100, 100, 86, 68, 50], + [100, 100, 100, 100, 100, 89, 71, 53], + [100, 100, 100, 100, 100, 100, 95, 90] + ], + + IMP: function(punkty) { + var i = 0; + while( this.IMP_t[i+1] <= punkty ) { + i++; + } + return i; + }, + + procenty: function(PC, punkty, partia) { + var punkty_i = 0; + var PC_i = 0; + + while(this.procenty_punkty[partia][punkty_i+1] <= punkty) { + punkty_i++; + } + + while(this.procenty_PC[PC_i+1] <= PC) { + PC_i++; + } + + return this.procenty_t[punkty_i][PC_i]; + }, + + policz: function(kontrakt, kolor, kontra, partia, PC, lewy) { + var wynik = {}; + + var my_partia = (partia / 2) >> 0; + var wy_partia = partia % 2; + + // 4 pasy + if( kontrakt == 0 ) { + wynik.dla = 1; + wynik.punkty_przed = 0; + wynik.punkty = this.PC[my_partia][wy_partia][PC]; + wynik.IMP = this.IMP(wynik.punkty); + wynik.procent = 100-this.procenty(PC, 0, my_partia); + + return wynik; + } + + + // Wynik w punktach + var wynik_punkty = 0; + // Punkty za lewy kontraktowe + var wynik_lewy = 0; + // Wynik w punktach, uwzględniając ilość PC + var wynik_punkty_PC = 0; + + // Ilość nadróbek + var nadrobki = lewy - 6 - kontrakt; + + // Mnożnik przy kontrze + var mnoznik = kontra+1; + if( mnoznik == 3 ) { + mnoznik = 4; + } + + // Kontrakt ugrany + if( nadrobki >= 0 ) { + // "Nadróbki: jak za lewy" + if( mnoznik == 1 ) { + wynik_lewy = this.lewy[kolor][kontrakt]; + wynik_punkty = this.lewy[kolor][lewy - 6]; + } + // Kontra lub rekontra + else + { + wynik_lewy = this.lewy[kolor][kontrakt] * mnoznik; + wynik_punkty = wynik_lewy; + + // Za wygranie z kontrą + wynik_punkty += 25 * mnoznik; + + // Za nadróbki + wynik_punkty += nadrobki * (my_partia == 0 ? 50 : 100) * mnoznik; + } + + if(kontrakt == 6) { + // Za szlemika + wynik_punkty += (my_partia == 0 ? 500 : 750); + } + else if(kontrakt == 7) { + // Za szlema + wynik_punkty += (my_partia == 0 ? 1000 : 1500); + } + + if(wynik_lewy >= 100) { + // Za partię + wynik_punkty += (my_partia == 0 ? 300 : 500); + } + else + { + // Za częściówkę + wynik_punkty += 50; + } + } + // Wpadka + else + { + // Punkty za wpadkę + wynik_punkty = -1 * this.wpadki[my_partia][kontra][-1 * nadrobki]; + } + + // Uwzględniamy ilość punktów, którą trzeba było zdobyć + wynik_punkty_PC = wynik_punkty - this.PC[my_partia][wy_partia][PC]; + + // Zapis dla przeciwników + if( wynik_punkty_PC < 0 ) { + wynik.dla = 1; + wynik.punkty_przed = -1 * wynik_punkty; + wynik.punkty = -1 * wynik_punkty_PC; + wynik.IMP = this.IMP(wynik.punkty); + if( wynik_punkty < 0 ) { + wynik.procent = this.procenty(40 - PC, -1 * wynik_punkty, wy_partia); + } + else + { + wynik.procent = 100 - this.procenty(PC, wynik_punkty, my_partia); + } + } + // Zapis dla rozgrywających + else + { + wynik.dla = 0; + wynik.punkty_przed = wynik_punkty; + wynik.punkty = wynik_punkty_PC; + wynik.IMP = this.IMP(wynik.punkty); + if( wynik_punkty > 0 ) { + wynik.procent = this.procenty(PC, wynik_punkty, my_partia); + } + else + { + wynik.procent = 100 - this.procenty(40 - PC, -1 * wynik_punkty, wy_partia); + } + } + + return wynik; + } +}; \ No newline at end of file diff --git a/bridge_results_table.js b/bridge_results_table.js new file mode 100644 index 0000000..4c83ac6 --- /dev/null +++ b/bridge_results_table.js @@ -0,0 +1,130 @@ +function ResultsTable(id, container) { + this.id = id; + this.players = []; + this.results = []; + this.store = window.sessionStorage; + + container.appendChild(this._createTable()); +} +ResultsTable.prototype._createTable = function() { + this.table = document.createElement('table'); + this.table.className = 'results'; + this.thead = document.createElement('thead'); + this.tbody = document.createElement('tbody'); + this.tplayers = document.createElement('tr'); + this.tresults = document.createElement('tr'); + + this.table.appendChild(this.thead); + this.table.appendChild(this.tbody); + this.thead.appendChild(this.tplayers); + this.thead.appendChild(this.tresults); + + return this.table; +}; +ResultsTable.prototype.load = function() { + if(this.store && this.store.getItem(this.id+'_players')) { + this.players = JSON.parse(this.store.getItem(this.id+'_players')); + this.results = JSON.parse(this.store.getItem(this.id+'_results')); + this.refresh(); + } +}; +ResultsTable.prototype.save = function() { + if(this.store) { + this.store.setItem(this.id+'_players', JSON.stringify(this.players)); + this.store.setItem(this.id+'_results', JSON.stringify(this.results)); + } +}; +ResultsTable.prototype.clear = function() { + this.players = []; + this.results = []; + this.refresh(); + if(this.store) { + this.store.removeItem(this.id+'_players'); + this.store.removeItem(this.id+'_results'); + } +}; +ResultsTable.prototype.addPlayer = function(name) { + var results = (this.results[0] && this.results[0].length) || 0; + results = new Array(results); + for(var i = 0; i < results.length; i++) { + results[i] = 'X'; + } + + this.players.push(name); + this.results.push(results); + this.refresh(); +}; +ResultsTable.prototype._createPlayerTh = function(name) { + var th = document.createElement('th'); + th.innerText = name; + th.onclick = function(self) { return function() { + var originalName = th.innerText; + var result = prompt('Podaj nowe inicjały gracza. Wyczyść pole, by go usunąć.', name); + + if(result == null) { + return; + } + + if(result) { + self.players[self.players.indexOf(originalName)] = result; + th.innerText = result; + } + else + { + var index = self.players.indexOf(originalName); + self.players = self.players.splice(index, 1); + self.results = self.results.splice(index, 1); + self.refresh(); + } + } }(this); + return th; +}; +ResultsTable.prototype.addResult = function(result) { + for(var i = 0; i < result.length; i++) { + this.results[i].push(result[i]); + } + this.refresh(); +}; +ResultsTable.prototype.refresh = function() { + this.save(); + + while(this.tplayers.lastChild) { + this.tplayers.removeChild(this.tplayers.lastChild); + } + for(var i = 0; i < this.players.length; i++) { + this.tplayers.appendChild(this._createPlayerTh(this.players[i])); + } + + while(this.tresults.lastChild) { + this.tresults.removeChild(this.tresults.lastChild); + } + for(var i = 0; i < this.results.length; i++) { + var td = document.createElement('th'); + td.innerText = this.results[i].reduce(function(a, b) { return (parseInt(a, 10) || 0)+(parseInt(b, 10) || 0); }, 0); + this.tresults.appendChild(td); + } + + while(this.tbody.lastChild) { + this.tbody.removeChild(this.tbody.lastChild); + } + if(this.results.length > 0) { + for(var i = 0; i < this.results[0].length; i++) { + var tr = document.createElement('tr'); + + for(var j = 0; j < this.results.length; j++) { + var td = document.createElement('td'); + td.innerText = this.results[j][i]; + td.onclick = function(j, i, self) { return function() { + var result = prompt('Podaj nową wartość:', self.results[j][i]); + if(result != null) { + self.results[j][i] = result; + self.refresh(); + } + } }(j, i, this); + tr.appendChild(td); + } + + this.tbody.appendChild(tr); + } + } +}; \ No newline at end of file diff --git a/compute.html b/compute.html index 74baa6d..3a33f38 100644 --- a/compute.html +++ b/compute.html @@ -49,215 +49,8 @@ <p id="result"></p> </form> +<script type="text/javascript" src="bridge_compute.js"></script> <script type="text/javascript"> -BrydzLicz = { - lewy: [ - [0, 20, 40, 60, 80, 100, 120, 140], // młodsze - [0, 30, 60, 90, 120, 150, 180, 210], // starsze - [0, 40, 70, 100, 130, 160, 190, 220] // bez atu - ], - - wpadki: [ - [ // przed partią - [0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650], // normalnie - [0, 100, 300, 500, 700, 900, 1100, 1300, 1500, 1700, 1900, 2100, 2300, 2500], // kontra - [0, 200, 600, 1000, 1400, 1800, 2200, 2600, 3000, 3400, 3800, 4200, 4600, 5000] // rekontra - ], - [ // po partii - [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300], // normalnie - [0, 200, 500, 800, 1100, 1400, 1700, 2000, 2300, 2600, 2900, 3200, 3500, 3800], // kontra - [0, 400, 1000, 1600, 2200, 2800, 3400, 4000, 4600, 5200, 5800, 6400, 7000, 7600] // rekontra - ] - ], - - PC: [ - [ // MY: przed, WY: przed partią - [-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490, -460, -430, -400, -350, -300, -200, -110, -70, -50, 0, 50, 70, 110, 200, 300, 350, 400, 430, 460, 490, 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400], - // MY: przed, WY: po partii - [-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690, -660, -630, -600, -520, -440, -290, -110, -70, -50, 0, 50, 70, 110, 200, 300, 350, 400, 430, 460, 490, 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400] - ], - [ // MY: po, WY: przed partią - [-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490, -460, -430, -400, -350, -300, -200, -110, -70, -50, 0, 50, 70, 110, 290, 440, 520, 600, 630, 660, 690, 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100], - // MY: po, WY: po partii - [-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690, -660, -630, -600, -520, -440, -290, -110, -70, -50, 0, 50, 70, 110, 290, 440, 520, 600, 630, 660, 690, 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100] - ] - ], - - IMP_t: [0, 20, 50, 90, 130, 170, 220, 270, 320, 370, 430, 500, 600, 750, 900, 1100, 1300, 1500, 1750, 2000, 2250, 2500, 3000, 3500, 4000, 9999999], - - procenty_punkty: [ - [0, 50, 90, 120, 150, 180, 210, 300, 400, 430, 460, 490, 520, 800, 920, 940, 980, 990, 1020, 1400, 1440, 1520, 1530, 9999999], // przed - [0, 50, 90, 120, 150, 180, 210, 500, 600, 360, 660, 690, 720, 810, 1370, 1390, 1430, 1440, 1470, 1700, 2000, 2220, 2230, 9999999] //po - ], - - procenty_PC: [0, 6, 10, 16, 21, 25, 31, 35, 9999999], - - procenty_t: [ - [-1, -1, -1, 50, 44, 26, 8, 0], - [83, 74, 65, 56, 47, 29, 11, 0], - [86, 77, 68, 59, 50, 32, 14, 0], - [89, 80, 71, 62, 53, 35, 17, 0], - [92, 83, 74, 65, 56, 38, 20, 2], - [95, 86, 77, 68, 59, 41, 23, 5], - [98, 89, 80, 71, 62, 44, 26, 8], - [100, 92, 83, 74, 65, 47, 29, 11], - [100, 95, 86, 77, 68, 50, 32, 14], - [100, 98, 89, 80, 71, 53, 35, 17], - [100, 100, 92, 83, 74, 56, 38, 20], - [100, 100, 95, 86, 77, 59, 41, 23], - [100, 100, 98, 89, 80, 62, 44, 26], - [100, 100, 100, 92, 83, 65, 47, 29], - [100, 100, 100, 95, 86, 68, 50, 32], - [100, 100, 100, 98, 89, 71, 53, 35], - [100, 100, 100, 100, 92, 74, 56, 38], - [100, 100, 100, 100, 95, 77, 59, 41], - [100, 100, 100, 100, 98, 80, 62, 44], - [100, 100, 100, 100, 100, 83, 65, 47], - [100, 100, 100, 100, 100, 86, 68, 50], - [100, 100, 100, 100, 100, 89, 71, 53], - [100, 100, 100, 100, 100, 100, 95, 90] - ], - - IMP: function(punkty) { - var i = 0; - while( this.IMP_t[i+1] <= punkty ) { - i++; - } - return i; - }, - - procenty: function(PC, punkty, partia) { - var punkty_i = 0; - var PC_i = 0; - - while(this.procenty_punkty[partia][punkty_i+1] <= punkty) { - punkty_i++; - } - - while(this.procenty_PC[PC_i+1] <= PC) { - PC_i++; - } - - return this.procenty_t[punkty_i][PC_i]; - }, - - policz: function(kontrakt, kolor, kontra, partia, PC, lewy) { - var wynik = {}; - - var my_partia = (partia / 2) >> 0; - var wy_partia = partia % 2; - - // 4 pasy - if( kontrakt == 0 ) { - wynik.dla = 1; - wynik.punkty_przed = 0; - wynik.punkty = this.PC[my_partia][wy_partia][PC]; - wynik.IMP = this.IMP(wynik.punkty); - wynik.procent = 100-this.procenty(PC, 0, my_partia); - - return wynik; - } - - - // Wynik w punktach - var wynik_punkty = 0; - // Punkty za lewy kontraktowe - var wynik_lewy = 0; - // Wynik w punktach, uwzględniając ilość PC - var wynik_punkty_PC = 0; - - // Ilość nadróbek - var nadrobki = lewy - 6 - kontrakt; - - // Mnożnik przy kontrze - var mnoznik = kontra+1; - if( mnoznik == 3 ) { - mnoznik = 4; - } - - // Kontrakt ugrany - if( nadrobki >= 0 ) { - // "Nadróbki: jak za lewy" - if( mnoznik == 1 ) { - wynik_lewy = this.lewy[kolor][kontrakt]; - wynik_punkty = this.lewy[kolor][lewy - 6]; - } - // Kontra lub rekontra - else - { - wynik_lewy = this.lewy[kolor][kontrakt] * mnoznik; - wynik_punkty = wynik_lewy; - - // Za wygranie z kontrą - wynik_punkty += 25 * mnoznik; - - // Za nadróbki - wynik_punkty += nadrobki * (my_partia == 0 ? 50 : 100) * mnoznik; - } - - if(kontrakt == 6) { - // Za szlemika - wynik_punkty += (my_partia == 0 ? 500 : 750); - } - else if(kontrakt == 7) { - // Za szlema - wynik_punkty += (my_partia == 0 ? 1000 : 1500); - } - - if(wynik_lewy >= 100) { - // Za partię - wynik_punkty += (my_partia == 0 ? 300 : 500); - } - else - { - // Za częściówkę - wynik_punkty += 50; - } - } - // Wpadka - else - { - // Punkty za wpadkę - wynik_punkty = -1 * this.wpadki[my_partia][kontra][-1 * nadrobki]; - } - - // Uwzględniamy ilość punktów, którą trzeba było zdobyć - wynik_punkty_PC = wynik_punkty - this.PC[my_partia][wy_partia][PC]; - - // Zapis dla przeciwników - if( wynik_punkty_PC < 0 ) { - wynik.dla = 1; - wynik.punkty_przed = -1 * wynik_punkty; - wynik.punkty = -1 * wynik_punkty_PC; - wynik.IMP = this.IMP(wynik.punkty); - if( wynik_punkty < 0 ) { - wynik.procent = this.procenty(40 - PC, -1 * wynik_punkty, wy_partia); - } - else - { - wynik.procent = 100 - this.procenty(PC, wynik_punkty, my_partia); - } - } - // Zapis dla rozgrywających - else - { - wynik.dla = 0; - wynik.punkty_przed = wynik_punkty; - wynik.punkty = wynik_punkty_PC; - wynik.IMP = this.IMP(wynik.punkty); - if( wynik_punkty > 0 ) { - wynik.procent = this.procenty(PC, wynik_punkty, my_partia); - } - else - { - wynik.procent = 100 - this.procenty(40 - PC, -1 * wynik_punkty, wy_partia); - } - } - - return wynik; - } -}; - var zapis; function compute() { diff --git a/index.html b/index.html index f6f0e9c..a620866 100644 --- a/index.html +++ b/index.html @@ -20,138 +20,8 @@ <div id="overlay"> </div> +<script type="text/javascript" src="bridge_results_table.js"></script> <script type="text/javascript"> -function ResultsTable(id, container) { - this.id = id; - this.players = []; - this.results = []; - this.store = window.sessionStorage; - - container.appendChild(this._createTable()); -} -ResultsTable.prototype._createTable = function() { - this.table = document.createElement('table'); - this.table.className = 'results'; - this.thead = document.createElement('thead'); - this.tbody = document.createElement('tbody'); - this.tplayers = document.createElement('tr'); - this.tresults = document.createElement('tr'); - - this.table.appendChild(this.thead); - this.table.appendChild(this.tbody); - this.thead.appendChild(this.tplayers); - this.thead.appendChild(this.tresults); - - return this.table; -}; -ResultsTable.prototype.load = function() { - if(this.store) { - this.players = JSON.parse(this.store.getItem(this.id+'_players')); - this.results = JSON.parse(this.store.getItem(this.id+'_results')); - this.refresh(); - } -}; -ResultsTable.prototype.save = function() { - if(this.store) { - this.store.setItem(this.id+'_players', JSON.stringify(this.players)); - this.store.setItem(this.id+'_results', JSON.stringify(this.results)); - } -}; -ResultsTable.prototype.clear = function() { - this.players = []; - this.results = []; - this.refresh(); - if(this.store) { - this.store.removeItem(this.id+'_players'); - this.store.removeItem(this.id+'_results'); - } -}; -ResultsTable.prototype.addPlayer = function(name) { - var results = (this.results[0] && this.results[0].length) || 0; - results = new Array(results); - for(var i = 0; i < results.length; i++) { - results[i] = 'X'; - } - - this.players.push(name); - this.results.push(results); - this.refresh(); -}; -ResultsTable.prototype._createPlayerTh = function(name) { - var th = document.createElement('th'); - th.innerText = name; - th.onclick = function(self) { return function() { - var originalName = th.innerText; - var result = prompt('Podaj nowe inicjały gracza. Wyczyść pole, by go usunąć.', name); - - if(result == null) { - return; - } - - if(result) { - self.players[self.players.indexOf(originalName)] = result; - th.innerText = result; - } - else - { - var index = self.players.indexOf(originalName); - self.players = self.players.splice(index, 1); - self.results = self.results.splice(index, 1); - self.refresh(); - } - } }(this); - return th; -}; -ResultsTable.prototype.addResult = function(result) { - for(var i = 0; i < result.length; i++) { - this.results[i].push(result[i]); - } - this.refresh(); -}; -ResultsTable.prototype.refresh = function() { - this.save(); - - while(this.tplayers.lastChild) { - this.tplayers.removeChild(this.tplayers.lastChild); - } - for(var i = 0; i < this.players.length; i++) { - this.tplayers.appendChild(this._createPlayerTh(this.players[i])); - } - - while(this.tresults.lastChild) { - this.tresults.removeChild(this.tresults.lastChild); - } - for(var i = 0; i < this.results.length; i++) { - var td = document.createElement('th'); - td.innerText = this.results[i].reduce(function(a, b) { return (parseInt(a, 10) || 0)+(parseInt(b, 10) || 0); }, 0); - this.tresults.appendChild(td); - } - - while(this.tbody.lastChild) { - this.tbody.removeChild(this.tbody.lastChild); - } - if(this.results.length > 0) { - for(var i = 0; i < this.results[0].length; i++) { - var tr = document.createElement('tr'); - - for(var j = 0; j < this.results.length; j++) { - var td = document.createElement('td'); - td.innerText = this.results[j][i]; - td.onclick = function(j, i, self) { return function() { - var result = prompt('Podaj nową wartość:', self.results[j][i]); - if(result != null) { - self.results[j][i] = result; - self.refresh(); - } - } }(j, i, this); - tr.appendChild(td); - } - - this.tbody.appendChild(tr); - } - } -}; - var resultsTable = new ResultsTable('html', document.getElementById('results')); resultsTable.load(); -- Gitblit v1.9.1