ProductReview Example: Difference between revisions

From DataFlex Wiki
Jump to navigationJump to search
Jka (talk | contribs)
m hmm. this is a 4GL language. let's skip the coding in the example :P
m Changed from Web Programming to Web Applications category
 
(52 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{underconst}}
= Introduction =


== Functionality ==
This page contains a description of an example project that can be used to study different implementation techniques using VDF as a backend.
 
This example demonstrates how to create a [[AJAX]] solution using [[Visual DataFlex]]
 
The overall goal is to be able to see what users think about a particular item . As an added benefit - users can also share information about where to buy the particular items.


In this example the overall goal is to be able to see what users think about a particular item . As an added benefit - users can also share information about where to buy the particular items.


To accomplish this, then users should be able to:
To accomplish this, then users should be able to:


*login
*login
*choose an item from a list (use a [[AJAX Lookup List]] )
*choose an item from a list
*enter information about a known item ( [[AJAX Form]] )
*enter information about a known item  
**supply information about the place where an item was bought.
*supply information about the place where an item was bought.
*supply a rating of an item  
*supply a review of an item  
*Overview supplied ratings from other users
*Overview supplied reviews from other users
 
 
The system will implemented  as a web application, [[Using the AJAX Library]] and having a datamodel [[Using DataDictionaries]] .
 
== Data model [[Using DataDictionaries]] ==
 
=== Table layout  ===
We want to store information about users, places, purchases and known items. A user should be either a normal user or an administrator. The other tables should hold sufficient information about the items purchased and how the users liked them.
 
Create these tables in the database builder and create the associated data dictionaries .
 
The following data dictionaries  should now be available:
 
*Item_DataDictionary
*Place_DataDictionary
*Purchase_DataDictionary
*Rating_DataDictionary
*UserInfo_DataDictionary
 
== Application design  [[Using the AJAX Library]] ==


==== [[AJAX WebService Object]]  ====
Create a [[AJAX WebService Object]] to call from the clientside VDF Ajax lib. This webservice will be responsible for handling the serverside calls.


this is the point of entry on the serverside (where information will be extracted from)
The workspace is available here https://github.com/jacobandresen/ProductReview


==== [[AJAX Session management]] ====
= [[DataDictionary|Data Dictionaries]] =
We want to store information about users, places and known items. The other tables should hold sufficient information about the items and how the users liked them.


*UserLogin: checking if the supplied password is correct. Use UserInfo_DD
The following data dictionaries  should now be available (Note that attributes like "UserId" in Token implies a index  on UserId on Token and a relation to the table "User")
*HasRights: does the logged in user have the rights to perform the chosen function. Use UserInfo_DD


==== [[Using AJAX Web Browser Objects]] ====
==User==
*item.wo : handling information about items.
*UserId (Numeric) 
*userinfo.wo : handling information about users
*LoginName (Ascii)
*place.wo: handling info about places
*FirstName (Ascii)
*purchase.wo: handle information about places
*LastName (Ascii)
*rating.wo: handle information about ratings
*Password (Ascii)
*EmailAddress (Ascii)
*Rights (Ascii)
*StreetAddress (Ascii)
*City (Ascii)
*ZIPCode (Ascii)
*Country (Ascii)


The Web Object should use the corresponding data dictionaries
==Token==
*UserId (Numeric)
*TokenValue (Ascii)
*LastAccessed (Date)


==== Creating the frontend logic ====
==Shop==
The web markup should be designed around forms, that evolve around the web objects.
*ShopId (Numeric)
*Name (Ascii)
*Type (Numeric)
*Description (Ascii)
*StreetAddress (Ascii)
*City (Ascii)
*ZIPCode (Ascii)
*Country (Ascii)


Version 1.1 of the AJAX Library has wizards to create most of this functionality.
==Product==
*ProductId (Numeric)
*Name (Ascii)
*Type (Numeric)
*Description (Ascii)
*ShopId (Numeric)
*Price (Numeric)


*Rating.asp: a list of items with detailed ratings. show details about related users and items.
==Review==
**Should use a [[AJAX Lookup list]] to choose the item to supply a rating for
*ReviewId (Numeric)
*RateItem.asp: a form to supply rating information about a particular item ( [[AJAX Form]] )
*ItemId (Numeric)
*Place.asp: information about a place where items can be bought ( [[AJAX Form]] )
*UserId (Numeric)
*Purchases.asp: information about what items users has bought at what place ( [[AJAX Form]] )
*Rating (Numeric)
*Comment (Ascii)


== Implementation ==
= Implementation =


[[ProductReview VDF AJAX implementation]]


[[Category: Web Programming]]
[[Category: Web Applications]]
[[Category: Data Dictionaries]]

Latest revision as of 14:14, 8 April 2020

Introduction

This page contains a description of an example project that can be used to study different implementation techniques using VDF as a backend.

In this example the overall goal is to be able to see what users think about a particular item . As an added benefit - users can also share information about where to buy the particular items.

To accomplish this, then users should be able to:

  • login
  • choose an item from a list
  • enter information about a known item
  • supply information about the place where an item was bought.
  • supply a review of an item
  • Overview supplied reviews from other users


The workspace is available here https://github.com/jacobandresen/ProductReview

Data Dictionaries

We want to store information about users, places and known items. The other tables should hold sufficient information about the items and how the users liked them.

The following data dictionaries should now be available (Note that attributes like "UserId" in Token implies a index on UserId on Token and a relation to the table "User")

User

  • UserId (Numeric)
  • LoginName (Ascii)
  • FirstName (Ascii)
  • LastName (Ascii)
  • Password (Ascii)
  • EmailAddress (Ascii)
  • Rights (Ascii)
  • StreetAddress (Ascii)
  • City (Ascii)
  • ZIPCode (Ascii)
  • Country (Ascii)

Token

  • UserId (Numeric)
  • TokenValue (Ascii)
  • LastAccessed (Date)

Shop

  • ShopId (Numeric)
  • Name (Ascii)
  • Type (Numeric)
  • Description (Ascii)
  • StreetAddress (Ascii)
  • City (Ascii)
  • ZIPCode (Ascii)
  • Country (Ascii)

Product

  • ProductId (Numeric)
  • Name (Ascii)
  • Type (Numeric)
  • Description (Ascii)
  • ShopId (Numeric)
  • Price (Numeric)

Review

  • ReviewId (Numeric)
  • ItemId (Numeric)
  • UserId (Numeric)
  • Rating (Numeric)
  • Comment (Ascii)

Implementation

ProductReview VDF AJAX implementation