The Flex Show - Creating Flex Components - Episode 3: Dealing with the DataProvider
This is the third episode of our video series on creating Flex Components. This is a series of screencasts designed to teach you how to make use of the component architecture in Flex.
In this episode we start coding and implement code for the dataProvider.
For some reason, Captivate is not syncing the audio and video properly. I'm trying to see if I can fix it and get a better version up here. Sorry.
You can View it online right here.
Sponsored By
Register and Download our No Cost Developer Editions today
Links
Contact
Should be fixed now
http://www.theflexshow.com/video/index.cfm/id/0BB5...
Thanks for checking out my FlexDateUtils. I added a contact form to my site (Wordpress didn't seem to have a default one on install, so I never got around to adding one), so now anyone and everyone can contact me...it is slightly annoying when you can't contact the site owner easily. I've scoured the web several times trying to find a means, rather than comments, to contact a site's owner. Enjoy the library. I actually need to add a swc eventually to make it a little easier for everyone to use it...dropping it into libs instead of having to mimic the directory structure of the library.
BTW, the site is actually Flex OOP, not flex coop :)
The library has been very nice to me as I've been working on this series and the Flextras commercial Calendar component.
Did I screw up the site name in the screencast? I see it is correct in the show notes. If so, sorry about that. I'll post a retraction about that in a future episode.
Thanks for listening. And thanks for the library.
I haven't watched Episode 4 yet so these may be already fixed, but I've noticed a couple of potential bugs during this episode (#3):
1. In commitProperties when you're building the lookup table (dataProviderDictionary) you do not wipe out the old values. This could lead to garbage accumulating in the lookup table. It could be fixed by simply starting with creating a new dictionary before you start the DP processing.
Also, shouldn't we wipe out the DP cache if the newly set data provider is null?
2. Again, in commitProperties() the loop through the days of the month should start with '1'. In the demo you forgot to initialize it explicitely so it'll probably start with '0'. This is not a big deal, however, because your end condition is correct (.e.g. day <= daysInMonth), but distracting somewhat.
3. The key generation as described (i.e. year+month+day concatenated) is ambiguous, for example "2009113" could be a result of 11/03/2009 or 01/13/2009. Use a separator character (e.g. 2009-11-3) to make it unambiguous.
While we are at it, the key generation logic should be extracted into a method to avoid duplicating the logic all over the place. This way you need to fix it only once. :)
Thanks for the excellent work guys, I am very impressed that you did not simply pick some half-trivial toy component but something with real potential value.
Is the full source available somewhere by any chance?
Thanks again!
I appreciate you watching and listening.
This series is designed to teach the process of building a component. Some of the thing you mention I'd consider "Bullet Proofing" type of actions which probably won't make it into the show.
You bring up valid points, though. I'll address each one.
1. The reason for not rebuilding the lookup table each time is because, I assume, that people will be cycling through months. I view the dataProviderDictionary as an internal cache of processed data.
2. Without looking in depth, I bet your right on this one.
3. Good catch here too on key ambiguity. Extracting the key generation logic is a fair point, but probably will not end up in the show. We'll have to see how it unfolds over remaining episodes.
The full source is not available anywhere. But, if you send us an e-mail I can see about posting it somewhere. Use the contact form on this site.
A more polished / feature rich Calendar component should be added to the Flextras line before the end of the year.