This project is read-only.

FoxCharts - How to contribute

Topics: Attention VFPX Admins
Nov 16, 2011 at 3:14 PM

Hi,

I am currently adding some functionality to the FoxCharts classes and would like to know what I need to do to

- contribute (upload) this when done

- make sure no one else is also currently modifying the classes

I added a comment in the FoxCharts-section a few months ago, but got no response.

Thanks

kind regards from Berlin

Frank

 

 

 

 

Nov 16, 2011 at 5:46 PM

Hi Frank,

You should send your contribution to the project manager.  Per the FoxCharts page: Project Manager is Cesar, who can be reached at: vfpimaging {-at-} hotmail {dot-here} com

Joel

Nov 16, 2011 at 6:27 PM

Joel,

thanks, I'll do that

 

Frank

Nov 16, 2011 at 11:49 PM

Hi Frank,

I'm sorry, I didn't see your message. In fact, CodePlex does not notify us when such messages are received. Thanks for your interest in contributing. In what exactly are you working on with FoxCharts ?

The latest version is 2.30. Please make sure to be working on it.

Hope to hear from you.

Cesar

Nov 17, 2011 at 12:47 PM

Hi Cesar,

>> The latest version is 2.30. Please make sure to be working on it.

yes, sure I'm working on the latest downloadable Version.

This is what I have done so far:

  1. I've added additional properties (xAxisLegendEvery, xAxisLegendEveryOffset, VerticalBackLineEvery and VerticalBackLineEveryOffset)
    Setting those allows to add some "air" to the X-Axis-legend and background and better readability on longer time- or dataseries.
    The following two screenshots show the difference on a monthly day-sales-report

    xAxisLegendEvery=1, VerticalBackLineEvery=1


    xAxisLegendEvery=2, VerticalBackLineEvery=2

     

  2. The next thing was a little more tricky to implement, but works marvelous now.
    I wanted to be able to conditionally hide the one or the other graph without the need for a modified data-request.
    Imagine You have a salesreport of the different weekdays over the past few months where Saturdays do extremely
    well and You directly want to compare Tuesday and Wednesday that appear almost equal due to the Saturday distortion.
    Or You (=the user) just want to "play" with the data and isolate the one or the other graph.

    So I extended the fields()-collection by adding an additional Property .HideGraph.
    If set to true, this data group will be excluded from the min/max calculation as well as from drawing but will appear in the
    sideLegend with a lighter color and StrikeThrough.

    Bound to the Click-Event it's now very easy to switch graphs on and off by simply clicking the chart's legend.
    Compare the previous and the following chart for the effect.


    All needed is to add something like the following code to the Click-Event:

    with this.FoxCharts
        if upper(.CurObjType)=="LEGEND" and ! .SingleData
             *-- toggle hiding
            .Fields(.CurrColumn).HideGraph = ! .Fields(.CurrColumn).HideGraph   
           
            *-- some checking to prevent deactivation of all graphs here
           
            *-- and repaint
            .DrawChart   
         endif
    endwith


    This is also useful in 3D-Bars, when a data-series is hiding columns with lower values

     



  3. I have started to create a FoxCharts.h - file holding the constants used throughout the class like CharTypes, BrushTypes etc.
    it's not included yet, but I think it would be a good thing to use it within the class as well as when using the class.
    "if .ChartType = FoxChartsChartTypeLines" is more easy to read and maintain than "if .ChartType=5" especially when You're
    not deep into it. Also, if ever necessary, changing becomes a lot more easy.

    I've also added some comments to the code (not many though) while I was workig my way through the code in order to make
    the second addition work.

 

Other things, I would like to do is:

- add an "autodetect"-option to the xAxisLegendEvery Property. So that the xAxis-legend is spaced nicely automatically

- add the ability to manually sort the .fields()-collection. So that the user can "BringToFront" and "MoveToBack" indivdual data-series
according to their needs.

 

That's it so far. Hope You like it.

Regards from Berlin

Frank

Nov 18, 2011 at 4:41 PM
Hello Frank, Jim, Karl, Koen and Fabio,
Thanks for your messages, and for your interest in heklping in the FoxCharts development and improvement.
I'm including in this message some of the persons who participated in the FoxCharts development in certain moments, so let me introduce you all:
  • Jim Nelson - joined me in this project since the beginning, and provided very important help coding specially at the scales and getting properties features.
  • Koen Piller - probably the person who did most of the tests with the tool, and provided very important help in the documentation. For sure, he probably knows the features we have better than me Smiley Emoticon
  • Karl Schiermann - from Germany as well, he created a new chart type for FoxCharts - for drawing (x,y) points, that I unfortunately could not make the needed tests, and apply in the latest version. That's a very cool feature, and I'm really ashamed of him, for not giving him the support he really deserved, for a great feature.
  • Fabio Vieira - an old friend from the brazilian VFP group, he worked with Karl's latest version, making some tests and improvements, but I'm not sure on how far he went on this.
First of all, I need to apologize for leaving this project during the last year. It happens that I got deeply involved in another project, that took from me all the free time that I had, but now things are getting clear now.
The proposed features from Frank of course interest me, and the whole community.
Koen Piller also called my attention to a bug in the main sample.
What I'd like to ask you all is first to know if you're still interested in working together on this bringing the newest features to FoxCharts, and applying fixes for some few bugs that appeared since the last release.
I remember just a couple.
So, what I think FoxCharts needs right now is:
1 - Include Karl's XY chart type
2 - Update it with Fabio Vieira's updates
3 - Include Frank's last updates
4 - Enhance the error messages. FoxCharts works great, but some friends get lost sometimes when they want to set some properties manually, without using one of the builders. I think I need to make more checkings
5 - Include a new chart type, for gauge charts. The engine is ready, this would certainly be my part.
6 - Code revision - Add "mDots" to all variables.
7 - Code revision - Run Code Analyst to remove some critical codes
8 - Fix the samples, and create new ones
9 - Update the main samples, adding the new chart types, and features from the newest version
10 - Update Jim's builders, adding the new chart types, and features from the newest version
11 - Update the documentation
I know the list is extensive, and there would mean some some work, but as always, this could be done with time, step by step, feature after feature.
Are you interested in this ?
I hope to hear from you, comments, etc...
Best regards
Cesar Chalom

From: [email removed]
Sent: Thursday, November 17, 2011 10:47 AM
To: [email removed]
Subject: Re: FoxCharts - How to contribute [VFPX:279658]

From: DDTech

Hi Cesar,

>> The latest version is 2.30. Please make sure to be working on it.

yes, sure I'm working on the latest downloadable Version.

This is what I have done so far:

  1. I've added additional properties (xAxisLegendEvery, xAxisLegendEveryOffset, VerticalBackLineEvery and VerticalBackLineEveryOffset)
    Setting those allows to add some "air" to the X-Axis-legend and background and better readability on longer time- or dataseries.
    The following two screenshots show the difference on a monthly day-sales-report

    xAxisLegendEvery=1, VerticalBackLineEvery=1


    xAxisLegendEvery=2, VerticalBackLineEvery=2

  2. The next thing was a little more tricky to implement, but works marvelous now.
    I wanted to be able to conditionally hide the one or the other graph without the need for a modified data-request.
    Imagine You have a salesreport of the different weekdays over the past few months where Saturdays do extremely
    well and You directly want to compare Tuesday and Wednesday that appear almost equal due to the Saturday distortion.
    Or You (=the user) just want to "play" with the data and isolate the one or the other graph.

    So I extended the fields()-collection by adding an additional Property .HideGraph.
    If set to true, this data group will be excluded from the min/max calculation as well as from drawing but will appear in the
    sideLegend with a lighter color and StrikeThrough.

    Bound to the Click-Event it's now very easy to switch graphs on and off by simply clicking the chart's legend.
    Compare the previous and the following chart for the effect.


    All needed is to add something like the following code to the Click-Event:

    with this.FoxCharts
    if upper(.CurObjType)=="LEGEND" and ! .SingleData
    *-- toggle hiding
    .Fields(.CurrColumn).HideGraph = ! .Fields(.CurrColumn).HideGraph

    *-- some checking to prevent deactivation of all graphs here

    *-- and repaint
    .DrawChart
    endif
    endwith


    This is also useful in 3D-Bars, when a data-series is hiding columns with lower values



  3. I have started to create a FoxCharts.h - file holding the constants used throughout the class like CharTypes, BrushTypes etc.
    it's not included yet, but I think it would be a good thing to use it within the class as well as when using the class.
    "if .ChartType = FoxChartsChartTypeLines" is more easy to read and maintain than "if .ChartType=5" especially when You're
    not deep into it. Also, if ever necessary, changing becomes a lot more easy.

    I've also added some comments to the code (not many though) while I was workig my way through the code in order to make
    the second addition work.

