<?php
require_once 'excelMap.class.php';
/**
* make a configuration file
*/
if (! is_file('config.ini')) require_once 'makeconfig.php';
$ini=parse_ini_file('config.ini', TRUE);
//setup excel cell filter
$dir=dirname($_SERVER['SCRIPT_NAME']);
$error=array();
/**
* debug_panel html markup
* @param unknown_type $title
* @param unknown_type $json
* @return string
*/
function debug_panel($title, $json){
$dump=print_r(json_decode($json,true),true);
return <<<h
<div class="col-md-4 panel panel-default">
<div class="panel-heading">$title</div>
<div class="panel-body">
$json<hr/><pre>$dump</pre>
</div>
</div>
</div>
h
;
}
/**
* debug data table html
* @param unknown_type $title
* @param unknown_type $data
* @param unknown_type $check
* @return string
*/
function debug_data_table($title,$data=array(),$check=array()){
$tbl=<<<t
<div class="col-md-4 panel panel-default">
<div class="panel-heading">$title</div>
<div class="panel-body">
<table class="table">
<tr><th>Excel</th><th>JSON</th><th>Data</th></tr>
t
;
foreach ($data as $k => $v) {
$x="*";
if (array_key_exists($k, $check)) {
$x = $check[$k];
} elseif (array_key_exists($v, $check)) {
$x = $check[$v];
}
if ($x != '*') {
$tbl .= <<<t
<tr><td>$k</td><td>$v</td><td>$x</td></tr>
t
;
}
}
$tbl.=<<<t
</table>
</div>
</div>
</div>
t
;
return $tbl;
}
/**
* make nav bar of all configured excel sheets mapped to a uri
* @param unknown_type $b
* @param unknown_type $ini
* @return string
*/
function make_nav($b, $ini){
$n=<<<h
<nav class="navbar navbar-default" role="navigation">
<div class="navbar-header"<a class="navbar-brand" href="#">$b</a></div>
<div class="collapse navbar-collapse" id="excel_nav">
<ul class="nav navbar-nav">
h
;
//print out link list
$srv=$_SERVER['SCRIPT_NAME'];
foreach ($ini as $k => $v)
$n.=<<<h
<li><a href="$srv$k" >$k</a></li>
h
;
$n.=<<<h
</ul>
</div>
</nav>
h
;
return $n;
}
// ==============================================================
//if not path_info, then stop, nothing more can be done
if ( array_key_exists('PATH_INFO', $_SERVER)) {
$path=$_SERVER['PATH_INFO'];
// print error page if path is not configured
if (! array_key_exists($path, $ini))
$error[]='<div class="alert alert-danger">ERROR: 404 Page not found: '.$path.'</div>';
//check for file,send error
if (! array_key_exists('file', $ini[$path]) || ! is_file($ini[$path]['file']))
$error[]='<div class="alert alert-danger">ERROR: file is not configured or not found for: '.$path.'</div>';
$file=$ini[$path]['file'];
if (! array_key_exists('sheet', $ini[$path]))
$error[]='<div class="alert alert-danger">ERROR: sheet is not configured for: '.$path.'</div>';
$sheet=$ini[$path]['sheet'];
} else {
$path=false;
$sheet=false;
$file=false;
}
?><!DOCTYPE html>
<html>
<head>
<title>Excel2JSON Debug viewer webpage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="<?php echo $dir; ?>/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="<?php echo $dir; ?>/dist/css/bootstrap-theme.min.css" />
<script src="<?php echo $dir; ?>/dist/js/jquery.min.js"></script>
<script src="<?php echo $dir; ?>/dist/js/bootstrap.min.js"></script>
</head>
<body>
<?php
echo make_nav('Excel2JSON', $ini);
if (count($error) > 0){
foreach ($error as $er) echo $er;
} else {
//load excel class to process
$e=new excel2JSON();
$e->set_excel($file, 'false');
$e->load_sheet($sheet);
$e->load_sheet_data();
$e->load_config('config.ini', $path);
$cells_title='Filtered Cells | excel2JSON::filter_cells()';
$cells=json_encode($e->filter_cells());
$data_title='Filtered Data | excel2JSON::filter_data()';
$data=json_encode($e->filter_data());
$cells2_title='All Cells | excel2JSON::get_loaded_workbook_cells()';
$cells2=json_encode($e->get_loaded_workbook_cells());
$data2_title='All Data | excel2JSON::get_loaded_workbook_data()';
$data2=json_encode($e->get_loaded_workbook_data());
$rows_title='All Rows | excel2JSON::get_loaded_workbook_rows()';
$rows=json_encode($e->get_loaded_workbook_rows());
//////////
?>
<div class="row">
<?php
if (count($e->filter_cells()) > 0) echo debug_panel($cells_title, $cells);
if (count($e->filter_data()) > 0) echo debug_panel($data_title, $data);
?>
</div>
<div class="row">
<?php
echo debug_panel($cells2_title, $cells2);
echo debug_panel($data2_title, $data2);
echo debug_panel($rows_title,$rows);
?>
</div>
<?php
}
?>
</body>
</html>
|