How do I design this new requirement

Help me please. I’m not sure how to design the following new requirement. This feature should work in the Notes Client (although I may be able to change that).

The current application, called WIP, has Project Information forms (PI forms). One Project form form for each project. A Project form has multiple resource (that is, people) listed on it. A resource may be listed on multiple projects. A Resource form is also created for each resource on each project (if a resource is split between two projects, they have two Resource forms) in another database (the Resource database).

The basics of the new requirements are: create a view listing projects along the top and resources down the left. Obviously, not a Notes View since we can’t do dynamic columns (right?).

In each cell, where the resource intersects with project, would be the sum of the number of hours the resource is reserved for the project on the following week. In other words, the intersection of Jeffrey A Schwarz and WIP would show how many hours I am assigned to WIP next week (1/14/08 to 1/20/08) – approximatly 100 hrs (well, it feels that way).

The user can click on that cell and enter a new number. The user can double click on that cell and receive a popup which lets them reserve hours for each day next week.

Many users may be updating this view at the same time – there are many Resource Managers who have to make decisions on their resources by a specific time – Wednesday at noon – each week. In other words, about 100% of the company’s resource managers will be updating on this page at 11:59 every Wednesday.

I could store the resources’ hours on the PI form or the Resource form; I think the Resource form is better.

But how do I present the view? Should I aggregate the time via Lotusscript and then create an HTML table? How do I make the cells in a table clickable?

(Even better, how do I make the numbers update in real time like they do on Yahoo Quotes (before 4pm): http://tinyurl.com/26ug3a).

These are the basics. I don’t know if I like this solution since HTML tables are difficult to display correctly in the Client. Any thoughts on how to design it?

Thanks in advance.

-Jeff

Subject: How do I design this new requirement

I would be astounded if you could get this working in the Notes client. You are going to spend SO much time getting this interface to work, rather than developing the real and important application logic part. And it’s sure to be a huge bug source.

I guess anything is possible, but I’d couch it to the powers-that-be as a cost/benefit thing. Internal costs count.

App with crazy cool interface: 300 hrs

App with normal notes interface: 100 hrs

Anyway…The only way I can think to do this would be to make it a web application.

You can seriously ‘bend’ a notes view using pass-thru HTML but there are limits. Instead maybe you could generate this ‘view’ via a LS agent. Cons: I hate doing this because you a) lose the view caching and b) suffer from concurrent agent limits.

Then for cell edits, and easier way could be to have a little edit link in each cell that opens a pop up. Then its just a regular web form/submit.

To get all the updating cells and in-cell edits, what if you just abandon notes for the UI and get all Web2.0 with Html and JS and such. Use Notes as the DB via Web Services. Never tried that.

Maybe DON’T use Notes at all. The right tool for the right job. Your really fighting it already. Make it in .NET or JAVA like the site you are trying to emulate did. Notes is fast and easy, but not necessarily that powerful. All those concurrent edits, the relational data structure. Ugh!

Good luck!

Subject: RE: How do I design this new requirement

We will probably go with an HTML interface. The information we have already exists in a Notes app which will continue to be used to create and manage the projects (this part is for resource management, only one part of the app). So Notes it is, but certainly not the Client.

I guess I have to learn how to create a Javascript model (everythin in JS seems to be done with models) of the information, and create a table with that. Then program the table to show only the appropriate columns and allow for clicking and double clicking on the cells.

Anyone know where I can learn how to do that?

Thanks,

-Jeff

Subject: How do I design this new requirement

Have you considered writing a Swing applet and embedding it in a form or page?

Within the applet, you could have a JTable with a dynamic number of columns based upon a lookup view of projects and a number of rows based upon users. Cells in a JTable can allow editing and there is an event that can be trapped when the user changes a value in a cell, allowing you to grab the new cell value and update a document.

I’d estimate about 60 hours of work for the applet, assuming a working knowledge of Swing, JTable and TableModel

Subject: RE: How do I design this new requirement

assuming a working knowledge of Swing, JTable and TableModel

I have very basic Java knowledge. Are these all Java objects? How do you get to the Java app? Do you embed it in a page and then call the page?

Subject: RE: How do I design this new requirement

I have very basic Java knowledge. Are these all Java objects?

Yes, there’s a UI package called Swing (javax.swing.*) that’s included in the java distribution, you can create a JApplet and in the JPanel, add a JTable.

How do you get to the Java app? Do you embed it in a page and then call the page?

Yes. The Notes client would then open the page (or form) and the applet would load, get a handle to the notes session from the page/form and retrieve data.

This isn’t a great solution, but if this has to be done in a Notes client, it’s one way to present dynamic columns/rows.

Subject: RE: How do I design this new requirement

has to be done in a Notes client

It can run on a web page, but the web page will have to be in the Notes client (or at least a frame in the client).