freemarkerdor/src/main/resources/cz/xelfi/quoridor/freemarkerdor/UI/game.fmt
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 23 Sep 2009 17:29:41 +0200
changeset 111 6f1b8bbab6fa
parent 109 d2140ee1c682
child 112 0ddeea5e9b36
permissions -rw-r--r--
Using JavaScript to show the location of a fence before it is placed
jtulach@41
     1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
jtulach@41
     2
<html>
jtulach@41
     3
  <head>
jaroslav@93
     4
    <title>
jaroslav@93
     5
      <#if user = doc.game.@currentPlayer>
jaroslav@93
     6
         ${bundle.YourTurn}
jaroslav@93
     7
      <#else>
jaroslav@93
     8
         ${bundle("Waiting", doc.game.@currentPlayer?string)}
jaroslav@93
     9
      </#if>
jaroslav@93
    10
    </title>
jtulach@41
    11
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
jaroslav@66
    12
    <#if user != doc.game.@currentPlayer >
jaroslav@66
    13
        <meta http-equiv="REFRESH" content="60;URL=/games/${doc.game.id.@id}">
jaroslav@66
    14
    </#if>
jaroslav@111
    15
    <script type="text/javascript">
jaroslav@111
    16
        function paintFence() {
jaroslav@111
    17
            var fifth = fieldSize / 10;
jaroslav@111
    18
            var x = (document.getElementById("column").value.charCodeAt(0) - 64) * fieldSize;
jaroslav@111
    19
            var y = fieldSize * 9 - (document.getElementById("row").value) * fieldSize;
jaroslav@111
    20
            var dx = 0;
jaroslav@111
    21
            var dy = 0;
jaroslav@111
    22
            if (document.getElementById("direction").value.charAt(0) == 'H') {
jaroslav@111
    23
               dx = fieldSize - 2 * fifth;
jaroslav@111
    24
               dy = fifth / 2;
jaroslav@111
    25
            } else {
jaroslav@111
    26
               dx = fifth / 2;
jaroslav@111
    27
               dy = fieldSize - 2 * fifth;
jaroslav@111
    28
            }
jaroslav@111
    29
            var fenceDiv = document.getElementById("fence");
jaroslav@111
    30
            fenceDiv.style.position="absolute";
jaroslav@111
    31
            fenceDiv.style.left = (x - dx) +"px";
jaroslav@111
    32
            fenceDiv.style.top  = (y - dy) +"px";
jaroslav@111
    33
            fenceDiv.style.width = (dx * 2) +"px";
jaroslav@111
    34
            fenceDiv.style.height = (dy * 2) +"px";
jaroslav@111
    35
            fenceDiv.style.backgroundColor = 'black';
jaroslav@111
    36
            fenceDiv.style.visibility = 'visible';
jaroslav@111
    37
         }
jaroslav@111
    38
         var fieldSize=<#if format?? && format="small">20<#else>50</#if>;
jaroslav@111
    39
    </script>
jtulach@41
    40
  </head>
jtulach@41
    41
  <body>
jaroslav@99
    42
      <h1><a href="/games/${doc.game.id.@id}">${bundle.GAME}</a></h1>
jaroslav@98
    43
jaroslav@98
    44
      <#macro status who>
jaroslav@98
    45
          ${who?string}
jaroslav@98
    46
          <#if who = doc.game.@currentPlayer>
jaroslav@98
    47
              <#if doc.game.id.@status = "whiteWon" || doc.game.id.@status = "blackWon" >
jaroslav@98
    48
                - ${bundle.HAS_WON}
jaroslav@98
    49
              <#else>
jaroslav@98
    50
                - ${bundle.TO_MOVE}
jaroslav@98
    51
              </#if>
jaroslav@98
    52
          </#if>
jaroslav@98
    53
      </#macro>
jaroslav@98
    54
jaroslav@98
    55
jaroslav@98
    56
      <p>
jaroslav@100
    57
          <b>${bundle.MOVENUMBER}: </b> ${(doc.game.@currentMove?number / 2 + 1)?string("0")}<br>
jaroslav@99
    58
          <b>${bundle.WHITE}:</b> <@status doc.game.id.@white/> ${bundle("FENCES_LEFT", board.players[0].fences)}<br>
jaroslav@99
    59
          <b>${bundle.BLACK}:</b> <@status doc.game.id.@black/> ${bundle("FENCES_LEFT", board.players[1].fences)}<br>
jaroslav@98
    60
      </p>
jaroslav@56
    61
jaroslav@56
    62
      <p>
jaroslav@60
    63
      <a href="/">${bundle.ROOT}</a>
jaroslav@100
    64
      <#if (doc.game.@currentMove?number > 0)>
