Oorsig:
(UPDATE 12/04/07: Nog 'n interessante hulpbron op die einde 'n skakel na 'n ander blog wat fokus op die middel van 'n baie interessante web deel)
This blog entry describes how to create a bar graph in SharePoint. This works in both WSS and MOSS environments as it only depends upon the data view web part.
Die algemene benadering is soos volg:
- Maak 'n lys of dokument biblioteek wat bevat die data wat jy wil grafiek.
- Plaas die gepaardgaande dokument biblioteek / persoonlike lys op 'n bladsy en skakel dit om na 'n data view web deel (DVWP).
- Verander die DVWP se XSL HTML wat wys as 'n grafiek te genereer.
Besigheid scenario / Setup:
Ek het 'n persoonlike lys met die standaard titel kolom en een addisionele kolom, "Status". This models (baie simplisties) an "Authorization For Expense" scenario waar die titel verteenwoordig die projek en die Status 'n waarde uit die lys van:
- Voorgestel
- In Proses
- Oorreed
Die doel is om 'n interaktiewe horisontale bar grafiek wat hierdie status kodes te produseer.
Ek het bevolk die lys en dit lyk asof hierdie:
Skep Data View Web Deel:
Skep die DVWP deur die toevoeging van die persoonlike lys na 'n bladsy (webwerf bladsy in my geval) en volg die instruksies hier (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).
Benewens eenvoudig die skep van die DVWP, we also need to set the paging property to show all available rows. Vir my, dit lyk iets soos hierdie:
Op hierdie punt, I always close SPD and the browser. I then re-open the page using the browser. This avoids accidentally mucking up the web part layout on the page.
Verander die XSLT:
Dit is nou die tyd om die XSLT te wysig.
I always use visual studio for this. (Sien hier vir 'n belangrike opmerking oor IntelliSense wat sal help om 'n baie).
Ek skep 'n leë projek voeg vier nuwe lêers (replacing the words "Original" and "New" soos toepaslik):
- Original.xslt
- New.xslt
- Original Params.xml
- Nuwe Params.xml
In my geval, Dit lyk soos volg:
Modify the web part and copy the params and XSL to the "Original" weergawe in Visual Studio.
Die doel hier is om te veroorsaak dat die XSL die resultate wat ons kry terug te transformeer van die DVWP navraag in HTML wat lewer as 'n grafiek.
Vir hierdie doel, it helps to first consider what the HTML should look like before we get confused by the insanity that is known as "XSL". (Om duidelik te wees, die volgende is bloot 'n voorbeeld; don’t type it or copy/paste into visual studio. I provide a full blow starting point for that later in the write-up). The following sample graph is rendered as per the HTML immediately following:
Ooreenstemmende HTML:
<html> <liggaam> <sentrum> <tafel breedte = 80%> <tr><td><sentrum>Horisontale Staafgrafiek</td></tr> <tr> <td align="center"> <table border="1" width = 80%> <tr> <td breedte = 10%>Oop</td> <td><tafel Celvulling ="0" Celafstand ="0" border = 0 width = 50%><tr bgcolor = rooi><td> </td></tr></tafel></td> </tr> <tr> <td breedte = 10%>Gesluit</td> <td><tafel Celvulling ="0" Celafstand ="0" border = 0 width = 25%><tr bgcolor = rooi><td> </td></tr></tafel></td> </tr> <tr> <td breedte = 10%>Oorreed</td> <td><tafel Celvulling ="0" Celafstand ="0" border = 0 width = 25%><tr bgcolor = rooi><td> </td></tr></tafel></td> </tr> </tafel> </td> </tr> </tafel> </liggaam> </html> |
I used a dead simple approach to creating my bars by setting the background color of a row to "red".
Die wegneem is hier: Op die ou end, Al wat ons doen is die skep van HTML met rye en kolomme.
Sjabloon XSLT:
I’ve copied the XSLT that generates a horizontal bar graph. It’s fairly well commented so I won’t add much here except for these notes:
- Ek het begin met die standaard XSL dat SharePoint Designer my gegee het toe ek die eerste keer die DVWP geskep.
- Ek was in staat om dit af te sny van SPD se 657 lyne te 166 lines.
- Ek het nie gemors rond met die parameters XML lêer (wat afsonderlik is van die XSL en jy sal weet wat ek bedoel wanneer jy na die DVWP verander homself; is daar twee lêers wat jy kan verander). Egter, ten einde dit te vereenvoudig, I did remove nearly all of them from the XSL. This means that if you want to make use of those parameters, you just need to add their variable definitions back to the XSL. That will be easy since you will have the original XSL variable definitions in your visual studio project.
- You ought to be able to copy and paste this directly into your visual studio project. Toe, remove my calls and insert your own calls to "ShowBar".
- Die boor werk af deur die skep van 'n <a href> soos hierdie: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. This technique may be of value in other contexts. Op die eerste, Ek het gedink ek sou nodig het om te voldoen aan 'n meer komplekse formaat: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, but in my environment that is not necessary. The List’s URL is passed to us by SharePoint so this is quite easy to generalize.
Hier is dit:
<xsl:style weergawe="1.0" sluit-gevolg-voorvoegsels="rs Z o s ddwrt dt msxsl" |
Die resultate:
Die XSL van bo genereer hierdie grafiek:
Boor af na die onderliggende data deur te kliek op die status kode:
Sluiting van gedagtes:
Dit kan veralgemeen?
Ek is mal oor hierdie grafiese konsep, but I hate the fact that I have to go in and do so much hand-coding. I’ve given a little thought to whether it can be generalized and I’m optimistic, but I’m also a little fearful that there may be a brick wall somewhere along the path that won’t offer any work-around. If anyone has some good ideas on this, maak asseblief 'n aantekening in die kommentaar of email my.
Vertikale Grafieke:
This is a horizontal bar graph. It’s certainly possible to create a vertical graph. We just need to change the HTML. I would start the same way: Create an HTML representation of a vertical bar graph and then figure out how to get that via XSL. If anyone is interested in that, I could be persuaded to try it out and work out the kinks. If someone has already done that, please let me know and I’ll gladly link to your blog 🙂
Ek dink wat 'n uitdaging met 'n vertikale grafiek is dat die etikette vir die grafiek is meer moeilik om te bestuur, maar beslis nie onmoontlik.
Field Name Gotcha se:
Daar is ten minste twee dinge om te kyk uit vir jou veld name.
Eerste, a field name with a space has to be escaped in the XSL. This will probably be an issue here:
<xsl:veranderlike naam="totalProposed"
kies="tel(/dsQueryResponse / Rye / Ry[normaliseer-ruimte(@ Status) = 'Voorgestelde'])" />
If your "Status" column is actually named "Status Code" then you need to reference it as "Status_x0020_Code":
<xsl:veranderlike naam="totalProposed"
kies="tel(/dsQueryResponse / Rye / Ry[normaliseer-ruimte(@ Status_x0020_Code) = 'Voorgestelde'])" />Tweede, en ek is 'n bietjie vaag op hierdie, but you also need to be on the alert for field name changes. If you name your field "Status Code" en dan later op, rename it to "AFE Status", the "internal name" does not change. The internal name will still be "Status Code" and must be referenced as "Status_x0020_Code". The "other resources" links kan help diagnoseer en regstel hierdie soort van probleem.
Oor daardie kleur:
I picked "red" because it’s pleasing to me at the moment. It would not be a big deal to show different colors so as to provide more than just a visual description of a number, but to also provide a useful KPI. Byvoorbeeld, if the percentage of "stalled" AFE se is > 10% dan wys dit rooi, otherwise show it in black. Gebruik <xsl:kies> om dit te bewerkstellig.
Ander Hulpbronne:
- Bepaal die interne naam (en ander goeie inligting) vir die data in 'n lys: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!134.entry
- Wys al die data wat verskaf is deur SharePoint (die rou XML): http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!190.entry
- Kry die XPath uitdrukking van 'n spesifieke kolom: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!155.entry
- Nog 'n benadering met behulp van OWA(?). I have not dug into it, maar lyk belowend, veral vir sirkeldiagramme: http://www.waka.dk/Blog/PermaLink,guid,e2532e71-d774-4ac9-8f25-883964b830f4.aspx
Gelukkig transformasie!
<einde />
Hierdie bladsy byna voltooi die taak wat ek was op soek na.
Ek het 'n groep wat wil die SharePoint Opname lys te gebruik om 'n weeklikse meningspeiling te skep. Die vangs? Hulle wil nie kode te sien… Of verander die stelsel elke keer as hulle stuur die poll (beplan vir 'n weeklikse update).
Ek was in staat om dit te koppel aan die opname lys en die grafiek op die eerste antwoord kolom skep. Wat ek nie kan voorspel al is die waardes en etikette wat hulle nodig sal hê om vorentoe te beweeg. Om sake te vererger hulle kan meer of minder antwoorde per week.
Ek sal elders net in geval kyk, maar het iemand 'n manier gevind rye en etikette wat gebaseer is af van die aantal beskikbare opsies en dinamiese instelling van hierdie eerder as harde kodering van die verwagte waardes te skep?
Dankie Paul. Baie nuttig. Dankie vir jou werk, Ek was in staat om 'n grafiek bar kolom toe te voeg tot 'n bestaande DVWP (bijv. vir take) baie maklik met net 'n paar reëls van die kode.
In SharePoint Designer, Ek plaas 'n data vertoning met die titel en % volledige kolomme van 'n taak lys. Ek het die wyser in een van die selle en regs kliek. Ek kies Voeg 'n kolom aan die regterkant. In die lig kode, Ek het gevind dat die <td> en vervang die <xsl:teks element binne-in die sel met jou kode:
<tafel Celvulling ="0" Celafstand ="0" border ="0"
width="{rond(@ PercentComplete * 100)+1}%">
<tr style="background-color:red">
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:teks>
</tr>
</tafel>
Note I changed the row color code from bgcolor="red" to style="background-color:rooi"
Ook, in staat was om een van die kolomme te kies in my lys (@ PercentComplete) in place of "$BarPercent"
Greg
Nog 'n metode (met behulp van slegs die SharePoint UI):
http://pathtosharepoint.wordpress.com/2008/09/02/a-progress-bar-for-your-tasks-list/
http://pathtosharepoint.wordpress.com/2008/10/21/progress-bar-color-coding/
xmlns:__designer =http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:ASP ="http://schemas.microsoft.com/ASPNET/20">
select="count(/dsQueryResponse / Rye / Ry[normaliseer-ruimte(@ Status)=’WIP’])" />
http://www.microsoft.com/sharepoint/downloads/components/detail.asp?a1=701Ian Morrish posted this in May 2006. I tried in MOSS 2007 and it works well. Added to GAC, moes execadmsvcjobs en iisreset…
Great post, dankie!
Great post, dankie!
Hi Paul!
Nice werk! I also had something like this in my mind to view SharePoint lists in a graphical way 😉
I have a ‘Using Dashboards in SharePoint’ vraag. We are a military hospital using MOSS standard for our Intranet and would like to build a dashboard for our Command Group to see ‘real time’ indien moontlik. Een van die belangrikste punte is die lees van die real-time huidige werklading binne die fasiliteit en letterlik kyk hoe dit verander op en af (mag het om te klik “verfris”/F5).
Dankie by voorbaat,
Jy kan iets nuttig doen met jQuery hierdie effek te bereik. E-pos my by galvin.paul @ gmail.com en ek sal bly wees om te probeer en gee hand.