Monataj Arkivoj: Decembro 2007

Krei Barajn Grafeojn en SharePoint

Superrigardo:

(ĜISDATIGO 12/04/07: Aldonita alian interesan rimedon ĉe la fino liganta al alia blogo kiu traktas tion ĉi tra tre interesa araneaĵa parto)

Ĉi tiu bloga eniro priskribas kiel krei baran grafeon en SharePoint. Tio ĉi laboras en ambaŭ WSS kaj MUSKAJ medioj kiel ĝi nur dependas al la datuma vida araneaĵa parto.

La entuta alproksimiĝo estas kiel sekvas:

  1. Krei liston aŭ dokumentan bibliotekon kiu enhavas la datumon vi deziras al grafeo.
  2. Loki la rilatan dokumentan bibliotekon / Laŭmenda listo al paĝo kaj transformi ĝin al datuma vida araneaĵa parto (DVWP).
  3. Modifi la XSL de la DVWP produkti HTML ke rezultoj kiel grafeo.

Komerca Scenaro / Aranĝo:

Mi kreis laŭmendan liston kun la norma Titola kolumno kaj unu suplementa kolumno, "Statuso". Tio ĉi modeligas (Tre simplistically) "Rajtigo Por Elspezo" Scenaro kie la titolo reprezentas la projekton kaj la Statuson valoro de la listo de:

  • Proponita
  • En Procezo
  • Ekhaltita

La objektivo estas produkti interaktivan horizontalan baran grafeon kiu montras ĉi tiujn statusajn kodojn.

Mi loĝis la liston kaj ĝin similas tion ĉi:

Bildo

Krei Datuman Vidon Araneaĵa Parto:

Krei la DVWP de aldonanta la laŭmendan liston al paĝo (Eja paĝo en mia kazo) Kaj sekvi la instruojn Ĉi tie (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

Krom simple kreanta la DVWP, Ni ankaŭ devas fiksi la paging nemoveblaĵo montri ĉiuj haveblaj disputoj. Por mi, Tio ĉi rigardas ion tiel:

Bildo

Ĉe ĉi tiu punkto, Mi ĉiam proksima SPD kaj la retumilo. Mi tiam re-malfermi la paĝon uzanta la retumilon. Tio ĉi evitas akcidente mucking supre la araneaĵa parta plano sur la paĝo.

Modifi la XSLT:

Ĝi estas nun tempo modifi la XSLT.

Mi ĉiam uzas vidan studion por tio ĉi. (Vidi Ĉi tie Por grava noto pri intellisense kiu helpos vin tre).

Mi kreas senhoman projekton aldonas kvar novajn dosierojn (Anstataŭiganta la vortan "Originalon" Kaj "Nova" Kiel konvena):

  • Originala.Xslt
  • Nova.Xslt
  • Originala Params.Xml
  • Nova Params.Xml

En mia kazo, Ĝi similas tion ĉi:

Bildo

Modifi la araneaĵan parton kaj kopii la params kaj XSL al la "Originalo" Versio en Vida Studio.

La objektivo ĉi tie estas kaŭzi la XSL transformi la rezultojn ni revenas de la DVWPa demando en HTML kiu faras kiel grafeo.

Al ĉi tiu fino, Ĝi helpas unue konsideri kion la HTML devus simili antaŭ ol ni akiras konfuzita de la frenezeco kiu estas konata kiel "XSL". (Esti klara, La sekvantaro estas simple ekzemplo; Ne tajpas ĝin aŭ kopion/almetas en vida studio. Mi provizas plenan frapon komencanta punkton por tiu pli lasta en la skribi-supre). La sekvanta ekzempla grafeo estas farita kiel por la HTML tuj sekvanta:

Sample Bar Graph

Respondanta HTML:

<Html>
<Korpo>
<Centro>
<Tabla larĝo=80%>
<Tr><Td><Centro>Horizontala Bara Grafeo</Td></Tr>
<Tr>
<Td vicigas="centron">
<Tabla landlimo="1" Larĝo=80%>
<Tr>
<Td larĝo=10%>Turniro</Td>
<Td><Tablo cellpadding="0" Cellspacing="0" Randiri=0 larĝon=50%><Tr bgcolor=ruĝeco><Td>&Nbsp;</Td></Tr></Tablo></Td>
</Tr>
<Tr>
<Td larĝo=10%>Fermita</Td>
<Td><Tablo cellpadding="0" Cellspacing="0" Randiri=0 larĝon=25%><Tr bgcolor=ruĝeco><Td>&Nbsp;</Td></Tr></Tablo></Td>
</Tr>
<Tr>
<Td larĝo=10%>Ekhaltita</Td>
<Td><Tablo cellpadding="0" Cellspacing="0" Randiri=0 larĝon=25%><Tr bgcolor=ruĝeco><Td>&Nbsp;</Td></Tr></Tablo></Td>
</Tr>
</Tablo>
</Td>
</Tr>
</Tablo>
</Korpo>
</Html>

Mi uzis mortintan simplan alproksimiĝon al kreanta miajn barojn de fiksanta la fonan koloron de disputo al "ruĝeco".

La preni-for ĉi tie estas tio ĉi: En la fino, Ĉiuj ni estas farantaj estas kreanta HTML kun disputoj kaj kolumnoj.

Ŝablona XSLT:

Mi kopiis la XSLT kiu produktas horizontalan baran grafeon. Ĝi estas juste bone rimarkita do mi ne aldonos tre ĉi tie esceptas por ĉi tiuj notoj:

  • Mi komencis kun la defaŭlta XSL ke SharePoint Designer donis min kiam mi unue kreis la DVWP.
  • Mi estis kapabla tranĉi tion ĉi malsupren de SPD-a 657 Linioj al 166 Linioj.
  • Mi ne fuŝis proksimume kun la parametra XMLa dosiero (Kiu estas aparta de la XSL kaj vi scios kion mi signifas kiam vin iras modifi la DVWP ĝi mem; Estas du dosieroj vi povas modifi). Tamen, Por simpligi ĝin, Mi ja forigis preskaŭ ili ĉiuj de la XSL. Tio ĉi signifas ke se vi deziras fari uzon de tiuj parametroj, Vi nura bezono aldoni iliajn variajn difinojn reen al la XSL. Kiu estos facile pro tio ke vi havos la originalan XSL variaj difinoj en via vida studia projekto.
  • Vi ought esti kapabla kopii kaj almeti tion ĉi rekte en via vida studia projekto. Tiam, Forigi miajn vokojn kaj inserti viajn proprajn vokojn al "ShowBar".
  • La borilo malsupren laboroj de kreanta <href> Tiel: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Ĉi tiu tekniko povas esti de valoro en aliaj kuntekstoj. Ĉe unua, Mi pensis min devus konformiĝi al pli kompleksa formato: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, Sed en mia medio kiu ne estas necesa. La URL de la Listo estas pasita al ni de SharePoint do tio ĉi estas tre facile indukti.

Ĉi tie ĝi estas:

<Xsl:Stylesheet Versio="1.0" Ekskludi-rezulto-prefiksoj="Rs z o s ddwrt dt msxsl" 
Xmlns:Msxsl="Urno:Schemas-microsoft-com:Xslt" Xmlns:Xsl="Http://Www.w3.org/1999/xsl/transform"
Xmlns:SharePoint="Microsoft.SharePoint.WebControls" Xmlns:__Designer="Http://Schemas.Microsoft.Com/WebParts/v2/DataView/designer"
Xmlns:Aspido="Http://Schemas.Microsoft.Com/ASPNET/20" Xmlns:Ddwrt="Http://Schemas.Microsoft.Com/WebParts/v2/DataView/runtime"
Xmlns:O="Urno:Schemas-microsoft-com:Oficejo" Xmlns:S="Uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
Xmlns:Dt="Uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" Xmlns:Rs="Urno:Schemas-microsoft-com:Rowset" Xmlns:Z="#RowsetSchema"
Xmlns:Ddwrt2="Urno:Frontpage:Interna"
> <Xsl:Eligita Metodo="Html" Indent="Ne" /> <Xsl:Decimala-formato NaN="" /> <Xsl:Param Nomo="ListUrlDir"></Xsl:Param> <!-- Mi devas tion ĉi subteni borilon-malsupren. --> <Xsl:Ŝablono Matĉo="/" Xmlns:SharePoint="Microsoft.SharePoint.WebControls"
Xmlns:__Designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer Xmlns:Aspido="Http://Schemas.Microsoft.Com/ASPNET/20"
> <Xsl:Varia Nomo="Dvt_StyleName">Tablo</Xsl:Varia> <Xsl:Varia Nomo="Disputoj" Elektita="/DsQueryResponse/Disputa/Disputo" /> <Xsl:Varia Nomo="Dvt_RowCount" Elektita="Kalkulo($Disputoj)" /> <Xsl:Varia Nomo="IsEmpty" Elektita="$Dvt_RowCount = 0" /> <Xsl:Varia Nomo="Dvt_IsEmpty" Elektita="$Dvt_RowCount = 0" /> <Xsl:Elekti> <Xsl:Kiam Testo="$Dvt_IsEmpty"> Estas neniu datumo al grafeo!<Br/> </Xsl:Kiam> <Xsl:Alie> <!-- La interesa aĵo komencas ĉi tie. Ni devas difini paron de variables por ĉiu disputo en la grafeo: Totala nombro de eroj kaj procento de totalo. --> <Xsl:Varia Nomo="TotalProposed" Elektita="Kalkulo(/DsQueryResponse/Disputa/Disputo[Normaligi-spaco(@Statuso) = 'Farota'])" /> <Xsl:Varia Nomo="PercentProposed" Elektita="$TotalProposed div $dvt_RowCount" /> <Xsl:Varia Nomo="TotalInProcess" Elektita="Kalkulo(/DsQueryResponse/Disputa/Disputo[Normaligi-spaco(@Statuso) = 'En Procezo'])" /> <Xsl:Varia Nomo="PercentInProcess" Elektita="$TotalInProcess div $dvt_RowCount" /> <Xsl:Varia Nomo="TotalStalled" Elektita="Kalkulo(/DsQueryResponse/Disputa/Disputo[Normaligi-spaco(@Statuso) = 'Ekhaltis'])" /> <Xsl:Varia Nomo="PercentStalled" Elektita="$TotalStalled div $dvt_RowCount" /> <!-- Ni difinas nian HTMLan tablon #?i tie. Mi estas depruntanta de kelkaj norma SharePoint stiloj #?i tie faras ?in konsekvenca. Mi pensas ?in honoros #?an?o al la tutmonda css dosiero tiel kiel temo superregas. --> <Tablo Larĝo="100%" Cellspacing="0" Cellpadding="2" Stilo="Landlimo-rajto: 1 Solida #C0C0C0; Landlimo-fundo: 1 Solida #C0C0C0; Landlimo-maldekstra-stilo: Solida; Landlimo-maldekstra-#lar?o: 1; Landlimo-supro-stilo: Solida; Landlimo-supro-#lar?o: 1;"> <Tr> <Td Vicigi="Centro"> <Tablo Landlimo="1" Larĝo="100%"> <!-- Por #?iu statuso ke ni deziras al grafeo, Ni vokas la "ShowBar" Ŝablono. Ni pasas ?in: 1. Etikedo por la disputo. #Tio ?i estas transformita en hiperligo. 2. La procento (Varia de supra). 3. La reala kampa nomo de la kodo de la fundamenta listo. Tio ĉi ne devas egali la montriĝan etikedon. 4. Kampa valoro egalita por #3. 5. Totalaj eroj de ĉi tiu statusa kodo (Ne la granda totalo de ĉiuj statusaj kodoj). Ĝi emanigas <Tr></Tr> Kaj la horizontala bara grafea linio. Ni vokas ĉi tiun ŝablonon por ĉiu statusa kodo ni deziras vidi. --> <Xsl:Voko-ŝablono Nomo="ShowBar"> <Xsl:Kun-param Nomo="BarDisplayLabel" Elektita="'Farota'"/> <Xsl:Kun-param Nomo="BarPercent" Elektita="$PercentProposed"/> <Xsl:Kun-param Nomo="QueryFilterFieldName" Elektita="'Statuso'"/> <Xsl:Kun-param Nomo="QueryFilterFieldValue" Elektita="'Farota'"/> <Xsl:Kun-param Nomo="TotalItems" Elektita="$TotalProposed"></Xsl:Kun-param> </Xsl:Voko-ŝablono> <Xsl:Voko-ŝablono Nomo="ShowBar"> <Xsl:Kun-param Nomo="BarDisplayLabel" Elektita="'Ekhaltis'"/> <Xsl:Kun-param Nomo="BarPercent" Elektita="$PercentStalled"/> <Xsl:Kun-param Nomo="QueryFilterFieldName" Elektita="'Statuso'"/> <Xsl:Kun-param Nomo="QueryFilterFieldValue" Elektita="'Ekhaltis'"/> <Xsl:Kun-param Nomo="TotalItems" Elektita="$TotalStalled"></Xsl:Kun-param> </Xsl:Voko-ŝablono> <Xsl:Voko-ŝablono Nomo="ShowBar"> <Xsl:Kun-param Nomo="BarDisplayLabel" Elektita="'En Procezo'"/> <Xsl:Kun-param Nomo="BarPercent" Elektita="$PercentInProcess"/> <Xsl:Kun-param Nomo="QueryFilterFieldName" Elektita="'Statuso'"/> <Xsl:Kun-param Nomo="QueryFilterFieldValue" Elektita="'En Procezo'"/> <Xsl:Kun-param Nomo="TotalItems" Elektita="$TotalInProcess"></Xsl:Kun-param> </Xsl:Voko-ŝablono> </Tablo> </Td> </Tr> </Tablo> </Xsl:Alie> </Xsl:Elekti> </Xsl:Ŝablono> <!-- Ĉi tiu ŝablono faras la laboron montri individuajn liniojn en la bara grafeo. Vi verŝajne faros plejparto de via tweaking ĉi tie. --> <Xsl:Ŝablono Nomo="ShowBar"> <Xsl:Param Nomo="BarDisplayLabel" /> <!-- Etikedi montri --> <Xsl:Param Nomo="BarPercent"/> <!-- Procento de totalo. --> <Xsl:Param Nomo="QueryFilterFieldName"/> <!-- Uzita salti al la demando & Filtrilo --> <Xsl:Param Nomo="QueryFilterFieldValue"/> <!-- Uzita salti al la demando & Filtrilo --> <Xsl:Param Nomo="TotalItems" /> <!-- Totala kalkulo de ĉi tiu barlabel --> <Tr> <!-- La baro etikedas ĝin mem. --> <Td Klaso="Ms-formbody" Larĝo="30%"> <!-- Tio ĉi poste fiksita de komunikaĵoj konstruas demandan ŝnuron kiu permesas nin bori malsupren al filtrita vidon de la fundamenta datumo. Ni faras uzon de kelkaj aferoj ĉi tie: 1. Ni povas pasi FilterField1 kaj FilterValue1 al listo filtri sur kolumno. 2. SharePoint estas pasanta kernan parametron al ni, ListUrlDir kiu indikas al la fundamenta listo kontraŭ kiu ĉi tiu DVWP estas "kuranta". Ne estas XSLa amuzo? --> <Xsl:Teksto Malfunkciigi-produktado-evitanta="Jes"> <![CDATA[<href="]]></Xsl:Teksto> <Xsl:Valoro-de Elektita="$ListUrlDir"/> <Xsl:Teksto Malfunkciigi-produktado-evitanta="Jes"><![CDATA[?FilterField1=]]></Xsl:Teksto> <Xsl:Valoro-de Elektita="$QueryFilterFieldName"/> <Xsl:Teksto Malfunkciigi-produktado-evitanta="Jes"><![CDATA[&FilterValue1=]]></Xsl:Teksto> <Xsl:Valoro-de Elektita="$QueryFilterFieldValue"/> <Xsl:Teksto Malfunkciigi-produktado-evitanta="Jes"><![CDATA[">]]></Xsl:Teksto> <Xsl:Valoro-de Elektita="$BarDisplayLabel"/> <Xsl:Teksto Malfunkciigi-produktado-evitanta="Jes"><![CDATA[</al>]]></Xsl:Teksto> <!-- La sekvanta peco montras kelkajn nombrojn en la formato: "(Totala / % De totalo)" --> (<Xsl:Valoro-de Elektita="$TotalItems"/> / <!-- Tio ĉi kreas belan procentan etikedon por ni. Dankonas, Microsoft! --> <Xsl:Voko-ŝablono Nomo="Percentformat"> <Xsl:Kun-param Nomo="Procento" Elektita="$BarPercent"/> </Xsl:Voko-ŝablono>) </Td> <!-- Fine, Emanigi <Td> Etikedo por la baro ĝi mem.--> <Td> <Tablo Cellpadding="0" Cellspacing="0" Landlimo="0" Larĝo="{Rondo($BarPercent100)+1}%"> <Tr Bgcolor="Ruĝa"> <Xsl:Teksto Malfunkciigi-produktado-evitanta="Jes"><![CDATA[&Nbsp;]]></Xsl:Teksto> </Tr> </Tablo> </Td> </Tr> </Xsl:Ŝablono> <!-- Tio ĉi estas prenita rekte de #kelka XSL mi trovis en F-ina ŝablono. --> <Xsl:Ŝablono Nomo="Percentformat"> <Xsl:Param Nomo="Procento"/> <Xsl:Elekti> <Xsl:Kiam Testo="Formato-nombro($Procento, '#,##0%;-#,##0%')= 'NaN'">0%</Xsl:Kiam> <Xsl:Alie> <Xsl:Valoro-de Elektita="Formato-nombro($Procento, '#,##0%;-#,##0%')" /> </Xsl:Alie> </Xsl:Elekti> </Xsl:Ŝablono> </Xsl:Stylesheet>

La Rezultoj:

La XSL de sur produktas ĉi tiun grafeon:

Bildo

Bori malsupren al la fundamenta datumo de klakanta sur la statusa kodo:

Bildo

Konkludanta Pensojn:

Povas Tion ĉi Esti Induktita?

Mi amas ĉi tiu graphing koncepto, Sed mi malamas la fakton ke mi devi eniri kaj tiel fari multe da manon-kodiĝo. Mi donis malgrandan penson al ĉu ĝi povas esti induktita kaj mi estas optimisma, Sed mi estas ankaŭ malgranda maltrankvila ke tie povas esti brika muro ie laŭ la vojo kiu ne proponos ajnan laboron-proksimume. Se iu ajn havas kelkajn bonajn ideojn sur tio ĉi, Bonvolu fari noton en la rimarkoj aŭ Retpoŝtigi min.

Vertikalaj Grafeoj:

Tio ĉi estas horizontala bara grafeo. Ĝi estas certe ebla krei vertikalan grafeon. Ni nur devas ŝanĝi la HTML. Mi komencus la saman vojon: Krei HTMLan reprezentadon de vertikala bara grafeo kaj tiam elkalkuli kiel akiri ke tra XSL. Se iu ajn estas interesita en tio, Mi povus esti persvadita provi ĝin ekstere kaj eliri la kinks. Se iu jam faris tion, please let me know and I’ll gladly link to your blog 🙂

Mi pensas ke defio kun vertikala grafeo estas ke la etikedoj por la grafeo estas pli malfacila administri, Sed certe ne neebla.

Kampa Nomo Gotcha-a:

Estas almenaŭ du aferoj rigardi ekstere por kun viaj kampaj nomoj.

Unue, Kampa nomo kun spaco devas esti evitita en la XSL. Tio ĉi verŝajne estos afero ĉi tie:

        <Xsl:Varia Nomo="TotalProposed" 
Elektita="Kalkulo(/DsQueryResponse/Disputa/Disputo[Normaligi-spaco(@Statuso) = 'Farota'])" />

Se via "Statuso" Kolumno estas efektive nomita "Statusan Kodon" Tiam vi devas referenci ĝin kiel "Statuso_x0020_Kodo":

   <Xsl:Varia Nomo="TotalProposed" 
Elektita="Kalkulo(/DsQueryResponse/Disputa/Disputo[Normaligi-spaco(@Statuso_x0020_Kodo) = 'Farota'])" />

Due, Kaj mi estas malgranda malpreciza sur tio ĉi, Sed vi ankaŭ devas esti sur la atentigo por kampa nomo ŝanĝoj. Se vi nomas vian kampan "Statusan Kodon" Kaj tiam poste sur, Renomi ĝin al "AFEa Statuso", La "interna nomo" Ne ŝanĝas. La interna nomo ankoraŭ estos "Statusa Kodo" Kaj devas esti referencita kiel "Statuso_x0020_Kodo". La "aliaj rimedoj" Ligoj povas helpi diagnozi kaj ĝustigi ĉi tiun specon de problemo.

Pri tiu Koloro:

Mi elektis "ruĝan" Ĉar ĝi estas plaĉanta al mi ĉe la momento. Ĝi ne estus granda interkonsento montri malsamajn kolorojn por provizi pli da ol nur vida priskribo de nombro, Sed ankaŭ provizi utilan KPI. Ekzemple, Se la procento de "ekhaltita" AFE-a estas > 10% Tiam montri ĝin ruĝa, Alie montri ĝin en nigrulo. Uzo <Xsl:Elekti> Plenumi tion ĉi.

Aliaj Rimedoj:

Feliĉa transformanta!

<Fino/>

Aboni al mia blogo!

SharePoint Ne Provizas “Kiu Havas Aliron” Raportoj

ĜISDATIGO 01/28/08: Ĉi tiu codeplex projekto traktas ĉi tiun aferon: http://www.codeplex.com/AccessChecker. Mi ne uzis ĝin, Sed ĝi rigardas promesanta se tio ĉi estas afero vi devas trakti en via medio.

ĜISDATIGO 11/13/08: Joel Oleson skribis supre tre bona poŝto sur la granda sekureca administrada afero ĉi tie: Http://Www.sharepointjoel.com/lists/posts/post.aspx?Enlistigi=0cd1a63d-183c-4fc2-8320-ba5369008acb&#IDENTIGA?O=113. Ĝi ligas al nombro de aliaj utilaj rimedoj.

forumaj uzantoj kaj klientoj ofte demandas demandon #la? #?i tiu linioj: "Kiel mi produktas listo de #?iuj uzantoj kun aliro al ejo" #A? "Kiel povas min #a?tomate atentigi #?iuj uzantoj kun aliro enlistigi pri #?an?o farita al la listo?"

Estas ne ekstere de la skatola solvo por tio ĉi. Se vi pensas pri ĝi momente, ?i?? Ne malfacile kompreni kial.

SharePoint sekureco estas tre fleksebla. Estas almenaŭ kvar gravaj kategorioj de uzantoj:

  • Anonimaj uzantoj.
  • SharePoint Uzantoj kaj Grupoj.
  • Aktivaj Adresaraj uzantoj.
  • Formas Bazita Authentication (FBA) Uzantoj.

La fleksebleco signifas ke de sekureca perspektivo, Iu ajn donita SharePoint ejo estos draste malsama de alia. Por produkti aliran listan raporton, Unu bezonoj konstati kiel la ejon estas sekurigita, Pridemandi multoblan malsaman uzanton profilaj deponejoj kaj tiam prezenti ĝin en utila modo. Tio estas malfacila problemo solvi generically.

Kiel estas organizoj traktanta #tio ?i? Mi amus aŭdi de vi en rimarkoj aŭ Retpoŝto.

</Fino>

Technorati Etikedoj: ,