Generating an Organogram in MVC and Displaying in View - c#

I imagine this question will not bear anything, but this is a last ditch attempt before I have to tell my PM I simply can't do it.
My colleague (usefully before leaving the project) was a yes man to everything our PM asked for, regardless of what it was, and I seem to have been volunteered to create some functionality that will generate an Organogram / Organisational Chart and present it in the view.
I have dug around and asked around, no one really seems to know how I would go about doing this. Can anyone offer any advice on anything that can help? Even if it's the most basic tutorial or obscure API ever, it will be helpful.
To put a point on it, my question is: Is it possible to generate a chart in an ASP.NET MVC C# Application, and display it on a View? (Even a yes or no would help)

Yes, everything is possible. It's just a matter of how much time you can spend on it. Not everything has a good return on investment though, but that's for your PM to decide. As long as your team can make an estimation of the complexity.
But for ASP.NET, Microsoft has a Charting library that allows you to build charts. There are also commercial libraries (the first google hit) out there that are more feature rich.
And if they don't work, you can Always build images manually using the System.Drawing namespace of .NET (that will of course take considerably more time than plotting a chart using one of the available libraries). Generated images can be sent through an ashx handler, or you can embed the image in the same page using base64 encoding.
It's not bad to say yes to your PM, but I rather say: "Yes, we will stick this feature on the feature list / back log, and make a estimate of the complexity. Once we know the complexity you can choose to select it for a future iteration." But perhaps I'm talking too Agile now ;-)

You can hand off the chart drawing to an external library, for example, Google Visualization: Organizational Chart
Have a look at this question for other suggested librairies:
What's the best library to draw organization chart using JavaScript?

This sounds like it's in a commercial scenario, so it's really worth looking at the commercially available solutions. Steven already mentioned one, but as far as I can see that one is for Windows Forms and the other one is for charts as in bar charts and provides no organigram features.
A Javascript diagramming library with the capabilities of displaying organizational charts is yFiles for HTML. It has a nice online example of an organization chart that might be exactly what you are looking for:
There is also a Video that shows the demo in action.
The library is a pure Javascript implementation that does not depend on server libraries or servers at all. Integrating it in an ASP.net environment should be easy though, as long as you know Javascript. Being a library it offers full customization capabilities. You can determine the look and the feel of all aspects of the chart. Under the hood the library is a generic graph drawing and editing tool and the organizational chart is just one possible use-case.
Full disclosure: I work for the company that created the library, but on SO I do not represent my employer. My comments, thoughts, etc. are my own.

Related

Comprehensive tutorial for beginners on how to write Windows GUI programs

I'm trying to learn how to write Windows GUI* programs in C++, using Visual Studio 2008, but I haven't found any more comprehensive tutorial for beginners.
The more comprehensive tutorials I have found are either only about how to make buttons, menus, etc. OR only about how to write basic C++ console programs.
What I haven't found is a more comprehensive tutorial for beginners on how to combine buttons, menus, etc. with C++ code.
In other words, I'm looking for answers to the question: How do I link menus, buttons etc. to C++ code?
If you know where I can find answers to that question, post them here, please!
Note: "Graphical User Interface (GUI): Includes such things as icons, panels, and interactive windows, to enable users to perform such actions as opening files and creating applications with the click of the mouse" (intoweb.co.za/et-linux-tips.html).
I'm currently reading a C# tutorial at techotopia.com, that seems to include not only C# basics but also useful information on how to use C# to get buttons, menus. etc. to actually do something. I only started reading the tutorial, though, so how useful it actually is I don't know yet.
I've now finished reading the C# tutorial at techotopia.com and learned some basic facts about how to actually make controls on a windows form do something. Had I known what I now know about C# earlier, I most likely would have chosen to learn that language before I started learning C++.
It's beyond me why each and every C++ GUI programs tutorial for beginners aren't written in the same style as the tutorials at techotopia.com. I see no reason why C++ GUI programs tutorials for beginners can't be both crammed with basic facts AND explain even the simplest things to people like me, that need such explanations to understand a new subject. Well, there probably are such tuturials, only I haven't found them.
Now is the time, I think, to make a short list of what steps I have taken to get where I am today when it comes to computer skills in general and ability to write computer programs in particular. I'm posting the list here for the benefit of people who wants to become good at writing computer programs but don't know how to reach that goal or have mislead themselves, as I have time and time again. It's not a final list in any way. It's just a short account of what have worked for me.
Step 1. Use lots of computer programs (word processors, image editors and what else you're interested in) to see what can be done with a computer.
Step 2. Write web pages with HTML and CSS. HTML, Hypertext Markupup Language, are used to tell browsers things like the beginning and end of paragraphs, the structure of tables and where to include images. CSS, Cascading Style Sheets, are used to add things like text-size and background-color to web pages.
Step 3. Improve your web pages with PHP. PHP, Hypertext Preprocessor, reminds of C# and C++ and is a server-side scripting language. Server-side means that something is done to a web page before it is sent to a visitor's browser, like adding code that makes it possible to send a message. PHP is easier for a beginner than C# and C++. Also, if you have written some HTML pages, you can gradually add PHP to these pages. In other words, you can learn how to use PHP in a familiar context.
Step 4. Learn C#. Reminds of PHP and C++. More difficult for a beginner than PHP but easier than C++. This is where I am right now. These links may be of at least some use:
Quick And Dirty Guide To Migrating PHP Code To C#
C# Station C# Tutorial on how to write console programs
dotnetperls.com
George Shepherd's Windows Forms FAQ
C# Corner
csharp-examples.net/examples (very short code snippets)
Visual C# at msdn.microsoft.com (probably more useful when you're no longer an absolute beginner; at least I think so)
Some basic C# tutorials (written by me and not amongst the best tutorials you can find; however, I would have found a page similar to this one useful when I first started learning C#)
Step 5. Learn C++. Reminds of PHP and C#. More difficult for a beginner than PHP and C#. Allows the programmer to control more than C#. Some people say it's faster than C#, while other people don't. This is where I hopefully will be within a year or so.
Since there are as many roads as there are budding programmers, these steps may not be right for you. Hopefully, though, the list above is of at least some assistence to you when you decide what steps to take to reach your goal.
If you know more about programming than I do and disagree with the list above, feel free to provide your own list. If you do, I think you should also explain why you think your list is better.
Charles Petzold wrote a book on that.
I haven't read it, but his Win32 UI book is widely known as hilarious, so it is expected to be good for beginners.
As you can probably already tell from other answers and comments, the term "Windows Forms" is the name for a specific .NET technology.
You seem to want to ask a question more along line of how to learn to write Windows programs that have a GUI (menus, buttons, windows, etc).
There is no single way to write a Windows program. C++ itself doesn't know anything about Windows. Instead you will end up using some API or framework. So what you need to do is choose which particular one you want to use and then learn that.
At the lowest level there is the raw
Windows API. However it is a very
C-like interface and few people would
recommend starting there.
Microsoft's C++ based framework for building Windows programs is MFC (Microsoft Foundation Classes). It was created long before .NET and C++/CLI and such. Being so old, there are aspects of it that haven't been able to change to keep with the times and so some people don't like it. But it's still supported and used. In fact, if you have a full version (not an express version) of Visual Studio then you already have MFC available.
There are various other C++ frameworks that have come along more recently. Qt and WxWidgets are a couple of the bigger names. Many of these not only give you a way to create Windows programs, but also try to abstract away all the OS-specific details so that your code can be compiled to work on other OS's (like Linux or Mac) too. In my opinion, these are often more pleasant to work with than MFC once you learn how.
Even though its not what you're asking for, many people would actually recommend using C# and .NET for making GUI programs in Windows. There are some nice aspects of that language and framework that make GUI programming easier.
So you probably need to do a little investigation to determine what technology you actually want to learn and use. Then you can go searching for appropriate tutorials.
A somewhat old thread but here's what could arguably be the updated Petzold replacement:
"Windows System Programming (4th Edition) (Addison-Wesley Microsoft Technology Series)"

Comparison between MS Charts and ZedGraph?

Question: Anybody has experience with ZedGraph / MS-Chart controls ?
I am thinking about which to use ?
Basically, I have a tendency to ZedGraph,
because I need .NET framework 2.0 while MS-Chart is 3.5 (and I don't know how well a 3.5 assembly works on 2.0)
and because I could use it privately, too (I use Linux privately).
But I don't know if MS-Charts offers more.
Does ZedGraph for example offer reasonable quality 3d piecharts ?
And reasonable color design, like gradient colors ?
And if it does, is it as simple (or nearly as simple) as MS-Chart controls ?
And does ZedGraph offer databinding, e.g. a datatable from a database ?
I've tried some examples in my free time.
With a bit of minor tweaking, ZedGraph's quality is just as good as MS/Dundas Chart controls.
Here's an example of a 3d piechart:
http://www.codeproject.com/KB/web-image/3dpiechart.aspx
Zedgraph is a bit more user-unfriendy than MS/Dundas chart controls.
However, Zedgraph is also more powerful and faster, while the rendering quality is the same.
Plus Zedgraph is cross-platform, while MS-Chart controls is limited to windows (by license, not by technique).
So the way to go is definitely Zedgraph.
A deeper reason can be found here:
http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/thread/1271d98f-f52e-424d-a0dc-8bc831a5f4b8
I have used MSCharts since they went RTM and have been pleased with them for many different kinds of charts; however, I find them deficient when I want to generate a plot or a graph. For these, ZedGraph seems to offer a more appealing solution.
The MSChart Samples environment can give you a good idea of the capabilities of that library. You can compare the samples environment to the demos from the ZedGraph wiki to see they have a lot of overlapping capability. I've just found that this kind of chart is pretty difficult to create with MSChart.
I have used them to create complex dashboards, and they are very stable, well written pieces of code. However, you have to consider the fact that whichever you would be betting on, would actually be there for a long time.
Additionally, if you're using MSCharts, you would be able to use the same knowledge to build charts for web applications as well (on ASP.net)
However, if you are using them in a server ASP.net based environment, the only issue with MSCharts is that they are not dynamic charts i.e. they are rendered as images and returned from the server. They use image maps to support HyperLinks / Tooltips, and work pretty well.
I haven't used MSChart, but from my experience with ZedGraph, you can't make 3-d charts. ZedGraph also requires a bit of tweaking to make really sharp looking graphs (if you notice, most of their examples don't qualify for this title).

A "Google wonder wheel" or "visualthesaurus" like diagram control for .net?

I'm looking for a graph control that works just like Google wonder wheel or Thinkmap visual thesaurus. I don't know what do these types of diagrams called. Any help would be appreciated.
I have a series of non-hierarchical related data entities (should be shown as big and small circles) and I want to show their relation (lines between the circles).
I think you are after this effect, i also dont know if it has a specific name:
http://www.dotnetsolutions.co.uk/successes/wikiexplorer/
http://www.dotnetsolutions.co.uk/assets/images/screenshots/we1.png
thats in wpf so maybe there is source floating around for it - or maybe .net reflector can help you work out how it is done.
I have not seen any components that do this automatically, your best bet is to use one of the many graph libraries on codeplex.com to create a graph like data structure and display it - they have integrated visualisation and graph layout tools included within them.
A few links from my notebook:
http://quickgraph.codeplex.com/
possible component set:
http://visualstudiogallery.msdn.microsoft.com/en-us/494E7990-2722-4A4E-B0E3-AE1F2A831B7E
http://opendiagram.codeplex.com/
http://graphsharp.codeplex.com/
http://research.microsoft.com/apps/dp/search.aspx?q=GLEE#p=1&ps=36&so=1&sb=&fr=&to=&fd=&td=&rt=&f=&a=&pn=GLEE&pa=&pd=
http://wpfgraph.codeplex.com/
http://mgdisplay.codeplex.com/
i'm afraid i've not used any of them in depth so cant recommend one over the other - also be careful as some of them are released under different licenses.
hope this helps
David

What is the best 3rd party GUI framework for application development in C#?

Examples could be Infragistics or DevExpress.
But I'm also looking for your opinions on other frameworks. It could even be WPF if that is your favorite.
Infragistics is very good. I think they have a better product for windows than the web. However, I get very upset using their products sometimes. I just want to find some hidden property, and it is impossible to find. They have way to many properties. Sure, you can do anything with their grid, but it should be easier. All of these vendors are leap frogging each other. You really have to compare all of them every year or two. I am currently using Infragistics on most web and windows project. If I could switch today, I would go to DevExpress for Web and Windows. Everything that Mark Miller and the guys at DevExpress produce is beautiful, and thoughtful. On a side point, you should check out CodeRush and Refacter. I may sound like a salesman, but I am not. I just could no longer code without CodeRush. It would feel like coding with one hand. If you are going to spend $1000 or more on a framework, you should also get CodeRush.
I've used Telerik RAD Controls for Asp.Net and it is a very comprehensive suite of controls that are easily converted to AJAX. The support is top notch, with the forum as a first place to go to for research before contacting the staff.
The client side API is fairly easy to understand, and they have good examples of mixed implementations with client and server side code.
I would say Infragistics
Haven't used it before, but I've heard good things about Telerik. My experience with the Infragistics Web components has been less than stellar. I found there were a lot of hidden features that I required, which were undocumented and had to go hunt around in the sample code for examples.
These toolkits can make sense for intranet applications but when you start providing it out on the web, the functionality can come at the cost of a bigger download for users. Just something to keep in mind.
What frameworks are you looking for? I currently use Janus Grids for grids on the winform side, but DevExpress has an awesome web grid that is amazing.
For current Winforms development my favorite is Infragistics. DevExpress seems to have more Silverlight controls in the works, but Infragistics may deliver.
I don't do much non-web development, but if I do I like to use gtk# for Mono (screenshots). It's much more fun and very easy to program then winforms. WPF looks good to, but I only tried an Hello World.
Infragistics has got good controls for Applications. WinGrid is one of the most important ones which would help you displaying information professionally and is quick.
the only drawback is the time consuming process of contacting their helpdesk or searching for the hidden properties. But they do work after you get to know them !
I would say go for DevExpress seems to be the most elegant, intuitive and well document suite out there.
To see their product offering in action demos.devexpress.com
Do the same for any component suite check out their demos and see which best suit you needs.

Data visualization in desktop applications

I would like to create data visualizations in desktop apps, using frameworks, languages and libraries that help with this kind of task. Visualizations should be interactive: clickable, draggable, customizable, animated...
What I would like to create is something similar to the examples seen here: http://www.visualcomplexity.com/vc/
These are the links I already know: http://delicious.com/laura_laura/visualization?setcount=100
The preferred language is C++/Visual C++ (MFC) because I'm familiar with it, but any other technology is welcome, I would like to make a list from "as similar as possible" to Visual C++ to "very different" from Visual C++.
WPF, flex, Adobe Air, flare, JavaScript (running in a browser as client-side apps with access to local files or as desktop apps) are possibilities, post any good links to examples, tutorials, how-tos, etc. that you know of.
What are the learning curves and complexity for the different options? Which one would you choose and why? Which one have you already worked with and how was your experience? How would you start with a project of this characteristics?
Your post has far too many questions in it to be answered easily in one response, so you might try re-posting with specific questions. Data visualization is a HUGE area of study and it's not significantly different for web applications versus desktop applications.
Put simply, it's the display of data in a way that visually tells the story of the data. It's most useful in cases where the volume of data is such that tabular display isn't effective. Trends, outliers, and abnormal occurrences can sometimes only be seen when data is represented visually. Visually can be a simple chart, or it can be more advanced visualizations such as treemaps or thematic mapping/GIS presentations.
If it's an area you're interested in studying, look into:
Edward Tufte - Author, professor, and all-around guru for the display of information
Many Eyes - from IBM AlphaWorks
Processing - A visual "sketching" language based on Java
Visualizing Data - An O'Reilly book by Ben Fry, one of the co-creators of Processing
Beyond that, I think specifics would depend on what you want to accomplish -- what data is being analyzed, who the audience is, and what the desired "message" is.
If you're willing to use the Flash/Flex/ActionScript/AIR development platform, then take a look at the "flare" library, from the prefuse project:
http://flare.prefuse.org/
I've only gotten my feet wet with it at this point, but so far I like what I see.

Categories