Our Meeho!™ Blog brings you general news, tech stuff, tips, inspiration and more in relation to the Meeho!™ platform.

Sign up now for free!

Archive for the ‘Examples of use’ category

» Time Zone Conversion with java.util.Date

Posted by Anders Østergaard Jensen on 3/9 2010 at 3:54 AM

When building global web sites it is often necessary to display timestamps within the user’s own time zone. Ruby on Rails contains built-in functionality for this, whereas Java requires a more manual approach. In the following I will describe how such time zone conversion (and mapping) is easily implemented in Java.

The following method creates a time zone conversion from a standard java.util.Date (which defaults to the machine’s local time zone) to a specific time zone:

public static String formatDanishDate(Date d, String tz) {
DateFormat fmt = new SimpleDateFormat(”d/MM/yyyy ‘kl.’ HH:mm Z”);
TimeZone zone = getTimeZone(tz);
fmt.setTimeZone(zone);
return fmt.format(d);
}
public static String formatUSDate(Date d, String tz) {
DateFormat fmt = new SimpleDateFormat(”EEE, d/MM/yyyy ‘at’ KK:mm a Z”);
TimeZone zone = getTimeZone(tz);
logger.error(”+++ Chosen tz was: ” + zone.getDisplayName());
fmt.setTimeZone(zone);
logger.error(”LOL FORMAT: ” + fmt.format(d));
return fmt.format(d);
}
public static String formatUSDate(Date d, String tz) {

    DateFormat fmt = new SimpleDateFormat("EEE, d/MM/yyyy 'at' KK:mm a Z");

    TimeZone zone = getTimeZone(tz);

    fmt.setTimeZone(zone);

    return fmt.format(d);

  }

The above method depends on the following support function that searches through the Java library of supported time zones (with lower case matching).  If no match is found, getDefault() is returned. According to the SDK Javadoc, the default time zone depends on your system locale (if you are in Copenhagen, the standard time zone will be Europe/Copenhagen).

  public static TimeZone getTimeZone(String tz) {

    TimeZone retVal;

    for (String id: TimeZone.getAvailableIDs()) {

      if (id.toLowerCase().contains(tz.toLowerCase())) {

        retVal = TimeZone.getTimeZone(id);

        return retVal;

      }

    }

    return TimeZone.getDefault();

  }

Using the lowercase match search is especially useful if you are using time zones across different applications or frameworks with the same database. Fx. Ruby on Rails only stores the selected session time zone with the last identifier (e.g. ‘Copenhagen’ rather than ‘Europe/Copenhagen’), which makes it impossible to implement a one-to-one mapping between the two environments. Using getTimeZone(”Sydney”) or getTimeZone(”Copenhagen”) will thus return the Java time zone “Australia/Sydney” and ”Europe/Copenhagen” respectively.

Finally, the SimpleDateFormat lets you format the now converted Date representation to a localized format. Thus, the user can now also choose from different date formats in your application. This Javadoc link clarifies the different formatting options. For instance, a proper date representation for the Danish calendar would be:

DateFormat fmt = new SimpleDateFormat("d/MM/yyyy 'kl.' HH:mm Z");

Please let us know if you have further efficient methods for time zone conversion in Java and across different platforms.

» Examples of use #5: specific Quick search

Posted by Kasper Tidemann on 11/27 2009 at 5:10 AM

If you use Quick search then you’re able to search specifically for clients, for instance, by writing “cl:” in front of whichever client you’re searching for. The same goes for contacts, projects, and files as follows:

  • cl: = specific search for clients
  • co: = specific search for contacts
  • pr: = specific search for projects
  • fi: = specific search for files

The below image shows a search where I’m only searching for clients:

Hurtig søgning - kun i kunderne i Meeho!™.

Quick search - specifically searching for clients in Meeho!™. (Please note that the screenshot is in Danish.)

» Examples of use #4: Time tracking

Posted by Kasper Tidemann on 10/21 2009 at 12:15 AM

The fourth installment of our Examples of use series is about time tracking in Meeho!™. The most important aspect of a business selling work hours – i.e. marketing bureaus or consultancies – is to make sure that all working hours are registered and invoiced. In the following, I will tell you how it actually works in Meeho!™.

1) Task types

In Meeho!™, we work with the term a task type, which could be “Development” at an hourly rate of $100, for instance. The task types can both be setup via the Time tracking tab in a project or via Configuration where global task types can be saved – that is, task types that your business often make use of. It looks like this:

