├── .gitignore
├── modules
├── css
│ ├── cssAlert.css
│ ├── ui-lightness
│ │ └── images
│ │ │ ├── ui-icons_222222_256x240.png
│ │ │ ├── ui-icons_228ef1_256x240.png
│ │ │ ├── ui-icons_ef8c08_256x240.png
│ │ │ ├── ui-icons_ffd27a_256x240.png
│ │ │ ├── ui-icons_ffffff_256x240.png
│ │ │ ├── ui-bg_flat_10_000000_40x100.png
│ │ │ ├── ui-bg_glass_65_ffffff_1x400.png
│ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png
│ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png
│ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png
│ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png
│ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png
│ │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png
│ │ │ └── ui-bg_highlight-soft_75_ffe45c_1x100.png
│ ├── tyniscrollbar.css
│ └── jquery.ui.datepicker.css
├── html
│ ├── options.html
│ ├── img
│ │ ├── info.png
│ │ ├── more.png
│ │ ├── next.png
│ │ ├── play.png
│ │ ├── prev.png
│ │ ├── stop.png
│ │ ├── warp.gif
│ │ ├── apply.png
│ │ ├── config.png
│ │ ├── delete.png
│ │ ├── discard.png
│ │ ├── drawing.png
│ │ ├── expand.png
│ │ ├── loading.gif
│ │ ├── pause.png
│ │ ├── pause2.png
│ │ ├── play2.png
│ │ ├── slider.png
│ │ ├── stop2.png
│ │ ├── wizard.png
│ │ ├── zoom_in.png
│ │ ├── formerror.png
│ │ ├── infoAlert.png
│ │ ├── openSlide.png
│ │ ├── play_next.png
│ │ ├── play_prev.png
│ │ ├── zoom_out.png
│ │ ├── closeSlide.png
│ │ ├── errorAlert.png
│ │ ├── fixedSlider.png
│ │ ├── fullscreen.png
│ │ ├── leftSlider.png
│ │ ├── play_next2.png
│ │ ├── play_prev2.png
│ │ ├── repeatEvent.png
│ │ ├── rightSlider.png
│ │ ├── screenshot.png
│ │ ├── successAlert.png
│ │ ├── attentionAlert.png
│ │ ├── miniarrow_left.gif
│ │ ├── bgplay_watermark.png
│ │ ├── fullscreen_hover.png
│ │ ├── miniarrow_right.gif
│ │ ├── screenshot_hover.png
│ │ ├── validationAlert.png
│ │ ├── bgplay_streaming_on.png
│ │ ├── touch_icon_disabled.png
│ │ ├── touch_icon_enabled.png
│ │ ├── bg-scrollbar-thumb-y.png
│ │ ├── bg-scrollbar-track-y.png
│ │ ├── bgplay_streaming_off.png
│ │ ├── bg-scrollbar-trackend-y.png
│ │ └── jqueryui
│ │ │ ├── animated-overlay.gif
│ │ │ ├── ui-icons_222222_256x240.png
│ │ │ ├── ui-icons_228ef1_256x240.png
│ │ │ ├── ui-icons_2e83ff_256x240.png
│ │ │ ├── ui-icons_454545_256x240.png
│ │ │ ├── ui-icons_888888_256x240.png
│ │ │ ├── ui-icons_cd0a0a_256x240.png
│ │ │ ├── ui-icons_ef8c08_256x240.png
│ │ │ ├── ui-icons_ffd27a_256x240.png
│ │ │ ├── ui-icons_ffffff_256x240.png
│ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png
│ │ │ ├── ui-bg_flat_10_000000_40x100.png
│ │ │ ├── ui-bg_flat_75_ffffff_40x100.png
│ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png
│ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png
│ │ │ ├── ui-bg_glass_55_fbf9ee_1x400.png
│ │ │ ├── ui-bg_glass_55_fcfbf3_1x400.png
│ │ │ ├── ui-bg_glass_65_dadada_1x400.png
│ │ │ ├── ui-bg_glass_65_ffffff_1x400.png
│ │ │ ├── ui-bg_glass_75_dadada_1x400.png
│ │ │ ├── ui-bg_glass_75_e6e6e6_1x400.png
│ │ │ ├── ui-bg_glass_75_f0f0f0_1x400.png
│ │ │ ├── ui-bg_glass_95_fef1ec_1x400.png
│ │ │ ├── ui-bg_inset-soft_95_fef1ec_1x100.png
│ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png
│ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png
│ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png
│ │ │ ├── ui-bg_highlight-hard_75_ffd1b3_1x100.png
│ │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png
│ │ │ ├── ui-bg_highlight-soft_75_cccccc_1x100.png
│ │ │ └── ui-bg_highlight-soft_75_ffe45c_1x100.png
│ ├── js_nocors
│ │ ├── options.html.js
│ │ ├── gdbplot.html.js
│ │ ├── nodePositionFixed.html.js
│ │ ├── optionPeerFilter.html.js
│ │ ├── nodePosition.html.js
│ │ ├── optionRestoreGraph.html.js
│ │ ├── optionAnimationSpeed.html.js
│ │ ├── optionGraphDeep.html.js
│ │ ├── optionLinkWeight.html.js
│ │ ├── graph.html.js
│ │ ├── main.html.js
│ │ ├── aboutBgplay.html.js
│ │ ├── legend.html.js
│ │ ├── timeline.html.js
│ │ ├── controllerLight.html.js
│ │ ├── infoPanel.html.js
│ │ ├── controller.html.js
│ │ ├── controllerTraceroutes.html.js
│ │ └── infoPanelClustered.html.js
│ ├── nodePositionFixed.html
│ ├── gdbplot.html
│ ├── optionRestoreGraph.html
│ ├── nodePosition.html
│ ├── optionAnimationSpeed.html
│ ├── optionGraphDeep.html
│ ├── optionLinkWeight.html
│ ├── graph.html
│ ├── main.html
│ ├── aboutBgplay.html
│ ├── legend.html
│ ├── timeline.html
│ ├── controllerLight.html
│ ├── infoPanel.html
│ ├── infoPanelClustered.html
│ ├── controllerTraceroutes.html
│ └── controller.html
├── bgplay
│ ├── BgpDataChecksView.js
│ ├── AboutBgplayView.js
│ ├── OptionAnimationSpeedView.js
│ ├── OptionPeerFilter.js
│ ├── OptionLinkWeight.js
│ ├── LegendView.js
│ ├── OptionGraphDeep.js
│ ├── OptionPopupView.js
│ ├── OptionRestoreGraph.js
│ └── InfoPanelView.js
├── FullScreenView.js
├── ScreenShotView.js
├── bgplay_ripestat
│ └── OptionPopupViewRipestat.js
└── LivePermalinkView.js
├── favicon.ico
├── docs
├── assets
│ ├── favicon.png
│ ├── css
│ │ ├── logo.png
│ │ └── external-small.png
│ ├── img
│ │ └── spinner.gif
│ ├── index.html
│ ├── js
│ │ ├── yui-prettify.js
│ │ ├── api-filter.js
│ │ └── api-search.js
│ └── vendor
│ │ └── prettify
│ │ └── prettify-min.css
├── files
│ └── index.html
├── classes
│ └── index.html
├── modules
│ └── index.html
└── api.js
├── AUTHORS.txt
├── widget
├── bgplayjs-common-model.js
├── bgplayjs-main-widget.js
├── bgplay-isolario
│ └── bgplay-modules.js
├── bgplay-ripestat
│ └── bgplay-ripestat-modules.js
└── bgplay
│ └── bgplay-modules.js
├── run_bgplay.html
├── run_bgplay_realtime.html
├── test
├── UpdateStateTestCase.js
└── TreeMapTestCase.js
├── model
├── Event.js
├── Target.js
├── Instant.js
├── Cluster.js
├── Node.js
├── Path.js
└── Source.js
├── lib
├── jquery.mousewheel.min.js
├── jquery.xdomainajax.js
├── jquery.tinyscrollbar.min.js
└── dateFormat.js
├── README.md
├── LICENSE.txt
├── utils
├── validator.js
├── cssAlert.js
└── compatibilityTricks.js
└── connectors
├── isolario
├── errors.js
└── IsolarioWebSocket.js
└── DataEmulator.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 |
--------------------------------------------------------------------------------
/modules/css/cssAlert.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/modules/html/options.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/favicon.ico
--------------------------------------------------------------------------------
/docs/assets/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/docs/assets/favicon.png
--------------------------------------------------------------------------------
/docs/assets/css/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/docs/assets/css/logo.png
--------------------------------------------------------------------------------
/modules/html/img/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/info.png
--------------------------------------------------------------------------------
/modules/html/img/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/more.png
--------------------------------------------------------------------------------
/modules/html/img/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/next.png
--------------------------------------------------------------------------------
/modules/html/img/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/play.png
--------------------------------------------------------------------------------
/modules/html/img/prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/prev.png
--------------------------------------------------------------------------------
/modules/html/img/stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/stop.png
--------------------------------------------------------------------------------
/modules/html/img/warp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/warp.gif
--------------------------------------------------------------------------------
/docs/assets/img/spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/docs/assets/img/spinner.gif
--------------------------------------------------------------------------------
/modules/html/img/apply.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/apply.png
--------------------------------------------------------------------------------
/modules/html/img/config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/config.png
--------------------------------------------------------------------------------
/modules/html/img/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/delete.png
--------------------------------------------------------------------------------
/modules/html/img/discard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/discard.png
--------------------------------------------------------------------------------
/modules/html/img/drawing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/drawing.png
--------------------------------------------------------------------------------
/modules/html/img/expand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/expand.png
--------------------------------------------------------------------------------
/modules/html/img/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/loading.gif
--------------------------------------------------------------------------------
/modules/html/img/pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/pause.png
--------------------------------------------------------------------------------
/modules/html/img/pause2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/pause2.png
--------------------------------------------------------------------------------
/modules/html/img/play2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/play2.png
--------------------------------------------------------------------------------
/modules/html/img/slider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/slider.png
--------------------------------------------------------------------------------
/modules/html/img/stop2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/stop2.png
--------------------------------------------------------------------------------
/modules/html/img/wizard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/wizard.png
--------------------------------------------------------------------------------
/modules/html/img/zoom_in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/zoom_in.png
--------------------------------------------------------------------------------
/modules/html/img/formerror.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/formerror.png
--------------------------------------------------------------------------------
/modules/html/img/infoAlert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/infoAlert.png
--------------------------------------------------------------------------------
/modules/html/img/openSlide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/openSlide.png
--------------------------------------------------------------------------------
/modules/html/img/play_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/play_next.png
--------------------------------------------------------------------------------
/modules/html/img/play_prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/play_prev.png
--------------------------------------------------------------------------------
/modules/html/img/zoom_out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/zoom_out.png
--------------------------------------------------------------------------------
/modules/html/js_nocors/options.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('options.html', '');
--------------------------------------------------------------------------------
/modules/html/img/closeSlide.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/closeSlide.png
--------------------------------------------------------------------------------
/modules/html/img/errorAlert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/errorAlert.png
--------------------------------------------------------------------------------
/modules/html/img/fixedSlider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/fixedSlider.png
--------------------------------------------------------------------------------
/modules/html/img/fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/fullscreen.png
--------------------------------------------------------------------------------
/modules/html/img/leftSlider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/leftSlider.png
--------------------------------------------------------------------------------
/modules/html/img/play_next2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/play_next2.png
--------------------------------------------------------------------------------
/modules/html/img/play_prev2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/play_prev2.png
--------------------------------------------------------------------------------
/modules/html/img/repeatEvent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/repeatEvent.png
--------------------------------------------------------------------------------
/modules/html/img/rightSlider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/rightSlider.png
--------------------------------------------------------------------------------
/modules/html/img/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/screenshot.png
--------------------------------------------------------------------------------
/modules/html/img/successAlert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/successAlert.png
--------------------------------------------------------------------------------
/docs/assets/css/external-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/docs/assets/css/external-small.png
--------------------------------------------------------------------------------
/modules/html/img/attentionAlert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/attentionAlert.png
--------------------------------------------------------------------------------
/modules/html/img/miniarrow_left.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/miniarrow_left.gif
--------------------------------------------------------------------------------
/modules/html/img/bgplay_watermark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/bgplay_watermark.png
--------------------------------------------------------------------------------
/modules/html/img/fullscreen_hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/fullscreen_hover.png
--------------------------------------------------------------------------------
/modules/html/img/miniarrow_right.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/miniarrow_right.gif
--------------------------------------------------------------------------------
/modules/html/img/screenshot_hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/screenshot_hover.png
--------------------------------------------------------------------------------
/modules/html/img/validationAlert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/validationAlert.png
--------------------------------------------------------------------------------
/modules/html/img/bgplay_streaming_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/bgplay_streaming_on.png
--------------------------------------------------------------------------------
/modules/html/img/touch_icon_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/touch_icon_disabled.png
--------------------------------------------------------------------------------
/modules/html/img/touch_icon_enabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/touch_icon_enabled.png
--------------------------------------------------------------------------------
/modules/html/img/bg-scrollbar-thumb-y.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/bg-scrollbar-thumb-y.png
--------------------------------------------------------------------------------
/modules/html/img/bg-scrollbar-track-y.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/bg-scrollbar-track-y.png
--------------------------------------------------------------------------------
/modules/html/img/bgplay_streaming_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/bgplay_streaming_off.png
--------------------------------------------------------------------------------
/modules/html/img/bg-scrollbar-trackend-y.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/bg-scrollbar-trackend-y.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/animated-overlay.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/animated-overlay.gif
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_222222_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_222222_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_228ef1_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_228ef1_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_2e83ff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_2e83ff_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_454545_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_454545_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_888888_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_888888_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_cd0a0a_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_cd0a0a_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_ef8c08_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_ef8c08_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_ffd27a_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_ffd27a_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-icons_ffffff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-icons_ffffff_256x240.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_flat_0_aaaaaa_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_flat_0_aaaaaa_40x100.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_flat_10_000000_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_flat_10_000000_40x100.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_flat_75_ffffff_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_flat_75_ffffff_40x100.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_100_f6f6f6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_100_f6f6f6_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_100_fdf5ce_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_100_fdf5ce_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_55_fbf9ee_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_55_fbf9ee_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_55_fcfbf3_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_55_fcfbf3_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_65_dadada_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_65_dadada_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_75_dadada_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_75_dadada_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_75_e6e6e6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_75_e6e6e6_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_75_f0f0f0_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_75_f0f0f0_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_glass_95_fef1ec_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_glass_95_fef1ec_1x400.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-icons_222222_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-icons_222222_256x240.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-icons_228ef1_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-icons_228ef1_256x240.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-icons_ef8c08_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-icons_ef8c08_256x240.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-icons_ffd27a_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-icons_ffd27a_256x240.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-icons_ffffff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-icons_ffffff_256x240.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_inset-soft_95_fef1ec_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_inset-soft_95_fef1ec_1x100.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_gloss-wave_35_f6a828_500x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_gloss-wave_35_f6a828_500x100.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_diagonals-thick_18_b81900_40x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_diagonals-thick_18_b81900_40x40.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_diagonals-thick_20_666666_40x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_diagonals-thick_20_666666_40x40.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_highlight-hard_75_ffd1b3_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_highlight-hard_75_ffd1b3_1x100.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_highlight-soft_100_eeeeee_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_highlight-soft_100_eeeeee_1x100.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_highlight-soft_75_cccccc_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_highlight-soft_75_cccccc_1x100.png
--------------------------------------------------------------------------------
/modules/html/img/jqueryui/ui-bg_highlight-soft_75_ffe45c_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/html/img/jqueryui/ui-bg_highlight-soft_75_ffe45c_1x100.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
--------------------------------------------------------------------------------
/modules/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/massimocandela/BGPlay/HEAD/modules/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
--------------------------------------------------------------------------------
/modules/html/nodePositionFixed.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/modules/html/gdbplot.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Your browser doesn't support HTML5 Canvas.
4 |
5 |
--------------------------------------------------------------------------------
/docs/files/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Redirector
5 |
6 |
7 |
8 | Click here to redirect
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/assets/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Redirector
5 |
6 |
7 |
8 | Click here to redirect
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/classes/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Redirector
5 |
6 |
7 |
8 | Click here to redirect
9 |
10 |
11 |
--------------------------------------------------------------------------------
/docs/modules/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Redirector
5 |
6 |
7 |
8 | Click here to redirect
9 |
10 |
11 |
--------------------------------------------------------------------------------
/modules/html/js_nocors/gdbplot.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('gdbplot.html', ''+
2 | '
'+
3 | ' Your browser doesn\'t support HTML5 Canvas. '+
4 | '
'+
5 | '
');
--------------------------------------------------------------------------------
/modules/html/js_nocors/nodePositionFixed.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('nodePositionFixed.html', ''+
2 | ''+
3 | ' '+
4 | '
');
--------------------------------------------------------------------------------
/modules/html/optionRestoreGraph.html:
--------------------------------------------------------------------------------
1 |
2 | Restore graph:
3 |
4 |
--------------------------------------------------------------------------------
/modules/html/nodePosition.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/modules/html/js_nocors/optionPeerFilter.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('optionPeerFilter.html', ' ' +
2 | 'Only show data from Collector Peer(s): ' +
3 | ' ' +
4 | '
');
--------------------------------------------------------------------------------
/modules/html/js_nocors/nodePosition.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('nodePosition.html', ''+
2 | ''+
3 | ' '+
4 | ' '+
5 | '
');
--------------------------------------------------------------------------------
/modules/html/js_nocors/optionRestoreGraph.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('optionRestoreGraph.html', ''+
2 | ' Restore graph: '+
3 | ' '+
4 | '
');
--------------------------------------------------------------------------------
/AUTHORS.txt:
--------------------------------------------------------------------------------
1 | AUTHORS
2 |
3 | Massimo Candela
4 | Roma Tre University
5 | http://massimocandela.com
6 |
7 | Giuseppe Di Battista
8 | Roma Tre University
9 | http://www.dia.uniroma3.it/~gdb
10 |
11 | Claudio Squarcella
12 | Roma Tre University
13 | http://www.dia.uniroma3.it/~squarcel
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/modules/html/optionAnimationSpeed.html:
--------------------------------------------------------------------------------
1 |
2 |
Animation speed:
3 |
4 |
5 |
--------------------------------------------------------------------------------
/modules/html/optionGraphDeep.html:
--------------------------------------------------------------------------------
1 |
2 |
Hide AS if reached by paths longer than:
3 |
4 |
5 |
--------------------------------------------------------------------------------
/modules/html/optionLinkWeight.html:
--------------------------------------------------------------------------------
1 |
2 |
Only show AS links if seen by # RIS peers:
3 |
4 |
5 |
--------------------------------------------------------------------------------
/modules/html/js_nocors/optionAnimationSpeed.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('optionAnimationSpeed.html', ''+
2 | '
Animation speed: '+
3 | '
'+
4 | '
'+
5 | '
');
--------------------------------------------------------------------------------
/modules/html/js_nocors/optionGraphDeep.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('optionGraphDeep.html', ''+
2 | '
Hide AS if reached by paths longer than: '+
3 | '
'+
4 | '
'+
5 | '
');
--------------------------------------------------------------------------------
/modules/html/graph.html:
--------------------------------------------------------------------------------
1 | {{#isMobile}}
2 |
3 | {{/isMobile}}
4 | {{^isMobile}}
5 |
6 |
7 | {{/isMobile}}
8 | Search AS:
9 |
10 |
--------------------------------------------------------------------------------
/modules/html/js_nocors/optionLinkWeight.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('optionLinkWeight.html', '' +
2 | '
Only show AS links if seen by # RIS peers: ' +
3 | '
' +
4 | '
' +
5 | '
');
--------------------------------------------------------------------------------
/modules/html/js_nocors/graph.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('graph.html', '{{#isMobile}}'+
2 | ' '+
3 | '{{/isMobile}}' +
4 | '{{^isMobile}}' +
5 | ' ' +
6 | ' ' +
7 | '{{/isMobile}}'+
8 | ''+
9 | '
Search AS:
'+
10 | '
');
--------------------------------------------------------------------------------
/modules/html/main.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/docs/assets/js/yui-prettify.js:
--------------------------------------------------------------------------------
1 | YUI().use('node', function(Y) {
2 | var code = Y.all('.prettyprint.linenums');
3 | if (code.size()) {
4 | code.each(function(c) {
5 | var lis = c.all('ol li'),
6 | l = 1;
7 | lis.each(function(n) {
8 | n.prepend(' ');
9 | l++;
10 | });
11 | });
12 | var h = location.hash;
13 | location.hash = '';
14 | h = h.replace('LINE_', 'LINENUM_');
15 | location.hash = h;
16 | }
17 | });
18 |
--------------------------------------------------------------------------------
/modules/html/js_nocors/main.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('main.html', '
'+
2 | '
'+
3 | ''+
4 | ' '+
6 | '
'+
7 | '
'+
8 | '
'+
9 | '
'+
10 | ''+
11 | '
'+
12 | ''+
13 | '');
--------------------------------------------------------------------------------
/docs/assets/vendor/prettify/prettify-min.css:
--------------------------------------------------------------------------------
1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
--------------------------------------------------------------------------------
/widget/bgplayjs-common-model.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | define(
10 | [
11 | BGPLAY_MODEL_URL + 'Bgplay.js',
12 | BGPLAY_MODEL_URL + 'Cluster.js',
13 | BGPLAY_MODEL_URL + 'Event.js',
14 | BGPLAY_MODEL_URL + 'Instant.js',
15 | BGPLAY_MODEL_URL + 'Node.js',
16 | BGPLAY_MODEL_URL + 'Path.js',
17 | BGPLAY_MODEL_URL + 'Source.js',
18 | BGPLAY_MODEL_URL + 'Target.js'
19 | ], function(){
20 |
21 | });
--------------------------------------------------------------------------------
/run_bgplay.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | bgplay.js
4 |
5 |
6 |
7 |
8 |
26 |
27 |
--------------------------------------------------------------------------------
/modules/html/aboutBgplay.html:
--------------------------------------------------------------------------------
1 | BGPlay.js provides a graphical and intuitive representation of the inter-domain routing and its evolution over time.
2 | It has been developed as a part of the Master’s thesis of Massimo Candela at the
3 | Computer Network Research Group of Roma Tre University (Italy)
4 | in collaboration with RIPE NCC .
5 |
6 | Documentation and other info about this or other projects based on BGPlay.js are available here .
7 |
8 | The source code can be found on GitHub .
9 |
10 | You can embed this tool in your service for free, or share instances/screenshots, but please consider using a
11 | proper acknowledgment .
--------------------------------------------------------------------------------
/run_bgplay_realtime.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | bgplay.js
4 |
5 |
6 |
7 |
8 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/modules/html/js_nocors/aboutBgplay.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('aboutBgplay.html', 'BGPlay.js provides a graphical and intuitive representation of the inter-domain routing and its evolution over time.
' +
2 | 'It has been developed as a part of the Master’s thesis of
Massimo Candela at the ' +
3 | '
Computer Network Research Group of Roma Tre University (Italy) ' +
4 | 'in collaboration with
RIPE NCC . ' +
5 | '
' +
6 | 'Documentation and other info about this or other projects based on BGPlay.js are available
here . ' +
7 | '
' +
8 | 'The source code can be found on
GitHub . ' +
9 | '
' +
10 | 'You can embed this tool in your service for free, or share instances/screenshots, but please consider using a ' +
11 | '
proper acknowledgment .
');
--------------------------------------------------------------------------------
/test/UpdateStateTestCase.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | BplayTest = TestCase("BgplayTest");
10 | var bgplay;
11 |
12 | //initialization, this function will be invoked before each test.
13 | BplayTest.prototype.setUp = function () {
14 | JsonWrap(prefixhistory);
15 | };
16 |
17 | //Test UC1
18 | BplayTest.prototype.testInitialState = function () {
19 | assertEquals(bgplay.get("cur_instant").get("timestamp"), 1333756800);
20 | assertEquals(bgplay.get("sources").get("rrc0-212.25.27.44").get("cur_events").get("1.23.97.0/24").get("shortdescription"), "8758 15576 6772 6730 6730 3320 3561 9498 45528");
21 | };
22 |
23 | //Test UC2
24 | BplayTest.prototype.testSetCurInstant = function () {
25 | bgplay.setCurInstant(new Instant({id:1, timestamp:1333776311}));
26 | assertEquals(bgplay.get("cur_instant").get("timestamp"), 1333776311);
27 | };
28 |
29 |
30 |
--------------------------------------------------------------------------------
/model/Event.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | /**
10 | * @class Event
11 | * @module model
12 | */
13 | var Event = Backbone.Model.extend({
14 | /**
15 | * The validation method of this object.
16 | * This method is used to check the initialization parameters.
17 | * @method validate
18 | * @param {Map} A map of parameters
19 | * @return {Array} An array of {String} errors
20 | */
21 | validate:function(attrs){
22 | var err=[];
23 |
24 | if(attrs.instant==null)
25 | err.push("Instant cannot be null!");
26 | if(attrs.target==null)
27 | err.push("Target cannot be null!");
28 | if(attrs.source==null)
29 | err.push("Source cannot be null!");
30 |
31 | if (err.length>0)
32 | return err;
33 | }
34 | });
35 |
36 | var Events=Backbone.Collection.extend({
37 | model:Event
38 | });
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/modules/css/tyniscrollbar.css:
--------------------------------------------------------------------------------
1 | /* Tiny Scrollbar */
2 | .bgplayControlPrefixDiv .viewport { width: 345px; height: 120px; overflow: hidden; position: relative; }
3 | .bgplayControlPrefixDiv .overview { list-style: none; position: absolute; left: 0; top: 0; padding: 0; margin: 0; }
4 | .bgplayControlPrefixDiv .scrollbar{ background: transparent url(lib/img/bgplay/bg-scrollbar-track-y.png) no-repeat 0 0; position: relative; background-position: 0 0; float: right; width: 15px; }
5 | .bgplayControlPrefixDiv .track { background: transparent url(lib/img/bgplay/bg-scrollbar-trackend-y.png) no-repeat 0 100%; height: 100%; width:13px; position: relative; padding: 0 1px; }
6 | .bgplayControlPrefixDiv .thumb { background: transparent url(lib/img/bgplay/bg-scrollbar-thumb-y.png) no-repeat 50% 100%; height: 20px; width: 25px; cursor: pointer; overflow: hidden; position: absolute; top: 0; left: -5px; }
7 | .bgplayControlPrefixDiv .thumb .end { background: transparent url(lib/img/bgplay/bg-scrollbar-thumb-y.png) no-repeat 50% 0; overflow: hidden; height: 5px; width: 25px; }
8 | .bgplayControlPrefixDiv .disable { display: none; }
9 | .bgplayControlPrefixDiv .noSelect { user-select: none; -o-user-select: none; -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; }
10 |
--------------------------------------------------------------------------------
/modules/html/legend.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Origin AS
5 |
6 |
7 |
8 |
9 |
10 | Collector peer
11 |
12 |
13 |
14 |
15 |
16 | Other
17 |
18 |
19 |
20 |
21 |
22 | Dynamic path
23 |
24 |
25 |
26 |
27 |
28 | Static path
29 |
30 |
31 |
--------------------------------------------------------------------------------
/docs/api.js:
--------------------------------------------------------------------------------
1 | YUI.add("yuidoc-meta", function(Y) {
2 | Y.YUIDoc = { meta: {
3 | "classes": [
4 | "BgpDataChecksView",
5 | "Bgplay",
6 | "ControllerView",
7 | "Event",
8 | "FullScreenView",
9 | "GraphView",
10 | "InfoPanelView",
11 | "Instant",
12 | "JsonWrapRipestat",
13 | "LivePermalinkView",
14 | "MainView",
15 | "Node",
16 | "NodePositionView",
17 | "NodeView",
18 | "Path",
19 | "PathView",
20 | "ScreenShotView",
21 | "Source",
22 | "Target",
23 | "TimelineView"
24 | ],
25 | "modules": [
26 | "model",
27 | "modules"
28 | ],
29 | "allModules": [
30 | {
31 | "displayName": "model",
32 | "name": "model",
33 | "description": "This is the Facade of the model layer.\nIt manages all the collections of objects of the model layer and all the parameters needed to describe the domain."
34 | },
35 | {
36 | "displayName": "modules",
37 | "name": "modules",
38 | "description": "This is a module specific for BGP.\nThe objective of this module is to provide a set of auto-start function for checking BGP data."
39 | }
40 | ]
41 | } };
42 | });
--------------------------------------------------------------------------------
/modules/html/js_nocors/legend.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('legend.html', ''+
2 | '
'+
3 | '
'+
4 | ' Origin AS'+
5 | '
'+
6 | '
'+
7 | ''+
8 | '
'+
9 | '
'+
10 | ' Collector peer'+
11 | '
'+
12 | '
'+
13 | ''+
14 | '
'+
15 | '
'+
16 | ' Other'+
17 | '
'+
18 | '
'+
19 | ''+
20 | '
'+
21 | '
'+
22 | ' Dynamic path'+
23 | '
'+
24 | '
'+
25 | ''+
26 | '
'+
27 | '
'+
28 | ' Static path'+
29 | '
'+
30 | '
'+
31 | '
');
--------------------------------------------------------------------------------
/lib/jquery.mousewheel.min.js:
--------------------------------------------------------------------------------
1 | /*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
2 | * Licensed under the MIT License (LICENSE.txt).
3 | *
4 | * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
5 | * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
6 | * Thanks to: Seamus Leahy for adding deltaX and deltaY
7 | *
8 | * Version: 3.0.6
9 | *
10 | * Requires: 1.2.2+
11 | */
12 | (function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery)
13 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | BGPlay.js (+ real-time version!)
2 | ==========================
3 | ***This repo contains the classic BGPlay + the real-time version.***
4 |
5 | 
6 |
7 | BGPlay.js provides a graphical and intuitive representation of the inter-domain routing and its evolution over time.
8 |
9 | It has been developed as a part of the Master’s thesis of [Massimo Candela](http://massimocandela.com) at the
10 | [Computer Network Research Group](https://compunet.ing.uniroma3.it/) of Roma Tre University (Italy)
11 | in collaboration with [RIPE NCC](https://www.ripe.net).
12 |
13 | The project is ***open source, see LICENSE.txt*** for more information.
14 | The modular architecture of this project allowed the creation of some others tools based on it, e.g. [Radian](http://www.dia.uniroma3.it/~compunet/projects/radian/).
15 |
16 | You can embed this tool in your service for free, but please use a [proper acknowledgment](http://bgplay.massimocandela.com/bgplay-doc/#copyright).
17 |
18 | Shortcuts:
19 | ----------
20 | ***Do you want to use your data in BGPlay?*** Go [here](https://bgplay.massimocandela.com/bgplay-doc/#yourdata)
21 |
22 | ***Real-time version of BGPlay based on WebSocket?*** Go [here](https://bgplay.massimocandela.com/bgplay-doc/#realtime)
23 |
24 | ***Documentation?* Other info?** Go [here](https://bgplay.massimocandela.com/bgplay-doc/)
25 |
26 |
27 | Examples:
28 | ---------
29 | See 'run_bgplay.html' for the classic BGPlay and the 'run_bgplay_realtime.html' for the real-time version.
30 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | BGPlay.js
2 | Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
3 | http://bgplayjs.com
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | 1) The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software
14 |
15 | 2) The tool must be referred with the name BGPlay, both in the page in which is embedded
16 | and in other third-party pages like social media
17 |
18 | 3) The page in which the tool is embedded must contain a link "About BGPlay" at the bottom
19 | of the tool (already there in the new versions) pointing to the page http://bgplayjs.com/?section=bgplay
20 |
21 |
22 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28 | THE SOFTWARE.
--------------------------------------------------------------------------------
/utils/validator.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | function validateIpv4and6Prefix(str){
10 | return validateIpv6Prefix(str) || validateIpv4Prefix(str);
11 | }
12 |
13 | function validateIpv4and6Address(str){
14 | return validateIpv6Address(str) || validateIpv4Address(str);
15 | }
16 |
17 | function validateIpv6Prefix(str){
18 | if (str.indexOf(":") == -1)
19 | return false;
20 | return /^:?([a-fA-F0-9]{1,4}(:|.)?){0,8}(:|::)?([a-fA-F0-9]{1,4}(:|.)?){0,8}\/([0-9]|[1-9][1-9]|1[0-1][0-9]|12[0-8])$/.test(str);
21 |
22 | }
23 | function validateIpv4Prefix(str){
24 | return /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|2[0-5][0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|2[0-5][0-5])\/([0-9]|[1-2][0-9]|3[0-2])$/.test(str);
25 | }
26 |
27 |
28 | function validateIpv6Address(str){
29 | if (str.indexOf(":") == -1)
30 | return false;
31 | return /^:?([a-fA-F0-9]{1,4}(:|.)?){0,8}(:|::)?([a-fA-F0-9]{1,4}(:|.)?){0,8}$/.test(str);
32 |
33 | }
34 | function validateIpv4Address(str){
35 | return /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|2[0-5][0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|2[0-5][0-5])$/.test(str);
36 | }
37 |
38 | function validateAS(str){
39 | return /^((AS|as|As|aS)?[0-9]{1,10})$/.test(str);
40 | }
41 |
42 |
43 | function validateProbe(str){
44 | return /^([0-9]{1,6})$/.test(str);
45 | }
46 |
--------------------------------------------------------------------------------
/modules/html/timeline.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
Your browser doesn't support HTML5 Canvas.
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
Your browser doesn't support HTML5 Canvas.
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/docs/assets/js/api-filter.js:
--------------------------------------------------------------------------------
1 | YUI.add('api-filter', function (Y) {
2 |
3 | Y.APIFilter = Y.Base.create('apiFilter', Y.Base, [Y.AutoCompleteBase], {
4 | // -- Initializer ----------------------------------------------------------
5 | initializer: function () {
6 | this._bindUIACBase();
7 | this._syncUIACBase();
8 | },
9 | getDisplayName: function(name) {
10 |
11 | Y.each(Y.YUIDoc.meta.allModules, function(i) {
12 | if (i.name === name && i.displayName) {
13 | name = i.displayName;
14 | }
15 | });
16 |
17 | return name;
18 | }
19 |
20 | }, {
21 | // -- Attributes -----------------------------------------------------------
22 | ATTRS: {
23 | resultHighlighter: {
24 | value: 'phraseMatch'
25 | },
26 |
27 | // May be set to "classes" or "modules".
28 | queryType: {
29 | value: 'classes'
30 | },
31 |
32 | source: {
33 | valueFn: function() {
34 | var self = this;
35 | return function(q) {
36 | var data = Y.YUIDoc.meta[self.get('queryType')],
37 | out = [];
38 | Y.each(data, function(v) {
39 | if (v.toLowerCase().indexOf(q.toLowerCase()) > -1) {
40 | out.push(v);
41 | }
42 | });
43 | return out;
44 | };
45 | }
46 | }
47 | }
48 | });
49 |
50 | }, '3.4.0', {requires: [
51 | 'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources'
52 | ]});
53 |
--------------------------------------------------------------------------------
/model/Target.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | /**
10 | * @class Target
11 | * @module model
12 | */
13 | var Target = Backbone.Model.extend({
14 | defaults: function(){
15 | return{
16 | type:"target",
17 | nodes:[]
18 | }
19 |
20 | },
21 | addNode:function(element){
22 | if (!arrayContains(this.attributes.nodes, element)){
23 | this.attributes.nodes.push(element);
24 | }
25 | },
26 |
27 | /**
28 | * The validation method of this object.
29 | * This method is used to check the initialization parameters.
30 | * @method validate
31 | * @param {Map} A map of parameters
32 | * @return {Array} An array of {String} errors
33 | */
34 | validate:function(attrs){
35 | var err=[];
36 | if(attrs.id==null)
37 | err.push("An id is required!");
38 |
39 | if (err.length>0)
40 | return err;
41 | },
42 |
43 | /**
44 | * Returns a string representing this object.
45 | * @method toString
46 | * @return {String} A string representing this object
47 | */
48 | toString:function(){
49 | var out="";
50 | switch (this.attributes.environment.bgplay.get("type")){
51 | default:
52 | out=this.get("id")||"";
53 | break;
54 | }
55 | return out;
56 | }
57 | });
58 |
59 | var Targets=Backbone.Collection.extend({
60 | model:Target
61 | });
62 |
--------------------------------------------------------------------------------
/modules/html/js_nocors/timeline.html.js:
--------------------------------------------------------------------------------
1 | addTemplateContent('timeline.html', ''+
2 | '
'+
3 | '
'+
4 | '
'+
5 | '
'+
6 | '
'+
7 | '
'+
8 | '
'+
9 | '
Your browser doesn\'t support HTML5 Canvas. '+
10 | '
'+
11 | ''+
12 | '
'+
13 | '
'+
14 | '
'+
15 | ''+
16 | '
'+
17 | '
'+
18 | '
Your browser doesn\'t support HTML5 Canvas. '+
19 | '
'+
20 | '
'+
21 | '
'+
22 | '
');
--------------------------------------------------------------------------------
/modules/bgplay/BgpDataChecksView.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | /**
10 | * This is a module specific for BGP.
11 | * The objective of this module is to provide a set of auto-start function for checking BGP data.
12 | * @class BgpDataChecksView
13 | * @module modules
14 | */
15 | define([], function(){
16 |
17 |
18 | var BgpDataChecksView = Backbone.View.extend({
19 |
20 | /**
21 | * The initialization method of this object.
22 | * @method initialize
23 | * @param {Map} A map of parameters
24 | */
25 | initialize:function(){
26 | this.environment=this.options.environment;
27 | this.bgplay=this.environment.bgplay;
28 | this.fileRoot=this.environment.fileRoot;
29 | this.eventAggregator=this.environment.eventAggregator;
30 |
31 |
32 |
33 | this.eventAggregator.trigger("autoStartFunction",
34 | {
35 | func: function(){
36 | var nodes, realPrefixes, prefixes, n, length, notFoundPrefixes, targets, environment;
37 | environment = this.environment;
38 |
39 | environment.bgplay.get("targets").each(function(target){
40 | if (target.get("nodes").length>1){
41 | environment.cssAlert.alert("The prefix "+target.get("id")+" is announced by more than one AS: " + arrayToString(target.get("nodes"),', '),"warning",3000);
42 | }
43 | });
44 |
45 | }, context: this
46 | });
47 |
48 | this.eventAggregator.trigger("moduleLoaded", this);
49 | }
50 | });
51 |
52 | return BgpDataChecksView;
53 | });
54 |
--------------------------------------------------------------------------------
/model/Instant.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | /**
10 | * An instance of Instant is an abstraction of a point in time.
11 | * It is composed of an ID and a unix timestamp.
12 | * The timestamp is the first parameter considered during a sort of a set of instants.
13 | * In case of equal timestamps, the ID order is decisive.
14 | * @class Instant
15 | * @module model
16 | */
17 | var Instant = Backbone.Model.extend({
18 | getId:function(){
19 | return this.get("id");
20 | },
21 |
22 | /**
23 | * Returns the timestamp of this instant.
24 | * @method getTimestamp
25 | * @return {Integer} The timestamp of this instant
26 | */
27 | getTimestamp:function(){
28 | return this.get("timestamp");
29 | },
30 |
31 | /**
32 | * The validation method of this object.
33 | * This method is used to check the initialization parameters.
34 | * @method validate
35 | * @param {Map} A map of parameters
36 | * @return {Array} An array of {String} errors
37 | */
38 | validate:function(attrs){
39 | var err=[];
40 | if(attrs.id==null)
41 | err.push("Id cannot be null");
42 | if(attrs.timestamp==null)
43 | err.push("Timestamp cannot be null");
44 |
45 | if (err.length>0)
46 | return err;
47 | },
48 |
49 | /**
50 | * Returns a human-readable string representing the timestamp of this instant.
51 | * @method getDate
52 | * @return {String} A human-readable string representing the timestamp of this instant
53 | */
54 | getDate:function(){
55 | return dateToString(new Date(this.get("timestamp")));
56 | },
57 |
58 | /**
59 | * Returns a string representing this object.
60 | * @method toString
61 | * @return {String} A string representing this object
62 | */
63 | toString:function(){
64 | return this.get("id")+","+this.get("timestamp");
65 | }
66 | });
--------------------------------------------------------------------------------
/model/Cluster.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | /**
10 | * @class Cluster
11 | * @module model
12 | */
13 | var Cluster = Backbone.Model.extend({
14 | defaults:{
15 | type:"cluster"
16 | },
17 | urlRoot : '/cluster',
18 |
19 | /**
20 | * The initialization method of this object.
21 | * @method initialize
22 | * @param {Map} A map of parameters
23 | */
24 | initialize:function(){
25 | this.attributes.nodes = new net.webrobotics.TreeMap(comparator, {allowDuplicateKeys:false, suppressDuplicateKeyAlerts:true});
26 | },
27 |
28 | /**
29 | * Adds a node to this cluster.
30 | * @method addSource
31 | * @param {Object} An instance of Node
32 | */
33 | addNode:function(node){
34 | this.get("nodes").put(node.id, node);
35 | },
36 |
37 | getNode:function(id){
38 | return this.get("nodes").get(id);
39 | },
40 |
41 | contains:function(node){
42 | var n, length, nodes;
43 | nodes = this.get("nodes");
44 | length = nodes.length;
45 | for (n=0; n0)
66 | return err;
67 | },
68 |
69 | /**
70 | * Returns a string representing this object.
71 | * @method toString
72 | * @return {String} A string representing this object
73 | */
74 | toString:function(){
75 | return this.id;
76 | }
77 | });
78 |
--------------------------------------------------------------------------------
/modules/FullScreenView.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | /**
10 | * FullScreenView provides a full-screen visualization
11 | * @class FullScreenView
12 | * @module modules
13 | */
14 | var FullScreenView=Backbone.View.extend({
15 | events:{
16 | "click":"fullscreen"
17 | },
18 |
19 | /**
20 | * The initialization method of this object.
21 | * @method initialize
22 | * @param {Map} A map of parameters
23 | */
24 | initialize:function(){
25 | this.environment=this.options.environment;
26 | this.bgplay=this.environment.bgplay;
27 | this.fileRoot=this.environment.fileRoot;
28 | this.eventAggregator=this.environment.eventAggregator;
29 |
30 |
31 |
32 | this.eventAggregator.on("destroyAll", function(){
33 | this.destroyMe();
34 | },this);
35 |
36 | this.eventAggregator.trigger("moduleLoaded", this);
37 | },
38 |
39 | /**
40 | * This method opens the full-screen view
41 | * @method fullscreen
42 | */
43 | fullscreen:function(event){
44 | var uriContent="";
45 | var instant=this.bgplay.get("cur_instant");
46 |
47 | uriContent = setUrlParam("unix_timestamps","TRUE",false, uriContent);
48 | uriContent = setUrlParam("starttime",this.environment.params.starttimestamp,false, uriContent);
49 | uriContent = setUrlParam("endtime",this.environment.params.endtimestamp,false, uriContent);
50 | uriContent = setUrlParam("resource",this.environment.params.targets,false, uriContent);
51 | uriContent = setUrlParam("ignoreReannouncements", this.environment.params.ignoreReannouncements, false, uriContent);
52 | uriContent = setUrlParam("instant",instant.get("id")+','+instant.get("timestamp"),false, uriContent);
53 | uriContent = setUrlParam("selectedRrcs",this.environment.params.selectedRrcs,false, uriContent);
54 |
55 | window.open(this.environment.fullScreenVersionPosition + uriContent, 'BGPlay');
56 | }
57 | });
--------------------------------------------------------------------------------
/model/Node.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * See the file LICENSE.txt for copying permission.
7 | */
8 |
9 | /**
10 | * @class Node
11 | * @module model
12 | */
13 | var Node = Backbone.Model.extend({
14 | defaults:{
15 | type:"node"
16 | },
17 | urlRoot : '/nodes',
18 |
19 | /**
20 | * The initialization method of this object.
21 | * @method initialize
22 | * @param {Map} A map of parameters
23 | */
24 | initialize:function(){
25 | this.attributes.sources = [];
26 | this.attributes.targets=[];
27 | },
28 |
29 | /**
30 | * Adds a source to this node.
31 | * @method addSource
32 | * @param {Object} An instance of Source
33 | */
34 | addSource:function(source){
35 | for (var n=0;n0)
66 | return err;
67 | },
68 |
69 | /**
70 | * Returns a string representing this object.
71 | * @method toString
72 | * @return {String} A string representing this object
73 | */
74 | toString:function(){
75 | return this.id;
76 | }
77 | });
78 |
79 | var Nodes = Backbone.Collection.extend({
80 | model:Node
81 | });
82 |
--------------------------------------------------------------------------------
/widget/bgplayjs-main-widget.js:
--------------------------------------------------------------------------------
1 | /*
2 | * BGPlay.js
3 | * Copyright (c) 2013 Massimo Candela, Giuseppe Di Battista, Claudio Squarcella, Roma Tre University and RIPE NCC
4 | * http://bgplayjs.com
5 | *
6 | * Go to http://bgplay.massimocandela.com for latest updates.
7 | *
8 | * See the file LICENSE.txt for copying permission.
9 | */
10 |
11 | window.BGPLAY_PROJECT_URL = window.BGPLAY_PROJECT_URL || "";
12 |
13 | BGPLAY_WIDGET_URL = window.BGPLAY_PROJECT_URL + "widget/";
14 | BGPLAY_MODEL_URL = window.BGPLAY_PROJECT_URL + "model/";
15 | BGPLAY_MODULES_URL = window.BGPLAY_PROJECT_URL + "modules/";
16 | BGPLAY_CONNECTORS_URL = window.BGPLAY_PROJECT_URL + "connectors/";
17 | BGPLAY_LIB_URL = window.BGPLAY_PROJECT_URL + "lib/";
18 | BGPLAY_UTILS_URL = window.BGPLAY_PROJECT_URL + "utils/";
19 |
20 | BGPLAY_TEMPLATES_URL = BGPLAY_MODULES_URL + "html/";
21 | BGPLAY_TEMPLATES_NOCORS_URL = BGPLAY_MODULES_URL + "html/js_nocors/";
22 | BGPLAY_STYLESHEETS_URL = BGPLAY_MODULES_URL + "css/";
23 |
24 | BGPLAY_IMAGES_URL = BGPLAY_TEMPLATES_URL + "img/";
25 |
26 |
27 | BGPLAY_INSTANCES = {};
28 |
29 | BGPLAY_LOADERS = {
30 | "BGPlayRT": "widget/bgplay-isolario/bgplay-loader",
31 | "BGPlay": "widget/bgplay/bgplay-loader",
32 | "TPlay": "widget/tplay/tplay-loader",
33 | "BGPlay3D": "loaders/bgplay3D-loader"
34 | };
35 |
36 | if (!window.require) {
37 | document.write('');
38 | }
39 |
40 | function getBGPlayInstance(instance){
41 | return BGPLAY_INSTANCES[instance].shift();
42 | }
43 |
44 | function BGPlayWidget(instance, domId, initialParams, queryParams){
45 | var loader, newInstance;
46 |
47 | loader = BGPLAY_LOADERS[instance];
48 |
49 | if (BGPLAY_INSTANCES[instance] == null){
50 | BGPLAY_INSTANCES[instance] = [];
51 | }
52 | newInstance = {domId: domId, initialParams: initialParams, queryParams: queryParams};
53 | BGPLAY_INSTANCES[instance].push(newInstance);
54 |
55 | require([window.BGPLAY_PROJECT_URL + loader + ".js"], function(starter){
56 | newInstance["shell"] = starter();
57 | });
58 |
59 | return newInstance;
60 | }
61 |
62 | /*
63 | //Workaround for not CORS enabled web server
64 | function addTemplateContent(name, template){
65 | window.templateCache = window.templateCache || {};
66 | window.templateCache[name] = template;
67 | }
68 |
69 | */
70 |
--------------------------------------------------------------------------------
/lib/jquery.xdomainajax.js:
--------------------------------------------------------------------------------
1 | /**
2 | * jQuery.ajax mid - CROSS DOMAIN AJAX
3 | * ---
4 | * @author James Padolsey (http://james.padolsey.com)
5 | * @version 0.11
6 | * @updated 12-JAN-10
7 | * ---
8 | * Note: Read the README!
9 | * ---
10 | * @info http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
11 | */
12 |
13 | jQuery.ajax = (function(_ajax){
14 |
15 | var protocol = location.protocol,
16 | hostname = location.hostname,
17 | exRegex = RegExp(protocol + '//' + hostname),
18 | YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
19 | query = 'select * from html where url="{URL}" and xpath="*"';
20 |
21 | function isExternal(url) {
22 | return !exRegex.test(url) && /:\/\//.test(url);
23 | }
24 |
25 | return function(o) {
26 |
27 | var url = o.url;
28 |
29 | if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {
30 |
31 | // Manipulate options so that JSONP-x request is made to YQL
32 |
33 | o.url = YQL;
34 | o.dataType = 'json';
35 |
36 | o.data = {
37 | q: query.replace(
38 | '{URL}',
39 | url + (o.data ?
40 | (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
41 | : '')
42 | ),
43 | format: 'xml'
44 | };
45 |
46 | // Since it's a JSONP request
47 | // complete === success
48 | if (!o.success && o.complete) {
49 | o.success = o.complete;
50 | delete o.complete;
51 | }
52 |
53 | o.success = (function(_success){
54 | return function(data) {
55 |
56 | if (_success) {
57 | // Fake XHR callback.
58 | _success.call(this, {
59 | responseText: (data.results[0] || '')
60 | // YQL screws with