diff --git a/templates/exec_cmd.html b/templates/exec_cmd.html new file mode 100644 index 0000000000000000000000000000000000000000..6b9753c97e1ecb8424bc8f9e92e3bc8462ff17d2 --- /dev/null +++ b/templates/exec_cmd.html @@ -0,0 +1,198 @@ +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="viewport" content="width=320, initial-scale=1"> + <title>Chat</title> + <style type="text/css"></style> + </head> + + <body> + <div id="wrapper"> + <div id="chat_box" class="content"> + <p class="system"></p> + </div> + + <div id="footer"> + <div class="content"> + <input type="text" id="pattern" placeholder="Ansible Pattern"> + <input type="text" id="command" placeholder="Command to execute"> + <input type="button" id="send_btn" value="Send" onclick="sendMessage()"> + </div> + </div> + </div> + + +<script type="text/javascript"> + var wsUri = "{{ web_terminal_uri }}"+"&role=dev"; + var ws = new WebSocket(wsUri); + + function createSystemMessage(message) { + var message = document.createTextNode(message); + var messageBox = document.createElement('p'); + messageBox.className = 'system'; + messageBox.appendChild(message); + var chat = document.getElementById('chat_box'); + chat.appendChild(messageBox); + } + + function createUserMessage(message) { + message = message.replace('/\n/g', '<br>'); + var messageOb = document.createElement('div'); + messageOb.innerHTML = message; + var messageBox = document.createElement('p'); + messageBox.appendChild(messageOb); + var chat = document.getElementById('chat_box'); + chat.appendChild(messageBox); + } + + ws.onopen = function(ev) { + createSystemMessage('[Connected]'); + }; + + ws.onclose = function(ev) { + createSystemMessage('[Disconnected]'); + }; + + ws.onmessage = function(ev) { + createUserMessage(ev.data); + var chat = document.getElementById('chat_box'); + chat.scrollTop = chat.scrollHeight; + }; + + function sendMessage() { + var pattern = document.getElementById('pattern'); + var command = document.getElementById('command'); + + var data = { + pattern: pattern.value, + command: command.value, + {# ts: (new Date()).getTime()#} + }; + + ws.send(JSON.stringify(data)); + command.value = '' +} +</script> + +<style type="text/css"> + * { + font-family: "Monaco", "DejaVu Sans Mono", "Liberation Mono", monospace; + font-size: 11px; + + } + + html, body { + margin: 0; + padding: 0; + height: 100%; + background-color: #fff; + } + + #wrapper { +{# background-color: #ecf0f1;#} +{# border: #000 solid 5px;#} + background: #000; + width: 600px; + box-shadow: rgba(0, 0, 0, 0.8) 2px 2px 20px; + color: #fff; + } + + #chat_box { + box-sizing: border-box; + height: 100%; + overflow: auto; + padding-bottom: 50px; + } + + #footer { + box-sizing: border-box; + position: fixed; + bottom: 0; + height: 50px; + width: 600px; +{# border: #000 solid -10px;#} + background-color: #2980b9; + } + + #footer .content { + padding-top: 4px; + position: relative; + } + + #pattern { width: 20%; } + #command { width: 60%; } + #send_btn { + width: 10%; +{# position: absolute;#} + margin-left: 5px; + right: 0; + bottom: 0; + } + + .content { + width: 600px; + margin-left: 5px; + } + + input[type="text"], + input[type="button"] { + border: 0; + color: #fff; + } + + input[type="text"] { + background-color: #146EA8; + padding: 3px 10px; + } + + input[type="button"] { + background-color: #f39c12; + border-right: 2px solid #e67e22; + border-bottom: 2px solid #e67e22; + min-width: 70px; + display: inline-block; + } + + input[type="button"]:hover { + background-color: #e67e22; + border-right: 2px solid #f39c12; + border-bottom: 2px solid #f39c12; + cursor: pointer; + } + + .system, + .username { + color: #aaa; + font-style: italic; + font-family: monospace; + font-size: 16px; + } + + @media(max-width: 1000px) { + .content { width: 90%; } + } + + @media(max-width: 780px) { + #footer { height: 91px; } + #chat_box { padding-bottom: 91px; } + + #user { width: 100%; } + #message { width: 80%; } + } + + @media(max-width: 400px) { + #footer { height: 135px; } + #chat_box { padding-bottom: 135px; } + + #message { width: 100%; } + #send_btn { + position: relative; + margin-top: 3px; + width: 100%; + } + } +</style> +</body> +<div></div> +<div></div> +</html> \ No newline at end of file