jaroslav@100
    65
        <a href="/games/${doc.game.id.@id}?move=${doc.game.@currentMove?number - 1}">${bundle.PREVIOUS}</a>
jaroslav@100
    66
      <#else>
jaroslav@100
    67
        ${bundle.PREVIOUS}
jaroslav@100
    68
      </#if>
jaroslav@100
    69
      <a href="/games/${doc.game.id.@id}"">${bundle.LATEST}</a>
jaroslav@100
    70
      <#if (doc.game.@currentMove?number < doc.game.moves.*?size)>
jaroslav@100
    71
        <a href="/games/${doc.game.id.@id}?move=${doc.game.@currentMove?number + 1}">${bundle.NEXT}</a>
jaroslav@100
    72
      <#else>
jaroslav@100
    73
        ${bundle.NEXT}
jaroslav@100
    74
      </#if>
jaroslav@56
    75
      </p>
jaroslav@56
    76
      
jaroslav@56
    77
      <#if message?? >
jaroslav@56
    78
        <p>
jaroslav@56
    79
            <span style="color: red">${message}</span>
jaroslav@56
    80
        </p>
jaroslav@56
    81
      </#if>
jaroslav@56
    82
jaroslav@66
    83
      <#assign play = false>
jaroslav@66
    84
jtulach@77
    85
      <#if doc.game.id.@status = "whiteMove" || doc.game.id.@status = "blackMove" >
jaroslav@66
    86
          <#assign play = user = doc.game.@currentPlayer>
jaroslav@66
    87
      </#if>
jaroslav@66
    88
      <#if  play>
jaroslav@56
    89
          <form action="/games/${doc.game.id.@id}/move">
jaroslav@55
    90
              <input type="hidden" name="type" value="fence" readonly="readonly"/>
jaroslav@111
    91
              <select name="column" id="column" onchange="paintFence()">
jaroslav@55
    92
                  <option>A</option>
jaroslav@55
    93
                  <option>B</option>
jaroslav@55
    94
                  <option>C</option>
jaroslav@55
    95
                  <option>D</option>
jaroslav@55
    96
                  <option>E</option>
jaroslav@55
    97
                  <option>F</option>
jaroslav@55
    98
                  <option>G</option>
jaroslav@55
    99
                  <option>H</option>
jaroslav@55
   100
              </select>
jaroslav@111
   101
              <select name="row" id="row" onchange="paintFence()">
jaroslav@55
   102
                  <option>1</option>
jaroslav@55
   103
                  <option>2</option>
jaroslav@55
   104
                  <option>3</option>
jaroslav@55
   105
                  <option>4</option>
jaroslav@55
   106
                  <option>5</option>
jaroslav@55
   107
                  <option>6</option>
jaroslav@55
   108
                  <option>7</option>
jaroslav@55
   109
                  <option>8</option>
jaroslav@55
   110
              </select>
jaroslav@111
   111
              <select name="direction" id="direction" onchange="paintFence()">
jaroslav@111
   112
                  <option value="H">${bundle.H}</option>
jaroslav@111
   113
                  <option value="V">${bundle.V}</option>
jaroslav@55
   114
              </select>
jaroslav@59
   115
              <input type="submit" value="${bundle.PLACE}" />
jaroslav@55
   116
          </form>
jaroslav@61
   117
          <form action="/games/${doc.game.id.@id}/move">
jaroslav@55
   118
              <input type="hidden" name="type" value="move" readonly="readonly"/>
jaroslav@55
   119
              <select name="direction">
jaroslav@55
   120
                  <option>E</option>
jaroslav@55
   121
                  <option>W</option>
jaroslav@109
   122
                  <option <#if doc.game.id.@status = "whiteMove">selected="true"</#if>>N</option>
jaroslav@109
   123
                  <option <#if doc.game.id.@status = "blackMove">selected="true"</#if>>S</option>
jaroslav@55
   124
              </select>
jaroslav@55
   125
              <select name="direction-next">
jaroslav@55
   126
                  <option></option>
jaroslav@55
   127
                  <option>E</option>
jaroslav@55
   128
                  <option>W</option>
jaroslav@55
   129
                  <option>N</option>
jaroslav@55
   130
                  <option>S</option>
jaroslav@55
   131
              </select>
jaroslav@59
   132
              <input type="submit" value="${bundle.MOVE}" />
jaroslav@55
   133
          </form>
jtulach@75
   134
          <form action="/games/${doc.game.id.@id}/move">
jtulach@75
   135
              <input type="hidden" name="type" value="resign" readonly="readonly"/>
jtulach@75
   136
              <input type="submit" value="${bundle.RESIGN}" />
jtulach@75
   137
          </form>
jaroslav@55
   138
      </#if>
jaroslav@100
   139
      <p>
jaroslav@95
   140
      <#if format?? && format = "text">
