Opprette Flash Charts fra Google Regneark

Med Google Docs blir populær, forventes det at det i nær fremtid vil være en stor etterspørsel etter å koble den til eksterne systemer for ulike formål som datautveksling, datavisualisering, etc. I denne artikkelen vil jeg vise deg hvordan du kobler Flash-baserte diagrammer (FusionCharts) til Google Regneark og plott livedata ved hjelp av JavaScript.

Før jeg drar inn i de tekniske egenskapene som er involvert i å hente data fra Google regneark, vil jeg gi en oversikt over FusionCharts og begynne min forklaring fra rotnivå - dette er til fordel for de som har kommet over FusionCharts for første gang. En no-restriction versjon av FusionCharts kan lastes ned fra www.fusioncharts.com/download. FusionCharts har også en helt gratis versjon på www.fusioncharts.com/free; men denne artikkelen bruker mange funksjoner fra FusionCharts v3, så det anbefales å laste ned FusionCharts v3.

Alle koden knyttet til denne artikkelen (og noen flere eksempler også) er til stede som en nedlasting med denne artikkelen.

Rask introduksjon til FusionCharts

FusionCharts er en Flash-kartløsning som hjelper deg med å lage animerte og interaktive diagrammer for websider. FusionCharts er egentlig en samling av SWF-filer som kjører inne i Adobe Flash Player, og aksepterer data og konfigurasjonsinnstillinger i XML, og dermed gjør det kryssskript og kryssplattformskompatibelt. XML er intuitivt og det kan lett læres ved hjelp av en uttømmende dokumentasjon på nettet, som kan nås fra www.fusioncharts.com/docs.

I tillegg, hvis du ikke er en dør-hard fan av XML, kommer FusionCharts med et omfattende utvalg av API, som hjelper til med implementeringen med alle former for webprogrammeringsteknologier som ASP, ASP.NET, PHP, Ruby on Rails, Python osv.

Rask eksempel på å bygge et diagram med FusionCharts

FusionCharts SWFs kan være innebygd i en HTML-side, enten ved hjelp av / koder eller gjennom FusionCharts JavaScript-klassen. Ved hjelp av JavaScript-klassen for innbygging, er diagrammet tilrådelig, da dette sikrer at diagrammene vil fungere jevnt på alle nettlesere. XML-datakilden kan leveres til diagrammet enten som en ekstern fil, eller den kan direkte innlemmes i HTML-siden.

La oss raskt bygge et diagram for å skildre dataene som vises i tabellen nedenfor.

Appliance

Enheter i Watt

Lighting

1200

Varmeapparat

1800

Desktop

1500

Cooler

1200

Heis

1500

Mikrobølgeovn

1600

Fjernsyn

1500

Vaskemaskin

2800

Musikksystem

2200

rengjøringsmidler

600

Følgende stykke kode utgjør XML-datakilden som gjelder data tabellen ovenfor:

            

Ganske enkelt og intuitivt - er det ikke? De elementet er rotelementet som inneholder visuell og funksjonell konfigurasjon av diagrammet. Hver elementet representerer et dataelement i diagrammet. Denne datastrukturen gjelder enkelt serie diagrammer i FusionCharts, hvor du bare har datasett. Flere datasett kalles for XML-format med flere serier, som innebærer et par flere XML-elementer.

Nå som XML er klar (vi har lagret det som myXML.xml), må vi legge inn diagrammet til en HTML-side ved hjelp av følgende kode:

 
Min Diagram DIV

Koden (over) oppretter en DIV kalt firstChartDiv som vil fungere som en beholder for diagrammet. Fremover blir en forekomst av FusionCharts-objektet opprettet ved hjelp av JavaScript, og følgende parametere blir sendt inn i den.

  • Navn på SWF-filen som skal brukes (Pie3d.swf i dette tilfellet)
  • Navn på diagrammet (første gang i dette tilfellet)
  • Høyde på diagrammet i piksler
  • Bredden på diagrammet i piksler
  • >

Den påfølgende linje med kode gir navnet på den eksterne XML-datakilden filen (myXML.xml i dette tilfellet). Og den endelige linjen til JavaScript-koden angir navnet på beholderen DIV, som diagrammet vil gjengi. Mens du bruker JavaScript-klassen for å legge inn diagrammet, er det nødvendig å opprette en container DIV for diagrammet.

Følgende diagram genereres av koden. Bildebeløpet viser en statisk versjon; selve diagrammet er animert og tillater interaktivitet som skjæring av paier, rotasjon av diagram, verktøytips osv.

Nå har vi dekket prosessen med å lage diagrammer ved hjelp av statisk datakilde, la oss gå videre til prosessen med å lage et diagram ved hjelp av data hentet fra Google regneark.

Koble disse diagrammene til Google Dokumenter-regneark

Google Dokumenter-regneark overfører data i form av JSON-feeder. Så, for å gjengi diagrammer som bruker data hentet fra Google regneark, er det viktig å konvertere de overførte JSON-feeds til XML-format som kreves av FusionCharts.

