Skip to main content

IT

Annual Report - Rete GARR

28 Settembre 2018 | Chi siamo

.ContenitoreHD, .GraficoHD { width: 1200px; height: 600px; background: rgba(255, 255, 255, 1); } .ContenitorePieHD, .GraficoPieHD { width: 600px; height: 600px; background: rgba(255, 255, 255, 1); } .bottone { margin: 15px 25px 15px 5px; }

Le informazioni contenute in questo documento sono tratte dal "Bilancio Consuntivo 2021" e dalla Relazione sull'attività svolta e risultati conseguiti 2021 approvati dall'Assemblea dei soci GARR a maggio 2022.

pdf Scarica l'annual report 2022(6.85 MB)

Tutti gli annual report


Elenco dei grafici per la Rete GARR

  • Capacità aggregata link di backbone
  • Capacità aggregata link di accesso
  • Capacità link di backbone
  • Capacità link di accesso
  • Volume di traffico totale
  • Volume di traffico dei peering
  • Volume di traffico degli accessi e dei peering di ricerca
  • Tipologia di traffico di peering
Scegli Capacità aggregata link di backbone Capacità aggregata link di accesso Capacità link di backbone Capacità link di accesso Volume di traffico totale Volume di traffico dei peering Volume di traffico degli accessi e dei peering di ricerca Tipologia di traffico di peering

Capacità aggregata link di backbone

Il grafico mostra l’andamento della capacità aggregata della connettività IP del backbone della rete GARR.

Cambia periodo
Salva immagine

Capacità aggregata link di accesso

Il grafico mostra l’andamento della capacità aggregata dei collegamenti di accesso delle sedi connesse a GARR.

Cambia periodo
Salva immagine

Capacità link di backbone

Il grafico mostra la composizione dei link della dorsale di rete con una ripartizione in base alla loro capacità.

Seleziona l'anno: 2022 2021 2020 2019 2018 2017 2016
Salva immagine

Capacità link di accesso

Il grafico mostra la composizione dei link di accesso delle sedi connesse a GARR con una ripartizione in base alla loro capacità.

Seleziona l'anno: 2022 2021 2020 2019 2018 2017 2016
Salva immagine

Volume di traffico totale sulla rete GARR

Il grafico mostra l’andamento del traffico totale sulla rete GARR.

Salva immagine

Volume di traffico dei peering della rete GARR

Il grafico mostra l’andamento su base mensile del volume di traffico generato dai peering della rete GARR. Le voci prese in considerazione sono il traffico upstream e dei peering diretti, il traffico da e verso gli Internet Exchange e il traffico dei peering di ricerca.

Seleziona l'anno: 2022 2021 2020 2019 2018 2017 2016 2015 2014
Salva immagine

Volume di traffico degli accessi e dei peering di ricerca

Il grafico mette a confronto, su base mensile, il traffico totale degli accessi degli utenti con il traffico dei peering di ricerca.

Seleziona l'anno: 2022 2021 2020 2019 2018 2017 2016 2015 2014
Salva immagine

Tipologia di traffico di peering

Il grafico mostra la composizione del traffico di peering sulla rete GARR.

Seleziona l'anno: 2022 2021 2020 2019 2018 2017
Salva immagine

Continua a leggere

Cloud

