<!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="../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/svgUtil.js"></script>
    <script type="text/javascript" src="../app/fw/svg/glyph.js"></script>
    <script type="text/javascript" src="../app/fw/svg/glyphData.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>