pyc-website

main website for pyc inc.

git clone https://9o.is/git/pyc-website.git

USStateField.scala

(1710B)


      1 package inc.pyc
      2 package model
      3 package field
      4 
      5 import net.liftweb._
      6 import http._
      7 import SHtml._
      8 import util._, Helpers._
      9 import record._
     10 import field._
     11 import json.JsonAST._
     12 import common._
     13 
     14 object USStates extends Enumeration {
     15 
     16   val Alabama,  Alaska,  Arizona,  Arkansas,  California,  Colorado,  Connecticut,  Delaware,  Florida,  Georgia,
     17       Hawaii,  Idaho,  Illinois,  Indiana,  Iowa,  Kansas,  Kentucky,  Louisiana,  Maine,  Maryland,
     18       Massachusetts,  Michigan,  Minnesota,  Mississippi,  Missouri,  Montana,  Nebraska,  Nevada,  New_Hampshire,  New_Jersey,
     19       New_Mexico,  New_York,  North_Carolina,  North_Dakota,  Ohio,  Oklahoma,  Oregon,  Pennsylvania,  Rhode_Island,  South_Carolina,
     20       South_Dakota,  Tennessee,  Texas,  Utah,  Vermont,  Virginia,  Washington,  West_Virginia,  Wisconsin,  Wyoming = USState
     21   
     22   def USState = new USState
     23   
     24   class USState extends Val {
     25     override def toString = super.toString.replace("_", " ")
     26   }
     27   
     28   def options: List[(String, String)] =
     29     USStates.values.map(i => (i.toString, i.toString)).toList
     30     
     31   def stateSelect(s: String) = tryo(USStates.withName(s))
     32 }
     33 
     34 
     35 class USStatesField[OwnerType <: Record[OwnerType]](rec: OwnerType) extends EnumField(rec, USStates) {
     36   override def setFromJValue(jvalue: JValue): Box[USStatesField.this.MyType] = {
     37     val stringToInt = jvalue transform {
     38       case JString(s) => 
     39         val value: Box[Int] = USStates.stateSelect(s).map(_.id)
     40         value.map(JInt(_)).openOr(JNothing)
     41       case _ => JNothing
     42     }
     43     super.setFromJValue(stringToInt)
     44   }
     45 }
     46 
     47 trait USStatesSelector {
     48   def states: CssSel =
     49     "@state" #> select(USStates.options, Empty, USStates.stateSelect, "name" -> "state")
     50 }
     51