Skip to main content

Chi siamo

La rete GARR-T

14 Febbraio 2022 | Chi siamo

GARR-T, come Terabit, è la nuova generazione di rete GARR che presenta caratteristiche innovative rispetto al passato. GARR-T è una rete tecnologicamente all’avanguardia e costruita intorno alle esigenze degli utenti affinché sia a prova di futuro. I principali vantaggi sono la possibilità di adattarsi nel tempo, scalare e crescere rapidamente in capacità, capillarità e servizi erogati. Una maggiore automazione è una delle principali novità dell’infrastruttura che sarà sempre più affidabile e misurabile attraverso sofisticati sistemi di monitoraggio.

I numeri

La rete GARR è distribuita sul territorio nazionale per oltre 24.000 km in fibra ottica. Con GARR-T sono stati realizzati 750 km di nuove tratte in fibra ottica, 42 PoP ottici distribuiti su circa 6.200 km di fibra e 9 nuovi PoP metropolitani. Nel progetto altre 6 città sono state dotate di un doppio PoP per garantire ridondanza e incrementare l’affidabilità. L’infrastruttura è molto più potente sia per quanto riguarda la capacità della dorsale che dell’accesso.

Le tecnologie

La nuova rete ha due componenti principali: la rete a pacchetto e la rete ottica.

Rete a pacchetto: capillare e agile

La rete a pacchetto è stata completamente rinnovata con la sostituzione di tutti gli apparati su tutto il territorio nazionale. L’architettura dell’infrastruttura è basata sul modello utilizzato per i data centre: ovvero con nodi definiti Spine e Leaf, per l’aggregazione e l’accesso, e nodi Edge, per la terminazione e il servizio verso l’esterno.In questo modo, pur mantenendo uniformità e uguaglianza nei servizi, si favorisce la capillarità della rete, garantendo l’agilità nei nodi più piccoli e lasciando l’impatto maggiore (energetico e di spazi) solo sui nodi di core.

vai alla Topologia ip della rete GARR-T

Topologia ip della rete GARR-T

Ingrandisci

Interventi finanziati dai progetti PNRR

Interventi finanziati dai progetti PNRR

Ingrandisci

Immagine 1
Immagine 2

Rete Ottica: flessibile, efficiente e sostenibile

La rete ottica ha visto delle importanti novità all’insegna della flessibilità, della adattabilità alle esigenze degli utenti e alla creazione di nuovi servizi. Si basa su un modello parzialmente disaggregato, nel quale la fibra e gli apparati sono visti come mattoncini differenti che, combinati tra loro, producono l’infrastruttura hardware ottica di trasporto.Questo modello consente allo stesso tempo efficienza e sostenibilità nel tempo perché svincola il ciclo di vita della fibra da quella degli apparati permettendo anche di operare una rete indipendentemente dal fornitore degli apparati utilizzati e quindi evitando un lock-in tecnologico. Per fare questo, la piattaforma si basa sull’uso di un sistema di linea aperto (OLS, Open Line System) che insieme alla fibra ottica e ad un sistema software di gestione e controllo, fornisce l’infrastruttura attiva, capace di instradare qualunque segnale ottico. Si tratta di una tecnologia abilitante alla gestione flessibile dello spettro ottico per la condivisione di spettro e lo sviluppo e la diffusione di applicazioni come il trasporto di tempo e frequenza o la Quantum Key Distribution.

Nuovi servizi

La rete GARR-T è pensata per offrire agli utenti nuovi servizi e la possibilità di gestirli in autonomia sulla base delle proprie necessità.

Calcolo distribuito

Tra i servizi disponibili che caratterizzano la nuova rete, c’è quello del Data Centre Interconnection, ovvero l’interconnessione a distanza di data centre come se fossero un unico centro di calcolo utilizzando direttamente la rete ottica. Il modello parzialmente disaggregato dà la possibilità, infatti, alle sedi degli utenti di interfacciarsi direttamente all’Open Line System creando un canale ottico dedicato (end-to-end). Questa nuova possibilità è sfruttabile anche con costi contenuti, sia in termini economici che di spazio e consumi, grazie all’utilizzo di apparati altamente specializzati e modulari.Questo modello risponde anche all’esigenza di calcolo di grandi collaborazioni scientifiche (Data Lake) in cui la gestione e l’accesso ai dati avviene localmente, mentre le risorse di calcolo possono essere distribuite geograficamente.

Cammini ottici e condivisione di spettro

