Advertisement
AlexTasev

PublicTransportTable

Nov 14th, 2018
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class PublicTransportTable {
  2.     constructor(townName) {
  3.         this.townName = townName;
  4.         PublicTransportTable.changeHeaderName(townName);
  5.         this.addEventListeners();
  6.     }
  7.  
  8.     static changeHeaderName(townName) {
  9.         $('caption').text(`${townName}'s Public Transport`)
  10.    }
  11.  
  12.    addVehicle(obj) {
  13.        let tr = $(`<tr><td>${obj.type}</td><td>${obj.name}</td>`);
  14.        let button = $("<button>More Info</button>");
  15.        let trExtra = $(`<tr class = 'more-info'><td colspan="3">` +
  16.            `<table>` +
  17.            `<tr><td>Route: ${obj.route}</td></tr>` +
  18.            `<tr><td>Price: ${obj.price}</td></tr>` +
  19.            `<tr><td>Driver: ${obj.driver}</td></tr>` +
  20.            `</table></td></tr>`);
  21.        button.on('click', function (event) {
  22.            if ($(event.target).text() === "More Info") {
  23.                $(event.target).text("Less Info");
  24.                trExtra.insertAfter(tr);
  25.            } else {
  26.                $(event.target).text("More Info");
  27.                trExtra.remove();
  28.            }
  29.        });
  30.        let td = $('<td>');
  31.        td.append(button);
  32.        tr.append(td);
  33.        $('.vehicles-info').append(tr);
  34.    }
  35.  
  36.    addEventListeners() {
  37.        $('.search-btn').on('click', function () {
  38.            let rows = $('.vehicles-info > tr').not(".more-info");
  39.            let typeForm = $('input[name = "type"]');
  40.            let nameForm = $('input[name = "name"]');
  41.            let type = typeForm.val();
  42.            let name = nameForm.val();
  43.            
  44.            if (name || type) {
  45.                for (let i = 0; i < rows.length; i++) {
  46.                    let firstChild = $(rows[i]).find('td').eq(0);
  47.                    let secondChild = $(rows[i]).find('td').eq(1);
  48.                    if (!firstChild.text().includes(type) || !secondChild.text().includes(name)) {
  49.                        $(rows[i]).css('display', 'none');
  50.                        let button = $(rows[i]).find('td').eq(2);
  51.                        if (button.text() === "Less Info") {
  52.                            button.click();
  53.                        }
  54.                    } else {
  55.                        $(rows[i]).css('display', '');
  56.                    }
  57.                }
  58.            }
  59.        });
  60.  
  61.        $('.clear-btn').on('click', function () {
  62.            let rows = $('.vehicles-info > tr');
  63.            let typeForm = $('input[name = "type"]');
  64.            let nameForm = $('input[name = "name"]');
  65.            let type = typeForm.val("");
  66.            let name = nameForm.val("");
  67.            for (let i = 0; i < rows.length; i++) {
  68.                $(rows[i]).css('display', '');
  69.            }
  70.        });
  71.    }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement