Crearea de diagrame Flash din foi de calcul Google

Având în vedere că Google Docs câștigă popularitate, se anticipează că în viitorul apropiat va exista o mare cerere de conectare la sisteme externe în diverse scopuri, cum ar fi schimbul de date, vizualizarea datelor etc. În acest articol vă voi arăta cum să vă conectați Graficele bazate pe Flash (FusionCharts) la foile de calcul Google și complotarea datelor live utilizând JavaScript.

Înainte de a mă implica în tehnicile implicate în preluarea datelor din foi de calcul Google, voi oferi o imagine de ansamblu asupra FusionCharts și voi începe explicația mea de la nivelul rădăcinilor - aceasta este în folosul celor care au întâlnit prima dată FusionCharts. O versiune fără restricții a FusionCharts poate fi descărcată de la www.fusioncharts.com/download. FusionCharts are, de asemenea, o versiune complet gratuită la www.fusioncharts.com/free; dar acest articol utilizează o mulțime de caracteristici din FusionCharts v3, deci este recomandat să descărcați FusionCharts v3.

Tot codul asociat acestui articol (și mai multe exemple de asemenea) sunt prezente ca descărcare cu acest articol.

Introducere rapidă la FusionCharts

FusionCharts este o soluție Flash Charting care vă ajută să creați diagrame animate și interactive pentru paginile web. FusionCharts este, în esență, o colecție de fișiere SWF care rulează în interiorul Adobe Flash player și acceptă setările de date și de configurare în XML, făcându-l astfel încrucișat și cross-platform compatibil. XML este intuitiv și poate fi învățat cu ușurință cu ajutorul unei documentații online exhaustive, care poate fi accesată de la www.fusioncharts.com/docs.

În plus, dacă nu sunteți un fan al lui XML, FusionCharts vine cu o gamă largă de aplicații API, care contribuie la implementarea sa cu toate formele de tehnologii de programare web, cum ar fi ASP, ASP.NET, PHP, Ruby on Rails, Python etc.

Exemplu rapid de construire a unui grafic cu FusionCharts

FusionCharts SWF-urile pot fi încorporate într-o pagină HTML fie folosind / etichete sau prin clasa JavaScript FusionCharts. Utilizarea clasei JavaScript pentru încorporarea diagramei este recomandată, deoarece aceasta asigură că graficele vor funcționa fără probleme pe toate browserele. Sursa de date XML poate fi furnizată graficului fie ca fișier extern, fie poate fi încorporat direct în pagina HTML.

Să construim rapid o diagramă care să descrie datele prezentate în tabelul de mai jos.

Aparat

Unități în Watt

Iluminat

1200

Încălzitor

1800

Spațiul de lucru

1500

răcitor

1200

Lift

1500

Cuptor cu microunde

1600

Televiziune

1500

Mașină de spălat

2800

Sistem muzical

2200

Cleaners

600

Următoarea piesă de cod este sursa de date XML care se referă la tabelul de date de mai sus:

            

Destul de simplu și intuitiv - nu-i așa? element este elementul rădăcină care conține configurația vizuală și funcțională a graficului. Fiecare element reprezintă un element de date din diagramă. Această structură de date se referă la diagramele seriei unice din FusionCharts, unde aveți doar setul de date. Seturile de date multiple solicită formatul XML în mai multe serii, care implică încă câteva elemente XML.

Acum că XML este gata (am salvat-o ca myXML.xml), trebuie să încorporăm diagrama într-o pagină HTML cu ajutorul următorului cod:

 
Diagrama mea DIV

Codul (de mai sus) creează un DIV numit firstChartDiv care va servi drept container pentru diagramă. În continuare, o instanță a obiectului FusionCharts este creată utilizând JavaScript, iar parametrii următori sunt transferați în el.

  • Numele fișierului SWF care urmează să fie utilizat (Pie3d.swf în acest caz)
  • Numele diagramei (primulChartId în acest caz)
  • Înălțimea graficului în pixeli
  • Lățimea graficului în pixeli
  • >

Linia ulterioară de cod furnizează numele fișierului sursă externă de date XML (în acest caz, myXML.xml). Și linia finală a codului JavaScript indică numele containerului DIV în care graficul va fi afișat. În timp ce folosiți clasa JavaScript pentru a încorpora graficul, este necesar să creați un container DIV pentru diagramă.

Următoarea diagramă este generată de cod. Imaginea de mai jos prezintă o versiune statică; diagrama actuală este animată și permite interactivitatea cum ar fi felierea plăcilor, rotația diagramei, sfaturi pentru scule etc..

Acum, că am acoperit procesul de creare a diagramelor utilizând o sursă de date statice, să trecem la procesul de redare a unei diagrame folosind datele obținute din foaia de calcul Google.

Conectați aceste diagrame la foaia de calcul Google Docs

Foile de calcul Google Docs transferă date sub formă de fluxuri JSON. De aceea, pentru a face diagrame folosind datele obținute din foaia de calcul Google, este important să convertiți feedurile JSON achiziționate în format XML, așa cum este cerut de FusionCharts.

Există mai multe modalități de a converti JSON în XML. Fie ai putea scrie propriul cod pentru a lua fiecare element JSON și pentru a converti în XML. Sau puteți utiliza motoare bazate pe reguli, cum ar fi JsonT, pentru a vă ajuta în acest proces. Vom folosi JsonT pentru acest articol, deoarece ne ajută să facem lucrurile mai ușor și mai rapid. JsonT poate fi descărcat de la http://goessner.net/articles/jsont/

Folosind JsonT se poate defini cu ușurință o regulă pentru a converti datele JSON într-un șir de format dorit. Urmează un exemplu de date JSON:

 vară de cafeaSalesJSON = "Espresso": "5000", "Cappuccino": "6000", "Latte": "7000", "affogato": "4000", "Cortedo" "," Frappuccino ":" 6000 ";

Următorul cod convertește datele JSON (afișate abve) în formatul FusionCharts XML și apoi creează o diagramă din acesta.

 var JSONParseRules = "auto": "\ n @getData (#)"," getData ": funcția (x) var c =" "; pentru (var i în x) c + =" \ n"var caChartStrXML = jsonT (coffeeSalesJSON, JSONParseRules); var coffeeChart = noul FusionCharts (" Column3D.swf "," CoffeeChartId "," 600 "," 350 "," 0 "," 0 "); coffeeChart.setDataXML (coffeeChartStrXML); cafeChart.render ("coffeeChartDiv");

Pentru ca codul să funcționeze, este esențial să conectați fișierul JavaScript jsont.js la pagina HTML.

Codul (de mai sus) construiește XMLstring din datele JSON cu ajutorul unei reguli care iterează prin fiecare pereche cheie de date JSON și tratează numele cheilor ca categorii și valori ca valori de date pentru diagramă. Puteți citi mai multe despre regulile JsonT la http://goessner.net/articles/jsont/. Apoi, vom folosi acel XML și vom construi graficul.

Pentru a utiliza o foaie de calcul Google ca sursă de date dinamică pentru grafic, este esențial să o publicați pentru vizionarea publică. La momentul publicării documentului pentru vizionarea publică - Google generează o cheie unică. Această cheie este utilizată pentru solicitarea feedurilor de date de la Google; prin urmare, este important să păstrați cheia.

Rețineți că, pentru a lucra cu feedurile Google JSON, este esențial să modificați ușor josnt.js ușor. Am făcut modificări minore la jsont.js pentru a preveni conflictul care apare din cauza faptului că Jsont.js folosește $ ca indicator de obiect și că Google a generat feedul JSON de $ $ ca nume de proprietate. Am modificat Jsont.js astfel încât să folosească # ca indicator de obiect.

Pentru acest exemplu demonstrativ am creat o foaie de calcul Google, care a inclus trei foi - fiecare conținând date anuale de vânzări pentru anii 2006, 2007 și 2008. Foaia de calcul poate fi vizualizată prin următorul link http://docs.google.com.

        

Procesul de creare a unei foi de calcul Google

Următorul cod vă va ajuta să redați o diagramă care este reprezentată grafic folosind datele extrase din foaia de calcul Google:



Graficul se va încărca aici

Iată cum funcționează codul:

  1. Programul se inițiază declarând o variabilă numită "foi" pentru stocarea matricei de definiții de foi de calcul obținute în foaia de calcul Google specificată. Apoi declară variabila "sheetCount", care ține evidența numărului de foi de calcul din care au fost primite datele. Acest contor asigură faptul că graficul reda, odată ce toate datele au fost primite.

  2. În continuare, obiectul "chartConfigJSON" este declarat pentru a stoca setările de configurare a diagramei.

  3. XML care va fi construit treptat, va fi stocat într-un tabel numit 'strXML'. Când procesul de construire XML este complet finalizat, elementele matricei vor fi unite pentru a forma șirul XML.

  4. Deplasând-o, funcția initpage () introdusă în corpul HTML se numește atunci când are loc evenimentul onload. Această funcție, la rândul său, solicită formularului getGoogleSpreadsheetData () care cereri pentru datele din foaia de calcul sub formă de fluxuri JSON. Cererile de funcții getGoogleSpreadsheetData () pentru datele de calcul tabelar prin trimiterea cheii de calcul tabelar generate de Google, specifică și formatul feedului și gestionează feedul după ce a fost primit.

  5. getGoogleSpreadsheetData ("p06JfhjnK8PwEWRkmlWiiQg", "parseSpreadsheet", "json-in-script", "foi de calcul")
  6. Odată ce acest flux a fost primit, este declanșată o funcție de parcurgere a apelurilor parseSpreadsheet (). Această funcție primește numele de foaie de calcul din fișierul jsonsheets.feed.title. $ T și apoi trece prin fiecare intrare din foaia de calcul. Fiecare intrare din foaia de calcul oferă legături de feed către toate tipurile de feeduri disponibile (foaie de calcul / listă / celulă / gViz) din matricea de link-uri. După obținerea unei liste de tip de feed, cererile de funcții getGoogleSpreadsheetData () pentru fluxurile JSON din fiecare foaie de calcul.
    getGoogleSpreadsheetData (foi [i] .link [0] .href, "parsespreadsheet", "json-in-script");


    Elementul link [0] .href conține adresa URL pentru tipurile de feeduri disponibile, care este transmisă funcției. După ce feed-ul a fost primit, se apelează funcția de apel inversă și se transmite o foaie de calcul.

  7. Odată ce feed-ul pentru fiecare foaie de calcul este primit, numărul de coli este mărit cu 1.
  8. Fluxurile obținute din fiecare foaie de calcul ar fi considerate un set de date pentru diagramă. Prin urmare, titlul feed-ului este luat ca nume de serie pentru fiecare set de date.
  9. var seriaName = gjson.feed.title. $ t;
  10. Setările de configurare ale graficului sunt stocate în strXML [0]. Rețineți că funcția parsespreadsheet () va fi apelată de mai multe ori de câte ori este numărul de foi de calcul conținute în foaia de calcul Google. Codul conține o condiție care împiedică repetarea în continuare a acestui proces.
  11. Categoriile de categorii sunt definite utilizând prima foaie de calcul. Lista cu numele categoriei este construită folosind jsonT.
  12. regula = "auto": "#", "de sine[*]":""; strXML [1] = jsonT (feedEntries, regulă);
  13. În cele din urmă, jsonT este chemat să acționeze pentru a popula valorile setului de date:
  14.  regula = "auto": "#", "de sine[*]":""; strXML [2] + = jsonT (feedEntries, regulă);

    Când acest cod este executat, următoarea diagramă va fi generată în pagina dvs..

Diagrama multi-serie creată utilizând datele obținute din documentul de calcul tabelar Google

Acum, că am reușit să generăm o diagramă, să facem un pas mai departe și să adăugăm capacitatea de a exporta ca imagini sau PDF-uri. Acest lucru va fi foarte util pentru trimiterea de e-mail colegilor.

Export PDF

Ultima versiune de FusionCharts (v3.1) oferă o gamă largă de caracteristici de export. Puteți exporta diagramele în format PDF, PNG sau JPEG - atât la nivelul clientului, cât și pe cele de pe server.

În exemplul nostru, deoarece nu folosim niciun script de pe server, vom rămâne la exportul de pe partea clientului. Pe partea clientului, caracteristica de export este implementată cu ajutorul componentelor de export FusionCharts pentru client - numele colectiv acordat FusionChartsExportComponent.js și FCExporter.swf. FCExporter.swf este motorul de export pe partea clientului care permite exportul graficelor. Fișierul JavaScript oferă o interfață între grafic și FCExporter.swf.

Această clasă JavaScript facilitează redarea FCExporter.swf, care este motorul pentru export și servește și ca o interfață grafică de utilizator. Cu ajutorul API-urilor de export puteți personaliza cu ușurință aspectul GUI-ului. API-urile vă permit de asemenea să controlați aspectele funcționale ale GUI. Următorul cod ilustrează procesul:

 
 funcția loadExportComponent () // initialize FusionCharts Export Component // introduceți toate setările în parametrii exportComponent = nou FusionChartsExportObject ('exportComponentH', 'FCExporter.swf', width: '250', înălțime: '250', fullMode: SaveToys: 1, saveAllTitle: "Salvați tot", btnSaveAllTitle: "Ca fișier unic", defaultExportFileName: "SalesReport", exportFormat: "PDF", exportHandler: "exportComponentH" , exportAtClient: 1); exportComponent.Render ( 'componentContainer'); 

Codul (de mai sus) configurează graficul de export pentru a afișa un buton care declanșează procesul de export. În plus, fiecare diagramă va fi afișată în panoul GUI și utilizatorul va primi o opțiune de a exporta toate diagramele într-un singur fișier PDF. GUI va permite, de asemenea, utilizatorului să schimbe formatul de export implicit din PDF în jpeg sau png.

Pentru a demonstra procesul de export, am adăugat codul pentru configurarea GUI-ului de export, codului care face o diagramă bazată pe date derivate din documentul de calcul tabelar Google. Cu toate acestea, am făcut unele modificări la cod, astfel încât acesta va face acum trei grafice cu o singură serie în loc de o singură diagramă multi-serie. Fiecare diagramă va afișa date referitoare la o anumită foaie de calcul.

Următorul este codul combinat:

          

Următoarea este reprezentarea procesului de export din partea clientului:

  • Graficele sunt redate în browser.
  • Graficele sunt convertite în bitmap când se face clic pe butonul "Export As PDF".
  • GUI-ul de export afișează o listă de diagrame care urmează să fie exportate.
  • Graficele sunt salvate într-un singur fișier PDF atunci când utilizatorul face clic pe butonul "Ca un singur PDF".
  • Și cu asta terminăm acest articol. Există mult mai multe caracteristici oferite de FusionCharts care pot fi puse în funcțiune. Crearea de diagrame din datele stocate în foi de calcul Google este doar un exemplu de inovații care sunt posibile cu FusionCharts. Vă mulțumim pentru lectură!

  • Urmăriți-ne pe Twitter sau abonați-vă la feed-ul RSS NETTUTS pentru mai multe tutoriale și articole zilnice de dezvoltare web.


Cod