ONOS-5404: Clean up webapp/_dev directory.

Change-Id: Id3a620923b43ec97b5d6f4b7a8e8e1bf6ddf0a4a
This commit is contained in:
Simon Hunt 2016-11-16 13:10:49 -08:00
parent b6a2f78c05
commit 7313d1ff5f
49 changed files with 4 additions and 3540 deletions

View File

@ -1,78 +0,0 @@
<!DOCTYPE html>
<!--
~ Copyright 2016-present 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 -- Display a glyph 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/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="big-icon.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;
}
/* foreground color */
svg .glyph {
stroke: none;
fill: #246;
fill-rule: evenodd;
}
/* background color */
svg.embeddedGlyph .glyph rect {
fill: #fff
}
</style>
</head>
<!-- outline for using a controller in Angular -->
<body class="light" ng-app="showGlyph" ng-controller="OvShowGlyph as ctrl">
<h2>Display a Glyph</h2>
<div id="showGlyphs"></div>
<svg><defs></defs></svg>
</body>
</html>

View File

@ -1,159 +0,0 @@
/*
* Copyright 2016-present 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 GUI -- Test code for displaying custom glyphs
*/
(function () {
'use strict';
// assuming the glyph is a square
// div is a D3 selection of the <DIV> element into which icon should load
// size is the size of the glyph
// id is the symbol id
function createGlyph(div, size, id) {
var dim = size || 20,
texty = 30,
gid = id || 'unknown',
rx = 4,
svgCls = 'embeddedGlyph',
svg, g;
svg = div.append('svg').attr({
'class': svgCls,
width: dim,
height: dim + texty,
viewBox: '0 0 ' + dim + ' ' + dim
});
g = svg.append('g').attr({
'class': 'glyph'
});
g.append('rect').attr({
width: dim,
height: dim,
rx: rx
});
g.append('use').attr({
width: dim,
height: dim,
'class': 'glyph',
'xlink:href': '#' + gid
});
g.append('text')
.attr({
'text-anchor': 'left',
y: '1em',
x: 0,
transform: 'translate(0, ' + dim + ')'
})
.style('fill', '#800')
.text(id);
}
var clock = 'M92.9,61.3a39,39,0,1,1-39-39,39,39,0,0,1,39,39h0Z' +
'M44,19.3c-4.4-7.4-14.8-9.3-23.2-4.2S9.1,30.2,13.5,37.6m80.8,0' +
'c4.4-7.4,1.2-17.5-7.3-22.5s-18.8-3.2-23.3,4.2m-8.4,1.8V16.5h4.4' +
'V11.9H48.2v4.6h4.6v4.6M51.6,56.4H51.5' +
'a5.4,5.4,0,0,0,2.4,10.3,4.7,4.7,0,0,0,4.9-3.1H74.5' +
'a2.2,2.2,0,0,0,2.4-2.2,2.4,2.4,0,0,0-2.4-2.3H58.8' +
'a5.3,5.3,0,0,0-2.5-2.6H56.2V32.9' +
'a2.3,2.3,0,0,0-.6-1.7,2.2,2.2,0,0,0-1.6-.7,2.4,2.4,0,0,0-2.4,2.4' +
'h0V56.4M82.2,91.1l-7.1,5.3-0.2.2-1.2,2.1a0.6,0.6,0,0,0,.2.8' +
'h0.2c2.6,0.4,10.7.9,10.3-1.2m-60.8,0c-0.4,2.1,7.7,1.6,10.3,1.2' +
'h0.2a0.6,0.6,0,0,0,.2-0.8l-1.2-2.1-0.2-.2-7.1-5.3';
var clocks = "M65.7,26.6A34.7,34.7,0,0,0,31,61.5c0,19,16,35.2,35.5,34.8" +
"a35.1,35.1,0,0,0,34-35.1A34.7,34.7,0,0,0,65.7,26.6Z" +
"m8.6-2.7,27.4,16.4a31.3,31.3,0,0,0,1.2-3.1c1.3-5,0-9.4-3.2-13.2" +
"a16.9,16.9,0,0,0-16-6.2A12.8,12.8,0,0,0,74.3,23.9Z" +
"M57,23.9L56.4,23a12.9,12.9,0,0,0-10.7-5.5,16.9,16.9,0,0,0-15.1,8," +
"14.1,14.1,0,0,0-2.3,11.2,10.4,10.4,0,0,0,1.4,3.5Z" +
"M26.9,31.6A33.7,33.7,0,0,0,9.7,59.3C9.2,72.8,14.9,83.1,26,90.7l1-1.9" +
"a0.6,0.6,0,0,0-.2-1A34.2,34.2,0,0,1,15.5,50.4" +
"a33.8,33.8,0,0,1,10.8-16,1.2,1.2,0,0,0,.5-0.6" +
"C26.9,33.1,26.9,32.4,26.9,31.6Z" +
"m1,8.1C14.6,55.9,19.2,81,37.6,91.1l1-2.3-2.8-2.4" +
"C26.4,77.6,22.9,66.7,25.1,54" +
"a31.6,31.6,0,0,1,4.2-10.8,0.8,0.8,0,0,0,.1-0.6Z" +
"M12,38.4a11.2,11.2,0,0,1-1.4-5.8A13.7,13.7,0,0,1,14.3,24" +
"a17.3,17.3,0,0,1,10.5-5.7h0.4C19,18,13.7,20,9.9,25.2" +
"a14.5,14.5,0,0,0-3,11,11.2,11.2,0,0,0,1.6,4.3Z" +
"m5.5-2.7L21,33" +
"a1,1,0,0,0,.3-0.7,14,14,0,0,1,3.9-8.6,17.3,17.3,0,0,1,10.2-5.4" +
"l0.6-.2C24.4,17.3,16.4,27,17.4,35.7Z" +
"M70.9,17.2H60.7v4.1h4v4.2H67V21.3h3.9V17.2Z" +
"M90.9,87.9l-0.5.3L86,91.5a7.9,7.9,0,0,0-2.6,3.1" +
"c-0.3.6-.2,0.8,0.5,0.9a27.9,27.9,0,0,0,6.8.2l1.6-.4" +
"a0.8,0.8,0,0,0,.6-1.2l-0.4-1.4Z" +
"m-50.2,0-1.8,6c-0.3,1.1-.1,1.4.9,1.7h0.7a26.3,26.3,0,0,0,7.2-.1" +
"c0.8-.1.9-0.4,0.5-1.1a8.2,8.2,0,0,0-2.7-3.1Z" +
"m-10.8-.4-0.2.6L28,93.5a0.9,0.9,0,0,0,.7,1.3,7.7,7.7,0,0,0,2.2.4" +
"l5.9-.2c0.5,0,.7-0.3.5-0.8a7.6,7.6,0,0,0-2.2-2.9Z" +
"m-11.3,0-0.2.7-1.6,5.4c-0.2.8-.1,1.2,0.7,1.4a8,8,0,0,0,2.2.4l6-.2" +
"c0.4,0,.7-0.3.5-0.6a7.1,7.1,0,0,0-1.9-2.7l-2.8-2.1Z" +
"M65.7,26.6m-2,30.3a4.4,4.4,0,0,0-2.2,2,4.8,4.8,0,0,0,4,7.2," +
"4.1,4.1,0,0,0,4.3-2.3,0.8,0.8,0,0,1,.8-0.5H84.1" +
"a1.9,1.9,0,0,0,2-1.7,2.1,2.1,0,0,0-1.7-2.2H70.8" +
"a1,1,0,0,1-1-.5,6.4,6.4,0,0,0-1.5-1.6,1.1,1.1,0,0,1-.5-1" +
"q0-10.1,0-20.3a1.9,1.9,0,0,0-2.2-2.1,2.1,2.1,0,0,0-1.8,2.2" +
"q0,6.1,0,12.2C63.7,51.2,63.7,54,63.7,56.9Z";
var smiley = "M97,20.3A9.3,9.3,0,0,0,87.7,11H24.3A9.3,9.3,0,0,0,15,20.3" +
"V64.7A9.3,9.3,0,0,0,24.3,74H87.7A9.3,9.3,0,0,0,97,64.7V20.3Z" +
"M54.5,19.1A24.3,24.3,0,1,1,30.2,43.3,24.3,24.3,0,0,1,54.5,19.1Z" +
"M104.7,94.9L97.6,82.8c-0.9-1.6-3.7-2.8-6.1-2.8H18.9" +
"c-2.5,0-5.2,1.3-6.1,2.8L5.6,94.9C4.3,97.1,5.7,99,8.9,99h92.6" +
"C104.6,99,106.1,97.1,104.7,94.9ZM54.5,56.5" +
"c-7.3,0-17.2-8.6-13.3-7.4,13,3.9,13.7,3.9,26.5,0" +
"C71.7,48,61.9,56.6,54.5,56.6Z" +
"M38,33.9C38,32,40.2,31,42.1,31h7.3" +
"a3.2,3.2,0,0,1,3.1,1.7,13.1,13.1,0,0,1,2.1-.3,12.9,12.9,0,0,1,2.1.4" +
"A3.3,3.3,0,0,1,59.7,31H67c1.9,0,4,1,4,2.9v3.2A4.4,4.4,0,0,1,67,41" +
"H59.7A4,4,0,0,1,56,37.1V33.9h0a4.4,4.4,0,0,0-1.6-.2l-1.5.2H53v3.2" +
"A4,4,0,0,1,49.4,41H42.1A4.4,4.4,0,0,1,38,37.1V33.9Z";
var glyphData = {
_viewbox: "0 0 110 110",
alarm: clock,
alarms: clocks,
smiley: smiley
};
angular.module('showGlyph', ['onosSvg'])
.controller('OvShowGlyph', ['$log', 'GlyphService',
function ($log, gs) {
var gDiv = d3.select('#showGlyphs'),
defs = d3.select('defs');
// register out-of-the-box glyphs
gs.init();
// register our custom glyphs
gs.registerGlyphSet(glyphData);
// load all defined glyphs into our <defs> element
gs.loadDefs(defs);
// choose a glyph to render
createGlyph(gDiv, 400, 'switch');
}]);
}());

View File

@ -1,145 +0,0 @@
<!DOCTYPE html>
<!--
~ Copyright 2016-present 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 -- Embedded checkmarks and xmarks in table page
-->
<html>
<head>
<meta charset="utf-8">
<title>Embedded Check and X Marks</title>
<script src="../tp/d3.js"></script>
<link rel="stylesheet" href="../app/common.css">
<style>
html,
body {
background-color: #fff;
font-family: Arial, Helvetica, sans-serif;
font-size: 9pt;
}
svg .icon .glyph {
stroke: none;
fill: white;
fill-rule: evenodd;
}
svg .icon.active {
fill: green;
}
svg .icon.inactive {
fill: darkred;
}
svg .icon rect {
stroke: white;
stroke-width: 3px;
}
</style>
</head>
<body class="light">
<!-- minimal framework to access glyphs library module -->
<script>
var libs = {};
var ONOS = { ui: { addLib: function (id, things) { libs[id] = things; }}};
</script>
<!-- Test HTML -->
<div>
<table class="summary-list">
<tr> <th></th> <th>Two</th> <th>Three</th> </tr>
<tr>
<td>
<div icon icon-id="active">
<!-- icon directive needs to inject the following structure -->
<!-- ------------------------------------------------ -->
<svg width="20" height="20" viewBox="0 0 50 50">
<g class="icon active">
<rect width="50" height="50" rx="10"></rect>
<use class="glyph" xlink:href="#checkmark" width="50" height="50"></use>
</g>
</svg>
<!-- ------------------------------------------------ -->
</div>
</td>
<td>Some text</td>
<td>Some text</td>
</tr>
<tr>
<td>
<div icon icon-id="inactive">
<!-- icon directive needs to inject the following structure -->
<!-- ------------------------------------------------ -->
<svg width="20" height="20" viewBox="0 0 50 50">
<g class="icon inactive">
<rect width="50" height="50" rx="10"></rect>
<use class="glyph" xlink:href="#xmark" width="50" height="50"></use>
</g>
</svg>
<!-- ------------------------------------------------ -->
</div>
</td>
<td>Some text</td>
<td>Some Other text</td>
</tr>
</table>
</div>
<!-- common definitions for other SVG elements to use -->
<svg width="0" height="0">
<defs>
<symbol id="checkmark" viewBox="0 0 10 10">
<path d="M2.644,4.531c0,0,0.719-0.422,1.172,0.281l1.047,1.797c0,0,
2.675-5.449,2.781-5.719c0,0,0.547-0.859,1.359-0.094
c0,0,0.484,0.484,0,1.297S6.775,7.305,5.557,9.211c0,0-0.413,0.461-1.194,
0.086S2.222,5.375,2.222,5.375S2.159,4.734,2.644,4.531z">
</path>
</symbol>
<symbol id="xmark" viewBox="0 0 10 10">
<path d="M8.967,7.196C8.172,6.852,7.37,6.058,6.672,5.189c0.385-0.463,
0.665-0.834,0.764-1.008C7.825,3.5,9.382,1.553,8.068,1.067
C6.754,0.58,6.585,1.723,6.585,1.723C6.41,2.129,5.955,2.722,5.386,3.371C4.865,
2.544,4.541,1.918,4.541,1.918
S3.812,0.24,2.863,0.654C1.915,1.067,2.304,2.283,2.304,2.283c0.349,1.122,
0.834,2.082,1.368,2.898
C2.456,6.396,1.331,7.415,1.331,7.415S0.82,7.829,0.844,8.072C0.869,8.315,
0.917,9.556,2.4,9.067
C3.084,8.843,4.122,7.933,5.083,6.95c1.306,1.348,2.498,1.949,2.498,1.949s0.535,
0.51,1.386-0.244
C9.819,7.902,8.967,7.196,8.967,7.196z">
</path>
</symbol>
</defs>
</svg>
</body>
</html>

