master #6
							
								
								
									
										46
									
								
								assets/HypertextPages/chatSettings.nytl.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								assets/HypertextPages/chatSettings.nytl.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| {% ELDEF main JSON pres JSON userinfo %} | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|     <link rel="stylesheet" href="/assets/css/chatSettings.css"> | ||||
|     <title>Настройки комнаты</title> | ||||
| </head> | ||||
| <body> | ||||
| <div class="chat-settings-container"> | ||||
|     <div class="chat-settings-container-header"> | ||||
|         <input class="room-name" id="room-name" placeholder="Введите название комнаты..." value="Название комнаты"> | ||||
|         <button class="changeName" onclick="handleChangeName()">Изменить название</button> | ||||
|     </div> | ||||
|     <div class="chat-settings-container-body"> | ||||
|         <ul id="chat-settings-container-body"> | ||||
|             <!-- Пример списка участников --> | ||||
|             <li id="member-1">Участник 1<button class="remove-member-button" onclick="handleRemoveMember(1)">Удалить</button></li> | ||||
|             <li id="member-2">Участник 2<button class="remove-member-button" onclick="handleRemoveMember(2)">Удалить</button></li> | ||||
|             <li id="member-3">Участник 3<button class="remove-member-button" onclick="handleRemoveMember(3)">Удалить</button></li> | ||||
|         </ul> | ||||
|     </div> | ||||
|     <div class="chat-settings-container-invite"> | ||||
|         <button class="invite-member" onclick="openInvite()">Добавить участника</button> | ||||
|     </div> | ||||
| </div> | ||||
| 
 | ||||
| <div class="overlay" id="add_members"> | ||||
|     <div class="add-members"> | ||||
|         <div class="add-members-header"> | ||||
|             <span class="close" onclick="closeAdd()">×</span> | ||||
|             <h2>Добавить участников</h2> | ||||
|         </div> | ||||
|         <div class="add-members-body"> | ||||
|             <input type="text" id="newMemberLogin" placeholder="Логин пользователя"> | ||||
|         </div> | ||||
|         <div class="add-members-footer"> | ||||
|             <button class="add-member-button" onclick="handleAddMember()">Добавить</button> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
| <script src="/assets/js/chatSettings.js"></script> | ||||
| </body> | ||||
| </html> | ||||
| {% ENDELDEF%} | ||||
							
								
								
									
										163
									
								
								assets/css/chatSettings.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								assets/css/chatSettings.css
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,163 @@ | ||||
| body { | ||||
|     font-family: Arial, sans-serif; | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     height: 100vh; | ||||
|     margin: 0; | ||||
|     background-color: #e5e5e5; | ||||
| } | ||||
| 
 | ||||
| .chat-settings-container { | ||||
|     width: 100%; | ||||
|     max-width: 800px; | ||||
|     background-color: white; | ||||
|     box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     border-radius: 8px; | ||||
|     overflow: hidden; | ||||
| } | ||||
| 
 | ||||
| .chat-settings-container-header { | ||||
|     background-color: #007bb5; | ||||
|     color: white; | ||||
|     padding: 25px; | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
| } | ||||
| 
 | ||||
| .room-name { | ||||
|     font-size: 24px; | ||||
|     width: 80%; | ||||
|     text-align: center; | ||||
|     border-radius: 10px; | ||||
|     border: none; | ||||
| } | ||||
| .changeName { | ||||
|     padding: 8px 10px; | ||||
|     background-color: #28a745; | ||||
|     color: white; | ||||
|     border-radius: 20px; | ||||
|     border: none; | ||||
|     cursor: pointer; | ||||
| } | ||||
| .changeName:hover { | ||||
|     background-color: #005f8c; | ||||
| } | ||||
| .chat-settings-container-body { | ||||
|     padding: 15px; | ||||
|     background-color: #f7f7f7; | ||||
|     flex: 1; | ||||
| } | ||||
| 
 | ||||
| #chat-settings-container-body { | ||||
|     list-style-type: none; | ||||
|     padding: 0; | ||||
| } | ||||
| 
 | ||||
