Flexlib Scheduling Sample

Recently had to build a component to do some scheduling… so first started to browse for some sample and options I had and found three options: First pay for the iLog Elixir components which has a pretty good scheduling component, but paying for that was not an option to us.

Then I found the Doug’s post about the gantt chart component and flexgeek post (with doug’s same approach). this seemed a good option and actually started to develop it on top of flexgeek’s component, but as I test it found a leak that didn’t allow the grid’s columns to get GC’d and when a drill down/up was made all the columns where removed and added (not really)… also I wasn’t able to show two month in a day view for example.

So, I went for the Third option… the so feared and undocumented scheduling library (now in flexlib, previously in adobe’s lab). Surprisingly I thing it was the best option, don’t know why nobody tried before, maybe the lack of samples… just had to made some modifications to the lib to add some events like click and drag over the items and some timeline modifications so it’ll be like the iLog’s component.

I think that there is a couple of modifications needed in the component and thats it to use the hierarchical classes in flex (my approach wasn’t the best but for time problems it seemed the quick and lazy way), and adding styles and colors.

I haven’t been able to finish it due to a change of priorities in the company but here it is… (viewsource is enabled)

Scheduler component Sample

Scheduler component Sample

and here is the flexlib source with my modifications (download), I have to separate more my classes from the originals

I’ll be posting more on the modifications I made to the libs

Any feedback will be appreciated :) Recently had to build a component to do some scheduling… so first started to browse for some sample and options I had and found three options: First pay for the iLog Elixir components which has a pretty good scheduling component, but paying for that was not an option to us.

Then I found the Doug’s post about the gantt chart component and flexgeek post (with doug’s same approach). this seemed a good option and actually started to develop it on top of flexgeek’s component, but as I test it found a leak that didn’t allow the grid’s columns to get GC’d and when a drill down/up was made all the columns where removed and added (not really)… also I wasn’t able to show two month in a day view for example.

So, I went for the Third option… the so feared and undocumented scheduling library (now in flexlib, previously in adobe’s lab). Surprisingly I thing it was the best option, don’t know why nobody tried before, maybe the lack of samples… just had to made some modifications to the lib to add some events like click and drag over the items and some timeline modifications so it’ll be like the iLog’s component.

I think that there is a couple of modifications needed in the component and thats it to use the hierarchical classes in flex (my approach wasn’t the best but for time problems it seemed the quick and lazy way), and adding styles and colors.

I haven’t been able to finish it due to a change of priorities in the company but here it is… (viewsource is enabled)

Scheduler component Sample

Scheduler component Sample

and here is the flexlib source with my modifications (download), I have to separate more my classes from the originals

I’ll be posting more on the modifications I made to the libs

Any feedback will be appreciated :)

This entry was posted in Components. Bookmark the permalink.

54 Responses to Flexlib Scheduling Sample

  1. RehanAzher says:

    Thanks for the wonderful job done, how can we have a schedule entry for root element as well , I tried following but it did not work:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    private function testFunction():ArrayCollection{
        var entries:ArrayCollection = new ArrayCollection();
        var row:ArrayCollection = new ArrayCollection();
        for each (var order:String in orderList){
            var orderXML:XML = new XML(orderXMLMap.getValue(order)+"</order>")
            row = new ArrayCollection();
            var entry : ColoredScheduleEntry= new ColoredScheduleEntry();
            entry.startDate = DateUtil.clearTime( DateField.stringToDate("10/10/2011","DD/MM/YYYY"));
            entry.endDate =  DateUtil.clearTime(DateField.stringToDate("21/10/2011","DD/MM/YYYY"));
            entry.backgroundColor = 0x273c0b;
            entry.label = orderXML.@name;
            row.addItem(entry);
            var orderGroup:GroupedScheduleEntry = new GroupedScheduleEntry(orderXML.@name,row);
            var orderItemArray:Array = orderItemsMap.getValue(order) as Array;
            if (orderItemArray){
                var tmpArray:Array = new Array();
                for each (var itemName:String in orderItemArray) {
                    row = new ArrayCollection();
                    var oItemXML:XML = new XML(orderItemXMLMap.getValue(itemName)+"/>");
                    var sDate:String = oItemXML.@sDate;
                    var eDate:String  =oItemXML.@rfsDate;
                    if (sDate==null || sDate.length==0){
                        sDate= dFormat.format(dateAdd("day",-10,DateField.stringToDate(eDate,"DD/MM/YYYY"))).toString();
                    }
                    entry = new ColoredScheduleEntry();
                    entry.startDate = DateUtil.clearTime( DateField.stringToDate("15/10/2011","DD/MM/YYYY"));
                    entry.endDate =  DateUtil.clearTime(DateField.stringToDate("19/10/2011","DD/MM/YYYY"));
                    entry.backgroundColor = 0xFEDbbb;
                    entry.label = oItemXML.@name;
                    row.addItem(entry);
                    var orderItem:GroupedScheduleEntry = new GroupedScheduleEntry(oItemXML.@name,row);
                    tmpArray.push(orderItem);
                }
                orderGroup.children = tmpArray;
            }
            entries.addItem(orderGroup);
           

        }
        dataprovider = entries;
    }

    Thanks

  2. Gus says:

    Hi Rehan,

    It should’ve worked… what happened when you ran that code?

  3. Ronak says:

    Man.. you are too good. This is exactly what I was searching for and you have changed the flexlib code quite well. Well done!!!… REally appreciated…

  4. Gus says:

    Thanks bro

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>