質問編集履歴
14
コードの更新 反対側の●も保存
test
CHANGED
File without changes
|
test
CHANGED
@@ -86,22 +86,34 @@
|
|
86
86
|
|
87
87
|
def win_or_lose
|
88
88
|
|
89
|
+
// 数字_数字を分解
|
90
|
+
|
91
|
+
resultAry = params[:id].split("_")
|
92
|
+
|
93
|
+
// 左側が勝利のtd
|
94
|
+
|
89
|
-
result = Result.find(
|
95
|
+
result_win = Result.find(resultAry[0])
|
96
|
+
|
90
|
-
|
97
|
+
// 右側が敗北のtd
|
98
|
+
|
99
|
+
result_lose = Result.find(resultAry[1])
|
100
|
+
|
101
|
+
|
102
|
+
|
91
|
-
if result.result == "
|
103
|
+
if result_win.result == "○"
|
92
|
-
|
104
|
+
|
93
|
-
result.update(result: "")
|
105
|
+
result_win.update(result: "")
|
106
|
+
|
94
|
-
|
107
|
+
result_lose.update(result: "")
|
108
|
+
|
95
|
-
else result.result == ""
|
109
|
+
else result_win.result == ""
|
96
|
-
|
110
|
+
|
97
|
-
result.update(result: "
|
111
|
+
result_win.update(result: "○")
|
112
|
+
|
113
|
+
result_lose.update(result: "●")
|
98
114
|
|
99
115
|
end
|
100
116
|
|
101
|
-
item = Result.find(params[:id])
|
102
|
-
|
103
|
-
render json: { result: item }
|
104
|
-
|
105
117
|
end
|
106
118
|
|
107
119
|
|
@@ -156,11 +168,15 @@
|
|
156
168
|
|
157
169
|
<td class="self-name"><%= member.name %></td>
|
158
170
|
|
171
|
+
// 勝敗記入のtd
|
172
|
+
|
159
|
-
<td id="op_<%= i + 1 %>_1" data-id=<%= (i * 10) + 1 %>><%= Result.find((i * 10) + 1).result %></td>
|
173
|
+
<td id="op_<%= i + 1 %>_1" data-id="<%= (i * 10) + 1 %>_<%= (10 * (i * 10 + 1)) - (100 * i + (9 - i)) %>"><%= Result.find((i * 10) + 1).result %></td>
|
160
174
|
|
161
175
|
// 途中略
|
162
176
|
|
163
|
-
<td id="op_<%= i + 1 %>_10" data-id=<%= (i * 10) + 10 %>><%= Result.find((i * 10) + 10).result %></td>
|
177
|
+
<td id="op_<%= i + 1 %>_10" data-id="<%= (i * 10) + 10 %>_<%= (10 * (i * 10 + 10)) - (100 * i + (9 - i)) %>"><%= Result.find((i * 10) + 10).result %></td>
|
178
|
+
|
179
|
+
// 勝敗のtd
|
164
180
|
|
165
181
|
<td id="win_<%= i + 1 %>">0</td>
|
166
182
|
|
@@ -418,21 +434,7 @@
|
|
418
434
|
|
419
435
|
"_1":{"member":"Aさん","WinOrLose":9},
|
420
436
|
|
421
|
-
|
437
|
+
// 途中略
|
422
|
-
|
423
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
424
|
-
|
425
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
426
|
-
|
427
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
428
|
-
|
429
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
430
|
-
|
431
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
432
|
-
|
433
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
434
|
-
|
435
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
436
438
|
|
437
439
|
"_10":{"member":"Jさん","WinOrLose":0}
|
438
440
|
|
@@ -450,21 +452,7 @@
|
|
450
452
|
|
451
453
|
"_1":{"member":"Aさん","WinOrLose":0},
|
452
454
|
|
453
|
-
|
455
|
+
// 途中略
|
454
|
-
|
455
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
456
|
-
|
457
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
458
|
-
|
459
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
460
|
-
|
461
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
462
|
-
|
463
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
464
|
-
|
465
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
466
|
-
|
467
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
468
456
|
|
469
457
|
"_10":{"member":"Jさん","WinOrLose":9}
|
470
458
|
|
13
コードの更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -484,6 +484,10 @@
|
|
484
484
|
|
485
485
|
for(var itr = 1; itr < trs.length; itr++){
|
486
486
|
|
487
|
+
var win = 0;
|
488
|
+
|
489
|
+
var lose = 0;
|
490
|
+
|
487
491
|
// テーブルの行毎に処理
|
488
492
|
|
489
493
|
var tds = trs[itr].getElementsByTagName('td');
|
@@ -500,12 +504,28 @@
|
|
500
504
|
|
501
505
|
// 対戦が同じ場合
|
502
506
|
|
503
|
-
tds[itd].classList.add('right_down_border');
|
507
|
+
tds[itd].classList.add('right_down_border'); // 縦横同値マスにクラスを指定
|
504
508
|
|
505
509
|
}
|
506
510
|
|
507
511
|
else {
|
508
512
|
|
513
|
+
// 勝ち数を加算
|
514
|
+
|
515
|
+
if(tds[itd].innerHTML == '○'){
|
516
|
+
|
517
|
+
win ++;
|
518
|
+
|
519
|
+
}
|
520
|
+
|
521
|
+
// 負け数を加算
|
522
|
+
|
523
|
+
else if(tds[itd].innerHTML == '●'){
|
524
|
+
|
525
|
+
lose ++;
|
526
|
+
|
527
|
+
}
|
528
|
+
|
509
529
|
// 対戦が違う場合、イベントを登録
|
510
530
|
|
511
531
|
// onclick="winorlose_click(this);" と同じ内容
|
@@ -516,7 +536,7 @@
|
|
516
536
|
|
517
537
|
tds[itd].innerHTML = "○";
|
518
538
|
|
519
|
-
}
|
539
|
+
}
|
520
540
|
|
521
541
|
else if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == -1) {
|
522
542
|
|
@@ -528,17 +548,21 @@
|
|
528
548
|
|
529
549
|
}
|
530
550
|
|
531
|
-
|
551
|
+
else if(tds[itd].id.indexOf('win_') != -1) {
|
532
|
-
|
533
|
-
|
552
|
+
|
534
|
-
|
535
|
-
//
|
553
|
+
// 勝ち表示
|
554
|
+
|
536
|
-
|
555
|
+
tds[itd].innerHTML = win;
|
556
|
+
|
557
|
+
}
|
558
|
+
|
537
|
-
|
559
|
+
else if(tds[itd].id.indexOf('lose_') != -1) {
|
538
|
-
|
539
|
-
|
560
|
+
|
540
|
-
|
541
|
-
//
|
561
|
+
// 負け表示
|
562
|
+
|
563
|
+
tds[itd].innerHTML = lose;
|
564
|
+
|
565
|
+
}
|
542
566
|
|
543
567
|
}
|
544
568
|
|
@@ -564,7 +588,7 @@
|
|
564
588
|
|
565
589
|
// el にはどこでクリックされたかの情報が入っている
|
566
590
|
|
567
|
-
var arr = el.target.id.split('_'); // idを'_'で分ける
|
591
|
+
var arr = el.target.id.split('_'); // idを'_'で分ける .targetで親要素イベントも発火
|
568
592
|
|
569
593
|
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
570
594
|
|
@@ -574,11 +598,11 @@
|
|
574
598
|
|
575
599
|
el.target.innerHTML = '○'; // 勝ち
|
576
600
|
|
577
|
-
document.getElementById(oppid).innerHTML = '●'; // 負け
|
601
|
+
document.getElementById(oppid).innerHTML = '●'; // 負け
|
578
|
-
|
602
|
+
|
579
|
-
json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] = 1;
|
603
|
+
json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] = 1; //jsonのデータ自体を更新
|
580
|
-
|
604
|
+
|
581
|
-
json_data['_'+ arr[2]]['_'+ arr[1]]["WinOrLose"] = -1;
|
605
|
+
json_data['_'+ arr[2]]['_'+ arr[1]]["WinOrLose"] = -1; //jsonのデータ自体を更新
|
582
606
|
|
583
607
|
}
|
584
608
|
|
@@ -588,12 +612,14 @@
|
|
588
612
|
|
589
613
|
document.getElementById(oppid).innerHTML = ''; // 空白
|
590
614
|
|
591
|
-
json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] = 0;
|
615
|
+
json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] = 0; //jsonのデータ自体を更新
|
592
|
-
|
616
|
+
|
593
|
-
json_data['_'+ arr[2]]['_'+ arr[1]]["WinOrLose"] = 0;
|
617
|
+
json_data['_'+ arr[2]]['_'+ arr[1]]["WinOrLose"] = 0; //jsonのデータ自体を更新
|
594
618
|
|
595
619
|
}
|
596
620
|
|
621
|
+
|
622
|
+
|
597
623
|
// 勝ち数と負け数の計算
|
598
624
|
|
599
625
|
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
@@ -624,7 +650,7 @@
|
|
624
650
|
|
625
651
|
win ++;
|
626
652
|
|
627
|
-
}else if(tds[itd].innerHTML == '●'){
|
653
|
+
} else if(tds[itd].innerHTML == '●'){
|
628
654
|
|
629
655
|
lose ++;
|
630
656
|
|
12
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -550,9 +550,19 @@
|
|
550
550
|
|
551
551
|
// クリックしたときの処理
|
552
552
|
|
553
|
+
var send_winorlose = false;
|
554
|
+
|
555
|
+
var XHR;
|
556
|
+
|
553
557
|
function winorlose_click(el){
|
554
558
|
|
559
|
+
if(send_winorlose) return; // 送信中は実行できない
|
560
|
+
|
561
|
+
send_winorlose = true; // 処理中とする
|
562
|
+
|
563
|
+
|
564
|
+
|
555
|
-
// el にはどこでクリックされたかの情報が入っている
|
565
|
+
// el にはどこでクリックされたかの情報が入っている
|
556
566
|
|
557
567
|
var arr = el.target.id.split('_'); // idを'_'で分ける
|
558
568
|
|
@@ -638,34 +648,38 @@
|
|
638
648
|
|
639
649
|
}
|
640
650
|
|
651
|
+
|
652
|
+
|
653
|
+
//※ データの送信は処理の最後
|
654
|
+
|
655
|
+
//※ 非同期でも結果が返ってくるまでクリックを無視するように変更
|
656
|
+
|
641
|
-
|
657
|
+
let resultId = el.target.getAttribute("data-id");
|
658
|
+
|
642
|
-
|
659
|
+
if(!XHR){
|
660
|
+
|
643
|
-
|
661
|
+
XHR = new XMLHttpRequest();
|
644
|
-
|
645
|
-
|
662
|
+
|
646
|
-
|
647
|
-
XHR.responseType = "
|
663
|
+
XHR.responseType = "json";
|
648
|
-
|
649
|
-
|
664
|
+
|
650
|
-
|
651
|
-
XHR.onload = function
|
665
|
+
XHR.onload = function() {
|
652
|
-
|
653
|
-
|
666
|
+
|
654
|
-
|
655
|
-
if (xhr.status === 200) {
|
656
|
-
|
657
|
-
|
667
|
+
send_winorlose = false; // 送信完了
|
658
|
-
|
659
|
-
} else {
|
660
|
-
|
661
|
-
console.error(xhr.statusText);
|
662
|
-
|
663
|
-
}
|
664
|
-
|
665
|
-
}
|
666
668
|
|
667
669
|
};
|
668
670
|
|
671
|
+
XHR.onerror = function() {
|
672
|
+
|
673
|
+
send_winorlose = false; // 送信完了
|
674
|
+
|
675
|
+
};
|
676
|
+
|
677
|
+
}
|
678
|
+
|
679
|
+
XHR.open("GET", `/results/${resultId}`, true);
|
680
|
+
|
681
|
+
XHR.send();
|
682
|
+
|
669
683
|
}
|
670
684
|
|
671
685
|
|
11
データ送信部分のコード修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -644,10 +644,28 @@
|
|
644
644
|
|
645
645
|
XHR.open("GET", `/results/${resultId}`, false);
|
646
646
|
|
647
|
-
XHR.responseType = "
|
647
|
+
XHR.responseType = "text";
|
648
648
|
|
649
649
|
XHR.send();
|
650
650
|
|
651
|
+
XHR.onload = function (e) {
|
652
|
+
|
653
|
+
if (xhr.readyState === 4) {
|
654
|
+
|
655
|
+
if (xhr.status === 200) {
|
656
|
+
|
657
|
+
console.log(xhr.responseText);
|
658
|
+
|
659
|
+
} else {
|
660
|
+
|
661
|
+
console.error(xhr.statusText);
|
662
|
+
|
663
|
+
}
|
664
|
+
|
665
|
+
}
|
666
|
+
|
667
|
+
};
|
668
|
+
|
651
669
|
}
|
652
670
|
|
653
671
|
|
10
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -552,16 +552,6 @@
|
|
552
552
|
|
553
553
|
function winorlose_click(el){
|
554
554
|
|
555
|
-
const resultId = el.target.getAttribute("data-id");
|
556
|
-
|
557
|
-
const XHR = new XMLHttpRequest();
|
558
|
-
|
559
|
-
XHR.open("GET", `/results/${resultId}`, true);
|
560
|
-
|
561
|
-
XHR.responseType = "json";
|
562
|
-
|
563
|
-
XHR.send();
|
564
|
-
|
565
555
|
// el にはどこでクリックされたかの情報が入っている
|
566
556
|
|
567
557
|
var arr = el.target.id.split('_'); // idを'_'で分ける
|
9
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -158,21 +158,7 @@
|
|
158
158
|
|
159
159
|
<td id="op_<%= i + 1 %>_1" data-id=<%= (i * 10) + 1 %>><%= Result.find((i * 10) + 1).result %></td>
|
160
160
|
|
161
|
-
|
161
|
+
// 途中略
|
162
|
-
|
163
|
-
<td id="op_<%= i + 1 %>_3" data-id=<%= (i * 10) + 3 %>><%= Result.find((i * 10) + 3).result %></td>
|
164
|
-
|
165
|
-
<td id="op_<%= i + 1 %>_4" data-id=<%= (i * 10) + 4 %>><%= Result.find((i * 10) + 4).result %></td>
|
166
|
-
|
167
|
-
<td id="op_<%= i + 1 %>_5" data-id=<%= (i * 10) + 5 %>><%= Result.find((i * 10) + 5).result %></td>
|
168
|
-
|
169
|
-
<td id="op_<%= i + 1 %>_6" data-id=<%= (i * 10) + 6 %>><%= Result.find((i * 10) + 6).result %></td>
|
170
|
-
|
171
|
-
<td id="op_<%= i + 1 %>_7" data-id=<%= (i * 10) + 7 %>><%= Result.find((i * 10) + 7).result %></td>
|
172
|
-
|
173
|
-
<td id="op_<%= i + 1 %>_8" data-id=<%= (i * 10) + 8 %>><%= Result.find((i * 10) + 8).result %></td>
|
174
|
-
|
175
|
-
<td id="op_<%= i + 1 %>_9" data-id=<%= (i * 10) + 9 %>><%= Result.find((i * 10) + 9).result %></td>
|
176
162
|
|
177
163
|
<td id="op_<%= i + 1 %>_10" data-id=<%= (i * 10) + 10 %>><%= Result.find((i * 10) + 10).result %></td>
|
178
164
|
|
@@ -514,7 +500,7 @@
|
|
514
500
|
|
515
501
|
// 対戦が同じ場合
|
516
502
|
|
517
|
-
tds[itd].classList.add('right_down_border');
|
503
|
+
tds[itd].classList.add('right_down_border');
|
518
504
|
|
519
505
|
}
|
520
506
|
|
@@ -578,7 +564,7 @@
|
|
578
564
|
|
579
565
|
// el にはどこでクリックされたかの情報が入っている
|
580
566
|
|
581
|
-
var arr = el.target.id.split('_'); // idを'_'で分ける
|
567
|
+
var arr = el.target.id.split('_'); // idを'_'で分ける
|
582
568
|
|
583
569
|
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
584
570
|
|
@@ -588,7 +574,11 @@
|
|
588
574
|
|
589
575
|
el.target.innerHTML = '○'; // 勝ち
|
590
576
|
|
591
|
-
document.getElementById(oppid).innerHTML = '●'; // 負け
|
577
|
+
document.getElementById(oppid).innerHTML = '●'; // 負け
|
578
|
+
|
579
|
+
json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] = 1;
|
580
|
+
|
581
|
+
json_data['_'+ arr[2]]['_'+ arr[1]]["WinOrLose"] = -1;
|
592
582
|
|
593
583
|
}
|
594
584
|
|
@@ -598,6 +588,10 @@
|
|
598
588
|
|
599
589
|
document.getElementById(oppid).innerHTML = ''; // 空白
|
600
590
|
|
591
|
+
json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] = 0;
|
592
|
+
|
593
|
+
json_data['_'+ arr[2]]['_'+ arr[1]]["WinOrLose"] = 0;
|
594
|
+
|
601
595
|
}
|
602
596
|
|
603
597
|
// 勝ち数と負け数の計算
|
@@ -652,10 +646,18 @@
|
|
652
646
|
|
653
647
|
}
|
654
648
|
|
655
|
-
// json_dataの更新?
|
656
|
-
|
657
649
|
}
|
658
650
|
|
651
|
+
let resultId = el.target.getAttribute("data-id");
|
652
|
+
|
653
|
+
let XHR = new XMLHttpRequest();
|
654
|
+
|
655
|
+
XHR.open("GET", `/results/${resultId}`, false);
|
656
|
+
|
657
|
+
XHR.responseType = "json";
|
658
|
+
|
659
|
+
XHR.send();
|
660
|
+
|
659
661
|
}
|
660
662
|
|
661
663
|
|
8
コードの変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,11 +60,9 @@
|
|
60
60
|
|
61
61
|
Rails.application.routes.draw do
|
62
62
|
|
63
|
-
get 'json_p/parse'
|
64
|
-
|
65
63
|
root to: 'results#index'
|
66
64
|
|
67
|
-
|
65
|
+
get 'results/:id', to: 'results#win_or_lose'
|
68
66
|
|
69
67
|
end
|
70
68
|
|
@@ -86,658 +84,588 @@
|
|
86
84
|
|
87
85
|
|
88
86
|
|
87
|
+
def win_or_lose
|
88
|
+
|
89
|
+
result = Result.find(params[:id])
|
90
|
+
|
91
|
+
if result.result == "◯"
|
92
|
+
|
93
|
+
result.update(result: "")
|
94
|
+
|
95
|
+
else result.result == ""
|
96
|
+
|
97
|
+
result.update(result: "◯")
|
98
|
+
|
99
|
+
end
|
100
|
+
|
101
|
+
item = Result.find(params[:id])
|
102
|
+
|
103
|
+
render json: { result: item }
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
|
89
109
|
end
|
90
110
|
|
91
111
|
```
|
92
112
|
|
93
113
|
|
94
114
|
|
95
|
-
```
|
115
|
+
```html
|
116
|
+
|
96
|
-
|
117
|
+
<div class="main">
|
118
|
+
|
119
|
+
<div class="league-table">
|
120
|
+
|
97
|
-
class
|
121
|
+
<h2 class="league-table-title">【リーグ表】</h2>
|
98
|
-
|
99
|
-
|
122
|
+
|
100
|
-
|
101
|
-
json_str = request.body.read # リクエストのJSON
|
102
|
-
|
103
|
-
|
123
|
+
<table id="winorlose_table" border="2" bordercolor="black" style="border-collapse: collapse">
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
124
|
+
|
108
|
-
|
109
|
-
response_str =
|
110
|
-
|
111
|
-
|
125
|
+
<tr class="top-title">
|
126
|
+
|
112
|
-
|
127
|
+
<th class="rank-title">順位</th>
|
128
|
+
|
129
|
+
<th class="player-title">対局者</th>
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
<% @members.each do |member| %>
|
134
|
+
|
135
|
+
<td class="opponent-name"><%= member.name %></td>
|
136
|
+
|
137
|
+
<% end %>
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
<th class="win-count-title">勝</th>
|
142
|
+
|
143
|
+
<th class="lose-count-title">負</th>
|
144
|
+
|
145
|
+
<th class="sb-count-title">SB</th>
|
146
|
+
|
147
|
+
</tr>
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
<% @members.each_with_index do |member, i| %>
|
152
|
+
|
113
|
-
|
153
|
+
<tr class="result-cells">
|
154
|
+
|
114
|
-
|
155
|
+
<td id="rank_<%= i + 1 %>"></td>
|
156
|
+
|
115
|
-
|
157
|
+
<td class="self-name"><%= member.name %></td>
|
158
|
+
|
116
|
-
|
159
|
+
<td id="op_<%= i + 1 %>_1" data-id=<%= (i * 10) + 1 %>><%= Result.find((i * 10) + 1).result %></td>
|
160
|
+
|
161
|
+
<td id="op_<%= i + 1 %>_2" data-id=<%= (i * 10) + 2 %>><%= Result.find((i * 10) + 2).result %></td>
|
162
|
+
|
163
|
+
<td id="op_<%= i + 1 %>_3" data-id=<%= (i * 10) + 3 %>><%= Result.find((i * 10) + 3).result %></td>
|
164
|
+
|
165
|
+
<td id="op_<%= i + 1 %>_4" data-id=<%= (i * 10) + 4 %>><%= Result.find((i * 10) + 4).result %></td>
|
166
|
+
|
167
|
+
<td id="op_<%= i + 1 %>_5" data-id=<%= (i * 10) + 5 %>><%= Result.find((i * 10) + 5).result %></td>
|
168
|
+
|
169
|
+
<td id="op_<%= i + 1 %>_6" data-id=<%= (i * 10) + 6 %>><%= Result.find((i * 10) + 6).result %></td>
|
170
|
+
|
171
|
+
<td id="op_<%= i + 1 %>_7" data-id=<%= (i * 10) + 7 %>><%= Result.find((i * 10) + 7).result %></td>
|
172
|
+
|
173
|
+
<td id="op_<%= i + 1 %>_8" data-id=<%= (i * 10) + 8 %>><%= Result.find((i * 10) + 8).result %></td>
|
174
|
+
|
175
|
+
<td id="op_<%= i + 1 %>_9" data-id=<%= (i * 10) + 9 %>><%= Result.find((i * 10) + 9).result %></td>
|
176
|
+
|
177
|
+
<td id="op_<%= i + 1 %>_10" data-id=<%= (i * 10) + 10 %>><%= Result.find((i * 10) + 10).result %></td>
|
178
|
+
|
179
|
+
<td id="win_<%= i + 1 %>">0</td>
|
180
|
+
|
181
|
+
<td id="lose_<%= i + 1 %>">0</td>
|
182
|
+
|
183
|
+
<td id="sb_<%= i + 1 %>">0</td>
|
184
|
+
|
185
|
+
</tr>
|
186
|
+
|
187
|
+
<% end %>
|
188
|
+
|
189
|
+
|
190
|
+
|
117
|
-
|
191
|
+
</table>
|
118
|
-
|
192
|
+
|
119
|
-
|
193
|
+
</div>
|
120
|
-
|
194
|
+
|
121
|
-
|
195
|
+
</div>
|
122
196
|
|
123
197
|
```
|
124
198
|
|
125
199
|
|
126
200
|
|
127
|
-
```
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
201
|
+
```css
|
202
|
+
|
203
|
+
.header {
|
204
|
+
|
205
|
+
margin: 20px;
|
206
|
+
|
207
|
+
padding-bottom: 5px;
|
208
|
+
|
209
|
+
border-bottom: 2px solid lightgray;
|
210
|
+
|
211
|
+
}
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
.header span {
|
216
|
+
|
217
|
+
padding-left: 20px;
|
218
|
+
|
219
|
+
font-size: 25px;
|
220
|
+
|
221
|
+
}
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
.main {
|
226
|
+
|
227
|
+
margin: 30px;
|
228
|
+
|
229
|
+
}
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
.league-table {
|
234
|
+
|
235
|
+
margin-top: 20px;
|
236
|
+
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
|
241
|
+
.league-table-title {
|
242
|
+
|
243
|
+
margin-bottom: 5px;
|
244
|
+
|
245
|
+
}
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
.league-table td {
|
250
|
+
|
251
|
+
text-align: center;
|
252
|
+
|
253
|
+
}
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
.right_down_border {
|
258
|
+
|
259
|
+
background-image: linear-gradient(to top right, transparent, transparent 48%, black 49%, black 51%, transparent 52%, transparent);
|
260
|
+
|
261
|
+
}
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
.top-title {
|
266
|
+
|
267
|
+
height: 30px;
|
268
|
+
|
269
|
+
}
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
.rank-title {
|
274
|
+
|
275
|
+
width: 50px;
|
276
|
+
|
277
|
+
background-color: #FFFFAA;
|
278
|
+
|
279
|
+
}
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
.player-title {
|
284
|
+
|
285
|
+
width: 80px;
|
286
|
+
|
287
|
+
background-color: #EEEEEE;
|
288
|
+
|
289
|
+
}
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
.opponent-name {
|
294
|
+
|
295
|
+
width: 80px;
|
296
|
+
|
297
|
+
background-color: #EEEEEE;
|
298
|
+
|
299
|
+
}
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
.win-count-title {
|
304
|
+
|
305
|
+
width: 50px;
|
306
|
+
|
307
|
+
background-color: #FFD5EC;
|
308
|
+
|
309
|
+
}
|
310
|
+
|
311
|
+
|
312
|
+
|
313
|
+
.lose-count-title {
|
314
|
+
|
315
|
+
width: 50px;
|
316
|
+
|
317
|
+
background-color: #D9E5FF;
|
318
|
+
|
319
|
+
}
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
.sb-count-title {
|
324
|
+
|
325
|
+
width: 50px;
|
326
|
+
|
327
|
+
background-color: #F3FFD8;
|
328
|
+
|
329
|
+
}
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
.result-cells {
|
334
|
+
|
335
|
+
height:40px ;
|
336
|
+
|
337
|
+
}
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
.self-name {
|
342
|
+
|
343
|
+
height:40px ;
|
344
|
+
|
345
|
+
background-color: #EEEEEE;
|
346
|
+
|
347
|
+
}
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
.member-list {
|
352
|
+
|
353
|
+
margin-top: 30px;
|
354
|
+
|
355
|
+
}
|
356
|
+
|
357
|
+
|
358
|
+
|
359
|
+
.member-list-title {
|
360
|
+
|
361
|
+
margin-bottom: 5px;
|
362
|
+
|
363
|
+
}
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
.member-table td {
|
368
|
+
|
369
|
+
text-align: center;
|
370
|
+
|
371
|
+
}
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
.member-info {
|
376
|
+
|
377
|
+
height: 30px;
|
378
|
+
|
379
|
+
}
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
.member-title {
|
384
|
+
|
385
|
+
width: 100px;
|
386
|
+
|
387
|
+
text-align: center;
|
388
|
+
|
389
|
+
background-color: #EEEEEE;
|
390
|
+
|
391
|
+
}
|
392
|
+
|
393
|
+
|
394
|
+
|
395
|
+
.account-title {
|
396
|
+
|
397
|
+
width: 150px;
|
398
|
+
|
399
|
+
text-align: center;
|
400
|
+
|
401
|
+
}
|
402
|
+
|
403
|
+
|
404
|
+
|
405
|
+
.achievement-title {
|
406
|
+
|
407
|
+
width: 500px;
|
408
|
+
|
409
|
+
text-align: center;
|
410
|
+
|
411
|
+
}
|
412
|
+
|
413
|
+
|
414
|
+
|
415
|
+
.member-introduction td {
|
416
|
+
|
417
|
+
height: 30px;
|
418
|
+
|
419
|
+
}
|
270
420
|
|
271
421
|
```
|
272
422
|
|
273
423
|
|
274
424
|
|
275
|
-
```
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
b
|
284
|
-
|
285
|
-
}
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
}
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
m
|
302
|
-
|
303
|
-
}
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
m
|
318
|
-
|
319
|
-
}
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
}
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
}
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
.o
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
.
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
}
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
}
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
.s
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
}
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
.
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
t
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
wi
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
}
|
425
|
+
```js
|
426
|
+
|
427
|
+
// ※リーグ表の中身の定義
|
428
|
+
|
429
|
+
var json_data = {"_1":{
|
430
|
+
|
431
|
+
"member":"Aさん",
|
432
|
+
|
433
|
+
"_1":{"member":"Aさん","WinOrLose":9},
|
434
|
+
|
435
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
436
|
+
|
437
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
438
|
+
|
439
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
440
|
+
|
441
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
442
|
+
|
443
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
444
|
+
|
445
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
446
|
+
|
447
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
448
|
+
|
449
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
450
|
+
|
451
|
+
"_10":{"member":"Jさん","WinOrLose":0}
|
452
|
+
|
453
|
+
},
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
// 途中略
|
458
|
+
|
459
|
+
|
460
|
+
|
461
|
+
"_10":{
|
462
|
+
|
463
|
+
"member":"Jさん",
|
464
|
+
|
465
|
+
"_1":{"member":"Aさん","WinOrLose":0},
|
466
|
+
|
467
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
468
|
+
|
469
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
470
|
+
|
471
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
472
|
+
|
473
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
474
|
+
|
475
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
476
|
+
|
477
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
478
|
+
|
479
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
480
|
+
|
481
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
482
|
+
|
483
|
+
"_10":{"member":"Jさん","WinOrLose":9}
|
484
|
+
|
485
|
+
}
|
486
|
+
|
487
|
+
};
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
// 初期処理
|
492
|
+
|
493
|
+
function init(){
|
494
|
+
|
495
|
+
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
496
|
+
|
497
|
+
// 1行目はヘッダーだから飛ばして
|
498
|
+
|
499
|
+
for(var itr = 1; itr < trs.length; itr++){
|
500
|
+
|
501
|
+
// テーブルの行毎に処理
|
502
|
+
|
503
|
+
var tds = trs[itr].getElementsByTagName('td');
|
504
|
+
|
505
|
+
for(var itd = 0; itd < tds.length; itd++){
|
506
|
+
|
507
|
+
if(tds[itd].id.indexOf('op_') != -1){ // idにop_を含む(勝敗記入のtd)
|
508
|
+
|
509
|
+
// 勝ち負け入力<td>タグの場合
|
510
|
+
|
511
|
+
var arr = tds[itd].id.split('_'); // op_数字_数字 → [op, 数字, 数字]
|
512
|
+
|
513
|
+
if(arr[1] == arr[2]){
|
514
|
+
|
515
|
+
// 対戦が同じ場合
|
516
|
+
|
517
|
+
tds[itd].classList.add('right_down_border'); // 縦横同値マスにクラスを指定
|
518
|
+
|
519
|
+
}
|
520
|
+
|
521
|
+
else {
|
522
|
+
|
523
|
+
// 対戦が違う場合、イベントを登録
|
524
|
+
|
525
|
+
// onclick="winorlose_click(this);" と同じ内容
|
526
|
+
|
527
|
+
tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
|
528
|
+
|
529
|
+
if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
|
530
|
+
|
531
|
+
tds[itd].innerHTML = "○";
|
532
|
+
|
533
|
+
}
|
534
|
+
|
535
|
+
else if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == -1) {
|
536
|
+
|
537
|
+
tds[itd].innerHTML = "●";
|
538
|
+
|
539
|
+
}
|
540
|
+
|
541
|
+
}
|
542
|
+
|
543
|
+
}
|
544
|
+
|
545
|
+
// else if(tds[itd].id.indexOf('win_') != -1){ // idにwin_を含む(勝ち数のtd)
|
546
|
+
|
547
|
+
// tds[itd].innerHTML = json_data['_'+ arr[1]]['_'+ arr[2]]["WinCount"];
|
548
|
+
|
549
|
+
// }
|
550
|
+
|
551
|
+
// else { // 残るは負け数
|
552
|
+
|
553
|
+
// tds[itd].innerHTML = json_data['_'+ arr[1]]['_'+ arr[2]]["LoseCount"];
|
554
|
+
|
555
|
+
// }
|
556
|
+
|
557
|
+
}
|
558
|
+
|
559
|
+
}
|
560
|
+
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
|
565
|
+
// クリックしたときの処理
|
566
|
+
|
567
|
+
function winorlose_click(el){
|
568
|
+
|
569
|
+
const resultId = el.target.getAttribute("data-id");
|
570
|
+
|
571
|
+
const XHR = new XMLHttpRequest();
|
572
|
+
|
573
|
+
XHR.open("GET", `/results/${resultId}`, true);
|
574
|
+
|
575
|
+
XHR.responseType = "json";
|
576
|
+
|
577
|
+
XHR.send();
|
578
|
+
|
579
|
+
// el にはどこでクリックされたかの情報が入っている
|
580
|
+
|
581
|
+
var arr = el.target.id.split('_'); // idを'_'で分ける .targetで親要素イベントも発火
|
582
|
+
|
583
|
+
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
584
|
+
|
585
|
+
// 勝敗の記入と取消
|
586
|
+
|
587
|
+
if(el.target.innerHTML == ''){ // 勝敗を記入
|
588
|
+
|
589
|
+
el.target.innerHTML = '○'; // 勝ち
|
590
|
+
|
591
|
+
document.getElementById(oppid).innerHTML = '●'; // 負け
|
592
|
+
|
593
|
+
}
|
594
|
+
|
595
|
+
else if(el.target.innerHTML == '○'){ // 勝敗を取消
|
596
|
+
|
597
|
+
el.target.innerHTML = ''; // 空白
|
598
|
+
|
599
|
+
document.getElementById(oppid).innerHTML = ''; // 空白
|
600
|
+
|
601
|
+
}
|
602
|
+
|
603
|
+
// 勝ち数と負け数の計算
|
604
|
+
|
605
|
+
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
606
|
+
|
607
|
+
var win = 0;
|
608
|
+
|
609
|
+
var lose = 0;
|
610
|
+
|
611
|
+
// 1行目はヘッダーだから飛ばして
|
612
|
+
|
613
|
+
for(var itr = 1; itr < trs.length; itr++){
|
614
|
+
|
615
|
+
// テーブルの行毎に処理
|
616
|
+
|
617
|
+
win = 0;
|
618
|
+
|
619
|
+
lose = 0;
|
620
|
+
|
621
|
+
var tds = trs[itr].getElementsByTagName('td');
|
622
|
+
|
623
|
+
for(var itd = 0; itd < tds.length; itd++){
|
624
|
+
|
625
|
+
if(tds[itd].id.indexOf('op_') != -1){
|
626
|
+
|
627
|
+
// 勝ち負け数カウント
|
628
|
+
|
629
|
+
if(tds[itd].innerHTML == '○'){
|
630
|
+
|
631
|
+
win ++;
|
632
|
+
|
633
|
+
}else if(tds[itd].innerHTML == '●'){
|
634
|
+
|
635
|
+
lose ++;
|
636
|
+
|
637
|
+
}
|
638
|
+
|
639
|
+
} else if(tds[itd].id.indexOf('win_') != -1){
|
640
|
+
|
641
|
+
// 勝ち表示
|
642
|
+
|
643
|
+
tds[itd].innerHTML = win;
|
644
|
+
|
645
|
+
} else if(tds[itd].id.indexOf('lose_') != -1){
|
646
|
+
|
647
|
+
// 負け表示
|
648
|
+
|
649
|
+
tds[itd].innerHTML = lose;
|
650
|
+
|
651
|
+
}
|
652
|
+
|
653
|
+
}
|
654
|
+
|
655
|
+
// json_dataの更新?
|
656
|
+
|
657
|
+
}
|
658
|
+
|
659
|
+
}
|
660
|
+
|
661
|
+
|
662
|
+
|
663
|
+
window.addEventListener("load", init);
|
502
664
|
|
503
665
|
```
|
504
666
|
|
505
667
|
|
506
668
|
|
507
|
-
```js
|
508
|
-
|
509
|
-
// ※リーグ表の中身の定義
|
510
|
-
|
511
|
-
var json_data = {"_1":{
|
512
|
-
|
513
|
-
"member":"Aさん",
|
514
|
-
|
515
|
-
"_1":{"member":"Aさん","WinOrLose":9},
|
516
|
-
|
517
|
-
"_2":{"member":"Bさん","WinOrLose":0},
|
518
|
-
|
519
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
520
|
-
|
521
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
522
|
-
|
523
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
524
|
-
|
525
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
526
|
-
|
527
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
528
|
-
|
529
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
530
|
-
|
531
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
532
|
-
|
533
|
-
"_10":{"member":"Jさん","WinOrLose":0}
|
534
|
-
|
535
|
-
},
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
// 途中略
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
"_10":{
|
544
|
-
|
545
|
-
"member":"Jさん",
|
546
|
-
|
547
|
-
"_1":{"member":"Aさん","WinOrLose":0},
|
548
|
-
|
549
|
-
"_2":{"member":"Bさん","WinOrLose":0},
|
550
|
-
|
551
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
552
|
-
|
553
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
554
|
-
|
555
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
556
|
-
|
557
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
558
|
-
|
559
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
560
|
-
|
561
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
562
|
-
|
563
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
564
|
-
|
565
|
-
"_10":{"member":"Jさん","WinOrLose":9}
|
566
|
-
|
567
|
-
}
|
568
|
-
|
569
|
-
};
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
// 初期処理
|
574
|
-
|
575
|
-
function init(){
|
576
|
-
|
577
|
-
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
578
|
-
|
579
|
-
// 1行目はヘッダーだから飛ばして
|
580
|
-
|
581
|
-
for(var itr = 1; itr < trs.length; itr++){
|
582
|
-
|
583
|
-
// テーブルの行毎に処理
|
584
|
-
|
585
|
-
var tds = trs[itr].getElementsByTagName('td');
|
586
|
-
|
587
|
-
for(var itd = 0; itd < tds.length; itd++){
|
588
|
-
|
589
|
-
if(tds[itd].id.indexOf('op_') != -1){ // idにop_を含む(勝敗記入のtd)
|
590
|
-
|
591
|
-
// 勝ち負け入力<td>タグの場合
|
592
|
-
|
593
|
-
var arr = tds[itd].id.split('_'); // op_数字_数字 → [op, 数字, 数字]
|
594
|
-
|
595
|
-
if(arr[1] == arr[2]){
|
596
|
-
|
597
|
-
// 対戦が同じ場合
|
598
|
-
|
599
|
-
tds[itd].classList.add('right_down_border'); // 縦横同値マスにクラスを指定
|
600
|
-
|
601
|
-
}
|
602
|
-
|
603
|
-
else {
|
604
|
-
|
605
|
-
// 対戦が違う場合、イベントを登録
|
606
|
-
|
607
|
-
// onclick="winorlose_click(this);" と同じ内容
|
608
|
-
|
609
|
-
tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
|
610
|
-
|
611
|
-
if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
|
612
|
-
|
613
|
-
tds[itd].innerHTML = "○";
|
614
|
-
|
615
|
-
}
|
616
|
-
|
617
|
-
else if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == -1) {
|
618
|
-
|
619
|
-
tds[itd].innerHTML = "●";
|
620
|
-
|
621
|
-
}
|
622
|
-
|
623
|
-
}
|
624
|
-
|
625
|
-
}
|
626
|
-
|
627
|
-
// else if(tds[itd].id.indexOf('win_') != -1){ // idにwin_を含む(勝ち数のtd)
|
628
|
-
|
629
|
-
// tds[itd].innerHTML = json_data['_'+ arr[1]]['_'+ arr[2]]["WinCount"];
|
630
|
-
|
631
|
-
// }
|
632
|
-
|
633
|
-
// else { // 残るは負け数
|
634
|
-
|
635
|
-
// tds[itd].innerHTML = json_data['_'+ arr[1]]['_'+ arr[2]]["LoseCount"];
|
636
|
-
|
637
|
-
// }
|
638
|
-
|
639
|
-
}
|
640
|
-
|
641
|
-
}
|
642
|
-
|
643
|
-
}
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
// クリックしたときの処理
|
648
|
-
|
649
|
-
function winorlose_click(el){
|
650
|
-
|
651
|
-
// el にはどこでクリックされたかの情報が入っている
|
652
|
-
|
653
|
-
var arr = el.target.id.split('_'); // idを'_'で分ける .targetで親要素イベントも発火
|
654
|
-
|
655
|
-
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
656
|
-
|
657
|
-
// 勝敗の記入と取消
|
658
|
-
|
659
|
-
if(el.target.innerHTML == ''){ // 勝敗を記入
|
660
|
-
|
661
|
-
el.target.innerHTML = '○'; // 勝ち
|
662
|
-
|
663
|
-
document.getElementById(oppid).innerHTML = '●'; // 負け
|
664
|
-
|
665
|
-
}
|
666
|
-
|
667
|
-
else if(el.target.innerHTML == '○'){ // 勝敗を取消
|
668
|
-
|
669
|
-
el.target.innerHTML = ''; // 空白
|
670
|
-
|
671
|
-
document.getElementById(oppid).innerHTML = ''; // 空白
|
672
|
-
|
673
|
-
}
|
674
|
-
|
675
|
-
// 勝ち数と負け数の計算
|
676
|
-
|
677
|
-
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
678
|
-
|
679
|
-
var win = 0;
|
680
|
-
|
681
|
-
var lose = 0;
|
682
|
-
|
683
|
-
// 1行目はヘッダーだから飛ばして
|
684
|
-
|
685
|
-
for(var itr = 1; itr < trs.length; itr++){
|
686
|
-
|
687
|
-
// テーブルの行毎に処理
|
688
|
-
|
689
|
-
win = 0;
|
690
|
-
|
691
|
-
lose = 0;
|
692
|
-
|
693
|
-
var tds = trs[itr].getElementsByTagName('td');
|
694
|
-
|
695
|
-
for(var itd = 0; itd < tds.length; itd++){
|
696
|
-
|
697
|
-
if(tds[itd].id.indexOf('op_') != -1){
|
698
|
-
|
699
|
-
// 勝ち負け数カウント
|
700
|
-
|
701
|
-
if(tds[itd].innerHTML == '○'){
|
702
|
-
|
703
|
-
win ++;
|
704
|
-
|
705
|
-
}else if(tds[itd].innerHTML == '●'){
|
706
|
-
|
707
|
-
lose ++;
|
708
|
-
|
709
|
-
}
|
710
|
-
|
711
|
-
} else if(tds[itd].id.indexOf('win_') != -1){
|
712
|
-
|
713
|
-
// 勝ち表示
|
714
|
-
|
715
|
-
tds[itd].innerHTML = win;
|
716
|
-
|
717
|
-
} else if(tds[itd].id.indexOf('lose_') != -1){
|
718
|
-
|
719
|
-
// 負け表示
|
720
|
-
|
721
|
-
tds[itd].innerHTML = lose;
|
722
|
-
|
723
|
-
}
|
724
|
-
|
725
|
-
}
|
726
|
-
|
727
|
-
// json_dataの更新?
|
728
|
-
|
729
|
-
}
|
730
|
-
|
731
|
-
}
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
window.addEventListener("load", init);
|
736
|
-
|
737
|
-
```
|
738
|
-
|
739
|
-
|
740
|
-
|
741
669
|
# 調べた内容
|
742
670
|
|
743
671
|
・[Rails] Ajaxを用いて非同期通信でチャットメッセージを送る
|
7
JSON.parseでパラメーターをHashに変換
test
CHANGED
File without changes
|
test
CHANGED
@@ -58,6 +58,22 @@
|
|
58
58
|
|
59
59
|
```ruby
|
60
60
|
|
61
|
+
Rails.application.routes.draw do
|
62
|
+
|
63
|
+
get 'json_p/parse'
|
64
|
+
|
65
|
+
root to: 'results#index'
|
66
|
+
|
67
|
+
post 'json_p/parse'
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
|
61
77
|
class ResultsController < ApplicationController
|
62
78
|
|
63
79
|
|
@@ -70,36 +86,44 @@
|
|
70
86
|
|
71
87
|
|
72
88
|
|
73
|
-
# def win_or_lose
|
74
|
-
|
75
|
-
# result = Result.find(params[:id])
|
76
|
-
|
77
|
-
# binding.pry
|
78
|
-
|
79
|
-
# if result.op_2 == nil
|
80
|
-
|
81
|
-
# result.update(op_2: "○")
|
82
|
-
|
83
|
-
# else result.op_2 == "○"
|
84
|
-
|
85
|
-
# result.update(op_2: nil)
|
86
|
-
|
87
|
-
# end
|
88
|
-
|
89
|
-
# item = Result.find(params[:id])
|
90
|
-
|
91
|
-
# render json: { result: item }
|
92
|
-
|
93
|
-
# end
|
94
|
-
|
95
|
-
|
96
|
-
|
97
89
|
end
|
98
90
|
|
99
91
|
```
|
100
92
|
|
101
93
|
|
102
94
|
|
95
|
+
```ruby
|
96
|
+
|
97
|
+
class JsonPController < ApplicationController
|
98
|
+
|
99
|
+
def parse
|
100
|
+
|
101
|
+
json_str = request.body.read # リクエストのJSON
|
102
|
+
|
103
|
+
json_hash = JSON.parse(json_data,symbolize_names: true) # Hashに変換
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
# 見やすいように整形
|
108
|
+
|
109
|
+
response_str =
|
110
|
+
|
111
|
+
"JSON: " + json_str + "n" +
|
112
|
+
|
113
|
+
"Hash: " + json_hash.to_s + "n"
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
render plain: response_str
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
```
|
124
|
+
|
125
|
+
|
126
|
+
|
103
127
|
```html
|
104
128
|
|
105
129
|
<div class="header">
|
6
ビューの微修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -148,10 +148,10 @@
|
|
148
148
|
|
149
149
|
<tr class="result-cells">
|
150
150
|
|
151
|
+
<td id="rank_<%= i + 1 %>"></td>
|
152
|
+
|
151
153
|
<td class="self-name"><%= member.name %></td>
|
152
154
|
|
153
|
-
<td id="rank_<%= i + 1 %>"></td>
|
154
|
-
|
155
155
|
<td id="op_<%= i + 1 %>_1"></td>
|
156
156
|
|
157
157
|
<td id="op_<%= i + 1 %>_2"></td>
|
5
データベース設計の修正と、それに伴う他ファイルの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,7 +24,31 @@
|
|
24
24
|
|
25
25
|
# データベース設計
|
26
26
|
|
27
|
+
membersテーブル(10人)
|
28
|
+
|
29
|
+
・メンバーID
|
30
|
+
|
31
|
+
・メンバー名
|
32
|
+
|
33
|
+
・アカウント
|
34
|
+
|
35
|
+
・実績
|
36
|
+
|
37
|
+
・勝ち数
|
38
|
+
|
39
|
+
・負け数
|
40
|
+
|
41
|
+
・SB
|
42
|
+
|
43
|
+
|
44
|
+
|
27
|
-
|
45
|
+
resultsテーブル(1人に対して9人(10人))
|
46
|
+
|
47
|
+
・メンバーID
|
48
|
+
|
49
|
+
・対戦相手ID
|
50
|
+
|
51
|
+
・勝敗
|
28
52
|
|
29
53
|
|
30
54
|
|
@@ -34,11 +58,41 @@
|
|
34
58
|
|
35
59
|
```ruby
|
36
60
|
|
37
|
-
R
|
61
|
+
class ResultsController < ApplicationController
|
62
|
+
|
63
|
+
|
64
|
+
|
38
|
-
|
65
|
+
def index
|
66
|
+
|
67
|
+
@members = Member.all
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
# def win_or_lose
|
74
|
+
|
75
|
+
# result = Result.find(params[:id])
|
76
|
+
|
77
|
+
# binding.pry
|
78
|
+
|
79
|
+
# if result.op_2 == nil
|
80
|
+
|
81
|
+
# result.update(op_2: "○")
|
82
|
+
|
83
|
+
# else result.op_2 == "○"
|
84
|
+
|
85
|
+
# result.update(op_2: nil)
|
86
|
+
|
87
|
+
# end
|
88
|
+
|
39
|
-
|
89
|
+
# item = Result.find(params[:id])
|
40
|
-
|
90
|
+
|
41
|
-
|
91
|
+
# render json: { result: item }
|
92
|
+
|
93
|
+
# end
|
94
|
+
|
95
|
+
|
42
96
|
|
43
97
|
end
|
44
98
|
|
@@ -46,636 +100,620 @@
|
|
46
100
|
|
47
101
|
|
48
102
|
|
49
|
-
```
|
50
|
-
|
51
|
-
class
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
en
|
103
|
+
```html
|
104
|
+
|
105
|
+
<div class="header">
|
106
|
+
|
107
|
+
<h1 class="title">第7回しゅが研<span>毎週金曜日20時〜</span></h1>
|
108
|
+
|
109
|
+
</div>
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
<div class="main">
|
114
|
+
|
115
|
+
<div class="league-table">
|
116
|
+
|
117
|
+
<h2 class="league-table-title">【リーグ表】</h2>
|
118
|
+
|
119
|
+
<table id="winorlose_table" border="2" bordercolor="black" style="border-collapse: collapse">
|
120
|
+
|
121
|
+
<tr class="top-title">
|
122
|
+
|
123
|
+
<th class="rank-title">順位</th>
|
124
|
+
|
125
|
+
<th class="player-title">対局者</th>
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
<% @members.each do |member| %>
|
130
|
+
|
131
|
+
<td class="opponent-name"><%= member.name %></td>
|
132
|
+
|
133
|
+
<% end %>
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
<th class="win-count-title">勝</th>
|
138
|
+
|
139
|
+
<th class="lose-count-title">負</th>
|
140
|
+
|
141
|
+
<th class="sb-count-title">SB</th>
|
142
|
+
|
143
|
+
</tr>
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
<% @members.each_with_index do |member, i| %>
|
148
|
+
|
149
|
+
<tr class="result-cells">
|
150
|
+
|
151
|
+
<td class="self-name"><%= member.name %></td>
|
152
|
+
|
153
|
+
<td id="rank_<%= i + 1 %>"></td>
|
154
|
+
|
155
|
+
<td id="op_<%= i + 1 %>_1"></td>
|
156
|
+
|
157
|
+
<td id="op_<%= i + 1 %>_2"></td>
|
158
|
+
|
159
|
+
<td id="op_<%= i + 1 %>_3"></td>
|
160
|
+
|
161
|
+
<td id="op_<%= i + 1 %>_4"></td>
|
162
|
+
|
163
|
+
<td id="op_<%= i + 1 %>_5"></td>
|
164
|
+
|
165
|
+
<td id="op_<%= i + 1 %>_6"></td>
|
166
|
+
|
167
|
+
<td id="op_<%= i + 1 %>_7"></td>
|
168
|
+
|
169
|
+
<td id="op_<%= i + 1 %>_8"></td>
|
170
|
+
|
171
|
+
<td id="op_<%= i + 1 %>_9"></td>
|
172
|
+
|
173
|
+
<td id="op_<%= i + 1 %>_10"></td>
|
174
|
+
|
175
|
+
<td id="win_<%= i + 1 %>">0</td>
|
176
|
+
|
177
|
+
<td id="lose_<%= i + 1 %>">0</td>
|
178
|
+
|
179
|
+
<td id="sb_<%= i + 1 %>">0</td>
|
180
|
+
|
181
|
+
</tr>
|
182
|
+
|
183
|
+
<% end %>
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
</table>
|
188
|
+
|
189
|
+
</div>
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
<div class="member-list">
|
194
|
+
|
195
|
+
<h2 class="member-list-title">【対局者紹介】</h2>
|
196
|
+
|
197
|
+
<table border="2" bordercolor="black" style="border-collapse: collapse" class="member-table">
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
<tr class="member-info">
|
202
|
+
|
203
|
+
<th class="member-title">対局者</th>
|
204
|
+
|
205
|
+
<th class="account-title">アカウント</th>
|
206
|
+
|
207
|
+
<th class="achievement-title">実績</th>
|
208
|
+
|
209
|
+
</tr>
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
<% @members.each do |member| %>
|
214
|
+
|
215
|
+
<tr class="member-introduction">
|
216
|
+
|
217
|
+
<td class="member"><%= member.name %></td>
|
218
|
+
|
219
|
+
<td class="account"><%= member.account %></td>
|
220
|
+
|
221
|
+
<td class="achievement"><%= member.achievement %></td>
|
222
|
+
|
223
|
+
</tr>
|
224
|
+
|
225
|
+
<% end %>
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
</table>
|
230
|
+
|
231
|
+
</div>
|
232
|
+
|
233
|
+
</div>
|
234
|
+
|
235
|
+
</div>
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
<div class="footer">
|
240
|
+
|
241
|
+
<div>
|
242
|
+
|
243
|
+
</div>
|
244
|
+
|
245
|
+
</div>
|
86
246
|
|
87
247
|
```
|
88
248
|
|
89
249
|
|
90
250
|
|
91
|
-
```
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
251
|
+
```css
|
252
|
+
|
253
|
+
.header {
|
254
|
+
|
255
|
+
margin: 20px;
|
256
|
+
|
257
|
+
padding-bottom: 5px;
|
258
|
+
|
259
|
+
border-bottom: 2px solid lightgray;
|
260
|
+
|
261
|
+
}
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
.header span {
|
266
|
+
|
267
|
+
padding-left: 20px;
|
268
|
+
|
269
|
+
font-size: 25px;
|
270
|
+
|
271
|
+
}
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
.main {
|
276
|
+
|
277
|
+
margin: 30px;
|
278
|
+
|
279
|
+
}
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
.league-table {
|
284
|
+
|
285
|
+
margin-top: 20px;
|
286
|
+
|
287
|
+
}
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
.league-table-title {
|
292
|
+
|
293
|
+
margin-bottom: 5px;
|
294
|
+
|
295
|
+
}
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
.league-table td {
|
300
|
+
|
301
|
+
text-align: center;
|
302
|
+
|
303
|
+
}
|
304
|
+
|
305
|
+
|
306
|
+
|
307
|
+
.right_down_border {
|
308
|
+
|
309
|
+
background-image: linear-gradient(to top right, transparent, transparent 48%, black 49%, black 51%, transparent 52%, transparent);
|
310
|
+
|
311
|
+
}
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
.top-title {
|
316
|
+
|
317
|
+
height: 30px;
|
318
|
+
|
319
|
+
}
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
.rank-title {
|
324
|
+
|
325
|
+
width: 50px;
|
326
|
+
|
327
|
+
background-color: #FFFFAA;
|
328
|
+
|
329
|
+
}
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
.player-title {
|
334
|
+
|
335
|
+
width: 80px;
|
336
|
+
|
337
|
+
background-color: #EEEEEE;
|
338
|
+
|
339
|
+
}
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
.opponent-name {
|
344
|
+
|
345
|
+
width: 80px;
|
346
|
+
|
347
|
+
background-color: #EEEEEE;
|
348
|
+
|
349
|
+
}
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
.win-count-title {
|
354
|
+
|
355
|
+
width: 50px;
|
356
|
+
|
357
|
+
background-color: #FFD5EC;
|
358
|
+
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
.lose-count-title {
|
364
|
+
|
365
|
+
width: 50px;
|
366
|
+
|
367
|
+
background-color: #D9E5FF;
|
368
|
+
|
369
|
+
}
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
.sb-count-title {
|
374
|
+
|
375
|
+
width: 50px;
|
376
|
+
|
377
|
+
background-color: #F3FFD8;
|
378
|
+
|
379
|
+
}
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
.result-cells {
|
384
|
+
|
385
|
+
height:40px ;
|
386
|
+
|
387
|
+
}
|
388
|
+
|
389
|
+
|
390
|
+
|
391
|
+
.self-name {
|
392
|
+
|
393
|
+
height:40px ;
|
394
|
+
|
395
|
+
background-color: #EEEEEE;
|
396
|
+
|
397
|
+
}
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
.member-list {
|
402
|
+
|
403
|
+
margin-top: 30px;
|
404
|
+
|
405
|
+
}
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
.member-list-title {
|
410
|
+
|
411
|
+
margin-bottom: 5px;
|
412
|
+
|
413
|
+
}
|
414
|
+
|
415
|
+
|
416
|
+
|
417
|
+
.member-table td {
|
418
|
+
|
419
|
+
text-align: center;
|
420
|
+
|
421
|
+
}
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
.member-info {
|
426
|
+
|
427
|
+
height: 30px;
|
428
|
+
|
429
|
+
}
|
430
|
+
|
431
|
+
|
432
|
+
|
433
|
+
.member-title {
|
434
|
+
|
435
|
+
width: 100px;
|
436
|
+
|
437
|
+
text-align: center;
|
438
|
+
|
439
|
+
background-color: #EEEEEE;
|
440
|
+
|
441
|
+
}
|
442
|
+
|
443
|
+
|
444
|
+
|
445
|
+
.account-title {
|
446
|
+
|
447
|
+
width: 150px;
|
448
|
+
|
449
|
+
text-align: center;
|
450
|
+
|
451
|
+
}
|
452
|
+
|
453
|
+
|
454
|
+
|
455
|
+
.achievement-title {
|
456
|
+
|
457
|
+
width: 500px;
|
458
|
+
|
459
|
+
text-align: center;
|
460
|
+
|
461
|
+
}
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
.member-introduction td {
|
466
|
+
|
467
|
+
height: 30px;
|
468
|
+
|
469
|
+
}
|
470
|
+
|
471
|
+
|
472
|
+
|
473
|
+
.footer {
|
474
|
+
|
475
|
+
|
476
|
+
|
477
|
+
}
|
214
478
|
|
215
479
|
```
|
216
480
|
|
217
481
|
|
218
482
|
|
219
|
-
```
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
m
|
232
|
-
|
233
|
-
}
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
m
|
240
|
-
|
241
|
-
}
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
}
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
}
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
wi
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
.
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
}
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
wi
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
}
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
}
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
.
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
wi
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
wi
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
t
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
}
|
483
|
+
```js
|
484
|
+
|
485
|
+
// ※リーグ表の中身の定義
|
486
|
+
|
487
|
+
var json_data = {"_1":{
|
488
|
+
|
489
|
+
"member":"Aさん",
|
490
|
+
|
491
|
+
"_1":{"member":"Aさん","WinOrLose":9},
|
492
|
+
|
493
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
494
|
+
|
495
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
496
|
+
|
497
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
498
|
+
|
499
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
500
|
+
|
501
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
502
|
+
|
503
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
504
|
+
|
505
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
506
|
+
|
507
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
508
|
+
|
509
|
+
"_10":{"member":"Jさん","WinOrLose":0}
|
510
|
+
|
511
|
+
},
|
512
|
+
|
513
|
+
|
514
|
+
|
515
|
+
// 途中略
|
516
|
+
|
517
|
+
|
518
|
+
|
519
|
+
"_10":{
|
520
|
+
|
521
|
+
"member":"Jさん",
|
522
|
+
|
523
|
+
"_1":{"member":"Aさん","WinOrLose":0},
|
524
|
+
|
525
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
526
|
+
|
527
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
528
|
+
|
529
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
530
|
+
|
531
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
532
|
+
|
533
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
534
|
+
|
535
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
536
|
+
|
537
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
538
|
+
|
539
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
540
|
+
|
541
|
+
"_10":{"member":"Jさん","WinOrLose":9}
|
542
|
+
|
543
|
+
}
|
544
|
+
|
545
|
+
};
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
// 初期処理
|
550
|
+
|
551
|
+
function init(){
|
552
|
+
|
553
|
+
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
554
|
+
|
555
|
+
// 1行目はヘッダーだから飛ばして
|
556
|
+
|
557
|
+
for(var itr = 1; itr < trs.length; itr++){
|
558
|
+
|
559
|
+
// テーブルの行毎に処理
|
560
|
+
|
561
|
+
var tds = trs[itr].getElementsByTagName('td');
|
562
|
+
|
563
|
+
for(var itd = 0; itd < tds.length; itd++){
|
564
|
+
|
565
|
+
if(tds[itd].id.indexOf('op_') != -1){ // idにop_を含む(勝敗記入のtd)
|
566
|
+
|
567
|
+
// 勝ち負け入力<td>タグの場合
|
568
|
+
|
569
|
+
var arr = tds[itd].id.split('_'); // op_数字_数字 → [op, 数字, 数字]
|
570
|
+
|
571
|
+
if(arr[1] == arr[2]){
|
572
|
+
|
573
|
+
// 対戦が同じ場合
|
574
|
+
|
575
|
+
tds[itd].classList.add('right_down_border'); // 縦横同値マスにクラスを指定
|
576
|
+
|
577
|
+
}
|
578
|
+
|
579
|
+
else {
|
580
|
+
|
581
|
+
// 対戦が違う場合、イベントを登録
|
582
|
+
|
583
|
+
// onclick="winorlose_click(this);" と同じ内容
|
584
|
+
|
585
|
+
tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
|
586
|
+
|
587
|
+
if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
|
588
|
+
|
589
|
+
tds[itd].innerHTML = "○";
|
590
|
+
|
591
|
+
}
|
592
|
+
|
593
|
+
else if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == -1) {
|
594
|
+
|
595
|
+
tds[itd].innerHTML = "●";
|
596
|
+
|
597
|
+
}
|
598
|
+
|
599
|
+
}
|
600
|
+
|
601
|
+
}
|
602
|
+
|
603
|
+
// else if(tds[itd].id.indexOf('win_') != -1){ // idにwin_を含む(勝ち数のtd)
|
604
|
+
|
605
|
+
// tds[itd].innerHTML = json_data['_'+ arr[1]]['_'+ arr[2]]["WinCount"];
|
606
|
+
|
607
|
+
// }
|
608
|
+
|
609
|
+
// else { // 残るは負け数
|
610
|
+
|
611
|
+
// tds[itd].innerHTML = json_data['_'+ arr[1]]['_'+ arr[2]]["LoseCount"];
|
612
|
+
|
613
|
+
// }
|
614
|
+
|
615
|
+
}
|
616
|
+
|
617
|
+
}
|
618
|
+
|
619
|
+
}
|
620
|
+
|
621
|
+
|
622
|
+
|
623
|
+
// クリックしたときの処理
|
624
|
+
|
625
|
+
function winorlose_click(el){
|
626
|
+
|
627
|
+
// el にはどこでクリックされたかの情報が入っている
|
628
|
+
|
629
|
+
var arr = el.target.id.split('_'); // idを'_'で分ける .targetで親要素イベントも発火
|
630
|
+
|
631
|
+
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
632
|
+
|
633
|
+
// 勝敗の記入と取消
|
634
|
+
|
635
|
+
if(el.target.innerHTML == ''){ // 勝敗を記入
|
636
|
+
|
637
|
+
el.target.innerHTML = '○'; // 勝ち
|
638
|
+
|
639
|
+
document.getElementById(oppid).innerHTML = '●'; // 負け
|
640
|
+
|
641
|
+
}
|
642
|
+
|
643
|
+
else if(el.target.innerHTML == '○'){ // 勝敗を取消
|
644
|
+
|
645
|
+
el.target.innerHTML = ''; // 空白
|
646
|
+
|
647
|
+
document.getElementById(oppid).innerHTML = ''; // 空白
|
648
|
+
|
649
|
+
}
|
650
|
+
|
651
|
+
// 勝ち数と負け数の計算
|
652
|
+
|
653
|
+
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
654
|
+
|
655
|
+
var win = 0;
|
656
|
+
|
657
|
+
var lose = 0;
|
658
|
+
|
659
|
+
// 1行目はヘッダーだから飛ばして
|
660
|
+
|
661
|
+
for(var itr = 1; itr < trs.length; itr++){
|
662
|
+
|
663
|
+
// テーブルの行毎に処理
|
664
|
+
|
665
|
+
win = 0;
|
666
|
+
|
667
|
+
lose = 0;
|
668
|
+
|
669
|
+
var tds = trs[itr].getElementsByTagName('td');
|
670
|
+
|
671
|
+
for(var itd = 0; itd < tds.length; itd++){
|
672
|
+
|
673
|
+
if(tds[itd].id.indexOf('op_') != -1){
|
674
|
+
|
675
|
+
// 勝ち負け数カウント
|
676
|
+
|
677
|
+
if(tds[itd].innerHTML == '○'){
|
678
|
+
|
679
|
+
win ++;
|
680
|
+
|
681
|
+
}else if(tds[itd].innerHTML == '●'){
|
682
|
+
|
683
|
+
lose ++;
|
684
|
+
|
685
|
+
}
|
686
|
+
|
687
|
+
} else if(tds[itd].id.indexOf('win_') != -1){
|
688
|
+
|
689
|
+
// 勝ち表示
|
690
|
+
|
691
|
+
tds[itd].innerHTML = win;
|
692
|
+
|
693
|
+
} else if(tds[itd].id.indexOf('lose_') != -1){
|
694
|
+
|
695
|
+
// 負け表示
|
696
|
+
|
697
|
+
tds[itd].innerHTML = lose;
|
698
|
+
|
699
|
+
}
|
700
|
+
|
701
|
+
}
|
702
|
+
|
703
|
+
// json_dataの更新?
|
704
|
+
|
705
|
+
}
|
706
|
+
|
707
|
+
}
|
708
|
+
|
709
|
+
|
710
|
+
|
711
|
+
window.addEventListener("load", init);
|
424
712
|
|
425
713
|
```
|
426
714
|
|
427
715
|
|
428
716
|
|
429
|
-
```js
|
430
|
-
|
431
|
-
// ※リーグ表の中身の定義
|
432
|
-
|
433
|
-
var json_data = {"_1":{
|
434
|
-
|
435
|
-
"member":"Aさん",
|
436
|
-
|
437
|
-
"_1":{"member":"Aさん","WinOrLose":9},
|
438
|
-
|
439
|
-
"_2":{"member":"Bさん","WinOrLose":0},
|
440
|
-
|
441
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
442
|
-
|
443
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
444
|
-
|
445
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
446
|
-
|
447
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
448
|
-
|
449
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
450
|
-
|
451
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
452
|
-
|
453
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
454
|
-
|
455
|
-
"_10":{"member":"Jさん","WinOrLose":0}
|
456
|
-
|
457
|
-
},
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
// 途中略
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
"_10":{
|
466
|
-
|
467
|
-
"member":"Jさん",
|
468
|
-
|
469
|
-
"_1":{"member":"Aさん","WinOrLose":0},
|
470
|
-
|
471
|
-
"_2":{"member":"Bさん","WinOrLose":0},
|
472
|
-
|
473
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
474
|
-
|
475
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
476
|
-
|
477
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
478
|
-
|
479
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
480
|
-
|
481
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
482
|
-
|
483
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
484
|
-
|
485
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
486
|
-
|
487
|
-
"_10":{"member":"Jさん","WinOrLose":9}
|
488
|
-
|
489
|
-
}
|
490
|
-
|
491
|
-
};
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
// 初期処理
|
496
|
-
|
497
|
-
function init(){
|
498
|
-
|
499
|
-
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
500
|
-
|
501
|
-
// 1行目はヘッダーだから飛ばして
|
502
|
-
|
503
|
-
for(var itr = 1; itr < trs.length; itr++){
|
504
|
-
|
505
|
-
// テーブルの行毎に処理
|
506
|
-
|
507
|
-
var tds = trs[itr].getElementsByTagName('td');
|
508
|
-
|
509
|
-
for(var itd = 0; itd < tds.length; itd++){
|
510
|
-
|
511
|
-
if(tds[itd].id.indexOf('op_') != -1){
|
512
|
-
|
513
|
-
// 勝ち負け入力<td>タグの場合
|
514
|
-
|
515
|
-
var arr = tds[itd].id.split('_'); // op_数字_数字 → [op, 数字, 数字]
|
516
|
-
|
517
|
-
if(arr[1] == arr[2]){
|
518
|
-
|
519
|
-
// 対戦が同じ場合
|
520
|
-
|
521
|
-
tds[itd].classList.add('right_down_border'); // 縦横同値マスにクラスを指定
|
522
|
-
|
523
|
-
}
|
524
|
-
|
525
|
-
else {
|
526
|
-
|
527
|
-
// 対戦が違う場合、イベントを登録
|
528
|
-
|
529
|
-
// onclick="winorlose_click(this);" と同じ内容
|
530
|
-
|
531
|
-
tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
|
532
|
-
|
533
|
-
if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
|
534
|
-
|
535
|
-
tds[itd].innerHTML = "○";
|
536
|
-
|
537
|
-
}
|
538
|
-
|
539
|
-
else if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == -1) {
|
540
|
-
|
541
|
-
tds[itd].innerHTML = "●";
|
542
|
-
|
543
|
-
}
|
544
|
-
|
545
|
-
}
|
546
|
-
|
547
|
-
}
|
548
|
-
|
549
|
-
}
|
550
|
-
|
551
|
-
}
|
552
|
-
|
553
|
-
}
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
// クリックしたときの処理
|
558
|
-
|
559
|
-
function winorlose_click(el){
|
560
|
-
|
561
|
-
// el にはどこでクリックされたかの情報が入っている
|
562
|
-
|
563
|
-
const resultId = el.target.getAttribute("data-id");
|
564
|
-
|
565
|
-
const XHR = new XMLHttpRequest();
|
566
|
-
|
567
|
-
XHR.open("GET", `/results/${resultId}`, true);
|
568
|
-
|
569
|
-
XHR.responseType = "json";
|
570
|
-
|
571
|
-
XHR.send();
|
572
|
-
|
573
|
-
XHR.onload = () => {
|
574
|
-
|
575
|
-
const item = XHR.response.el.target;
|
576
|
-
|
577
|
-
if (item === "") {
|
578
|
-
|
579
|
-
el.setAttribute("data-result", "○");
|
580
|
-
|
581
|
-
}
|
582
|
-
|
583
|
-
else if (item === "○") {
|
584
|
-
|
585
|
-
el.setAttribute("data-result", "");
|
586
|
-
|
587
|
-
}
|
588
|
-
|
589
|
-
};
|
590
|
-
|
591
|
-
// el にはどこでクリックされたかの情報が入っている
|
592
|
-
|
593
|
-
var arr = el.target.id.split('_'); // idを'_'で分ける .targetで親要素イベントも発火
|
594
|
-
|
595
|
-
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
596
|
-
|
597
|
-
// 勝敗の記入と取消
|
598
|
-
|
599
|
-
if(el.target.innerHTML == ''){ // 勝敗を記入
|
600
|
-
|
601
|
-
el.target.innerHTML = '○'; // 勝ち
|
602
|
-
|
603
|
-
document.getElementById(oppid).innerHTML = '●'; // 負け
|
604
|
-
|
605
|
-
}
|
606
|
-
|
607
|
-
else if(el.target.innerHTML == '○'){ // 勝敗を取消
|
608
|
-
|
609
|
-
el.target.innerHTML = ''; // 空白
|
610
|
-
|
611
|
-
document.getElementById(oppid).innerHTML = ''; // 空白
|
612
|
-
|
613
|
-
}
|
614
|
-
|
615
|
-
// 勝ち数と負け数の計算
|
616
|
-
|
617
|
-
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
618
|
-
|
619
|
-
var win = 0;
|
620
|
-
|
621
|
-
var lose = 0;
|
622
|
-
|
623
|
-
// 1行目はヘッダーだから飛ばして
|
624
|
-
|
625
|
-
for(var itr = 1; itr < trs.length; itr++){
|
626
|
-
|
627
|
-
// テーブルの行毎に処理
|
628
|
-
|
629
|
-
win = 0;
|
630
|
-
|
631
|
-
lose = 0;
|
632
|
-
|
633
|
-
var tds = trs[itr].getElementsByTagName('td');
|
634
|
-
|
635
|
-
for(var itd = 0; itd < tds.length; itd++){
|
636
|
-
|
637
|
-
if(tds[itd].id.indexOf('op_') != -1){
|
638
|
-
|
639
|
-
// 勝ち負け数カウント
|
640
|
-
|
641
|
-
if(tds[itd].innerHTML == '○'){
|
642
|
-
|
643
|
-
win ++;
|
644
|
-
|
645
|
-
}else if(tds[itd].innerHTML == '●'){
|
646
|
-
|
647
|
-
lose ++;
|
648
|
-
|
649
|
-
}
|
650
|
-
|
651
|
-
} else if(tds[itd].id.indexOf('win_') != -1){
|
652
|
-
|
653
|
-
// 勝ち表示
|
654
|
-
|
655
|
-
tds[itd].innerHTML = win;
|
656
|
-
|
657
|
-
} else if(tds[itd].id.indexOf('lose_') != -1){
|
658
|
-
|
659
|
-
// 負け表示
|
660
|
-
|
661
|
-
tds[itd].innerHTML = lose;
|
662
|
-
|
663
|
-
}
|
664
|
-
|
665
|
-
}
|
666
|
-
|
667
|
-
}
|
668
|
-
|
669
|
-
}
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
window.addEventListener("load", init);
|
674
|
-
|
675
|
-
```
|
676
|
-
|
677
|
-
|
678
|
-
|
679
717
|
# 調べた内容
|
680
718
|
|
681
719
|
・[Rails] Ajaxを用いて非同期通信でチャットメッセージを送る
|
4
routes.rbの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,8 +30,24 @@
|
|
30
30
|
|
31
31
|
# 現在のコード
|
32
32
|
|
33
|
+
|
34
|
+
|
33
35
|
```ruby
|
34
36
|
|
37
|
+
Rails.application.routes.draw do
|
38
|
+
|
39
|
+
root to: 'results#index'
|
40
|
+
|
41
|
+
get 'results/:id', to: 'results#win_or_lose'
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
```
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
|
35
51
|
class ResultsController < ApplicationController
|
36
52
|
|
37
53
|
|
3
コードの更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,6 +30,48 @@
|
|
30
30
|
|
31
31
|
# 現在のコード
|
32
32
|
|
33
|
+
```ruby
|
34
|
+
|
35
|
+
class ResultsController < ApplicationController
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
def index
|
40
|
+
|
41
|
+
@results = Result.all
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
# def win_or_lose
|
48
|
+
|
49
|
+
# result = Result.find(params[:id])
|
50
|
+
|
51
|
+
# if result.クリックしたtdのop == ""
|
52
|
+
|
53
|
+
# result.update(クリックしたtdのop: "○")
|
54
|
+
|
55
|
+
# else result.クリックしたtdのop == "○"
|
56
|
+
|
57
|
+
# result.update(クリックしたtdのop: "")
|
58
|
+
|
59
|
+
# end
|
60
|
+
|
61
|
+
# item = Result.find(params[:id])
|
62
|
+
|
63
|
+
# render json: { result: item }
|
64
|
+
|
65
|
+
# end
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
|
74
|
+
|
33
75
|
```html
|
34
76
|
|
35
77
|
<div class="header">
|
@@ -82,25 +124,15 @@
|
|
82
124
|
|
83
125
|
<td class="self-name"><%= result.player %></td>
|
84
126
|
|
85
|
-
<td id="op_<%= i + 1 %>_1"><%= result.op_1 %></td>
|
127
|
+
<td id="op_<%= i + 1 %>_1" data-id=<%= result.id %> data-result=<%= result.op_1 %>><%= result.op_1 %></td>
|
86
|
-
|
128
|
+
|
129
|
+
|
130
|
+
|
87
|
-
|
131
|
+
<%# 途中略 2~9を記述%>
|
88
|
-
|
89
|
-
|
132
|
+
|
90
|
-
|
91
|
-
|
133
|
+
|
92
|
-
|
93
|
-
|
134
|
+
|
94
|
-
|
95
|
-
<td id="op_<%= i + 1 %>_6"><%= result.op_6 %></td>
|
96
|
-
|
97
|
-
<td id="op_<%= i + 1 %>_7"><%= result.op_7 %></td>
|
98
|
-
|
99
|
-
<td id="op_<%= i + 1 %>_8"><%= result.op_8 %></td>
|
100
|
-
|
101
|
-
<td id="op_<%= i + 1 %>_9"><%= result.op_9 %></td>
|
102
|
-
|
103
|
-
<td id="op_<%= i + 1 %>_10"><%= result.op_10 %></td>
|
135
|
+
<td id="op_<%= i + 1 %>_10" data-id=<%= result.id %> data-result=<%= result.op_10 %>><%= result.op_10 %></td>
|
104
136
|
|
105
137
|
<td id="win_<%= i + 1 %>">0</td>
|
106
138
|
|
@@ -482,8 +514,6 @@
|
|
482
514
|
|
483
515
|
tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
|
484
516
|
|
485
|
-
|
486
|
-
|
487
517
|
if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
|
488
518
|
|
489
519
|
tds[itd].innerHTML = "○";
|
@@ -514,6 +544,36 @@
|
|
514
544
|
|
515
545
|
// el にはどこでクリックされたかの情報が入っている
|
516
546
|
|
547
|
+
const resultId = el.target.getAttribute("data-id");
|
548
|
+
|
549
|
+
const XHR = new XMLHttpRequest();
|
550
|
+
|
551
|
+
XHR.open("GET", `/results/${resultId}`, true);
|
552
|
+
|
553
|
+
XHR.responseType = "json";
|
554
|
+
|
555
|
+
XHR.send();
|
556
|
+
|
557
|
+
XHR.onload = () => {
|
558
|
+
|
559
|
+
const item = XHR.response.el.target;
|
560
|
+
|
561
|
+
if (item === "") {
|
562
|
+
|
563
|
+
el.setAttribute("data-result", "○");
|
564
|
+
|
565
|
+
}
|
566
|
+
|
567
|
+
else if (item === "○") {
|
568
|
+
|
569
|
+
el.setAttribute("data-result", "");
|
570
|
+
|
571
|
+
}
|
572
|
+
|
573
|
+
};
|
574
|
+
|
575
|
+
// el にはどこでクリックされたかの情報が入っている
|
576
|
+
|
517
577
|
var arr = el.target.id.split('_'); // idを'_'で分ける .targetで親要素イベントも発火
|
518
578
|
|
519
579
|
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
2
コードの更新を反映させました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -56,8 +56,6 @@
|
|
56
56
|
|
57
57
|
|
58
58
|
|
59
|
-
<%# 対戦相手の名前を動的に生成 %>
|
60
|
-
|
61
59
|
<% @results.each do |result| %>
|
62
60
|
|
63
61
|
<td class="opponent-name"><%= result.player %></td>
|
@@ -76,8 +74,6 @@
|
|
76
74
|
|
77
75
|
|
78
76
|
|
79
|
-
<%# 対局者の行を動的に生成 %>
|
80
|
-
|
81
77
|
<% @results.each_with_index do |result, i| %>
|
82
78
|
|
83
79
|
<tr class="result-cells">
|
@@ -214,27 +210,7 @@
|
|
214
210
|
|
215
211
|
|
216
212
|
|
217
|
-
// 指定したtdに斜線を引く
|
218
|
-
|
219
|
-
#op_1_1,
|
220
|
-
|
221
|
-
#op_2_2,
|
222
|
-
|
223
|
-
#op_3_3,
|
224
|
-
|
225
|
-
#op_4_4,
|
226
|
-
|
227
|
-
#op_5_5,
|
228
|
-
|
229
|
-
#op_6_6,
|
230
|
-
|
231
|
-
#op_7_7,
|
232
|
-
|
233
|
-
#op_8_8,
|
234
|
-
|
235
|
-
#op_9_9,
|
236
|
-
|
237
|
-
|
213
|
+
.right_down_border {
|
238
214
|
|
239
215
|
background-image: linear-gradient(to top right, transparent, transparent 48%, black 49%, black 51%, transparent 52%, transparent);
|
240
216
|
|
@@ -242,24 +218,6 @@
|
|
242
218
|
|
243
219
|
|
244
220
|
|
245
|
-
// .right_down_border {
|
246
|
-
|
247
|
-
// background-image: linear-gradient(45deg, /*角度*/
|
248
|
-
|
249
|
-
// transparent 49%,
|
250
|
-
|
251
|
-
// black 49%, /*斜線の色*/
|
252
|
-
|
253
|
-
// black 51%, /*斜線の色*/
|
254
|
-
|
255
|
-
// transparent 51%,
|
256
|
-
|
257
|
-
// transparent);
|
258
|
-
|
259
|
-
// }
|
260
|
-
|
261
|
-
|
262
|
-
|
263
221
|
.top-title {
|
264
222
|
|
265
223
|
height: 30px;
|
@@ -328,22 +286,6 @@
|
|
328
286
|
|
329
287
|
|
330
288
|
|
331
|
-
.win-count {
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
}
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
.lose-count {
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
}
|
344
|
-
|
345
|
-
|
346
|
-
|
347
289
|
.result-cells {
|
348
290
|
|
349
291
|
height:40px ;
|
@@ -438,6 +380,70 @@
|
|
438
380
|
|
439
381
|
```js
|
440
382
|
|
383
|
+
// ※リーグ表の中身の定義
|
384
|
+
|
385
|
+
var json_data = {"_1":{
|
386
|
+
|
387
|
+
"member":"Aさん",
|
388
|
+
|
389
|
+
"_1":{"member":"Aさん","WinOrLose":9},
|
390
|
+
|
391
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
392
|
+
|
393
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
394
|
+
|
395
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
396
|
+
|
397
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
398
|
+
|
399
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
400
|
+
|
401
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
402
|
+
|
403
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
404
|
+
|
405
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
406
|
+
|
407
|
+
"_10":{"member":"Jさん","WinOrLose":0}
|
408
|
+
|
409
|
+
},
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
// 途中略
|
414
|
+
|
415
|
+
|
416
|
+
|
417
|
+
"_10":{
|
418
|
+
|
419
|
+
"member":"Jさん",
|
420
|
+
|
421
|
+
"_1":{"member":"Aさん","WinOrLose":0},
|
422
|
+
|
423
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
424
|
+
|
425
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
426
|
+
|
427
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
428
|
+
|
429
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
430
|
+
|
431
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
432
|
+
|
433
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
434
|
+
|
435
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
436
|
+
|
437
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
438
|
+
|
439
|
+
"_10":{"member":"Jさん","WinOrLose":9}
|
440
|
+
|
441
|
+
}
|
442
|
+
|
443
|
+
};
|
444
|
+
|
445
|
+
|
446
|
+
|
441
447
|
// 初期処理
|
442
448
|
|
443
449
|
function init(){
|
@@ -466,7 +472,7 @@
|
|
466
472
|
|
467
473
|
tds[itd].classList.add('right_down_border'); // 縦横同値マスにクラスを指定
|
468
474
|
|
469
|
-
}
|
475
|
+
}
|
470
476
|
|
471
477
|
else {
|
472
478
|
|
@@ -478,66 +484,6 @@
|
|
478
484
|
|
479
485
|
|
480
486
|
|
481
|
-
// ※リーグ表の中身の定義
|
482
|
-
|
483
|
-
var json_data = {"_1":{
|
484
|
-
|
485
|
-
"member":"Aさん",
|
486
|
-
|
487
|
-
"_1":{"member":"Aさん","WinOrLose":9},
|
488
|
-
|
489
|
-
"_2":{"member":"Bさん","WinOrLose":0},
|
490
|
-
|
491
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
492
|
-
|
493
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
494
|
-
|
495
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
496
|
-
|
497
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
498
|
-
|
499
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
500
|
-
|
501
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
502
|
-
|
503
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
504
|
-
|
505
|
-
"_10":{"member":"Jさん","WinOrLose":0}
|
506
|
-
|
507
|
-
},
|
508
|
-
|
509
|
-
// 途中略
|
510
|
-
|
511
|
-
"_10":{
|
512
|
-
|
513
|
-
"member":"Jさん",
|
514
|
-
|
515
|
-
"_1":{"member":"Aさん","WinOrLose":0},
|
516
|
-
|
517
|
-
"_2":{"member":"Bさん","WinOrLose":0},
|
518
|
-
|
519
|
-
"_3":{"member":"Cさん","WinOrLose":0},
|
520
|
-
|
521
|
-
"_4":{"member":"Dさん","WinOrLose":0},
|
522
|
-
|
523
|
-
"_5":{"member":"Eさん","WinOrLose":0},
|
524
|
-
|
525
|
-
"_6":{"member":"Fさん","WinOrLose":0},
|
526
|
-
|
527
|
-
"_7":{"member":"Gさん","WinOrLose":0},
|
528
|
-
|
529
|
-
"_8":{"member":"Hさん","WinOrLose":0},
|
530
|
-
|
531
|
-
"_9":{"member":"Iさん","WinOrLose":0},
|
532
|
-
|
533
|
-
"_10":{"member":"Jさん","WinOrLose":9}
|
534
|
-
|
535
|
-
}
|
536
|
-
|
537
|
-
};
|
538
|
-
|
539
|
-
|
540
|
-
|
541
487
|
if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
|
542
488
|
|
543
489
|
tds[itd].innerHTML = "○";
|
@@ -574,7 +520,7 @@
|
|
574
520
|
|
575
521
|
// 勝敗の記入と取消
|
576
522
|
|
577
|
-
if(el.target.innerHTML = ''){ // 勝敗を記入
|
523
|
+
if(el.target.innerHTML == ''){ // 勝敗を記入
|
578
524
|
|
579
525
|
el.target.innerHTML = '○'; // 勝ち
|
580
526
|
|
@@ -582,7 +528,7 @@
|
|
582
528
|
|
583
529
|
}
|
584
530
|
|
585
|
-
else if(el.target.innerHTML = '○'){ // 勝敗を取消
|
531
|
+
else if(el.target.innerHTML == '○'){ // 勝敗を取消
|
586
532
|
|
587
533
|
el.target.innerHTML = ''; // 空白
|
588
534
|
|
@@ -590,6 +536,8 @@
|
|
590
536
|
|
591
537
|
}
|
592
538
|
|
539
|
+
// 勝ち数と負け数の計算
|
540
|
+
|
593
541
|
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
594
542
|
|
595
543
|
var win = 0;
|
@@ -644,6 +592,10 @@
|
|
644
592
|
|
645
593
|
}
|
646
594
|
|
595
|
+
|
596
|
+
|
597
|
+
window.addEventListener("load", init);
|
598
|
+
|
647
599
|
```
|
648
600
|
|
649
601
|
|
1
コードの加筆・修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -242,6 +242,24 @@
|
|
242
242
|
|
243
243
|
|
244
244
|
|
245
|
+
// .right_down_border {
|
246
|
+
|
247
|
+
// background-image: linear-gradient(45deg, /*角度*/
|
248
|
+
|
249
|
+
// transparent 49%,
|
250
|
+
|
251
|
+
// black 49%, /*斜線の色*/
|
252
|
+
|
253
|
+
// black 51%, /*斜線の色*/
|
254
|
+
|
255
|
+
// transparent 51%,
|
256
|
+
|
257
|
+
// transparent);
|
258
|
+
|
259
|
+
// }
|
260
|
+
|
261
|
+
|
262
|
+
|
245
263
|
.top-title {
|
246
264
|
|
247
265
|
height: 30px;
|
@@ -420,107 +438,211 @@
|
|
420
438
|
|
421
439
|
```js
|
422
440
|
|
441
|
+
// 初期処理
|
442
|
+
|
443
|
+
function init(){
|
444
|
+
|
445
|
+
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
446
|
+
|
447
|
+
// 1行目はヘッダーだから飛ばして
|
448
|
+
|
449
|
+
for(var itr = 1; itr < trs.length; itr++){
|
450
|
+
|
451
|
+
// テーブルの行毎に処理
|
452
|
+
|
453
|
+
var tds = trs[itr].getElementsByTagName('td');
|
454
|
+
|
455
|
+
for(var itd = 0; itd < tds.length; itd++){
|
456
|
+
|
423
|
-
|
457
|
+
if(tds[itd].id.indexOf('op_') != -1){
|
458
|
+
|
424
|
-
|
459
|
+
// 勝ち負け入力<td>タグの場合
|
460
|
+
|
461
|
+
var arr = tds[itd].id.split('_'); // op_数字_数字 → [op, 数字, 数字]
|
462
|
+
|
463
|
+
if(arr[1] == arr[2]){
|
464
|
+
|
465
|
+
// 対戦が同じ場合
|
466
|
+
|
467
|
+
tds[itd].classList.add('right_down_border'); // 縦横同値マスにクラスを指定
|
468
|
+
|
469
|
+
}
|
470
|
+
|
471
|
+
else {
|
472
|
+
|
473
|
+
// 対戦が違う場合、イベントを登録
|
474
|
+
|
475
|
+
// onclick="winorlose_click(this);" と同じ内容
|
476
|
+
|
477
|
+
tds[itd].addEventListener('click', {name: this, handleEvent: winorlose_click});
|
478
|
+
|
479
|
+
|
480
|
+
|
481
|
+
// ※リーグ表の中身の定義
|
482
|
+
|
483
|
+
var json_data = {"_1":{
|
484
|
+
|
425
|
-
|
485
|
+
"member":"Aさん",
|
426
|
-
|
427
|
-
|
486
|
+
|
428
|
-
|
429
|
-
const op_1_4 = document.getElementById("op_1_4")
|
430
|
-
|
431
|
-
const op_1_5 = document.getElementById("op_1_5")
|
432
|
-
|
433
|
-
const op_1_6 = document.getElementById("op_1_6")
|
434
|
-
|
435
|
-
const op_1_7 = document.getElementById("op_1_7")
|
436
|
-
|
437
|
-
const op_1_8 = document.getElementById("op_1_8")
|
438
|
-
|
439
|
-
const op_1_9 = document.getElementById("op_1_9")
|
440
|
-
|
441
|
-
|
487
|
+
"_1":{"member":"Aさん","WinOrLose":9},
|
442
|
-
|
488
|
+
|
443
|
-
|
489
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
444
|
-
|
490
|
+
|
445
|
-
|
491
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
492
|
+
|
446
|
-
|
493
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
494
|
+
|
447
|
-
|
495
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
496
|
+
|
497
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
498
|
+
|
499
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
500
|
+
|
501
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
502
|
+
|
503
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
504
|
+
|
505
|
+
"_10":{"member":"Jさん","WinOrLose":0}
|
506
|
+
|
507
|
+
},
|
448
508
|
|
449
509
|
// 途中略
|
450
510
|
|
451
|
-
|
452
|
-
|
453
|
-
const op_10_1 = document.getElementById("op_10_1")
|
454
|
-
|
455
|
-
const op_10_2 = document.getElementById("op_10_2")
|
456
|
-
|
457
|
-
const op_10_3 = document.getElementById("op_10_3")
|
458
|
-
|
459
|
-
const op_10_4 = document.getElementById("op_10_4")
|
460
|
-
|
461
|
-
const op_10_5 = document.getElementById("op_10_5")
|
462
|
-
|
463
|
-
const op_10_6 = document.getElementById("op_10_6")
|
464
|
-
|
465
|
-
const op_10_7 = document.getElementById("op_10_7")
|
466
|
-
|
467
|
-
const op_10_8 = document.getElementById("op_10_8")
|
468
|
-
|
469
|
-
const op_10_9 = document.getElementById("op_10_9")
|
470
|
-
|
471
|
-
|
511
|
+
"_10":{
|
472
|
-
|
473
|
-
|
512
|
+
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
op_1_2.addEventListener('click', function(){
|
478
|
-
|
479
|
-
|
513
|
+
"member":"Jさん",
|
514
|
+
|
480
|
-
|
515
|
+
"_1":{"member":"Aさん","WinOrLose":0},
|
516
|
+
|
517
|
+
"_2":{"member":"Bさん","WinOrLose":0},
|
518
|
+
|
519
|
+
"_3":{"member":"Cさん","WinOrLose":0},
|
520
|
+
|
521
|
+
"_4":{"member":"Dさん","WinOrLose":0},
|
522
|
+
|
523
|
+
"_5":{"member":"Eさん","WinOrLose":0},
|
524
|
+
|
525
|
+
"_6":{"member":"Fさん","WinOrLose":0},
|
526
|
+
|
527
|
+
"_7":{"member":"Gさん","WinOrLose":0},
|
528
|
+
|
529
|
+
"_8":{"member":"Hさん","WinOrLose":0},
|
530
|
+
|
531
|
+
"_9":{"member":"Iさん","WinOrLose":0},
|
532
|
+
|
533
|
+
"_10":{"member":"Jさん","WinOrLose":9}
|
534
|
+
|
535
|
+
}
|
536
|
+
|
537
|
+
};
|
538
|
+
|
539
|
+
|
540
|
+
|
541
|
+
if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == 1){
|
542
|
+
|
481
|
-
|
543
|
+
tds[itd].innerHTML = "○";
|
544
|
+
|
482
|
-
|
545
|
+
}
|
546
|
+
|
547
|
+
else if(json_data['_'+ arr[1]]['_'+ arr[2]]["WinOrLose"] == -1) {
|
548
|
+
|
483
|
-
|
549
|
+
tds[itd].innerHTML = "●";
|
550
|
+
|
551
|
+
}
|
552
|
+
|
553
|
+
}
|
554
|
+
|
555
|
+
}
|
484
556
|
|
485
557
|
}
|
486
558
|
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
//
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
559
|
+
}
|
560
|
+
|
561
|
+
}
|
562
|
+
|
563
|
+
|
564
|
+
|
565
|
+
// クリックしたときの処理
|
566
|
+
|
567
|
+
function winorlose_click(el){
|
568
|
+
|
569
|
+
// el にはどこでクリックされたかの情報が入っている
|
570
|
+
|
571
|
+
var arr = el.target.id.split('_'); // idを'_'で分ける .targetで親要素イベントも発火
|
572
|
+
|
573
|
+
var oppid = arr[0] + '_' + arr[2] + '_'+ arr[1]; // 反対側のid
|
574
|
+
|
575
|
+
// 勝敗の記入と取消
|
576
|
+
|
577
|
+
if(el.target.innerHTML = ''){ // 勝敗を記入
|
578
|
+
|
579
|
+
el.target.innerHTML = '○'; // 勝ち
|
580
|
+
|
581
|
+
document.getElementById(oppid).innerHTML = '●'; // 負け
|
582
|
+
|
583
|
+
}
|
584
|
+
|
585
|
+
else if(el.target.innerHTML = '○'){ // 勝敗を取消
|
586
|
+
|
587
|
+
el.target.innerHTML = ''; // 空白
|
588
|
+
|
589
|
+
document.getElementById(oppid).innerHTML = ''; // 空白
|
590
|
+
|
591
|
+
}
|
592
|
+
|
593
|
+
var trs = document.getElementById("winorlose_table").getElementsByTagName('tr');
|
594
|
+
|
595
|
+
var win = 0;
|
596
|
+
|
597
|
+
var lose = 0;
|
598
|
+
|
599
|
+
// 1行目はヘッダーだから飛ばして
|
600
|
+
|
601
|
+
for(var itr = 1; itr < trs.length; itr++){
|
602
|
+
|
603
|
+
// テーブルの行毎に処理
|
604
|
+
|
605
|
+
win = 0;
|
606
|
+
|
607
|
+
lose = 0;
|
608
|
+
|
609
|
+
var tds = trs[itr].getElementsByTagName('td');
|
610
|
+
|
611
|
+
for(var itd = 0; itd < tds.length; itd++){
|
612
|
+
|
613
|
+
if(tds[itd].id.indexOf('op_') != -1){
|
614
|
+
|
615
|
+
// 勝ち負け数カウント
|
616
|
+
|
617
|
+
if(tds[itd].innerHTML == '○'){
|
618
|
+
|
619
|
+
win ++;
|
620
|
+
|
621
|
+
}else if(tds[itd].innerHTML == '●'){
|
622
|
+
|
623
|
+
lose ++;
|
624
|
+
|
625
|
+
}
|
626
|
+
|
627
|
+
} else if(tds[itd].id.indexOf('win_') != -1){
|
628
|
+
|
629
|
+
// 勝ち表示
|
630
|
+
|
631
|
+
tds[itd].innerHTML = win;
|
632
|
+
|
633
|
+
} else if(tds[itd].id.indexOf('lose_') != -1){
|
634
|
+
|
635
|
+
// 負け表示
|
636
|
+
|
637
|
+
tds[itd].innerHTML = lose;
|
638
|
+
|
639
|
+
}
|
640
|
+
|
641
|
+
}
|
642
|
+
|
643
|
+
}
|
644
|
+
|
645
|
+
}
|
524
646
|
|
525
647
|
```
|
526
648
|
|