$(document).ready(function () { const types = ["工程概要", "工程計算書", "設計圖", "數量計算書", "工程預算書", "施工規範&特定條款", "設計報告書"]; var path = ''; var category = ''; var project_id = ''; var project_name = ''; var project = ''; var blueprint_SN = ''; var blueprint_path = ''; var notes = []; var tempTable = []; var tempTable2 = []; var tree_data; //save getTree ajax data var start = true; var folderPath = ""; var fileNums = []; var is_blueprint2 = false; PDFObject.embed("./assets/null.pdf", "#pdfFile"); var table = $('#datatable-ajax').DataTable({ bProcessing: true, responsive: true, "pagingType": "full_numbers", "bLengthChange": true, "lengthMenu": [ [7, 10, 25, -1], [7, 10, 25, "全部"] ], "searching": false, "pageLength": 7, "language": { "processing": "處理中...", "loadingRecords": "載入中...", "lengthMenu": "顯示 _MENU_ 項結果", "zeroRecords": "沒有符合的結果或是沒有資料", "info": "顯示第 _START_ 至 _END_ 項結果,共 _TOTAL_ 項", "infoEmpty": "顯示第 0 至 0 項結果,共 0 項", "infoFiltered": "(從 _MAX_ 項結果中過濾)", "infoPostFix": "", "search": "搜尋:", "paginate": { "first": '', "previous": '', "next": '', "last": '' }, "aria": { "sortAscending": ": 升冪排列", "sortDescending": ": 降冪排列" } }, "columns": [{ "width": "5%" }, null, null, { "width": "5%" }, { "width": "5%" }, ], data: [ [ " ", "", "", "", "", ], [ " ", "", "", "", "", ], [ " ", "", "", "", "", ], [ " ", "", "", "", "", ], [ " ", "", "", "", "", ], [ " ", "", "", "", "", ], [ " ", "", "", "", "", ] ], drawCallback: function () { if (!start) { var api = this.api(); var rowCount = api.rows({ page: 'current' }).count(); for (var i = 0; i < api.page.len() - (rowCount === 0 ? 1 : rowCount); i++) { $('#datatable-ajax tbody').append($(" ")); } } start = false; }, }); $("#datatable-ajax_length").append($("#reset")) $.ajax({ url: "./script/php/getTree.php", contentType: "application/json", dataType: "json", type: "GET", async: false }) .success(function (response) { tree_data = response; }).error(function (error) { console.log(error); }); displayDetail(false, true); $('#treeAjaxHTML').jstree({ 'core': { 'themes': { variant: 'large' }, 'data': tree_data, 'multiple': false, 'animation': 40, 'expand_selected_onload': true }, 'types': { 'default': { 'icon': 'fa fa-folder' }, 'file': { 'icon': 'fa fa-file' } }, 'plugins': ['types', 'search', 'wholerow'] }).bind("loaded.jstree", function (event, data) { var url_href = window.location.href; var url = new URL(url_href); var projectId = url.searchParams.get("projectId"); if (projectId != null) { $(this).jstree("open_all"); } }).on( 'select_node.jstree', function (event, data) { if (data.node.text.includes("-")) { $("#reset").prop("disabled", false); $("#header").empty(); displayDetail(false, true); project_id = data.node.text.split("-")[0]; project_name = data.node.text.split("-")[1]; project = data.node.text; $("#project-id").val(project_id) $("#header").empty(); category = $('#treeAjaxHTML').jstree(true).get_node(data.node.parents[0]).text; var span = $('' + project + ' > '); span.on("click", function (e) { displayDetail(false, true); is_blueprint2 = false; for (var k = folderPath.length - 1; k > 0; k--) { $("#header").children().eq(k).remove(); folderPath.pop(); } let i = 1; table.clear().draw(); tempTable = []; types.forEach(function (data) { let temp = [ i, data, category, '', fileNums[i - 1].total, project, ]; table.row.add(temp).draw(); tempTable.push(temp); i++; }); $("#tableDetail td").empty(); }); $("#header").append(span); let i = 1; table.clear().draw(); tempTable = []; countFiles(project_id, "false"); types.forEach(function (data) { let temp = [ i, data, category, '', fileNums[i - 1].total, project, ]; table.row.add(temp).draw(); tempTable.push(temp); i++; }); $("#tableDetail td").empty(); } else { data.instance.toggle_node(data.node); } displayDetail(false, true); }); $('#btn-search').click(function () { $("#reset").prop("disabled", true); $("#header").empty(); $("#header").append("搜尋結果"); $.ajax({ url: "./script/php/search.php", data: { search: $("#search").val(), }, async: false, contentType: "application/json", dataType: "json", type: "GET", }) .success(function (response) { displayDetail(true, true); table.clear().draw(); $("#tableDetail td").empty(); response.forEach(function (data) { let temp = [ data["SN"], data["original_name"], data["keyword"], '1.0.0', data["project_id"], data["project_name"], data["type_id"], data["category_name"], data["notes"], data["filename"], ]; table.row.add(temp).draw(); i++; }); }) .error(function (error) { console.log(error); }) .complete(function () {}); }); $('#search').keyup(function (e) { if (e.keyCode == 13) { $('#btn-search').click(); } }); $('#reset').click(function () { if (folderPath.length != 1) { folderPath.pop(); let index = folderPath.length; $("#header").children().eq(index).remove(); table.clear().draw(); if (is_blueprint2) { tempTable2.forEach(function (data) { table.row.add(data).draw(); }); is_blueprint2 = false; } else { tempTable.forEach(function (data) { table.row.add(data).draw(); }); } $("#tableDetail td").empty(); displayDetail(false, true); } }); $('#datatable-ajax tbody').on('click', 'tr', function () { $("#reset").prop("disabled", false); $(this).parent().find("tr").css('background-color', ''); $(this).css("background-color", "#cccccc"); $("#tableDetail td").empty(); var data = table.row(this).data(); if (data == null) { data = ["", "", "null", "", "", "", "", "", "", ""]; } let project_id = data[5].split("-")[0]; let SN = data[0]; let is_blueprint = data[1] == "設計圖" || data[1] == "成果圖" ? true : false; let note = notes.includes(data[1]) ? data[1] : ''; if (data[2] == 'null') { $("#tableDetail td").empty(); } else if (data[3] == '') { path = data[1]; $.ajax({ url: "./script/php/getDetail.php", data: { project_id: project_id, type_id: SN, is_blueprint: is_blueprint, note: note }, async: false, contentType: "application/json", dataType: "json", type: "GET", }) .success(function (response) { var span = $('' + data[1] + ' > '); span.on("click", function (e) { let clicked = $(e.target).text().split(" > ")[0]; let index = folderPath.indexOf(clicked); for (k = index + 1; k < folderPath.length; k++) { $("#header").children().eq(k).remove(); folderPath.pop(); } addTable(data, notes, response, SN, path); is_blueprint2 = false; }); $("#header").append(span); folderPath = $("#header").text().split(" > "); folderPath.pop(); addTable(data, notes, response, SN, path); }) .error(function (error) { console.log(error); }) .complete(function () {}); } else { let type = types[parseInt(data[7]) - 1]; let path = ''; //let category = data[8]; if (data[7] == 3) { path = data[8] + "/" + data[5] + "-" + data[6] + "/" + data[7] + "_" + type + "/" + data[9] + "/" + data[10]; } else { path = data[8] + "/" + data[5] + "-" + data[6] + "/" + data[7] + "_" + type + "/" + data[10]; } $("#plan_code").text(data[5]); $("#plan_name").text(data[6]); $("#download").append(' '); $("#download").append('' + data[10] + ''); $("#version").text(data[3]); $("#fileName").text(data[1]); PDFObject.embed("./assets/建置資料/" + path, "#pdfFile"); } }); function displayDetail(isFile, isBlueprint) { if (isFile) { table.column(0).visible(isBlueprint); table.column(2).visible(true); table.column(3).visible(true); table.column(4).visible(false); $(".table-responsive").show(); $("#SN").text("圖號"); $("#name").text("圖名"); $('.nav-tabs a[href="#pdfTab"]').tab('show'); } else { table.column(2).visible(false); table.column(3).visible(false); table.column(4).visible(true); $(".table-responsive").hide(); $("#SN").text("項次"); $("#name").text("類別"); if(isBlueprint){ table.page.len(-1).draw(); }else{ table.page.len(7).draw(); } $('.nav-tabs a[href="#arcgisTab"]').tab('show'); } } function countFiles(project_id, is_blueprint) { $.ajax({ url: "./script/php/get_file_count.php", data: { project_id: project_id, is_blueprint: is_blueprint, }, async: false, //contentType: "application/json", dataType: "json", type: "POST", }) .success(function (response) { console.log(response); fileNums = response; }) .error(function (error) { console.log(error); }) .complete(function () {}); } function addTable(data, notes, response, SN, path) { table.clear().draw(); if (data[1] != "設計圖" && data[1] != "成果圖") { if (notes.includes(data[1])) { is_blueprint2 = true; displayDetail(true, true); table.page.len(10).draw(); } else { displayDetail(true, false); table.page.len(-1).draw(); } for (i = 0; i < response.length; i++) { table.row.add([ response[i]["SN"], response[i]["original_name"], response[i]["keyword"], '1.0.0', '', response[i]["project_id"], response[i]["project_name"], response[i]["type_id"], response[i]["category_name"], response[i]["notes"], response[i]["filename"], ]) table.draw(); } } else { displayDetail(false, true); blueprint_SN = SN; blueprint_path = path; tempTable2 = []; countFiles(project_id, "true"); for (i = 0; i < response.length; i++) { notes[i] = response[i]['notes']; let temp = [ i + 1, response[i]['notes'], '', '', fileNums[i].total, data[5], ]; table.row.add(temp); tempTable2.push(temp); } table.draw(); } } });