/*
 * Author       : glaforge
 * Generated on : 23-Nov-2009 01:34:21
 * Version      : 3.0
 */
application "Library"
{
    type = public
    allow html = true
    date format = "dd-MMM-yyyy"
    time zone = "America/Los_Angeles"
    section Library_Home
    {
        displayname = "Library Home"
        list  New_books
        {
            displayname = "New books"
            show  all  rows  from  Books 
            (
                Title
                Publisher
                Authors
            )
            filters 
            (
                Publisher
                Authors
                Acquired
            )
            options
            (
                display rows = 100
            )
            permission
            (
                add = true
                edit = true
                delete = true
            )
        }

    }

    section Books
    {
        form  Books
        {
            displayname  =  "Add a new book"
            
            Title
            (
                type  =  text
            )

            ISBN
            (
                type  =  text
            )

            Publisher
            (
                type  =  picklist
                values  =  Publishers.Name
            )

            Authors
            (
                type  =  list
                values  =  Author.Lastname
            )

            Acquired
            (
                type  =  date
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Books_view
        {
            displayname = "Books view"
            show  all  rows  from  Books 
            (
                Title
                ISBN
                Publisher
                Authors
                Acquired
            )
            filters 
            (
                Publisher
                Authors
                Acquired
            )
            options
            (
                display rows = 100
            )
            permission
            (
                add = true
                edit = true
                delete = true
            )
        }

    }

    section Authors
    {
        form  Author
        {
            displayname  =  "Add a new author"
            
            Firstname
            (
                type  =  text
            )

            Lastname
            (
                type  =  text
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Author_view
        {
            displayname = "Author view"
            show  all  rows  from  Author 
            (
                Firstname
                Lastname
            )
            options
            (
                display rows = 100
            )
            permission
            (
                add = true
                edit = true
                delete = true
            )
        }

    }

    section Publishers
    {
        form  Publishers
        {
            displayname  =  "Add a new publisher"
            
            Name
            (
                type  =  text
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Publishers_view
        {
            displayname = "Publishers view"
            show  all  rows  from  Publishers 
            (
                Name
            )
            options
            (
                display rows = 100
            )
            permission
            (
                add = true
                edit = true
                delete = true
            )
        }

    }

    section Readers
    {
        form  Readers
        {
            displayname  =  "Add a new reader"
            
            Firstname
            (
                type  =  text
            )

            Lastname
            (
                type  =  text
            )

            unique  Trigram
            (
                type  =  text
                width  =  10
                maxchar  =  3
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Readers_view
        {
            displayname = "Readers view"
            show  all  rows  from  Readers 
            (
                Firstname
                Lastname
                Trigram
            )
            options
            (
                display rows = 100
            )
            permission
            (
                add = true
                edit = true
                delete = true
            )
        }

    }

    section Borrowed_Books
    {
        displayname = "Borrowed Books"
        form  Borrowed_Books
        {
            displayname  =  "Borrow a book"
            
            must  have  Book
            (
                type  =  picklist
                values  =  Books.Title
                sortorder  =  ascending
            )

            must  have  Borrower
            (
                type  =  picklist
                values  =  Readers.Trigram
                sortorder  =  ascending
            )

            must  have  Borrowed_since
            (
                displayname  =  "Borrowed since"
                type  =  date
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Borrowed_Books_view
        {
            displayname = "Borrowed Books view"
            show  all  rows  from  Borrowed_Books 
            (
                Book
                Borrower
                Borrowed_since as "Borrowed since"
            )
            filters 
            (
                Book
                Borrower
                Borrowed_since
            )
            options
            (
                display rows = 100
            )
            permission
            (
                add = true
                edit = true
                delete = true
            )
        }

    }

    section Reviews
    {
        form  Reviews
        {
            displayname  =  "Create a new review"
            
            must  have  Book
            (
                type  =  picklist
                values  =  Books.Title
                sortorder  =  ascending
            )

            Reviewed_by
            (
                displayname  =  "Reviewed by"
                type  =  picklist
                values  =  Readers.Trigram
            )

            Rating
            (
                type  =  number
                maxchar  =  1
            )

            Comment
            (
                type  =  textarea
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Reviews_view
        {
            displayname = "Reviews view"
            show  all  rows  from  Reviews 
            (
                Book
                Comment
                Rating
                Reviewed_by as "Reviewed by"
            )
            filters 
            (
                Book
                Reviewed_by
            )
            options
            (
                display rows = 100
            )
            permission
            (
                add = true
                edit = true
                delete = true
            )
        }

    }

}