Det er flere måter å konvertere JSON til XML. Enten kan du skrive din egen kode for å ta hvert JSON-element og konvertere til XML. Eller du kan gjøre bruk av regelbaserte motorer som JsonT til hjelp i denne prosessen. Vi bruker JsonT for denne artikkelen, da det hjelper oss å gjøre ting enklere og raskere. JsonT kan lastes ned fra http://goessner.net/articles/jsont/

Ved å bruke JsonT kan man enkelt definere en regel for å konvertere JSON-data til en streng med ønsket format. Følgende er et eksempel på JSON-data:

 var "kaffe": "5000", "Cappuccino": "6000", "Latte": "7000", "affogato": "4000", "Cortado": "2000", "Macchiato" "," Frappuccino ":" 6000 ";

Følgende kode konverterer JSON-dataene (vises abve) til FusionCharts XML-format og lager deretter et diagram ut av det.

 var JSONParseRules = "self": "\ n @getData (#)"," getData ": funksjon (x) var c =" "; for (var jeg i x) c + =" \ n"; return c; var coffeeChartStrXML = jsonT (coffeeSalesJSON, JSONParseRules); var coffeeChart = new FusionCharts (" Column3D.swf "," CoffeeChartId "," 600 "," 350 "," 0 "," 0 "); coffeeChart.setDataXML (coffeeChartStrXML); coffeeChart.render ("coffeeChartDiv");

For at koden skal fungere, er det viktig å koble jsont.js JavaScript-fil til HTML-siden.

Koden (ovenfor) bygger XMLstring fra JSON-data ved hjelp av en regel, som detererer gjennom hvert nøkkelverdi par av JSON-data og behandler nøkkelnavn som kategorier og verdier som dataværdier for diagrammet. Du kan lese mer om JsonT-regler på http://goessner.net/articles/jsont/. Deretter bruker vi XML og bygger diagrammet.

For å kunne bruke et Google-regneark som en dynamisk datakilde for diagrammet, er det viktig å publisere det for offentlig visning. På tidspunktet for publisering av dokumentet for offentlig visning - genererer Google en unik nøkkel. Denne nøkkelen brukes til å be om datafeed fra Google; derfor er det viktig å bevare nøkkelen.

Vær oppmerksom på at for å kunne jobbe med Googles JSON-feeder er det viktig å endre josnt.js litt. Jeg har gjort mindre endringer i jsont.js for å forhindre konflikten som oppstår på grunn av Jsont.js bruk av $ som en objektpeker og Google genererte JSON-feeds bruk av $ som eiendomsnavn. Jeg har endret Jsont.js slik at den bruker # som en objektpeker.

For dette demonstrasjonseksemplet opprettet jeg et Google-regneark, som inkluderte tre ark - hver av dem inneholdt årlige salgsdata for årene 2006, 2007 og 2008. Regnearket kan ses gjennom følgende link http://docs.google.com.

        

Prosessen med å lage et Google-regneark

Følgende kode vil hjelpe deg med å lage et diagram som er tegnet med data hentet fra Google regneark:



Diagram Laster opp her

Slik fungerer koden:

  1. Programmet initieres ved å deklarere en variabel kalt 'ark' for å lagre rekkefølge av regnearkdefinisjoner oppnådd fra det angitte Google-regnearket. Det erklærer deretter 'sheetCount' -tabellvariabelen som holder styr på antall regneark hvor data er mottatt. Denne telleren sikrer at diagrammet gjøres, når alle dataene er mottatt.

  2. Opp neste erklæres 'chartConfigJSON' -objektet å lagre diagramkonfigurasjonsinnstillingene.

  3. XML-en som vil bli bygd opp, vil bli lagret i en serie kalt 'strXML'. Når XML-byggeprosessen er endelig fullført, vil elementene i arrayet bli slått sammen for å danne XML-strengen.

  4. Ved å gå videre, blir initpage () -funksjonen plassert i HTML-koden, kalt når onload-hendelsen oppstår. Denne funksjonen kalles igjen for getGoogleSpreadsheetData () som ber om regnearkdata i form av JSON-feeder. GetGoogleSpreadsheetData () -funksjonen forespørsler om regnearkdataene ved å sende Google generert regnearknøkkel, den spesifiserer også feedformatet og håndterer feedet når det er mottatt.

  5. getGoogleSpreadsheetData ("p06JfhjnK8PwEWRkmlWiiQg", "parseSpreadsheet", "json-in-script", "regneark")
  6. Når denne innmatingen er mottatt, blir en tilbakeringingsfunksjon parseSpreadsheet () slått av. Denne funksjonen får regnearknavnet fra jsonsheets.feed.title. $ T og deretter løper det gjennom hver regnearkoppføring. Hver regnearkoppføring gir matelinker til alle tilgjengelige feedtyper (regneark / liste / celle / gViz) i lenkefeltet. Etter å ha oppnådd en liste over innmatetype, mottar getGoogleSpreadsheetData () funktionsforespørsler for JSON fra hvert regneark.
    getGoogleSpreadsheetData (ark [i] .link [0] .href, "parsespreadsheet", "json-in-script");


    Lenk [0] .href-elementet inneholder URL-adressen for tilgjengelige mattyper, som sendes til funksjonen. Etter at feedet har blitt mottatt, kalles tilbakekallingsfunksjonen samlingsarket og JSON-data sendes til den.

  7. Når fôret for hvert regneark er mottatt, økes arkCount med 1.
  8. Feeder hentet fra hvert regneark vil bli betraktet som et datasett for diagrammet. Derfor er matetittelen tatt som serienavn for hvert datasett.
  9. var seriesName = gjson.feed.title. $ t;
  10. Konfigurasjonsinnstillingene til diagrammet er lagret i strXML [0]. Vær oppmerksom på at funksjonsparagrammet () vil bli kalt flere ganger i så mange ganger som antall regneark som finnes i Google-regnearket. Koden inneholder en betingelse som hindrer ytterligere gjentakelse av denne prosessen.
  11. Kartkategorier defineres ved hjelp av det første regnearket. Listen over kategorinavn er bygget med jsonT.
  12. rule = "self": "#"," selv [*] ":""; strXML [1] = jsonT (feedEntries, rule);
  13. Til slutt blir jsonT kalt til handling for å fylle datasettverdiene .:
  14.  rule = "self": "#"," selv [*] ":""; strXML [2] + = jsonT (feedEntries, rule);

    Når denne koden er utført, vil følgende diagram bli generert på siden din.