Opgavetyper under Tidsforbrug under et projekt.

Task types under Time tracking in a project. (Please note that the screenshot is in Danish.)

2) Time tracking

The time tracking itself is also done via the Time tracking tab in a project. Here, you use the add box to add time tracking entries, for instance 2 hours of the type “Development” with the description “2 hours of development work for the client”. It looks like this:

Her ses det registrerede tidsforbrug under et projekt.

Here, you see the registered time tracking in a project. (Please note that the screenshot is in Danish.)

3) The status box at the bottom of Time tracking

At the bottom of Time tracking, a status box of the registered time tracking in the project is shown. It is here that you see the relation between the time tracking you’ve registered and invoiced plus the time tracking you’ve budgetted (a topic we get to in a minute). Have a look at the below image:

Status-linjen i bunden af Tidsforbrug, der angiver hvor meget tid, der er registreret.

The status box at the bottom of Time tracking telling you just how much time has been registered. (Please note that the screenshot is in Danish.)

But why does Meeho!™ show the total amount of money that our time tracking comprises with a red color?

The explanation goes: whenever you register time tracking in your project, you do so because you have spent your time doing something. But at the time of registration, you probably haven’t invoiced your work yet, which is why you – in reality – is registering an expense on your part, because you have spent your time on something that has yet to be paid. Until it is paid, the registered time tracking entry is an expense. That is why the registered time tracking amount in your currency is shown by a red color.

4) Invoiced time tracking

Luckily, invoiced time tracking comes to the rescue. If you look at the screenshot displaying the three time tracking entries, you’ll notice a button to the right defining whether or not the given time tracking entry has been invoiced. If you press the button to the right of an entry, magic happens. Have a look at this screenshot:

Status-linjen i bunden af Tidsforbrug, hvor der nu både vises det udestående tidsforbrug og det fakturerede tidsforbrug.

This way, you’re able to continuously define which entries you’ve invoiced and quickly get an overview of the work you’re yet to invoice and get paid for. Easy and simple.

5) Time budget

Finally, the option of doing time budgets is up for a walkthrough. With Time budget, you can do estimates on how much time you plan on spending on a project – obviously, this is perfect material to show the client you’re working with. You can then compare the budget you’ve made with the actual time tracking registrations and decide whether or not the quote you have presented to the client was too poorly estimated when all hours have been tracked and you get the complete overview.

The complete image of time tracking could look as follows:

Det samlede billede af Tidsforbrug under et projekt.

A complete image of time tracking in a project. (Please note that the screenshot is in Danish.)

» Examples of use #3: Projects and tasks

Posted by Kasper Tidemann on 10/20 2009 at 3:53 PM

Above all, Meeho!™ is a tool that can help you divide your work into smaller parts, giving you a better overview and making you work more effectively.

There are many ways of using Meeho!™. Let us imagine a marketing bureau that lands a new client, Client A. Client A has ordered a new logo, new stationary, and a new web site. The three demands all consist of different tasks that need to be carried out, and here Meeho!™ rises to the occation as a tool providing an overview of the entire process:

First, you start by adding a project covering the development of the new logo. Via the Planning tab in the project, you add the different tasks that need to be carried out before the logo is done. It can look something like this:

Planlægning under et projekt, hvor de forskellige delopgaver er indtastet.

Planning in a project showcasing the different tasks we have added. Please note that the image is cropped. (And note that the screenshot is in Danish.)

Then, you do the same in relation to the development of the new web site plus the stationary: you create projects and type in the different tasks they both consist of.

You continuously make sure to tick off the tasks once they’re completed. Then they’ll be lined-through, looking like this:

Planlægning under et projekt, hvor et par opgaver er streget ud.

Planning in a project where a couple of tasks are lined-through. (Please note that the screenshot is in Danish.)

This way, Meeho!™ gives you a continuous overview of which tasks are completed and which yet remain to be so.

When you wish to view the three projects all in one place, the Project overview can be used. Project overview will look like this:

Projektoversigt i Meeho!™, hvor man kan se status på sine projekter

Project overview in Meeho!™ showing you the status of the projects. (Please note that the screenshot is in Danish.)

The very simple way of going about project management is one of the key points of Meeho!™. It’s all about dividing the bigger tasks into smaller ones, making sure that the right users are responsible for each task – and then getting them all done for the final overview of how the projects are coming along.