View File

@ -1,130 +0,0 @@
<!DOCTYPE html>
<!--
~ Copyright 2016-present 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 -- Embedded icon test page
-->
<html>
<head>
<meta charset="utf-8">
<title>Embedded Icons</title>
<script src="../tp/d3.js"></script>
<link rel="stylesheet" href="../app/common.css">
<style>
html,
body {
background-color: #fff;
font-family: Arial, Helvetica, sans-serif;
font-size: 9pt;
}
svg .icon .glyph {
stroke: none;
fill: white;
fill-rule: evenodd;
}
svg .icon.active {
fill: green;
}
svg .icon.inactive {
fill: darkred;
}
svg .icon rect {
stroke: black;
stroke-width: 1px;
}
</style>
</head>
<body class="light">
<!-- minimal framework to access glyphs library module -->
<script>
var libs = {};
var ONOS = { ui: { addLib: function (id, things) { libs[id] = things; }}};
</script>
<!-- Test HTML -->
<div>
<table class="summary-list">
<tr> <th></th> <th>Two</th> <th>Three</th> </tr>
<tr>
<td>
<div icon icon-id="active">
<!-- icon directive needs to inject the following structure -->
<!-- ------------------------------------------------ -->
<svg width="20" height="20" viewBox="0 0 50 50">
<g class="icon active">
<rect width="50" height="50" rx="4"></rect>
<use class="glyph" xlink:href="#ui" width="50" height="50"></use>
</g>
</svg>
<!-- ------------------------------------------------ -->
</div>
</td>
<td>Some text</td>
<td>Some text</td>
</tr>
<tr>
<td>
<div icon icon-id="inactive">
<!-- icon directive needs to inject the following structure -->
<!-- ------------------------------------------------ -->
<svg width="20" height="20" viewBox="0 0 50 50">
<g class="icon inactive">
<rect width="50" height="50" rx="4"></rect>
<use class="glyph" xlink:href="#ui" width="50" height="50"></use>
</g>
</svg>
<!-- ------------------------------------------------ -->
</div>
</td>
<td>Some text</td>
<td>Some Other text</td>
</tr>
</table>
</div>
<!-- common definitions for other SVG elements to use -->
<svg width="0" height="0">
<defs>
<symbol id="ui" viewBox="0 0 10 10">
<path d="M2,2.5a.5,.5,0,0,1,.5-.5h5
a.5,.5,0,0,1,.5,.5v3a.5,.5,0,0,1-.5,.5h-5a.5,
.5,0,0,1-.5-.5zM2.5,2.8a.3,.3,0,0,1,.3-.3
h4.4a.3,.3,0,0,1,.3,.3v2.4a.3,.3,0,0,1-.3,
.3h-4.4a.3,.3,0,0,1-.3-.3zM2,6.55h6l1,1.45h-8z">
</path>
</symbol>
</defs>
</svg>
</body>
</html>

View File

@ -1,146 +0,0 @@
<!DOCTYPE html>
<!--
~ Copyright 2016-present 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 -- Glyphs library test page (old version)
-->
<html>
<head>
<meta charset="utf-8">
<title>Glyphs</title>
<script src="../tp/d3.js"></script>
<style>
html,
body {
background-color: #ddf;
font-family: Arial, Helvetica, sans-serif;
font-size: 9pt;
}
svg {
background-color: #fff;
}
svg .glyph {
stroke: none;
fill: black;
fill-rule: evenodd;
}
svg .icon text {
text-anchor: middle;
font-size: 5pt;
fill: green;
stroke: none;
}
</style>
</head>
<body>
<!-- minimal framework to access glyphs library module -->
<script>
var libs = {};
var ONOS = { ui: { addLib: function (id, things) { libs[id] = things; }}};
</script>
<!-- import the glyphs library -->
<script src="../glyphs.js"></script>
<svg></svg>
<!-- code to display the glyphs in the library -->
<script>
(function () {
var w = 1000,
h = 800,
vb = '0 0 ' + w + ' ' + h;
var svg = d3.select('svg')
.attr({ width: w, height: h, viewBox: vb });
// create definitions element...
var defs = svg.append('defs');
// create scaling group
var grp = svg.append('g')
.attr('transform', 'translate(20,20)scale(2)');
var mag = svg.append('g')
.attr('transform', 'translate(20,20)scale(12)');
function translate(loc) {
return 'translate(' + loc[0] + ',' + loc[1] +')';
}
function icon(what, id, loc, color, bg, size) {
var i = '#' + id,
c = color || 'black',
b = bg || '#eef',
z = size || 40,
g;
g = what.append('g')
.attr({ 'class': 'icon', transform: translate(loc) });
g.append('rect')
.attr({ width: z, height: z, rx: 4 })
.style('fill', b)
.style('stroke', 'black')
.style('stroke-width', 0.5);
g.append('use')
.attr({ 'class': 'glyph', width: z, height: z, 'xlink:href': i })
.style('fill', c);
if (id !== 'bird') {
g.append('text')
.text(id)
.attr({ x: z / 2, y: z + 8 })
}
}
// import glyphs...
libs.glyphs.loadDefs(defs);
// bird, top right corner
icon(svg, 'bird', [830,10], '#800', '#ecc', 160);
// show icons...
icon(grp, 'unknown', [ 0, 0]);
icon(grp, 'node', [ 50, 0]);
icon(grp, 'switch', [100, 0]);
icon(grp, 'roadm', [150, 0]);
icon(grp, 'endstation', [200, 0]);
icon(grp, 'router', [250, 0]);
icon(grp, 'bgpSpeaker', [300, 0]);
icon(grp, 'uiAttached', [350, 0]);
icon(grp, 'otn', [400, 0]);
icon(grp, 'chain', [ 0, 60]);
icon(grp, 'crown', [ 50, 60]);
// icon(mag, 'crown', [20, 15], 'rgba(240,120,120,1)', 'transparent');
// more goodies to come soon.....
})();
</script>
</body>
</html>

View File

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<body ng-app>
<input type="text"
ng-model="name"
placeholder="Enter your name">
<h1>Hello <span ng-bind="name"></span></h1>
<!-- Note alternate syntax for same thig... -->
<h1>Hello {{ name }}</h1>
<script src="../../tp/angular.js"></script>
</body>
</html>

View File

@ -1,16 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Hello AngularJS</title>
<script src="../../tp/angular.js"></script>
</head>
<body>
Hello {{1 + 1}}nd time AngularJS
<script type="text/javascript">
angular.module('notesApp', []);
</script>
</body>
</html>

View File

@ -1,20 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Hello AngularJS</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl">
Hello {{1 + 1}}nd time AngularJS
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
// controller specific code here
console.log('MainCtrl has been created');
}]);
</script>
</body>
</html>

View File

@ -1,21 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
{{ctrl.helloMsg}} AngularJS.
<br/>
{{ctrl.goodbyeMsg}} AngularJS
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
this.helloMsg = 'Hello ';
var goodbyeMsg = 'Goodbye ';
}]);
</script>
</body>
</html>

View File

@ -1,26 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
{{ctrl.message}} AngularJS.
<button ng-click="ctrl.changeMessage()">
Change Message
</button>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.message = 'Hello';
self.changeMessage = function () {
self.message = 'Goodbye'
};
}]);
</script>
</body>
</html>

View File

@ -1,29 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<div ng-repeat="note in ctrl.notes">
<span class="label"> {{note.label}} </span>
<!--<span class="status" ng-bind="note.done"></span>-->
<span class="status"> {{note.done}} </span>
</div>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.notes = [
{id: 1, label: 'First note', done: false},
{id: 2, label: 'Second note', done: false},
{id: 3, label: 'Done note', done: true},
{id: 4, label: 'Last note', done: false}
]
}]);
</script>
</body>
</html>

View File

@ -1,52 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<style>
.done {
background-color: limegreen;
}
.pending {
background-color: yellow;
}
.assignee {
color: red;
font-weight: bold;
}
</style>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<div ng-repeat="note in ctrl.notes"
ng-class="ctrl.getNoteClass(note.done)">
<span class="label"> {{note.label}} </span>
<span class="assignee"
ng-show="note.assignee"
ng-bind="note.assignee">
</span>
</div>
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function () {
var self = this;
self.notes = [
{id: 1, label: 'First note', done: false, assignee: 'Simon'},
{id: 2, label: 'Second note', done: false},
{id: 3, label: 'Done note', done: true},
{id: 4, label: 'Last note', done: false, assignee: 'Fred'}
];
self.getNoteClass = function (status) {
return {
done: status,
pending: !status
};
};
}
]);
</script>
</body>
</html>

View File

@ -1,28 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<div ng-repeat="(author, note) in ctrl.notes">
<span class="label"> {{note.label}} </span>
<span class="author" ng-bind="author"></span>
</div>
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function () {
var self = this;
self.notes = {
simon: { id: 1, label: 'First note', done: false},
Thomas: { id: 3, label: 'Finished third note', done: true},
alice: { id: 2, label: 'Second note', done: false}
};
}
]);
</script>
</body>
</html>

View File

@ -1,42 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<div ng-repeat="note in ctrl.notes">
<div>First element: {{$first}}</div>
<div>Middle element: {{$middle}}</div>
<div>Last element: {{$last}}</div>
<div>Index of element: {{$index}}</div>
<div>At even position: {{$even}}</div>
<div>At odd position: {{$odd}}</div>
<span class="label"> {{note.label}} </span>
<span class="status"> {{note.done}} </span>
<br/><br/>
</div>
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function () {
var self = this;
self.notes = [
{id: 1, label: 'First note', done: false},
{id: 2, label: 'Second note', done: false},
{id: 3, label: 'Done note', done: true},
{id: 4, label: 'Last note', done: false}
];
}
]);
</script>
</body>
</html>

View File

@ -1,58 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<button ng-click="ctrl.changeNotes()">Change Notes</button>
<br/>
DOM Elements change at every click
<div ng-repeat="note in ctrl.notes1">
{{note.$$hashKey}}
<span class="label"> {{note.label}} </span>
<span class="author"> {{note.done}} </span>
</div>
<br/>
DOM Elements are reused at every click
<div ng-repeat="note in ctrl.notes2 track by note.id">
{{note.$$hashKey}}
<span class="label"> {{note.label}} </span>
<span class="author"> {{note.done}} </span>
</div>
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function () {
var self = this;
var notes = [
{id: 1, label: 'First note', done: false, someRandom: 31431},
{id: 2, label: 'Second note', done: false},
{id: 3, label: 'Finished third note', done: true}
];
self.notes1 = angular.copy(notes);
self.notes2 = angular.copy(notes);
self.changeNotes = function () {
notes = [
{id: 1, label: 'Changed note', done: false, someRandom: 4242},
{id: 2, label: 'Second note', done: false},
{id: 3, label: 'Finished third note', done: true}
];
self.notes1 = angular.copy(notes);
self.notes2 = angular.copy(notes);
}
}
]);
</script>
</body>
</html>

View File

@ -1,38 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<table>
<tr ng-repeat-start="note in ctrl.notes">
<td>{{note.label}}</td>
</tr>
<tr ng-repeat-end>
<td>Done: {{note.done}}</td>
</tr>
</table>
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function () {
var self = this;
self.notes = [
{id: 1, label: 'First note', done: false},
{id: 2, label: 'Second note', done: false},
{id: 3, label: 'Finished third note', done: true}
];
}
]);
</script>
</body>
</html>

View File

@ -1,28 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<input type="text" ng-model="ctrl.username"/>
You typed {{ctrl.username}}
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function () {
var self = this;
self.username = 'nothing';
}
]);
</script>
</body>
</html>

View File

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<input type="text" ng-model="ctrl.username"/>
<input type="password" ng-model="ctrl.password"/>
<button ng-click="ctrl.change()">Change values</button>
<button ng-click="ctrl.submit()">Submit</button>
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function () {
var self = this;
self.change = function () {
self.username = 'changed';
self.password = 'password';
};
self.submit = function () {
console.log('user clicked submit with ',
self.username, self.password);
};
}
]);
</script>
</body>
</html>

View File

@ -1,45 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<!--
- Note, using a form has the advantage of reacting to RETURN triggering
- the submit, as well as pressing the submit button.
-->
<form ng-submit="ctrl.submit()">
<input type="text" placeholder="username" ng-model="ctrl.user.username"/>
<input type="password" placeholder="password" ng-model="ctrl.user.password"/>
<input type="submit" value="Submit"/>
<p></p>
<textarea cols="60" rows="5" ng-model="ctrl.user.notes" placeholder="Notes">
</textarea>
<p>
NOTES:
<div>
{{ctrl.user.notes}}
</div>
</p>
</form>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.submit = function () {
console.log('User clicked submit with ', self.user);
};
}]);
</script>
</body>
</html>

View File

@ -1,44 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<form ng-submit="ctrl.submit1()">
<input type="text" placeholder="username" ng-model="ctrl.username"/>
<input type="password" placeholder="password" ng-model="ctrl.password"/>
<input type="submit" value="Submit"/>
</form>
<!-- Better way of structuring the form data -->
<form ng-submit="ctrl.submit2()">
<input type="text" placeholder="username" ng-model="ctrl.user.username"/>
<input type="password" placeholder="password" ng-model="ctrl.user.password"/>
<input type="submit" value="Submit"/>
</form>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.submit1 = function () {
// create user object to send to server
var user = {username: self.username, password: self.password};
console.log('First submit: ', user);
};
self.submit2 = function () {
console.log('Second submit: ', self.user);
};
}]);
</script>
</body>
</html>

View File

