% raterspec program ui %% \chapter{Program Client} \label{s:programui} \index{Program Client|(} \sectiondept{it} The \dfn{Program Client} is defined as the user interface that is used to enter data about a ^Quote, receive a premium from one or more ^[supplier]s, and~optionally submit the~^Quote for further processing from within ^[ConceptOne]. The Program Client \shall be accessed by using a~^[web browser] to download the applicable resources---specifically, ^[HTML], ^[CSS], and ^[JavaScript]---from the ^[LoVullo Website]. \incomplete \todo{While this chapter does contain information necessary to complete the Scottsdale Commercial Lines project, it is largely incomplete.} \section{Program UI}\label{s:program-ui} \sectiondept{it} \index{Program Client!Program UI|(} The \dfn{Program UI}---hereinafter occasionally referred to simply as ``UI'' unambiguously within this chapter---\shall be defined as the graphical user interface of the~Program Client and \shall render directly in the user's ^[web browser] using only ^[HTML], ^[CSS], and~^[JavaScript].\footnote{For example, browser plugins such as Java and~Flash \shallnot be used in an implementation of the Program Client.} A \dfn{Program Client!quoting step} is the highest level of ^Quote data separation and consists only of question groups. The UI \shall display no more than one step (see~\sref{program-steps}) to the ^user at any given time. \incomplete A \dfn{Program Client!field group} contains only fields and provides an optional delineation from other groups. Any number of groups \may be displayed to the~^user at any given time.\todo{Types.} A \dfn{Program Client!field} is a generic term that represents any question, answer, display, or static element; any of these may appear where a field is expected unless the field specification does not permit such a field type.\footnote{For example, if a field is expected, then a question or an~answer may be substituted. However, if a~question is expected, then an~answer may not be substituted.} \incomplete A \dfn{Program Client!question} prompts the ^user for a datum and may be directly modified by the user unless explicitly restricted. \todo{How interacts with bucket; types.} \incomplete A \dfn{Program Client!answer} displays a~^user response associated with a~question. \todo{Types} \incomplete A \dfn{Program Client!display} displays any arbitrary bucket datum to the~^user. \todo{Bucket.} \incomplete A \dfn{Program Client!static element} displays arbitrary static text to the~user and \may contain ^[HTML]. \index{Program Client!Program UI|)} \begindeptgroup{uw/pm} \section{Quoting Steps}\label{s:program-steps} \incomplete An implementation \shall display all steps, groups, and~fields (each defined in~\sref{program-ui}) in the exact order provided within this section. \todo{An~implementation \shall contain no steps, groups, or~fields that have not been enumerated in this section.} \sigauth{NL} Within this section, questions are listed by the~labels that \shall be displayed to the user. Below the label is additional text describing further implementation requirements. When a question is indented to the level of the paragraph of another question, then the indented question is strongly related to the containing question in some logical manner; the containing question is said to be a~\dfn{Program Client!question!parent question} any the~question that is indented relative to it is said to be a~\dfn{Program Client!question!child question}.\footnote{For example, a child question may be visible to the ^user only when its~parent is answered in a specified manner.} \incomplete A question is said to be \dfn{Program Client!question!applicable} when it is to be displayed to the user; questions are applicable by default. A question \shall be visible to the user for entry only if it is applicable; otherwise, it \shall be hidden from the user, its value reset to the specified default or---if no default is specified---the default for its question type, and validations \shallnot be performed. \todo{Question type defaults and validations}. %% user-provided input \proguistepsout \enddeptgroup \section{Quote Server Communication} \sectiondept{it} \index{Quote Server|(} The Program Client \shall communicate with the~^[Quote Server] as required in~\sref{hostenv-qs}. \index{Quote Server|)} \index{Program Client|)}