Showing posts with label Library. Show all posts
Showing posts with label Library. Show all posts

Wednesday, April 16, 2008

Timeline .Net

. Wednesday, April 16, 2008
0 commenti

Timeline .Net è uno user control per Asp.Net 2.0 realizzato da Rob Chartier.
Possiamo inserire i vari eventi usando sia direttamente le API del controllo, sia come sorgente dati i feed RSS.
Prima di iniziare a giocare con questo controllo è necessario scaricare la TimelineNet.dll e aggiungere il referimento al nostro progetto Asp.Net 2.0.
Aggiungiamo il controllo nella toolbox di Visual Studio 2008, in modo che possiamo trascinarlo sulla nostra pagina aspx.
A questo punto non ci rimane che indicare tramite la property DataSourceType il tipo di fonte dati, nel caso specifico rss e settare DataUrl con l'url del feed:

   1: <cc1:timeline ScriptSourceLocation="Local" 
   2:         LocalTimelineJSFolder="js/timeline/"
   3:         Height="300"
   4:         DataSourceType="rss"
   5:         DataUrl="http://feeds.feedburner.com/SignIn"         
   6:         Width="100%" runat="server"></cc1:timeline>



Per recuperare i dati bisogna infine aggiungere un handler http nel web.config:
   1: <system.web>
   2:   <httpHandlers>
   3:     <add verb="GET" path="*.ashx" type="TimelineNet.TimelineAjaxHandler, TimelineNet" />
   4:   </httpHandlers>
   5: </system.web>

Questa sarebbe la prassi da seguire ma purtroppo al lancio della pagina mi son trovato di fronte il seguente errore javascript:

Timeline1Analizzando nello specifico il codice js che viene prodotto dalla dll ed incapsulato nella pagina ho notato che i valori dei parametri trackHeight e trackGap presentano come separatore delle decine il carattere virgola anzichè il punto.
Sicuramente il problema si presenta su un sistema in cui la lingua  è diversa da quella inglese(nella fattispecie it-IT).
Essendo a disposizione il codice sorgente sul sito codeplex ho sbirciato nella classe Band, intervenedo sull'override del metodo ToString dove appunto viene generato/formattato il codice js.
Per evitare tale situazione su di una macchina con impostata la lingua  italiana ho effettuato il ToString dei due valori decimal sopra citati passando esplicitamente un oggetto CultureInfo settato su inglese:

   1: using System.Globalization;
   2: ....
   3: CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
   4: ....
   5: if(TrackHeight > 0) sb.Append(string.Format(",trackHeight: {0}\n", TrackHeight.ToString( culture)));
   6: if(TrackGap > 0) sb.Append(string.Format(",trackGap: {0}\n", TrackGap.ToString( culture)));

Risultato:

timeline2Inoltre come accenato in precedenza possiamo usare le API del controllo per inserire in modo estremamente semplice un evento:

   1: using TimelineNet.Library;
   2: ....
   3: timeline.DataSourceType = TimelineNet.DataSourceTypes.named;
   4: TimelineData datiTimeline = new TimelineData();
   5: datiTimeline.Add(new Event(DateTime.Now, DateTime.Now, false, "Timeline test",
   6:                  string.Empty, "Evento personalizzato", string.Empty));
   7: timeline.TimelineData = datiTimeline;

Risultato finale:
timeline3

Read More »»

Friday, April 11, 2008

Grafici in Silverlight con Visifire

. Friday, April 11, 2008
1 commenti

Sulla possibilità di inserire grafici in pagine Asp.Net ho già trattato qui (in cui si fa uso delle Google Chart API) e qui (in cui invece si fa uso di una library open source: Open Flash Chart).
Un'altra possibilità molto interessante consiste nell'utilizzare componenti Silverlight di Visifire (attualmente in versione beta).
Dopo aver effettuato il download degli assemblies, cambiamo l'estensione del file Visifire.xap in Visifire.zip. Quest'ultimo contiene le seguenti dll:

  • Visifire.Charts.dll
  • Visifire.Commons.dll
  • VisifireCharts.dll
  • AppManifest.xaml
Non ci resta che referenziare le dll nella nostra applicazione Silverlight e iniziare a scrivere qualche linea di codice.
Un esempio molto semplice di grafico a linee:
   1: private void CreateChart()
   2: {
   3:   int[] values = new int[]{ 3, 9, 17, 2, -1, 0, 21 };
   4:   Visifire.Charts.Chart chart = new Visifire.Charts.Chart();
   5:   chart.Height = 500;
   6:   chart.Width = 500;
   7:  
   8:   //DataPoint indica il singolo valore da tracciare sul grafico
   9:   Visifire.Charts.DataPoint dataPoint;
  10:   //Set di valori
  11:   Visifire.Charts.DataSeries dataSeries = new Visifire.Charts.DataSeries();
  12:   //Tipologia di grafico
  13:   dataSeries.RenderAs = "line";
  14:   for( int i=0; i<values.Length; i++)
  15:   {
  16:     dataPoint = new Visifire.Charts.DataPoint();
  17:     dataPoint.YValue = values[i];
  18:     dataSeries.Children.Add(dataPoint);
  19:   }
  20:  
  21:   chart.Children.Add(dataSeries);
  22:   //Aggiungo al canvas l'oggetto grafico
  23:   box.Children.Add(chart);
  24: }