Other things, I would like to do is:

- add an "autodetect"-option to the xAxisLegendEvery Property. So that the xAxis-legend is spaced nicely automatically

- add the ability to manually sort the .fields()-collection. So that the user can "BringToFront" and "MoveToBack" indivdual data-series
according to their needs.

That's it so far. Hope You like it.

Regards from Berlin

Frank

Nov 18, 2011 at 4:53 PM
Cesar --

Of course I am interested. I will do whatever I can, when I can. There are a few other things to occupy my time these days, too.

Apparently, I have no experience in saying NO. (Too bad, when I was young, that I did not know more girls with the same problem)



On Fri, Nov 18, 2011 at 8:42 AM, VfpImaging <notifications@codeplex.com> wrote:

From: VfpImaging

Hello Frank, Jim, Karl, Koen and Fabio,
Thanks for your messages, and for your interest in heklping in the FoxCharts development and improvement.
I'm including in this message some of the persons who participated in the FoxCharts development in certain moments, so let me introduce you all:
  • Jim Nelson - joined me in this project since the beginning, and provided very important help coding specially at the scales and getting properties features.
  • Koen Piller - probably the person who did most of the tests with the tool, and provided very important help in the documentation. For sure, he probably knows the features we have better than me Smiley Emoticon
  • Karl Schiermann - from Germany as well, he created a new chart type for FoxCharts - for drawing (x,y) points, that I unfortunately could not make the needed tests, and apply in the latest version. That's a very cool feature, and I'm really ashamed of him, for not giving him the support he really deserved, for a great feature.
  • Fabio Vieira - an old friend from the brazilian VFP group, he worked with Karl's latest version, making some tests and improvements, but I'm not sure on how far he went on this.
First of all, I need to apologize for leaving this project during the last year. It happens that I got deeply involved in another project, that took from me all the free time that I had, but now things are getting clear now.
The proposed features from Frank of course interest me, and the whole community.
Koen Piller also called my attention to a bug in the main sample.
What I'd like to ask you all is first to know if you're still interested in working together on this bringing the newest features to FoxCharts, and applying fixes for some few bugs that appeared since the last release.
I remember just a couple.
So, what I think FoxCharts needs right now is:
1 - Include Karl's XY chart type
2 - Update it with Fabio Vieira's updates
3 - Include Frank's last updates
4 - Enhance the error messages. FoxCharts works great, but some friends get lost sometimes when they want to set some properties manually, without using one of the builders. I think I need to make more checkings
5 - Include a new chart type, for gauge charts. The engine is ready, this would certainly be my part.
6 - Code revision - Add "mDots" to all variables.
7 - Code revision - Run Code Analyst to remove some critical codes
8 - Fix the samples, and create new ones
9 - Update the main samples, adding the new chart types, and features from the newest version
10 - Update Jim's builders, adding the new chart types, and features from the newest version
11 - Update the documentation
I know the list is extensive, and there would mean some some work, but as always, this could be done with time, step by step, feature after feature.
Are you interested in this ?
I hope to hear from you, comments, etc...
Best regards
Cesar Chalom

From: [email removed]
Sent: Thursday, November 17, 2011 10:47 AM
To: [email removed]
Subject: Re: FoxCharts - How to contribute [VFPX:279658]

From: DDTech

Hi Cesar,

>> The latest version is 2.30. Please make sure to be working on it.

yes, sure I'm working on the latest downloadable Version.

This is what I have done so far:

  1. I've added additional properties (xAxisLegendEvery, xAxisLegendEveryOffset, VerticalBackLineEvery and VerticalBackLineEveryOffset)
    Setting those allows to add some "air" to the X-Axis-legend and background and better readability on longer time- or dataseries.
    The following two screenshots show the difference on a monthly day-sales-report

    xAxisLegendEvery=1, VerticalBackLineEvery=1


    xAxisLegendEvery=2, VerticalBackLineEvery=2

  2. The next thing was a little more tricky to implement, but works marvelous now.
    I wanted to be able to conditionally hide the one or the other graph without the need for a modified data-request.
    Imagine You have a salesreport of the different weekdays over the past few months where Saturdays do extremely
    well and You directly want to compare Tuesday and Wednesday that appear almost equal due to the Saturday distortion.
    Or You (=the user) just want to "play" with the data and isolate the one or the other graph.

    So I extended the fields()-collection by adding an additional Property .HideGraph.
    If set to true, this data group will be excluded from the min/max calculation as well as from drawing but will appear in the
    sideLegend with a lighter color and StrikeThrough.

    Bound to the Click-Event it's now very easy to switch graphs on and off by simply clicking the chart's legend.
    Compare the previous and the following chart for the effect.


    All needed is to add something like the following code to the Click-Event:

    with this.FoxCharts
    if upper(.CurObjType)=="LEGEND" and ! .SingleData
    *-- toggle hiding
    .Fields(.CurrColumn).HideGraph = ! .Fields(.CurrColumn).HideGraph

    *-- some checking to prevent deactivation of all graphs here

    *-- and repaint
    .DrawChart
    endif
    endwith


    This is also useful in 3D-Bars, when a data-series is hiding columns with lower values



  3. I have started to create a FoxCharts.h - file holding the constants used throughout the class like CharTypes, BrushTypes etc.
    it's not included yet, but I think it would be a good thing to use it within the class as well as when using the class.
    "if .ChartType = FoxChartsChartTypeLines" is more easy to read and maintain than "if .ChartType=5" especially when You're
    not deep into it. Also, if ever necessary, changing becomes a lot more easy.

    I've also added some comments to the code (not many though) while I was workig my way through the code in order to make
    the second addition work.

Other things, I would like to do is:

- add an "autodetect"-option to the xAxisLegendEvery Property. So that the xAxis-legend is spaced nicely automatically

- add the ability to manually sort the .fields()-collection. So that the user can "BringToFront" and "MoveToBack" indivdual data-series
according to their needs.

That's it so far. Hope You like it.

Regards from Berlin

Frank

Read the full discussion online.

To add a post to this discussion, reply to this email (VFPX@discussions.codeplex.com)

To start a new discussion for this project, email VFPX@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com




--
Jim Nelson
(805) 498-9195 (voice + fax)
(720) 837-3536 (cell)
Nov 18, 2011 at 6:13 PM
Cesar,

Yes I am in you can count on me.

Regards,

Koen
++

2011/11/18 JimRNelson <notifications@codeplex.com>

From: JimRNelson

Cesar --

Of course I am interested. I will do whatever I can, when I can. There are a few other things to occupy my time these days, too.

Apparently, I have no experience in saying NO. (Too bad, when I was young, that I did not know more girls with the same problem)



On Fri, Nov 18, 2011 at 8:42 AM, VfpImaging <notifications@codeplex.com> wrote:

From: VfpImaging

Hello Frank, Jim, Karl, Koen and Fabio,
Thanks for your messages, and for your interest in heklping in the FoxCharts development and improvement.
I'm including in this message some of the persons who participated in the FoxCharts development in certain moments, so let me introduce you all:
  • Jim Nelson - joined me in this project since the beginning, and provided very important help coding specially at the scales and getting properties features.
  • Koen Piller - probably the person who did most of the tests with the tool, and provided very important help in the documentation. For sure, he probably knows the features we have better than me Smiley Emoticon
  • Karl Schiermann - from Germany as well, he created a new chart type for FoxCharts - for drawing (x,y) points, that I unfortunately could not make the needed tests, and apply in the latest version. That's a very cool feature, and I'm really ashamed of him, for not giving him the support he really deserved, for a great feature.
  • Fabio Vieira - an old friend from the brazilian VFP group, he worked with Karl's latest version, making some tests and improvements, but I'm not sure on how far he went on this.
First of all, I need to apologize for leaving this project during the last year. It happens that I got deeply involved in another project, that took from me all the free time that I had, but now things are getting clear now.
The proposed features from Frank of course interest me, and the whole community.
Koen Piller also called my attention to a bug in the main sample.
What I'd like to ask you all is first to know if you're still interested in working together on this bringing the newest features to FoxCharts, and applying fixes for some few bugs that appeared since the last release.
I remember just a couple.
So, what I think FoxCharts needs right now is:
1 - Include Karl's XY chart type
2 - Update it with Fabio Vieira's updates
3 - Include Frank's last updates
4 - Enhance the error messages. FoxCharts works great, but some friends get lost sometimes when they want to set some properties manually, without using one of the builders. I think I need to make more checkings
5 - Include a new chart type, for gauge charts. The engine is ready, this would certainly be my part.
6 - Code revision - Add "mDots" to all variables.
7 - Code revision - Run Code Analyst to remove some critical codes
8 - Fix the samples, and create new ones
9 - Update the main samples, adding the new chart types, and features from the newest version
10 - Update Jim's builders, adding the new chart types, and features from the newest version
11 - Update the documentation
I know the list is extensive, and there would mean some some work, but as always, this could be done with time, step by step, feature after feature.
Are you interested in this ?
I hope to hear from you, comments, etc...
Best regards
Cesar Chalom

From: [email removed]
Sent: Thursday, November 17, 2011 10:47 AM
To: [email removed]
Subject: Re: FoxCharts - How to contribute [VFPX:279658]

From: DDTech

Hi Cesar,

>> The latest version is 2.30. Please make sure to be working on it.

yes, sure I'm working on the latest downloadable Version.

This is what I have done so far:

  1. I've added additional properties (xAxisLegendEvery, xAxisLegendEveryOffset, VerticalBackLineEvery and VerticalBackLineEveryOffset)
    Setting those allows to add some "air" to the X-Axis-legend and background and better readability on longer time- or dataseries.
    The following two screenshots show the difference on a monthly day-sales-report

    xAxisLegendEvery=1, VerticalBackLineEvery=1


    xAxisLegendEvery=2, VerticalBackLineEvery=2

  2. The next thing was a little more tricky to implement, but works marvelous now.
    I wanted to be able to conditionally hide the one or the other graph without the need for a modified data-request.
    Imagine You have a salesreport of the different weekdays over the past few months where Saturdays do extremely
    well and You directly want to compare Tuesday and Wednesday that appear almost equal due to the Saturday distortion.
    Or You (=the user) just want to "play" with the data and isolate the one or the other graph.

    So I extended the fields()-collection by adding an additional Property .HideGraph.
    If set to true, this data group will be excluded from the min/max calculation as well as from drawing but will appear in the
    sideLegend with a lighter color and StrikeThrough.

    Bound to the Click-Event it's now very easy to switch graphs on and off by simply clicking the chart's legend.
    Compare the previous and the following chart for the effect.


    All needed is to add something like the following code to the Click-Event:

    with this.FoxCharts
    if upper(.CurObjType)=="LEGEND" and ! .SingleData
    *-- toggle hiding
    .Fields(.CurrColumn).HideGraph = ! .Fields(.CurrColumn).HideGraph

    *-- some checking to prevent deactivation of all graphs here

    *-- and repaint
    .DrawChart
    endif
    endwith


    This is also useful in 3D-Bars, when a data-series is hiding columns with lower values



  3. I have started to create a FoxCharts.h - file holding the constants used throughout the class like CharTypes, BrushTypes etc.
    it's not included yet, but I think it would be a good thing to use it within the class as well as when using the class.
    "if .ChartType = FoxChartsChartTypeLines" is more easy to read and maintain than "if .ChartType=5" especially when You're
    not deep into it. Also, if ever necessary, changing becomes a lot more easy.

    I've also added some comments to the code (not many though) while I was workig my way through the code in order to make
    the second addition work.

