Archive for January, 2010

Adding and removing event listeners in Flex

When you want to add an action to for example a button control in Flex, you can achieve this in two ways. Let’s suppose you want some action to be performed when user click’s on a button, you can code the function to be called by adding click attribute to Button tag, for example:

<mx:Button label="Button1" click="show_alert1()" id="button1"/> 

When user click button with Label Button1 the show_alert1 function will be executed. There is another way of adding click event to this button.

We can addEventListener to this button. For example we could execute the following code inside creationComplete function:

button1.addEventListener(MouseEvent.CLICK, show_alert1);

There is essentially no difference between the first option and the second option. Unless you want to at a later stage remove click event from this Button.

We can remove events in Flex with removeEventListener, which takes in two arguments (the same ones as addEventListener) and those are:

  • type:String (type of event we want to remove, or add
  • listener:Function (which listener function we want to remove or add)

One thing to remember is that you can only removeEventListener from a control where addEventListener was used. That means that if you add attribute click to Button control, you will not be able to remove click event from it with removeEventListener.

You can take a look at this simple script and see it in action: We have to rows of buttons, in the first row, Button1 had it’s click event added with atturibute click inside of it’s Button Tag, the button in the second row had its click event added with addEventListener.

You can first try and click both Button1 and Button2 buttons and you will see that with both there will be an Alert pop up showing. Now click the Remove Listener 1 button and click Button1 and you will see that Alert box will still show (removing this click event was not successful). Now click Remove Listener 2 button and then click Button 2 and Alert box will not be shown, which means we successfully removed click event from Button2 with removeEventListener.

Application can be found here: http://www.tdteam.com/work/engineeringtheworld/removeEventListener.swf

And it’s source:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" 
	backgroundColor="#FFFFFF" backgroundGradientColors="#FFFFFF #FFFFFF"
	width="400" height="400" creationComplete="add_listener()">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			private function add_listener():void{
				button2.addEventListener(MouseEvent.CLICK, show_alert2);
			}
			private function show_alert1():void{
				Alert.show('Button1 Clicked')
			}
			private function show_alert2(event:MouseEvent):void{
				Alert.show('Button2 Clicked');
			}
		]]>
	</mx:Script>
	<mx:Text text="Try to remove click event for the first and second button"/>
	<mx:HBox verticalGap="10">
		<mx:Button click="show_alert1()" id="button1" label="Button1"/> 
		<mx:Button click="button1.removeEventListener(MouseEvent.CLICK, show_alert1)" 
			label="Remove listener 1"/>
	</mx:HBox>
	<mx:HRule width="350"/>
	<mx:HBox verticalGap="10">
		<mx:Button id="button2" label="Button2"/> 
		<mx:Button click="button2.removeEventListener(MouseEvent.CLICK, show_alert2)" 
			label="Remove listener 2"/>
	</mx:HBox>
</mx:Application>
Advertisements

, ,

Leave a comment

Show hand cursor on any Flex control

It is a little bit strange how Flex acts about showing hand cursor over some controls. For example if you use LinkButton control, than hand cursor will be shown when you hover over the area of the button. But, I don’t know why this does not happen when you use Button control. If you want to show hand cursor when hovering over any control you have to set useHandCursor and buttonMode to true (useHandCursor=”true” buttonMode=”true”).

For Button control we would thus use:

<mx:Button label="Button" useHandCursor="true" buttonMode="true" />

But what happens when you try to use this on Label control, well, I does not work, you have to set mouseChildren to false (mouseChildren=”false”), with this even Label will show hand cursor on mouse over 🙂

<mx:Label text="Label" useHandCursor="true" buttonMode="true" mouseChildren="false"/>

You can see the how hand cursor is shown in the example above by visiting this URL:
http://www.tdteam.com/work/engineeringtheworld/useHandCursor.swf

, , , ,

Leave a comment

Great book to teach yourself Ruby

Since I had to get to know Ruby for using Google Sketchup Ruby API, I had to find a good book, to teach me some basics about this interesting and powerful language. I came across a book by Larry Ullman called well Ruby. It is book from series Visual Quickstart Guide published by Peachpit Press. Book can be found either on Amazon or on Peachpit Press site.

I love the way Larry Ullman tries to explain and teach us how to get to know a new programming language, this book is no exception. It is easy to follow and quick to go through, and before you know it you will have some basic Ruby knowledge and you will be able to do some nice stuff with it.

