<!DOCTYPE html>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!--
  ONOS UI - single page web app

  @author Simon Hunt
  -->
<html>
<head>
    <meta charset="utf-8">
    <title>ONOS GUI</title>

    <!--TODO: use the minified version of d3, once debugging is complete -->
    <script src="libs/d3.js"></script>
    <script src="libs/jquery-2.1.1.min.js"></script>

    <link rel="stylesheet" href="base.css">
    <link rel="stylesheet" href="onos.css">

    <script src="geometry.js"></script>
    <script src="onos.js"></script>

</head>
<body>
    <div id="frame">
        <div id="mast">
            <img id="logo" src="img/onos-logo.png" width="60" height="38">
            <span class="title">Open Network Operating System</span>
            <span id="displayModes" class="right">
                <span id="showAll" class="radio active">All Layers</span>
                <span id="showPkt" class="radio">Packet Only</span>
                <span id="showOpt" class="radio">Optical Only</span>
            </span>
        </div>
        <div id="view"></div>
    </div>

    <!-- Initialize the UI...-->
    <script type="text/javascript">
        var ONOS = $.onos({note: "config, if needed"});
    </script>

    <!-- include module files-->
    <!-- + mast.js-->
    <!-- + nav.js-->
    <!-- + .... application views-->

    <!-- for now, we are just bootstrapping the network visualization-->
    <script src="network.js" type="text/javascript"></script>

    <!-- finally, build the UI-->
    <script type="text/javascript">
        $(ONOS.buildUi);
    </script>

</body>
</html>
