function KukuTable(){
this._$table = $('#kuku-table');
this.createTable();
}
KukuTable.prototype.getClassNamesFromNumber = function(num) {
var class_names = [];
var str = '';
if (isFinite(num)) {
str = num.toString();
}
if (str.length >= 2) {
var keta_10 = str.substr(0, 1);
var keta_1 = str.substr(1, 1);
class_names[0] = 'no--' + keta_10;
class_names[1] = 'no--' + keta_1;
if (keta_10 == '1') {
class_names[0] = 'no--1-10';
}
if (keta_1 == '1' && keta_10 !== '1') {
class_names[1] = 'no--1-1';
}
} else {
class_names[0] = 'no--null';
class_names[1] = 'no--' + str;
}
return class_names;
};
KukuTable.prototype.createTable = function() {
// cols caption
var $cols_header = $('
');
$cols_header.append(' | ');
for (var col = 1 ; col <= 9 ; col++) {
var ele_no= ' | ';
$cols_header.append(ele_no);
}
this._$table.append($cols_header);
// rows
for (var row = 1 ; row <= 9 ; row++) {
// rows caption
var $row = $('
');
$row.append(' | ');
// row col values
for (var col = 1 ; col <= 9 ; col++) {
var no = row * col;
var class_name = this.getClassNamesFromNumber(no);
var ele_no = ' | ';
$row.append(ele_no);
}
this._$table.append($row);
}
// add event
// value box
var $no_boxes = $('.no-val-box');
$no_boxes.on('click', function(){
var $this = $(this);
$this.toggleClass('show');
});
// caption col box
var $col_boxes = $('.no-caption-col-box');
$col_boxes.on('click', function(){
var $this = $(this);
$this.toggleClass('show');
var target_col = $this.data('colNo');
var $target_cols = $('.col-no--' + target_col);
let is_all_show = true;
let is_all_hide = true;
for (const col of $target_cols) {
if ($(col).hasClass('show')) {
is_all_hide = false;
} else {
is_all_show = false;
}
}
if ($this.hasClass('show')) {
$target_cols.addClass('show');
} else {
$target_cols.removeClass('show');
}
if (is_all_hide) {
$target_cols.addClass('show');
} else if (is_all_show) {
$target_cols.removeClass('show');
}
});
// caption row box
var $row_boxes = $('.no-caption-row-box');
$row_boxes.on('click', function(){
var $this = $(this);
$this.toggleClass('show');
var target_row = $this.data('rowNo');
var $target_rows = $('.row-no--' + target_row);
let is_all_show = true;
let is_all_hide = true;
for (const row of $target_rows) {
if ($(row).hasClass('show')) {
is_all_hide = false;
} else {
is_all_show = false;
}
}
if ($this.hasClass('show')) {
$target_rows.addClass('show');
} else {
$target_rows.removeClass('show');
}
if (is_all_hide) {
$target_rows.addClass('show');
} else if (is_all_show) {
$target_rows.removeClass('show');
}
});
// reset
$('#btn-init').on('click', function() {
var $no_boxes = $('.no-val-box');
$no_boxes.removeClass('show');
$col_boxes.removeClass('show');
$row_boxes.removeClass('show');
});
};
$(function(){
'use strict';
new KukuTable();
});