Multi-seriekartet opprettet ved hjelp av data hentet fra Google regnearkdokument

Nå som vi har kunnet generere et diagram, la oss ta det et skritt videre og legge til muligheten til å eksportere den som bilder eller PDF-filer. Dette vil være svært nyttig for å sende e-post til dine kolleger.

PDF-eksport

Den nyeste versjonen av FusionCharts (v3.1) gir et omfattende utvalg av eksportfunksjoner. Du kan eksportere diagrammene som PDF, PNG eller JPEG - både på klientsiden eller lagre dem på serveren også.

I vårt eksempel, siden vi ikke bruker noen server-side skript, holder vi oss til eksport av klientsiden. På klientsiden er eksportfunksjonen implementert ved hjelp av FusionCharts Client-side eksportkomponenter - kollektivt navn gitt til FusionChartsExportComponent.js og FCExporter.swf. FCExporter.swf er eksportmaskinen på klientsiden som gjør det mulig å eksportere diagrammer. JavaScript-filen gir et grensesnitt mellom diagrammet og FCExporter.swf.

Denne JavaScript-klassen muliggjør gjengivelse av FCExporter.swf, som er motoren for eksport og fungerer også som et grafisk brukergrensesnitt. Ved hjelp av eksport API kan du enkelt tilpasse utseendet til GUI. API-ene lar deg også kontrollere de funksjonelle aspektene til GUI. Følgende kode illustrerer prosessen:

 
 funksjon loadExportComponent () // initialisere FusionCharts Export Component // sette alle innstillinger i parametre exportComponent = ny FusionChartsExportObject ('exportComponentH', 'FCExporter.swf', bredde: '250', høyde: '250', fullMode: 1, saveExchangeFormat: "both", defaultExportFormat: "pdf", showAllowedTypes: 1, saveAllTitle: 'Lagre alle', btnSaveAllTitle: 'Som enkel fil', defaultExportFileName: "SalesReport", exportFormat: "PDF", exportHandler: "exportComponentH" , exportAtClient: 1); exportComponent.Render ( 'componentContainer'); 

Koden (ovenfor) konfigurerer eksport GUI slik at den viser en knapp som utløser eksportprosessen. I tillegg vil hvert diagram bli oppført i GUI-panelet, og brukeren vil bli presentert med et alternativ for å eksportere alle diagrammer til en enkelt PDF-fil. GUI vil også tillate brukeren å endre standard eksportformat fra PDF til jpeg eller png.

For å demonstrere eksportprosessen har jeg lagt til koden for å konfigurere eksport GUI, til koden som lager et diagram basert på data fra Google regnearkdokument. Imidlertid har jeg gjort noen endringer i koden, slik at den nå vil vise tre single-serier-diagrammer i stedet for et enkelt flertallskart. Hvert diagram viser data som gjelder et bestemt regneark.

Følgende er den kombinerte koden:

          

Følgende er avbildningen av eksportprosessen sett fra klientsiden:

  • Kartene gjengis i nettleseren.
  • Diagrammer blir konvertert til bitmappe når knappen 'Eksporter som PDF' klikkes.
  • Eksporter-GUI viser en liste over diagrammer som skal eksporteres.
  • Kartene lagres i en enkelt PDF-fil når brukeren klikker på knappen 'Som enkelt PDF'.
  • Og med det, slutter vi denne artikkelen. Det finnes mange flere funksjoner som tilbys av FusionCharts som potensielt kan tas i bruk. Opprette diagrammer fra data lagret i Google regneark er bare ett eksempel på innovasjoner som er mulige med FusionCharts. Takk for at du leste!

  • Følg oss på Twitter, eller abonner på NETTUTS RSS Feed for flere daglige webutviklingsverktøy og artikler.