Homepage Features -
Description and Explanation of Features on Homepage:
The homepage carries a few features that connect to some functionality in the RDB. These are submit buttons that enable the user to listen to audio clips of recordings of a featured artist or event. [Mecca’s homepage is found at http://inside.urbanschool.org/~ckaris/MECCA/mecca_index.html. ]
-
Controls Used for the Homepage Listen feature
[A note on the naming convention used for controls for this feature as well as other features described for this system: We follow the class convention of putting a “c_” as a prefix to the names of controls. However, we distinguish between the types of controls by adding a 3-letter designation for the control name such that the “txt” in c_txtSearch means it is a textbox type of control. The other prefixes are: “opt” for radio/option buttons (e.g. c_optArtist), “cmd” for Submit buttons (e.g. c_cmdGoSearch, cmd stands for command), “drp” for drop-down boxes (e.g. c_drpStyles), “frm” for forms (e.g. c_frmSearch), “chk” for checkbox, and “txa” for textarea.]
Friendly Name
|
System Name
|
Control Type
|
Hooked to What in the RDB or IR system?
|
Comment
|
Listen
|
c_frmListen/ c_cmdListen
|
Form/Submit button.
|
Hooked to the particular id of the artist, recording, instrument, album, or song being featured.
|
We anticipate these features to change often.
|
-
Queries for the Homepage feature: [using the Nelly Furtado feature currently on the homepage – supposing Nelly’s ID in the Artist_ID field of the Artist table in the RDB is 6]
Controls Involved
|
SQL
|
Comments
|
c_frmListen/ c_cmdListen
|
SELECT Artist.Artist_ID, Recording.Recording_File
FROM Artist JOIN Recording ON Artist.Artist_ID=Recording.Artist_Performer_ID
WHERE Artist.Artist_ID= Request (6);
|
The Request ( ) in the WHERE clause is an ASP syntax. We only use it to show that the link that the user chooses from the home page will be processed as a request.
|
Quick Search Feature
-
Description and Explanation for the Quick Search feature:
The quick search feature is for users who just want to type in a few terms and get some results. It allows users to search the system by either Artist name, Album title, Song title, or Lyrics. Generally, this feature is for users with a known artist name, album title, song title, or lyric parts. It seems from the user persona that some of Maggie’s and Lou’s interest in music started with a known artist name, or album/song title that they have heard about from their friends. This feature will be located prominently on the homepage but will also be on all the major pages of the site to allow the user to easily do another search if a previous search is not meeting his/her need or if he/she is reminded of an artist or song that he/she wants to know more about while on another page.
We favor using an exclusive-choice type of controls like the radio/option buttons that allow only one button to be selected at any one time to guide as well as simplify the user’s search. The use of qualifiers in parentheses after the radio button label further guides the user to the kinds of terms expected for each option. A short instruction inside the search textbox might be of further help for younger members of the home-schooling family. The use of bigger and more colorful fonts for the words “Search” and “Go” should appeal to both children and parents in a family.
-
Controls used for the Quick Search feature:
Friendly Name
|
System Name
|
Control Type
|
Hooked to What in the RDB or IR system?
|
Comment
|
Search
(type your search term here)
|
c_txtSearch
|
Textbox
|
Depends on the option the user chooses between Artists, Songs, Albums, and Lyrics
|
The user can only choose one option at a time.
|
Artists (Names)
|
c_optArtist
|
Radio/Option Button
|
Hooked to the Artist_Name field of the Artist table.
|
|
Albums
(Titles)
|
c_optAlbum
|
Radio/Option Button
|
Hooked to the Album_Title field of the Album table.
|
|
Songs (Titles)
|
c_optSong
|
Radio/Option Button
|
Hooked to the Song_Name field of the Song table.
|
|
Lyrics
|
c_optLyrics
|
Radio/Option Button
|
Hooked to the inverted index of song lyrics to get the accession number that will point to the full text of the lyrics.
|
|
Go!
|
c_frmSearch
/
c_cmdGoSearch
|
Form/Submit Button
|
Calls the page indicated in the “Action” attribute of the search form and submits the option selected and the text entered in c_textSearch for processing.
|
|
-
Queries for the Quick Search feature:
The search feature is mostly for retrieving data and does not involve initializing controls nor storing data.
Retrieving Information
Controls Involved
|
SQL
|
Comments
|
c_optArtist
c_txtSearch
c_frmSearch/ c_cmdGoSearch
|
From Search Form to Results Page:
SELECT Artist.Artist_ID, Artist.Artist_Name, Artist.Artist_DOB, Image.Image_File
FROM Artist JOIN Image ON Artist.Image_ID=Image.Image_ID
WHERE Artist.Artist_Name LIKE
“<*c_txtSearch*>”
ORDER BY Artist.Artist_Name;
From Results Page to Details Page, two queries will be used to create two recordsets:
[To show details of artist like bio, link to website, and image, etc.]
SELECT Artist.*, Image.Image_File, IRinvertedFile.AccessionNumber
FROM IRinvertedFile
JOIN Artist ON Artist_Biography=IRinvertedFile.AccessionNumber
JOIN Image ON Artist.Image_ID=Image.Image_ID
WHERE Artist.Artist_ID=Request (ArtistID);
[To show a listing of albums that the Artist has contributed on, either as performer or composer.]
SELECT DISTINCT Album.Album_ID, Album.Album_Title
FROM Album JOIN Recording ON Recording.Album_ID=Album.Album_ID
WHERE Recording.Artist_Performer_ID=Request (ArtistID) OR Recording.Artist_Composer_ID=Request (ArtistID);
|
The name of the artist on the results page will be a hyperlink to the details page. The link will show the artist name but the parameter to be passed on to the detail page is the Artist’s ID.
|
c_optAlbum
c_txtSearch
c_frmSearch/ c_cmdGoSearch
|
From Search Form to Results Page:
SELECT Album.Album_ID, Album.Album_Title, Image.Image_File
FROM Album JOIN Image ON Album.Image_ID=Image.Image_ID
WHERE Album.Album_Title LIKE “<*c_txtSearch*>”
ORDER BY Album.Album_Title;
From Results Page to Details Page
[To show review of the album and a list of the recording names included in the album as well as audio clips of the recordings.]
SELECT Album.*, Image.Image_File, Recording_Name, Recording_ID, IRinvertedFile.AccessionNumber
FROM Album
JOIN IRinvertedFile ON Album.Album_Commentary=IRinvertedFile.AccessionNumber
JOIN Recording ON Recording.Album_ID=Album.Album_ID
JOIN Image ON Album.Image_ID=Image.Image_ID
WHERE Album.Album_ID=Request (AlbumID);
|
The title of the album on the results page will be a hyperlink to the details page. The link will show the album image but the parameter to be passed on to the detail page is the Album ID.
The list of hyperlinked Recording Names in the details page will pass on RecodingIDs to the page that processes details page 2 in the Song search process.
|
c_optSong
c_txtSearch
c_frmSearch/ c_cmdGo
|
From Search Form to Results Page:
SELECT Song.Song_ID, Song_Name, COUNT (Recording.Recording_ID) as NumberOfRecordings
FROM Song INNER JOIN Recording ON Song.Song_ID=Recording.Song_ID
WHERE Song_Name LIKE “<*c_txtSearch*>”
GROUP BY Song_ID, Song_Name;
[If user enters more than one term, the condition in the WHERE clause should be written as Song_Name LIKE “” AND “” AND “” etc.]
From Results Page to Details Page1:
SELECT Song.Song_Name, Composer.Artist_Name AS Composer_Name, Composer.Artist_ID AS Composer_ID, Perfomer.Artist_Name AS Performer_Name, Performer.Artist_ID AS Performer_ID, Recording.Style_Name, Recording.Recording_Date, Recording.Song_ID, Recording.Recording_ID
FROM Song
JOIN Recording On Song.Song_ID=Recording.Song_ID
JOIN Artist AS Composer ON Recording.Artist_Composer_ID=Composer.Artist_ID
JOIN Artist AS Performer ON Recording.Artist_Performer_ID=Performer.Artist_ID
WHERE Song.Song_ID=Request(SongID)
ORDER BY Song.Song_Name;
From Details Page1 to Details Page2:
SELECT Image.Image_File, Composer.Artist_Name AS Composer_Name, Performer.Artist_Name AS Performer_Name, Recording.Style_Name, Recording.Recording_Date, Recording.Recording_Credits, Recording.Recording_ID, Recording.Recording_File
FROM Recording
JOIN Artist AS Composer ON Recording.Artist_Composer_ID=Composer.Artist_ID
JOIN Artist AS Performer ON Recording.Artist_Performer_ID=Performer.Artist_ID
JOIN Image ON Performer.Image_ID=Image.Image_ID
WHERE Recording.Recording_ID=Request (RecordingID)
SELECT Instrument.*, Image.Image_File IRinvertedFile.AccessionNumber,
FROM Instrument
JOIN Instrument_Recording ON Instrument.Instrument_ID=Instrument_Recording.Instrument_ID
JOIN Recording ON Recording.Recording_ID=Instrument_Recording.Instrument_ID
JOIN IRinvertedFile ON Instrument_Background=IRinvertedFile.AccessionNumber
JOIN Image ON Image.Image_ID=Instrument.Image_ID
WHERE Recording.Recording_ID=Request(Recording.Recording_ID);
|
The title of the song on the results page will be a hyperlink to the Details Page 1 and from Details Page 1 to Details Page 2. The link will show the song title but the parameter to be passed on to the next page is the Song ID.
The names of the Performer and Composer in Detail 1 page will be hyperlinks which when clicked will pass on the request to the same page that processes the query for the details page in the Artist search.
The hyperlinked Song Titles in Details Page 1 pass on the Recording ID to the Details Page 2.
|
c_optLyrics
c_txtSearch
c_frmSearch/ c_cmdGo
|
From Search Page to Results Page:
SELECT Song.Song_Name, Composer.Artist_Name AS Composer_Name, Composer.Artist_ID, Perfomer.Artist_Name AS Performer_Name, Perfomer.Artist_ID, Song_Lyrics, IRinvertedFile_AccessionNumber
FROM IRinvertedFile
JOIN Song ON IRinvertedFile_AccessionNumber=Song.Song_Lyrics
JOIN Recording ON Song.Song_ID=Recording.Song_ID
JOIN Artist AS Composer ON Composer.Artist_ID=Recording.Artist_Composer_ID
JOIN Artist AS Performer ON Performer.Artist_ID=Recording.Artist_Performer_ID
WHERE IRinvertedFile.term LIKE “<*c_txtSearch_term1*>”
ORDER BY Song_Name;
[If 2 or more terms entered into textbox, add to the query in the WHERE clause AND “” AND “” etc.;]
From Results Page to Details Page:
SELECT Song.Song_Name, Composer.Artist_Name AS Composer_Name, Composer.Artist_ID, Perfomer.Artist_Name as Performer_Name, Perfomer.Artist_ID, Song_Lyrics, IRinvertedFile_AccessionNumber
FROM IRinvertedFile
JOIN Song ON IRinvertedFile_AccessionNumber=Song.Song_Lyrics
JOIN Recording ON Song.Song_ID=Recording.Song_ID
JOIN Artist AS Composer ON Artist.Artist_ID=Recording.Artist_Composer_ID
JOIN Artist AS Performer ON Artist.Artist_ID=Recording.Artist_Performer_ID
WHERE IRinvertedFile_AccessionNumber=Request(AccessionNumber);
|
The title of the song on the results page will be a hyperlink to the Details Page. The link will show the song title but the parameter to be passed on to the next page is the Accession Number for the lyrics.
The names of the Performer and Composer in the results page will be hyperlinks which when clicked will pass on the request to the same page that processes the query for the details page in the Artist search
|
-
Logic for the Quick Search Feature
-
If the user clicks on Go button without entering any terms, then show a message that says “Please choose an option then enter keywords in the textbox.” [Can be done with a pop-up window using JavaScript.]
Else, do the following:
-
Ignore all Boolean operators, parentheses, and quotation marks.
-
Parse terms in c_txtSearch, delimited by spaces, into c_txtSearch_term1, c_txtSearch_term2, etc.
-
If “” does not match any data in the RDB or IR, then show a page with a message that says “Sorry, your search did not return any results. Please try another search.”
Else, do the following:
-
Ignore all Boolean operators, parentheses, and quotation marks.
-
Parse terms in c_txtSearch, delimited by spaces, into c_txtSearch_term1, c_txtSearch_term2, etc.
-
If user clicks on hyperlinks on results or detail page, pass on the request parameter to the page that contains the code to process the request.
-
Re-use pages (with the codes) that process the same kind of request.
Share with your friends: |