public function ConstructFlightEventsList($extFlightId, $sections = [], $colored = false) { $flightId = $extFlightId; $user = $this->_user->username; $Fl = new Flight(); $flightInfo = $Fl->GetFlightInfo($flightId); $bruType = $flightInfo['bruType']; unset($Fl); $Bru = new Bru(); $bruInfo = $Bru->GetBruInfo($bruType); $flightApHeaders = $Bru->GetBruApHeaders($bruType); $flightBpHeaders = $Bru->GetBruBpHeaders($bruType); $prefixArr = $Bru->GetBruApCycloPrefixes($bruType); unset($Bru); $Frame = new Frame(); $framesCount = $Frame->GetFramesCount($flightInfo['apTableName'], $prefixArr[0]); //giving just some prefix unset($Frame); // create new PDF document $pdf = new TCPDF('L', 'mm', 'A4', true, 'UTF-8', false); // set document information $pdf->SetCreator($user); $pdf->SetAuthor($user); $pdf->SetTitle('Flight events list'); $pdf->SetSubject('Flight events list'); // $pdf->SetKeywords('TCPDF, PDF, example, test, guide'); $bort = $flightInfo['bort']; $voyage = $flightInfo['voyage']; $copyDate = date('H:i:s d-m-Y', $flightInfo['startCopyTime']); $Fr = new Frame(); $flightDuration = $Fr->FrameCountToDuration($framesCount, $bruInfo['stepLength']); unset($Fr); $usrInfo = $this->_user->userInfo; $headerStr = $usrInfo['company']; $imageFile = ''; if ($colored && $usrInfo['logo'] != '') { $imageFile = SITE_ROOT_DIR . '/fileUploader/files/' . uniqid() . '.png'; file_put_contents($imageFile, $usrInfo['logo']); $img = file_get_contents($imageFile); $pdf->SetHeaderData('$' . $img, "20", $headerStr, "", [0, 10, 50], [0, 10, 50]); } else { // set default header data $pdf->SetHeaderData("", "", $headerStr, "", [0, 10, 50], [0, 10, 50]); } $pdf->setFooterData([0, 10, 50], [0, 10, 50]); // set header and footer fonts $pdf->setHeaderFont(array('dejavusans', '', 11)); $pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); // set margins $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); // set auto page breaks $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); // set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); // --------------------------------------------------------- // set default font subsetting mode $pdf->setFontSubsetting(true); // Set font // dejavusans is a UTF-8 Unicode font, if you only need to // print standard ASCII chars, you can use core fonts like // helvetica or times to reduce file size. $pdf->SetFont('dejavusans', '', 12, '', true); // Add a page // This method has several options, check the source code documentation for more information. $pdf->AddPage(); if ($imageFile !== '') { unlink($imageFile); } // set text shadow effect $pdf->setTextShadow(array('enabled' => true, 'depth_w' => 0.2, 'depth_h' => 0.2, 'color' => [196, 196, 196], 'opacity' => 1, 'blend_mode' => 'Normal')); // Pasport $strStyle = "text-align:center; font-size: xx-large; font-weight: bold; color: rgb(0, 10, 64);"; $str = '<p style="' . $strStyle . '">' . $this->lang->pasport . '</p>'; $pdf->writeHTML($str, true, false, false, false, ''); // Pasport info $strStyle = "text-align:center;"; $str = '<p style="' . $strStyle . '">' . $this->lang->bruType . ' - ' . $bruInfo['bruType'] . '. <br>' . $this->lang->bort . ' - ' . $flightInfo['bort'] . '; ' . $this->lang->voyage . ' - ' . $flightInfo['voyage'] . '; ' . $this->lang->route . ' : ' . ($new_string = preg_replace('/[^a-zA-z0-9]/', '', $flightInfo['departureAirport']) . ' - ' . preg_replace('/[^a-zA-z1-9]/', '', $flightInfo['arrivalAirport']) . '. <br>' . $this->lang->flightDate . ' - ' . date('H:i:s d-m-Y', $flightInfo['startCopyTime']) . '; ' . $this->lang->duration . ' - ' . $flightDuration . '. <br>'); $fileName = date('Y-m-d_H.i.s', $flightInfo['startCopyTime']) . '_' . $flightInfo['bort'] . '_' . $flightInfo['voyage'] . '_' . $bruInfo['bruType']; if (strpos($bruInfo['aditionalInfo'], ";") >= 0) { $counterNeedBrake = false; $aditionalInfoArr = explode(";", $flightInfo['flightAditionalInfo']); foreach ($aditionalInfoArr as $aditionalInfo) { if ($aditionalInfo != "") { $nameVal = explode(":", $aditionalInfo); if (count($nameVal) > 1) { $name = $nameVal[0]; $val = $nameVal[1]; if ($counterNeedBrake) { $str .= (isset($this->lang->{$name}) ? $this->lang->{$name} : $name) . " - " . $val . "; </br>"; $counterNeedBrake = !$counterNeedBrake; } else { $str .= (isset($this->lang->{$name}) ? $this->lang->{$name} : $name) . " - " . $val . "; "; $counterNeedBrake = !$counterNeedBrake; } } } } } $str .= "</p>"; $pdf->writeHTML($str, true, false, false, false, ''); if ($flightInfo['exTableName'] != "") { $FEx = new FlightException(); $excEventsList = $FEx->GetFlightEventsList($flightInfo['exTableName']); $Frame = new Frame(); // change frame num to time for ($i = 0; $i < count($excEventsList); $i++) { $event = $excEventsList[$i]; $excEventsList[$i]['start'] = date("H:i:s", $excEventsList[$i]['startTime'] / 1000); $reliability = "checked"; // converting false alarm to reliability if ($excEventsList[$i]['falseAlarm'] == 0) { $reliability = true; } else { $reliability = false; } $excEventsList[$i]['reliability'] = $reliability; $excEventsList[$i]['end'] = date("H:i:s", $excEventsList[$i]['endTime'] / 1000); $excEventsList[$i]['duration'] = $Frame->TimeStampToDuration($excEventsList[$i]['endTime'] - $excEventsList[$i]['startTime']); } unset($Frame); // if isset events if (!empty($excEventsList)) { $pdf->SetFont('dejavusans', '', 9, '', true); $strStyle = 'style="text-align:center; font-weight: bold; background-color:#708090; color:#FFF"'; $str = '<p><table border="1" cellpadding="1" cellspacing="1">' . '<tr ' . $strStyle . '><td width="70"> ' . $this->lang->start . '</td>' . '<td width="70">' . $this->lang->end . '</td>' . '<td width="70">' . $this->lang->duration . '</td>' . '<td width="70">' . $this->lang->code . '</td>' . '<td width="260">' . $this->lang->eventName . '</td>' . '<td width="110">' . $this->lang->algText . '</td>' . '<td width="180">' . $this->lang->aditionalInfo . '</td>' . '<td width="110">' . $this->lang->comment . '</td></tr>'; for ($i = 0; $i < count($excEventsList); $i++) { $event = $excEventsList[$i]; $excInfo = $FEx->GetExcInfo($bruInfo['excListTableName'], $event['refParam'], $event['code']); $codePrefix = substr($event['code'], 0, 3); if ($event['reliability'] && (in_array($codePrefix, $sections) || !preg_match('/00[0-9]/', $codePrefix) && in_array('other', $sections))) { if ($colored && $excInfo['status'] == "C") { $style = "background-color:LightCoral"; } else { if ($colored && $excInfo['status'] == "D") { $style = "background-color:LightYellow"; } else { if ($colored && $excInfo['status'] == "E") { $style = "background-color:LightGreen"; } else { $style = ""; } } } $excAditionalInfo = $event['excAditionalInfo']; $excAditionalInfo = str_replace(";", ";<br>", $excAditionalInfo); $excInfo['algText'] = str_replace('<', "less", $excInfo['algText']); $str .= '<tr style="' . $style . '" nobr="true">' . '<td width="70" style="text-align:center;">' . $event['start'] . '</td>' . '<td width="70" style="text-align:center;">' . $event['end'] . '</td>' . '<td width="70" style="text-align:center;">' . $event['duration'] . '</td>' . '<td width="70" style="text-align:center;">' . $event['code'] . '</td>' . '<td width="260" style="text-align:center;">' . $excInfo['comment'] . '</td>' . '<td width="110" style="text-align:center;">' . $excInfo['algText'] . '</td>' . '<td width="180" style="text-align:center;">' . $excAditionalInfo . '</td>' . '<td width="110" style="text-align:center;"> ' . $event['userComment'] . '</td></tr>'; } } unset($FEx); $str .= "</table></p>"; $pdf->writeHTML($str, false, false, false, false, ''); $pdf->SetFont('dejavusans', '', 12, '', true); $str = "</br></br>" . $this->lang->performer . ' : ' . '_____________________ ' . $flightInfo['performer'] . ', ' . date('d-m-Y') . ''; $pdf->writeHTML($str, false, false, false, false, ''); } else { $strStyle = "text-align:center; font-size: xx-large; font-weight: bold; color: rgb(128, 10, 0);"; $str = '<p style="' . $strStyle . '">' . $this->lang->noEvents . '</p>'; $pdf->writeHTML($str, false, false, false, false, ''); } } $pdf->Output($fileName, 'I'); }
public function ShowParamList($extBruTypeId) { $bruTypeId = $extBruTypeId; $Bru = new Bru(); $bruInfo = $Bru->GetBruInfoById($bruTypeId); $bruType = $bruInfo['bruType']; $flightApHeaders = $Bru->GetBruApHeaders($bruType); $flightBpHeaders = $Bru->GetBruBpHeaders($bruType); unset($Bru); $paramList = sprintf("<div class='BruTypeTemplatesParamsListContainer is-scrollable'>"); $paramList .= sprintf("<div class='BruTypeTemplatesApList'>"); for ($i = 0; $i < count($flightApHeaders); $i++) { $paramList .= sprintf("\r\n <input size='1' class='colorpicker-popup' style='background-color:#%s; color:#%s; display:inline;' data-paramcode='%s' value='%s'\r\n data-colorpicker='false' readonly/>\r\n <label style='display:inline;'><input type='checkbox' class='ParamsCheckboxGroup' value='%s'/>\r\n %s, %s </label>\r\n </br>", $flightApHeaders[$i]['color'], $flightApHeaders[$i]['color'], $flightApHeaders[$i]['code'], $flightApHeaders[$i]['color'], $flightApHeaders[$i]['code'], $flightApHeaders[$i]['name'], $flightApHeaders[$i]['code']); } $paramList .= sprintf("</div><div class='BruTypeTemplatesBpList'>"); for ($i = 0; $i < count($flightBpHeaders); $i++) { $paramList .= sprintf("<input size='1' class='colorpicker-popup' style='background-color:#%s; color:#%s; display:inline;' data-paramcode='%s' value='%s'\r\n data-colorpicker='false' readonly/>\r\n <label style='display:inline;'>\r\n <input type='checkbox' class='ParamsCheckboxGroup' value='%s'/>\r\n %s, %s</label></br>", $flightBpHeaders[$i]['color'], $flightBpHeaders[$i]['color'], $flightBpHeaders[$i]['code'], $flightBpHeaders[$i]['color'], $flightBpHeaders[$i]['code'], $flightBpHeaders[$i]['name'], $flightBpHeaders[$i]['code']); } $paramList .= sprintf("</div></div></div></br>"); return $paramList; }
public function ShowEventsList($extFlightId) { $flightId = $extFlightId; $Fl = new Flight(); $flightInfo = $Fl->GetFlightInfo($flightId); $bruType = $flightInfo['bruType']; $exTableName = $flightInfo['exTableName']; unset($Fl); $Bru = new Bru(); $bruInfo = $Bru->GetBruInfo($bruType); $flightApHeaders = $Bru->GetBruApHeaders($bruType); $flightBpHeaders = $Bru->GetBruBpHeaders($bruType); $excListTableName = $bruInfo['excListTableName']; unset($Bru); $eventsList = ""; $eventTypeCount = []; if ($exTableName != "") { $FEx = new FlightException(); $excEventsList = $FEx->GetFlightEventsList($exTableName); $Frame = new Frame(); //change frame num to time for ($i = 0; $i < count($excEventsList); $i++) { $event = $excEventsList[$i]; $excEventsList[$i]['start'] = date("H:i:s", $excEventsList[$i]['startTime'] / 1000); $reliability = "checked"; //converting false alarm to reliability if ($excEventsList[$i]['falseAlarm'] == 0) { $reliability = "checked"; } else { $reliability = ""; } $excEventsList[$i]['reliability'] = $reliability; $excEventsList[$i]['end'] = date("H:i:s", $excEventsList[$i]['endTime'] / 1000); $excEventsList[$i]['duration'] = $Frame->TimeStampToDuration($excEventsList[$i]['endTime'] - $excEventsList[$i]['startTime']); } unset($Frame); //if isset events if (!empty($excEventsList)) { $accordion = []; $eventsListTable = sprintf("<table align='center' class='ExeptionsTable NotSelectable'>\r\n <tr class='ExeptionsTableHeader'><td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell' width='210px'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell' width='50px'> %s </td>\r\n <td class='ExeptionsCell' width='210px'> %s </td></tr>", $this->lang->start, $this->lang->end, $this->lang->duration, $this->lang->code, $this->lang->eventName, $this->lang->algText, $this->lang->aditionalInfo, $this->lang->reliability, $this->lang->comment); for ($ii = 0; $ii < count(self::$exceptionTypes); $ii++) { if ($ii == 0) { $accordion[self::$exceptionTypes[$ii]] = sprintf('<div class="exceptions-accordion">' . '<div class="exceptions-accordion-title" data-shown="true" data-section="%s"><p>%s - %s</p></div>' . '<div class="exceptions-accordion-content"> %s', self::$exceptionTypes[$ii], $this->lang->eventCodeMask000, self::$exceptionTypes[$ii], $eventsListTable); } else { if ($ii == 1) { $accordion[self::$exceptionTypes[$ii]] = sprintf('<div class="exceptions-accordion">' . '<div class="exceptions-accordion-title" data-shown="true" data-section="%s"><p>%s - %s</p></div>' . '<div class="exceptions-accordion-content"> %s', self::$exceptionTypes[$ii], $this->lang->eventCodeMask001, self::$exceptionTypes[$ii], $eventsListTable); } else { if ($ii == 2) { $accordion[self::$exceptionTypes[$ii]] = sprintf('<div class="exceptions-accordion">' . '<div class="exceptions-accordion-title" data-shown="true" data-section="%s"><p>%s - %s</p></div>' . '<div class="exceptions-accordion-content"> %s', self::$exceptionTypes[$ii], $this->lang->eventCodeMask002, self::$exceptionTypes[$ii], $eventsListTable); } else { if ($ii == 3) { $accordion[self::$exceptionTypes[$ii]] = sprintf('<div class="exceptions-accordion">' . '<div class="exceptions-accordion-title" data-shown="true" data-section="%s"><p>%s - %s</p></div>' . '<div class="exceptions-accordion-content"> %s', self::$exceptionTypes[$ii], $this->lang->eventCodeMask003, self::$exceptionTypes[$ii], $eventsListTable); } else { $accordion[self::$exceptionTypes[$ii]] = sprintf('<div class="exceptions-accordion">' . '<div class="exceptions-accordion-title" data-shown="true" data-section="%s"><p>%s - %s</p></div>' . '<div class="exceptions-accordion-content"> %s', self::$exceptionTypes[$ii], $this->lang->eventCodeMask, self::$exceptionTypes[$ii], $eventsListTable); } } } } } for ($i = 0; $i < count($excEventsList); $i++) { $event = $excEventsList[$i]; $excInfo = $FEx->GetExcInfo($excListTableName, $event['refParam'], $event['code']); if ($excInfo['status'] == "C") { $style = "background-color:LightCoral"; } else { if ($excInfo['status'] == "D") { $style = "background-color:LightYellow"; } else { if ($excInfo['status'] == "E") { $style = "background-color:LightGreen"; } else { $style = "background-color:none;"; } } } $excAditionalInfo = $event['excAditionalInfo']; $excAditionalInfo = str_replace(";", ";</br>", $excAditionalInfo); $eventsListRow = sprintf("<tr style='%s' class='ExceptionTableRow'\r\n data-refparam='%s'\r\n data-startframe='%s'\r\n data-endframe='%s'><td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell'> %s </td>\r\n <td class='ExeptionsCell' style='text-align:center;'>\r\n <input class='reliability' data-excid='%s' type='checkbox' %s></input>\r\n </td>\r\n <td class='ExeptionsCell events_user-comment' data-excid='%s'> %s </td></tr>", $style, $event['refParam'], $event['frameNum'], $event['endFrameNum'], $event['start'], $event['end'], $event['duration'], $event['code'], $excInfo['comment'], $excInfo['algText'], $excAditionalInfo, $event['id'], $event['reliability'], $event['id'], $event['userComment']); $codePrefix = substr($event['code'], 0, 3); if (in_array($codePrefix, self::$exceptionTypes)) { $accordion[$codePrefix] .= $eventsListRow; $eventTypeCount[$codePrefix] = true; } else { $accordion[self::$exceptionTypeOther] .= $eventsListRow; $eventTypeCount[self::$exceptionTypeOther] = true; } } for ($ii = 0; $ii < count(self::$exceptionTypes); $ii++) { $accordion[self::$exceptionTypes[$ii]] .= sprintf("</table></div></div>"); if (!isset($eventTypeCount[self::$exceptionTypes[$ii]]) || !$eventTypeCount[self::$exceptionTypes[$ii]]) { unset($accordion[self::$exceptionTypes[$ii]]); } } $eventsList = ''; foreach ($accordion as $item) { $eventsList .= $item; } unset($FEx); } else { $eventsList .= sprintf("<table border='1' align='center' style='padding:2px'>\r\n <tr><td> %s </td></tr>\r\n </table>", $this->lang->noEvents); } } else { $eventsList .= sprintf("<table border='1' align='center' style='padding:2px'>\r\n <tr><td> %s </td></tr>\r\n </table>", $this->lang->processingWasNotPerformed); } return $eventsList; }