Public
Edited
Sep 20, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
selectedAS_info = {
let mtype = "asn";
if (peer !== "") {
const response = await fetch("https://ai4netmon.csd.auth.gr/api/"+mtype+"/"+peer).then((response) => response.json());
let info_list = [];
for (const key in response) {
info_list.push(Object({'Property': key, 'Value': response[key]}))
}
return info_list;
}
}
Insert cell
Insert cell
Insert cell
// radarLine = d3.lineRadial()
// .curve(d3["curveLinear"])
// .radius(d => rScale(d))
// .angle((d, i) => -angleSlice*i)
Insert cell
// rScale = d3.scaleLinear()
// .domain([0, maxValue])
// .range([0, radius])
Insert cell
Insert cell
Insert cell
Insert cell
// axisLabelFactor = 1.12
Insert cell
// wrapWidth = 60
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
// dotRadius = 4
Insert cell
// radius = (height-(margin*2)) / 2
Insert cell
// height = 600
Insert cell
// margin = 30
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
viewof peer_netinfo = {
const peer = Inputs.text({label: "Type ASN"});
peer.style.width = "100%";
return peer;
}
Insert cell
// loader = html`<div class="loadingspinner" style="display: none;"></div>`
Insert cell
Insert cell
// html`<style>${loadercss}</style>`
Insert cell
viewof table_as_info_netinfo = (peer_netinfo == "") ? html`` : selectedAS_info_netinfo[0]['Property'] == "detail" ? html`Not found` : Inputs.table(selectedAS_info_netinfo, {
width: {
"Property": "40%",
"Value": "30%",
"Percentile": "30%"
},
columns: [
"Property",
"Value",
"Percentile"
],
header: {
"Property": "Property",
"Value": "Value",
"Percentile": "Percentile"
},
rows: 15,
})
Insert cell
Insert cell
selectedAS_info_netinfo = {
if (peer_netinfo !== "" ) {
const response1 = await fetch("https://ai4netmon.csd.auth.gr/api/asn/"+peer_netinfo).then((response) => response.json());
const response2 = await fetch("https://ai4netmon.csd.auth.gr/api/percentiles/"+peer_netinfo).then((response) => response.json());
let info_list = [];
for (const key in response1) {
info_list.push(Object({'Property': key, 'Value': response1[key], 'Percentile': response2[key]}))
}
return info_list;
}
}
Insert cell
// selectedAS_info_netinfo = {
// if (peer_netinfo !== "" && asnInfoData !== undefined && percentilesData !== undefined) {
// let info_list = [];
// for (const key in asnInfoData) {
// info_list.push(Object({'Property': key, 'Value': asnInfoData[key], 'Percentile': percentilesData[key]}))
// }
// return info_list;
// } else {
// // return the not found response from the endpoint if percentiles for the peer are not available
// return [{'Property': "detail", 'Value': "Item not found."}]
// }
// }
Insert cell
// asnInfoData = fetchDataASNInfo()
// .then(data => {
// return data;
// })
// .catch(error => {
// // Handle errors
// console.error('Error:', error);
// });
Insert cell
// percentilesData = fetchDataPercentiles()
// .then(data => {
// return data;
// })
// .catch(error => {
// // Handle errors
// console.error('Error:', error);
// });
Insert cell
// function fetchDataASNInfo() {
// // Show loader
// loader.style.display = 'block';

// return fetch("https://ai4netmon.csd.auth.gr/api/asn/"+peer_netinfo)
// .then(response => {
// if (!response.ok) {
// throw new Error('Network response was not ok');
// }
// return response.json();
// })
// .finally(() => {
// // Hide loader
// loader.style.display = 'none';
// });
// };
Insert cell
// function fetchDataPercentiles() {
// // Show loader
// loader.style.display = 'block';

// return fetch("https://ai4netmon.csd.auth.gr/api/percentiles/"+peer_netinfo)
// .then(response => {
// if (!response.ok) {
// throw new Error('Network response was not ok');
// }
// return response.json();
// })
// .finally(() => {
// // Hide loader
// loader.style.display = 'none';
// });
// };
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more