Jump to: navigation, search

Difference between revisions of "Scout/Tutorial/3.8/Minicrm/Table Field"

< Scout‎ | Tutorial‎ | 3.8‎ | Minicrm
(Form: lookup call)
(Form: participants column)
Line 36: Line 36:
 
Create a '''VisitForm''' with a '''GroupBox''' (this just looks better). Inside the group box, add two fields: '''StartField''' and '''EndField''', both of them dates.
 
Create a '''VisitForm''' with a '''GroupBox''' (this just looks better). Inside the group box, add two fields: '''StartField''' and '''EndField''', both of them dates.
  
Finally, add a '''ParticipantTableField'''. Use '''Grid H''' 4. More if you typically have large meetings. :)
+
Finally, add a '''ParticipantsField''' of type '''TableField'''. Use '''Grid H''' 4. More if you typically have large meetings. :)
  
 
Add a '''NewVisitMenu''' and a '''EditVisitMenu''' to the '''VisitTablePage'''.
 
Add a '''NewVisitMenu''' and a '''EditVisitMenu''' to the '''VisitTablePage'''.
Line 61: Line 61:
 
{{warning|Permission denied|If you added [[{{BASEPAGENAME}}/Permissions|Permissions]] to your Minicrm, you will need to '''grant yourself the permission''' to create, read and update visits before you can use the menu!}}
 
{{warning|Permission denied|If you added [[{{BASEPAGENAME}}/Permissions|Permissions]] to your Minicrm, you will need to '''grant yourself the permission''' to create, read and update visits before you can use the menu!}}
  
Note how '''we did not add a column''' to the '''ParticipantTableField'''. Before we do that, we need to write a '''PersonLookupCall'''. In the '''PersonLookupService''', use the following SQL statement:
+
Note how '''we did not add a column''' to the '''ParticipantsField'''. Before we do that, we need to write a '''PersonLookupCall'''. In the '''PersonLookupService''', use the following SQL statement:
  
 
<source lang="java">
 
<source lang="java">
Line 73: Line 73:
 
     "<all> </all> ";
 
     "<all> </all> ";
 
</source>
 
</source>
 +
 +
Using this, we can create a '''ParticipantsColumn''' for the '''ParticipantsField'''.

Revision as of 10:55, 25 October 2012


Scout
Wiki Home
Website
DownloadGit
Community
ForumsBlogTwitter
Bugzilla
Bugzilla
Note.png
Scout Tutorial
This chapter talks about table fields: tables as part of forms.
This page is an optional addition to the Minicrm Step-by-Step Tutorial and uses it as a starting point.


What is this chapter about?

We will build a new table page for the Minicrm. It will list visits (or appointments, if you want). We will build a new form to edit visits. This form will contain a table field listing the people participating.

This chapter assumes that you're pretty proficient at creating tables, forms and services. No more hand-holding. :)

Database

The Apache Derby example database already contains the following tables:

VISIT            VISIT_PARTICIPANT 
---------------  -----------------
VISIT_NR         VISIT_NR
EVT_FROM         PERSON_NR
EVT_TO           
RESPONSIBLE_NR   
CONTACT_NR       

If you want to take a look at the database using a command line tool, check this section of the tutorial.

Table Page

Start with VisitTablePage and a few columns: VisitNrColumn, StartColumn, EndColumn and OrganizerColumn.

Result:

Minicrm Visits Rayo.png

(Note: We switched the Swing client to the Rayo Look & Feel.)

Form

Create a VisitForm with a GroupBox (this just looks better). Inside the group box, add two fields: StartField and EndField, both of them dates.

Finally, add a ParticipantsField of type TableField. Use Grid H 4. More if you typically have large meetings. :)

Add a NewVisitMenu and a EditVisitMenu to the VisitTablePage.

Don't forget to pass the selected visit to the ModifyHandler in your edit menu:

@Override
protected void execAction() throws ProcessingException {
  VisitForm form = new VisitForm();
  form.setVisitNr(getTable().getVisitNrColumn().getSelectedValue());
  form.startModify();
  form.waitFor();
  if (form.isFormStored()) {
    reloadPage();
  }
}

Result:

Minicrm Visit Form Rayo.png

Warning2.png
Permission denied
If you added Permissions to your Minicrm, you will need to grant yourself the permission to create, read and update visits before you can use the menu!


Note how we did not add a column to the ParticipantsField. Before we do that, we need to write a PersonLookupCall. In the PersonLookupService, use the following SQL statement:

return "" +
    "SELECT  P.PERSON_NR, " +
    "        P.LAST_NAME ||', '|| P.FIRST_NAME " +
    "FROM    PERSON P " +
    "WHERE   1=1 " +
    "<key>   AND P.PERSON_NR = :key </key> " +
    "<text>  AND UPPER(P.LAST_NAME ||', '|| P.FIRST_NAME) LIKE UPPER(:text||'%') </text> " +
    "<all> </all> ";

Using this, we can create a ParticipantsColumn for the ParticipantsField.