Sum columns of certain rows of a sharepoint list and plot it to a Visifire Chart

Hi Experts!

I have a SharePoint list that contains (among other columns) a "Status" and "Discrepancy Value". Both are calculated columns. Example of the data is:

 sample data
I would like to plot a graph that will sum the "Discrepancy Value" column for each type of "Status". An example of the graph would be:

 Graph for sample data
I use Visifire graphs and SharePoint designer to usually plot graphs. Can you guys please assist?

Regards,
Kritesh.
k_harpaulAsked:
Who is Participating?
 
Gautham JanardhanConnect With a Mentor Commented:
xaml
<UserControl x:Class="TestComponentArtCombo.Chart" 
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
           mc:Ignorable="d">
    <Grid x:Name="LayoutRoot" 
          xmlns:DV="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
 xmlns:DVC="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
 >
        <TextBlock Text="test"/>
        <DVC:Chart x:Name="ChartControl" Width="400" Height="250"
           Background="AliceBlue" >
            <DVC:Chart.Series>
                <DVC:ColumnSeries Title="Disc value"
                                  IndependentValueBinding="{Binding Status}"
                            DependentValueBinding="{Binding DiscrepencyValue}">
                </DVC:ColumnSeries>
            </DVC:Chart.Series>
        </DVC:Chart>
    </Grid>
</UserControl>

Open in new window

0
 
quihongCommented:
What is the exact issue you are having? If you are having an issue with Visifire, I would suggest you contact them.
0
 
k_harpaulAuthor Commented:
Hi.

No issue with Visifire. I would like to know how to do it because there is no clear option for it. It must be coded and i'm not sure how to do it.

Regards,
Kritesh
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
Gautham JanardhanCommented:
Just to have a better understanding of the question what you need is just plot a graph using the data you have retrieved from Share point ?
Is it necessary that you need the graph in Visfire ?
I don't have much exp in MOSS and wont be able to help you in retrieving the data from there to SL but can help you with creating the graph in Silver light if you can get the data from MOSS
0
 
Gautham JanardhanCommented:
Also based on the assumption that we we not using Visfire  and you already have the data from Share point

data classes
public class SharepointData
    {
        public static ObservableCollection<Trans> GetData()
        {
            ObservableCollection<Trans> sales = new ObservableCollection<Trans>();

            sales.Add(new Trans() { DiscrepencyValue = 100, Status = "Completed" });
            sales.Add(new Trans() { DiscrepencyValue = 73, Status = "Waiting" });
            sales.Add(new Trans() { DiscrepencyValue = 12, Status = "Completed" });
            sales.Add(new Trans() { DiscrepencyValue = 24, Status = "OutStanding" });
            sales.Add(new Trans() { DiscrepencyValue = 22, Status = "Waiting" });
            sales.Add(new Trans() { DiscrepencyValue = 67, Status = "Waiting" });
            sales.Add(new Trans() { DiscrepencyValue = 9, Status = "OutStanding" });
            sales.Add(new Trans() { DiscrepencyValue = 59, Status = "Completed" });

            return sales;
        }
    }

    public class Trans
    {
        public string Status { get; set; }
        public int DiscrepencyValue { get; set; }
    }

Open in new window

0
 
Gautham JanardhanCommented:
xaml.cs
public partial class Chart : UserControl
    {
        ObservableCollection<Trans> TransData;
        public Chart()
        {
            InitializeComponent();

            TransData = FormatData(SharepointData.GetData());
            this.Loaded += new RoutedEventHandler(Chart_Loaded);
        }

        void Chart_Loaded(object sender, RoutedEventArgs e)
        {
            ((ColumnSeries)this.ChartControl.Series[0]).ItemsSource = TransData;
        }

        public ObservableCollection<Trans> FormatData(ObservableCollection<Trans> transData)
        {
            var grouped = transData.GroupBy<Trans, string>(new Func<Trans, string>(
                (value) =>
                {
                    return value.Status;
                }));
            ObservableCollection<Trans> trans = new ObservableCollection<Trans>();
            foreach (var item in grouped)
            {
                trans.Add(new Trans { DiscrepencyValue = (int)item.Sum(new Func<Trans,decimal>((c)=>(decimal)c.DiscrepencyValue)) , Status = item.Key });
            }
            return trans;
        }
    }

Open in new window

0
 
Gautham JanardhanCommented:
Also the charting is done using Silverlight tool kit  which you can download from http://silverlight.codeplex.com/
Once you have downloaded this you need add references to the ToolKit dll to your project.


0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.