var numeroScheda=""; var SpazioDestra = 30; var TitoloFont = 'Raleway'; var TitoloFontSize = 15; var TitoloVisualizza = true; var TitoloAllinea = 'end'; // start center end var TitoloPadding = 20; var TitoloColore = '#1d5b37'; var TitoloStile = 'normal'; // normal italic oblique initial inherit var ArrayColore = ["rgba(0, 29, 111, 0.6)", "rgba(0, 111, 62, 0.6)", "rgba(197, 26, 26, 0.6)", "rgba(224, 155, 38, 0.6)", "rgba(111, 0, 86, 0.6)", "rgba(228, 88, 19, 0.6)", "rgba(71, 0, 11, 0.6)"]; var ArrayColoreBordo = ["rgba(0, 29, 111, 1)", "rgba(0, 111, 62, 1)", "rgba(111, 0, 0, 1)", "rgba(224, 155, 38, 1)", "rgba(111, 0, 86, 1)", "rgba(228, 88, 19, 1)", "rgba(71, 0, 11, 1)"]; var ArrayColoreSfondo = ["rgba(0, 29, 111, 0.1)", "rgba(0, 111, 62, 0.1)", "rgba(197, 26, 26, 0.1)", "rgba(224, 155, 38, 0.1)", "rgba(111, 0, 86, 0.1)", "rgba(228, 88, 19, 0.1)", "rgba(71, 0, 11, 0.1)"]; var Bianco = '#FFFFFF'; var Nero = '#000000'; var Grigio = '#a3a3a3'; var BordoSpessore = 1; var AssiFont = 'Varela Round'; var AssiFontSize = 13; var AssiVisualizza = 'true'; var AssiAllinea = 'center'; var AssiPadding = 10; var AssiColore = '#1d5b37'; var AssiStile = 'normal'; var LabelFont = 'Varela Round'; var LabelFontSize = 13; var LabelColore = '#1d5b37'; var LabelStile = 'normal'; var TooltipFont = 'Varela Round'; var TooltipFontSize = 13; var TooltipColore = 'rgba(255,255,255,1)'; var TooltipSfondo = 'rgba(0,0,0,1)'; var TooltipLightColore = 'rgba(0,0,0,1)'; var TooltipLightSfondo = 'rgba(0,0,0,0)'; var TicksFont = 'Varela Round'; var TicksFontSize = 13; var TicksColore = '#1d5b37'; var TicksStile = 'normal'; var sfondoImmagine = 'rgba(255,255,255,1)'; var legendaImmagine = 'right'; // if (document.getElementById("contenuto-principale").offsetWidth { // AGGIUNGERE legendaDinamica ALLE OPTIONS //if (document.getElementById("contenuto-principale").offsetWidth { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const {x, y} = datapoint.tooltipPosition(); //console.log(chart.config.options.plugins.Contatore.fontSize); //console.log(chart.config.options.plugins.Contatore.fontFamily); //console.log(chart.config.options.plugins.Contatore.fontColor); var cosaMisura = chart.config.options.plugins.Contatore.cosaMisura; let primoValore = chart.data.datasets[i].data.indexOf(chart.data.datasets[i].data[index]); if (primoValore == 0) { const {ctx, chartArea : {top, right, bottom, left, width, height} } = chart; ctx.save(); ctx.font = TitoloFont; ctx.textAlign = 'center'; ctx.fillStyle = Nero; ctx.fontSize = 30; ctx.fillText('Totale ' + cosaMisura + ':', left + (width / 2), top + (height /2) - 11); ctx.fillText(postSommaTotale, left + (width / 2), top + (height /2) + 11); ctx.restore(); } }) }) } }; const sfondoBianco = { id: 'sfondoBianco', beforeDraw: (chart) => { const ctx = chart.canvas.getContext('2d'); ctx.save(); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = sfondoImmagine; ctx.fillRect(0, 0, chart.width, chart.height); ctx.restore(); } }; const mostraEtichettePie = { id: 'mostraEtichettePie', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const assoluto = chart.data.datasets[i].data[index]; const postAssoluto = assoluto.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const percentuale = valorePercentuale.toString().replace(".", ",") + '%'; const assolutoWidth = ctx.measureText(postAssoluto).width; const percentualeWidth = ctx.measureText(percentuale).width; if (assolutoWidth >= percentualeWidth) { var maggiore = assolutoWidth; } else {var maggiore = percentualeWidth;} const {x, y} = datapoint.tooltipPosition(); const textWidth = maggiore; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 42, textWidth + 10, 37); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(postAssoluto, x - (textWidth / 2), y - 28); ctx.fillText(percentuale, x - (textWidth / 2), y - 11); ctx.restore(); } }) }) } }; const mostraEtichette = { id: 'mostraEtichette', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 25, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y - 14); ctx.restore(); }) }) } }; const mostraEtichetteStacked = { id: 'mostraEtichetteStacked', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 5, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y+20); ctx.lineTo(x - 5, y + 15); ctx.lineTo(x + 5, y + 15); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y+6); ctx.restore(); } }) }) } }; const mostraEtichetteSopra = { id: 'mostraEtichetteSopra', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 30, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y-19); ctx.restore(); } }) }) } }; const sommaDueColonne = { id: 'sommaDueColonne', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); function isOdd(i) { return i % 2;} if (isOdd(i)) { var zero = i-1; var uno = i; var primo = chart.data.datasets[zero].data[index]; var secondo = chart.data.datasets[uno].data[index]; var pes= primo+secondo; const nCoppia = 'tot ' + pes.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const nCoppiaWidth = ctx.measureText(nCoppia).width; if ((chart.isDatasetVisible(zero)) && (chart.isDatasetVisible(uno))) { ctx.fillStyle = TooltipLightSfondo; ctx.fillRect(x - ((nCoppiaWidth + 10) /2), y - 30, nCoppiaWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipLightColore; ctx.fillText(nCoppia, x - (nCoppiaWidth / 2), y-19); ctx.restore(); } } }) }) } }; const sommaTreColonne = { id: 'sommaTreColonne', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); function isEven(n) { return n % 2 == 0;} if (isEven(i) && i > 0) { if (chart.isDatasetVisible(i-2) == true){ var colonnaZero = parseInt(chart.data.datasets[i-2].data[index]); } else { var colonnaZero = 0; } if (chart.isDatasetVisible(i-1) == true){ var colonnaUno = parseInt(chart.data.datasets[i-1].data[index]); } else { var colonnaUno = 0; } if (chart.isDatasetVisible(i) == true){ var colonnaDue = parseInt(chart.data.datasets[i].data[index]); } else { var colonnaDue = 0; }; var ab = colonnaZero + colonnaUno; var ac = colonnaZero + colonnaDue; var bc = colonnaUno + colonnaDue; var abc = colonnaZero + colonnaUno + colonnaDue; var doppiettaAB = 'tot ' + ab.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); var doppiettaAC = 'tot ' + ac.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); var doppiettaBC = 'tot ' + bc.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); var tripletta = 'tot ' + abc.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const triplettaWidth = ctx.measureText(tripletta).width; const doppiettaABWidth = ctx.measureText(doppiettaAB).width; const doppiettaACWidth = ctx.measureText(doppiettaAC).width; const doppiettaBCWidth = ctx.measureText(doppiettaBC).width; ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipLightColore; if ((chart.isDatasetVisible(0) === true) && (chart.isDatasetVisible(1) === true) && (chart.isDatasetVisible(2) === false)) { ctx.fillText(doppiettaAB, x - (doppiettaABWidth / 2), (y-19 + datapoint.height)); } else if ((chart.isDatasetVisible(0) === false) && (chart.isDatasetVisible(1) === true) && (chart.isDatasetVisible(2) === true)) { ctx.fillText(doppiettaBC, x - (doppiettaBCWidth / 2), y-19); } else if ((chart.isDatasetVisible(0) === true) && (chart.isDatasetVisible(1) === false) && (chart.isDatasetVisible(2) === true)) { ctx.fillText(doppiettaAC, x - (doppiettaACWidth / 2), y-19); } else if (chart.isDatasetVisible(0) && chart.isDatasetVisible(1) && chart.isDatasetVisible(2)) { ctx.fillText(tripletta, x - (triplettaWidth / 2), y-19); } else { //console.log("una sola colonna è visibile"); }; ctx.restore(); } }) }) } }; const logo = new Image(); logo.src = 'https://www.garr.it/images/logo-garr-grafici.png'; const LogoGARR = { id: 'LogoGARR', beforeDraw(chart, args, options) { const {ctx, chartArea: { top, bottom, left, right} } = chart; const logoWidth = 100; const logoHeight = 34; ctx.save(); if ((logo.complete) && (ctx.canvas.offsetWidth > 640)) { ctx.drawImage(logo, ctx.canvas.offsetWidth - (logoWidth + 10), ctx.canvas.offsetHeight - (logoHeight + 10), logoWidth, logoHeight); } else { logo.onload = () => chart.draw(); }; ctx.restore(); } } const CapacitaAggregataBackboneDataUno = { tricodemo: 1, labels: ['2018', '2019', '2020', '2021', '2022'], datasets: [{ label: 'Capacità in Gbps', data: [2950, 3020, 3130, 3130, 15000], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; const CapacitaAggregataBackboneDataDue = { tricodemo: 2, labels: ['2013', '2014', '2015', '2016', 2017], datasets: [{ label: 'Capacità in Gbps', data: [833, 860, 1890, 2040, 2550], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; const optionsCAB = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Capacità aggregata link di backbone', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Capacità aggregata in Gbps', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { if (!(numeroScheda)) {numeroScheda="-2"}; var CanvasTemp = CapacitaAggregataBackboneGraficoHD; var a = document.getElementById('CapacitaAggregataBackbone_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'capacita-aggregata-link-di-backbone-GARR'+numeroScheda+'.png'; } } } const CapacitaAggregataBackboneConfig = { type: 'bar', data: CapacitaAggregataBackboneDataUno, options: optionsCAB, plugins: [mostraEtichetteStacked, sfondoBianco, LogoGARR] }; const CapacitaAggregataBackboneGrafico = new Chart( document.getElementById('CapacitaAggregataBackbone'), CapacitaAggregataBackboneConfig ); const CapacitaAggregataBackboneGraficoHD = new Chart( document.getElementById('CapacitaAggregataBackboneHD'), CapacitaAggregataBackboneConfig ); const optionsCAA = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Capacità aggregata link di accesso', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Capacità aggregata in Gbps', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { if (!(numeroScheda)) {numeroScheda="-2"}; var CanvasTemp = CapacitaAggregataAccessoGraficoHD; var a = document.getElementById('CapacitaAggregataAccesso_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'capacita-aggregata-link-di-accesso-GARR'+numeroScheda+'.png'; } } } const CapacitaAggregataAccessoDataUno = { tricodemo: 1, labels: ['2018', '2019', '2020', '2021', 2022], datasets: [{ label: 'Capacità in Gbps', data: [1840, 2000, 3440, 3700, 3900], backgroundColor: ArrayColore[1], borderColor: ArrayColoreBordo[1], borderWidth: BordoSpessore }] }; const CapacitaAggregataAccessoDataDue = { tricodemo: 2, labels: ['2013', '2014', '2015', '2016', 2017], datasets: [{ label: 'Capacità in Gbps', data: [659, 836, 1150, 1360, 1580], backgroundColor: ArrayColore[1], borderColor: ArrayColoreBordo[1], borderWidth: BordoSpessore }] }; const CapacitaAggregataAccessoConfig = { type: 'bar', data: CapacitaAggregataAccessoDataUno, options: optionsCAA, plugins: [mostraEtichetteStacked, sfondoBianco, LogoGARR] }; const CapacitaAggregataAccessoGrafico = new Chart( document.getElementById('CapacitaAggregataAccesso'), CapacitaAggregataAccessoConfig ); const CapacitaAggregataAccessoGraficoHD = new Chart( document.getElementById('CapacitaAggregataAccessoHD'), CapacitaAggregataAccessoConfig ); const optionsCLB = { maintainAspectRatio: false, // true layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Capacità link di backbone', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, // position: posizioneLegenda, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'link', } } } const CapacitaLinkBackboneData = { // 2022 labels: ['≥ 100 Gbps', '< 100 Gbps', '≤ 10 Gbps', '≤ 1 Gbps'], datasets: [{ label: '2022', data: [23, 80, 38, 68], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const CapacitaLinkBackboneConfig = { type: 'doughnut', data: CapacitaLinkBackboneData, options: optionsCLB, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CapacitaLinkBackboneGrafico = new Chart( document.getElementById('CapacitaLinkBackbone'), CapacitaLinkBackboneConfig ); const optionsCLBHD = { maintainAspectRatio: false, // true layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Capacità link di backbone', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'link', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectCLB'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = CapacitaLinkBackboneGraficoHD; var a = document.getElementById('CapacitaLinkBackbone_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'capacita-link-di-backbone-GARR-'+annoSelezionato+'.png'; } } } const CapacitaLinkBackboneConfigHD = { type: 'doughnut', data: CapacitaLinkBackboneData, options: optionsCLBHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CapacitaLinkBackboneGraficoHD = new Chart( document.getElementById('CapacitaLinkBackboneHD'), CapacitaLinkBackboneConfigHD ); const optionsCLA = { maintainAspectRatio: false, // true layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Capacità link di accesso', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, // position: posizioneLegenda, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'link', } } } const CapacitaLinkAccessoData = { // 2022 labels: ['< 0.1 Gbps', '≥ 0.1 Gbps', '≥ 1 Gbps', '≥ 10 Gbps'], datasets: [{ label: '2022', data: [5, 347, 345, 160], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const CapacitaLinkAccessoConfig = { type: 'doughnut', data: CapacitaLinkAccessoData, options: optionsCLA, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CapacitaLinkAccessoGrafico = new Chart( document.getElementById('CapacitaLinkAccesso'), CapacitaLinkAccessoConfig ); const optionsCLAHD = { maintainAspectRatio: false, // true layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Capacità link di accesso', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'link', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectCLA'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = CapacitaLinkAccessoGraficoHD; var a = document.getElementById('CapacitaLinkAccesso_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'capacita-link-di-accesso-GARR-'+annoSelezionato+'.png'; } } } const CapacitaLinkAccessoConfigHD = { type: 'doughnut', data: CapacitaLinkAccessoData, options: optionsCLAHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CapacitaLinkAccessoGraficoHD = new Chart( document.getElementById('CapacitaLinkAccessoHD'), CapacitaLinkAccessoConfigHD ); const optionsVTT = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Volume di traffico totale sulla rete GARR', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Petabyte: 1PB = 1.000.000 GB', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = VolumeTrafficoTotaleGraficoHD; var a = document.getElementById('VolumeTrafficoTotale_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'volume-traffico-totale-rete-GARR.png'; } } } const VolumeTrafficoTotaleData = { labels: ['2014', '2015', '2016', '2017', '2018', '2019','2020','2021', 2022], datasets: [{ label: 'Andamento del traffico totale sulla rete GARR', data: [126, 172, 306, 301, 384, 492, 460, 506, 724], pointBackgroundColor: ArrayColoreBordo[0], backgroundColor: ArrayColoreSfondo[0], borderColor: ArrayColore[0], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const VolumeTrafficoTotaleConfig = { type: 'line', data: VolumeTrafficoTotaleData, options: optionsVTT, plugins: [sfondoBianco, mostraEtichetteSopra, LogoGARR] }; const VolumeTrafficoTotaleGrafico = new Chart( document.getElementById('VolumeTrafficoTotale'), VolumeTrafficoTotaleConfig ); const VolumeTrafficoTotaleGraficoHD = new Chart( document.getElementById('VolumeTrafficoTotaleHD'), VolumeTrafficoTotaleConfig ); const optionsVTP = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Volume di traffico dei peering della rete GARR', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, datalabels: { color: '#fff', formatter: function(value, context) { return value.toLocaleString() } } }, scales: { x: { beginAtZero: false, title: { text: 'Mese', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { callback: function(TestoLungo) { const NuovoTesto = this.getLabelForValue(TestoLungo); const TestoCorto = NuovoTesto.substr(0, 3); return TestoCorto; }, color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, }, y: { beginAtZero: true, title: { text: 'Petabyte: 1PB = 1.000.000 GB', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectVTP'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = VolumeTrafficoPeeringGraficoHD; var a = document.getElementById('VolumeTrafficoPeering_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'volume-traffico-peering-rete-GARR-'+annoSelezionato+'.png'; } } } const VolumeTrafficoPeeringData = { labels: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'], datasets: [{ label: 'Internet Exchange', data: [70, 76, 96, 77, 93, 74, 67, 43, 76, 98, 105, 72 ], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore },{ label: 'Research', data: [322, 297, 318, 353, 328, 318, 356, 401, 327, 503, 455, 442], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore },{ label: 'Upstream & Direct peerings', data: [53, 58, 71, 68, 80, 62, 65, 47, 75, 89, 103, 90], backgroundColor: ArrayColore[2], borderColor: ArrayColoreBordo[2], borderWidth: BordoSpessore }] }; const VolumeTrafficoPeeringConfig = { type: 'bar', data: VolumeTrafficoPeeringData, options: optionsVTP, plugins: [sfondoBianco, ChartDataLabels, sommaTreColonne, LogoGARR] }; const VolumeTrafficoPeeringGrafico = new Chart( document.getElementById('VolumeTrafficoPeering'), VolumeTrafficoPeeringConfig ); const VolumeTrafficoPeeringGraficoHD = new Chart( document.getElementById('VolumeTrafficoPeeringHD'), VolumeTrafficoPeeringConfig ); const optionsVAP = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Volume di traffico degli accessi e dei peering di ricerca', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Mese', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { callback: function(TestoLungo) { const NuovoTesto = this.getLabelForValue(TestoLungo); const TestoCorto = NuovoTesto.substr(0, 3); return TestoCorto; }, color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Petabyte: 1PB = 1.000.000 GB', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectVAP'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = VolumeAccessiPeeringGraficoHD; var a = document.getElementById('VolumeAccessiPeering_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'volume-accesso-peering-rete-GARR-'+annoSelezionato+'.png'; } } } const VolumeAccessiPeeringData = { labels: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'], datasets: [{ label: 'Traffico di accesso utenti', data: [53, 52, 59, 59, 60, 53, 56, 54, 57, 76, 72, 66], pointBackgroundColor: ArrayColoreBordo[0], backgroundColor: ArrayColoreSfondo[0], borderColor: ArrayColore[0], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 },{ label: 'Ricerca', data: [32, 29, 31, 35, 32, 31, 35, 40, 37, 50, 45, 44], pointBackgroundColor: ArrayColoreBordo[1], backgroundColor: ArrayColoreSfondo[1], borderColor: ArrayColore[1], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const VolumeAccessiPeeringConfig = { type: 'line', data: VolumeAccessiPeeringData, options: optionsVAP, plugins: [sfondoBianco, mostraEtichetteSopra, LogoGARR] }; const VolumeAccessiPeeringGrafico = new Chart( document.getElementById('VolumeAccessiPeering'), VolumeAccessiPeeringConfig ); const VolumeAccessiPeeringGraficoHD = new Chart( document.getElementById('VolumeAccessiPeeringHD'), VolumeAccessiPeeringConfig ); const optionsTTP = { maintainAspectRatio: false, plugins: { title: { text: 'Tipologia di traffico di peering', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, // position: posizioneLegenda, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'peering', } } } const TipologiaTrafficoPeeringData = { // 2021 labels: ['Ricerca', 'Internet Exchange', 'Upstream & Direct peerings'], datasets: [{ label: '2021', data: [274899, 73292, 31970], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const optionsTTPHD = { maintainAspectRatio: false, plugins: { title: { text: 'Tipologia di traffico di peering', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'peering', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectTTP'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = TipologiaTrafficoPeeringGraficoHD; var a = document.getElementById('TipologiaTrafficoPeering_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'tipologia-traffico-peering-GARR-'+annoSelezionato+'.png'; } } } const TipologiaTrafficoPeeringConfig = { type: 'doughnut', data: TipologiaTrafficoPeeringData, options: optionsTTP, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const TipologiaTrafficoPeeringGrafico = new Chart( document.getElementById('TipologiaTrafficoPeering'), TipologiaTrafficoPeeringConfig ); const TipologiaTrafficoPeeringConfigHD = { type: 'doughnut', data: TipologiaTrafficoPeeringData, options: optionsTTPHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const TipologiaTrafficoPeeringGraficoHD = new Chart( document.getElementById('TipologiaTrafficoPeeringHD'), TipologiaTrafficoPeeringConfigHD ); function CambiaPeriodo(c , g, hd, d1, d2, k) { var trik = c.data.tricodemo; var chiave = k.id; var graficoSospeso = document.getElementById(chiave); graficoSospeso.classList.add("uk-link-muted"); graficoSospeso.href = "javascript:;"; if (trik == 1) { c.data = d2; g.update(); hd.data = d2; hd.update(); numeroScheda = "-1"; } else { c.data = d1; g.update(); hd.data = d1; hd.update(); numeroScheda = "-2"; } sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { graficoSospeso.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoCLB = document.getElementById('selectCLB'); periodoCLB.addEventListener('change', SelezionaPeriodoCLB) function SelezionaPeriodoCLB() { var lnk = document.getElementById('CapacitaLinkBackbone_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoCLB.value.split(','); CapacitaLinkBackboneGrafico.data.datasets[0].data = periodoCLB.value.split(','); CapacitaLinkBackboneGrafico.options.plugins.title.text = 'Capacità link di backbone nel ' + periodoCLB.options[periodoCLB.selectedIndex].text; // CapacitaLinkBackboneGrafico.options.plugins.legend.position = posizioneLegenda; CapacitaLinkBackboneGrafico.update(); CapacitaLinkBackboneGraficoHD.data.datasets[0].data = periodoCLB.value.split(','); CapacitaLinkBackboneGraficoHD.options.plugins.title.text = 'Capacità link di backbone nel ' + periodoCLB.options[periodoCLB.selectedIndex].text; CapacitaLinkBackboneGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoCLA = document.getElementById('selectCLA'); periodoCLA.addEventListener('change', SelezionaPeriodoCLA) function SelezionaPeriodoCLA() { var lnk = document.getElementById('CapacitaLinkAccesso_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoCLA.value.split(','); CapacitaLinkAccessoGrafico.data.datasets[0].data = periodoCLA.value.split(','); CapacitaLinkAccessoGrafico.options.plugins.title.text = 'Capacità link di accesso nel ' + periodoCLA.options[periodoCLA.selectedIndex].text; // CapacitaLinkAccessoGrafico.options.plugins.legend.position = posizioneLegenda; CapacitaLinkAccessoGrafico.update(); CapacitaLinkAccessoGraficoHD.data.datasets[0].data = periodoCLA.value.split(','); CapacitaLinkAccessoGraficoHD.options.plugins.title.text = 'Capacità link di accesso nel ' + periodoCLA.options[periodoCLA.selectedIndex].text; CapacitaLinkAccessoGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoVTP = document.getElementById('selectVTP'); periodoVTP.addEventListener('change', SelezionaPeriodoVTP) function SelezionaPeriodoVTP() { var lnk = document.getElementById('VolumeTrafficoPeering_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; VolumeTrafficoPeeringGrafico.options.plugins.title.text = 'Volume di traffico dei peering della rete GARR nel ' + periodoVTP.options[periodoVTP.selectedIndex].text; var alfa = periodoVTP.value.split(';'); var a = alfa[0]; var b = alfa[1]; var c = alfa[2]; VolumeTrafficoPeeringGrafico.data.datasets[0].data = a.split(','); VolumeTrafficoPeeringGrafico.data.datasets[1].data = b.split(','); VolumeTrafficoPeeringGrafico.data.datasets[2].data = c.split(','); VolumeTrafficoPeeringGrafico.update(); VolumeTrafficoPeeringGraficoHD.data.datasets[0].data = a.split(','); VolumeTrafficoPeeringGraficoHD.data.datasets[1].data = b.split(','); VolumeTrafficoPeeringGraficoHD.data.datasets[2].data = c.split(','); VolumeTrafficoPeeringGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoVAP = document.getElementById('selectVAP'); periodoVAP.addEventListener('change', SelezionaPeriodoVAP) function SelezionaPeriodoVAP() { var lnk = document.getElementById('VolumeAccessiPeering_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; VolumeAccessiPeeringGrafico.options.plugins.title.text = 'Volume di traffico degli accessi e dei peering di ricerca nel ' + periodoVAP.options[periodoVAP.selectedIndex].text; var alfa = periodoVAP.value.split(';'); var a = alfa[0]; var b = alfa[1]; VolumeAccessiPeeringGrafico.data.datasets[0].data = a.split(','); VolumeAccessiPeeringGrafico.data.datasets[1].data = b.split(','); VolumeAccessiPeeringGrafico.update(); VolumeAccessiPeeringGraficoHD.data.datasets[0].data = a.split(','); VolumeAccessiPeeringGraficoHD.data.datasets[1].data = b.split(','); VolumeAccessiPeeringGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoTTP = document.getElementById('selectTTP'); periodoTTP.addEventListener('change', SelezionaPeriodoTTP) function SelezionaPeriodoTTP() { var lnk = document.getElementById('TipologiaTrafficoPeering_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; TipologiaTrafficoPeeringGrafico.options.plugins.title.text = 'Tipologia di traffico di peering nel ' + periodoTTP.options[periodoTTP.selectedIndex].text; // TipologiaTrafficoPeeringGrafico.options.plugins.legend.position = posizioneLegenda; periodoTTP.value.split(','); TipologiaTrafficoPeeringGrafico.data.datasets[0].data = periodoTTP.value.split(','); TipologiaTrafficoPeeringGrafico.update(); TipologiaTrafficoPeeringGraficoHD.options.plugins.title.text = 'Tipologia di traffico di peering nel ' + periodoTTP.options[periodoTTP.selectedIndex].text; periodoTTP.value.split(','); TipologiaTrafficoPeeringGraficoHD.data.datasets[0].data = periodoTTP.value.split(','); TipologiaTrafficoPeeringGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } $(function(){ $('#selectGrafico').on('change', function () { var url = $(this).val(); if (url) { window.location = url; } return false; }); });

Annual Report - Cloud GARR

28 Settembre 2018 | Chi siamo

.ContenitoreHD, .GraficoHD { width: 1200px; height: 600px; background: rgba(255, 255, 255, 1); } .ContenitorePieHD, .GraficoPieHD { width: 600px; height: 600px; background: rgba(255, 255, 255, 1); } .bottone { margin: 15px 25px 15px 5px; }

Elenco dei grafici per la Cloud GARR

  • Utenti della Cloud federata GARR
  • Utenti per comunità della Cloud GARR
  • Utilizzo delle risorse Cloud per comunità
Scegli Utenti della Cloud federata GARR Utenti per comunità della Cloud GARR Utilizzo delle risorse Cloud per comunità

Utenti della Cloud federata GARR

Il grafico mostra l’andamento del numero di utenti che hanno utilizzato le risorse cloud GARR.

Salva immagine

Cloud GARR: utenti per comunità

Il grafico mostra la ripartizione degli enti che utilizzano la cloud GARR.

Seleziona l'anno: 2021 2020 2019 2018 2017
Salva immagine

Cloud GARR: utilizzo delle risorse per comunità (vCPU)

Il grafico mostra chi sono i principali utilizzatori delle risorse (vCPU) della cloud GARR all’interno della comunità.

Seleziona l'anno: 2021 2020 2019 2018 2017
Salva immagine

Continua a leggere

 Rete GARR  Servizi di rete e accesso


Le informazioni contenute in questo documento sono tratte dal "Bilancio Consuntivo 2021" e dalla Relazione sull'attività svolta e risultati conseguiti 2021 approvati dall'Assemblea dei soci GARR a maggio 2022.

pdf Scarica l'annual report 2021(22.72 MB)

Tutti gli annual report

