Fix: timers and styles
This commit is contained in:
		| @@ -3,7 +3,46 @@ | ||||
|   <div class="flex justify-center"> | ||||
|     <div class="grid grid-cols-2 sm:grid-cols-5 gap-2"> | ||||
|       {{range .Cards}} | ||||
| 	{{template "cardword" .}}  | ||||
|       {{if .Revealed}} | ||||
| 	  {{if eq .Color "amber"}} | ||||
| 	    <div id="card-{{.Word}}" class="bg-{{.Color}}-100 border-8 border-stine-400 p-4 min-w-[100px] text-center text-white cursor-pointer"  | ||||
| 		 style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||
| 	    </div> | ||||
| 	  {{else}} | ||||
| 	    <div id="card-{{.Word}}" class="bg-{{.Color}}-400 border-8 border-stone-400 p-4 min-w-[100px] text-center text-white cursor-pointer"  | ||||
| 		 style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||
| 	    </div> | ||||
| 	  {{end}} | ||||
| 	{{else if or (.Mime) ($.IsOver)}} | ||||
| 	  {{if eq .Color "amber"}} | ||||
| 	    <div id="card-{{.Word}}" class="bg-{{.Color}}-100 border border-stone-400 p-4 rounded-lg min-w-[100px] text-center text-white cursor-pointer"  | ||||
| 		 style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||
| 	    </div> | ||||
| 	  {{else}} | ||||
| 	    <div id="card-{{.Word}}" class="bg-{{.Color}}-400 border border-stone-400 p-4 rounded-lg min-w-[100px] text-center text-white cursor-pointer"  | ||||
| 		 style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||
| 	    </div> | ||||
| 	  {{end}} | ||||
| 	{{else}} | ||||
| 	<div id="card-{{.Word}}" class="bg-stone-400 border border-gray-500 rounded-lg min-w-[100px] cursor-pointer flex flex-col h-full"> | ||||
| 	     <div class="flex-grow text-center p-4 flex items-center justify-center text-white" | ||||
| 		  style="text-shadow: 0 2px 4px rgba(0,0,0,0.8);" | ||||
| 		  hx-get="/word/show-color?word={{.Word}}" hx-trigger="click" hx-swap="outerHTML transition:true swap:.05s"> | ||||
| 		{{.Word}} | ||||
| 	     </div> | ||||
| 	     <div class="h-6 bg-stone-600 rounded-b flex items-center justify-center text-white text-sm cursor-pointer" | ||||
| 		  hx-get="/mark-card?word={{.Word}}" hx-trigger="click" hx-swap="outerHTML transition:true swap:.05s"> | ||||
| 		 {{range .Marks}} | ||||
| 		    {{ $length := len .Username }} | ||||
| 		    {{ if lt $length 3 }} | ||||
| 		    <span class="mx-0.5">{{.Username}}</span> | ||||
| 		    {{else}} | ||||
| 		    <span class="mx-0.5">{{slice .Username 0 3}}</span> | ||||
| 		    {{end}} | ||||
| 		 {{end}} | ||||
| 	     </div> | ||||
| 	</div> | ||||
| 	{{end}} | ||||
|       {{end}} | ||||
|     </div> | ||||
|   </div> | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||
|     </div> | ||||
|   {{end}} | ||||
| {{else if .Mime}} | ||||
| {{else if or (.Mime) }} | ||||
|   {{if eq .Color "amber"}} | ||||
|     <div id="card-{{.Word}}" class="bg-{{.Color}}-100 border border-stone-400 p-4 rounded-lg min-w-[100px] text-center text-white cursor-pointer"  | ||||
|          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||
|   | ||||
| @@ -4,9 +4,9 @@ | ||||
|     Create a room <br/> | ||||
|     or<br/> | ||||
|     <button button class="justify-center rounded-md bg-indigo-600 px-3 py-1.5 text-sm font-semibold leading-6 text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600" hx-get="/room/hideform" hx-target=".create-room-div" >Hide Form</button> | ||||
|     <form hx-post="/room-create" hx-target="#main-content"> | ||||
|     <form hx-post="/room-create" hx-target="#main-content" class="space-y-4"> | ||||
| 	<label For="game_time">Turn Seconds:</label><br/> | ||||
| 	<input type="number" id="game_time" name="game_time" class="text-center text-white" value="300"/><br/> | ||||
| 	<input type="number" id="game_time" name="game_time" class="text-center text-white" value="120"/><br/> | ||||
| 	<label For="language">Language:</label><br/> | ||||
| 	<div> | ||||
| 	<select class="form-select text-white text-center bg-gray-900" id="languages" name="language"> | ||||
|   | ||||
| @@ -1,15 +1,15 @@ | ||||
| {{define "login"}} | ||||
|     <div id="logindiv"> | ||||
|         <form class="space-y-6" hx-post="/login" hx-target="#main-content"> | ||||
|         <form class="space-y-4" hx-post="/login" hx-target="#main-content"> | ||||
|           <div> | ||||
|             <label For="username" class="block text-sm font-medium leading-6 text-white-900">tell us your username (signup|login)</label> | ||||
|             <label For="username" class="block text-sm text-center font-medium leading-6 text-white-900">tell us your username (signup|login)</label> | ||||
|             <div class="mt-2"> | ||||
|               <input id="username" name="username" hx-target="#login_notice" hx-swap="outerHTML" hx-post="/check/name" hx-trigger="input changed delay:400ms" autocomplete="username" required class="block w-full rounded-md border-0 bg-white py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-300 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6 text-center"/> | ||||
|             </div> | ||||
| 	<div id="login_notice">this name looks available</div> | ||||
|           </div> | ||||
|             <div> | ||||
|             <label For="password" class="block text-sm font-medium leading-6 text-white-900">password</label> | ||||
|             <label For="password" class="block text-sm font-medium text-center leading-6 text-white-900">password</label> | ||||
|               <input id="password" name="password" type="password" class="block w-full rounded-md border-0 bg-white py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-300 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6 text-center"/> | ||||
|             </div> | ||||
|           <div> | ||||
|   | ||||
| @@ -12,7 +12,7 @@ func StartTurnTimer(roomID string, timeLeft uint32) { | ||||
| 	logger := slog.Default().With("room_id", roomID) | ||||
|  | ||||
| 	onTurnEnd := func(ctx context.Context, roomID string) { | ||||
| 		room, err := repo.RoomGetByID(context.Background(), roomID) | ||||
| 		room, err := repo.RoomGetExtended(context.Background(), roomID) | ||||
| 		if err != nil { | ||||
| 			logger.Error("failed to get room by id", "error", err) | ||||
| 			return | ||||
| @@ -36,4 +36,5 @@ func StartTurnTimer(roomID string, timeLeft uint32) { | ||||
|  | ||||
| func StopTurnTimer(roomID string) { | ||||
| 	timer.StopTurnTimer(roomID) | ||||
| } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -13,7 +13,7 @@ func (b *Bot) StartTurnTimer(timeLeft uint32) { | ||||
| 	logger := b.log.With("room_id", b.RoomID) | ||||
|  | ||||
| 	onTurnEnd := func(ctx context.Context, roomID string) { | ||||
| 		room, err := repos.RP.RoomGetByID(context.Background(), roomID) | ||||
| 		room, err := repos.RP.RoomGetExtended(context.Background(), roomID) | ||||
| 		if err != nil { | ||||
| 			logger.Error("failed to get room by id", "error", err) | ||||
| 			return | ||||
| @@ -46,4 +46,5 @@ func (b *Bot) StartTurnTimer(timeLeft uint32) { | ||||
|  | ||||
| func (b *Bot) StopTurnTimer() { | ||||
| 	timer.StopTurnTimer(b.RoomID) | ||||
| } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -410,14 +410,22 @@ func (r *Room) RevealSpecificWord(word string) uint32 { | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| func (r *Room) SetGameOverToCards(isover bool) { | ||||
| 	for i := range r.Cards { | ||||
| 		r.Cards[i].IsOver = isover | ||||
| 	} | ||||
| } | ||||
|  | ||||
| type WordCard struct { | ||||
| 	ID       uint32     `json:"id" db:"id"` | ||||
| 	RoomID   string     `json:"room_id" db:"room_id"` | ||||
| 	Word     string     `json:"word" db:"word"` | ||||
| 	Color    WordColor  `json:"color" db:"color"` | ||||
| 	Revealed bool       `json:"revealed" db:"revealed"` | ||||
| 	Mime     bool       `json:"mime" db:"mime_view"` // user who sees that card is mime | ||||
| 	Marks    []CardMark `json:"marks" db:"-"` | ||||
| 	ID       uint32    `json:"id" db:"id"` | ||||
| 	RoomID   string    `json:"room_id" db:"room_id"` | ||||
| 	Word     string    `json:"word" db:"word"` | ||||
| 	Color    WordColor `json:"color" db:"color"` | ||||
| 	Revealed bool      `json:"revealed" db:"revealed"` | ||||
| 	// pain; but at the end of the game players should see color of unopen cards | ||||
| 	IsOver bool | ||||
| 	Mime   bool       `json:"mime" db:"mime_view"` // user who sees that card is mime | ||||
| 	Marks  []CardMark `json:"marks" db:"-"` | ||||
| } | ||||
|  | ||||
| // table: settings | ||||
|   | ||||
							
								
								
									
										1
									
								
								todos.md
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								todos.md
									
									
									
									
									
								
							| @@ -93,3 +93,4 @@ | ||||
| - journal still does not work; + | ||||
| - lose/win game; then exit room (while being the creator), then press to stats -> cannot find session in db, although cookie in place and session in db; + | ||||
| - exit endpoints delets player from db; + | ||||
| - timer end did not update the page; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder