Hi everyone. I cannot figure out what is wrong with code below. It just keeps printing
the initial values (through S.error). Can someone tell me what I am missing? Thanks in advance. Please disregard code duplication, I will get rid of it as soon as I get this code to work.
class AnalyticsForm extends StatefulSnippet {
private var timePeriod = ""
private var statType: String = ""
private var partners: List[String] = Nil
def dispatch = {
case _ => bindForm _
}
def processQuery() = {
S.error(("Time period id: %s\n " +
"Statistics type id: %s" +
"Partners list of ids: %s" ).format(timePeriod, statType, partners))
}
def bindForm(xhtml: NodeSeq): NodeSeq = {
val possiblePartners: List[(String, String)] = MarketingPartner.findAll(OrderBy(MarketingPartner.id, Ascending))
.map(x => (x.id.toString, x.title.toString))
val timePeriodOptions: List[(String, String)] = promotePairStringsFrom("time_period")
val statTypeOptions: List[(String, String)] = promotePairStringsFrom("type")
bind("entry", xhtml,
"time_period" -> SHtml.select(timePeriodOptions, S.param("time_period"), timePeriod = _, "name" -> "time_period"),
"type" -> SHtml.select(statTypeOptions, S.param("type"), statType = _, "name" -> "type"),
"partner" -> SHtml.multiSelect(("-1", "All") :: possiblePartners, S.params("partner"), partners = _, "name" -> "partner"),
"submit" -> SHtml.submit("Update", processQuery)
)
}
...
}
The part of index.html which makes use of the snippet:
<div>
<lift:AnalyticsForm form="POST">
<div class="span-4">
<span><strong>Choose time period:</strong></span><br/>
<entry:time_period/>
</div>
<div class="span-6">
<span><strong>Statistics type</strong></span><br/>
<entry:type/>
</div>
<div class="span-3">
<span><strong>Partners</strong></span>
<entry:partner/>
</div>
<div style="float:right"><entry:submit/></div>
</lift:AnalyticsForm>
</div>