sashomaga

UI pattern

Jun 30th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var ui = (function () {
  2.  
  3.     function buildLoginForm() {
  4.         var html =
  5.             '<div id="login-form-holder">' +
  6.                 '<form>' +
  7.                     '<div id="login-form">' +
  8.                         '<label for="tb-login-username">Username: </label>' +
  9.                         '<input type="text" id="tb-login-username"><br />' +
  10.                         '<label for="tb-login-password">Password: </label>' +
  11.                         '<input type="text" id="tb-login-password"><br />' +
  12.                         '<button id="btn-login" class="button">Login</button>' +
  13.                     '</div>' +
  14.                     '<div id="register-form" style="display: none">' +
  15.                         '<label for="tb-register-username">Username: </label>' +
  16.                         '<input type="text" id="tb-register-username"><br />' +
  17.                         '<label for="tb-register-nickname">Nickname: </label>' +
  18.                         '<input type="text" id="tb-register-nickname"><br />' +
  19.                         '<label for="tb-register-password">Password: </label>' +
  20.                         '<input type="text" id="tb-register-password"><br />' +
  21.                         '<button id="btn-register" class="button">Register</button>' +
  22.                     '</div>' +
  23.                     '<a href="#" id="btn-show-login" class="button selected">Login</a>' +
  24.                     '<a href="#" id="btn-show-register" class="button">Register</a>' +
  25.                 '</form>' +
  26.             '</div>';
  27.         return html;
  28.     }
  29.  
  30.     function buildGameUI(nickname) {
  31.         var html = '<span id="user-nickname">' +
  32.                 nickname +
  33.         '</span>' +
  34.         '<button id="btn-logout">Logout</button><br/>' +
  35.         '<div id="create-game-holder">' +
  36.             'Title: <input type="text" id="tb-create-title" />' +
  37.             'Password: <input type="text" id="tb-create-pass" />' +
  38.             'Number: <input type="text" id="tb-create-number" />' +
  39.             '<button id="btn-create-game">Create</button>' +
  40.         '</div>' +
  41.         '<div id="open-games-container">' +
  42.             '<h2>Open</h2>' +
  43.             '<div id="open-games"></div>' +
  44.         '</div>' +
  45.         '<div id="active-games-container">' +
  46.             '<h2>Active</h2>' +
  47.             '<div id="active-games"></div>' +
  48.         '</div>' +
  49.         '<div id="game-holder">' +
  50.         '</div>';
  51.         return html;
  52.     }
  53.  
  54.     function buildOpenGamesList(games) {
  55.         var list = '<ul class="game-list open-games">';
  56.         for (var i = 0; i < games.length; i++) {
  57.             var game = games[i];
  58.             list +=
  59.                 '<li data-game-id="' + game.id + '">' +
  60.                     '<a href="#" >' +
  61.                         $("<div />").html(game.title).text() +
  62.                     '</a>' +
  63.                     '<span> by ' +
  64.                         game.creatorNickname +
  65.                     '</span>' +
  66.                 '</li>';
  67.         }
  68.         list += "</ul>";
  69.         return list;
  70.     }
  71.  
  72.     function buildActiveGamesList(games) {
  73.         var gamesList = Array.prototype.slice.call(games, 0);
  74.         gamesList.sort(function (g1, g2) {
  75.             if (g1.status == g2.status) {
  76.                 return g1.title > g2.title;
  77.             }
  78.             else
  79.             {
  80.                 if (g1.status == "in-progress") {
  81.                     return -1;
  82.                 }
  83.             }
  84.             return 1;
  85.         });
  86.  
  87.         var list = '<ul class="game-list active-games">';
  88.         for (var i = 0; i < gamesList.length; i++) {
  89.             var game = gamesList[i];
  90.             list +=
  91.                 '<li data-game-id="' + game.id + '">' +
  92.                     '<a href="#" class="' + game.status + '">' +
  93.                         $("<div />").html(game.title).text() +
  94.                     '</a>' +
  95.                     '<span> by ' +
  96.                         game.creatorNickname +
  97.                     '</span>' +
  98.                 '</li>';
  99.         }
  100.         list += "</ul>";
  101.         return list;
  102.     }
  103.  
  104.     function buildGuessTable(guesses) {
  105.         var tableHtml =
  106.             '<table border="1" cellspacing="0" cellpadding="5">' +
  107.                 '<tr>' +
  108.                     '<th>Number</th>' +
  109.                     '<th>Cows</th>' +
  110.                     '<th>Bulls</th>' +
  111.                 '</tr>';
  112.         for (var i = 0; i < guesses.length; i++) {
  113.             var guess = guesses[i];
  114.             tableHtml +=
  115.                 '<tr>' +
  116.                     '<td>' +
  117.                         guess.number +
  118.                     '</td>' +
  119.                     '<td>' +
  120.                         guess.cows+
  121.                     '</td>' +
  122.                     '<td>' +
  123.                         guess.bulls+
  124.                     '</td>' +
  125.                 '</tr>';
  126.         }
  127.         tableHtml += '</table>';
  128.         return tableHtml;
  129.     }
  130.  
  131.     function buildGameState(gameState) {
  132.         var html =
  133.             '<div id="game-state" data-game-id="' + gameState.id + '">' +
  134.                 '<h2>' + gameState.title + '</h2>' +
  135.                 '<div id="blue-guesses" class="guess-holder">' +
  136.                     '<h3>' +
  137.                         gameState.blue + '\'s gueesses'+
  138.                     '</h3>'+
  139.                     buildGuessTable(gameState.blueGuesses) +
  140.                 '</div>' +
  141.                 '<div id="red-guesses" class="guess-holder">' +
  142.                     '<h3>' +
  143.                         gameState.red + '\'s gueesses' +
  144.                     '</h3>'+
  145.                     buildGuessTable(gameState.redGuesses) +
  146.                 '</div>' +
  147.         '</div>';
  148.         return html;
  149.     }
  150.  
  151.     return {
  152.         gameUI: buildGameUI,
  153.         openGamesList: buildOpenGamesList,
  154.         loginForm: buildLoginForm,
  155.         activeGamesList: buildActiveGamesList,
  156.         gameState: buildGameState
  157.     }
  158.  
  159. }());
Advertisement
Add Comment
Please, Sign In to add comment