mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-10-22 21:01:00 +02:00
GUI -- implemeted GlyphService.register().
Change-Id: I769294b428d9eb5414b45d1099baee1ab3814528
This commit is contained in:
parent
2020eac8aa
commit
bc39f6d87d
@ -23,7 +23,8 @@
|
||||
'use strict';
|
||||
|
||||
var $log,
|
||||
glyphs = d3.map();
|
||||
glyphs = d3.map(),
|
||||
msgGS = 'GlyphService.';
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Base set of Glyphs...
|
||||
@ -119,13 +120,6 @@
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
function reg(vbox, data) {
|
||||
d3.map(data).keys().forEach(function (key) {
|
||||
glyphs.set(key, {id: key, vb: vbox, d: data[key]});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
angular.module('onosSvg')
|
||||
.factory('GlyphService', ['$log', function (_$log_) {
|
||||
$log = _$log_;
|
||||
@ -133,14 +127,30 @@
|
||||
function init() {
|
||||
// start with a fresh map
|
||||
glyphs = d3.map();
|
||||
reg(birdViewBox, birdData);
|
||||
reg(glyphViewBox, glyphData);
|
||||
reg(badgeViewBox, badgeData);
|
||||
register(birdViewBox, birdData);
|
||||
register(glyphViewBox, glyphData);
|
||||
register(badgeViewBox, badgeData);
|
||||
}
|
||||
|
||||
function register(viewBox, data, overwrite) {
|
||||
// TODO: register specified glyph definitions
|
||||
var dmap = d3.map(data),
|
||||
dups = [],
|
||||
ok, msg;
|
||||
|
||||
dmap.forEach(function (key, value) {
|
||||
if (!overwrite && glyphs.get(key)) {
|
||||
dups.push(key);
|
||||
} else {
|
||||
glyphs.set(key, {id: key, vb: viewBox, d: value});
|
||||
}
|
||||
});
|
||||
ok = (dups.length == 0);
|
||||
if (!ok) {
|
||||
dups.forEach(function (id) {
|
||||
$log.warn(msgGS + 'register(): ID collision: "'+id+'"');
|
||||
});
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
function ids() {
|
||||
|
@ -22,7 +22,8 @@
|
||||
describe('factory: fw/svg/glyph.js', function() {
|
||||
var $log, fs, gs;
|
||||
|
||||
var vbBird = '352 224 113 112',
|
||||
var numBaseGlyphs = 11,
|
||||
vbBird = '352 224 113 112',
|
||||
vbGlyph = '0 0 110 110',
|
||||
vbBadge = '0 0 10 10';
|
||||
|
||||
@ -50,7 +51,7 @@ describe('factory: fw/svg/glyph.js', function() {
|
||||
|
||||
it('should load the base set of glyphs', function () {
|
||||
gs.init();
|
||||
expect(gs.ids().length).toEqual(11);
|
||||
expect(gs.ids().length).toEqual(numBaseGlyphs);
|
||||
});
|
||||
|
||||
function verifyGlyphLoaded(id, vbox, prefix) {
|
||||
@ -107,4 +108,64 @@ describe('factory: fw/svg/glyph.js', function() {
|
||||
gs.init();
|
||||
verifyGlyphLoaded('uiAttached', vbBadge, 'M2,2.5a.5,.5');
|
||||
});
|
||||
|
||||
// define some glyphs that we want to install
|
||||
|
||||
var testVbox = '0 0 1 1',
|
||||
dTriangle = 'M.5,.2l.3,.6,h-.6z',
|
||||
dDiamond = 'M.2,.5l.3,-.3l.3,.3l-.3,.3z',
|
||||
newGlyphs = {
|
||||
triangle: dTriangle,
|
||||
diamond: dDiamond
|
||||
},
|
||||
dupGlyphs = {
|
||||
router: dTriangle,
|
||||
switch: dDiamond
|
||||
},
|
||||
idCollision = 'GlyphService.register(): ID collision: ';
|
||||
|
||||
it('should install new glyphs', function () {
|
||||
gs.init();
|
||||
expect(gs.ids().length).toEqual(numBaseGlyphs);
|
||||
spyOn($log, 'warn');
|
||||
|
||||
var ok = gs.register(testVbox, newGlyphs);
|
||||
expect(ok).toBeTruthy();
|
||||
expect($log.warn).not.toHaveBeenCalled();
|
||||
|
||||
expect(gs.ids().length).toEqual(numBaseGlyphs + 2);
|
||||
verifyGlyphLoaded('triangle', testVbox, 'M.5,.2');
|
||||
verifyGlyphLoaded('diamond', testVbox, 'M.2,.5');
|
||||
});
|
||||
|
||||
it('should not overwrite glyphs with dup IDs', function () {
|
||||
gs.init();
|
||||
expect(gs.ids().length).toEqual(numBaseGlyphs);
|
||||
spyOn($log, 'warn');
|
||||
|
||||
var ok = gs.register(testVbox, dupGlyphs);
|
||||
expect(ok).toBeFalsy();
|
||||
expect($log.warn).toHaveBeenCalledWith(idCollision + '"switch"');
|
||||
expect($log.warn).toHaveBeenCalledWith(idCollision + '"router"');
|
||||
|
||||
expect(gs.ids().length).toEqual(numBaseGlyphs);
|
||||
// verify original glyphs still exist...
|
||||
verifyGlyphLoaded('router', vbGlyph, 'M10,55A45,45');
|
||||
verifyGlyphLoaded('switch', vbGlyph, 'M10,20a10');
|
||||
});
|
||||
|
||||
it('should replace glyphs if asked nicely', function () {
|
||||
gs.init();
|
||||
expect(gs.ids().length).toEqual(numBaseGlyphs);
|
||||
spyOn($log, 'warn');
|
||||
|
||||
var ok = gs.register(testVbox, dupGlyphs, true);
|
||||
expect(ok).toBeTruthy();
|
||||
expect($log.warn).not.toHaveBeenCalled();
|
||||
|
||||
expect(gs.ids().length).toEqual(numBaseGlyphs);
|
||||
// verify glyphs have been overwritten...
|
||||
verifyGlyphLoaded('router', testVbox, 'M.5,.2');
|
||||
verifyGlyphLoaded('switch', testVbox, 'M.2,.5');
|
||||
});
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user