var numeroScheda=""; var SpazioDestra = 30; var TitoloFont = 'Raleway'; var TitoloFontSize = 15; var TitoloVisualizza = true; var TitoloAllinea = 'end'; // start center end var TitoloPadding = 20; var TitoloColore = '#1d5b37'; var TitoloStile = 'normal'; // normal italic oblique initial inherit var ArrayColore = ["rgba(0, 29, 111, 0.6)", "rgba(0, 111, 62, 0.6)", "rgba(197, 26, 26, 0.6)", "rgba(224, 155, 38, 0.6)", "rgba(111, 0, 86, 0.6)", "rgba(228, 88, 19, 0.6)", "rgba(71, 0, 11, 0.6)"]; var ArrayColoreBordo = ["rgba(0, 29, 111, 1)", "rgba(0, 111, 62, 1)", "rgba(111, 0, 0, 1)", "rgba(224, 155, 38, 1)", "rgba(111, 0, 86, 1)", "rgba(228, 88, 19, 1)", "rgba(71, 0, 11, 1)"]; var ArrayColoreSfondo = ["rgba(0, 29, 111, 0.1)", "rgba(0, 111, 62, 0.1)", "rgba(197, 26, 26, 0.1)", "rgba(224, 155, 38, 0.1)", "rgba(111, 0, 86, 0.1)", "rgba(228, 88, 19, 0.1)", "rgba(71, 0, 11, 0.1)"]; var Bianco = '#FFFFFF'; var Nero = '#000000'; var Grigio = '#a3a3a3'; var BordoSpessore = 1; var AssiFont = 'Varela Round'; var AssiFontSize = 13; var AssiVisualizza = 'true'; var AssiAllinea = 'center'; var AssiPadding = 10; var AssiColore = '#1d5b37'; var AssiStile = 'normal'; var LabelFont = 'Varela Round'; var LabelFontSize = 13; var LabelColore = '#1d5b37'; var LabelStile = 'normal'; var TooltipFont = 'Varela Round'; var TooltipFontSize = 13; var TooltipColore = 'rgba(255,255,255,1)'; var TooltipSfondo = 'rgba(0,0,0,1)'; var TicksFont = 'Varela Round'; var TicksFontSize = 13; var TicksColore = '#1d5b37'; var TicksStile = 'normal'; var sfondoImmagine = 'rgba(255,255,255,1)'; var legendaImmagine = 'right'; // if (document.getElementById("contenuto-principale").offsetWidth { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const {x, y} = datapoint.tooltipPosition(); var cosaMisura = chart.config.options.plugins.Contatore.cosaMisura; let primoValore = chart.data.datasets[i].data.indexOf(chart.data.datasets[i].data[index]); if (primoValore == 0) { const {ctx, chartArea : {top, right, bottom, left, width, height} } = chart; ctx.save(); ctx.font = TitoloFont; ctx.textAlign = 'center'; ctx.fillStyle = Nero; ctx.fontSize = 30; ctx.fillText('Totale ' + cosaMisura + ':', left + (width / 2), top + (height /2) - 11); ctx.fillText(postSommaTotale, left + (width / 2), top + (height /2) + 11); ctx.restore(); } }) }) } }; const sfondoBianco = { id: 'sfondoBianco', beforeDraw: (chart) => { const ctx = chart.canvas.getContext('2d'); ctx.save(); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = sfondoImmagine; ctx.fillRect(0, 0, chart.width, chart.height); ctx.restore(); } }; const mostraEtichettePie = { id: 'mostraEtichettePie', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const assoluto = chart.data.datasets[i].data[index]; const postAssoluto = assoluto.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const percentuale = valorePercentuale.toString().replace(".", ",") + '%'; const assolutoWidth = ctx.measureText(postAssoluto).width; const percentualeWidth = ctx.measureText(percentuale).width; if (assolutoWidth >= percentualeWidth) { var maggiore = assolutoWidth; } else {var maggiore = percentualeWidth;} const {x, y} = datapoint.tooltipPosition(); const textWidth = maggiore; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 42, textWidth + 10, 37); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(postAssoluto, x - (textWidth / 2), y - 28); ctx.fillText(percentuale, x - (textWidth / 2), y - 11); ctx.restore(); } }) }) } }; const mostraEtichette = { id: 'mostraEtichette', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 25, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y - 14); ctx.restore(); }) }) } }; const mostraEtichetteStacked = { id: 'mostraEtichetteStacked', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 5, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y+20); ctx.lineTo(x - 5, y + 15); ctx.lineTo(x + 5, y + 15); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y+6); ctx.restore(); }) }) } }; const mostraEtichetteSopra = { id: 'mostraEtichetteSopra', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 30, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y-19); ctx.restore(); } }) }) } }; const logo = new Image(); logo.src = 'https://www.garr.it/images/logo-garr-grafici.png'; const LogoGARR = { id: 'LogoGARR', beforeDraw(chart, args, options) { const {ctx, chartArea: { top, bottom, left, right} } = chart; const logoWidth = 100; const logoHeight = 34; ctx.save(); if ((logo.complete) && (ctx.canvas.offsetWidth > 640)) { ctx.drawImage(logo, ctx.canvas.offsetWidth - (logoWidth + 10), ctx.canvas.offsetHeight - (logoHeight + 10), logoWidth, logoHeight); } else { logo.onload = () => chart.draw(); }; ctx.restore(); } } const UtentiCloudGARRData = { tricodemo: 1, //labels: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'], labels: ['2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Capacità in Gbps', //data: [959, 991, 1031, 1049, 1066, 1093, 1106, 1112, 1142, 1176, 1200, 1215], data: [373, 705, 944, 1215, 1402], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; const optionsUCG = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Utenti della Cloud federata GARR', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { callback: function(TestoLungo) { const NuovoTesto = this.getLabelForValue(TestoLungo); const TestoCorto = NuovoTesto.substr(0, 4); return TestoCorto; }, color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Utenti', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, } }, animation: { onComplete: function() { var CanvasTemp = UtentiCloudGARRGraficoHD; var a = document.getElementById('UtentiCloudGARR_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'utenti-della-cloud-GARR.png'; } } } const UtentiCloudGARRConfig = { type: 'bar', data: UtentiCloudGARRData, options: optionsUCG, plugins: [mostraEtichetteStacked, sfondoBianco, LogoGARR] }; const UtentiCloudGARRGrafico = new Chart( document.getElementById('UtentiCloudGARR'), UtentiCloudGARRConfig ); const UtentiCloudGARRGraficoHD = new Chart( document.getElementById('UtentiCloudGARRHD'), UtentiCloudGARRConfig ); const optionsCUC = { maintainAspectRatio: false, rotation: 96, plugins: { title: { text: 'Cloud GARR: utenti per comunità', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, // position: posizioneLegenda, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'utenti', } } } const CloudUtentiComunitaData = { tricodemo: 1, labels: ['Università', 'PA', 'Ricerca scientifica', 'Reti della ricerca', 'Ricerca biomedica', 'Servizi GARR', 'Altro'], datasets: [{ label: 'Utenti per comunità', data: [170, 31, 261, 14, 113, 247, 42], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const CloudUtentiComunitaConfig = { type: 'doughnut', data: CloudUtentiComunitaData, options: optionsCUC, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CloudUtentiComunitaGrafico = new Chart( document.getElementById('CloudUtentiComunita'), CloudUtentiComunitaConfig ); const optionsCUCHD = { maintainAspectRatio: false, rotation: 96, plugins: { title: { text: 'Cloud GARR: utenti per comunità', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'utenti', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectCUC'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = CloudUtentiComunitaGraficoHD; var a = document.getElementById('CloudUtentiComunita_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'utenti-cloud-per-comunita-GARR-'+annoSelezionato+'.png'; } } } const CloudUtentiComunitaConfigHD = { type: 'doughnut', data: CloudUtentiComunitaData, options: optionsCUCHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CloudUtentiComunitaGraficoHD = new Chart( document.getElementById('CloudUtentiComunitaHD'), CloudUtentiComunitaConfigHD ); const optionsCRC = { maintainAspectRatio: false, rotation: 190, plugins: { title: { text: 'Cloud GARR: risorse per comunità', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, // position: posizioneLegenda, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'risorse', } } } const CloudRisorseComunitaData = { tricodemo: 1, labels: ['Ricerca scientifica', 'PA', 'Università', 'Reti della ricerca', 'Servizi GARR', 'Ricerca biomedica', 'Altro'], datasets: [{ label: 'Risorse per comunità', data: [2513, 91, 1187, 41, 921, 771, 156], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const CloudRisorseComunitaConfig = { type: 'doughnut', data: CloudRisorseComunitaData, options: optionsCRC, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CloudRisorseComunitaGrafico = new Chart( document.getElementById('CloudRisorseComunita'), CloudRisorseComunitaConfig ); const optionsCRCHD = { maintainAspectRatio: false, rotation: 190, plugins: { title: { text: 'Cloud GARR: risorse per comunità', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'risorse', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectCRC'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = CloudRisorseComunitaGraficoHD; var a = document.getElementById('CloudRisorseComunita_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'cloud-risorse-per-comunita-GARR-'+annoSelezionato+'.png'; } } } const CloudRisorseComunitaConfigHD = { type: 'doughnut', data: CloudRisorseComunitaData, options: optionsCRCHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const CloudRisorseComunitaGraficoHD = new Chart( document.getElementById('CloudRisorseComunitaHD'), CloudRisorseComunitaConfigHD ); /* const periodoUCG = document.getElementById('selectUCG'); periodoUCG.addEventListener('change', SelezionaPeriodoUCG) function SelezionaPeriodoUCG() { var lnk = document.getElementById('UtentiCloudGARR_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoUCG.value.split(','); UtentiCloudGARRGrafico.data.datasets[0].data = periodoUCG.value.split(','); UtentiCloudGARRGrafico.options.plugins.title.text = 'Utenti della Cloud federata GARR nel ' + periodoUCG.options[periodoUCG.selectedIndex].text; UtentiCloudGARRGrafico.update(); UtentiCloudGARRGraficoHD.data.datasets[0].data = periodoUCG.value.split(','); UtentiCloudGARRGraficoHD.options.plugins.title.text = 'Utenti della Cloud federata GARR nel ' + periodoUCG.options[periodoUCG.selectedIndex].text; UtentiCloudGARRGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } */ const periodoCUC = document.getElementById('selectCUC'); periodoCUC.addEventListener('change', SelezionaPeriodoCUC) function SelezionaPeriodoCUC() { var lnk = document.getElementById('CloudUtentiComunita_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoCUC.value.split(','); CloudUtentiComunitaGrafico.data.datasets[0].data = periodoCUC.value.split(','); CloudUtentiComunitaGrafico.options.plugins.title.text = 'Cloud GARR: utenti per comunità nel ' + periodoCUC.options[periodoCUC.selectedIndex].text; //CloudUtentiComunitaGrafico.options.plugins.legend.position = posizioneLegenda; CloudUtentiComunitaGrafico.update(); CloudUtentiComunitaGraficoHD.data.datasets[0].data = periodoCUC.value.split(','); CloudUtentiComunitaGraficoHD.options.plugins.title.text = 'Cloud GARR: utenti per comunità nel ' + periodoCUC.options[periodoCUC.selectedIndex].text; CloudUtentiComunitaGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoCRC = document.getElementById('selectCRC'); periodoCRC.addEventListener('change', SelezionaPeriodoCRC) function SelezionaPeriodoCRC() { var lnk = document.getElementById('CloudRisorseComunita_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoCRC.value.split(','); CloudRisorseComunitaGrafico.data.datasets[0].data = periodoCRC.value.split(','); CloudRisorseComunitaGrafico.options.plugins.title.text = 'Cloud GARR: utenti per comunità nel ' + periodoCRC.options[periodoCRC.selectedIndex].text; CloudRisorseComunitaGrafico.options.plugins.legend.position = posizioneLegenda; CloudRisorseComunitaGrafico.update(); CloudRisorseComunitaGraficoHD.data.datasets[0].data = periodoCRC.value.split(','); CloudRisorseComunitaGraficoHD.options.plugins.title.text = 'Cloud GARR: utenti per comunità nel ' + periodoCRC.options[periodoCRC.selectedIndex].text; CloudRisorseComunitaGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } $(function(){ $('#selectGrafico').on('change', function () { var url = $(this).val(); if (url) { window.location = url; } return false; }); });

Annual Report - Servizi di rete e accesso

28 Settembre 2018 | Chi siamo

.ContenitoreHD, .GraficoHD { width: 1200px; height: 600px; background: rgba(255, 255, 255, 1); } .ContenitorePieHD, .GraficoPieHD { width: 600px; height: 600px; background: rgba(255, 255, 255, 1); } .bottone { margin: 15px 25px 15px 5px; }

Elenco dei grafici per i servizi di rete e accesso

  • NOC: guasti e manutenzioni
  • SCARR: scansioni di vulnerabilità effettuate
  • CERT: segnalazioni di sicurezza gestite
  • NIC e LIR: domini registrati e nuove reti
  • IDEM: adesioni alla federazione
  • eduroam: accessi Wi-Fi in roaming tramite eduroam
  • eduroam: dispositivi connessi in roaming in Italia
  • CS: Certificati digitali rilasciati
Scegli NOC: guasti e manutenzioni SCARR: scansioni di vulnerabilità effettuate CERT: segnalazioni di sicurezza gestite NIC e LIR: domini registrati e nuove reti IDEM: adesioni alla federazione eduroam: accessi Wi-Fi in roaming tramite eduroam eduroam: dispositivi connessi in roaming in Italia CS: Certificati digitali rilasciati

NOC: guasti e manutenzioni

Il grafico mostra il numero di ticket (manutenzioni programmate e malfunzionamenti) gestiti dal NOC (Network Operations Centre), il team che si occupa di garantire il funzionamento dell’infrastruttura di rete.

Cambia periodo
Salva immagine

SCARR: scansioni di vulnerabilità

Il grafico mostra il numero di scansioni di vulnerabilità effettuate con il servizio SCARR.

Salva immagine

CERT: Segnalazioni di sicurezza gestite

Il grafico mostra le segnalazioni gestite in modalità manuale e automatica dal CERT, il team che assiste gli utenti nella gestione di incidenti di sicurezza informatica e nella realizzazione di misure atte a prevenirli.

Salva immagine

NIC e LIR: domini registrati e nuove reti IPv4 e IPv6

Il grafico mostra il numero di interventi effettuati sui domini .it e .eu e il numero di reti IPv4 e IPv6 assegnate ad enti della rete GARR.

Cambia periodo
Salva immagine

IDEM: adesioni alla federazione

Il grafico mostra il numero di organizzazioni che aderisce alla Federazione IDEM in qualità di Membri o Partner. I primi sono organizzazioni afferenti alla comunità GARR e registrano principalmente un servizio di gestione e verifica delle identità (Identity Provider), ma possono registrare anche una o più risorse (Service Provider). I partner sono organizzazioni esterne a GARR e generalmente registrano una o più risorse.
Nel grafico è mostrato anche l’andamento delle registrazioni di Identity Provider e Service Provider.

Cambia periodo
Salva immagine

eduroam: accessi Wi-Fi in roaming tramite eduroam

Il grafico mostra il numero di autenticazioni con successo effettuate da utenti italiani in roaming sul territorio nazionale e all’estero.

Salva immagine

eduroam: dispositivi connessi in roaming in Italia

Il grafico mostra la percentuale di dispositivi connessi in roaming in Italia.

Seleziona l'anno: 2021 2020 2019 2018 2017
Salva immagine

CS: certificati digitali rilasciati

Il Certification Service del GARR rilascia gratuitamente alla propria comunità certificati digitali sia nella versione personale che server.
Il grafico mostra l’andamento nel numero di certificati digitali rilasciati.

Salva immagine

Continua a leggere

 Cloud  Servizi applicativi


Le informazioni contenute in questo documento sono tratte dal "Bilancio Consuntivo 2021" e dalla Relazione sull'attività svolta e risultati conseguiti 2021 approvati dall'Assemblea dei soci GARR a maggio 2022.

pdf Scarica l'annual report 2021(22.72 MB)

Tutti gli annual report

var numeroScheda=""; var SpazioDestra = 30; var TitoloFont = 'Raleway'; var TitoloFontSize = 15; var TitoloVisualizza = true; var TitoloAllinea = 'end'; // start center end var TitoloPadding = 20; var TitoloColore = '#1d5b37'; var TitoloStile = 'normal'; // normal italic oblique initial inherit var ArrayColore = ["rgba(0, 29, 111, 0.6)", "rgba(0, 111, 62, 0.6)", "rgba(197, 26, 26, 0.6)", "rgba(224, 155, 38, 0.6)", "rgba(111, 0, 86, 0.6)", "rgba(228, 88, 19, 0.6)", "rgba(71, 0, 11, 0.6)"]; var ArrayColoreBordo = ["rgba(0, 29, 111, 1)", "rgba(0, 111, 62, 1)", "rgba(111, 0, 0, 1)", "rgba(224, 155, 38, 1)", "rgba(111, 0, 86, 1)", "rgba(228, 88, 19, 1)", "rgba(71, 0, 11, 1)"]; var ArrayColoreSfondo = ["rgba(0, 29, 111, 0.1)", "rgba(0, 111, 62, 0.1)", "rgba(197, 26, 26, 0.1)", "rgba(224, 155, 38, 0.1)", "rgba(111, 0, 86, 0.1)", "rgba(228, 88, 19, 0.1)", "rgba(71, 0, 11, 0.1)"]; var Bianco = '#FFFFFF'; var Nero = '#000000'; var Grigio = '#a3a3a3'; var BordoSpessore = 1; var AssiFont = 'Varela Round'; var AssiFontSize = 13; var AssiVisualizza = 'true'; var AssiAllinea = 'center'; var AssiPadding = 10; var AssiColore = '#1d5b37'; var AssiStile = 'normal'; var LabelFont = 'Varela Round'; var LabelFontSize = 13; var LabelColore = '#1d5b37'; var LabelStile = 'normal'; var TooltipFont = 'Varela Round'; var TooltipFontSize = 13; var TooltipColore = 'rgba(255,255,255,1)'; var TooltipSfondo = 'rgba(0,0,0,1)'; var TooltipLightColore = 'rgba(0,0,0,1)'; var TooltipLightSfondo = 'rgba(0,0,0,0)'; var TicksFont = 'Varela Round'; var TicksFontSize = 13; var TicksColore = '#1d5b37'; var TicksStile = 'normal'; var sfondoImmagine = 'rgba(255,255,255,1)'; var legendaImmagine = 'right'; //if (document.getElementById("contenuto-principale").offsetWidth { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const {x, y} = datapoint.tooltipPosition(); var cosaMisura = chart.config.options.plugins.Contatore.cosaMisura; let primoValore = chart.data.datasets[i].data.indexOf(chart.data.datasets[i].data[index]); if (primoValore == 0) { const {ctx, chartArea : {top, right, bottom, left, width, height} } = chart; ctx.save(); ctx.font = TitoloFont; ctx.textAlign = 'center'; ctx.fillStyle = Nero; ctx.fontSize = 30; ctx.fillText('Totale ' + cosaMisura + ':', left + (width / 2), top + (height /2) - 11); ctx.fillText(postSommaTotale, left + (width / 2), top + (height /2) + 11); ctx.restore(); } }) }) } }; const sfondoBianco = { id: 'sfondoBianco', beforeDraw: (chart) => { const ctx = chart.canvas.getContext('2d'); ctx.save(); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = sfondoImmagine; ctx.fillRect(0, 0, chart.width, chart.height); ctx.restore(); } }; const mostraEtichettePie = { id: 'mostraEtichettePie', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const assoluto = chart.data.datasets[i].data[index]; const postAssoluto = assoluto.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const percentuale = valorePercentuale.toString().replace(".", ",") + '%'; const assolutoWidth = ctx.measureText(postAssoluto).width; const percentualeWidth = ctx.measureText(percentuale).width; if (assolutoWidth >= percentualeWidth) { var maggiore = assolutoWidth; } else {var maggiore = percentualeWidth;} const {x, y} = datapoint.tooltipPosition(); const textWidth = maggiore; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 42, textWidth + 10, 37); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(postAssoluto, x - (textWidth / 2), y - 28); ctx.fillText(percentuale, x - (textWidth / 2), y - 11); ctx.restore(); } }) }) } }; const mostraEtichette = { id: 'mostraEtichette', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 25, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y - 14); ctx.restore(); }) }) } }; const mostraEtichetteStacked = { id: 'mostraEtichetteStacked', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 5, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y+20); ctx.lineTo(x - 5, y + 15); ctx.lineTo(x + 5, y + 15); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y+6); ctx.restore(); }) }) } }; const mostraEtichetteSopra = { id: 'mostraEtichetteSopra', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 30, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y-19); ctx.restore(); } }) }) } }; const sommaDueColonne = { id: 'sommaDueColonne', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); function isOdd(i) { return i % 2;} if (isOdd(i)) { var zero = i-1; var uno = i; var primo = chart.data.datasets[zero].data[index]; var secondo = chart.data.datasets[uno].data[index]; var pes= primo+secondo; const nCoppia = 'tot ' + pes.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const nCoppiaWidth = ctx.measureText(nCoppia).width; if ((chart.isDatasetVisible(zero)) && (chart.isDatasetVisible(uno))) { ctx.fillStyle = TooltipLightSfondo; ctx.fillRect(x - ((nCoppiaWidth + 10) /2), y - 30, nCoppiaWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipLightColore; ctx.fillText(nCoppia, x - (nCoppiaWidth / 2), y-19); ctx.restore(); } } }) }) } }; const sommaTreColonne = { id: 'sommaTreColonne', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); function isEven(n) { return n % 2 == 0;} if (isEven(i) && i > 0) { if (chart.isDatasetVisible(i-2) == true){ var colonnaZero = parseInt(chart.data.datasets[i-2].data[index]); } else { var colonnaZero = 0; } if (chart.isDatasetVisible(i-1) == true){ var colonnaUno = parseInt(chart.data.datasets[i-1].data[index]); } else { var colonnaUno = 0; } if (chart.isDatasetVisible(i) == true){ var colonnaDue = parseInt(chart.data.datasets[i].data[index]); } else { var colonnaDue = 0; }; var ab = colonnaZero + colonnaUno; var ac = colonnaZero + colonnaDue; var bc = colonnaUno + colonnaDue; var abc = colonnaZero + colonnaUno + colonnaDue; var doppiettaAB = 'tot ' + ab.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); var doppiettaAC = 'tot ' + ac.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); var doppiettaBC = 'tot ' + bc.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); var tripletta = 'tot ' + abc.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const triplettaWidth = ctx.measureText(tripletta).width; const doppiettaABWidth = ctx.measureText(doppiettaAB).width; const doppiettaACWidth = ctx.measureText(doppiettaAC).width; const doppiettaBCWidth = ctx.measureText(doppiettaBC).width; if ((chart.isDatasetVisible(0) === true) && (chart.isDatasetVisible(1) === true) && (chart.isDatasetVisible(2) === false)) { ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipLightColore; ctx.fillText(doppiettaAB, x - (doppiettaABWidth / 2), (y-19 + datapoint.height)); } else if ((chart.isDatasetVisible(0) === false) && (chart.isDatasetVisible(1) === true) && (chart.isDatasetVisible(2) === true)) { ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipLightColore; ctx.fillText(doppiettaBC, x - (doppiettaBCWidth / 2), y-19); } else if ((chart.isDatasetVisible(0) === true) && (chart.isDatasetVisible(1) === false) && (chart.isDatasetVisible(2) === true)) { ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipLightColore; ctx.fillText(doppiettaAC, x - (doppiettaACWidth / 2), y-19); } else if (chart.isDatasetVisible(0) && chart.isDatasetVisible(1) && chart.isDatasetVisible(2)) { ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipLightColore; ctx.fillText(tripletta, x - (triplettaWidth / 2), y-19); } else { //console.log("una sola colonna è visibile"); }; ctx.restore(); } }) }) } }; const logo = new Image(); logo.src = 'https://www.garr.it/images/logo-garr-grafici.png'; const LogoGARR = { id: 'LogoGARR', beforeDraw(chart, args, options) { const {ctx, chartArea: { top, bottom, left, right} } = chart; const logoWidth = 100; const logoHeight = 34; ctx.save(); if ((logo.complete) && (ctx.canvas.offsetWidth > 640)) { ctx.drawImage(logo, ctx.canvas.offsetWidth - (logoWidth + 10), ctx.canvas.offsetHeight - (logoHeight + 10), logoWidth, logoHeight); } else { logo.onload = () => chart.draw(); }; ctx.restore(); } } const optionsNGM = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'NOC: guasti e manutenzioni', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, datalabels: { color: '#fff', formatter: function(value, context) { return value.toLocaleString() } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, }, y: { beginAtZero: true, title: { text: 'Interventi effettuati', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, } }, animation: { onComplete: function() { var CanvasTemp = NOCGuastiManutenzioniGraficoHD; var a = document.getElementById('NOCGuastiManutenzioni_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'interventi-noc-GARR.png'; } } } /* const unico-NOCGuastiManutenzioniData = { tricodemo: 2, labels: ['2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Guasti', data: [658, 687, 734, 770, 754, 906, 820, 956, 1062, 1027, 999], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore },{ label: 'Manutenzioni', data: [309, 386, 432, 346, 416, 593, 393, 310, 390, 363, 432], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; */ const NOCGuastiManutenzioniDataUno = { tricodemo: 1, labels: ['2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Guasti', data: [820, 956, 1062, 1027, 999], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore },{ label: 'Manutenzioni', data: [393, 310, 390, 363, 432], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; const NOCGuastiManutenzioniDataDue = { tricodemo: 2, labels: ['2011', '2012', '2013', '2014', '2015', '2016'], datasets: [{ label: 'Guasti', data: [658, 687, 734, 770, 754, 906], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore },{ label: 'Manutenzioni', data: [309, 386, 432, 346, 416, 593], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; const NOCGuastiManutenzioniConfig = { type: 'bar', data: NOCGuastiManutenzioniDataUno, options: optionsNGM, plugins: [sfondoBianco, ChartDataLabels, sommaDueColonne, LogoGARR] }; const NOCGuastiManutenzioniGrafico = new Chart( document.getElementById('NOCGuastiManutenzioni'), NOCGuastiManutenzioniConfig ); const NOCGuastiManutenzioniGraficoHD = new Chart( document.getElementById('NOCGuastiManutenzioniHD'), NOCGuastiManutenzioniConfig ); const optionsSDV = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'SCARR: Scansioni di vulnerabilità', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, datalabels: { color: '#fff', formatter: function(value, context) { return value.toLocaleString() } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, }, y: { beginAtZero: true, title: { text: 'Scansioni', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, } }, animation: { onComplete: function() { var CanvasTemp = ScansioniDiVulnerabilitaGraficoHD; var a = document.getElementById('ScansioniDiVulnerabilita_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'scansioni-vulnerabilita.png'; } } } const ScansioniDiVulnerabilitaData = { labels: ['2019', '2020', '2021'], datasets: [{ label: 'Scansioni di vulnerabilità', data: [450, 760, 2400], pointBackgroundColor: ArrayColoreBordo[1], backgroundColor: ArrayColore[1], borderColor: ArrayColore[1], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const ScansioniDiVulnerabilitaConfig = { type: 'bar', data: ScansioniDiVulnerabilitaData, options: optionsSDV, plugins: [sfondoBianco, ChartDataLabels, LogoGARR] }; const ScansioniDiVulnerabilitaGrafico = new Chart( document.getElementById('ScansioniDiVulnerabilita'), ScansioniDiVulnerabilitaConfig ); const ScansioniDiVulnerabilitaGraficoHD = new Chart( document.getElementById('ScansioniDiVulnerabilitaHD'), ScansioniDiVulnerabilitaConfig ); const optionsSSG = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'CERT: Segnalazioni di sicurezza gestite', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, datalabels: { color: '#fff', formatter: function(value, context) { return value.toLocaleString() } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, }, y: { beginAtZero: true, title: { text: 'Segnalazioni', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, } }, animation: { onComplete: function() { var CanvasTemp = CERTSegnalazioniGestiteGraficoHD; var a = document.getElementById('CERTSegnalazioniGestite_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'interventi-noc-GARR.png'; } } } const CERTSegnalazioniGestiteData = { labels: ['2018', '2019', '2020', '2021'], datasets: [{ label: 'Ticket manuali', data: [3110, 3689, 2493, 2243], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore },{ label: 'Ticket automatici', data: [16825, 12471, 7392, 7677], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; const CERTSegnalazioniGestiteConfig = { type: 'bar', data: CERTSegnalazioniGestiteData, options: optionsSSG, plugins: [sfondoBianco, ChartDataLabels, sommaDueColonne, LogoGARR] }; const CERTSegnalazioniGestiteGrafico = new Chart( document.getElementById('CERTSegnalazioniGestite'), CERTSegnalazioniGestiteConfig ); const CERTSegnalazioniGestiteGraficoHD = new Chart( document.getElementById('CERTSegnalazioniGestiteHD'), CERTSegnalazioniGestiteConfig ); /* const optionsTSG = { maintainAspectRatio: false, plugins: { title: { text: 'Tipo di segnalazioni di sicurezza gestite', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: posizioneLegenda, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'segnalazioni', } } } const TipoSegnalazioniGestiteData = { // 2020 labels: ['DoS', 'Web', 'Virus', 'Spam', 'Copyright', 'Aperti involontariamente', 'Altro'], datasets: [{ label: '2020', data: [347, 628, 675, 197, 931, 164, 433], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const TipoSegnalazioniGestiteConfig = { type: 'doughnut', data: TipoSegnalazioniGestiteData, options: optionsTSG, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const TipoSegnalazioniGestiteGrafico = new Chart( document.getElementById('TipoSegnalazioniGestite'), TipoSegnalazioniGestiteConfig ); const optionsTSGHD = { maintainAspectRatio: false, plugins: { title: { text: 'Tipo di segnalazioni di sicurezza gestite', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'segnalazioni', } }, animation: { onComplete: function() { var CanvasTemp = TipoSegnalazioniGestiteGraficoHD; var a = document.getElementById('TipoSegnalazioniGestite_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'tipo-segnalazioni-gestite-GARR.png'; } } } const TipoSegnalazioniGestiteConfigHD = { type: 'doughnut', data: TipoSegnalazioniGestiteData, options: optionsTSGHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const TipoSegnalazioniGestiteGraficoHD = new Chart( document.getElementById('TipoSegnalazioniGestiteHD'), TipoSegnalazioniGestiteConfigHD ); */ const optionsDER = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Domini registrati e nuove reti IPv4 e IPv6', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: true }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, datalabels: { color: '#fff', formatter: function(value, context) { return value.toLocaleString() } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: false }, y: { beginAtZero: true, title: { text: 'Interventi', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: false } }, animation: { onComplete: function() { if (!(numeroScheda)) {numeroScheda="-2"}; var CanvasTemp = DominiERetiGraficoHD; var a = document.getElementById('DominiEReti_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'domini-registrati-e-nuove-reti-GARR'+numeroScheda+'.png'; } } } const DominiERetiDataUno = { tricodemo: 1, labels: ['2017', '2018', '2019', '2020', '2021'], datasets: [{ label: '.it', data: [129, 164, 117, 92, 122], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore },{ label: '.eu', data: [109, 90, 119, 87, 110], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore },{ label: 'Reti IPv4 e IPv6', data: [11, 14, 18 ,41, 27], backgroundColor: ArrayColore[2], borderColor: ArrayColoreBordo[2], borderWidth: BordoSpessore }] }; const DominiERetiDataDue = { tricodemo: 2, labels: ['2012', '2013', '2014', '2015', '2016'], datasets: [{ label: '.it', data: [109, 96, 98, 103, 136], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore },{ label: '.eu', data: [85, 70, 81, 79, 118], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore },{ label: 'Reti IPv4 e IPv6', data: [37, 21, 79, 225, 37], backgroundColor: ArrayColore[2], borderColor: ArrayColoreBordo[2], borderWidth: BordoSpessore }] }; const DominiERetiConfig = { type: 'bar', data: DominiERetiDataUno, options: optionsDER, plugins: [sfondoBianco, ChartDataLabels, LogoGARR] }; const DominiERetiGrafico = new Chart( document.getElementById('DominiEReti'), DominiERetiConfig ); const DominiERetiGraficoHD = new Chart( document.getElementById('DominiERetiHD'), DominiERetiConfig ); const optionsIAF = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Adesioni alla Federazione IDEM', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, datalabels: { color: '#fff', formatter: function(value, context) { return value.toLocaleString() } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, }, y: { beginAtZero: true, title: { text: 'Adesioni', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } }, stacked: true, } }, animation: { onComplete: function() { if (!(numeroScheda)) {numeroScheda="-2"}; var CanvasTemp = AdesioniIDEMGraficoHD; var a = document.getElementById('AdesioniIDEM_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'adesioni-IDEM-GARR'+numeroScheda+'.png'; } } } const AdesioniIDEMDataUno = { tricodemo: 1, labels: ['2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Membri', data: [77, 94, 104, 113, 139], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore, stack: 'Mep', },{ label: 'Partner', data: [29, 29, 29, 30, 34], backgroundColor: ArrayColore[1], borderColor: ArrayColoreBordo[1], borderWidth: BordoSpessore, stack: 'Mep', },{ label: 'IDP', data: [79, 97, 106, 113, 126], backgroundColor: ArrayColore[2], borderColor: ArrayColoreBordo[2], borderWidth: BordoSpessore, stack: 'IeS', },{ label: 'SP', data: [125, 120, 116, 115, 121], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore, stack: 'IeS', }] }; const AdesioniIDEMDataDue = { tricodemo: 2, labels: ['2012', '2013', '2014', '2015', '2016'], datasets: [{ label: 'Membri', data: [38, 44, 60, 70, 72], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore, stack: 'Mep', },{ label: 'Partner', data: [18, 21, 24, 26, 27], backgroundColor: ArrayColore[1], borderColor: ArrayColoreBordo[1], borderWidth: BordoSpessore, stack: 'Mep', },{ label: 'IDP', data: [46, 55, 67, 74, 76], backgroundColor: ArrayColore[2], borderColor: ArrayColoreBordo[2], borderWidth: BordoSpessore, stack: 'IeS', },{ label: 'SP', data: [75, 86, 105, 114, 118], backgroundColor: ArrayColore[3], borderColor: ArrayColoreBordo[3], borderWidth: BordoSpessore, stack: 'IeS', }] }; const AdesioniIDEMConfig = { type: 'bar', data: AdesioniIDEMDataUno, options: optionsIAF, plugins: [sfondoBianco, ChartDataLabels, sommaDueColonne, LogoGARR] }; const AdesioniIDEMGrafico = new Chart( document.getElementById('AdesioniIDEM'), AdesioniIDEMConfig ); const AdesioniIDEMGraficoHD = new Chart( document.getElementById('AdesioniIDEMHD'), AdesioniIDEMConfig ); const optionsEAW = { maintainAspectRatio: false, layout: { padding: { right: 50 //SpazioDestra } }, plugins: { title: { text: 'eduroam: accessi Wi-Fi in roaming tramite eduroam', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Accessi', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { callback: function(NumeroLungo) { const ValoreIniziale = this.getLabelForValue(NumeroLungo); const SenzaSeparatore = ValoreIniziale.replaceAll('.',''); if ((SenzaSeparatore.length

Annual Report - Personale GARR

28 Settembre 2018 | Chi siamo

.ContenitoreHD, .GraficoHD { width: 1200px; height: 600px; background: rgba(255, 255, 255, 1); } .ContenitorePieHD, .GraficoPieHD { width: 600px; height: 600px; background: rgba(255, 255, 255, 1); } .bottone { margin: 15px 25px 15px 5px; }

Elenco dei grafici per il personale GARR

  • Composizione di genere
  • Età
  • Settore di attività
  • Attività tecnica
  • Tipo di contratto
  • Retribuzione
Scegli Composizione di genere Età Settore di attività Attività tecnica Tipo di contratto Retribuzione

Composizione di genere

Il grafico mostra la composizione del personale GARR per genere.

Seleziona l'anno: 2021 2020 2019 2018 2017
Salva immagine

Età del personale

Il grafico mostra la composizione del personale GARR per fasce di età.

Seleziona l'anno: 2021 2020 2019 2018 2017 2016
Salva immagine

Settore di attività

Il grafico mostra la ripartizione del personale per attività svolta. Le attività tecniche sono legate alla mission istituzionale. Le attività amministrative sono svolte nei settori di amministrazione, segreteria, formazione, comunicazione, web e multimedia. L'attività di ricerca e sviluppo coinvolge in maniera trasversale tutto il personale GARR.

Seleziona l'anno: 2021 2020 2019 2018
Salva immagine

Attività tecnica

Il grafico mostra il dettaglio delle attività tecniche svolte dal personale GARR.

Seleziona l'anno: 2021 2020 2019 2018
Salva immagine

Tipologia di contratto

Il grafico mostra la suddivisione del personale per tipologia di contratto.

Seleziona l'anno: 2021 2020 2019 2018
Salva immagine

Retribuzione lorda annua

Il grafico mostra la distribuzione della retribuzione lorda annua dei dipendenti.

Seleziona l'anno: 2021 2020 2019 2018 2017
Salva immagine

Continua a leggere

 Servizi applicativi  Comunicazione


Le informazioni contenute in questo documento sono tratte dal "Bilancio Consuntivo 2021" e dalla Relazione sull'attività svolta e risultati conseguiti 2021 approvati dall'Assemblea dei soci GARR a maggio 2022.

pdf Scarica l'annual report 2021(22.72 MB)

Tutti gli annual report

var numeroScheda=""; var SpazioDestra = 30; var TitoloFont = 'Raleway'; var TitoloFontSize = 15; var TitoloVisualizza = true; var TitoloAllinea = 'end'; // start center end var TitoloPadding = 20; var TitoloColore = '#1d5b37'; var TitoloStile = 'normal'; // normal italic oblique initial inherit var ArrayColore = ["rgba(0, 29, 111, 0.6)", "rgba(0, 111, 62, 0.6)", "rgba(197, 26, 26, 0.6)", "rgba(224, 155, 38, 0.6)", "rgba(111, 0, 86, 0.6)", "rgba(228, 88, 19, 0.6)", "rgba(71, 0, 11, 0.6)"]; var ArrayColoreBordo = ["rgba(0, 29, 111, 1)", "rgba(0, 111, 62, 1)", "rgba(111, 0, 0, 1)", "rgba(224, 155, 38, 1)", "rgba(111, 0, 86, 1)", "rgba(228, 88, 19, 1)", "rgba(71, 0, 11, 1)"]; var ArrayColoreSfondo = ["rgba(0, 29, 111, 0.1)", "rgba(0, 111, 62, 0.1)", "rgba(197, 26, 26, 0.1)", "rgba(224, 155, 38, 0.1)", "rgba(111, 0, 86, 0.1)", "rgba(228, 88, 19, 0.1)", "rgba(71, 0, 11, 0.1)"]; var Bianco = '#FFFFFF'; var Nero = '#000000'; var Grigio = '#a3a3a3'; var BordoSpessore = 1; var AssiFont = 'Varela Round'; var AssiFontSize = 13; var AssiVisualizza = 'true'; var AssiAllinea = 'center'; var AssiPadding = 10; var AssiColore = '#1d5b37'; var AssiStile = 'normal'; var LabelFont = 'Varela Round'; var LabelFontSize = 13; var LabelColore = '#1d5b37'; var LabelStile = 'normal'; var TooltipFont = 'Varela Round'; var TooltipFontSize = 13; var TooltipColore = 'rgba(255,255,255,1)'; var TooltipSfondo = 'rgba(0,0,0,1)'; var TicksFont = 'Varela Round'; var TicksFontSize = 13; var TicksColore = '#1d5b37'; var TicksStile = 'normal'; var sfondoImmagine = 'rgba(255,255,255,1)'; var legendaImmagine = 'right'; //if (document.getElementById("contenuto-principale").offsetWidth { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const {x, y} = datapoint.tooltipPosition(); var cosaMisura = chart.config.options.plugins.Contatore.cosaMisura; let primoValore = chart.data.datasets[i].data.indexOf(chart.data.datasets[i].data[index]); if (primoValore == 0) { const {ctx, chartArea : {top, right, bottom, left, width, height} } = chart; ctx.save(); ctx.font = TitoloFont; ctx.textAlign = 'center'; ctx.fillStyle = Nero; ctx.fontSize = 30; ctx.fillText('Totale ' + cosaMisura + ':', left + (width / 2), top + (height /2) - 11); ctx.fillText(postSommaTotale, left + (width / 2), top + (height /2) + 11); ctx.restore(); } }) }) } }; const sfondoBianco = { id: 'sfondoBianco', beforeDraw: (chart) => { const ctx = chart.canvas.getContext('2d'); ctx.save(); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = sfondoImmagine; ctx.fillRect(0, 0, chart.width, chart.height); ctx.restore(); } }; const mostraEtichettePie = { id: 'mostraEtichettePie', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const assoluto = chart.data.datasets[i].data[index]; const postAssoluto = assoluto.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const percentuale = valorePercentuale.toString().replace(".", ",") + '%'; const assolutoWidth = ctx.measureText(postAssoluto).width; const percentualeWidth = ctx.measureText(percentuale).width; if (assolutoWidth >= percentualeWidth) { var maggiore = assolutoWidth; } else {var maggiore = percentualeWidth;} const {x, y} = datapoint.tooltipPosition(); const textWidth = maggiore; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 42, textWidth + 10, 37); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(postAssoluto, x - (textWidth / 2), y - 28); ctx.fillText(percentuale, x - (textWidth / 2), y - 11); ctx.restore(); } }) }) } }; const mostraEtichette = { id: 'mostraEtichette', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 25, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y - 14); ctx.restore(); }) }) } }; const mostraEtichetteStacked = { id: 'mostraEtichetteStacked', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 5, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y+20); ctx.lineTo(x - 5, y + 15); ctx.lineTo(x + 5, y + 15); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y+6); ctx.restore(); }) }) } }; const mostraEtichetteSopra = { id: 'mostraEtichetteSopra', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 30, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y-19); ctx.restore(); } }) }) } }; const logo = new Image(); logo.src = 'https://www.garr.it/images/logo-garr-grafici.png'; const LogoGARR = { id: 'LogoGARR', beforeDraw(chart, args, options) { const {ctx, chartArea: { top, bottom, left, right} } = chart; const logoWidth = 100; const logoHeight = 34; ctx.save(); if ((logo.complete) && (ctx.canvas.offsetWidth > 640)) { ctx.drawImage(logo, ctx.canvas.offsetWidth - (logoWidth + 10), ctx.canvas.offsetHeight - (logoHeight + 10), logoWidth, logoHeight); } else { logo.onload = () => chart.draw(); }; ctx.restore(); } } const PersonaleGenereData = { labels: ['Uomini', 'Donne'], datasets: [{ label: '2021', data: [53, 25], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const optionsPGG = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale GARR: composizione di genere', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, /*position: posizioneLegenda,*/ labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } } } const PersonaleGenereConfig = { type: 'doughnut', data: PersonaleGenereData, options: optionsPGG, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleGenereGrafico = new Chart( document.getElementById('PersonaleGenere'), PersonaleGenereConfig ); const optionsPGGHD = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale GARR: composizione di genere', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectPGG'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = PersonaleGenereGraficoHD; var a = document.getElementById('PersonaleGenere_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'genere-personale-GARR-'+annoSelezionato+'.png'; } } } const PersonaleGenereConfigHD = { type: 'doughnut', data: PersonaleGenereData, options: optionsPGGHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleGenereGraficoHD = new Chart( document.getElementById('PersonaleGenereHD'), PersonaleGenereConfigHD ); const PersonaleEtaData = { labels: ['< 25', '25-30', '31-35', '36-40', '41-45', '46-50', '> 50'], datasets: [{ label: 'Numero di lavoratori', data: [2, 11, 3, 9, 18, 19, 16], backgroundColor: ArrayColore[5], borderColor: ArrayColoreBordo[5], borderWidth: BordoSpessore }] }; const optionsPGE = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Età del personale GARR', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Età', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Lavoratori', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectPGE'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = PersonaleEtaGraficoHD; var a = document.getElementById('PersonaleEta_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'eta-personale-GARR-'+annoSelezionato+'.png'; } } } const PersonaleEtaConfig = { type: 'bar', data: PersonaleEtaData, options: optionsPGE, plugins: [mostraEtichette, sfondoBianco, LogoGARR] }; const PersonaleEtaGrafico = new Chart( document.getElementById('PersonaleEta'), PersonaleEtaConfig ); const PersonaleEtaGraficoHD = new Chart( document.getElementById('PersonaleEtaHD'), PersonaleEtaConfig ); const PersonaleSettoreData = { labels: ['Tecnici', 'Amministrazione'], datasets: [{ label: '2021', data: [54, 24], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const optionsPGS = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale GARR: settore di attività', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, /*position: posizioneLegenda,*/ labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } } } const PersonaleSettoreConfig = { type: 'doughnut', data: PersonaleSettoreData, options: optionsPGS, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleSettoreGrafico = new Chart( document.getElementById('PersonaleSettore'), PersonaleSettoreConfig ); const optionsPGSHD = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale GARR: settore di attività', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectPGS'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = PersonaleSettoreGraficoHD; var a = document.getElementById('PersonaleSettore_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'settore-personale-GARR-'+annoSelezionato+'.png'; } } } const PersonaleSettoreConfigHD = { type: 'doughnut', data: PersonaleSettoreData, options: optionsPGSHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleSettoreGraficoHD = new Chart( document.getElementById('PersonaleSettoreHD'), PersonaleSettoreConfigHD ); const PersonaleTecnicoData = { labels: ['Gestione e progettazione', 'Sistemi informativi', 'Cloud'], datasets: [{ label: '2021', data: [36, 9, 9], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const optionsPGT = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale tecnico GARR', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, /*position: posizioneLegenda,*/ labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } } } const PersonaleTecnicoConfig = { type: 'doughnut', data: PersonaleTecnicoData, options: optionsPGT, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleTecnicoGrafico = new Chart( document.getElementById('PersonaleTecnico'), PersonaleTecnicoConfig ); const optionsPGTHD = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale tecnico GARR', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectPGT'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = PersonaleTecnicoGraficoHD; var a = document.getElementById('PersonaleTecnico_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'personale-tecnico-GARR-'+annoSelezionato+'.png'; } } } const PersonaleTecnicoConfigHD = { type: 'doughnut', data: PersonaleTecnicoData, options: optionsPGTHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleTecnicoGraficoHD = new Chart( document.getElementById('PersonaleTecnicoHD'), PersonaleTecnicoConfigHD ); const PersonaleContrattoData = { labels: ['Tempo indeterminato', 'Tempo indeterminato part', 'Tempo determinato', 'Personale di enti soci presso GARR', 'Collaboratori'], datasets: [{ label: '2021', data: [60, 5, 13, 7, 5], backgroundColor: ArrayColore, borderColor: Bianco, hoverBorderColor: Bianco, spacing: 10, hoverOffset: 4, borderRadius: 6, borderWidth: 3 }] }; const optionsPGC = { maintainAspectRatio: false, rotation: 55, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale GARR: tipologia di contratto', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, /*position: posizioneLegenda,*/ labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } } } const PersonaleContrattoConfig = { type: 'doughnut', data: PersonaleContrattoData, options: optionsPGC, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleContrattoGrafico = new Chart( document.getElementById('PersonaleContratto'), PersonaleContrattoConfig ); const optionsPGCHD = { maintainAspectRatio: false, rotation: 55, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale GARR: tipologia di contratto', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: legendaImmagine, labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } }, Contatore: { cosaMisura: 'lavoratori', } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectPGC'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = PersonaleContrattoGraficoHD; var a = document.getElementById('PersonaleContratto_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'contratto-personale-GARR-'+annoSelezionato+'.png'; } } } const PersonaleContrattoConfigHD = { type: 'doughnut', data: PersonaleContrattoData, options: optionsPGCHD, plugins: [mostraEtichettePie, sfondoBianco, LogoGARR, Contatore] }; const PersonaleContrattoGraficoHD = new Chart( document.getElementById('PersonaleContrattoHD'), PersonaleContrattoConfigHD ); const PersonaleRetribuzioneData = { labels: ['< 30', '30-35', '35-40', '40-45', '> 45'], datasets: [{ label: 'Lavoratori', data: [15, 15, 10, 9, 29], backgroundColor: ArrayColore[4], borderColor: ArrayColoreBordo[4], borderWidth: BordoSpessore }] }; const optionsPGR = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Personale GARR: retribuzione lorda annua', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Retribuzione (in migliaia di euro)', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Lavoratori', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var annoSelect = document.getElementById('selectPGR'); var annoSelezionato = annoSelect.options[annoSelect.selectedIndex].text; var CanvasTemp = PersonaleRetribuzioneGraficoHD; var a = document.getElementById('PersonaleRetribuzione_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'retribuzione-personale-GARR-'+annoSelezionato+'.png'; } } } const PersonaleRetribuzioneConfig = { type: 'bar', data: PersonaleRetribuzioneData, options: optionsPGR, plugins: [mostraEtichette, sfondoBianco, LogoGARR] }; const PersonaleRetribuzioneGrafico = new Chart( document.getElementById('PersonaleRetribuzione'), PersonaleRetribuzioneConfig ); const PersonaleRetribuzioneGraficoHD = new Chart( document.getElementById('PersonaleRetribuzioneHD'), PersonaleRetribuzioneConfig ); const periodoPGG = document.getElementById('selectPGG'); periodoPGG.addEventListener('change', SelezionaPeriodoPGG) function SelezionaPeriodoPGG() { var lnk = document.getElementById('PersonaleGenere_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoPGG.value.split(','); PersonaleGenereGrafico.data.datasets[0].data = periodoPGG.value.split(','); PersonaleGenereGrafico.options.plugins.title.text = 'Personale GARR: composizione di genere nel ' + periodoPGG.options[periodoPGG.selectedIndex].text; PersonaleGenereGrafico.options.plugins.legend.position = posizioneLegenda; PersonaleGenereGrafico.update(); PersonaleGenereGraficoHD.data.datasets[0].data = periodoPGG.value.split(','); PersonaleGenereGraficoHD.options.plugins.title.text = 'Personale GARR: composizione di genere nel ' + periodoPGG.options[periodoPGG.selectedIndex].text; PersonaleGenereGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoPGE = document.getElementById('selectPGE'); periodoPGE.addEventListener('change', SelezionaPeriodoPGE) function SelezionaPeriodoPGE() { var lnk = document.getElementById('PersonaleEta_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoPGE.value.split(','); PersonaleEtaGrafico.data.datasets[0].data = periodoPGE.value.split(','); PersonaleEtaGrafico.options.plugins.title.text = 'Personale GARR: età del personale nel ' + periodoPGE.options[periodoPGE.selectedIndex].text; PersonaleEtaGrafico.update(); PersonaleEtaGraficoHD.data.datasets[0].data = periodoPGE.value.split(','); PersonaleEtaGraficoHD.options.plugins.title.text = 'Personale GARR: età del personale nel ' + periodoPGE.options[periodoPGE.selectedIndex].text; PersonaleEtaGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoPGS = document.getElementById('selectPGS'); periodoPGS.addEventListener('change', SelezionaPeriodoPGS) function SelezionaPeriodoPGS() { var lnk = document.getElementById('PersonaleSettore_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoPGS.value.split(','); PersonaleSettoreGrafico.data.datasets[0].data = periodoPGS.value.split(','); PersonaleSettoreGrafico.options.plugins.title.text = 'Personale GARR: settore di attività nel ' + periodoPGS.options[periodoPGS.selectedIndex].text; PersonaleSettoreGrafico.options.plugins.legend.position = posizioneLegenda; PersonaleSettoreGrafico.update(); PersonaleSettoreGraficoHD.data.datasets[0].data = periodoPGS.value.split(','); PersonaleSettoreGraficoHD.options.plugins.title.text = 'Personale GARR: settore di attività nel ' + periodoPGS.options[periodoPGS.selectedIndex].text; PersonaleSettoreGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoPGT = document.getElementById('selectPGT'); periodoPGT.addEventListener('change', SelezionaPeriodoPGT) function SelezionaPeriodoPGT() { var lnk = document.getElementById('PersonaleTecnico_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoPGT.value.split(','); PersonaleTecnicoGrafico.data.datasets[0].data = periodoPGT.value.split(','); PersonaleTecnicoGrafico.options.plugins.title.text = 'Personale GARR: personale tecnico nel ' + periodoPGT.options[periodoPGT.selectedIndex].text; PersonaleTecnicoGrafico.options.plugins.legend.position = posizioneLegenda; PersonaleTecnicoGrafico.update(); PersonaleTecnicoGraficoHD.data.datasets[0].data = periodoPGT.value.split(','); PersonaleTecnicoGraficoHD.options.plugins.title.text = 'Personale GARR: personale tecnico nel ' + periodoPGT.options[periodoPGT.selectedIndex].text; PersonaleTecnicoGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoPGC = document.getElementById('selectPGC'); periodoPGC.addEventListener('change', SelezionaPeriodoPGC) function SelezionaPeriodoPGC() { var lnk = document.getElementById('PersonaleContratto_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoPGC.value.split(','); PersonaleContrattoGrafico.data.datasets[0].data = periodoPGC.value.split(','); PersonaleContrattoGrafico.options.plugins.title.text = 'Personale GARR: tipologia di contratto nel ' + periodoPGC.options[periodoPGC.selectedIndex].text; PersonaleContrattoGrafico.options.plugins.legend.position = posizioneLegenda; PersonaleContrattoGrafico.update(); PersonaleContrattoGraficoHD.data.datasets[0].data = periodoPGC.value.split(','); PersonaleContrattoGraficoHD.options.plugins.title.text = 'Personale GARR: tipologia di contratto nel ' + periodoPGC.options[periodoPGC.selectedIndex].text; PersonaleContrattoGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } const periodoPGR = document.getElementById('selectPGR'); periodoPGR.addEventListener('change', SelezionaPeriodoPGR) function SelezionaPeriodoPGR() { var lnk = document.getElementById('PersonaleRetribuzione_link'); lnk.classList.add("uk-link-muted"); lnk.href = "javascript:;"; periodoPGR.value.split(','); PersonaleRetribuzioneGrafico.data.datasets[0].data = periodoPGR.value.split(','); PersonaleRetribuzioneGrafico.options.plugins.title.text = 'Personale GARR: retribuzione lorda annua nel ' + periodoPGR.options[periodoPGR.selectedIndex].text; PersonaleRetribuzioneGrafico.update(); PersonaleRetribuzioneGraficoHD.data.datasets[0].data = periodoPGR.value.split(','); PersonaleRetribuzioneGraficoHD.options.plugins.title.text = 'Personale GARR: retribuzione lorda annua nel ' + periodoPGR.options[periodoPGR.selectedIndex].text; PersonaleRetribuzioneGraficoHD.update(); sospendiLink = setInterval(togliMuto, 1000); function togliMuto() { lnk.classList.remove("uk-link-muted"); clearInterval(sospendiLink); } } $(function(){ $('#selectGrafico').on('change', function () { var url = $(this).val(); if (url) { window.location = url; } return false; }); });

Annual Report - Comunicazione

28 Settembre 2018 | Chi siamo

.ContenitoreHD, .GraficoHD { width: 1200px; height: 600px; background: rgba(255, 255, 255, 1); } .ContenitorePieHD, .GraficoPieHD { width: 600px; height: 600px; background: rgba(255, 255, 255, 1); } .bottone { margin: 15px 25px 15px 5px; }

Elenco dei grafici per la comunicazione GARR

  • Social Media: followers
  • GARR TV: filmati disponibili
  • GARR News: pagine visualizzate
Scegli Social Media: followers GARR TV: filmati disponibili GARR News: pagine visualizzate

Social media: followers

Il grafico mostra l’andamento dei followers sui vari canali social GARR.

Salva immagine

GARR TV: filmati disponibili

Il grafico mostra l’andamento dei filmati disponibili sulla piattaforma GARR TV.

Salva immagine

GARR News: pagine visualizzate

Il grafico mostra l’andamento del numero di pagine visualizzate dell’edizione online del magazine GARR NEWS.

Salva immagine

Continua a leggere

 Personale

 Rete GARR


Le informazioni contenute in questo documento sono tratte dal "Bilancio Consuntivo 2021" e dalla Relazione sull'attività svolta e risultati conseguiti 2021 approvati dall'Assemblea dei soci GARR a maggio 2022.

pdf Scarica l'annual report 2021(22.72 MB)

Tutti gli annual report

var numeroScheda=""; var SpazioDestra = 30; var TitoloFont = 'Raleway'; var TitoloFontSize = 15; var TitoloVisualizza = true; var TitoloAllinea = 'end'; // start center end var TitoloPadding = 20; var TitoloColore = '#1d5b37'; var TitoloStile = 'normal'; // normal italic oblique initial inherit var ArrayColore = ["rgba(0, 29, 111, 0.6)", "rgba(0, 111, 62, 0.6)", "rgba(197, 26, 26, 0.6)", "rgba(224, 155, 38, 0.6)", "rgba(111, 0, 86, 0.6)", "rgba(228, 88, 19, 0.6)", "rgba(71, 0, 11, 0.6)"]; var ArrayColoreBordo = ["rgba(0, 29, 111, 1)", "rgba(0, 111, 62, 1)", "rgba(111, 0, 0, 1)", "rgba(224, 155, 38, 1)", "rgba(111, 0, 86, 1)", "rgba(228, 88, 19, 1)", "rgba(71, 0, 11, 1)"]; var ArrayColoreSfondo = ["rgba(0, 29, 111, 0.1)", "rgba(0, 111, 62, 0.1)", "rgba(197, 26, 26, 0.1)", "rgba(224, 155, 38, 0.1)", "rgba(111, 0, 86, 0.1)", "rgba(228, 88, 19, 0.1)", "rgba(71, 0, 11, 0.1)"]; var Bianco = '#FFFFFF'; var Nero = '#000000'; var Grigio = '#a3a3a3'; var BordoSpessore = 1; var AssiFont = 'Varela Round'; var AssiFontSize = 13; var AssiVisualizza = 'true'; var AssiAllinea = 'center'; var AssiPadding = 10; var AssiColore = '#1d5b37'; var AssiStile = 'normal'; var LabelFont = 'Varela Round'; var LabelFontSize = 13; var LabelColore = '#1d5b37'; var LabelStile = 'normal'; var TooltipFont = 'Varela Round'; var TooltipFontSize = 13; var TooltipColore = 'rgba(255,255,255,1)'; var TooltipSfondo = 'rgba(0,0,0,1)'; var TicksFont = 'Varela Round'; var TicksFontSize = 13; var TicksColore = '#1d5b37'; var TicksStile = 'normal'; var sfondoImmagine = 'rgba(255,255,255,1)'; var legendaImmagine = 'right'; //if (document.getElementById("contenuto-principale").offsetWidth { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const {x, y} = datapoint.tooltipPosition(); var cosaMisura = chart.config.options.plugins.Contatore.cosaMisura; let primoValore = chart.data.datasets[i].data.indexOf(chart.data.datasets[i].data[index]); if (primoValore == 0) { const {ctx, chartArea : {top, right, bottom, left, width, height} } = chart; ctx.save(); ctx.font = TitoloFont; ctx.textAlign = 'center'; ctx.fillStyle = Nero; ctx.fontSize = 30; ctx.fillText('Totale ' + cosaMisura + ':', left + (width / 2), top + (height /2) - 11); ctx.fillText(postSommaTotale, left + (width / 2), top + (height /2) + 11); ctx.restore(); } }) }) } }; const sfondoBianco = { id: 'sfondoBianco', beforeDraw: (chart) => { const ctx = chart.canvas.getContext('2d'); ctx.save(); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = sfondoImmagine; ctx.fillRect(0, 0, chart.width, chart.height); ctx.restore(); } }; const mostraEtichetteSopra = { id: 'mostraEtichetteSopra', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 30, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y-19); ctx.restore(); } }) }) } }; const logo = new Image(); logo.src = 'https://www.garr.it/images/logo-garr-grafici.png'; const LogoGARR = { id: 'LogoGARR', beforeDraw(chart, args, options) { const {ctx, chartArea: { top, bottom, left, right} } = chart; const logoWidth = 100; const logoHeight = 34; ctx.save(); if ((logo.complete) && (ctx.canvas.offsetWidth > 640)) { ctx.drawImage(logo, ctx.canvas.offsetWidth - (logoWidth + 10), ctx.canvas.offsetHeight - (logoHeight + 10), logoWidth, logoHeight); } else { logo.onload = () => chart.draw(); }; ctx.restore(); } } /* const optionsCVP = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Visualizzazioni di post', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: true }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Visualizzazioni', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = VisualizzazioniPostGraficoHD; var a = document.getElementById('VisualizzazioniPost_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'visualizzazione-post-GARR.png'; } } } const VisualizzazioniPostData = { labels: ['2015', '2016', '2017', '2018', '2019','2020'], datasets: [{ label: 'Facebook', data: [99678, 231815, 212083, 274594, 333018, 209988], backgroundColor: ArrayColoreBordo[0], borderColor: ArrayColore[0], borderWidth: 1, borderDash: [4, 4], tension: 0.5 },{ label: 'Youtube', data: [2965, 6377, 16923, 22357, 22406, 50870], backgroundColor: ArrayColoreBordo[2], borderColor: ArrayColore[2], borderWidth: 1, borderDash: [4, 4], tension: 0.5 },{ label: 'Twitter', data: [54535, 161891, 206487, 336600, 366573, 248366], backgroundColor: ArrayColoreBordo[3], borderColor: ArrayColore[3], borderWidth: 1, borderDash: [4, 4], tension: 0.5 }] }; const VisualizzazioniPostConfig = { type: 'line', data: VisualizzazioniPostData, options: optionsCVP, plugins: [sfondoBianco, LogoGARR] }; const VisualizzazioniPostGrafico = new Chart( document.getElementById('VisualizzazioniPost'), VisualizzazioniPostConfig ); const VisualizzazioniPostGraficoHD = new Chart( document.getElementById('VisualizzazioniPostHD'), VisualizzazioniPostConfig ); */ const optionsCVF = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Social media: Followers', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: true }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Followers', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = FollowersGraficoHD; var a = document.getElementById('Followers_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'followers-GARR.png'; } } } const FollowersData = { labels: ['2017', '2018', '2019','2020','2021'], datasets: [{ label: 'Facebook', data: [1697, 2082, 2562, 3149, 3530], backgroundColor: ArrayColoreBordo[0], borderColor: ArrayColore[0], borderWidth: 1, borderDash: [4, 4], tension: 0.5 },{ label: 'Twitter', data: [1114, 1405, 1559, 1763, 1942], backgroundColor: ArrayColoreBordo[3], borderColor: ArrayColore[3], borderWidth: 1, borderDash: [4, 4], tension: 0.5 },{ label: 'Youtube', data: [280, 477, 734, 1440, 2180], backgroundColor: ArrayColoreBordo[2], borderColor: ArrayColore[2], borderWidth: 1, borderDash: [4, 4], tension: 0.5 },{ label: 'Linkedin', data: [0, 867, 1174, 1579, 2079], backgroundColor: ArrayColoreBordo[1], borderColor: ArrayColore[1], borderWidth: 1, borderDash: [4, 4], tension: 0.5 },{ label: 'Instagram', data: [0, 0, 505, 582, 679], backgroundColor: ArrayColoreBordo[6], borderColor: ArrayColore[6], borderWidth: 1, borderDash: [4, 4], tension: 0.5 }] }; const FollowersConfig = { type: 'line', data: FollowersData, options: optionsCVF, plugins: [sfondoBianco, LogoGARR] }; const FollowersGrafico = new Chart( document.getElementById('Followers'), FollowersConfig ); const FollowersGraficoHD = new Chart( document.getElementById('FollowersHD'), FollowersConfig ); const optionsCGT = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'GARR TV: filmati disponibili', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Video', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = GARRTvGraficoHD; var a = document.getElementById('GARRTv_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'filmati-disponibili-GARRTv-GARR.png'; } } } const GARRTvData = { labels: ['2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Video disponibili', data: [553, 770, 890, 1102, 1271, 1465, 1644, 2161, 2362], pointBackgroundColor: ArrayColoreBordo[0], backgroundColor: ArrayColoreSfondo[0], borderColor: ArrayColore[0], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const GARRTvConfig = { type: 'line', data: GARRTvData, options: optionsCGT, plugins: [sfondoBianco, mostraEtichetteSopra, LogoGARR] }; const GARRTvGrafico = new Chart( document.getElementById('GARRTv'), GARRTvConfig ); const GARRTvGraficoHD = new Chart( document.getElementById('GARRTvHD'), GARRTvConfig ); const optionsCGN = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'GARR News: visualizzazione pagine', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Pagine', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = GARRNewsGraficoHD; var a = document.getElementById('GARRNews_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'lettori-GARR-News-GARR.png'; } } } const GARRNewsData = { labels: ['2014','2015', '2016', '2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Numero di pagine', data: [7877, 10751, 10600, 12955, 13037, 13635, 20374, 28281], pointBackgroundColor: ArrayColoreBordo[5], backgroundColor: ArrayColoreSfondo[5], borderColor: ArrayColore[5], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const GARRNewsConfig = { type: 'line', data: GARRNewsData, options: optionsCGN, plugins: [sfondoBianco, mostraEtichetteSopra, LogoGARR] }; const GARRNewsGrafico = new Chart( document.getElementById('GARRNews'), GARRNewsConfig ); const GARRNewsGraficoHD = new Chart( document.getElementById('GARRNewsHD'), GARRNewsConfig ); /* const optionsCVS = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Visualizzazioni di pagine', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: false, title: { text: 'Visualizzazioni', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = VisualizzazioniSitiGraficoHD; var a = document.getElementById('VisualizzazioniSiti_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'visualizzazioni-pagine-GARR.png'; } } } const VisualizzazioniSitiData = { labels: ['2016', '2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Pagine visualizzate', data: [479000, 541000, 521000, 538328, 743197, 624000], pointBackgroundColor: ArrayColoreBordo[4], backgroundColor: ArrayColoreSfondo[4], borderColor: ArrayColore[4], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const VisualizzazioniSitiConfig = { type: 'line', data: VisualizzazioniSitiData, options: optionsCVS, plugins: [sfondoBianco, mostraEtichetteSopra, LogoGARR] }; const VisualizzazioniSitiGrafico = new Chart( document.getElementById('VisualizzazioniSiti'), VisualizzazioniSitiConfig ); const VisualizzazioniSitiGraficoHD = new Chart( document.getElementById('VisualizzazioniSitiHD'), VisualizzazioniSitiConfig ); */ $(function(){ $('#selectGrafico').on('change', function () { var url = $(this).val(); if (url) { window.location = url; } return false; }); });