| #chat-settings-container-body li { | ||||
|     margin-bottom: 10px; | ||||
|     background-color: white; | ||||
|     padding: 10px; | ||||
|     border-radius: 8px; | ||||
|     box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); | ||||
| } | ||||
| .remove-member-button { | ||||
|     background-color: red; | ||||
|     color: white; | ||||
|     border: none; | ||||
|     padding: 5px 10px; | ||||
|     cursor: pointer; | ||||
|     margin-left: 10px; | ||||
|     border-radius: 4px; | ||||
| } | ||||
| .remove-member-button:hover { | ||||
|     background-color: darkred; | ||||
| } | ||||
| .chat-settings-container-invite { | ||||
|     padding: 15px; | ||||
|     background-color: white; | ||||
|     text-align: center; | ||||
| } | ||||
| 
 | ||||
| .invite-member { | ||||
|     padding: 10px 20px; | ||||
|     border: none; | ||||
|     background-color: #28a745; | ||||
|     color: white; | ||||
|     border-radius: 20px; | ||||
|     cursor: pointer; | ||||
|     transition: background-color 0.3s ease; | ||||
| } | ||||
| 
 | ||||
| .invite-member:hover { | ||||
|     background-color: #218838; | ||||
| } | ||||
| 
 | ||||
| .overlay { | ||||
|     display: none; | ||||
|     position: fixed; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     background-color: rgba(0, 0, 0, 0.5); | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
|     z-index: 1000; | ||||
| } | ||||
| 
 | ||||
| .add-members { | ||||
|     background-color: white; | ||||
|     padding: 30px; | ||||
|     border-radius: 8px; | ||||
|     box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); | ||||
|     width: 100%; | ||||
|     max-width: 400px; | ||||
|     text-align: center; | ||||
| } | ||||
| 
 | ||||
| .add-members-header { | ||||
|     position: relative; | ||||
|     margin-bottom: 20px; | ||||
| } | ||||
| 
 | ||||
| .add-members-header h2 { | ||||
|     margin: 0; | ||||
| } | ||||
| 
 | ||||
| .close { | ||||
|     position: absolute; | ||||
|     right: 10px; | ||||
|     top: 0; | ||||
|     font-size: 24px; | ||||
|     font-weight: bold; | ||||
|     cursor: pointer; | ||||
| } | ||||
| 
 | ||||
| .add-members-body input { | ||||
|     width: 95%; | ||||
|     padding: 10px; | ||||
|     margin-bottom: 20px; | ||||
|     border: 1px solid #ddd; | ||||
|     border-radius: 4px; | ||||
|     margin-right: 15%; | ||||
|     outline: none; | ||||
| } | ||||
| 
 | ||||
| .add-member-button { | ||||
|     padding: 10px 20px; | ||||
|     border: none; | ||||
|     background-color: #007bb5; | ||||
|     color: white; | ||||
|     border-radius: 20px; | ||||
|     cursor: pointer; | ||||
|     outline: none; | ||||
|     transition: background-color 0.3s ease; | ||||
| } | ||||
| 
 | ||||
| .add-member-button:hover { | ||||
|     background-color: #005f8c; | ||||
| } | ||||
							
								
								
									
										146
									
								
								assets/js/chatSettings.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								assets/js/chatSettings.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,146 @@ | ||||
| const chatId = 123; | ||||
| let localHistoryId = 0; | ||||
| 
 | ||||