The first time I wanted to teach myself to do some programming was approximately 5 years ago. I wanted to learn how to build web pages and do some web site scripting. The first book i bought was Larry Ullman’s book from the same Visual Quickstart Guide series called PHP for the World Wide Web.

He has introduced me to programming and I think that reading his books is an excellent starting point for any beginner and I wanna thank him for his superb books

, , ,

Leave a comment

How to make a Facebook like tool tip in Flex?

Couple of weeks ago, I was trying to make a Facebook like tool tip for one of my projects. You can refer to the image below to see which tool tip I mean…

First of all lets take a in-depth look at the tool tip that Facebook has. First it is a rectangle with height of 23 px and in the lower left side of the rectangle is a small arrow or triangle that points to the icon for which tool tip was provided.

Usually when you want to show a tool tip on any component in Flex you can specify it with tooltip=”Tool tip MSG here”. Now we want to use our own tool tip and not the one provided by the Flex framework. So let’s go to work.

As the base of our application we will use the following (icon can be found on this URL https://engineeringtheworld.files.wordpress.com/2010/01/icon.png)

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="vertical" width="400" height="400">
<mx:Script>
	<![CDATA[
		[Embed(source="icon.png")]
		[Bindable] private var oneIcon:Class;
	]]>
</mx:Script>
<mx:Style>
	Application{
		backgroundColor:#FFFFFF;
		paddingBottom:0;
		paddingLeft:0; 
		paddingRight:0;
		paddingTop:0; 
		borderColor:#333333;
		borderStyle:solid;
		backgroundGradientColors:#FFFFFF, #FFFFFF;
	}
	LinkButton.footerBarLB{
	   cornerRadius: 0;
	   color:#2f2f2f;
	   rollOverColor: #f7f7f7;
	   selectionColor: #f7f7f7;
	   fontWeight: normal;
	}
	HBox.footerBar{
		backgroundColor:#eaeaea;
		borderColor:#c2c2c2;
		borderStyle:solid;
		borderThickness:1;
		borderSides:top, left, right;
		paddingLeft:15;
		horizontalGap:0;
	}
	Text.heading{
		fontSize:14;
	}
	VRule.footerBar{
		strokeColor: #b5b5b5;
    	shadowColor: #ffffff;	
	}
</mx:Style>
	<mx:Text text="Showing how to make Facebook like tool tip" styleName="heading" />
	<mx:Spacer height="100%"/>
	<mx:HBox width="{this.width-30}" id="footerBar" styleName="footerBar">
		<mx:VRule styleName="footerBar" height="26"/>
		<mx:LinkButton icon="{oneIcon}" styleName="footerBarLB" width="26" height="26" />
		<mx:VRule styleName="footerBar" height="26"/>
	</mx:HBox>
</mx:Application>

This code will give us the following result:

This base is intended to simulate the look and feel of Facebook’s tool tip, you will be able to make any kind of tool tip once finishing this tutorial.

Now in you application src folder create a MXML component called fbtooltip.mxml and make it based on Canvas, add the height of 25 px to the Canvas.

You will only need one image for this tool tip to work. And you can download it here:

(https://engineeringtheworld.files.wordpress.com/2010/01/tooltipbottom.png).

We will first add two public variables to the component called: tooltipText of type String and tooltipWidth of type Number, we will also embed the image above which will be representing our arrow of the tool tip.

We now have the following code in tooltipText.mxml file

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="25">
	<mx:Script>
		<![CDATA[
			public var bodyText:String;
			public var toolTipWidth:Number;
			[Embed(source="toolTipBottom.png")]
			[Bindable] private var toolTipArrow:Class;
		]]>
	</mx:Script>
</mx:Canvas>

Note that toolTipBottom.png has to be the name of the image file that you downloaded above, and it has to be inside of src folder of the project.

Now let’s add another Canvas below the script tag. We will assign a background color to the Canvas, it’s height and x and y coordinates.

<mx:Canvas width="100%" height="21" x="0" y="0" backgroundColor="#353535">
	<mx:Text paddingTop="2" text="{bodyText}" id="toolTipText" 
		fontSize="11" fontWeight="bold" color="#f7f7f7" 
		verticalCenter="0" horizontalCenter="0" height="21" 
		fontFamily="Arial"/>
</mx:Canvas>

Inside the Text tag there will be text shown as our tool tip, that is why we bind variable bodyText to the text attribute.

Since this Canvas will be the rectangle of our tool tip we have to make sure we put the image of the arrow just below the Canvas. Since it has a height of 21 px we will set the y coordinate of the image to 21. We also want the image to be moved slightly to the right of the rectangle, thus we put in x coordinate and set it to 10. The source of the image is the embeded icon we declared in the Script tag.

<mx:Image source="{toolTipArrow}" x="10" y="21"/>

Now since we want this component to be shown as a tool tip, we have to do two more things, first we have to add implements=”mx.core.IToolTip” to the component Canvas tag. Second we have to declare two methods, one is get text() , and the second is set text(value:String) and also declare a public variable _text that is of type String.

Now the complete source of tool tip mxml is:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="25" width="{toolTipWidth}"
implements="mx.core.IToolTip">
	<mx:Script>
		<![CDATA[
			public var bodyText:String;
			public var toolTipWidth:Number;
			[Embed(source="toolTipBottom.png")]
			[Bindable] private var toolTipArrow:Class;
			public var _text:String;
			public function get text():String {
				return _text;
			}
			public function set text(value:String):void {
			}
		]]>
	</mx:Script>
	<mx:Canvas width="100%" height="21" x="0" y="0" backgroundColor="#353535">
		<mx:Text paddingTop="2" text="{bodyText}" id="toolTipText" 
			fontSize="11" fontWeight="bold" color="#f7f7f7" 
			verticalCenter="0" horizontalCenter="0" height="21" 
			fontFamily="Arial"/>
	</mx:Canvas>
	<mx:Image source="{toolTipArrow}" x="10" y="21"/>
</mx:Canvas>

We will now add import this component to the main application with import tooltipText; right after the beginning Script tag. We will also import mx.events.ToolTipEvent;

Now we have to tell our Application that it has to use our newly created tooltip for the LinkButton in the dock instead of it’s default one. In the main application file we will add a new function, the first argument will be a text that will be displayed as Text in the tool tip, second argument will be event of type ToolTipEvent and the third will be the width of the tooltip.

Inside the function we will first create a instance variable ppt of type footerToolTip (that is the name of our tool tip component), than we will set the variables bodyText and toolTipWidth, at the end we will attach our tool tip to the toolTipEvent with event.tooltip = ppt;.

private function createCustomTip(bodyText:String, event:ToolTipEvent, toolTipWidth:Number):void {
	var ptt:tooltipText = new tooltipText();
	ptt.bodyText = bodyText;
	ptt.toolTipWidth = toolTipWidth;
	event.toolTip = ptt;			
}

Second function that we will create just positions the tool tip at the right spot:

private function positionToolTip(event:ToolTipEvent, x:Number, y:Number):void{
	event.toolTip.x = x+10;
	event.toolTip.y = y;
}

There is only one thing to to, it is to attach these two functions with the LinkButton. The createCustomTip function will be called on toolTipCreate event, the positionToolTip function will be called with toolTipShow. In order for this all to work we also have to add a empty toolTip to the LinkButton with toolTip=” “, note that there is a space in between parenthesis, without the space our tool tip will not show.

<mx:LinkButton icon="{oneIcon}" id="linkOne" styleName="footerBarLB" 
	width="26" height="26" toolTip=" " 
	toolTipCreate="createCustomTip('New FB tooltip', event, 90)" 
	toolTipShow="positionToolTip(event, linkOne.x, footerBar.y-26)" />

Can you believe this, we made our our tool tip, it was not very easy…but still gave us the result we were looking for. One thing to note is that tool tips in Flex have a delay and if we want to show tool tip without this delay we have to declare ToolTipManager.showDelay = 0;. We can put it into the application intialize or creationComplete event. Make sure you also add import mx.managers.ToolTipManager;.

The finished sourcecode is here (main.mxml):

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="vertical" width="400" height="400">
<mx:Script>
	<![CDATA[
	    import tooltipText;
	    import mx.events.ToolTipEvent;
		[Embed(source="icon.png")]
		[Bindable] private var oneIcon:Class;
		private function createCustomTip(bodyText:String, event:ToolTipEvent, toolTipWidth:Number):void {
			var ptt:tooltipText = new tooltipText();
			ptt.bodyText = bodyText;
			ptt.toolTipWidth = toolTipWidth;
			event.toolTip = ptt;			
		}
		private function positionToolTip(event:ToolTipEvent, x:Number, y:Number):void{
			event.toolTip.x = x+10;
			event.toolTip.y = y;
		}
	]]>
</mx:Script>
<mx:Style>
	Application{
		backgroundColor:#FFFFFF;
		paddingBottom:0;
		paddingLeft:0; 
		paddingRight:0;
		paddingTop:0; 
		borderColor:#333333;
		borderStyle:solid;
		backgroundGradientColors:#FFFFFF, #FFFFFF;
	}
	LinkButton.footerBarLB{
	   cornerRadius: 0;
	   color:#2f2f2f;
	   rollOverColor: #f7f7f7;
	   selectionColor: #f7f7f7;
	   fontWeight: normal;
	}
	HBox.footerBar{
		backgroundColor:#eaeaea;
		borderColor:#c2c2c2;
		borderStyle:solid;
		borderThickness:1;
		borderSides:top, left, right;
		paddingLeft:15;
		horizontalGap:0;
	}
	Text.heading{
		fontSize:14;
	}
	VRule.footerBar{
		strokeColor: #b5b5b5;
    	shadowColor: #ffffff;	
	}
</mx:Style>
	<mx:Text text="Showing how to make Facebook like tool tip" styleName="heading" />
	<mx:Spacer height="100%"/>
	<mx:HBox width="{this.width-30}" id="footerBar" styleName="footerBar">
		<mx:VRule styleName="footerBar" height="26"/>
		<mx:LinkButton icon="{oneIcon}" id="linkOne" styleName="footerBarLB" 
			width="26" height="26" toolTip=" " 
			toolTipCreate="createCustomTip('New FB tooltip', event, 90)" 
			toolTipShow="positionToolTip(event, linkOne.x, footerBar.y-26)" />
		<mx:VRule styleName="footerBar" height="26"/>
	</mx:HBox>
</mx:Application>

Here is the complete code of tooltipText.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="25" implements="mx.core.IToolTip" width="{toolTipWidth}">
	<mx:Script>
		<![CDATA[
			public var bodyText:String;
			public var toolTipWidth:Number;
			[Embed(source="toolTipBottom.png")]
			[Bindable] private var toolTipArrow:Class;
			public var _text:String;
			public function get text():String {
				return _text;
			}
			public function set text(value:String):void {
			}
		]]>
	</mx:Script>
	<mx:Canvas width="100%" height="21" x="0" y="0" backgroundColor="#353535">
		<mx:Text paddingTop="2" text="{bodyText}" id="toolTipText" 
			fontSize="11" fontWeight="bold" color="#f7f7f7" 
			verticalCenter="0" horizontalCenter="0" height="21" 
			fontFamily="Arial"/>
	</mx:Canvas>
	<mx:Image source="{toolTipArrow}" x="10" y="21"/>
</mx:Canvas>

, , , , ,

Leave a comment

Saving, exporting XML and importing projects from MS Project

In the previous two posts I have been talking about a program I build for project scheduling, and I would like to point some other things out about it.

Program itself can be found on: http://www.tdteam.com/ontime/

On the bottom of the screen there is a dock with the following buttons (starting from the left):

  • Save project – name says it all
  • Export as XML – a new window will open and XML data will appear
  • Import from MS Project – this is in testing mode, and it only loads a sample XML project saved in MS Project
  • Show/Hide Columns – you can select which columns you want to see in the scheduling table
  • Show graphical data – you can view Flow Chat and Pie Chart of financial data
  • History – this is a list of all things that changed during the project scheduling
  • Notifications – a popup opens with data about latest user actions and other notifications

When you save a project, all the data associated with the project will be saved, that means that next time you open the project all the Undo, Redo functionality will remain active, all the history and notifications are also saved.

One thing to note about History pop up is that every history input also has a Boolean value automatic associated with it. All the history inputs that have automatic set to false or NO, means that that is the action the user did, the ones with automatic set to true or YES are changes made by the program. For example, if we change finish date of a child task beyond the finish date of the parent, along with child’s finish date being changed there will also be automatic change of finish date of the parent and that change will be noted as automatic = YES.

, , ,

Leave a comment

Adding connections to your scheduling project

In this post I would quickly like to introduce two types of connections that you can make with tasks in OnTime scheduling tool. There are four types of connections that you can have in project management and those are:

  • FS – Finish Start
  • SS – Start Start
  • FF – Finish Finish
  • SF – Start Finish

I have made two of these four options possible in OnTime program. Finish Start is the default connection type, which means that if we connect two tasks and we don’t specify a type it is assumed that you meant FS type, which is the most commonly used connection. It just means that when one task will finish the other one will begin. Below is the visual representation of two elements connected with FS connection.

The other type of connection that is enabled in the program is FF – Finish Finish. That means that if we connect two tasks with FF connection we are saying to the program, that both tasks have to finish at the same time. Again in the figure below we can see the FF type connection.

Having more than one connection

It is possible that you link one task with as many other tasks you like, connections can be either FS or FF. So valid connection of one task would be: 1, 2, 3 FF, 4 FS, 6.
The start date of a task with multiple connections will be calculated and set in such a way that a connection that will result in the latest finish date will prevail. (that will mean that all of the connections will be observed and the critical one will set the start and finish date of connected task). Of course anytime, you change any of the tasks (in our example 1,2,3,4 and 6) all will be calculated again and the critical connection will once prevail once again.

, , ,

2 Comments

Project scheduling tool made in Flex – OnTime

Program for project scheduling made in Flex

Program is located on this URL: http://www.tdteam.com/ontime/

I would like to show you a project I made using Flex. It is a project scheduling program that allows you to make a full building or any other construction schedule. Features of the program include:

  • Creating new tasks and modifying them
  • Create connections between tasks (with options of FS – Finish Start and FF – Finish Finish)
  • Indenting tasks – creating WBS tree structure (WBS – Work Breakdown Structure)
  • Full undo and redo functionality
  • Import projects from Microsoft Project
  • History for every task performed
  • Input of financial data
  • Cash Flow diagrams based on financial data and schedule
  • Pie chart diagrams showing financial data per task bases
  • Exporting data as XML (with full history for each task)
  • Customizing columns
  • and some more…

So now let’s do a quick intro of the features and functions of the program. When you first load the program (URL is provided above). You are welcomed by a login screen shown below.

Fields for the test login are already provided, so we can just go ahead and click Login button.

After the server authenticates us as a valid user we are presented with a new screen, where we have a list of all the projects saved under our login. For each available project we have the date and time of the last save and number of tasks project has.

On the second screen we have the following options:

  • Start a new project
  • Open an existing project

Now let’s go and create a new project, so we can see what we can actually do with the scheduling program. When we click the button labeled Open New Project we are first greeted by a input box that is asking us about the name of the project. For example let’s call it Test Project – 3 story building and click OK.

Depending on the size of your browser window the program will try to adjust itself and show you the maximum number of columns you can view without a horizontal slider. Three columns are always on: Id, Task Name and Gantt Chart (others can be turned on or off by clicking on Show/Hide columns icon at the bottom of the program).

Now let’s take a look at the environment of the program. In the top bar we have program name (OnTime) and back button to go to list of all projects. In the middle is the project name (which we can change by clicking on it), and on the right side is the user data (first and last name) and feedback button, with which you can send me any thoughts you have about the program, and I would encourage everyone to do so 🙂

Just below the header bar we have a set of 7 buttons that provide functionality for our scheduling program in the table below. On the image below you can see what each one of those buttons does.

Just below function buttons we have meat of the program, actual tasks and data associated with it. Below is the list of available columns:

  • Id – number of the task (starts from 1 and inrements by one in each row)
  • Guid – Global Unique Identifier, every task has it’s own Guid that distinguishes it from all the others
  • Task Name
  • WBS – Work Breakdown Structure
  • Outlinelevel – 1 is the lowest possible level
  • Duration – in days, difference between start date and finish date
  • Percent Complete – how much of the task is already completed, values range from 0 to 1
  • Start Date – start date of a task
  • Finish Date – finish date of a task
  • Connections – with it we can set predecessors and successors for each task
  • Gantt Diagram
  • Financial data – expenses

Again if you don’t see any of the columns listed above and would like to see and change them, just click Show/Hide columns button in the lower right corner of the screen.

Let’s now input some data into the program. Name the first task already on the screen Site Preparation, set its duration to 10 and start date to 3rd of March 2010.
Now lets click the first functional button that enables us to create a new task. Let’s call it Foundations. Now create two new tasks, calling the first Excavate foundations and the second one Form and cast foundations.

Now select Excavate foundations task and indent it to the right. It’s WBS will turn from 3 to to 2.1, and it will become a subtask of Foundations task. Do the same with Form and cast foundations (it’s WBS should be 2.2). Set the duration of Excavation to 8 days and Form and cast foundations to 15 days.

The program should look like the image below.

Now let’s do some connections. First we know that we cannot begin forming and casting foundations before we excavate a hole where foundations will stand. So we connect task nr. 4 (Form and Cast foundations) to task nr. 3 (excavate foundations), we do this by inputing value 3 into the field connections for the task nr. 4. If we don’t specify type of connections it is assumed that you meant FS connection (so when task nr. 3 will finish task nr.4 will start). We could also inputed 3 FS or even 3 FF if we wanted both tasks to be completed at the same time. Now we also set connection of Foundatins Task (task nr. 2) to be started right after task nr. 1 is completed.

Once we set up connections we don’t have to worry about tasks being completed as we specified, for example if we than change finish date of Site preparation task, than start date of foundations will be changed accordingly.

Again you can see what happens in the image below.

Now let’s create 4 new tasks and name them as follows (and change their durations)

  • Structure Concrete Shell with floor plates
  • 1st floor (duration 31 days)
  • 2nd floor (duration 31 days)
  • 3rd floor (duration 31 days)

Now indent 1st 2nd and 3rd Floor under Structure Concrete Shell with floor plates and set the following connections. 3rd floor to 2nd floor, 2nd floor to 1st floor, and Structure Concrete Shell with floor plates with foundations.

You can help yourself with the picture below if I didn’t make myself clear enough 🙂

OK, now let’s finish this schedule up, let’s add 6 more new tasks:

  • Roof (duration: 42 days)
  • Outside envelope (duration: 56 days)
  • Interior work (duration: 93 days)
  • Final Clean-up and Occupancy
  • Remove debris from building (duration: 6)
  • Final completion (duration: 0 – making this task a Milestone, you will notice how the representation of the task is changed in gantt chart)

Indent Remove debris from building and final completion under Final Clean-up and Occupancy, and connect Roof with Structure Concrete Shell with floor plates, Outside envelope with Roof, Interior work with Outside envelope and Final Clean-up and Occupancy with Interior work.

Completed schedule should look similar to the picture below.

Our project thus begins on 3rd of March 2010 and is expected to be finished on 19th of February 2011, so just a little under a year. Now let’s go ahead and click the last functional button (above the schedule) that will hide Gantt chat and show us Financial data or expenses.

Input the following data under expenses column (these values (as is the whole schedule) are fictional and only here for purposes of showing what this program can do)

  • Site preparation – 33.000$
  • Foundations – 480.000$
  • Structure Concrete Shell with floor plates – 320.000$
  • Roof – 140.000$
  • Outside envelope – 900.000$
  • Interior work – 485.000$
  • Final Clean-up and Occupancy – 12.000$

Now that we have schedule and financial data we can generate cash flow diagram based on values inputted into the program. Click on the 3rd button on the bottom right side of the screen (Show Graphical Data). You will be presented with a cash flow diagram, that is calculated based on the cost of a given task and when it is going to be performed. It is assumed that money for every task is distributed evenly from start to finish of that task.

In the bottom right corner of the pop up window select Show per task (show together is default value). This time cash flow diagram is presented in a different way, now we can see which of the tasks are contributing to what part of the total cash flow…pretty cool huh

Now let’s click Pie Chart button on the top of the pop up window. This time we are presented with a pie chart, where all the tasks are presented as part of the whole cake (the whole cake being the whole project). If we select any of the tasks from the drop down menu on the bottom right side we can expose that task.

One last thing I will mention in this quick introduction of scheduling program is the information that you can see if you select a row in the schedule, and then click the Information button (6th one from the left). You can see what was happening to the given task since the beginning. For example let’s select Final Clean-up and occupancy and click Information. In the list than opens below the schedule we can see the entire history of this task. From the moment it was created, and it’s name changed to the expense we added at the end. It is also noted if the user (that is us using the program) was responsible for the change or was the change done automatically (example shown in the image below).

Try the program out, let me know what you think of it and please provide some feedback about what you like, what you dislike, what you would want to see changed or added.

Thanx!

, , , , , ,

5 Comments