Visão geral:
(ATUALIZAÇÃO 12/04/07: Adicionado um outro recurso interessante no final ligando para outro blog que aborda esta via uma parte muito interessante do web)
Esta entrada de blog descreve como criar um gráfico de barras no SharePoint. Isso funciona em ambientes WSS e o MOSS como depende apenas do web part de exibição de dados.
A abordagem geral é a seguinte:
- Criar uma lista ou biblioteca de documentos que contém os dados que você deseja gráfico.
- Lugar da biblioteca de documento associado / personalizado lista em uma página e convertê-lo em uma web part de exibição de dados (DVWP).
- Modificar XSL do DVWP para gerar HTML que mostra como um gráfico.
Cenário de negócios / Instalação:
Eu criei uma lista personalizada com a coluna de título padrão e uma coluna adicional, "Status". Este modelos (muito simplista) uma "autorização de despesa" cenário onde o título representa o projeto e o Status de um valor da lista de:
- Propõe-se
- No processo de
- Parado
O objetivo é produzir um gráfico de barras horizontal interativo que mostra esses códigos de status.
Eu ter preenchido a lista e parece que isso:
Criar a Web Part de exibição de dados:
Criar o DVWP adicionando a lista personalizada para uma página (página do site no meu caso) e siga as instruções here (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).
Além de simplesmente criar o DVWP, Precisamos também definir a propriedade de paginação para mostrar todas as linhas disponíveis. Para mim, Isto é algo como isto:
Neste ponto, Eu sempre fecho SPD e o navegador. Então re-abrir a página usando o navegador. Isso evita que acidentalmente estragar o layout de parte da web na página.
Modificar o XSLT:
Agora é hora de modificar o XSLT.
Sempre usar visual studio para isso. (Consulte here para uma nota importante sobre intellisense que irá ajudá-lo muito).
Criar um projeto vazio adicionar quatro novos arquivos (substituindo as palavras "Original" e "nova" conforme o caso):
- Original.XSLT
- New.XSLT
- Etcconfig_datadeployment original
- Nova etcconfig_datadeployment
No meu caso, Ele se parece com isso:
Modificar a web part e copiar o params e XSL para o Original"" versão em Visual Studio.
O objetivo aqui é fazer com que o XSL transformar os resultados de que voltarmos da consulta DVWP em HTML que processa como um gráfico.
Para este fim., ajuda a primeiro considerar o que o HTML deve olhar como antes nós ficar confuso pela loucura que é conhecida como "XSL". (Para ser claro, é simplesmente um exemplo; não digitar ou copiar/colar em visual studio. Eu forneço um golpe completo, ponto de partida para que mais tarde no write-up). O gráfico de exemplo a seguir é processado conforme o HTML imediatamente após:
HTML correspondente:
<HTML> <corpo> <Centro> <largura da tabela = 80%> <TR><TD><Centro>Gráfico de barras horizontais</TD></TR> <TR> <TD align = "center"> <borda de tabela = "1" largura = 80%> <TR> <TD largura = 10%>Aberto</TD> <TD><tabela cellpadding ="0" CellSpacing ="0" border = 0 width = 50%><TR bgcolor = vermelho><TD> </TD></TR></tabela></TD> </TR> <TR> <TD largura = 10%>Fechado</TD> <TD><tabela cellpadding ="0" CellSpacing ="0" border = 0 width = 25%><TR bgcolor = vermelho><TD> </TD></TR></tabela></TD> </TR> <TR> <TD largura = 10%>Parado</TD> <TD><tabela cellpadding ="0" CellSpacing ="0" border = 0 width = 25%><TR bgcolor = vermelho><TD> </TD></TR></tabela></TD> </TR> </tabela> </TD> </TR> </tabela> </corpo> </HTML> |
Eu usei uma abordagem absolutamente simples para criar minhas barras definindo a cor de fundo de uma linha para "red".
Trata-se aqui o Take-Away: No final, todos nós estamos fazendo é criar o HTML com linhas e colunas.
Modelo XSLT:
Eu copiei o XSLT que gera um gráfico de barras horizontal. É razoavelmente bem para não adicionar muito aqui exceto para estas notas, comentou:
- Eu comecei com o padrão XSL que me deu quando eu criei primeiro a DVWP SharePoint Designer.
- Eu era capaz de reduzir este partir do SPD 657 linhas de 166 linhas.
- Eu não mexer com o arquivo XML de parâmetros (que é separado do XSL e você saberá o que quero dizer quando você vai para modificar o DVWP em si; Existem dois arquivos que você pode modificar). No entanto, a fim de simplificar as coisas, Para remover quase todos eles de XSL. Isto significa que se você quiser fazer uso desses parâmetros, Você só precisa adicionar suas definições de variável para o XSL. Isso vai ser fácil, pois você terá as definições de variável XSL originais em seu projeto visual studio.
- Você precisa ser capaz de copiar e cole-o diretamente no seu projeto visual studio. Em seguida, remover minhas ligações e inserir suas próprias chamadas para "ShowBar".
- A broca para baixo funciona através da criação de um <a href> Assim: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. Esta técnica pode ser de valor em outros contextos. Em primeiro lugar, Eu pensei que eu precisaria de acordo com um formato mais complexo: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, Mas em meu ambiente que não é necessário. URL a lista é passado para pelo SharePoint, então isso é muito fácil generalizar.
Aqui é...:
<XSL:StyleSheet Versão="1.0" excluir-resultado-prefixos="RS z ó s ddwrt dt msxsl" |
Os resultados:
O XSL de cima gera este gráfico:
Detalhar os dados subjacentes, clicando sobre o código de status:
Pensamentos finais:
Isto pode ser generalizado?
Eu amo este conceito gráfico, Mas eu odeio o fato de que eu tenho que entrar e fazer tanta mão-codificação. Pensei um pouco para se pode ser generalizada e estou otimista, Mas também estou um pouco temeroso de que pode haver uma parede de tijolos em algum lugar ao longo do caminho que não oferece qualquer forma de contornar. Se alguém tiver ideias sobre este, por favor faça uma nota nos comentários ou correio eletrónico a mim.
Gráficos verticais:
Este é um gráfico de barras horizontal. É certamente possível criar um gráfico vertical. Só precisamos alterar o HTML. Eu começaria da mesma forma: Criar uma representação de HTML de um gráfico de barras vertical e então descobrir como conseguir isso através de XSL. Se alguém estiver interessado em que, Eu poderia ser persuadido para experimentá-lo e trabalhar as arestas. Se alguém já fez isso, por favor, deixe-me saber e terei prazer em vincular ao seu blog 🙂
Acho que o desafio com um gráfico vertical é que os rótulos de gráfico são mais difíceis de gerenciar, Mas certamente não é impossível.
Do campo nome Gotcha:
Há pelo menos duas coisas para procurar com seus nomes de campo.
Primeira, um nome de campo com um espaço tem que ser antecedidas na XSL. Este provavelmente será um problema aqui:
<XSL:variável nome="totalProposed"
Selecione="contagem(/dsQueryResponse/linhas/linha[Normalizar-espaço(@Status) = 'Proposta'])" />
Se seu Status"" coluna na verdade é chamada "código de Status" Então você precisa fazer referência a ele como "Status_x0020_Code":
<XSL:variável nome="totalProposed"
Selecione="contagem(/dsQueryResponse/linhas/linha[Normalizar-espaço(@Status_x0020_Code) = 'Proposta'])" />Segundo, e estou um pouco confuso com isto, Mas você também precisa estar alerta para alterações de nome de domínio. Se o nome de seu campo "código de Status" e, posteriormente, na, Renomeie-o para "AFE Status", o nome"interno" Não muda. O nome interno ainda será o código de Status"" e deve ser referenciada como "Status_x0020_Code". Os "outros recursos" links podem ajudar a diagnosticar e corrigir esse tipo de problema.
Sobre essa cor:
Eu escolhi "vermelho" Porque é agradável para mim no momento. Não seria um grande negócio para mostrar cores diferentes a fim de fornecer mais do que apenas uma descrição visual de um número, Mas também fornecer um KPI útil. Por exemplo, se a percentagem de "parado" AFE é > 10% em seguida, mostrar vermelho, caso contrário, mostrá-lo em preto. Utilização <XSL:Escolha> para realizar essa tarefa.
Outros recursos:
- Determinar o nome interno (e outras boas informações.) para os dados em uma lista: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!134.entry
- Mostrar todos os dados fornecidos pelo SharePoint (o XML bruto): http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!190.entry
- Se a expressão XPATH de uma coluna específica: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!155.entry
- Outra abordagem usando o OWA(?). Não escavei nela, Mas parece promissor, especialmente para gráficos de pizza: http://www.waka.dk/Blog/PermaLink,guid,e2532e71-d774-4ac9-8f25-883964b830f4.aspx
Transformando feliz!
<final />