Advice Needed for Timesheet Control in Web App

I am looking to create a timesheet web app, and i would like some advice on the best type of control to use for the data input. I envision a pretty standard timesheet-looking grid, where each row would be a task the employee is assigned to, with columns in that row for the task name, hours worked for each day of the week (Sun - Sat), and total hours for the week. There could be quite a few rows.

I think the WebListBox handles most everything i need, except the data entry into a particular cell. The scrolling WebContainer would work as well, although the quantity of WebTextFields that could be required might start to cause issues.

I’m open to just about anything, and would appreciate any input. Thanks!

1 Like

You may want to take a look at GraffitiCalendar [docs] (which has different views that may provide the type of flexibility you need – or discover you want) or GraffitiTimeline [docs]. With some input methods, both could do exactly what you’re looking for.

1 Like

I can vouch for the flexibility that Xojo offers here.

Depending on your budget and time frame, if you are comfortable with dynamically creating and adding controls, then you could build your own listbox-type control with nested webcontainers. The webcontainers could be used for each row, and could “house” multiple webtextfields. You’d be surprised at how many webtextfields Xojo web can deal with.

I’d focus on keeping the rows and columns very simple - use them more for layout. If that approach works, and you do not require any “niftyness”, such as sorting data based on column headers, etc., then you can get far with native Xojo.

you can also search for your prefered javascript (free) library that does such a timesheet control
and embed it in a xojo websdk control.

I have already implemented a desktop version using this same approach, so I think I’ll probably follow that pattern for the web app.


1 Like

You should consider breaking it out in pages of data if you’re using a large amount of data, to avoid using too much memory. Also, filtering should be considered or someone’s eyes will glaze over in a short amount of time. Sorting the sheet by fields of data will help a user access the data they want or organize their data quickly. So you might consider offering a sort option.

You can use containers - this is useful if you are using a main screen and are presenting a user with multiple options or functions to use by way of clicking a button to bring a feature to use.