@ -1,42 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
span {
background-color: #cce;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<form ng-submit="ctrl.submit()" name="myForm">
<input type="text"
placeholder="username"
ng-model="ctrl.user.username"
required
ng-minlength="4"/>
<input type="password"
placeholder="password"
ng-model="ctrl.user.password"
required/>
<input type="submit"
value="Submit"
ng-disabled="myForm.$invalid"/>
</form>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.submit = function () {
console.log('Submit: ', self.user);
};
}]);
</script>
</body>
</html>

View File

@ -1,53 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<form ng-submit="ctrl.submit()" name="myForm">
<input type="text"
name="uname"
placeholder="username"
ng-model="ctrl.user.username"
required
ng-minlength="4"/>
<span ng-show="myForm.uname.$error.required">
This is a required field
</span>
<span ng-show="myForm.uname.$error.minlength">
Minimum length required is 4
</span>
<span ng-show="myForm.uname.$invalid">
This field is invalid
</span>
<br/>
<input type="password"
name="pwd"
placeholder="password"
ng-model="ctrl.user.password"
required/>
<span ng-show="myForm.pwd.$error.required">
This is a required field
</span>
<br/>
<input type="submit"
value="Submit"
ng-disabled="myForm.$invalid"/>
</form>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.submit = function () {
console.log('Submit: ', self.user);
};
}]);
</script>
</body>
</html>

View File

@ -1,45 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<style>
.username.ng-valid {
background-color: greenyellow;
}
.username.ng-dirty.ng-invalid-required {
background-color: hotpink;
}
.username.ng-dirty.ng-invalid-minlength {
background-color: lightpink;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<form ng-submit="ctrl.submit()" name="myForm">
<input type="text"
class="username"
name="uname"
placeholder="username"
ng-model="ctrl.user.username"
required
ng-minlength="4"/>
<input type="submit"
value="Submit"
ng-disabled="myForm.$invalid"/>
</form>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.submit = function () {
console.log('Submit: ', self.user);
};
}]);
</script>
</body>
</html>

View File

@ -1,63 +0,0 @@
<!DOCTYPE html>
<html ng-app>
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<!-- no controller in this example -->
<body>
<form novalidate name="myForm">
<input type="text"
class="username"
name="uname"
ng-model="ctrl.user.username"
required=""
placeholder="Username"
ng-minlength="4"/>
<input type="password"
class="password"
name="pad"
ng-model="ctrl.user.password"
required=""
placeholder="Password"
required=""/>
<p/>
<ng-form name="profile">
<input type="text"
name="firstName"
ng-model="ctrl.user.profile.firstName"
placeholder="First Name"
required/>
<input type="text"
name="middleName"
ng-model="ctrl.user.profile.middleName"
placeholder="Middle Name"/>
<input type="text"
name="lastName"
ng-model="ctrl.user.profile.lastName"
placeholder="Last Name"
required/>
<input type="date"
name="dob"
placeholder="Date of birth"
ng-model="ctrl.user.profile.dob"/>
</ng-form>
<span ng-show="myForm.profile.$invalid">
Please fill out the profile information
</span>
<p/>
<input type="submit"
value="Submit"
ng-disabled="myForm.$invalid"/>
</form>
</body>
</html>

View File

@ -1,47 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<div>
<h2>What are your favorite sports?</h2>
<div ng-repeat="sport in ctrl.sports">
<label ng-bind="sport.label"></label>
<div>
With binding:
<input type="checkbox"
ng-model="sport.selected"
ng-true-value="'YES'"
ng-false-value="'NO'"/>
</div>
<div>
using ng-checked:
<input type="checkbox"
ng-checked="sport.selected === 'YES'"/>
</div>
<div>
Current state: {{sport.selected}}
</div>
<br/>
</div>
</div>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.sports = [
{label: 'Basketball', selected: 'YES'},
{label: 'Cricket', selected: 'NO'},
{label: 'Soccer', selected: 'NO'},
{label: 'Swimming', selected: 'YES'}
];
}]);
</script>
</body>
</html>

View File

@ -1,63 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<div>
<h2>Radio Buttons</h2>
<div ng-init="user.gender = 'female'">
<input type="radio"
name="gender"
ng-model="user.gender"
value="male"/>Male
<input type="radio"
name="gender"
ng-model="user.gender"
value="female"/>Female
</div>
</div>
<div>
<h2>Radio Buttons two</h2>
<div ng-init="user.gender2 = 'male'; otherGender = 'Other'">
<input type="radio"
name="gender2"
ng-model="user.gender2"
value="male"/>Male
<input type="radio"
name="gender2"
ng-model="user.gender2"
value="female"/>Female
<input type="radio"
name="gender2"
ng-model="user.gender2"
ng-value="otherGender"/>{{otherGender}}
</div>
</div>
<div>
<h2>Radio Buttons three</h2>
<div ng-repeat="ch in ctrl.choices">
<input type="radio"
name="choice"
ng-model="user.choice"
ng-value="ch"/>{{ch}}
</div>
</div>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.choices = ['foo', 'bar', 'baz', 'zoo', 'goo'];
}]);
</script>
</body>
</html>

View File

@ -1,41 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as ctrl">
<div>
<select ng-model="ctrl.selectedCountryId"
ng-options="c.id as c.label for c in ctrl.countries">
</select>
Selected Country ID: {{ctrl.selectedCountryId}}
</div>
<div>
<select ng-model="ctrl.selectedCountry"
ng-options="c.label for c in ctrl.countries track by c.id">
</select>
Selected Country: {{ctrl.selectedCountry}}
</div>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.countries = [
{label: 'UK', id: 1},
{label: 'USA', id: 2},
{label: 'France', id: 3},
{label: 'Italy', id: 4}
];
var first = self.countries[0];
self.selectedCountryId = first.id;
self.selectedCountry = first;
}]);
</script>
</body>
</html>

View File

@ -1,34 +0,0 @@
// ch05-01-need-for-service-app.js
angular.module('notesApp', [])
.controller('MainCtrl', [function () {
var self = this;
self.tab = 'first';
self.open = function (tab) {
self.tab = tab;
}
}])
.controller('SubCtrl', [function () {
var self = this;
self.list = [
{id: 0, label: 'Item 0'},
{id: 1, label: 'Item 1'}
];
self.add = function () {
var n = self.list.length;
self.list.push({
id: n,
label: 'Item ' + n
});
}
}]);
/*
NOTE: When we use controllers, they are instances that get created and
destroyed as we navigate across the application. Any state they
hold is temporary at best, and cannot be communicated to other
controllers.
That's why we'd use "services" instead.
*/

View File

@ -1,41 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<script src="ch05-01-need-for-service-app.js"></script>
</head>
<body ng-controller="MainCtrl as mainCtrl">
<h1> Hello Controllers! </h1>
<button ng-click="mainCtrl.open('first')">Open First</button>
<button ng-click="mainCtrl.open('second')">Open Second</button>
<div ng-switch on="mainCtrl.tab">
<div ng-switch-when="first">
<div ng-controller="SubCtrl as ctrl">
<h3>First Tab</h3>
<button ng-click="ctrl.add()">Add more items</button>
<ul>
<li ng-repeat="item in ctrl.list">
<span ng-bind="item.label"></span>
</li>
</ul>
</div>
</div>
<div ng-switch-when="second">
<div ng-controller="SubCtrl as ctrl">
<h3>Second Tab</h3>
<button ng-click="ctrl.add()">Add more items</button>
<ul>
<li ng-repeat="item in ctrl.list">
<span ng-bind="item.label"></span>
</li>
</ul>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,22 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-controller="MainCtrl as mainCtrl">
<h1> Hello Services! </h1>
<button ng-click="mainCtrl.logStuff()">Log something</button>
<script type="text/javascript">
angular.module('notesApp', [])
.controller('MainCtrl', ['$log', function ($log) {
var self = this;
self.logStuff = function () {
$log.log('The button was pressed');
};
}]);
</script>
</body>
</html>

View File

@ -1,43 +0,0 @@
<!DOCTYPE html>
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<script src="../../tp/angular.js"></script>
<script src="ch05-03-simple-angular-service.js"></script>
</head>
<body ng-controller="MainCtrl as mainCtrl">
<h1> Hello Controllers! </h1>
<button ng-click="mainCtrl.open('first')"> Open First </button>
<button ng-click="mainCtrl.open('second')"> Open Second </button>
<div ng-switch on="mainCtrl.tab">
<div ng-switch-when="first">
<div ng-controller="SubCtrl as ctrl">
<h3>First Tab</h3>
<button ng-click="ctrl.add()">Add item</button>
<ul>
<li ng-repeat="item in ctrl.list()">
<span ng-bind="item.label"></span>
</li>
</ul>
</div>
</div>
<div ng-switch-when="second">
<div ng-controller="SubCtrl as ctrl">
<h3>Second Tab</h3>
<button ng-click="ctrl.add()">Add item</button>
<ul>
<li ng-repeat="item in ctrl.list()">
<span ng-bind="item.label"></span>
</li>
</ul>
</div>
</div>
</div>
</body>
</html>

View File

@ -1,115 +0,0 @@
// ch05-03-simple-angular-service.js
// this example shows three different ways of defining our own "service"...
// use 'factory()' for functions/plain objects API
// use 'service()' for JS class object API
// use 'provider()' for configurable service API
// this is a service definition
function ItemServiceTwo() {
var items = [
{id: 0, label: 'Item 0'},
{id: 1, label: 'Item 1'}
];
this.list = function () {
return items;
};
this.add = function (item) {
items.push(item);
};
}
// this is a provider definition
function ItemServiceThree(optItems) {
var items = optItems || [];
this.list = function () {
return items;
};
this.add = function (item) {
items.push(item);
}
}
angular.module('notesApp', [])
// [provider] define item service as configurable provider
.provider('ItemServiceThree', function () {
var haveDefaultItems = true;
this.disableDefaultItems = function () {
haveDefaultItems = false;
};
// this function gets our dependencies..
this.$get = [function () {
var optItems = [];
if (haveDefaultItems) {
optItems = [
{id: 0, label: 'Item 0'},
{id: 1, label: 'Item 1'}
];
}
return new ItemServiceThree(optItems);
}];
})
// [provider] define configuration for provider
.config(['ItemServiceThreeProvider', function (ItemServiceThreeProvider) {
// to see how the provider can change configuration
// change the value of shouldHaveDefaults to true and
// try running the example
var shouldHaveDefaults = false;
// get configuration from server.
// set shouldHaveDefaults somehow
// assume it magically changes for now
if (!shouldHaveDefaults) {
ItemServiceThreeProvider.disableDefaultItems();
}
}])
// [service] define item service as a JS class
.service('ItemServiceTwo', [ItemServiceTwo])
// [factory] define item service factory
.factory('ItemService', [function () {
var items = [
{id: 0, label: 'Item 0'},
{id: 1, label: 'Item 1'}
];
return {
list: function () {
return items;
},
add: function (item) {
items.push(item);
}
};
}])
// ======================================================================
// define controllers...
.controller('MainCtrl', [function () {
var self = this;
self.tab = 'first';
self.open = function (tab) {
self.tab = tab;
};
}])
.controller('SubCtrl', ['ItemService', function (ItemService) {
var self = this;
self.list = function () {
return ItemService.list();
};
self.add = function () {
var n = self.list().length;
ItemService.add({
id: n,
label: 'Item ' + n
});
};
}]);

View File

@ -1,48 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Filters in Action</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-app="filtersApp">
<div ng-controller="FilterCtrl as ctrl">
<div>
Amount as a number: {{ctrl.amount | number}}
</div>
<div>
Total cost as a currency: {{ctrl.totalCost | currency}}
</div>
<div>
Total cost in GBP: {{ctrl.totalCost | currency:'GBP '}}
</div>
<div>
Shout: {{ctrl.name | uppercase}}
</div>
<div>
Whisper: {{ctrl.name | lowercase}}
</div>
<div>
Start time: {{ctrl.startTime | date:'medium'}}
</div>
<div>
as JSON: {{ctrl.struct | json}}
</div>
</div>
<script type="text/javascript">
angular.module('filtersApp', [])
.controller('FilterCtrl', [function () {
var self = this;
self.amount = 1024;
self.totalCost = 4906;
self.name = 'Onos Rocks!';
self.startTime = new Date().getTime();
self.struct = {
foo: 'bar',
baz: 3.1415
};
}]);
</script>
</body>
</html>

View File

@ -1,83 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Filters in Action</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-app="filtersApp">
<ul ng-controller="FilterCtrl as ctrl">
<li>
Amount - {{ctrl.amount}}
</li>
<li>
Amount - Default Currency: {{ctrl.amount | currency}}
</li>
<li>
<!-- Using English pound sign -->
Amount - GBP Currency: {{ctrl.amount | currency:'&#163'}}
</li>
<li>
Amount - Number: {{ctrl.amount | number }}
</li>
<li>
Amount - Number (4 decimals): {{ctrl.amount | number:4}}
</li>
<li>
Amount - Yummy &#x3c0 = {{ctrl.pi | number:4 }}
</li>
<li>
Name - no filters: {{ctrl.name}}
</li>
<li>
Name - lowercase: {{ctrl.name | lowercase}}
</li>
<li>
Name - uppercase: {{ctrl.name | uppercase}}
</li>
<li>
Name - prefix: {{ctrl.name | limitTo:4}}
</li>
<li>
JSON filter: {{ctrl.struct | json}}
</li>
<li>
Timestamp: {{ctrl.startTime}}
</li>
<li>
Default Date filter: {{ctrl.startTime | date}}
</li>
<li>
Medium Date filter: {{ctrl.startTime | date:'medium'}}
</li>
<li>
Long Date filter: {{ctrl.startTime | date:'longDate'}}
</li>
<li>
Custom Date filter: {{ctrl.startTime | date:'M/dd, yyyy'}}
</li>
<li>
Custom Time filter: {{ctrl.startTime | date:'h:m a'}}
</li>
</ul>
<script type="text/javascript">
angular.module('filtersApp', [])
.controller('FilterCtrl', [function () {
var self = this;
self.amount = 1024;
self.totalCost = 4906;
self.name = 'Onos Rocks!';
self.startTime = new Date().getTime();
self.struct = {
foo: 'bar',
baz: 3.1415
};
self.pi = Math.PI;
}]);
</script>
</body>
</html>

