<!DOCTYPE html>
<!--
  ~ Copyright 2015 Open Networking Laboratory
  ~
  ~ Licensed 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 -- Displaying icons with Angular test page
  -->

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Show Icons Angular</title>

    <script type="text/javascript" src="../tp/angular.js"></script>
    <script type="text/javascript" src="../tp/angular-route.js"></script>

    <script type="text/javascript" src="../tp/d3.js"></script>
    <script type="text/javascript" src="../tp/jquery-2.1.1.min.js"></script>

    <script type="text/javascript" src="../app/fw/util/util.js"></script>
    <script type="text/javascript" src="../app/fw/util/fn.js"></script>
    <script type="text/javascript" src="../app/fw/util/theme.js"></script>
    <script type="text/javascript" src="../app/fw/util/keys.js"></script>

    <script type="text/javascript" src="../app/fw/svg/svg.js"></script>
    <script type="text/javascript" src="../app/fw/svg/glyph.js"></script>
    <script type="text/javascript" src="../app/fw/svg/icon.js"></script>
    <script type="text/javascript" src="../app/fw/svg/geodata.js"></script>
    <script type="text/javascript" src="../app/fw/svg/map.js"></script>
    <script type="text/javascript" src="../app/fw/svg/zoom.js"></script>

    <script type="text/javascript" src="show-icons-test.js"></script>

    <link rel="stylesheet" href="../app/common.css">
    <link rel="stylesheet" href="../app/fw/svg/icon.css">

    <style>
        html,
        body {
            background-color: #ddf;
            font-family: Arial, Helvetica, sans-serif;
            font-size: 9pt;
        }

        h2 {
            color: darkred;
        }

        svg .glyph {
            stroke: none;
            fill: #123456;
            fill-rule: evenodd;
        }

        svg.embeddedGlyph .glyph rect {
            fill: #fff
        }

    </style>

</head>
<!-- outline for using a controller in Angular -->
<body class="light" ng-app="showIconsTest" ng-controller="OvShowIconsTest as ctrl">
    <h2>Displaying Icons and Glyphs with Angular</h2>
    <div id="showIcons">
        <p>Show all icons in icon library:<br></p>
    </div>
    <hr>
    <div id="showGlyphs">
        <p>Show all glyphs in glyph library:</p>
        <p>(Displays checkMark and xMark too, because icons are built on top
            of glyphs.)</p>
    </div>



</body>
</html>