<!DOCTYPE html>
<html lang="en">
<head>
<meta name="description" content="ASTERIX WEB PAGE" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href='http://fonts.googleapis.com/css?family=Bitter|PT+Sans+Caption|Open+Sans' rel='stylesheet' type='text/css'>
<script src="/webui/static/js/jquery.min.js"></script>

<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.no-icons.min.css" rel="stylesheet">
<link href="//netdna.bootstrapcdn.com/font-awesome/3.1.1/css/font-awesome.css" rel="stylesheet">

<link href="/webui/static/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="/webui/static/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" />

<script src="/webui/static/js/bootstrap.min.js"></script>

<link href="/webui/static/css/style.css" rel="stylesheet" type="text/css" />

<script type="text/javascript">
$(document).ready(function(){

    $('#checkboxes-on').click(function() {
        $('#queryform :input').prop('checked', true);
        return false;    
    });

    $('#checkboxes-off').click(function() {
        $('form#queryform :input').removeAttr('checked');
        return false;    
    });

    $('#clear-query-button').click(function() {
        $("#qry").val('');
        return false;
    });

   $("form#queryform").submit(function() {
     $('#output-message').html("");
     $.post("/", $("form#queryform").serialize(), function(data) {

         var resultCount = data.match(/<h3>Results:<\/h3>/g);
         if (resultCount.length <= 1) {
            $('#output-message').html(data);       
         } else {
            var results = data.split('<h3>');
            var components = results.slice(1,results.length);
            var sections = components.length/resultCount.length;

            $('#output-message').html('');
            $('<div/>')
                .attr("class", "accordion")
                .attr("id", "output-organization")
                .appendTo('#output-message');

            for (var resSet = 0; resSet < resultCount.length; resSet++) {

                $('<div/>')
                    .attr("class","accordion-group")
                    .attr("id", "agroup"+resSet)
                    .appendTo("#output-organization");

                $('<div/>')
                    .attr("class","accordion-heading")
                    .html('<a class="accordion-toggle" data-toggle="collapse" data-parent="output-organization" href="#collapse' + resSet + '">Result #' + (resSet+1) + '</a>')
                    .appendTo("#agroup"+resSet);

                $('<div/>')
                    .attr("class", "accordion-body collapse in")
                    .attr("id", "collapse"+resSet)
                    .html('<div class="accordion-inner">')
                    .appendTo("#agroup"+resSet);

                for (var c = 0; c < sections; c++) {
                    var pos = resSet*sections + c;
                    $('#collapse' + resSet).append('<h3>' + components[pos]);
                }

                $('#collapse'+resSet).append('</div>');
            }
         }

         var contentString = data.toString();
         if (contentString.indexOf("<PRE>Duration") !== -1) {
            $("<div/>")
                .addClass("alert alert-success")
                .html("Success: Query Complete")
                .appendTo('#output-message');
         }
     });
     return false;
   });
});
</script>

<meta charset=utf-8 />
<title>AsterixDB Web Interface</title>
</head>

<body>
  <div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container">
        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </a>

        <!-- Temporary logo placeholder -->
        <!-- <a class="brand" href="#"><img src="/webui/static/img/finalasterixlogo.png"></a> -->
        <a class="brand" href="#"><img src="http://db.tt/J1MTCdKs"></a>
        
        <div class="nav-collapse collapse">
          <ul class="nav">
            <li><a href="http://code.google.com/p/asterixdb/source/browse/" target="_blank">Open source<i class="icon-external-link"></i></a></li>
            <li><a href="http://code.google.com/p/asterixdb/issues/list" target="_blank">File issues<i class="icon-external-link"></i></a></li>
            <li><a href="https://groups.google.com/forum/?fromgroups#!forum/asterixdb-userst" target="_blank">Contact<i class="icon-external-link"></i></a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>
  </div>

  <div class="content">
    <div class="container">
      <div class="row-fluid">

        <div class="span6">

          <form id="queryform" class="form-horizontal" method="post">
            <div style="margin-bottom: 1em;">
              <label class="query">Query</label>
              <textarea rows="10" id="qry" name="query" class="query" value="%s" placeholder="Type your AQL query ..."></textarea>
              <button id="clear-query-button" style="float:right;" class="btn">Clear Query</button>
            </div>
            
          <div class="btn-group">
            <button id="checkboxes-on" class="btn">Select All Options</button>
            <button id="checkboxes-off" class="btn">Clear All Options</button>
          </div>

            <div>
              <label class="checkbox"><input type="checkbox" class="btn" checked="checked" name="print-expr-tree" value="true" /> Print parsed expressions</label>
              <label class="checkbox"><input type="checkbox" checked="checked" name="print-rewritten-expr-tree" value="true" /> Print rewritten expressions</label>
              <label class="checkbox"><input type="checkbox" checked="checked" name="print-logical-plan" value="true" /> Print logical plan</label>
              <label class="checkbox"><input type="checkbox" checked="checked" name="print-optimized-logical-plan" value="true" /> Print optimized logical plan</label>
              <label class="checkbox"><input type="checkbox"
                  checked="checked" name="print-job" value="true" /> Print Hyracks job</label>
            </div>
            <button type="submit" id="run-btn" class="btn btn-custom-darken">Run</button>
          </form>
       </div>

       <div class="span6">
         <div class="output">
           <label class="heading">Output</label>
           <div id="output-message" class="message">
           </div>
         </div>
       </div>

      </div>
    </div>
</div>
  <div class="footer">
    <section class="line"><hr></section>
    <section class="content">
      <section class="left">
      </section>
      <section class="right">
        &copy; Copyright 2013 University of California, Irvine
      </section>
    </section>
  </div>
</body>
</html>