View File

@ -1,86 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Filters in Action</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-app="filtersApp">
<div ng-controller="FilterCtrl as ctrl">
<table>
<tr>
<td>
<button ng-click="ctrl.currentFilter = 'string'">
Filter with string
</button>
</td>
<td>
Filter Text
<input type="text"
ng-model="ctrl.filterOptions['string']"/>
</td>
</tr>
<tr>
<td>
<button ng-click="ctrl.currentFilter = 'object'">
Filter with object
</button>
</td>
<td>
Show Done or Not Done
<input type="checkbox"
ng-model="ctrl.filterOptions['object'].done"/>
</td>
</tr>
<tr>
<td>
<button ng-click="ctrl.currentFilter = 'function'">
Filter with function
</button>
</td>
</tr>
</table>
<ul>
<li ng-repeat="note in ctrl.notes |
filter:ctrl.filterOptions[ctrl.currentFilter] |
orderBy:ctrl.sortOrder |
limitTo:5">
{{note.label}} - {{note.type}} - {{note.done}}
</li>
</ul>
</div>
<script type="text/javascript">
angular.module('filtersApp', [])
.controller('FilterCtrl', [function () {
var self = this;
self.notes = [
{label: 'FC Todo', type: 'chore', done: false},
{label: 'FT Todo', type: 'task', done: false},
{label: 'FF Todo', type: 'fun', done: true},
{label: 'SC Todo', type: 'chore', done: false},
{label: 'ST Todo', type: 'task', done: true},
{label: 'SF Todo', type: 'fun', done: true},
{label: 'TC Todo', type: 'chore', done: false},
{label: 'TT Todo', type: 'task', done: false},
{label: 'TF Todo', type: 'fun', done: false}
];
self.sortOrder = ['+type', '-label'];
self.filterOptions = {
'string': '',
'object': {done: false, label: 'F'},
'function': function (note) {
return note.type === 'task' && note.done === false;
}
};
self.currentFilter = 'string';
}]);
</script>
</body>
</html>

View File

@ -1,61 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Custom Filters in Action</title>
<script src="../../tp/angular.js"></script>
</head>
<body ng-app="filtersApp">
<div ng-controller="FilterCtrl as ctrl">
<div>
Start time (Timestamp): {{ctrl.startTime}}
</div>
<div>
Start time (Time): {{ctrl.startTime | date:'h:m a'}}
</div>
<div>
Start time (Our filter): {{ctrl.startTime | timeAgo}}
</div>
<div>
Start time (Our filter 2): {{ctrl.startTime | timeAgo:true}}
</div>
<div>
Some time ago (Computed): {{ctrl.someTimeAgo | date:'h:m a'}}
</div>
<div>
Some time ago (Our filter): {{ctrl.someTimeAgo | timeAgo}}
</div>
</div>
<script type="text/javascript">
angular.module('filtersApp', [])
.controller('FilterCtrl', [function () {
var self = this;
self.startTime = new Date().getTime();
self.someTimeAgo = self.startTime - (1000*3600*4);
}])
.filter('timeAgo', [function () {
var _m = 1000 * 60,
_h = _m * 60,
_d = _h * 24,
_mon = _d * 30;
return function (ts, ignoreSecs) {
var now = new Date().getTime(),
diff = now - ts;
if (diff < _m && !ignoreSecs) {
return 'seconds ago';
} else if (diff < _h) {
return 'minutes ago';
} else if (diff < _d) {
return 'hours ago';
} else if (diff < _mon) {
return 'days ago';
} else {
return 'months ago';
}
}
}]);
</script>
</body>
</html>

View File

@ -1,36 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Simple Routing</title>
<script src="../../tp/angular.js"></script>
<script src="../../tp/angular-route.js"></script>
</head>
<body ng-app="routingApp">
<h2>Angular Routing</h2>
<ul>
<li><a href="#/">Default Route</a></li>
<li><a href="#/second">Second Route</a></li>
<li><a href="#/asdfertdfghsdfg">Non-existent Route</a></li>
</ul>
<div ng-view></div>
<script type="text/javascript">
angular.module('routingApp', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
template: '<h5>This is the default route</h5>'
})
.when('/second', {
template: '<h5>This is the second route</h5>'
})
.otherwise({
redirectTo: '/'
});
}]);
</script>
</body>
</html>

View File

@ -1,17 +0,0 @@
// Simple controller
angular.module('notesApp', [])
.controller('ListCtrl', [function () {
var self = this;
self.items = [
{id: 1, label: 'First', done: true},
{id: 2, label: 'Second', done: false}
];
self.getDoneClass = function (item) {
return {
finished: item.done,
unfinished: !item.done
};
};
}]);

View File

@ -1,27 +0,0 @@
// ch09-01-time-ago.js
angular.module('filterApp', [])
.filter('timeAgo', [function () {
var _m = 1000 * 60,
_h = _m * 60,
_d = _h * 24,
_mon = _d * 30;
return function (ts, ignoreSecs) {
var showSecs = !ignoreSecs,
now = new Date().getTime(),
diff = now - ts;
if (diff < _m && showSecs) {
return 'seconds ago';
} else if (diff < _h) {
return 'minutes ago';
} else if (diff < _d) {
return 'hours ago';
} else if (diff < _mon) {
return 'days ago';
} else {
return 'months ago';
}
}
}]);

View File

