Here is the current solution. It's not clean, but I cannot think of
better idea for the code.

 bind("entry", xhtml,
      "js_realtimeoutput" -> <script language="JavaScript">{Unparsed
(js_realtime_output(room_day, room))}</script>)

private def js_realtime_output(room_day: RoomDay, room: Room) : String
= {
    def date_string(datetime : GregorianCalendar) : String  = {
      String.format("new Date(%s,%s,%s,%s,%s,%s)",
        datetime.get(Calendar.YEAR).toString, datetime.get
(Calendar.MONTH).toString,
        datetime.get(Calendar.DAY_OF_MONTH).toString, datetime.get
(Calendar.HOUR_OF_DAY).toString,
        datetime.get(Calendar.MINUTE).toString, datetime.get
(Calendar.SECOND).toString)
    }

    val s_datetime = new GregorianCalendar()
    val e_datetime = new GregorianCalendar()
    if (room_day.day_no.is == 0) {
       """function realtime_output() {
         php_now = """ + date_string(s_datetime) + """;
         local_now = new Date();
         diff_sec = Math.floor( (local_now - php_now) / 1000);
         document.realtime_form.realtime_output.value = "伺服器與本地時間差:" +
diff_sec + "秒";
       }"""
    } else {
      s_datetime.setTime(room_day.created.is)
      e_datetime.setTime(room_day.created.is)

      var until_string = ""
      if (room_day.day_no.is % 2 == 0) {
        e_datetime.add(Calendar.MINUTE, room.day_minutes.is)
        until_string = "日落"
      } else {
        e_datetime.add(Calendar.MINUTE, room.night_minutes.is)
        until_string = "早上"
      }

      """starttime = """ + date_string(s_datetime) + """;
      endtime   = """ + date_string(e_datetime) + """;
      diffseconds = Math.floor((endtime - starttime)/1000);
      function realtime_output() {
        nowtime = new Date();
        leftseconds = diffseconds - Math.floor((nowtime - starttime)/
1000);
        lefttime = new Date(0,0,0,0,0,leftseconds);
        virtual_left_seconds = Math.floor(12*60*60*(leftseconds /
diffseconds));
        virtual_lefttime = new Date(0,0,0,0,0,virtual_left_seconds);
        if(leftseconds > 0){
          document.realtime_form.realtime_output.value = " """ +
until_string + """剩餘 " + virtual_lefttime.getHours()+"時
間"+virtual_lefttime.getMinutes()+"分 (實際時間 "+lefttime.getMinutes()
+"分"+lefttime.getSeconds()+"秒)";
        } else {
          overseconds = Math.abs(leftseconds);
          overtime = new Date(0,0,0,0,0,overseconds);
          document.realtime_form.realtime_output.value = "超過時間
"+overtime.getMinutes()+"分"+overtime.getSeconds()+"秒";
        }
        tid = setTimeout('realtime_output()', 1000);
      }"""
    }
  }

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to