Annual Report - Servizi applicativi

28 Settembre 2018 | Chi siamo

.ContenitoreHD, .GraficoHD { width: 1200px; height: 600px; background: rgba(255, 255, 255, 1); } .ContenitorePieHD, .GraficoPieHD { width: 600px; height: 600px; background: rgba(255, 255, 255, 1); } .bottone { margin: 15px 25px 15px 5px; }

Elenco dei grafici per i servizi applicativi

  • Mirror: volume di traffico annuale
  • Filesender: file inviati
  • Speedtest: misure effettuate
Scegli Mirror: volume di traffico annuale Filesender: file inviati Speedtest: misure effettuate

Mirror: volume di traffico annuale

Il grafico mostra il volume totale di dati trasferiti dal Mirror verso l’esterno.

Salva immagine

Filesender: file inviati

Il grafico mostra il numero di file inviati in un anno utilizzando il servizio Filesender.

Salva immagine

Speedtest: misure effettuate

GARR Speedtest misura capacità, latenza e jitter di una connessione di rete.
Il grafico mostra il numero di misure effettuate e il numero di indirizzi IP unici da cui provengono.

Salva immagine

Continua a leggere

 Servizi di rete e accesso  Personale


Le informazioni contenute in questo documento sono tratte dal "Bilancio Consuntivo 2021" e dalla Relazione sull'attività svolta e risultati conseguiti 2021 approvati dall'Assemblea dei soci GARR a maggio 2022.

pdf Scarica l'annual report 2021(22.72 MB)

Tutti gli annual report

var numeroScheda=""; var SpazioDestra = 30; var TitoloFont = 'Raleway'; var TitoloFontSize = 15; var TitoloVisualizza = true; var TitoloAllinea = 'end'; // start center end var TitoloPadding = 20; var TitoloColore = '#1d5b37'; var TitoloStile = 'normal'; // normal italic oblique initial inherit var ArrayColore = ["rgba(0, 29, 111, 0.6)", "rgba(0, 111, 62, 0.6)", "rgba(197, 26, 26, 0.6)", "rgba(224, 155, 38, 0.6)", "rgba(111, 0, 86, 0.6)", "rgba(228, 88, 19, 0.6)", "rgba(71, 0, 11, 0.6)"]; var ArrayColoreBordo = ["rgba(0, 29, 111, 1)", "rgba(0, 111, 62, 1)", "rgba(111, 0, 0, 1)", "rgba(224, 155, 38, 1)", "rgba(111, 0, 86, 1)", "rgba(228, 88, 19, 1)", "rgba(71, 0, 11, 1)"]; var ArrayColoreSfondo = ["rgba(0, 29, 111, 0.1)", "rgba(0, 111, 62, 0.1)", "rgba(197, 26, 26, 0.1)", "rgba(224, 155, 38, 0.1)", "rgba(111, 0, 86, 0.1)", "rgba(228, 88, 19, 0.1)", "rgba(71, 0, 11, 0.1)"]; var Bianco = '#FFFFFF'; var Nero = '#000000'; var Grigio = '#a3a3a3'; var BordoSpessore = 1; var AssiFont = 'Varela Round'; var AssiFontSize = 13; var AssiVisualizza = 'true'; var AssiAllinea = 'center'; var AssiPadding = 10; var AssiColore = '#1d5b37'; var AssiStile = 'normal'; var LabelFont = 'Varela Round'; var LabelFontSize = 13; var LabelColore = '#1d5b37'; var LabelStile = 'normal'; var TooltipFont = 'Varela Round'; var TooltipFontSize = 13; var TooltipColore = 'rgba(255,255,255,1)'; var TooltipSfondo = 'rgba(0,0,0,1)'; var TicksFont = 'Varela Round'; var TicksFontSize = 13; var TicksColore = '#1d5b37'; var TicksStile = 'normal'; var sfondoImmagine = 'rgba(255,255,255,1)'; var legendaImmagine = 'right'; //if (document.getElementById("contenuto-principale").offsetWidth { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const {x, y} = datapoint.tooltipPosition(); var cosaMisura = chart.config.options.plugins.Contatore.cosaMisura; let primoValore = chart.data.datasets[i].data.indexOf(chart.data.datasets[i].data[index]); if (primoValore == 0) { const {ctx, chartArea : {top, right, bottom, left, width, height} } = chart; ctx.save(); ctx.font = TitoloFont; ctx.textAlign = 'center'; ctx.fillStyle = Nero; ctx.fontSize = 30; ctx.fillText('Totale ' + cosaMisura + ':', left + (width / 2), top + (height /2) - 11); ctx.fillText(postSommaTotale, left + (width / 2), top + (height /2) + 11); ctx.restore(); } }) }) } }; const sfondoBianco = { id: 'sfondoBianco', beforeDraw: (chart) => { const ctx = chart.canvas.getContext('2d'); ctx.save(); ctx.globalCompositeOperation = 'destination-over'; ctx.fillStyle = sfondoImmagine; ctx.fillRect(0, 0, chart.width, chart.height); ctx.restore(); } }; const mostraEtichettePie = { id: 'mostraEtichettePie', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const datapoints = chart.data.datasets[i].data; function Totale(total, datapoint) { return Number(total) + Number(datapoint) } const sommaTotale = datapoints.reduce(Totale); const postSommaTotale = sommaTotale.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const valorePercentuale = (chart.data.datasets[i].data[index] / sommaTotale * 100).toFixed(1); const assoluto = chart.data.datasets[i].data[index]; const postAssoluto = assoluto.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const percentuale = valorePercentuale.toString().replace(".", ",") + '%'; const assolutoWidth = ctx.measureText(postAssoluto).width; const percentualeWidth = ctx.measureText(percentuale).width; if (assolutoWidth >= percentualeWidth) { var maggiore = assolutoWidth; } else {var maggiore = percentualeWidth;} const {x, y} = datapoint.tooltipPosition(); const textWidth = maggiore; if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 42, textWidth + 10, 37); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(postAssoluto, x - (textWidth / 2), y - 28); ctx.fillText(percentuale, x - (textWidth / 2), y - 11); ctx.restore(); } }) }) } }; const mostraEtichette = { id: 'mostraEtichette', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 25, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x - 5, y - 5); ctx.lineTo(x + 5, y - 5); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y - 14); ctx.restore(); }) }) } }; const mostraEtichetteStacked = { id: 'mostraEtichetteStacked', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 5, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y+20); ctx.lineTo(x - 5, y + 15); ctx.lineTo(x + 5, y + 15); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y+6); ctx.restore(); }) }) } }; const mostraEtichetteSopra = { id: 'mostraEtichetteSopra', afterDraw(chart, args, options) { const {ctx} = chart; ctx.save(); chart.data.datasets.forEach((dataset, i) => { chart.getDatasetMeta(i).data.forEach((datapoint, index) => { const {x, y} = datapoint.tooltipPosition(); // per il testo completo // const text = chart.data.labels[index] + ': ' + chart.data.datasets[i].data[index]; const preText = chart.data.datasets[i].data[index]; const text = preText.toString().replace(".", ",").replace(/\B(?=(\d{3})+(?!\d))/g, "."); const textWidth = ctx.measureText(text).width; //chart.getDatasetMeta(0).data; //console.log(chart.getDataVisibility(index)); //var sdata = chart.getDatasetMeta(0).data; //console.log(sdata); if (!(chart.data.datasets[i].data[index] == 0) && (chart.getDataVisibility(index) == true)) { ctx.fillStyle = TooltipSfondo; ctx.fillRect(x - ((textWidth + 10) /2), y - 30, textWidth + 10, 20); ctx.beginPath(); ctx.moveTo(x, y - 5); ctx.lineTo(x - 5, y - 10); ctx.lineTo(x + 5, y - 10); ctx.fill(); ctx.restore(); ctx.font = TooltipFont; ctx.fontSize = TooltipFontSize; ctx.fillStyle = TooltipColore; ctx.fillText(text, x - (textWidth / 2), y-19); ctx.restore(); } }) }) } }; const logo = new Image(); logo.src = 'https://www.garr.it/images/logo-garr-grafici.png'; const LogoGARR = { id: 'LogoGARR', beforeDraw(chart, args, options) { const {ctx, chartArea: { top, bottom, left, right} } = chart; const logoWidth = 100; const logoHeight = 34; ctx.save(); if ((logo.complete) && (ctx.canvas.offsetWidth > 640)) { ctx.drawImage(logo, ctx.canvas.offsetWidth - (logoWidth + 10), ctx.canvas.offsetHeight - (logoHeight + 10), logoWidth, logoHeight); } else { logo.onload = () => chart.draw(); }; ctx.restore(); } } /* const WebMeetingsOreData = { tricodemo: 1, labels: ['2017', '2018', '2019', '2020'], datasets: [{ label: 'Ore di presenza in aula virtuale', data: [2464, 3296, 4966, 34381], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore }] }; const optionsWMO = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'WebMeetings: ore di presenza in aula virtuale', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Ore', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = WebMeetingsOreGraficoHD; var a = document.getElementById('WebMeetingsOre_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'webmeetings-ore-di-presenza-GARR.png'; } } } const WebMeetingsOreConfig = { type: 'bar', data: WebMeetingsOreData, options: optionsWMO, plugins: [mostraEtichetteStacked, sfondoBianco, LogoGARR] }; const WebMeetingsOreGrafico = new Chart( document.getElementById('WebMeetingsOre'), WebMeetingsOreConfig ); const WebMeetingsOreGraficoHD = new Chart( document.getElementById('WebMeetingsOreHD'), WebMeetingsOreConfig ); */ const optionsMTA = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Mirror: volume di traffico annuale', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Petabyte: 1PB = 1.000.000 GB', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = MirrorTrafficoAnnualeGraficoHD; var a = document.getElementById('MirrorTrafficoAnnuale_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'mirror-traffico-annuale-GARR.png'; } } } const MirrorTrafficoAnnualeData = { tricodemo: 1, labels: ['2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'Capacità in Petabyte', data: [8.1, 7.4, 6.9, 6.8, 6.0, 5.8, 6.0, 4.5, 5.7], pointBackgroundColor: ArrayColoreBordo[4], backgroundColor: ArrayColoreSfondo[4], borderColor: ArrayColore[4], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const MirrorTrafficoAnnualeConfig = { type: 'line', data: MirrorTrafficoAnnualeData, options: optionsMTA, plugins: [mostraEtichetteSopra, sfondoBianco, LogoGARR] }; const MirrorTrafficoAnnualeGrafico = new Chart( document.getElementById('MirrorTrafficoAnnuale'), MirrorTrafficoAnnualeConfig ); const MirrorTrafficoAnnualeGraficoHD = new Chart( document.getElementById('MirrorTrafficoAnnualeHD'), MirrorTrafficoAnnualeConfig ); const optionsFLS = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'Filesender: file inviati', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'File inviati', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = FilesenderGraficoHD; var a = document.getElementById('Filesender_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'filesender-file-inviati-GARR.png'; } } } const FilesenderData = { labels: ['2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021'], datasets: [{ label: 'File inviati', data: [35000, 59000, 88000, 90407, 100583, 73605, 132904, 138000], pointBackgroundColor: ArrayColoreBordo[5], backgroundColor: ArrayColoreSfondo[5], borderColor: ArrayColore[5], borderWidth: 1, borderDash: [4, 4], fill: true, tension: 0.5 }] }; const FilesenderConfig = { type: 'line', data: FilesenderData, options: optionsFLS, plugins: [sfondoBianco, mostraEtichetteSopra, LogoGARR] }; const FilesenderGrafico = new Chart( document.getElementById('Filesender'), FilesenderConfig ); const FilesenderGraficoHD = new Chart( document.getElementById('FilesenderHD'), FilesenderConfig ); const optionsSPT = { maintainAspectRatio: false, layout: { padding: { right:SpazioDestra } }, plugins: { title: { text: 'GARR Speedtest: misure effettuate', display: TitoloVisualizza, align: TitoloAllinea, padding: TitoloPadding, color: TitoloColore, font: { family: TitoloFont, size: TitoloFontSize, style: TitoloStile, } }, tooltip: { enabled: false }, legend: { display: true, position: 'bottom', labels: { color: LabelColore, font: { family: LabelFont, size: LabelFontSize, style: LabelStile } } } }, scales: { x: { beginAtZero: false, title: { text: 'Anno', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } }, y: { beginAtZero: true, title: { text: 'Misure effettuate', display: AssiVisualizza, align: AssiAllinea, padding: AssiPadding, color: AssiColore, font: { family: AssiFont, size: AssiFontSize, style: AssiStile, } }, ticks: { color: TicksColore, font: { family: TicksFont, size: TicksFontSize, style: TicksStile } } } }, animation: { onComplete: function() { var CanvasTemp = SpeedTestGraficoHD; var a = document.getElementById('SpeedTest_link'); a.href = CanvasTemp.toBase64Image(); a.download = 'misure-effettuate-speedtest-GARR.png'; } } } const SpeedTestData = { labels: ['2019', '2020', '2021'], datasets: [{ label: 'Misure', data: [3650, 28950, 33500], backgroundColor: ArrayColore[0], borderColor: ArrayColoreBordo[0], borderWidth: BordoSpessore },{ label: 'IP unici', data: [830, 11522, 20000], backgroundColor: ArrayColore[1], borderColor: ArrayColoreBordo[1], borderWidth: BordoSpessore }] }; const SpeedTestConfig = { type: 'bar', data: SpeedTestData, options: optionsSPT, plugins: [sfondoBianco, mostraEtichette, LogoGARR] }; const SpeedTestGrafico = new Chart( document.getElementById('SpeedTest'), SpeedTestConfig ); const SpeedTestGraficoHD = new Chart( document.getElementById('SpeedTestHD'), SpeedTestConfig ); $(function(){ $('#selectGrafico').on('change', function () { var url = $(this).val(); if (url) { window.location = url; } return false; }); });

