$(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();
}
}
});