<?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>
 
 
 |