Liberatoria e consenso alla pubblicazione e trasmissione di immagini

15 Maggio 2018 | Chi siamo

Autorizzo

A titolo gratuito e senza limiti di tempo, anche ai sensi degli artt. 10 e 320 cod.civ. e degli artt. 96 e 97 legge 22.4.1941, n. 633 - Legge sul diritto d'autore:

  • la trasmissione e la pubblicazione e/o diffusione in qualsiasi forma di materiale audio, video o fotografico in cui il sottoscritto appaia rappresentato o sia comunque riconoscibile

Il materiale audio-video-fotografico che pregiudichi la dignità o il decoro delle persone interessate non sarà oggetto di trattamento e sarà immediatamente cancellato dagli Archivi del Consortium GARR.

La pubblicazione/diffusione potrà avvenire:

  • sui siti internet del Consortium GARR, Associazione riconosciuta senza scopo di lucro, con sede in via dei Tizii, 6 - 00185 - Roma - Italia;
  • sui canali social del Consortium GARR (Facebook, Youtube, Instagram, Twitter);
  • su carta stampata e/o su qualsiasi altro mezzo di diffusione/pubblicazione anche atipico;

Autorizzo altresì la conservazione del predetto materiale negli archivi informatici dell'associazione e prendo atto che la finalità di tali pubblicazioni sono di carattere informativo e divulgativo. Il materiale video-fotografico non sarà utilizzato per finalità commerciali.

Tale autorizzazione esclude qualsiasi uso a fini di lucro e la cessione a terzi.

In considerazione della circostanza che il predetto materiale, una volta reso pubblico, può essere oggetto di acquisizione e di ripubblicazione da parte di terzi, anche senza il consenso del Consortium GARR o dell’interessato,
Sollevo il Consortium GARR da ogni effetto pregiudizievole che possa derivare da un uso abusivo o scorretto da parte di terzi del predetto materiale audio-foto-video.

Confermo

di non aver nulla a pretendere in ragione di quanto sopra indicato e di rinunciare irrevocabilmente ad ogni diritto, azione o pretesa derivante da quanto sopra autorizzato.

Modulo per il download

  • pdf Liberatoria e consenso alla pubblicazione e trasmissione di immagini(294 KB)

Informativa ai sensi degli artt. 13 e 14 GDPR per il trattamento di dati personali consistenti in registrazioni audio, video e fotografiche

15 Maggio 2018 | Chi siamo

Con il presente documento il GARR desidera informarla che il "Regolamento Europeo 679/2016 relativo alla protezione delle persone fisiche con riguardo al Trattamento dei Dati Personali, nonché alla libera circolazione di tali dati" (da ora in poi "GDPR"), prevede la tutela delle persone rispetto al trattamento dei loro dati personali.

Luogo di trattamento dei dati

Consortium GARR con sede in via dei Tizii, 6 - 00185 - Roma - Italia

Tipologia dati oggetto di trattamento

il Consortium GARR tratterà i suoi dati personali consistenti in registrazioni audio, foto e video recanti la sua immagine e/o la sua voce, così come altri dati da cui si possa desumere la sua identità. I predetti dati possono essere acquisiti e trattati sia in formato cartaceo che digitale.

Titolare del trattamento e contatti

Il Consortium GARR, associazione riconosciuta senza scopo di lucro con sede in via dei Tizii, 6 - 00185 – Roma - Italia, in qualità di "Titolare del trattamento” dei suoi dati personali, ai sensi dell'articolo 13 del GDPR, Le fornisce i seguenti dati di contatto:

Dati di contatto

Titolare del trattamento dei dati personali:

Il Consortium GARR
tel: +39 4962 2000
contatto mail: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

Responsabile protezione dei dati personali:

Dott. Davide Vaghetti
tel: +39 050 2213158
contatto mail: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

Ai sensi dell’art. 79 GDPR l'interessato che ritenga che i diritti di cui gode siano stati violati a seguito del presente trattamento ha diritto a rivolgersi all'Autorita' competente per la protezione dei dati. Ente preposto: Garante per la Protezione dei Dati Personali italiano.

Finalità del trattamento

I dati personali oggetto della presente informativa saranno oggetto di pubblicazione o diffusione a scopo divulgativo, informativo, di ricerca o scientifico, anche previo montaggio di spezzoni o singoli fotogrammi, per le finalità istituzionali proprie del Consortium GARR e segnatamente per la pubblicazione sul sito internet del GARR e dei suoi associati, nonché per le pubblicazioni, senza finalità commerciali, sui canali social del Consortium GARR (Facebook, Youtube, Instagram, Twitter) su carta stampata e/o su qualsiasi altro mezzo di diffusione.

Modalità di trattamento dei dati

I dati personali da Voi forniti, ivi incluso il ritratto contenuto nelle fotografie/video, formeranno oggetto di operazioni di trattamento nel rispetto della vigente normativa e dei principi di correttezza, liceità, trasparenza e riservatezza cui è ispirata l'attività del Consortium GARR. Tali dati verranno trattati sia con strumenti informatici sia su supporti cartacei sia su ogni altro tipo di supporto idoneo, nel rispetto delle misure di sicurezza previste dal GDPR.

Obbligatorietà o meno del consenso

Il conferimento dei Suoi dati è facoltativo se non strettamente correlato al funzionamento dell'attività o al servizio proposto. Il mancato consenso non permetterà l'utilizzo delle immagini e/o delle riprese audiovisive del soggetto interessato per le finalità sopra indicate.

Comunicazione a terzi e pubblicazione-diffusione dei dati

Nei limiti pertinenti alle finalità di trattamento indicate, i dati personali (immagini e riprese audiovisive) potranno essere oggetto di comunicazione, pubblicazione e/o diffusione in qualsiasi forma sui siti internet del Consortium GARR, sui canali social del Consortium GARR (Facebook, Youtube, Instagram, Twitter) su carta stampata e/o su qualsiasi altro mezzo di diffusione.

Dichiarazione di consenso

Io sottoscritto, dichiaro di avere preso visione dell’informativa in materia di Privacy soprariportata e acconsento al trattamento dei miei dati personali di cui autorizzo la diffusione e pubblicazione nei limiti di quanto sopra descritto in conformità al GDPR. Acconsento alla conservazione dei predetti dati per la durata statutariamente prevista dell’Associazione Consortium GARR.

Diritti degli Interessati

In relazione ai predetti trattamenti potranno essere da Lei esercitati i diritti di cui agli artt. da 15 a 22 GDPR, quali:

  • ottenere la conferma circa l'esistenza o meno di dati che La riguardano;
  • conoscere l'origine dei dati, la logica e la finalità su cui si basa il trattamento;
  • ottenere la cancellazione, la trasformazione in forma anonima o il blocco di dati eventualmente trattati in violazione di Legge, l'aggiornamento, la rettifica e l'integrazione dei dati stessi;
  • opporsi, per motivi legittimi, al trattamento dei dati stessi nei limiti ed alle condizioni previste.

Per l’esercizio dei propri diritti l’interessato può rivolgere la propria istanza al Consortium GARR, Via dei Tizii, 6, 00185 – Roma: telefonando al numero +39 0649622000, mandando un fax al numero +39 0649622044 o inviando una mail all'indirizzo Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.. Ulteriori informazioni in ordine al trattamento ed alla comunicazione di dati previsti direttamente o altrimenti acquisiti potranno essere richieste al Responsabile per la Protezione dei dati personali presso la sede del Consortium GARR all’indirizzo e-mail: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo..
La sottoscrizione della presente comunicazione deve intendersi quale consenso espresso al trattamento dei Suoi dati personali.
Ulteriori informazioni circa il trattamento dei dati potranno essere comunicate anche verbalmente.

Modulo per il download

  • pdf Informativa ai sensi degli artt. 13 e 14 GDPR per il trattamento di dati personali consistenti in registrazioni audio, video e fotografiche(181 KB)

Lista dei servizi di connettività

16 Marzo 2018 | Chi siamo

La Rete GARR ed i suoi servizi sono dedicati alla Comunità della Ricerca e dell'Istruzione Italiana. Attualmente, circa 1200 siti, tra centri di ricerca e documentazione, università, osservatori, laboratori, biblioteche, musei ed altre infrastrutture, per un totale di oltre 4.000.000 di utenti finali, sono collegati alla Rete GARR. È grazie alla collaborazione degli APM (Access Port Manager) di tutti i siti collegati alla rete, che è possibile rendere disponibili agli utilizzatori che operano nelle diverse istituzioni di appartenenza i servizi erogati dal GARR.

Questa vasta comunità è destinata ad allargarsi ancora, grazie alla interconnessione di nuove strutture appartenenti al mondo della Ricerca, dell'Istruzione e della Cultura, Scuole, Accademie d'Arte e Musei.

Di seguito la lista delle strutture connesse alla Rete GARR.

Elenco delle sedi collegate classificate per tipo di Ente
Selezionando una categoria sarà possibile visualizzare l'elenco delle singole sedi.
  • Tutte le organizzazioni
  • Università statali
  • Università non statali
  • AFAM - Istituti Alta Formazione Artistica Musicale
  • ASI - Agenzia Spaziale Italiana
  • CNR - Consiglio Nazionale delle Ricerche
  • ENEA - Agenzia nazionale per le nuove tecnologie, l'energia e lo sviluppo economico sostenibile
  • INAF - Istituto Nazionale di Astrofisica
  • INFN - Istituto Nazionale di Fisica Nucleare
  • INGV - Istituto Nazionale di Geofisica e Vulcanologia
  • Enti di ricerca afferenti al MUR
  • Istituti di ricerca medica, sanitaria e ospedali
  • Altri enti di ricerca e formazione
  • Enti di ricerca internazionali
  • Archivi, biblioteche, musei
  • Consorzi interuniversitari
  • MIUR uffici centrali
  • Scuole
/** * DataTables initialization and region filter functionality */ $(document).ready(function() { let dataTable; // Initialize DataTables if table exists if ($('#sitesTable').length) { dataTable = $('#sitesTable').DataTable({ "language": { "search": "Ricerca:", "lengthMenu": "Mostra _MENU_ elementi per pagina", "info": "Visualizzazione da _START_ a _END_ di _TOTAL_ elementi", "infoEmpty": "Visualizzazione da 0 a 0 di 0 elementi", "infoFiltered": "(filtrati da _MAX_ elementi totali)", "paginate": { "first": "Primo", "last": "Ultimo", "next": "Successivo", "previous": "Precedente" }, "emptyTable": "Nessun dato disponibile nella tabella", "zeroRecords": "Nessun elemento corrispondente trovato" }, "pageLength": 25, "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "Tutti"]], "order": [[1, 'asc']], // Order by "Sede" column "columnDefs": [ { "orderable": false, "targets": 3 } // Disable sorting for statistics column ], "drawCallback": function() { // Update counter when table is redrawn (search, pagination, etc.) updateVisibleCounter(); } }); // Update initial counter updateVisibleCounter(); } // Region filter functionality $('select[name=regione]').change(function() { const selectedRegion = $(this).find('option:selected').text(); if (dataTable) { if (selectedRegion === 'TUTTE') { // Clear region filter dataTable.column(1).search('').draw(); } else { // Apply region filter using DataTables search on a hidden column // We'll filter by checking the data-region attribute $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) { if (settings.nTable.id !== 'sitesTable') { return true; } const rowRegion = $(settings.aoData[dataIndex].nTr).attr('data-region'); return selectedRegion === 'TUTTE' || rowRegion === selectedRegion; }); dataTable.draw(); // Remove the custom filter after use $.fn.dataTable.ext.search.pop(); } } else { // Fallback for tables without DataTables const tableRows = $('table.lista-servizi-connettivita tbody tr'); tableRows.hide(); let connectedSitesCount = 0; if (selectedRegion === 'TUTTE') { tableRows.each(function() { connectedSitesCount++; $(this).show(); }); } else { tableRows.each(function() { if ($(this).attr('data-region') === selectedRegion) { connectedSitesCount++; $(this).show(); } }); } $('#NumeroSediCollegate').text(connectedSitesCount); } }); /** * Update the visible counter based on currently displayed rows */ function updateVisibleCounter() { if (dataTable) { const info = dataTable.page.info(); $('#NumeroSediCollegate').text(info.recordsDisplay); } } // Handle region filter with DataTables $('select[name=regione]').change(function() { const selectedRegion = $(this).find('option:selected').text(); if (dataTable) { // Clear existing search $.fn.dataTable.ext.search = []; if (selectedRegion !== 'TUTTE') { // Add custom search function for region filtering $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) { if (settings.nTable.id !== 'sitesTable') { return true; } const rowRegion = $(settings.aoData[dataIndex].nTr).attr('data-region'); return rowRegion === selectedRegion; }); } dataTable.draw(); } }); });

torna su