Other things, I would like to do is:

- add an "autodetect"-option to the xAxisLegendEvery Property. So that the xAxis-legend is spaced nicely automatically

- add the ability to manually sort the .fields()-collection. So that the user can "BringToFront" and "MoveToBack" indivdual data-series
according to their needs.

That's it so far. Hope You like it.

Regards from Berlin

Frank

Read the full discussion online.

To add a post to this discussion, reply to this email (VFPX@discussions.codeplex.com)

To start a new discussion for this project, email VFPX@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com




--
Jim Nelson
(805) 498-9195 (voice + fax)
(720) 837-3536 (cell)

Read the full discussion online.

To add a post to this discussion, reply to this email (VFPX@discussions.codeplex.com)

To start a new discussion for this project, email VFPX@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe or change your settings on codePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at codeplex.com


Nov 19, 2011 at 10:42 PM
Edited Nov 19, 2011 at 10:45 PM

Hi Cesar,

>>  I know the list is extensive, and there would mean some some work, but as always, this could be done with time, step by step, feature after feature.
>> Are you interested in this ?

I'm very busy but, like Jim, not very good in saying "no" to things, I'm interested in. (Jim, You're right, girls seem to have no problems saying "no").
So, if I can be of help, let me know.

 

Meanwhile, I'm already a few steps further:

  • Meanwhile I implemented the "autodetect" functionality for the xAxisLegend.
    You can now set .xAxisLegendEvery to -1 and set .xAxisLegendEverySpacing to something like 25 (pixels)
    and the legend will always be build up depending on the space available.

    While we have have a legend text below each record on the following chart,



    a legend is drawn only every second record, as soon as I reduce the width of the chart and the available
    space per record drops below the 25pixel (or whatever set) mark:



  • A new method .FieldMoveBy() can now be called to reorder datagroups ( = .fields() ) in the 3D appearance



    .FieldMoveBy(2,1) moves the second field to the front (or up) by one level.




  • I realized that the area-chart (ChartType=6) is painted record by record while Stacked-Area
    and Full-Stacked-Area consist of one single polygon (with 3D-effects on a record basis).
    That's why the first one has a nice "sliced" appearance, the others don't show.
    I've added some code that draws "cuts" when .AreaDrawBorders=.T.
    The inner side-walls are not been drawn, but the appearance now is very similar.
    The previous chart shows the effect.

  • The Full-Stacked-Area crashed when all fields summed up to 0 as this led to a divide-by-zero-error.
    I fixed that.

  • >> ... 6 - Code revision - Add "mDots" to all variables.

    I've already done that for some of the snippets I've touched or whenever I fell over it.


  • The array for the basic colors is only a local variable and gets repopulated every time ._getBasicColor() is called. I'm not sure if this is on purpose.

  • There is an undocumented, but obviously fully implemented, .ColorType=4 for a palette with 184 colors.
  • I included the h-File and started to use it (carefully)
  • The new properties and methods have descriptions and have been added to the _memberdata

How is the documentation done? I always find it quite easy to document when You're excited and into the matter.

I could upload/send the modified class almost anytime, just let me know. There is currently not much open and the things I've done seem to work at first glance.

 

Have a wonderful weekend

 

Frank