Giter VIP home page Giter VIP logo

devexpressmods's People

Contributors

jnm2 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

devexpressmods's Issues

Replace Mode with OrderBy

Incremental mode (working at the on-print-demand level) will be deprecated and replaced with OrderBy (working at the data source level, like Immediate mode).

Summary fields are basically window functions. You pick an aggregation function, an expression to aggregate, a filter, a partition (previously Running, now will be PartitionBy), and either absence or presence of order by (previously Mode = Incremental):

With OrderBy = false, the default, same as Immediate mode had been:
[Func](case when [Filter] then [Expression] end) over (partition by [PartitionBy band])

With OrderBy = true, same as Incremental mode had been:
[Func](case when [Filter] then [Expression] end) over (partition by [PartitionBy band] order by [child report sort])

The issue with Incremental mode is that values are added to the summary on demand as the report is printed, which can have surprising side effects because this doesn't always correspond to seeing the value in a report row. By the same token, there is no way to get partial summaries without printing all the rows. Much better to calculate everything at the data source level.

Update Build for 16.1

I just came across this after finding your post on a support site. Could I just do a binding redirect to point to 16.1 or do we update the entire project?

Allow blank data members

Previously I assumed that blank data members wouldn't be a valid use case but when preparing the XAF XCRM demo guide I found that this is a necessity.

Add Apply(IDesignForm) overload to features

Saves typing when you have an IDesignForm instance handy.

Still want to keep the Apply(XRDesignMdiController, XRDesignDockManager) overload for custom design forms that may not implement IDesignForm.

The OverrideFilter editor inserts ?ParamName but only [Parameters.ParamName] actually works

Currently if you use ?ParamName in the SummaryField.OverrideFilter, the summary field goes blank.

This is because the expression evaluator only supports the format [Parameters.ParamName]. You can see that this format is what is inserted by the property editor for the Expression property.

The OverrideFilter semantics should be just the same as the report FilterString semantics, so ?ParamName should be made to work.

It would be nice if the Expression editor followed the same semantics but that's up to DevExpress and it's best to be consistent with CalculatedField.Expression. No calculated field, including summary fields, can use the ?ParamName style.

It would also be nice to get a warning when an unknown name is used, but again it's best to be consistent with existing behavior. Neither calculated fields' Expression or report bands' FilterString warn about unknown names.

Create a release and binaries

It would most likely be easier for a lot of folks to use binaries, and it would be good to have a clear indication of the fact that the current code is stable.

Deprecating SummaryField now that we have Expression Bindings

DevExpress has finally added the feature we've all been waiting for in 17.2! An expression binding is much more usable than the SummaryField– a single expression can do the job that it used to take multiple SummaryFields and a final CalculatedField to achieve.

Overview
Blog demonstration
Docs

What you need to know:

I will publish a v17.2-compatible release ASAP so that you can begin replacing your SummaryFields with expression bindings. (#22)

I will verify whether expression bindings satisfy every use of the SummaryField that I'm aware of. If not, I will log issues with DevExpress until expression bindings reach parity. Expression bindings look comprehensive but at the same time, there are a lot of combinations of settings on the SummaryField too. As soon as I'm satisfied that you can do everything natively in 17.2 that you can do with a SummaryField, I will deprecate this project and redirect people to expression bindings.

I recommend that you try to replace all usages of SummaryField with expression bindings and let me know what you run into now. You might be using it in a way my company isn't. I want to be sure that expression bindings can do everything before I deprecate.


End of an era! Much as I've enjoyed writing this hack, nothing is more delightful than native support. I'm a bit disappointed that I never shared SummaryField v2 with new abilities, such as datasource-level PartitionBy on any band, or working inside aggregated expressions. Sadly, I have little time to spare. But kudos to DevExpress for doing the right thing and providing a first-class experience! That was the goal I was hoping for when I went public with this project. Perhaps it made a difference. 🎉

Create demo applications

Probably the only barrier to entry for people is the lack of sample code.

https://github.com/jnm2/DevExpressMods#getting-started has instructions but nothing beats seeing it in action.

  • Create a XAF report designer demo (#10)
  • Create a WinForms ReportDesignTool-based demo (standard and ribbon)
  • Create a WinForms custom designer demo (standard and ribbon)
  • Link samples from the readme and remove ModdedEndUserDesigner.cs

Update needed for 15.2.x

DevExpress 15.2 introduces a breaking change to their public API surface. I have a tested fix ready.

Add full test coverage

The library has been well tested by running rather complex reports for two years, but I need to move all of that into unit tests. Once all that knowledge is contained in this repo, outside upgrades and fixes will be easier to maintain.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.