Il risultato finale:

VisifireLe tipologie attualmente supportate:
Column
Area
Doughnut
Line
StackedColumn
Pie
Bar
Bubble






Un altro aspetto decisamente da sottolineare, è la possibilità di generare online il grafico( codice XML e HTML) grazie ad un designer, senza scrivere una linea di codice.

Read More »»

Saturday, February 16, 2008

Grafici con Google Chart API

. Saturday, February 16, 2008
0 commenti

Tempo fa ho parlato di una library molto interessante: Open Flash Chart, che consente con pochissime righe di codice di generare grafici flash da inserire nelle nostre pagine scritte in Asp.Net 2.0.
Un'alterativa, completamente diversa dalla precedente, consiste nell'usare le API di Google Chart.
Ora vediamo come usare il wrapper C# di Google Chart con un semplicissimo esempio.
Aggiungiamo il riferimento della GoogleChartSharp.dll al nostro progetto costituito da una semplice pagina aspx e un controllo Image che conterrà il grafico:

   1: Dim valueData() As Integer = New Integer() {45, 20, 15, 50}
   2: Dim chart As GoogleChartSharp.BarChart = _
   3:     New GoogleChartSharp.BarChart(400, 400, BarChartOrientation.Vertical, BarChartStyle.Stacked)
   4: chart.SetData(valueData)
   5: imgChart.ImageUrl = chart.GetUrl()



Richiamando il metodo GetUrl viene inviata una richiesta HTTP ricevendo in risposta il grafico generato in formato PNG.
Le API attualmente in beta supporta i seguenti formati di grafico:

Linee (Line charts)
Barre (Bar charts)
Torta (Pie charts)
Diagrammi di Venn
Grafico a dispersione (Scatter plots)

Le dimesioni del grafico di ritorno deve avere un'area inferiore ai 300000 pixels, in caso contrario si ottiene come risposta uno status code 400.

Read More »»

Monday, January 21, 2008

Multibox

. Monday, January 21, 2008
1 commenti

Tempo fa ho pubblicato un post su simpleviewer per creare photogallery in flash, oggi invece vi segnalo multibox. Si tratta praticamente di un lightbox che supporta diversi formati non solo immagini, ma anche file flash, mp3, html ecc.
E' possibile personalizzare il layout ed inoltre è compatibile con i più popolari browser: Firefox(PC e Mac), Explorer(6 e 7), Safari.
Requisiti: mootools v1.11

Read More »»

Saturday, January 12, 2008

GOA: Windows Form con Flash o Silverlight

. Saturday, January 12, 2008
0 commenti

goa Tramite GOA è possibile scrivere applicazioni per Flash o Silverlight utilizzando controlli Windows Form, poichè si tratta di un'implementazione della libreria .NET System.Windows.Form.
Esistono due versioni della libreria: Standard e Professional(quest'ultima in versione alpha). Includono circa 40 controlli standard come per esempio:

  • Button, CheckBox, RadioButton, GroupBox, Label
  • TextBox, NumericUpDown
  • Form, MessageBox, Cursor
  • ListBox, CheckedListBox
  • ComboBox
  • TreeView
  • MonthCalendar
  • TabControl, Splitter

Read More »»

Thursday, January 10, 2008

PDFsharp library per PDF

. Thursday, January 10, 2008
0 commenti

Segnalo un'ottima library Open Source scritta interamente in C#, che in moltissimi già conosceranno: PDFsharp.
In modo estremamente semplice permette di creare e modificare( con possibilità di eseguire merge, ecc ) documenti Adobe PDF.

Read More »»

Wednesday, December 12, 2007

I-Load per l'upload di immagini

. Wednesday, December 12, 2007
0 commenti

Dal nuovo blog/sito di Alberto Falossi son venuto a conoscenza di un ottimo controllo ASP.NET (non free) per la gestione delle immagini e dell'upload.
Il controllo I-Load della RadActive compatibile sia con la versione 1.1 che con la 2.0 del framework permette di caricare, ritagliare, ridimensionare le immagini, con funzionalità di zoom, anteprima ecc.
E' possibile fare qualche esperimento direttamente online.

Read More »»

Tuesday, November 13, 2007

32feet.NET

. Tuesday, November 13, 2007
0 commenti

32feet 32feet.NET è un'interessante library per utilizzare sia le periferiche Bluetooth che quelle d'infrarossi IrDA in applicazioni .NET, tra l'altro è supportato anche il Compact Framework.

Read More »»

Friday, October 12, 2007

AForge.NET

. Friday, October 12, 2007
0 commenti

AForge.Net è un progetto veramente interessante di Andrew Kirillov. In sostanza si tratta di un framework scritto in C# che racchiude una serie di library:

  • AForge.Imaging – a library for image processing routines and filers;
  • AForge.Neuro – neural networks computation library;
  • AForge.Genetic – evolution programming library;
  • AForge.Vision – computer vision library;
  • AForge.Machine Learning – machine learning library.

Read More »»

Saturday, September 15, 2007

YouTube.Net

. Saturday, September 15, 2007
0 commenti

YouTube.Net API è una libreria scritta in C# che permette di interfacciarsi in modo estramemente semplice con le YouTube's API.
Come prima cosa è necessario registrarsi al sito YouTube per ottenere un ID sviluppatore:

Per eseguire per esempio, una ricerca dei video indicando un preciso tag:

Private Sub TestVideo()
Dim dtVideos As DataTable = New DataTable()
Dim rowVideo As DataRow
dtVideos.Columns.Add(
"Title", GetType(String))
dtVideos.Columns.Add(
"Url", GetType(String))

Dim youTube As YouTubeDotNet.YouTube = New YouTubeDotNet.YouTube()
youTube.DeveloperID
= "ID Sviluppatore"
Dim videos() As YouTubeDotNet.Video = youTube.GetTaggedVideos("Asp.Net")
For Each video As YouTubeDotNet.Video In videos
rowVideo
= dtVideos.NewRow()
rowVideo(
"Title") = video.Title
rowVideo(
"Url") = video.ThumbnailUrl
dtVideos.Rows.Add(rowVideo)
Next

dgrVideos.DataSource
= dtVideos
dgrVideos.DataBind()
End Sub

Il risultato:

Sul sito sono presenti tutta una serie di esempi.

Read More »»

Monday, September 3, 2007

WebBrowser con IStaySharp

. Monday, September 3, 2007
1 commenti

Per puro caso mi sono imbattuto in un Windows control IStaySharp.WebBrowser che ho subito messo alla prova, viste le diverse e non poche noie causatemi dal Microsoft WebBrowser( controllo che ci permette di navigare nelle pagine web all'interno di applicazioni Windows Form), soprattutto per quanto riguarda l'intenso consumo di risorse RAM.
Dopo aver scaricato la libreria è sufficente aggiungere la IStaySharp.WebBrowser.dll nella toolbox di Visual Studio, e trascinare il controllo sulla form.
Da sottolineare che tale libreria implementa funzionalità non solo di Internet Explorer ma anche di Mozilla(bisogna però installare il Mozilla ActiveX control) ed inoltre non dipende dalle due dll: AxInterop.SHDocVw.dll e SHDocVw.dll.
Supponiamo di voler eseguire una ricera su Google, i passi da eseguire sono:
1)Navigare nella home di Google:

Dim _busy As Boolean = True

Private Sub NavigatePage(ByVal url As String)
IeBrowser1.Navigate(url)
While (_busy)
Application.DoEvents()
End While
End Sub

Private Sub IeBrowser1_DocumentComplete(ByVal sender As Object, ByVal e As IStaySharp.WebBrowser.DocumentCompleteEventArgs) Handles IeBrowser1.DocumentComplete
If (IeBrowser1.Url.AbsoluteUri <> "about:blank" And IeBrowser1.ReadyState = IStaySharp.WebBrowser.WebBrowserReadyState.Complete) Then
_busy
= False
End If
End Sub

L'evento DocumentComplete permette di capire quando la pagina è stata scaricata, verificando che lo stato sia di tipo Complete attraverso l'enumeratore WebBrowserReadyState.
2)Ricercare l'input box in cui indicare la parola da ricercare
3)Ricercare il pulsante "Cerca con Google" ed effettuare il submit
Per eseguire quest'ultimi passi ci affidiamo alla library MSHTML(Microsoft HTML Object Library):



Private Function Find()
Dim document As mshtml.HTMLDocumentClass = IeBrowser1.Document
'Find input box ricerca
Dim inputSearch As mshtml.HTMLInputElementClass = document.getElementsByName("q").item(0)
inputSearch.value
= "sign in blog"

'Find submit
Dim submitSearch As mshtml.HTMLInputElementClass = document.getElementsByName("btnG").item(0)
submitSearch.click()
End Function

A questo punto non ci resta che richiamare nell'ordine:


NavigatePage("http://www.google.it")
Find()

"Chissà come si potrebbe comportare in un vecchio progetto...mah non lo saprò mai :D"

Read More »»