diff --git a/html/exhi/application/controllers/General.php b/html/exhi/application/controllers/General.php index b6a530af9c8e09c879e7660764aad1dfc951f58c..ac091b5415048aacc39911e418e2a01cd6034940 100644 --- a/html/exhi/application/controllers/General.php +++ b/html/exhi/application/controllers/General.php @@ -133,13 +133,15 @@ class general extends Exhibition_Controller echo json_encode($data); } - public function get_data_search_pagination_tag() + public function get_data_search_pagination_search() { - $tag = $_GET['tag']; + $s_value = $_GET['s_value']; + $search = $_GET['search']; $page = $_GET['page']; $limit = $_GET['limit']; + ($search == 'tag') ? $s_value = 'AND project_tag.tag_id = ' . $s_value : $s_value = 'AND (project.name_th LIKE \'%' . $s_value . '%\' OR project.name_en LIKE \'%' . $s_value . '%\' )'; $this->load->model('general/M_general', 'pagination'); - $data['pagination'] = $this->pagination->get_data_search_pagination_tag($tag, $page, $limit)->result(); + $data['pagination'] = $this->pagination->get_data_search_pagination_search($s_value, $page, $limit)->result(); echo json_encode($data); } @@ -151,6 +153,15 @@ class general extends Exhibition_Controller echo json_encode($data); } + public function get_data_chart() + { + $year = $_GET['year']; + ($year == 'all') ? $year = 'AND project.date = project.date' : $year = 'AND project.date = ' . $year; + $this->load->model('general/M_general', 'chart'); + $data['chart'] = $this->chart->get_data_chart($year)->result(); + echo json_encode($data); + } + public function get_num_search_page() { $year = $_GET['year']; @@ -166,11 +177,13 @@ class general extends Exhibition_Controller echo json_encode($data); } - public function get_num_project_by_tag() + public function get_num_project_by_search() { - $tag = $_GET['tag']; + $s_value = $_GET['s_value']; + $search = $_GET['search']; + ($search == 'tag') ? $s_value = 'AND project_tag.tag_id = ' . $s_value . 'GROUP BY project_tag.tag_id' : $s_value = 'AND (project.name_th LIKE \'%' . $s_value . '%\' OR project.name_en LIKE \'%' . $s_value . '%\' )'; $this->load->model('general/M_general', 'num'); - $data['num'] = $this->num->get_num_project_by_tag($tag)->result(); + $data['num'] = $this->num->get_num_project_by_search($s_value)->result(); echo json_encode($data); } @@ -222,12 +235,20 @@ class general extends Exhibition_Controller public function get_search_tag($tag) { - $data['tag'] = $tag; + $data['s_value'] = $tag; $data['search'] = 'tag'; $this->output_general('general/v_search', $data); } + public function get_search_pname($pname) + { + $data['s_value'] = $pname; + $data['search'] = 'pname'; + + $this->output_general('general/v_search', $data); + } + public function show_select($id) { $this->load->model('project/M_project', 'project'); diff --git a/html/exhi/application/models/general/M_general.php b/html/exhi/application/models/general/M_general.php index 688eeb4346f91035d14be9008d8a449b67d3115a..02bbaf9ae430947637e7c85a0e56ccfc4f6b67cc 100644 --- a/html/exhi/application/models/general/M_general.php +++ b/html/exhi/application/models/general/M_general.php @@ -38,7 +38,7 @@ class M_general extends Da_general return $query; } - public function get_data_search_pagination_tag($tag, $page, $limit) + public function get_data_search_pagination_search($s_value, $page, $limit) { $offset = ($page - 1) * $limit; @@ -51,21 +51,32 @@ class M_general extends Da_general JOIN company ON project.company_id = company.company_id JOIN instructor ON project.instructor_id = instructor.instructor_id WHERE project.status = 1 - AND project_tag.tag_id = $tag + $s_value LIMIT $limit OFFSET $offset"; $query = $this->db->query($sql); return $query; } - public function get_num_project_by_tag($tag) + + public function get_data_chart($year) + { + $sql = "SELECT company.name AS cp_name, COUNT(project.company_id) AS num FROM project + JOIN company ON project.company_id = company.company_id + WHERE project.status = 1 $year + GROUP BY project.company_id"; + $query = $this->db->query($sql); + return $query; + } + + public function get_num_project_by_search($s_value) { $sql = "SELECT *, count(project.project_id) AS num_project FROM {$this->db_name}.project LEFT OUTER JOIN project_tag ON project_tag.project_id = project.project_id WHERE project.status = 1 - AND project_tag.tag_id = $tag - GROUP BY project_tag.tag_id"; + $s_value + "; $query = $this->db->query($sql); return $query; } diff --git a/html/exhi/application/views/general/v_general_home.php b/html/exhi/application/views/general/v_general_home.php index 4cd95a17eef6a159f9597ac3f7a6a80ed41f7e1f..746f233e25b31f5f81baaf6a6897eb7ae7242c2f 100644 --- a/html/exhi/application/views/general/v_general_home.php +++ b/html/exhi/application/views/general/v_general_home.php @@ -215,9 +215,10 @@ .grow:hover { transform: scale(1.2); } - .select2-container--default .select2-selection--multiple .select2-selection__choice{ - color: black !important; - } + + .select2-container--default .select2-selection--multiple .select2-selection__choice { + color: black !important; + } </style> <div class="wrapper"> <div class="container-fluid"> @@ -225,25 +226,25 @@ <div class="content" style="padding: 20px"> <div class="container-fluid"> <div class="row"> - <div class="col-2"> - <div class="form-group"> + <div class="col-md-2"> + <div class="form-group"> <select name="year" class="form-control form-control" id="year" onchange="get_num_project()"> </select> </div> - </div> - <div class="col-2"> - <div class="input-group"> - <input type="search" class="form-control form-control" placeholder="ชื่อโปรเจกต์.."> + </div> + <div class="col-md-2"> + <div class="input-group form-group"> + <input type="search" class="form-control form-control" id='pname_search' placeholder="ชื่อโปรเจกต์.."> <div class="input-group-append"> - <button type="submit" class="btn btn btn-default"> + <button type="submit" class="btn btn btn-default" onclick="search_pname()"> <i class="fa fa-search"></i> </button> </div> </div> </div> - <div class="col-2"> - <button style="background-color:white;border-color:#A79E9E" class="btn" data-toggle="modal" data-target="#advanceSearcheModal">ค้นหาขั้นสูง</button><br><br><br><br> - </div> + <div class="col-md-2"> + <button style="background-color:white;border-color:#A79E9E" class="btn" data-toggle="modal" data-target="#advanceSearcheModal">ค้นหาขั้นสูง</button><br><br><br><br> + </div> </div> <div> <h5><b>ผลงานที่เพิ่มล่าสุด</b></h5> @@ -323,10 +324,20 @@ </div> <div class="col-md-6"> <div class="card"> - <div class="card-header"> - <h5>สถิติ</h5> + <div class="card-header row"> + <div class="col-9"> + <h5>สถิติ</h5> + </div> + <div class="col-3 float-right"> + <select name="year_chart" class="form-control form-control " id="year_chart" onchange="del_chart(), get_data_chart()"> + <option value="all">ทั้งหมด</option> + </select> + </div> </div> - <div class="card-body" style="text-align:center; width: auto; height: 390px; position: relative;"> + <div class="card-body" style=" width: auto; height: 390px; "> + <div class="col-12 float-center" id="cardMyChart"> + <canvas id="myChart" style="width:100%;max-width:600px"></canvas> + </div> </div> </div> </div> @@ -393,39 +404,39 @@ </div> </div> </div> - <div class="row"> + <div class="row"> <div class="col-12"> - <div class="form-group has-success"> - <label class="form-label">บริษัท: </label> - <select class="form-control" id="company" name="company"> - <option value="">ทั้งหมด</option> - <?php foreach ($companies as $company) { ?> - <option value="<?php echo $company->company_id ?>"><?php echo $company->name ?></option> - <?php } ?> - </select> - </div> - </div> - </div> - <div class="row"> + <div class="form-group has-success"> + <label class="form-label">บริษัท: </label> + <select class="form-control" id="company" name="company"> + <option value="">ทั้งหมด</option> + <?php foreach ($companies as $company) { ?> + <option value="<?php echo $company->company_id ?>"><?php echo $company->name ?></option> + <?php } ?> + </select> + </div> + </div> + </div> + <div class="row"> <div class="col-12"> - <div class="form-group has-success"> - <label class="form-label">ชื่อโปรเจกต์: </label> - <input name="pname" type="text" class="form-control"> - </div> - </div> - </div> - <div class="row"> + <div class="form-group has-success"> + <label class="form-label">ชื่อโปรเจกต์: </label> + <input name="pname" type="text" class="form-control"> + </div> + </div> + </div> + <div class="row"> <div class="col-md-12"> - <div class="form-group has-success"> - <label class="form-label">หมวดหมู่: </label><br> - <select class="js-example-basic-multiple form-control" name="tag[]" multiple="multiple" id="muti"> - <?php foreach ($tags as $tag) { ?> - <option value="<?php echo $tag->tag_id ?>"><?php echo $tag->name ?></option> - <?php } ?> - </select> - </div> - </div> - </div> + <div class="form-group has-success"> + <label class="form-label">หมวดหมู่: </label><br> + <select class="js-example-basic-multiple form-control" name="tag[]" multiple="multiple" id="muti"> + <?php foreach ($tags as $tag) { ?> + <option value="<?php echo $tag->tag_id ?>"><?php echo $tag->name ?></option> + <?php } ?> + </select> + </div> + </div> + </div> <hr> <div class="row justify-content-between"> <a type="hidden"></a> @@ -471,8 +482,71 @@ $('#project_3').attr('href', '<?php echo site_url() . "/General/show_project_3" ?>?y=' + year); $('#project_4').attr('href', '<?php echo site_url() . "/General/show_project_4" ?>?y=' + year); get_tag(); + get_data_chart(); }); + function del_chart() { + let element = document.getElementById("myChart"); + element.parentNode.removeChild(element); + let html = ''; + html = '<canvas id="myChart" style="width:100%;max-width:600px"></canvas>'; + document.getElementById('cardMyChart').innerHTML = html; + } + + function create_chart(data) { + let year = document.getElementById('year_chart').value; + year == 'all' ? year = 'ทั้งหมด' : year = +year + 543; + var xValues = []; + var yValues = []; + console.log('xxx'.xValues); + data.forEach((row, index) => { + xValues.push(row.cp_name) + yValues.push(row.num) + }) + new Chart("myChart", { + type: "bar", + data: { + labels: xValues, + datasets: [{ + backgroundColor: "Navy", + data: yValues + }] + }, + options: { + legend: { + display: false + }, + title: { + display: true, + text: `ข้อมูลผลงานที่ทำกับบริษัทในปี ${year}` + }, + scales: { + yAxes: [{ + ticks: { + beginAtZero: true, + stepSize: 1 + } + }] + } + } + }); + } + + function get_data_chart() { + let year = document.getElementById('year_chart').value; + $.ajax({ + type: 'get', + url: "<?php echo site_url() . '/General/get_data_chart'; ?>", + data: { + 'year': year + }, + dataType: 'json', + success: function(data) { + create_chart(data.chart); + } + }) + } + function get_project_year() { $.ajax({ type: 'get', @@ -484,6 +558,7 @@ success: function(data) { console.log(data) create_option_year(data.year) + create_option_year_chart(data.year) create_option_year_search(data.year) get_num_project() } @@ -520,6 +595,17 @@ }) } + function create_option_year_chart(data) { + let selectList = document.querySelector('#year_chart') + data.forEach((row, index) => { + option = document.createElement("option") + option.setAttribute("value", row.year) + const number = parseInt(row.year) + 543 + option.text = number + selectList.appendChild(option) + }) + } + function create_option_year_search(data) { let selectList = document.querySelector('#year_search') data.forEach((row, index) => { @@ -544,6 +630,11 @@ }) } + function search_pname() { + let pname = document.getElementById('pname_search').value; + (pname == '') ? '' : window.location.href = `http://localhost/exhi/index.php/General/get_search_pname/${pname}`; + } + function create_tag(data) { let tag = []; let url = "<?php echo site_url() . '/General/get_search_tag/' ?>" @@ -604,4 +695,4 @@ selectDiv_3.innerHTML = 'จำนวนผลงาน : ' + data.team + ' ผลงาน'; selectDiv_4.innerHTML = 'จำนวนผลงาน : ' + data.project + ' ผลงาน'; } -</script> +</script> \ No newline at end of file diff --git a/html/exhi/application/views/general/v_search.php b/html/exhi/application/views/general/v_search.php index 21dc6124ccfb92258396a5af8da060bca05a389d..8314ad430e97f1fce6b93b1ab4fd775264a6c9fd 100644 --- a/html/exhi/application/views/general/v_search.php +++ b/html/exhi/application/views/general/v_search.php @@ -149,6 +149,7 @@ $team = (!isset($team)) ? '' : $team; $grade = (!isset($grade)) ? '' : $grade; $year = (!isset($year)) ? '' : $year; $search = (!isset($search)) ? 'all' : $search; +$s_value = (!isset($s_value)) ? '' : $s_value; ?> <div class="wrapper"> <div class="container-fluid"> @@ -204,12 +205,12 @@ $search = (!isset($search)) ? 'all' : $search; </footer> <script> $(document).ready(function() { - if ('<?php echo $search; ?>' == 'tag') { - load_data_tag() - load_num_project_tag() - } else { + if ('<?php echo $search; ?>' == 'all') { load_data() load_num_project() + } else { + load_data_search() + load_num_project_search() } }); @@ -246,14 +247,16 @@ $search = (!isset($search)) ? 'all' : $search; }); } - function load_data_tag() { + function load_data_search() { let limit = document.getElementById("limit").value; - let tag = <?php echo json_encode($tag); ?>; + let s_value = '<?php echo $s_value; ?>'; + let search = '<?php echo $search; ?>'; $.ajax({ type: "get", - url: "<?php echo site_url() . '/General/get_data_search_pagination_tag' ?>", + url: "<?php echo site_url() . '/General/get_data_search_pagination_search' ?>", data: { - 'tag': tag, + 's_value': s_value, + 'search': search, 'page': current_page, 'limit': limit }, @@ -295,14 +298,16 @@ $search = (!isset($search)) ? 'all' : $search; }); } - function load_num_project_tag() { + function load_num_project_search() { let limit = document.getElementById("limit").value; - let tag = <?php echo json_encode($tag); ?>; + let s_value = '<?php echo $s_value; ?>'; + let search = '<?php echo $search; ?>'; $.ajax({ type: "get", - url: "<?php echo site_url() . '/General/get_num_project_by_tag' ?>", + url: "<?php echo site_url() . '/General/get_num_project_by_search' ?>", data: { - 'tag': tag, + 's_value': s_value, + 'search': search, }, dataType: "json", success: function(data) {