GARR-T rende possibile, inoltre, l’introduzione di cammini ottici (lightpath) e l’uso dello spettro che rappresentano il collante con nuove applicazioni e aprono nuove potenzialità per gli utenti. Questi servizi sono di fondamentale importanza per il collegamento con le infrastrutture internazionali, ad esempio rendendo disponibile una porzione dell’infrastruttura fisica attraverso l’accesso allo spettro.La condivisione di spettro è un fattore molto importante per espandere ovunque le potenzialità della rete laddove ci sono dei limiti economici o geografici, come nel caso dei cavi sottomarini o della fibra ottica in luoghi di difficile copertura.

Monitoraggio e automazione per una rete più affidabile

Grazie all’introduzione di meccanismi di automazione, la gestione di rete in GARR-T è più efficiente nell’individuazione tempestiva di possibili malfunzionamenti e di riconfigurazione immediata in caso di necessità.L’automazione è fondamentale nella nuova rete: i processi che finora erano condotti in modo semi manuale vengono completamente rivisti e viene adottato un modello di astrazione che consente di vedere il network secondo le sue funzioni e non più come accesso alle singole componenti. Si tratta di un modello che ha al centro l’attitudine event-driven: ovvero la capacità di adeguarsi al cambiamento costante. Un meccanismo molto simile a quanto è in uso nel mondo ICT e cloud, ovvero il modello per intenti, che permette di evolvere i servizi in modo automatico.

Semplificazione dei servizi per tutte le esigenze

Una novità di GARR-T è la semplificazione della realizzazione di servizi grazie alla tecnologia di virtualizzazione “a container”, che scompone il processo in tanti agili microservizi.GARR-T può contare su una infrastruttura cloud distribuita e nei vari nodi della rete saranno creati dei mini data centre nei quali ci saranno sia i servizi infrastrutturali fondamentali (monitoring, sicurezza, AAI, strumenti di analitica) che i servizi applicativi. Tra questi ultimi, l’obiettivo è di ospitare funzionalità di rete virtualizzate (sistemi di sicurezza come firewall o Intrusion Detection System) in modo da fornire un supporto agli utenti che dispongono di minori risorse o competenze tecniche.

Mappa della rete GARR-T con gli interventi dei progetti PNRR

Mappa della rete GARR-T con gli interventi dei progetti PNRR

Mappa della rete GARR-T con gli interventi dei progetti PNRR

Mappa della rete GARR-T con gli interventi dei progetti PNRR

Close

Gender Equality Plan

14 Febbraio 2022 | Chi siamo

Gender Equality Plan

Il nostro impegno per la parità di genere

Con l’adozione del Gender Equality Plan (GEP), GARR rinnova e rafforza il proprio impegno quotidiano nel valorizzare le differenze – a partire da quelle di genere – e nel promuovere una cultura organizzativa inclusiva, equa e trasparente, libera da pregiudizi.