jaroslav@95
   141
        <pre>${doc.game.board}</pre>
jaroslav@105
   142
        ${bundle.BOARD_VIEW}
jaroslav@100
   143
        <a href="/games/${doc.game.id.@id}?format=small">${bundle.BOARD_SMALL}</a>
jaroslav@98
   144
        <a href="/games/${doc.game.id.@id}?format=image">${bundle.BOARD_IMAGE}</a>
jaroslav@100
   145
        ${bundle.BOARD_TEXT}
jaroslav@100
   146
      <#elseif format?? && format = "small">
jaroslav@111
   147
        <p/>
jaroslav@111
   148
        <div style="position: relative; height:180px;">
jaroslav@111
   149
            <div id="fence"></div>
jaroslav@111
   150
            <img style="position: absolute; left: 0; right: 0;"
jaroslav@111
   151
                 width="180" height="180 "
jaroslav@111
   152
                 src="/games/${doc.game.id.@id}.png?fieldSize=20<#if doc.game.@currentMove??>&move=${doc.game.@currentMove}</#if>"
jaroslav@111
   153
                 alt="${bundle.BOARD_TEXT}"
jaroslav@111
   154
             >
jaroslav@111
   155
        </div>
jaroslav@105
   156
        ${bundle.BOARD_VIEW}
jaroslav@100
   157
        ${bundle.BOARD_SMALL}
jaroslav@100
   158
        <a href="/games/${doc.game.id.@id}?format=image">${bundle.BOARD_IMAGE}</a>
jaroslav@100
   159
        <a href="/games/${doc.game.id.@id}?format=text">${bundle.BOARD_TEXT}</a>
jaroslav@95
   160
      <#else>
jaroslav@111
   161
        <div style="position: relative; height:450px;">
jaroslav@111
   162
            <div id="fence"></div>
jaroslav@111
   163
            <img style="position: absolute; left: 0; right: 0;"
jaroslav@111
   164
                 width="450" height="450"
jaroslav@111
   165
                 src="/games/${doc.game.id.@id}.png<#if doc.game.@currentMove??>?move=${doc.game.@currentMove}</#if>"
jaroslav@111
   166
                 alt="${bundle.BOARD_TEXT}"
jaroslav@111
   167
             >
jaroslav@111
   168
        </div>
jaroslav@105
   169
        ${bundle.BOARD_VIEW}
jaroslav@100
   170
        <a href="/games/${doc.game.id.@id}?format=small">${bundle.BOARD_SMALL}</a>
jaroslav@100
   171
        ${bundle.BOARD_IMAGE}
jaroslav@98
   172
        <a href="/games/${doc.game.id.@id}?format=text">${bundle.BOARD_TEXT}</a>
jaroslav@95
   173
      </#if>
jaroslav@95
   174
jaroslav@100
   175
      <#macro printMove item>
jaroslav@100
   176
        <#if item.@index = doc.game.@currentMove>
jaroslav@100
   177
            <b>${item.@move}</b>
jaroslav@100
   178
        <#else>
jaroslav@100
   179
            <a href="/games/${doc.game.id.@id}?move=${item.@index}">${item.@move}</a>
jaroslav@100
   180
        </#if>
jaroslav@100
   181
      </#macro>
jaroslav@60
   182
jaroslav@100
   183
      <h3><a href="/games/${doc.game.id.@id}?move=0">${bundle.MOVES}</a></h3>
jaroslav@60
   184
jaroslav@60
   185
      <table border="0">
jaroslav@60
   186
          <thead>
jaroslav@60
   187
              <tr>
jaroslav@60
   188
                  <th>${bundle.MOVENUMBER}</th>
jaroslav@60
   189
                  <th>${doc.game.id.@white}</th>
jaroslav@60
   190
                  <th>${doc.game.id.@black}</th>
jaroslav@60
   191
              </tr>
jaroslav@60
   192
          </thead>
jaroslav@60
   193
          <tbody>
jaroslav@61
   194
              <#assign index = 0>
jaroslav@60
   195
              <#list doc.game.moves.* as item>
jaroslav@100
   196
                
jaroslav@60
   197
                <#if item.@index?number % 2 = 1>
jaroslav@61
   198
                    <#assign index = index + 1>
jaroslav@100
   199
                    <tr><td>${index}</td><td><@printMove item/></td>
jaroslav@60
   200
                <#else>
jaroslav@100
   201
                    <td><@printMove item/></td></tr>
jaroslav@60
   202
                </#if>
jaroslav@60
   203
              </#list>
jaroslav@60
   204
          </tbody>
jaroslav@60
   205
      </table>
jaroslav@88
   206
      <hr/>
jaroslav@88
   207
      ${bundle("copyright", version)}
jtulach@41
   208
  </body>
jtulach@41
   209
</html>