├── .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 | 3 | 4 |
-------------------------------------------------------------------------------- /modules/html/nodePosition.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
-------------------------------------------------------------------------------- /modules/html/js_nocors/optionPeerFilter.html.js: -------------------------------------------------------------------------------- 1 | addTemplateContent('optionPeerFilter.html', '
' + 2 | ' ' + 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 | ' '+ 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 | 3 | 4 |
5 |
-------------------------------------------------------------------------------- /modules/html/optionGraphDeep.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 |
-------------------------------------------------------------------------------- /modules/html/optionLinkWeight.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 |
-------------------------------------------------------------------------------- /modules/html/js_nocors/optionAnimationSpeed.html.js: -------------------------------------------------------------------------------- 1 | addTemplateContent('optionAnimationSpeed.html', '
'+ 2 | ' '+ 3 | ' '+ 4 | '
'+ 5 | '
'); -------------------------------------------------------------------------------- /modules/html/js_nocors/optionGraphDeep.html.js: -------------------------------------------------------------------------------- 1 | addTemplateContent('optionGraphDeep.html', '
'+ 2 | ' '+ 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 | ' ' + 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 |
4 | 6 | 7 | 9 |
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 | ' '+ 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 | ![BGPlay](https://massimocandela.com/img/bgplay_github_image.png) 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 |
6 |
7 |
8 |
9 | Your browser doesn't support HTML5 Canvas. 10 |
11 | 12 |
13 | Next 14 | Prev 15 | 16 | wait 17 | warp 18 | Your browser doesn't support HTML5 Canvas. 19 |
20 | Next 21 | Prev 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 | ' Next'+ 14 | ' Prev'+ 15 | ''+ 16 | ' wait'+ 17 | ' warp'+ 18 | ' Your browser doesn\'t support HTML5 Canvas.'+ 19 | '
'+ 20 | ' Next'+ 21 | ' Prev'+ 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