080801

Лепихин Д. А.

Журнал дискретных значений

Отчет "Журнал дискретных значений" в JasperServer: http://rkillerz.v.shared.ru:8080/jasperserver/
Логин и пароль jasperadmin.
Отчет находится в папке Reports, имя отчета: DisisReport

Гипертекстовая страница пользовательского интерфейса к отчету: http://rkillerz.v.shared.ru


Замечания

  1. Следует оформить отчет о проделанной работе по образцу
  2. Указать провайдера и условия хостинга

Код основной страницы

index.php - основной файл, в котором обрабатывается внешний вид пользовательского интерфейса, формируются запросы к сервисам:
код

<?php 
$db = mysql_connect("advanta.homeip.net", "userairs", "userairs"); // Соединяемся с базой данных
mysql_select_db("airs",$db);
$result = mysql_query("select code from svodcode where type='d' order by 1",$db); // Создаем запрос на выборку кодов
$code = mysql_fetch_array($result); 
$codelist = '<option value="">Выберите код</option>';
do {
$codelist .= '<option value="'.$code['code'].'">'.$code['code'].'</option>';
}
while ($code = mysql_fetch_array($result));
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;" charset="utf-8">
<title>Журнал дискретных значений</title>
<script language="javascript" type="text/javascript">
function showPeriod(str)
{
if (str=="") // Если в выпадающем списке выбрано значение "Выберите код" , то ничего не выводим
  {
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  document.getElementById("loader").style.display = '';
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("loader").style.display = 'none';
    document.getElementById("pStart").innerHTML=xmlhttp.responseText;
    document.getElementById("pStop").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getperiod.php?pcode="+str,true);
xmlhttp.send();
}

function openJasper(){
    var pcode = document.getElementById("pCode").value;
    var pstart = document.getElementById("pStart").value;
    var pstop = document.getElementById("pStop").value;
    var output = document.getElementById("output").value;
    var jserver = "http://rkillerz.v.shared.ru:8080/jasperserver/flow.html?_flowId=viewReportFlow&standAlone=true&ParentFolderUri=%2Freports&reportUnit=%2Freports%2FDisisReport&j_username=jasperadmin&j_password=jasperadmin&output="+output+"&pCode="+pcode+"&pStart="+pstart+"&pStop="+pstop;
    window.open(jserver);
}
</script>
</head>
<body>
<p><h3>Журнал дискретных значений</h3></p>
<p><form>Код дискретного сигнала: <select id="pCode" name="pCode" onchange="showPeriod(this.value)"><?php echo $codelist; ?></select></form></p>
<p>Временной диапазон: <select id="pStart" name="pStart"><option value=""> </option></select> - <select id="pStop" name="pStop"><option value=""> </option></select> <img src="load.gif" id="loader" style="display: none;"></p>
<p>Формат вывода: 
<select id="output" name="output">
<option value="html">HTML</option>
<option value="pdf">PDF</option>
<option value="xls">EXCEL</option>
<option value="rtf">RTF</option>
<option value="csv">CSV</option>
<option value="swf">FLASH</option>
<option value="docx">DOCX</option>
<option value="xlsx">XLSX</option>
<option value="odt">ODT</option>
<option value="ods">ODS</option>
</select></p>
<p><input type="button" value="Готовый отчет" onclick="openJasper()" /></p>
</body>
</html>

Код обработчика

getperiod.php - обработчик, который средствами PHP посылает запрос к базе данных на выборку временных периодов в соответствии с выбранным кодом дискретного сигнала

<?php
$pcode = $_GET['pcode'];

$db = mysql_connect("advanta.homeip.net", "userairs", "userairs");
mysql_select_db("airs",$db);

$result = mysql_query("select tstamp from dx where code='".$pcode."' order by 1",$db); // Создаем запрос на выборку временного периода
$tstamp = mysql_fetch_array($result); 

function ParseTstamp($a) { // Функция форматирования даты
$result = substr($a,6,2).".".substr($a,4,2).".".substr($a,0,4)." ".substr($a,8,2).":".substr($a,10,2);
return $result;
}

$startstoplist = '';
do {
$ptstampt = ParseTstamp($tstamp['tstamp']);
$startstoplist .= '<option value="'.$tstamp['tstamp'].'">'.$ptstampt.'</option>';
}
while ($tstamp = mysql_fetch_array($result));

echo $startstoplist;
?>

Логика работы пользовательского интерфейса к отчету:

  1. При загрузке страницы автоматически загружается список возможных кодов. Загрузка этого списка производится посредствам отправки запроса к базе данных стандартными средствами PHP.
  2. При выборе какого-либо кода дискретного сигнала в выпадающем списке, происходит событие change у данного элемента и срабатывает функция showPeriod(str), посылающая аяксовый GET-запрос к php-странице getperiod.php с передачей параметра в виде выбранного кода. Результат вносится в выпадающий список периодов «с» и «по».
  3. При нажатии на кнопку «Готовый отчет» срабатывает функция openJasper(), с помощью которой отправляется POST-запрос в JasperServer со всеми выбранными параметрами в выпадающих списках. Обработчик запроса – страница репозитория JasperServer

Провайдер:

http://www.rusonyx.ru/vps/index.php

Тарифный план VPS Profi