Il GEP rappresenta una strategia concreta per avanzare verso la parità di genere: un percorso che unisce il consolidamento delle politiche già avviate con l’introduzione di nuove azioni, mirate ad abbattere le barriere ancora esistenti e a costruire un ambiente sempre più equo per tutte e tutti.

  • Missione, Visione, Valori
  • Gender equality plan
  • La formazione
  • #GARRforSTEM
  • Contrasto alla violenza
  • GARR GEP Team
  • GARR GEP 2026-2028

    GARR GEP
    2026-2028

    Versione in lingua italiana

    Download

  • Download GARR GEP 2026-2028

    GARR GEP
    2026-2028

    English version

    Download

  • Scarica il report di monitoraggio 2024

    Attività` svolte nel 2025

    Download

  • Scarica il report di monitoraggio 2024

    Attività` svolte nel 2024

    Download

  • Scarica il report di monitoraggio 2023

    Attività` svolte nel 2023

    Download

  • GEP 2023-2025 IT

  • GEP 2023-2025 EN

sezione formazione

La formazione

  • Un ambiente di lavoro positivo. Valorizzare la diversità: inclusione, lotta agli stereotipi e Age Management

  • Cyberviolenza: aspetti legali, psicologici e lavorativi

Campagna di comunicazione #GARRforSTEM

sezione campagna di informazione
  • #GARRforSTEM: Asia Marinelli racconta la sua esperienza come Network Engineer

  • #GARRforSTEM: Claudia Battista si rivolge alla futura generazione STEM

  • #GARRforSTEM: passione, tenacia e entusiasmo secondo Sabrina Tomassini

  • #GARRforSTEM: la passione di Simona Venuti che ha acceso il suo futuro

sezione contrasto alla violenza di genere

Contrasto alla violenza di genere

  • La violenza digitale non è virtuale, ha conseguenze reali
  • In Italia il 63% dei tweet d'odio è rivolto contro le donne
  • il 52% delle giovani donne ha subito abusi online
  • forme di cyberviolenza più comuni
  • Astrosurfing: campagna coordinata di contenuti dannosi
  • revenge porn e sextortion: abusi tramite video e e immagini
  • doxing: diffusione di informazioni private online
  • Costruiamo un ambiente digitale sicuro per le donne

Download kit immagini

GARR GEP Team

sezione GEP Team del GARR
Cognome Nome Ruolo/Ufficio Battista Claudia Direttrice Bertazzon Elis Ufficio Comunicazione Ciurleo Nino Data Center Network Corleto Andrea Ufficio Formazione Fabiani Marcello Amministrazione Lampis Simona Segreteria Istituzionale Landi Patrizia Ufficio del Personale, Segreteria Tecnica e Istituzionale, Responsabile Napolitano Eleonora Ufficio Formazione Pirelli Laura Segreteria Tecnica Volpe Carlo Ufficio Comunicazione, Responsabile
immagine: Informazioni

Vuoi saperne di più?

Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

Missione, visione, valori

02 Aprile 2020 | Chi siamo
  • Visione
  • Piano triennale di attività
  • Gender Equality Plan
  • Documenti

 

Una infrastruttura al servizio della comunità della ricerca, istruzione, cultura umanistica e scientifica

Visione

GARR sarà sempre più il punto di riferimento per la sua comunità, facilitando l’accesso agli strumenti e servizi che sono necessari e permettendo l’interazione tra l’utente (applicazione) e l’infrastruttura.

Con caratteristiche che la renderanno più innovativa, allo stato dell’arte della tecnologia, integrata a livello internazionale. Garantendo sicurezza, affidabilità, inclusività e capillarità.


Missione

GARR è l’associazione senza fini di lucro espressione della comunità italiana della ricerca, istruzione, cultura umanistica e scientifica.

Progetta, realizza e gestisce l’infrastruttura di rete e dei servizi sopra di essa a partire dalle esigenze della comunità e ne garantisce affidabilità, sostenibilità, efficienza.


Strategia

Progettare, costruire, gestire, manutenere e evolvere una infrastruttura inclusiva che fornisca strumenti e servizi unici e di alta qualità alla comunità di riferimento in stretta collaborazione con essa ed ottimizzandola in termini di costi, efficienza e valore.


Valori

Comunità, inclusività

  • Rendere le esigenze ed i valori della comunità centrali nella visione e strategia
  • Soddisfare i requisiti degli utenti, anticipandone le esigenze e proponendo le soluzioni più efficaci
  • Mantenere attivo lo scambio di informazioni nella comunità, facilitare confronto e condivisione.
  • Assicurare una apertura ad altre comunità affini

Neutralità e trasparenza

  • Adoperarsi perché la rete tratti in modo identico il traffico di ogni utente e indipendentemente dalle applicazioni, dal contenuto e dalla tecnologia
  • Non interferire nel mercato, non partecipare a gare pubbliche aperte per servizi commerciali
  • Non effettuare alcun filtro sull’informazione

Semplicità

  • Adoperarsi per offrire agli utenti un utilizzo intuitivo e rapido

Fiducia e sicurezza

  • Ispirare fiducia nella comunità per competenza, affidabilità e risultati, anche esplicitamente al fattore riservatezza, confidenzialità del dato e del suo trattamento
  • Assicurare una costante attività di gestione della sicurezza tramite protezione degli utenti da attacchi sulla rete e cibernetici, minimizzandone gli effetti negativi
  • Fare formazione e informazione per realizzare prevenzione

Capillarità

  • Permettere ad ogni appartenente alla comunità di collegarsi alla infrastruttura indipendentemente dal luogo e dalla tecnologia

Solidarietà, sostenibilità, economicità

  • Realizzare la miglior rete possibile con le risorse disponibili, minimizzando i costi e garantendo che ci sia una sostenibilità dell’infrastruttura da parte della comunità distribuendo i costi in maniera opportuna

Lo stato dell’arte

  • Usare le più avanzate tecnologie per soddisfare i requisiti degli utenti avendo la massima efficacia, e offrendo innovative possibilità di uso

Collaborazioni internazionali

  • Collaborare strettamente a livello europeo ed internazionale per portare le necessità ed i valori della comunità GARR e agire come collegamento per esigenze specifiche

Azioni e attività

  • Una rete basata su fibre di proprietà (IRU) per favorire stabilità e sostenibilità nel lungo termine
  • Evoluzione della rete in termini di capacità e flessibilità trasmissiva e di routing
  • Sperimentare nuovi servizi sopra ed al di là di IP
  • Sviluppare e gestire una Cloud e servizi IT per mantenere il controllo dei servizi e della conoscenza
  • Partecipare attivamente e sostenere la rete europea GÉANT
  • Mantenere il contatto ed il rapporto diretto con gli utenti attraverso Workshop, Conferenze ed eventi dedicati ogni anno
  • Organizzare e realizzare eventi formativi per la comunità sui temi di competenza GARR
  • Disseminare l’informazione nella comunità attraverso news, eventi, web, ecc.
  • Partecipare a progetti nazionali ed europei di rilevanza per GARR e per la comunità di riferimento
  • Sviluppare il sistema di autenticazione ed autorizzazione federato a livello nazionale ed internazionale
  • Garantire la sicurezza della rete e offrire agli utenti una protezione sempre migliore

 

Piano triennale di attività

Il Piano triennale di attività indica come, nei prossimi 3 anni, GARR intende rispondere alla sua mission di supportare la comunità nazionale dell’istruzione e della ricerca attraverso una costante evoluzione dell’infrastruttura di rete e dei servizi ad alto tasso di innovazione.

Il Piano illustra gli obiettivi per il triennio per quanto riguarda lo sviluppo dell’infrastruttura di rete, dei servizi di cloud federata, della connettività e della cooperazione internazionale, dei servizi di identità digitali e sicurezza informatica, nonché presenta le principali attività per le aree della formazione, della comunicazione e del personale.

Leggi il Piano triennale

Scarica il Piano triennale in PDF

 

Gender Equality Plan

Attraverso il Piano per la Parità di Genere, GARR sostiene attivamente l'uguaglianza di genere e favorisce l'evoluzione di un'organizzazione sempre più inclusiva.

Il Piano rappresenta un impegno concreto per valorizzare le differenze, in particolare quelle di genere, e promuovere una cultura organizzativa libera da pregiudizi, basata sui valori fondamentali di inclusività, equità e trasparenza.

Questo piano strategico definisce un quadro completo, che comprende aspetti legali, organizzativi, economici e sociali, per implementare efficacemente la parità di genere. Attraverso una combinazione di politiche consolidate e nuove iniziative, il GEP si propone di superare gli ostacoli ancora presenti.

Scopri le attività

Vai alla pagina del Gender Equality Plan

 

Documenti

  • pdf Visione missione valori GARR 2020(716 KB)
  • pdf Documento di strategia GARR - 2020(800 KB)
  • pdf Piano triennale di attività GARR 2026-2028(338 KB)
  • pdf GARR Gender Equality Plan 2023-2025 EN(2.86 MB)
  • pdf GARR Gender Equality Plan 2023-2025 ITA(3.01 MB)

 

 

Borse GARR

19 Novembre 2019 | Chi siamo
Borse di Studio Orio Carlini

Borse di Studio "Orio Carlini"

Ogni anno GARR mette a disposizione delle borse di studio, intitolate al prof. Orio Carlini, destinate a 10 giovani talenti che si occupano di tematiche legate alle infrastrutture digitali e al loro uso in ambito multidisciplinare.

Queste borse di studio sono volte alla realizzazione di un progetto di ricerca della durata di 12 mesi su argomenti individuati dallo studente.
I progetti possono essere svolti presso enti ed istituzioni scientifiche, culturali ed accademiche collegate alla rete GARR oppure presso la sede di Roma del Consortium GARR.

Borse di studio disponibili

Al momento non ci sono bandi attivi

Scopri di più

 

Borse di Studio Tecnologiche GARR

Borse tecnologiche GARR

Il GARR Innovators Programme nasce con l’obiettivo di offrire a studenti magistrali e giovani ricercatori nel settore ICT l’opportunità di fare un’esperienza di studio e ricerca direttamente presso le nostre sedi, approfondendo temi definiti da GARR nell’ambito della rete e della trasmissione dati, del cloud e delle infrastrutture di calcolo e dati.

Le proposte sono registrate e valutate in base all’ordine cronologico di presentazione e le borse tecnologiche sono assegnate fino ad esaurimento dei fondi disponibili.

Borse di studio disponibili

Al momento non ci sono bandi attivi

Scopri di più

Informativa Privacy ai sensi degli artt. 13 e 14 del Regolamento UE 679/2016

09 Gennaio 2019 | Chi siamo

Ai sensi degli artt. 13 e 14 del Regolamento UE 679/2016, l’associazione riconosciuta senza scopo di lucro Consortium GARR con sede in via dei Tizii, 6 - 00185 - Roma - Italia, è il Titolare del trattamento dei Suoi dati personali. I dati personali acquisiti formano oggetto di trattamento nel rispetto della normativa sopra richiamata. In relazione ai suddetti trattamenti il Titolare fornisce le seguenti informazioni:

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.

Luogo di trattamento dei dati

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

Tipi di dati trattati

Dati di navigazione

I sistemi informatici e gli applicativi dedicati al funzionamento di questo sito web rilevano, nel corso del loro normale funzionamento, alcuni dati (la cui trasmissione è implicita nell'uso dei protocolli di comunicazione di Internet) non associati a utenti direttamente identificabili.

Tali informazioni - che per loro natura potrebbero, attraverso elaborazioni ed associazioni con dati detenuti da terzi, consentire l'identificazione degli utenti - non sono raccolte per essere associate a interessati identificati. Questi dati vengono utilizzati al solo fine di ricavare informazioni statistiche anonime sull'uso del sito e per controllarne il corretto funzionamento. I dati potrebbero essere utilizzati per l'accertamento di responsabilità in caso di compimento di reati informatici o di atti di danneggiamento del sito; salva questa eventualità, allo stato i dati sui contatti web non persistono oltre il tempo necessario all' effettuazione delle verifiche dirette a garantire la costante sicurezza del sistema.

Dati forniti volontariamente dall'utente all'atto della registrazione

I dati forniti dall'utente all'atto della registrazione (Nome, Cognome, Username, password, indirizzo e-mail, Istituto/Ente di appartenenza) vengono custoditi fino a quando si estingue il rapporto di utenza. Il Consortium GARR non svolge attività di profilazione degli Utenti.

Cookies

Per informazioni sull'uso dei cookies fare riferimento all'informativa dedicata: Cookie.

Finalità del trattamento

Il Consortium GARR effettua trattamenti di dati personali nei limiti di quanto ciò sia strettamente necessario allo svolgimento delle proprie funzioni istituzionali, escludendo il trattamento quando le finalità perseguite possono essere realizzate mediante dati anonimi o modalità che permettono di identificare l'interessato/utente solo in caso di necessità.

Le particolari finalità, relative a singoli servizi o comunque a specifici trattamenti, sono evidenziate in maniera dettagliata nelle informative privacy relative ai singoli servizi e nei vari canali tematici di accesso. All'interno di essi l'utente potrà eventualmente trovare informazioni integrative sul trattamento dei dati personali.

Durata del trattamento

I dati saranno trattati per tutto il tempo necessario allo svolgimento del rapporto in essere e comunque per il tempo richiesto dalla normativa italiana in vigore.

Facoltatività del conferimento dei dati

Salvo quanto specificato per i dati di navigazione, l'utente è libero di fornire i dati personali riportati nei moduli di richiesta per sollecitare l'invio di materiale informativo o di altre comunicazioni. Il loro mancato conferimento può comportare l'impossibilità di ottenere quanto richiesto.

Modalità del trattamento

I dati personali verranno trattati in forma cartacea, informatizzata e telematica ed inseriti nelle pertinenti banche dati cui potranno accedere, e quindi venirne a conoscenza, gli operatori espressamente designati dal Titolare quali Incaricati del Trattamento dei dati personali, che hanno assunto un esplicito obbligo di riservatezza, i quali potranno effettuare operazioni di trattamento nel rispetto delle disposizioni di legge necessarie a curare, oltre alla riservatezza, l’integrità, la sicurezza, l'aggiornamento e la pertinenza dei dati nel rispetto alle finalità dichiarate.

Dati raccolti.

I dati raccolti sono inerenti essenzialmente a:
Dati identificativi: indirizzo IP ed ove conferito: nome e cognome, e-mail delle persone fisiche; i dati forniti dall’interessato possono essere raccolti presso eventuali contitolari e/o Responsabili del trattamento per conto del Consortium GARR.

Ambito di comunicazione e diffusione dei dati

I dati personali degli utenti sono utilizzati unicamente al fine di eseguire il servizio o la prestazione richiesta e sono comunicati a terzi nei soli casi in cui:

  • ciò sia necessario per offrire i servizi richiesti dall’Utente e per l'adempimento delle richieste da parte dell'interessato;
  • la comunicazione sia imposta da obblighi di legge o di regolamento o risponda ad una rilevante finalità di interesse pubblico.

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.

Cookie policy

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; }); });

torna su