url_renderer = "http://localhost:3030/chart"; $this->db_onedev = $this->load->database("onedev", true); } function v01() { // $sql = "SELECT // So_ResultEntryDetailID as trx_id, // NonlabTemplateDetailCode as code, // So_ResultEntryDetailNonlab_TemplateDetailID as template_detail_id, // So_ResultEntryDetailNonlab_TemplateDetailName as result_label, // IFNULL(So_ResultEntryDetailResult, 0) as result_value, // So_ResultEntryDetailFlagPrint as flag_print, // So_ResultEntryDetailResult as result_value_before, // NonlabTemplateDetailIsResult as isResult, // CASE // WHEN NonlabTemplateDetailCode LIKE '%AR%' AND NonlabTemplateDetailIsResult='Y' THEN 'AR' // WHEN NonlabTemplateDetailCode LIKE '%AL%' AND NonlabTemplateDetailIsResult='Y' THEN 'AL' // WHEN NonlabTemplateDetailCode LIKE '%BR%' AND NonlabTemplateDetailIsResult='Y' THEN 'BR' // WHEN NonlabTemplateDetailCode LIKE '%BL%' AND NonlabTemplateDetailIsResult='Y' THEN 'BL' // ELSE 'N' // END as type, // GROUP_CONCAT(CASE // WHEN So_ResultEntryDetailResult IS NULL THEN 0 // WHEN TRIM(So_ResultEntryDetailResult) = '' THEN 0 // WHEN So_ResultEntryDetailResult REGEXP '^[0-9]+$' THEN So_ResultEntryDetailResult // ELSE 0 // END ORDER BY So_ResultEntryDetailNonlab_TemplateDetailID) as value // FROM so_resultentrydetail // JOIN nonlab_template_detail ON So_ResultEntryDetailNonlab_TemplateDetailID = NonlabTemplateDetailID // AND NonlabTemplateDetaiM_LangID = 1 // WHERE // So_ResultEntryDetailSo_ResultEntryID = '{$id}' AND So_ResultEntryDetailisActive = 'Y' // GROUP BY type // ORDER BY So_ResultEntryDetailNonlab_TemplateDetailID // "; //echo $sql; // $qry = $this->db_onedev->query($sql); // if (!$qry) { // $message = $this->db_onedev->error(); // $message['qry'] = $this->db_onedev->last_query(); // $this->sys_error($message); // exit; // } // $acR = array(); // $acL = array(); // $bcR = array(); // $bcL = array(); // $dtls = $qry->result_array(); // foreach ($dtls as $key => $v) { // if ($v['type'] == 'AR') { // $acR = explode(',', $v['value']); // $cek = array(); // for ($i = 0; $i < count($acR); $i++) { // if (intval($acR[$i]) == 0) { // array_push($cek, 1); // } // } // if (count($cek) == count($acR)) { // $acR = []; // } // } // if ($v['type'] == 'AL') { // $acL = explode(',', $v['value']); // $cek = array(); // for ($i = 0; $i < count($acL); $i++) { // if (intval($acL[$i]) == 0) { // array_push($cek, 1); // } // } // if (count($cek) == count($acL)) { // $acL = []; // } // } // if ($v['type'] == 'BR') { // $bcR = explode(',', $v['value']); // $cek = array(); // for ($i = 0; $i < count($bcR); $i++) { // if (intval($bcR[$i]) == 0) { // array_push($cek, 1); // } // } // if (count($cek) == count($bcR)) { // $bcR = []; // } // } // if ($v['type'] == 'BL') { // $bcL = explode(',', $v['value']); // $cek = array(); // for ($i = 0; $i < count($bcL); $i++) { // if (intval($bcL[$i]) == 0) { // array_push($cek, 1); // } // } // if (count($cek) == count($bcL)) { // $bcL = []; // } // } // } $param = array( 'tooltip' => array( "show" => true, 'trigger' => 'item' ), 'color' => [ "#ff0000", "#00ff00", "#0000ff", "#00ffff", ], 'xAxis' => [ "name" => "Frequency in hertz (Hz)", "nameLocation" => "center", "nameGap" => 30, "showGrid" => true, "type" => "category", "data" => [250, 500, 1000, 2000, 3000, 4000, 6000, 8000], "forceLabelIsEnabled" => true, "labelCount" => 8, "splitLine" => [ "show" => true, "lineStyle" => [ "color" => "#bbbbbb" ] ] ], 'yAxis' => [ "name" => "Hearing treshold level (dB)", "nameLocation" => "middle", "nameGap" => 30, "type" => "value", "inverse" => true, "min" => 0, "max" => 120, "interval" => 10, "splitLine" => [ "interval" => 0, "lineStyle" => [ "color" => "#bbbbbb" ] ] ], 'legend' => array( 'top' => 'bottom', 'left' => 'center', 'orient' => 'horizontal' ), 'series' => array( [ "name" => "1 Right Ear", "symbol" => "none", // "symbolSize" => 200, // "data" => [25, 25, 20, 25, 20, 15, 20, 25], "data" => [], "type" => "line", ], [ "name" => "2 BC Right", "symbol" => "none", // "symbol" => "circle", // "showSymbol" => true, // "data" => [], "data" => [], "type" => "line", ], [ "name" => "3 Left Ear", "symbol" => "none", // "symbol" => "plus", // "showSymbol" => true, // "data" => [30, 30, 25, 25, 30, 20, 30, 30], "data" => [], "type" => "line", ], [ "name" => "4 BC Left ", "symbol" => "none", // "symbol" => "triangle", // "showSymbol" => true, // "data" => $bcL, "data" => [], "type" => "line", ] ) ); // 3. encapsulate in config attribute and json encode // print_r($param); $config = ["config" => $param]; $j_param = json_encode($config); header("Content-Type: image/png"); // 4. post to chart renderer echo $this->post($this->url_renderer, $j_param); } function post($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "Content-Length: " . strlen($data), ]); $result = curl_exec($ch); print_r($result); if (curl_errno($ch) > 0) { return [ "status" => "ERR", "message" => curl_error($ch), ]; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode != 200) { return [ "status" => "ERR", "message" => "Http Response : $httpCode", ]; } return $result; } }