@ -25,7 +25,7 @@
<title>Layer Transformations</title> <title>Layer Transformations</title>
<script src="../tp/d3.js"></script> <script src="../tp/d3.js"></script>
<script src="../tp/jquery-2.1.1.min.js"></script> <script src="../tp/angular.js"></script>
<style> <style>
html, html,
@ -134,7 +134,7 @@
// General functions ... // General functions ...
function isF(f) { function isF(f) {
return $.isFunction(f) ? f : null; return angular.isFunction(f) ? f : null;
} }
function translate(x,y) { function translate(x,y) {
@ -151,7 +151,7 @@
// Key Bindings... // Key Bindings...
var keyHandler = { var keyHandler = {
T: transform Z: transform
}; };
function whatKey(code) { function whatKey(code) {
@ -435,7 +435,7 @@
function init() { function init() {
svg.append('text') svg.append('text')
.text('Press the "T" key....') .text('Press the "Z" key....')
.attr({ dy: '1.2em', fill: '#999'}) .attr({ dy: '1.2em', fill: '#999'})
.style('font-size', '2.4pt') .style('font-size', '2.4pt')
.style('font-style', 'italic'); .style('font-style', 'italic');

View File

@ -1,176 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 792 612" enable-background="new 0 0 792 612" xml:space="preserve">
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="293.4264" y1="313.4543" x2="293.7567" y2="294.5293">
<stop offset="0" style="stop-color:#007EC5"/>
<stop offset="1" style="stop-color:#00C0ED"/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M308,377.4c1.7,0,3.2-0.3,4.3-1c1.1-0.6,2-1.4,2.6-2.3c0.6-0.9,1.1-1.9,1.3-3c0.2-1.1,0.3-2.1,0.3-3
c0-0.9-0.1-1.9-0.3-3c-0.2-1.1-0.7-2.1-1.3-3c-0.6-0.9-1.5-1.7-2.6-2.3c-1.1-0.6-2.6-1-4.3-1h-31c-1.8,0-3.2,0.3-4.3,1
c-1.1,0.6-2,1.4-2.6,2.3c-0.6,0.9-1.1,1.9-1.3,3c-0.2,1.1-0.3,2.1-0.3,3c0,0.9,0.1,1.9,0.3,3c0.2,1.1,0.7,2.1,1.3,3
c0.6,0.9,1.5,1.7,2.6,2.3c1.1,0.6,2.5,1,4.3,1H308L308,377.4z M323.7,368c0,1.9-0.3,3.9-1,5.9c-0.6,2-1.6,3.8-2.8,5.4
c-1.2,1.6-2.7,2.9-4.5,4c-1.7,1-3.7,1.5-5.9,1.5h-35c-2.1-0.1-4-0.7-5.6-1.7c-1.6-1.1-3-2.4-4.2-4c-1.2-1.6-2-3.4-2.6-5.3
c-0.6-1.9-0.9-3.9-0.9-5.8c0-1.9,0.3-3.9,1-5.9c0.6-2,1.6-3.8,2.8-5.4c1.2-1.6,2.7-2.9,4.5-4c1.7-1,3.7-1.5,5.9-1.5h35
c2.1,0.1,4,0.7,5.6,1.7c1.6,1,3,2.4,4.2,4c1.2,1.6,2,3.4,2.6,5.3C323.4,364.2,323.7,366.1,323.7,368z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="364.0253" y1="215.4108" x2="366.8113" y2="55.7995">
<stop offset="0" style="stop-color:#007EC5"/>
<stop offset="1" style="stop-color:#00C0ED"/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M383.7,368c0-0.9-0.1-1.9-0.3-3c-0.2-1.1-0.7-2.1-1.3-3c-0.6-0.9-1.5-1.7-2.6-2.3s-2.6-1-4.3-1
h-27.7c-1.8,0-3.2,0.3-4.3,1c-1.1,0.6-2,1.4-2.6,2.3c-0.6,0.9-1.1,1.9-1.3,3c-0.2,1.1-0.3,2.1-0.3,3v13.1c0,1-0.4,1.9-1.1,2.6
c-0.7,0.7-1.6,1.1-2.6,1.1c-1,0-1.9-0.4-2.6-1.1c-0.7-0.7-1.1-1.6-1.1-2.6V368c0-1.9,0.3-3.9,1-5.9c0.6-2,1.6-3.8,2.8-5.4
c1.2-1.6,2.7-2.9,4.5-4c1.7-1,3.7-1.5,5.9-1.5h32.2c2.1,0.1,4,0.7,5.6,1.7c1.6,1,3,2.4,4.2,4c1.2,1.6,2,3.4,2.6,5.3
c0.6,1.9,0.9,3.9,0.9,5.8v13.1c0,1-0.4,1.9-1.1,2.6c-0.7,0.7-1.6,1.1-2.6,1.1c-1,0-1.9-0.4-2.6-1.1c-0.7-0.7-1.1-1.6-1.1-2.6V368z"
/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="429.6967" y1="386.7026" x2="430.0228" y2="368.0231">
<stop offset="0" style="stop-color:#007EC5"/>
<stop offset="1" style="stop-color:#00C0ED"/>
</linearGradient>
<path fill="url(#SVGID_3_)" d="M445.5,377.4c1.7,0,3.2-0.3,4.3-1c1.1-0.6,2-1.4,2.6-2.3c0.6-0.9,1.1-1.9,1.3-3
c0.2-1.1,0.3-2.1,0.3-3c0-0.9-0.1-1.9-0.3-3c-0.2-1.1-0.7-2.1-1.3-3c-0.6-0.9-1.5-1.7-2.6-2.3c-1.1-0.6-2.6-1-4.3-1h-31
c-1.8,0-3.2,0.3-4.3,1c-1.1,0.6-2,1.4-2.6,2.3c-0.6,0.9-1.1,1.9-1.3,3c-0.2,1.1-0.3,2.1-0.3,3c0,0.9,0.1,1.9,0.3,3
c0.2,1.1,0.7,2.1,1.3,3c0.6,0.9,1.5,1.7,2.6,2.3c1.1,0.6,2.5,1,4.3,1H445.5L445.5,377.4z M461.3,368c0,1.9-0.3,3.9-1,5.9
c-0.6,2-1.6,3.8-2.8,5.4c-1.2,1.6-2.7,2.9-4.5,4c-1.7,1-3.7,1.5-5.9,1.5h-35c-2.1-0.1-4-0.7-5.6-1.7c-1.6-1.1-3-2.4-4.2-4
c-1.2-1.6-2-3.4-2.6-5.3c-0.6-1.9-0.9-3.9-0.9-5.8c0-1.9,0.3-3.9,1-5.9c0.6-2,1.6-3.8,2.8-5.4c1.2-1.6,2.7-2.9,4.5-4
c1.7-1,3.7-1.5,5.9-1.5h35c2.1,0.1,4,0.7,5.6,1.7c1.6,1,3,2.4,4.2,4c1.2,1.6,2,3.4,2.6,5.3C461,364.2,461.3,366.1,461.3,368z"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="499.3867" y1="424.4887" x2="499.7166" y2="405.5856">
<stop offset="0" style="stop-color:#007EC5"/>
<stop offset="1" style="stop-color:#00C0ED"/>
</linearGradient>
<path fill="url(#SVGID_4_)" d="M479.2,371.7c-1.4,0-2.8-0.3-4-0.8c-1.2-0.5-2.3-1.3-3.2-2.2c-0.9-0.9-1.7-2-2.2-3.2
c-0.5-1.2-0.8-2.6-0.8-4c0-1.4,0.3-2.8,0.8-4c0.5-1.2,1.3-2.3,2.2-3.2c0.9-0.9,2-1.7,3.2-2.2c1.2-0.5,2.6-0.8,4-0.8h46.6
c1,0,1.9,0.4,2.6,1.1c0.7,0.7,1.1,1.6,1.1,2.6c0,1-0.4,1.9-1.1,2.6c-0.7,0.7-1.6,1.1-2.6,1.1H479c-0.8,0-1.4,0.3-2,0.8
c-0.6,0.5-0.9,1.2-0.9,2c0,0.8,0.3,1.4,0.9,2c0.6,0.6,1.3,0.8,2,0.8h42.5c1.4,0,2.8,0.3,4,0.8c1.3,0.5,2.3,1.3,3.3,2.2
c0.9,0.9,1.7,2,2.2,3.3c0.5,1.3,0.8,2.6,0.8,4c0,1.4-0.3,2.8-0.8,4c-0.5,1.2-1.3,2.3-2.2,3.2c-0.9,0.9-2,1.6-3.3,2.2
c-1.3,0.5-2.6,0.8-4,0.8H475c-1,0-1.9-0.4-2.6-1.1c-0.7-0.7-1.1-1.6-1.1-2.6c0-1,0.4-1.9,1.1-2.6c0.7-0.7,1.6-1.1,2.6-1.1h46.8
c0.8,0,1.4-0.3,2-0.8c0.6-0.5,0.8-1.2,0.8-2c0-0.8-0.3-1.5-0.8-2.1c-0.6-0.6-1.2-0.8-2-0.8H479.2z"/>
</g>
<g>
<g>
<path fill="#007EC5" d="M263,404.8c-1.2-1.2-1.8-2.7-1.8-4.6c0-1.9,0.6-3.4,1.8-4.6c1.2-1.2,2.7-1.8,4.5-1.8
c1.8,0,3.3,0.6,4.5,1.8c1.2,1.2,1.8,2.7,1.8,4.6c0,1.9-0.6,3.4-1.8,4.6c-1.2,1.2-2.7,1.8-4.5,1.8C265.6,406.6,264.1,406,263,404.8
L263,404.8z M263.7,396.4c-0.9,1-1.4,2.3-1.4,3.8c0,1.5,0.5,2.8,1.4,3.8c0.9,1,2.2,1.5,3.7,1.5c1.6,0,2.8-0.5,3.7-1.5
c0.9-1,1.4-2.3,1.4-3.8c0-1.5-0.5-2.8-1.4-3.8c-0.9-1-2.2-1.5-3.7-1.5C265.9,394.9,264.7,395.4,263.7,396.4z"/>
<path fill="#007EC5" d="M276.5,410.2v-11.8h1v1.4h0c0.3-0.5,0.7-0.9,1.3-1.2c0.6-0.3,1.2-0.4,1.8-0.4c1.2,0,2.2,0.4,3,1.2
c0.8,0.8,1.2,1.8,1.2,3c0,1.2-0.4,2.2-1.2,3c-0.8,0.8-1.8,1.2-3,1.2c-0.6,0-1.3-0.1-1.8-0.4c-0.6-0.3-1-0.7-1.3-1.2h0v5.3H276.5
L276.5,410.2z M278.4,400c-0.6,0.6-1,1.4-1,2.3c0,0.9,0.3,1.6,1,2.3c0.6,0.6,1.4,0.9,2.3,0.9c0.9,0,1.7-0.3,2.3-0.9
c0.6-0.6,0.9-1.4,0.9-2.3c0-0.9-0.3-1.7-0.9-2.3c-0.6-0.6-1.3-0.9-2.3-0.9C279.8,399.1,279,399.4,278.4,400z"/>
<path fill="#007EC5" d="M294.1,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
c0-1.2,0.4-2.2,1.1-3c0.7-0.8,1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
C293.5,404.9,293.8,404.6,294.1,404.1L294.1,404.1z M288.5,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C288.5,401.3,288.5,401.5,288.5,401.6z"/>
<path fill="#007EC5" d="M298.1,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4h0.1
c0.2-0.5,0.6-0.8,1.1-1.1c0.5-0.3,1-0.5,1.7-0.5c2,0,3,1.1,3,3.4v4.7h-1v-4.7c0-1.7-0.7-2.5-2-2.5c-0.8,0-1.5,0.3-2,0.8
c-0.5,0.6-0.8,1.4-0.8,2.4v3.9H298.1z"/>
</g>
<g>
<polygon fill="#007EC5" points="313.1,406.3 313.1,394.2 314.5,394.2 321.9,404.8 321.9,404.8 321.9,394.2 323.1,394.2
323.1,406.3 321.6,406.3 314.2,395.7 314.2,395.7 314.2,406.3 "/>
<path fill="#007EC5" d="M333,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
c0-1.2,0.4-2.2,1.1-3c0.7-0.8,1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
C332.4,404.9,332.8,404.6,333,404.1L333,404.1z M327.4,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C327.4,401.3,327.4,401.5,327.4,401.6z"/>
<path fill="#007EC5" d="M340.9,398.4v0.9h-2.3v5.1c0,0.4,0.1,0.6,0.3,0.8c0.2,0.2,0.5,0.3,0.8,0.3c0.4,0,0.7-0.1,1.2-0.3l0.1,0.9
c-0.5,0.2-0.9,0.3-1.3,0.3c-0.7,0-1.2-0.2-1.5-0.6c-0.3-0.4-0.5-0.9-0.5-1.5v-5.1h-1.7v-0.9h1.7v-2.3h1v2.3H340.9z"/>
<polygon fill="#007EC5" points="344.8,406.3 342.3,398.4 343.5,398.4 345.4,405 345.4,405 347.6,398.4 348.6,398.4 350.9,405
351,405 352.8,398.4 353.9,398.4 351.5,406.3 350.5,406.3 348.1,399.8 348.1,399.8 345.9,406.3 "/>
<path fill="#007EC5" d="M356.9,405.3c-0.8-0.8-1.2-1.8-1.2-3c0-1.2,0.4-2.2,1.2-3c0.8-0.8,1.8-1.2,3-1.2c1.2,0,2.2,0.4,3,1.2
c0.8,0.8,1.2,1.8,1.2,3c0,1.2-0.4,2.2-1.2,3c-0.8,0.8-1.8,1.2-3,1.2C358.7,406.5,357.7,406.1,356.9,405.3L356.9,405.3z M357.7,400
c-0.6,0.6-0.9,1.4-0.9,2.3c0,0.9,0.3,1.7,0.9,2.3c0.6,0.6,1.3,0.9,2.3,0.9c0.9,0,1.7-0.3,2.3-0.9c0.6-0.6,0.9-1.4,0.9-2.3
c0-0.9-0.3-1.7-0.9-2.3c-0.6-0.6-1.3-0.9-2.3-0.9C359,399.1,358.2,399.4,357.7,400z"/>
<path fill="#007EC5" d="M367.1,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4c0.6-1.1,1.4-1.6,2.5-1.6
c0.2,0,0.4,0,0.6,0.1l-0.1,1c-0.1,0-0.3-0.1-0.4-0.1c-0.9,0-1.5,0.3-1.9,0.8c-0.4,0.5-0.6,1.2-0.6,2v4.3H367.1z"/>
<polygon fill="#007EC5" points="373.5,406.3 373.5,393.3 374.5,393.3 374.5,402 378.4,398.4 379.9,398.4 375.9,402 380.4,406.3
378.9,406.3 374.5,402.1 374.5,406.3 "/>
</g>
<g>
<path fill="#007EC5" d="M388.2,404.8c-1.2-1.2-1.8-2.7-1.8-4.6c0-1.9,0.6-3.4,1.8-4.6c1.2-1.2,2.7-1.8,4.5-1.8
c1.8,0,3.3,0.6,4.5,1.8c1.2,1.2,1.8,2.7,1.8,4.6c0,1.9-0.6,3.4-1.8,4.6c-1.2,1.2-2.7,1.8-4.5,1.8
C390.8,406.6,389.3,406,388.2,404.8L388.2,404.8z M388.9,396.4c-0.9,1-1.4,2.3-1.4,3.8c0,1.5,0.5,2.8,1.4,3.8
c0.9,1,2.2,1.5,3.7,1.5c1.6,0,2.8-0.5,3.7-1.5c0.9-1,1.4-2.3,1.4-3.8c0-1.5-0.5-2.8-1.4-3.8c-0.9-1-2.2-1.5-3.7-1.5
C391.1,394.9,389.9,395.4,388.9,396.4z"/>
<path fill="#007EC5" d="M401.7,410.2v-11.8h1v1.4h0c0.3-0.5,0.7-0.9,1.3-1.2c0.6-0.3,1.2-0.4,1.8-0.4c1.2,0,2.2,0.4,3,1.2
c0.8,0.8,1.2,1.8,1.2,3c0,1.2-0.4,2.2-1.2,3c-0.8,0.8-1.8,1.2-3,1.2c-0.6,0-1.3-0.1-1.8-0.4c-0.6-0.3-1-0.7-1.3-1.2h0v5.3H401.7
L401.7,410.2z M403.6,400c-0.6,0.6-1,1.4-1,2.3c0,0.9,0.3,1.6,1,2.3c0.6,0.6,1.4,0.9,2.3,0.9c0.9,0,1.7-0.3,2.3-0.9
c0.6-0.6,0.9-1.4,0.9-2.3c0-0.9-0.3-1.7-0.9-2.3c-0.6-0.6-1.3-0.9-2.3-0.9C405,399.1,404.2,399.4,403.6,400z"/>
<path fill="#007EC5" d="M419.3,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
c0-1.2,0.4-2.2,1.1-3s1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
C418.7,404.9,419,404.6,419.3,404.1L419.3,404.1z M413.7,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C413.7,401.3,413.7,401.5,413.7,401.6z"/>
<path fill="#007EC5" d="M423.3,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4c0.6-1.1,1.4-1.6,2.5-1.6
c0.2,0,0.4,0,0.6,0.1l-0.1,1c-0.1,0-0.3-0.1-0.4-0.1c-0.9,0-1.5,0.3-1.9,0.8c-0.4,0.5-0.6,1.2-0.6,2v4.3H423.3z"/>
<path fill="#007EC5" d="M435.9,401v1.9c0,1.4,0.1,2.5,0.2,3.3h-1c-0.1-0.4-0.1-0.8-0.1-1.3h0c-0.6,1-1.5,1.5-2.8,1.5
c-0.8,0-1.4-0.2-2-0.6c-0.5-0.4-0.8-1-0.8-1.8c0-1.8,1.5-2.7,4.4-2.7h1.2V401c0-0.6-0.2-1.1-0.6-1.4c-0.4-0.3-0.9-0.5-1.6-0.5
c-0.9,0-1.7,0.3-2.4,0.9l-0.6-0.7c0.4-0.3,0.8-0.6,1.4-0.8c0.6-0.2,1.1-0.3,1.6-0.3c1,0,1.8,0.2,2.3,0.7
C435.6,399.3,435.9,400,435.9,401L435.9,401z M434.9,402.3h-1.1c-1,0-1.8,0.1-2.4,0.4c-0.7,0.3-1,0.7-1,1.4c0,0.5,0.2,0.8,0.5,1.1
c0.4,0.3,0.8,0.4,1.2,0.4c1,0,1.7-0.3,2.1-0.8c0.4-0.5,0.6-1.2,0.6-1.9V402.3z"/>
<path fill="#007EC5" d="M443.2,398.4v0.9h-2.3v5.1c0,0.4,0.1,0.6,0.3,0.8c0.2,0.2,0.5,0.3,0.8,0.3c0.4,0,0.7-0.1,1.2-0.3l0.1,0.9
c-0.5,0.2-0.9,0.3-1.3,0.3c-0.7,0-1.2-0.2-1.5-0.6c-0.3-0.4-0.5-0.9-0.5-1.5v-5.1h-1.7v-0.9h1.7v-2.3h1v2.3H443.2z"/>
<path fill="#007EC5" d="M445.9,406.3v-7.9h1v7.9H445.9L445.9,406.3z M445.9,395.8c-0.1-0.1-0.2-0.3-0.2-0.5c0-0.2,0.1-0.4,0.2-0.5
c0.1-0.1,0.3-0.2,0.5-0.2c0.2,0,0.4,0.1,0.5,0.2c0.1,0.1,0.2,0.3,0.2,0.5c0,0.2-0.1,0.4-0.2,0.5c-0.1,0.1-0.3,0.2-0.5,0.2
C446.2,396,446,395.9,445.9,395.8z"/>
<path fill="#007EC5" d="M450.6,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4h0.1
c0.2-0.5,0.6-0.8,1.1-1.1c0.5-0.3,1-0.5,1.7-0.5c2,0,3,1.1,3,3.4v4.7h-1v-4.7c0-1.7-0.7-2.5-2-2.5c-0.8,0-1.5,0.3-2,0.8
c-0.5,0.6-0.8,1.4-0.8,2.4v3.9H450.6z"/>
<path fill="#007EC5" d="M468.7,398.4v7.4c0,0.8-0.1,1.4-0.3,2c-0.2,0.6-0.4,1-0.7,1.3c-0.3,0.3-0.6,0.6-1,0.8
c-0.4,0.2-0.8,0.3-1.1,0.4c-0.3,0.1-0.7,0.1-1.1,0.1c-0.8,0-1.6-0.1-2.3-0.4c-0.7-0.3-1.3-0.7-1.7-1.2l0.8-0.8
c0.7,1,1.7,1.5,3.1,1.5c2.1,0,3.2-1.2,3.2-3.6v-1.1h0c-0.6,1-1.6,1.5-3,1.5c-1.2,0-2.2-0.4-3-1.2c-0.8-0.8-1.2-1.7-1.2-2.9
c0-1.1,0.4-2.1,1.2-2.9c0.8-0.8,1.8-1.2,3-1.2c1.3,0,2.3,0.5,3,1.5h0v-1.3H468.7L468.7,398.4z M466.8,404.4
c0.6-0.6,0.9-1.3,0.9-2.2c0-0.9-0.3-1.6-0.9-2.2c-0.6-0.6-1.3-0.9-2.2-0.9c-0.9,0-1.6,0.3-2.2,0.9c-0.6,0.6-0.9,1.3-0.9,2.2
c0,0.9,0.3,1.6,0.9,2.2c0.6,0.6,1.3,0.9,2.2,0.9C465.5,405.3,466.2,405,466.8,404.4z"/>
</g>
<g>
<path fill="#007EC5" d="M476,404.7l1.1-0.7c0.6,1,1.5,1.5,2.8,1.5c0.8,0,1.4-0.2,1.9-0.6c0.5-0.4,0.8-1,0.8-1.7
c0-0.5-0.2-1-0.5-1.3c-0.3-0.3-0.7-0.6-1.2-0.7c-0.5-0.1-1-0.3-1.5-0.5c-0.5-0.2-1-0.4-1.5-0.6c-0.5-0.2-0.8-0.6-1.2-1
c-0.3-0.5-0.5-1.1-0.5-1.8c0-1,0.4-1.8,1.1-2.4c0.8-0.6,1.7-0.9,2.8-0.9c1.4,0,2.5,0.5,3.3,1.5l-1,0.7c-0.6-0.8-1.4-1.2-2.4-1.2
c-0.8,0-1.4,0.2-1.9,0.6c-0.5,0.4-0.8,1-0.8,1.7c0,0.5,0.1,0.9,0.3,1.2c0.2,0.3,0.5,0.6,0.9,0.8c0.4,0.2,0.8,0.3,1.2,0.5
c0.4,0.1,0.9,0.3,1.3,0.4c0.4,0.2,0.9,0.3,1.2,0.6c0.4,0.2,0.7,0.6,0.9,1c0.2,0.4,0.3,0.9,0.3,1.6c0,1-0.4,1.9-1.1,2.5
c-0.7,0.6-1.6,0.9-2.7,0.9C478.1,406.6,476.8,406,476,404.7z"/>
<path fill="#007EC5" d="M492.9,398.4l-4.1,10.3c-0.4,1.1-1.2,1.7-2.2,1.7c-0.3,0-0.6-0.1-1-0.2l0.1-1c0.4,0.1,0.7,0.2,0.9,0.2
c0.3,0,0.6-0.1,0.8-0.4c0.2-0.2,0.4-0.6,0.5-1l0.7-1.8l-3.2-7.9h1.1l2.6,6.7l2.5-6.7H492.9z"/>
<path fill="#007EC5" d="M494.4,404.9l0.9-0.6c0.2,0.4,0.5,0.7,0.9,1c0.4,0.2,0.9,0.3,1.4,0.3c0.5,0,0.9-0.1,1.3-0.4
c0.4-0.3,0.5-0.6,0.5-1.1c0-0.4-0.2-0.7-0.5-0.9c-0.3-0.2-0.7-0.4-1.2-0.5c-0.5-0.1-0.9-0.2-1.4-0.3c-0.5-0.1-0.9-0.3-1.2-0.7
c-0.3-0.3-0.5-0.8-0.5-1.3c0-0.7,0.3-1.3,0.8-1.7c0.5-0.4,1.2-0.6,1.9-0.6c1.4,0,2.3,0.5,2.8,1.5l-0.9,0.5c-0.4-0.7-1-1.1-1.9-1.1
c-0.4,0-0.8,0.1-1.1,0.3c-0.4,0.2-0.5,0.5-0.5,0.9c0,0.4,0.2,0.7,0.5,0.9c0.3,0.2,0.7,0.3,1.2,0.4c0.5,0.1,0.9,0.2,1.4,0.3
c0.5,0.1,0.9,0.3,1.2,0.7c0.3,0.3,0.5,0.8,0.5,1.4c0,0.8-0.3,1.4-0.8,1.8c-0.6,0.4-1.2,0.6-2,0.6
C496.1,406.5,495,405.9,494.4,404.9z"/>
<path fill="#007EC5" d="M507.2,398.4v0.9h-2.3v5.1c0,0.4,0.1,0.6,0.3,0.8c0.2,0.2,0.5,0.3,0.8,0.3c0.4,0,0.7-0.1,1.2-0.3l0.1,0.9
c-0.5,0.2-0.9,0.3-1.3,0.3c-0.7,0-1.2-0.2-1.5-0.6c-0.3-0.4-0.5-0.9-0.5-1.5v-5.1h-1.7v-0.9h1.7v-2.3h1v2.3H507.2z"/>
<path fill="#007EC5" d="M515.9,404.1l0.8,0.6c-0.8,1.1-1.9,1.7-3.4,1.7c-1.2,0-2.2-0.4-2.9-1.2c-0.7-0.8-1.1-1.8-1.1-3
c0-1.2,0.4-2.2,1.1-3s1.7-1.2,2.8-1.2c1.2,0,2.1,0.4,2.7,1.1c0.7,0.7,1,1.6,1,2.6v0.7h-6.6c0,0.2,0,0.4,0.1,0.6
c0.1,0.2,0.1,0.5,0.3,0.8c0.1,0.3,0.3,0.5,0.5,0.8c0.2,0.2,0.5,0.4,0.9,0.6c0.4,0.2,0.8,0.2,1.2,0.2c0.5,0,1-0.1,1.5-0.4
C515.3,404.9,515.7,404.6,515.9,404.1L515.9,404.1z M510.3,401.6h5.6c0-0.7-0.3-1.3-0.8-1.8c-0.5-0.5-1.2-0.8-1.9-0.8
c-0.5,0-1,0.1-1.4,0.3c-0.4,0.2-0.7,0.5-0.9,0.8c-0.2,0.3-0.3,0.6-0.4,0.8C510.3,401.3,510.3,401.5,510.3,401.6z"/>
<path fill="#007EC5" d="M520,406.3v-5.7c0-0.2,0-0.6,0-1.2c0-0.6,0-0.9,0-1.1h1c0,0.8,0,1.3,0.1,1.4h0.1c0.2-0.5,0.6-0.8,1.1-1.1
c0.5-0.3,1-0.5,1.7-0.5c0.5,0,1,0.1,1.5,0.4c0.4,0.3,0.7,0.7,0.9,1.3c0.2-0.6,0.6-1,1.1-1.3c0.5-0.3,1-0.4,1.6-0.4
c2,0,3,1.1,3,3.4v4.7h-1v-4.7c0-1.7-0.7-2.5-2-2.5c-0.4,0-0.8,0.1-1.2,0.3c-0.3,0.2-0.6,0.4-0.8,0.7c-0.2,0.3-0.3,0.6-0.4,0.9
c-0.1,0.3-0.1,0.6-0.1,0.9v4.4h-1v-4.8c0-0.8-0.1-1.3-0.4-1.8c-0.3-0.4-0.7-0.6-1.2-0.6c-0.8,0-1.5,0.3-2,0.8
c-0.5,0.6-0.8,1.4-0.8,2.4v3.9H520z"/>
</g>
</g>
<g>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="280.7511" y1="468.8727" x2="530.5958" y2="160.3402" gradientTransform="matrix(-0.9595 0.2818 0.2818 0.9595 742.5177 -113.6192)">
<stop offset="0" style="stop-color:#C6262F"/>
<stop offset="1.288056e-03" style="stop-color:#C6262F"/>
<stop offset="0.3136" style="stop-color:#D64B43"/>
<stop offset="0.5951" style="stop-color:#E26255"/>
<stop offset="0.8334" style="stop-color:#EA6F61"/>
<stop offset="1" style="stop-color:#ED7466"/>
</linearGradient>
<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_5_)" d="M427.7,300.4c-6.9,0.6-13.1,5-19.2,7.1
c-18.1,6.2-33.9,9.1-56.5,4.7c24.6,17.2,36.6,13,63.7,0.1c-0.5,0.6-0.7,1.3-1.3,1.9c1.4-0.4,2.4-1.7,3.4-2.2
c-0.4,0.7-0.9,1.5-1.4,1.9c2.2-0.6,3.7-2.3,5.9-3.9c-2.4,2.1-4.2,5-6,8c-1.5,2.5-3.1,4.8-5.1,6.9c-1,1-1.9,1.9-2.9,2.9
c-1.4,1.3-2.9,2.5-5.1,2.9c1.7,0.1,3.6-0.3,6.5-1.9c-1.6,2.4-7.1,6.2-9.9,7.2c10.5-2.6,19.2-15.9,25.7-18
c18.3-5.9,13.8-3.4,27-14.2c1.6-1.3,3-1,5.1-0.8c1.1,0.1,2.1,0.3,3.2,0.5c0.8,0.2,1.4,0.4,2.2,0.8l1.8,0.9c-1.9-4.5-2.3-4.1-5.9-6
c-2.3-1.3-3.3-3.8-6.2-4.9c-7.1-2.6-11.9,11.7-11.7-5c0.1-8,4.2-14.4,6.4-22c1.1-3.8,2.3-7.6,2.4-11.5c0.1-2.3,0-4.7-0.4-7
c-2-11.2-8.4-21.5-19.7-24.8c-1-0.3-1.1-0.3-0.9,0c9.6,17.1,7.2,38.3,3.1,54.2C429.9,285.5,426.7,293.2,427.7,300.4z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#E6E7E8" d="M344.4,311.8c7.1,4.9,15,9.5,23.8,10.7
c-8.3-0.4-16.6-3.8-27.3-11.3C342,311.4,343.2,311.6,344.4,311.8z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,58 +0,0 @@
<!DOCTYPE html>
<!--
~ Copyright 2016-present 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>Practice Table Formatting</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="practice-table.js"></script>
<script type="text/javascript" src="../app/fw/widget/widget.js"></script>
<script type="text/javascript" src="../app/fw/widget/table.js"></script>
<style>
html,
body {
background-color: #ddf;
font-family: Arial, Helvetica, sans-serif;
font-size: 9pt;
}
h2 {
color: darkred;
}
</style>
</head>
<!-- outline for using a controller in Angular -->
<body ng-app="practiceTable">
<h2>Scrolling Table Practice</h2>
<div id="tableDiv" ng-controller="showTableCtrl as ctrl">
</div>
</body>
</html>

View File

@ -1,273 +0,0 @@
/*
* Copyright 2016-present 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 GUI -- Showing Icons Test Module
*/
(function () {
'use strict';
var config = {
colIds: ['_iconid_available', 'id', 'mfr', 'hw', 'sw', 'serial',
'annotations'],
colText: ['Availability', 'URI', 'Vendor', 'Hardware Version',
'Software Version', 'Serial Number', 'Protocol']
},
deviceData = {
"devices": [{
"id": "of:0000000000000001",
"available": true,
"_iconid_available": "active",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000004",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
},
{
"id": "of:0000000000000092",
"available": false,
"_iconid_available": "inactive",
"role": "MASTER",
"mfr": "Nicira, Inc.",
"hw": "Open vSwitch",
"sw": "2.0.1",
"serial": "None",
"annotations": {
"protocol": "OF_10"
}
}]
};
function setColWidth(t) {
var tHeaders, tdElement, colWidth;
tHeaders = t.selectAll('th');
// select each td in the first row and set the header's width to the
// corresponding td's width, if td is larger than header's width
tHeaders.each(function(thElement, index){
thElement = d3.select(this);
tdElement = t.select('td:nth-of-type(' + (index + 1) + ')');
colWidth = tdElement.style('width');
thElement.style('width', colWidth);
tdElement.style('width', colWidth);
});
}
function setCSS(thead, tbody, height) {
thead.style('display', 'block');
tbody.style({'display': 'block',
'height': height || '100px',
'overflow': 'auto'
});
}
function fixTable(t, th, tb, height) {
setColWidth(t);
setCSS(th, tb, height);
}
angular.module('practiceTable', ['onosWidget'])
.controller('showTableCtrl', ['$log', '$scope', '$rootScope',
'$timeout', 'TableService',
function ($log, $scope, $rootScope, $timeout, ts) {
var self = this;
var table = ts.renderTable(d3.select('#tableDiv'), config, deviceData);
}])
.directive('fixedHeader', ['$log', '$timeout', '$compile',
function ($log, $timeout, $compile) {
return {
restrict: 'A',
scope: {
tHeight: '@'
},
link: function (scope, element, attrs) {
var table = d3.select(element[0]),
thead = table.select('thead'),
tbody = table.select('tbody');
// wait until the table is visible
scope.$watch(
function () { return (!(table.offsetParent === null)); },
function(newValue, oldValue) {
if (newValue === true) {
// ensure thead and tbody have no display
thead.style('display', null);
tbody.style('display', null);
$timeout(function () {
fixTable(table, thead, tbody, scope.tHeight);
});
}
});
}
};
}]);
}());

View File

@ -1,89 +0,0 @@
<!DOCTYPE html>
<!--
~ Copyright 2016-present 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 -- SVG mouse over d3 exercise html
-->
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Upgrade Performance</title>
<script type="text/javascript" src="../tp/angular.js"></script>
<script type="text/javascript" src="../tp/d3.js"></script>
<script type="text/javascript" src="svg-exercise.js"></script>
<script type="text/javascript" src="../app/fw/util/util.js"></script>
<script type="text/javascript" src="../app/fw/util/fn.js"></script>
<style>
html,
body, div {
background-color: #eee;
font-family: Arial, Helvetica, sans-serif;
font-size: 9pt;
margin: 0;
overflow: hidden;
}
.button {
fill: #369;
filter: url(#buttonBevel);
}
svg text {
fill: white;
letter-spacing: .005em;
}
</style>
</head>
<body ng-app="svgExercise">
<div id="svgExDiv" ng-controller="svgExCtrl as ctrl">
<improve-performance></improve-performance>
</div>
<svg xmlns="http://www.w3.org/2000/svg"
viewBox="-10 -10 110 110"
visibility="hidden">
<filter id="buttonBevel"
filterUnits="objectBoundingBox"
x="-10%" y="-10%" width="110%" height="110%">
<feGaussianBlur in="SourceAlpha"
stdDeviation="4"
result="blur"/>
<feSpecularLighting in="blur"
surfaceScale="7"
specularConstant="0.6"
specularExponent="5"
result="spec"
lighting-color="#4E7199">
<fePointLight x="-5000" y="-10000" z="20000"/>
</feSpecularLighting>
<feComposite in="spec"
in2="SourceAlpha"
operator="in"
result="spec2"/>
<feComposite in="SourceGraphic"
in2="spec2"
operator="arithmetic"
k1="0" k2="1" k3="1" k4="0" />
</filter>
</svg>
</body>
</html>

View File

@ -1,170 +0,0 @@
/*
* Copyright 2016-present 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 GUI -- SVG mouse over d3 exercise module
*/
(function () {
'use strict';
// injected references
var $log, fs;
// constants
var btnWidth = 175,
btnHeight = 50,
hoverZone = 70,
sectorDivisions = 3,
margin = 10;
// svg elements
var svg, g;
// other variables
var winWidth, winHeight,
sectorWidth, sectorHeight,
currSector = 4, // always starts in the middle
mouse;
// ====================================================
function centeredOnWindow(axis, dim) {
return (axis / 2) - (dim / 2);
}
function onMouseMove() {
mouse = d3.mouse(this);
moveButton();
}
function removeMouseListener() {
g.on('mousemove', null);
}
function addMouseListener() {
g.on('mousemove', onMouseMove);
}
function selectSector() {
var sector, row, col,
currCol = currSector % sectorDivisions;
do {
sector = Math.floor((Math.random() * 9));
col = sector % sectorDivisions;
} while (col === currCol);
currSector = sector;
row = Math.floor(sector / sectorDivisions);
return {
xmin: (sectorWidth * col) + margin,
xmax: ((sectorWidth * col) + sectorWidth) - margin,
ymin: (sectorHeight * row) + margin,
ymax: ((sectorHeight * row) + sectorHeight) - margin
};
}
function selectXY(sectorCoords) {
var x, y, x1, y1;
do {
x = (Math.random() * sectorCoords.xmax) + sectorCoords.xmin;
y = (Math.random() * sectorCoords.ymax) + sectorCoords.ymin;
x1 = x + btnWidth;
y1 = y + btnHeight;
} while (x1 > sectorCoords.xmax || y1 > sectorCoords.ymax);
return {
x: x,
y: y
};
}
function gTranslate(x, y) {
return 'translate(' + x + ',' + y + ')';
}
function moveButton() {
var sec = selectSector(),
pos = selectXY(sec);
g.transition()
.duration(300)
.ease('cubic-out')
.each('start', removeMouseListener)
.attr('transform', gTranslate(pos.x, pos.y))
.each('end', addMouseListener);
}
angular.module('svgExercise', ['onosUtil'])
.controller('svgExCtrl', ['$log', function (_$log_) {
$log = _$log_;
}])
.directive('improvePerformance', ['FnService', function (_fs_) {
fs = _fs_;
return {
restrict: 'E',
link: function (scope, elem) {
winWidth = fs.windowSize().width;
winHeight = fs.windowSize().height;
sectorWidth = winWidth / sectorDivisions;
sectorHeight = winHeight / sectorDivisions;
svg = d3.select(elem[0])
.append('svg')
.attr({
width: winWidth + 'px',
height: winHeight + 'px'
});
g = svg.append('g');
g.append('rect')
.attr({
width: btnWidth + 'px',
height: btnHeight + 'px',
rx: '10px',
'class': 'button'
});
g.append('text')
.style('text-anchor', 'middle')
.text('Click for better performance.')
.attr({
x: btnWidth / 2,
y: (btnHeight / 2) + 5
});
g.append('rect')
.attr({
fill: 'none',
'pointer-events': 'all',
width: btnWidth + hoverZone + 'px',
height: btnHeight + hoverZone + 'px',
x: -(hoverZone / 2),
y: -(hoverZone / 2)
});
g.attr('transform',
gTranslate(centeredOnWindow(winWidth, btnWidth),
centeredOnWindow(winHeight, btnHeight)));
addMouseListener();
}
};
}]);
}());

View File

@ -1,376 +0,0 @@
<!DOCTYPE html>
<!--
*
* Copyright 2016-present 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.
*
-->
<html lang="en">
<head>
<title>2-Letter, 3-Letter, Country Codes for All Countries in the World</title>
<meta charset="utf-8">
<script charset="utf-8" src="../../tp/jquery-2.1.1.min.js"></script>
</head>
<body>
<style type="text/css" scoped>
body {
font-family: Helvetica Neue, Helvetica, Arial, sans-serif ;
background-color: #eef;
}
.mainContent {
margin: auto;
width: 800px;
background-color: #ddf;
padding: 8px;
}
table {
margin: auto;
}
th {
font-style: italic;
text-align: left;
background-color: #aad;
color: #66c;
padding: 4px;
}
td {
padding: 4px;
}
td.code {
font-family: monospace;
font-size: 120%;
}
td.num {
text-align: right;
}
tr:nth-child(even) {
background-color: #dde;
}
tr:nth-child(odd) {
background-color: #eef;
}
</style>
<div class="content">
<div class="mainContent">
<div class="miscTxt">
<header>
<h1>Complete List of Country Codes </h1>
</header>
<p>
The 2-letter codes shown below are supplied by the ISO
(<i>International Organization for Standardization</i>).
It bases its list of country names and abbreviations on
the list of names published by the United Nations.
The UN also uses 3-letter codes, and numerical codes
to identify nations.
</p>
<table>
<thead>
<tr>
<th> Country </th>
<th> A2 (ISO) </th>
<th> A3 (UN) </th>
<th> NUM (UN) </th>
</tr>
</thead>
<tbody id="codes-body">
</tbody>
</table>
</div>
</div>
</div>
<script type="text/javascript">
var data = [
[ 'Afghanistan', 'AF', 'AFG', 4 ],
[ 'Albania', 'AL', 'ALB', 8 ],
[ 'Algeria', 'DZ', 'DZA', 12 ],
[ 'American Samoa', 'AS', 'ASM', 16 ],
[ 'Andorra', 'AD', 'AND', 20 ],
[ 'Angola', 'AO', 'AGO', 24 ],
[ 'Anguilla', 'AI', 'AIA', 660 ],
[ 'Antarctica', 'AQ', 'ATA', 10 ],
[ 'Antigua and Barbuda', 'AG', 'ATG', 28 ],
[ 'Argentina', 'AR', 'ARG', 32 ],
[ 'Armenia', 'AM', 'ARM', 51 ],
[ 'Aruba', 'AW', 'ABW', 533 ],
[ 'Australia', 'AU', 'AUS', 36 ],
[ 'Austria', 'AT', 'AUT', 40 ],
[ 'Azerbaijan', 'AZ', 'AZE', 31 ],
[ 'Bahamas', 'BS', 'BHS', 44 ],
[ 'Bahrain', 'BH', 'BHR', 48 ],
[ 'Bangladesh', 'BD', 'BGD', 50 ],
[ 'Barbados', 'BB', 'BRB', 52 ],
[ 'Belarus', 'BY', 'BLR', 112 ],
[ 'Belgium', 'BE', 'BEL', 56 ],
[ 'Belize', 'BZ', 'BLZ', 84 ],
[ 'Benin', 'BJ', 'BEN', 204 ],
[ 'Bermuda', 'BM', 'BMU', 60 ],
[ 'Bhutan', 'BT', 'BTN', 64 ],
[ 'Bolivia', 'BO', 'BOL', 68 ],
[ 'Bonaire', 'BQ', 'BES', 535 ],
[ 'Bosnia and Herzegovina', 'BA', 'BIH', 70 ],
[ 'Botswana', 'BW', 'BWA', 72 ],
[ 'Bouvet Island', 'BV', 'BVT', 74 ],
[ 'Brazil', 'BR', 'BRA', 76 ],
[ 'British Indian Ocean Territory', 'IO', 'IOT', 86 ],
[ 'Brunei Darussalam', 'BN', 'BRN', 96 ],
[ 'Bulgaria', 'BG', 'BGR', 100 ],
[ 'Burkina Faso', 'BF', 'BFA', 854 ],
[ 'Burundi', 'BI', 'BDI', 108 ],
[ 'Cambodia', 'KH', 'KHM', 116 ],
[ 'Cameroon', 'CM', 'CMR', 120 ],
[ 'Canada', 'CA', 'CAN', 124 ],
[ 'Cape Verde', 'CV', 'CPV', 132 ],
[ 'Cayman Islands', 'KY', 'CYM', 136 ],
[ 'Central African Republic', 'CF', 'CAF', 140 ],
[ 'Chad', 'TD', 'TCD', 148 ],
[ 'Chile', 'CL', 'CHL', 152 ],
[ 'China', 'CN', 'CHN', 156 ],
[ 'Christmas Island', 'CX', 'CXR', 162 ],
[ 'Cocos (Keeling) Islands', 'CC', 'CCK', 166 ],
[ 'Colombia', 'CO', 'COL', 170 ],
[ 'Comoros', 'KM', 'COM', 174 ],
[ 'Congo', 'CG', 'COG', 178 ],
[ 'Democratic Republic of the Congo', 'CD', 'COD', 180 ],
[ 'Cook Islands', 'CK', 'COK', 184 ],
[ 'Costa Rica', 'CR', 'CRI', 188 ],
[ 'Croatia', 'HR', 'HRV', 191 ],
[ 'Cuba', 'CU', 'CUB', 192 ],
[ 'Curaçao', 'CW', 'CUW', 531 ],
[ 'Cyprus', 'CY', 'CYP', 196 ],
[ 'Czech Republic', 'CZ', 'CZE', 203 ],
[ 'Côte dIvoire', 'CI', 'CIV', 384 ],
[ 'Denmark', 'DK', 'DNK', 208 ],
[ 'Djibouti', 'DJ', 'DJI', 262 ],
[ 'Dominica', 'DM', 'DMA', 212 ],
[ 'Dominican Republic', 'DO', 'DOM', 214 ],
[ 'Ecuador', 'EC', 'ECU', 218 ],
[ 'Egypt', 'EG', 'EGY', 818 ],
[ 'El Salvador', 'SV', 'SLV', 222 ],
[ 'Equatorial Guinea', 'GQ', 'GNQ', 226 ],
[ 'Eritrea', 'ER', 'ERI', 232 ],
[ 'Estonia', 'EE', 'EST', 233 ],
[ 'Ethiopia', 'ET', 'ETH', 231 ],
[ 'Falkland Islands (Malvinas)', 'FK', 'FLK', 238 ],
[ 'Faroe Islands', 'FO', 'FRO', 234 ],
[ 'Fiji', 'FJ', 'FJI', 242 ],
[ 'Finland', 'FI', 'FIN', 246 ],
[ 'France', 'FR', 'FRA', 250 ],
[ 'French Guiana', 'GF', 'GUF', 254 ],
[ 'French Polynesia', 'PF', 'PYF', 258 ],
[ 'French Southern Territories', 'TF', 'ATF', 260 ],
[ 'Gabon', 'GA', 'GAB', 266 ],
[ 'Gambia', 'GM', 'GMB', 270 ],
[ 'Georgia', 'GE', 'GEO', 268 ],
[ 'Germany', 'DE', 'DEU', 276 ],
[ 'Ghana', 'GH', 'GHA', 288 ],
[ 'Gibraltar', 'GI', 'GIB', 292 ],
[ 'Greece', 'GR', 'GRC', 300 ],
[ 'Greenland', 'GL', 'GRL', 304 ],
[ 'Grenada', 'GD', 'GRD', 308 ],
[ 'Guadeloupe', 'GP', 'GLP', 312 ],
[ 'Guam', 'GU', 'GUM', 316 ],
[ 'Guatemala', 'GT', 'GTM', 320 ],
[ 'Guernsey', 'GG', 'GGY', 831 ],
[ 'Guinea', 'GN', 'GIN', 324 ],
[ 'Guinea-Bissau', 'GW', 'GNB', 624 ],
[ 'Guyana', 'GY', 'GUY', 328 ],
[ 'Haiti', 'HT', 'HTI', 332 ],
[ 'Heard Island and McDonald Mcdonald Islands', 'HM', 'HMD', 334 ],
[ 'Holy See (Vatican City State)', 'VA', 'VAT', 336 ],
[ 'Honduras', 'HN', 'HND', 340 ],
[ 'Hong Kong', 'HK', 'HKG', 344 ],
[ 'Hungary', 'HU', 'HUN', 348 ],
[ 'Iceland', 'IS', 'ISL', 352 ],
[ 'India', 'IN', 'IND', 356 ],
[ 'Indonesia', 'ID', 'IDN', 360 ],
[ 'Iran, Islamic Republic of', 'IR', 'IRN', 364 ],
[ 'Iraq', 'IQ', 'IRQ', 368 ],
[ 'Ireland', 'IE', 'IRL', 372 ],
[ 'Isle of Man', 'IM', 'IMN', 833 ],
[ 'Israel', 'IL', 'ISR', 376 ],
[ 'Italy', 'IT', 'ITA', 380 ],
[ 'Jamaica', 'JM', 'JAM', 388 ],
[ 'Japan', 'JP', 'JPN', 392 ],
[ 'Jersey', 'JE', 'JEY', 832 ],
[ 'Jordan', 'JO', 'JOR', 400 ],
[ 'Kazakhstan', 'KZ', 'KAZ', 398 ],
[ 'Kenya', 'KE', 'KEN', 404 ],
[ 'Kiribati', 'KI', 'KIR', 296 ],
[ 'Korea, Democratic People\'s Republic of', 'KP', 'PRK', 408 ],
[ 'Korea, Republic of', 'KR', 'KOR', 410 ],
[ 'Kuwait', 'KW', 'KWT', 414 ],
[ 'Kyrgyzstan', 'KG', 'KGZ', 417 ],
[ 'Lao People\'s Democratic Republic', 'LA', 'LAO', 418 ],
[ 'Latvia', 'LV', 'LVA', 428 ],
[ 'Lebanon', 'LB', 'LBN', 422 ],
[ 'Lesotho', 'LS', 'LSO', 426 ],
[ 'Liberia', 'LR', 'LBR', 430 ],
[ 'Libya', 'LY', 'LBY', 434 ],
[ 'Liechtenstein', 'LI', 'LIE', 438 ],
[ 'Lithuania', 'LT', 'LTU', 440 ],
[ 'Luxembourg', 'LU', 'LUX', 442 ],
[ 'Macao', 'MO', 'MAC', 446 ],
[ 'Macedonia, the Former Yugoslav Republic of', 'MK', 'MKD', 807 ],
[ 'Madagascar', 'MG', 'MDG', 450 ],
[ 'Malawi', 'MW', 'MWI', 454 ],
[ 'Malaysia', 'MY', 'MYS', 458 ],
[ 'Maldives', 'MV', 'MDV', 462 ],
[ 'Mali', 'ML', 'MLI', 466 ],
[ 'Malta', 'MT', 'MLT', 470 ],
[ 'Marshall Islands', 'MH', 'MHL', 584 ],
[ 'Martinique', 'MQ', 'MTQ', 474 ],
[ 'Mauritania', 'MR', 'MRT', 478 ],
[ 'Mauritius', 'MU', 'MUS', 480 ],
[ 'Mayotte', 'YT', 'MYT', 175 ],
[ 'Mexico', 'MX', 'MEX', 484 ],
[ 'Micronesia, Federated States of', 'FM', 'FSM', 583 ],
[ 'Moldova, Republic of', 'MD', 'MDA', 498 ],
[ 'Monaco', 'MC', 'MCO', 492 ],
[ 'Mongolia', 'MN', 'MNG', 496 ],
[ 'Montenegro', 'ME', 'MNE', 499 ],
[ 'Montserrat', 'MS', 'MSR', 500 ],
[ 'Morocco', 'MA', 'MAR', 504 ],
[ 'Mozambique', 'MZ', 'MOZ', 508 ],
[ 'Myanmar', 'MM', 'MMR', 104 ],
[ 'Namibia', 'NA', 'NAM', 516 ],
[ 'Nauru', 'NR', 'NRU', 520 ],
[ 'Nepal', 'NP', 'NPL', 524 ],
[ 'Netherlands', 'NL', 'NLD', 528 ],
[ 'New Caledonia', 'NC', 'NCL', 540 ],
[ 'New Zealand', 'NZ', 'NZL', 554 ],
[ 'Nicaragua', 'NI', 'NIC', 558 ],
[ 'Niger', 'NE', 'NER', 562 ],
[ 'Nigeria', 'NG', 'NGA', 566 ],
[ 'Niue', 'NU', 'NIU', 570 ],
[ 'Norfolk Island', 'NF', 'NFK', 574 ],
[ 'Northern Mariana Islands', 'MP', 'MNP', 580 ],
[ 'Norway', 'NO', 'NOR', 578 ],
[ 'Oman', 'OM', 'OMN', 512 ],
[ 'Pakistan', 'PK', 'PAK', 586 ],
[ 'Palau', 'PW', 'PLW', 585 ],
[ 'Palestine, State of', 'PS', 'PSE', 275 ],
[ 'Panama', 'PA', 'PAN', 591 ],
[ 'Papua New Guinea', 'PG', 'PNG', 598 ],
[ 'Paraguay', 'PY', 'PRY', 600 ],
[ 'Peru', 'PE', 'PER', 604 ],
[ 'Philippines', 'PH', 'PHL', 608 ],
[ 'Pitcairn', 'PN', 'PCN', 612 ],
[ 'Poland', 'PL', 'POL', 616 ],
[ 'Portugal', 'PT', 'PRT', 620 ],
[ 'Puerto Rico', 'PR', 'PRI', 630 ],
[ 'Qatar', 'QA', 'QAT', 634 ],
[ 'Romania', 'RO', 'ROU', 642 ],
[ 'Russian Federation', 'RU', 'RUS', 643 ],
[ 'Rwanda', 'RW', 'RWA', 646 ],
[ 'Reunion', 'RE', 'REU', 638 ],
[ 'Saint Barthalemy', 'BL', 'BLM', 652 ],
[ 'Saint Helena', 'SH', 'SHN', 654 ],
[ 'Saint Kitts and Nevis', 'KN', 'KNA', 659 ],
[ 'Saint Lucia', 'LC', 'LCA', 662 ],
[ 'Saint Martin (French part)', 'MF', 'MAF', 663 ],
[ 'Saint Pierre and Miquelon', 'PM', 'SPM', 666 ],
[ 'Saint Vincent and the Grenadines', 'VC', 'VCT', 670 ],
[ 'Samoa', 'WS', 'WSM', 882 ],
[ 'San Marino', 'SM', 'SMR', 674 ],
[ 'Sao Tome and Principe', 'ST', 'STP', 678 ],
[ 'Saudi Arabia', 'SA', 'SAU', 682 ],
[ 'Senegal', 'SN', 'SEN', 686 ],
[ 'Serbia', 'RS', 'SRB', 688 ],
[ 'Seychelles', 'SC', 'SYC', 690 ],
[ 'Sierra Leone', 'SL', 'SLE', 694 ],
[ 'Singapore', 'SG', 'SGP', 702 ],
[ 'Sint Maarten (Dutch part)', 'SX', 'SXM', 534 ],
[ 'Slovakia', 'SK', 'SVK', 703 ],
[ 'Slovenia', 'SI', 'SVN', 705 ],
[ 'Solomon Islands', 'SB', 'SLB', 90 ],
[ 'Somalia', 'SO', 'SOM', 706 ],
[ 'South Africa', 'ZA', 'ZAF', 710 ],
[ 'South Georgia and the South Sandwich Islands', 'GS', 'SGS', 239 ],
[ 'South Sudan', 'SS', 'SSD', 728 ],
[ 'Spain', 'ES', 'ESP', 724 ],
[ 'Sri Lanka', 'LK', 'LKA', 144 ],
[ 'Sudan', 'SD', 'SDN', 729 ],
[ 'Suriname', 'SR', 'SUR', 740 ],
[ 'Svalbard and Jan Mayen', 'SJ', 'SJM', 744 ],
[ 'Swaziland', 'SZ', 'SWZ', 748 ],
[ 'Sweden', 'SE', 'SWE', 752 ],
[ 'Switzerland', 'CH', 'CHE', 756 ],
[ 'Syrian Arab Republic', 'SY', 'SYR', 760 ],
[ 'Taiwan, Province of China', 'TW', 'TWN', 158 ],
[ 'Tajikistan', 'TJ', 'TJK', 762 ],
[ 'United Republic of Tanzania', 'TZ', 'TZA', 834 ],
[ 'Thailand', 'TH', 'THA', 764 ],
[ 'Timor-Leste', 'TL', 'TLS', 626 ],
[ 'Togo', 'TG', 'TGO', 768 ],
[ 'Tokelau', 'TK', 'TKL', 772 ],
[ 'Tonga', 'TO', 'TON', 776 ],
[ 'Trinidad and Tobago', 'TT', 'TTO', 780 ],
[ 'Tunisia', 'TN', 'TUN', 788 ],
[ 'Turkey', 'TR', 'TUR', 792 ],
[ 'Turkmenistan', 'TM', 'TKM', 795 ],
[ 'Turks and Caicos Islands', 'TC', 'TCA', 796 ],
[ 'Tuvalu', 'TV', 'TUV', 798 ],
[ 'Uganda', 'UG', 'UGA', 800 ],
[ 'Ukraine', 'UA', 'UKR', 804 ],
[ 'United Arab Emirates', 'AE', 'ARE', 784 ],
[ 'United Kingdom', 'GB', 'GBR', 826 ],
[ 'United States', 'US', 'USA', 840 ],
[ 'United States Minor Outlying Islands', 'UM', 'UMI', 581 ],
[ 'Uruguay', 'UY', 'URY', 858 ],
[ 'Uzbekistan', 'UZ', 'UZB', 860 ],
[ 'Vanuatu', 'VU', 'VUT', 548 ],
[ 'Venezuela', 'VE', 'VEN', 862 ],
[ 'Viet Nam', 'VN', 'VNM', 704 ],
[ 'British Virgin Islands', 'VG', 'VGB', 92 ],
[ 'US Virgin Islands', 'VI', 'VIR', 850 ],
[ 'Wallis and Futuna', 'WF', 'WLF', 876 ],
[ 'Western Sahara', 'EH', 'ESH', 732 ],
[ 'Yemen', 'YE', 'YEM', 887 ],
[ 'Zambia', 'ZM', 'ZMB', 894 ],
[ 'Zimbabwe', 'ZW', 'ZWE', 716 ],
[ 'Aland Islands', 'AX', 'ALA', 248 ]
];
var bod = $('#codes-body');
function addRow(name, a2, a3, num) {
bod.append('<tr>' +
'<td>'+ name + '</td>' +
'<td class="code">'+ a2 + '</td>' +
'<td class="code">'+ a3 + '</td>' +
'<td class="num">'+ num + '</td>' +
'</tr>');
}
function loadRows() {
data.forEach(function (d) {
if (d.length) {
addRow(d[0], d[1], d[2], d[3]);
}
});
}
loadRows();
</script>
</body>
</html>

View File

@ -1,87 +0,0 @@
<!--
-- Sample code to show extracting country data from a countries TopoJSON
-- file and projecting it into an SVG layer.
--
-- See: http://bl.ocks.org/pnavarrc/62047b5638d624cfa9cb
-->
<html>
<head>
<title>S America</title>
<script charset="utf-8" src="../../tp/d3.min.js"></script>
<script charset="utf-8" src="../../tp/topojson.v1.min.js"></script>
<style>
svg {
border: 1px solid #888;
}
.country {
fill: #bcd1ff;
stroke: #7c79e6;
stroke-width: 1;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
var datapath = '../../data/map/countries.topojson',
height = 500,
width = 500;
// create geographic projection
var projection = d3.geo.mercator()
.translate([width/2, height/2]);
// configure path generator
var pathGenerator = d3.geo.path()
.projection(projection);
var div = d3.select('#map'),
svg = div.append('svg'),
grp = svg.append('g');
svg.attr('width', width).attr('height', height);
d3.json(datapath, function (error, data) {
if (error) {
console.error(error);
throw error;
}
var features = topojson.feature(data, data.objects.countries).features;
// S.America
var southAmerica = features.filter(function (country) {
return country.properties.continent === 'South America';
});
var southAmericaFeature = {
type: 'FeatureCollection',
features: southAmerica
};
// compute bounds and centroid
var bounds = d3.geo.bounds(southAmericaFeature),
center = d3.geo.centroid(southAmericaFeature);
// compute angular distance between bound corners
var distance = d3.geo.distance(bounds[0], bounds[1]),
scale = height / distance / Math.sqrt(2);
// update projection
projection.scale(scale).center(center);
// draw
var countries = grp.selectAll('path.country')
.data([southAmericaFeature]);
countries.enter().append('path').classed('country', true);
countries.attr('d', pathGenerator);
countries.exit().remove();
});
</script>
</body>
</html>

View File

@ -1,64 +0,0 @@
<!DOCTYPE html>
<!--
~ Copyright 2016-present 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 -- Sample use of trie functions in fn.js
-->
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Test Trie Functions</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="trie-test.js"></script>
<link rel="stylesheet" href="../app/common.css">
<style>
html,
body {
background-color: #ddf;
font-family: Arial, Helvetica, sans-serif;
font-size: 9pt;
}
h2 {
color: darkred;
}
#output div {
font-family: monospace;
white-space: pre;
}
</style>
</head>
<!-- outline for using a controller in Angular -->
<body class="light" ng-app="trie" ng-controller="OvTrieTest as ctrl">
<h2>Testing the Trie Functions</h2>
<div id="output"></div>
</body>
</html>

View File

@ -1,116 +0,0 @@
/*
* Copyright 2016-present 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 GUI -- Test code illustrating use of trie functions
*/
(function () {
'use strict';
// injected refs
var $log, fs;
// internal state
var out,
trie = {},
counter = 5000;
function write(string) {
out.append('div').text(string);
}
function lookup(word) {
var result = fs.trieLookup(trie, word),
f = fs.isF(result),
show = f ? '{function}' : result;
write('------> ' + word + ' ==> ' + show);
f && f();
}
function add(word, data) {
var result = fs.addToTrie(trie, word, data);
write(' ADD> ' + word + ' [' + data + '] ==> ' + result);
}
function remove(word) {
var result = fs.removeFromTrie(trie, word);
write('REMOVE> ' + word + ' ==> ' + result);
}
function func1() {
counter++;
write('** function call ** ' + counter);
}
function func2() {
counter += 11;
write('** alternate call ** ' + counter);
}
function runTests() {
lookup('cat');
add('cat', 101);
lookup('ca');
lookup('cat');
lookup('cats');
add('cab', 103);
add('cog', 105);
lookup('cut');
lookup('cab');
remove('cab');
lookup('cab');
lookup('cat');
add('fun', func1);
lookup('fun');
lookup('fun');
lookup('fun');
lookup('cat');
lookup('fun');
add('fun', func2);
lookup('fun');
lookup('fun');
lookup('fun');
remove('fun');
lookup('fun');
}
angular.module('trie', ['onosUtil'])
.controller('OvTrieTest', ['$log', 'FnService',
function (_$log_, _fs_) {
$log = _$log_;
fs = _fs_;
out = d3.select('#output');
runTests();
}]);
}());