Grafici su mobile, rappresentazioni di dati con d3.js responsive!

ci sono due vie:
-ridisegnare tutto al cambiamento della finestra o meglio, scrivere in js già pensando che la pagina sarà responsive.
Oppure:
-usare hw  o vh , ovvero misure calcolate in base alla finestra nei css3
.attr(“width”, “100hw”)
.attr(“height”, “auto”)
-css3 media query con differenti transform:scale(0.5);
Oppure:
-usare svg come vanno usate (ma non tutti i browser sono d’accordo):
https://www.w3.org/TR/SVG/coords.html#IntrinsicSizinghttps://www.w3.org/TR/SVGTiny12/coords.html#ViewBoxAttribute
_________SPIEGAZIONE:
allora, la domanda che ci facevamo l’altro giorno è come avere i grafici fatti con D3 e  in rwd.
La risposta numero uno è scriverli pensandoli responsive.
Ammettendo che non li hai scritti tu ,ma vuoi una soluzione rapida ed indolore… ho tre trucchi che funzionano al momento:
il primo è settare l’svg iniziale su hw e/o hv, che sono due misure css3 relativamente nuove ma adottate da tutti i browser.
Da 1 a 100 ti misurano la larghezza/altezza della pagina.
quindi 50hw, significa: fammelo metà della grandezza della finestra.
Quindi nel js del grafico, gli vai ad aggiungere:
var svg = d3.select("body").append("svg")
.attr("width", "100hw")
.attr("height", "auto")
.append("g")

ES: http://albero.redup.xyz/bubble/datascuole/index3.html
Se dal tuo browser non funge, fammi sapere che browser e versione è , perchè a me risulta che vada su tutto.
Secondo trick:
Usare le mediaquery e transform:scale(0.5);
Significa fammelo uguale nelle proporzioni, ma grande la metà.
E’ più macchinoso perchè deve decidere tu gli scatti.
es, se hai una svg di 900px per 900px, puoi decidere che sotto i 900px la fai grande la metà , quindi a 450px,
e poi con un’altra media query decidi che sotto i 450px la fai grande un quarto, quindi arrivi a 225px e quindi visualizzabile su tutto.
Se vuoi essere visto anche da browser “arretrati”, ricordati di copiare 3 volte la regola css che gli dai ed aggiungergli i prefissi:
-webkit-transform, -o-transform, -moz-transform
Io lo faccio principalmente principalmente per gli android 4.0 che sono ancora stra diffusi ed usano un webkit vecchio.
es:
@media screen and (max-width: 900px){
svg{
transform:scale(0.5);
-webkit-transform:scale(0.5);
margin: -25%;
}
}
@media screen and (max-width: 450px){
svg{
transform:scale(0.2);
-webkit-transform:scale(0.2);
margin: -70%;
}
#legend:after{content:"torna a visualizzarlo con un PC o scaricalo come pdf";}
}

Terzo paciugo a cui ho pensato ,ma poi non ho applicato perchè mi sembra un po troppo sporco, rimane quindi una ipotesi:
metto un iframe, con dentro uno dei grafici, ma senza regole di viewport nei meta. Quindi verra fatto vedere in miniatura dentro alla sua finestra e sarà possibile zommarlo a mano, come un sito non responsive 😛
///////////////
Letture:
https://www.safaribooksonline.com/blog/2014/02/17/building-responsible-visualizations-d3-js/
http://blog.webkid.io/responsive-chart-usability-d3/
http://stackoverflow.com/questions/9400615/whats-the-best-way-to-make-a-d3-js-visualisation-layout-responsive
http://eyeseast.github.io/visible-data/2013/08/28/responsive-charts-with-d3/

worpress API per javascript

Per dire che son 3 o 4 mesi che batto la testa e le dita sulla tastiera riguardo le wp json rest API, che dal 4.5 sono diventate native e che già da un po aleggiavano nell’aria di cambiamento di wp.
Ve la faccio brevissima, wp ci da nativamente delle liste in json con dentro tutto: titoli, articoli, tassonomie, etc.. quindi manipolabili con javascript e che entrano appieno nella possibilità di avere delle web app interamente in js/css3 e html5.
Consiglio la lettura di questo per documentarsi:

REST API


MA soprattutto di qualche interpretazione, tipo questo articolo:
 
http://insights.dice.com/2013/05/13/javascript-is-eating-the-world-2/
https://premium.wpmudev.org/blog/wordpress-rest-api/?mv=b&utm_expid=3606929-67.KOuGWaEfRS2elZCEv5f8LA.1&utm_referrer=https%3A%2F%2Fwww.google.it
https://it.wikipedia.org/wiki/Teoria_della_grande_unificazione

Licenza MAMP :)

License Agreement for MAMP and MAMP PRO
———————————————————
License Agreement for MAMP
MAMP combines free software packages (like a Linux distribution). MAMP is totally free of charge. You can copy it under the terms of the GNU General Public License. But only the compilation of MAMP and the MAMP program itself is published under the GPL. The contained products may have different licences. Please check every single licence to get a summary of what is allowed and what not.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place – Suite 330, Boston, MA  02111-1307, USA Continue reading Licenza MAMP 🙂

Licenza Chrome browser 50.0.2661.94-1

Termini di servizio di Google Chrome

I presenti Termini di servizio si applicano alla versione di codice eseguibile di Google Chrome. Il codice sorgente di Google Chrome è disponibile gratuitamente ai sensi dei contratti di licenza del software open source all’indirizzo http://code.google.com/chromium/terms.html.
1. Il rapporto dell’utente con Google
1.1 L’utilizzo da parte dell’utente di prodotti, software, servizi e siti web di Google (collettivamente definiti i “Servizi” nel presente documento e ad esclusione di qualsiasi servizio fornito da Google ai sensi di un accordo scritto distinto) è soggetto ai termini di un contratto legale tra l’utente e Google. Con “Google” si intende Google Inc., con sede principale in 1600 Amphitheatre Parkway, Mountain View, CA 94043, Stati Uniti. Il presente documento illustra le modalità di redazione del contratto e ne espone alcuni termini.
Continue reading Licenza Chrome browser 50.0.2661.94-1

Licenza node 4.4.3 LTS

Node.js is licensed for use as follows:
“””
Copyright Node.js contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Continue reading Licenza node 4.4.3 LTS