| function handleChangeName() { | ||||
|     const newName = document.getElementById('room-name').value; | ||||
|     changeChatName(chatId, localHistoryId, newName).then(() => { | ||||
|     }); | ||||
| } | ||||
| function handleAddMember() { | ||||
|     const login = document.getElementById('newMemberLogin').value; | ||||
|     if (login) { | ||||
|         addMemberToChat(chatId, localHistoryId, login).then(() => { | ||||
|             const list = document.getElementById("chat-settings-container-body"); | ||||
|             const listItem = document.createElement("li"); | ||||
|             listItem.textContent = login; | ||||
|             list.appendChild(listItem); | ||||
|             closeAdd(); | ||||
|         }); | ||||
|     } | ||||
| } | ||||
| function handleRemoveMember(userId) { | ||||
|     removeMemberFromChat(chatId, localHistoryId, userId).then(() => { | ||||
|         const listItem = document.getElementById(`member-${userId}`); | ||||
|         if (listItem) { | ||||
|             listItem.remove(); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| function openInvite() { | ||||
|     document.getElementById("add_members").style.display = "flex"; | ||||
| } | ||||
| 
 | ||||
| function closeAdd() { | ||||
|     document.getElementById("add_members").style.display = "none"; | ||||
| } | ||||
| 
 | ||||
| function updateChat() { | ||||
|     pollChatEvents(chatId, localHistoryId).then(() => { | ||||
|     }); | ||||
| } | ||||
| document.addEventListener('DOMContentLoaded', () => { | ||||
|     updateChat(); | ||||
| }); | ||||
| async function changeChatName(chatId, localHistoryId, newName) { | ||||
|     try { | ||||
|         const response = await fetch('/api/changeChatName', { | ||||
|             method: 'POST', | ||||
|             headers: { | ||||
|                 'Content-Type': 'application/json', | ||||
|             }, | ||||
|             body: JSON.stringify({ | ||||
|                 chatUpdReq: { | ||||
|                     chatId: chatId, | ||||
|                     LocalHistoryId: localHistoryId | ||||
|                 }, | ||||
|                 content: { | ||||
|                     name: newName | ||||
|                 } | ||||
|             }) | ||||
|         }); | ||||
|         const data = await response.json(); | ||||
|         if (data.status === 0) { | ||||
|             console.log('Название комнаты успешно изменено'); | ||||
|         } else { | ||||
|             console.error('Ошибка при изменении названия комнаты:', data.error); | ||||
|         } | ||||
|     } catch (error) { | ||||
|         console.error('Ошибка сети при изменении названия комнаты:', error); | ||||
|     } | ||||
| } | ||||
| async function addMemberToChat(chatId, localHistoryId, nickname) { | ||||
|     try { | ||||
|         const response = await fetch('/api/addMemberToChat', { | ||||
|             method: 'POST', | ||||
|             headers: { | ||||
|                 'Content-Type': 'application/json', | ||||
|             }, | ||||
|             body: JSON.stringify({ | ||||
|                 chatUpdReq: { | ||||
|                     chatId: chatId, | ||||
|                     LocalHistoryId: localHistoryId | ||||
|                 }, | ||||
|                 nickname: nickname | ||||
|             }) | ||||
|         }); | ||||
|         const data = await response.json(); | ||||
|         if (data.status === 0) { | ||||
|             console.log('Участник успешно добавлен'); | ||||
|         } else { | ||||
|             console.error('Ошибка при добавлении участника:', data.error); | ||||
|         } | ||||
|     } catch (error) { | ||||
|         console.error('Ошибка сети при добавлении участника:', error); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| async function removeMemberFromChat(chatId, localHistoryId, userId) { | ||||
|     try { | ||||
|         const response = await fetch('/api/removeMemberFromChat', { | ||||
|             method: 'POST', | ||||
|             headers: { | ||||
|                 'Content-Type': 'application/json', | ||||
|             }, | ||||
|             body: JSON.stringify({ | ||||
|                 chatUpdReq: { | ||||
|                     chatId: chatId, | ||||
|                     LocalHistoryId: localHistoryId | ||||
|                 }, | ||||
|                 userId: userId | ||||
|             }) | ||||
|         }); | ||||
|         const data = await response.json(); | ||||
|         if (data.status === 0) { | ||||
|             console.log('Участник успешно удален'); | ||||
|         } else { | ||||
|             console.error('Ошибка при удалении участника:', data.error); | ||||
|         } | ||||
|     } catch (error) { | ||||
|         console.error('Ошибка сети при удалении участника:', error); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| async function pollChatEvents(chatId, localHistoryId) { | ||||
|     try { | ||||
|         const response = await fetch('/api/chatPollEvents', { | ||||
|             method: 'POST', | ||||
|             headers: { | ||||
|                 'Content-Type': 'application/json', | ||||
|             }, | ||||
|             body: JSON.stringify({ | ||||
|                 chatUpdReq: { | ||||
|                     chatId: chatId, | ||||
|                     LocalHistoryId: localHistoryId | ||||
|                 } | ||||
|             }) | ||||
|         }); | ||||
|         const data = await response.json(); | ||||
|         if (data.status === 0) { | ||||
|             console.log('События чата успешно обновлены'); | ||||
|         } else { | ||||
|             console.error('Ошибка при обновлении событий чата:', data.error); | ||||
|         } | ||||
|     } catch (error) { | ||||
|         console.error('Ошибка сети при обновлении событий чата:', error); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user