Fixed the send button in the webclient; made the prompt command work with the webclient (still not displaying correctly)

This commit is contained in:
Griatch 2016-04-11 22:31:20 +02:00
parent aa1b8357d8
commit 039bb0c540
3 changed files with 25 additions and 17 deletions

View file

@ -156,10 +156,12 @@ class WebSocketClient(Protocol, Session):
text = args[0]
if text is None:
return
else:
return
flags = self.protocol_flags
text = to_str(text, force_string=True)
options = kwargs.get("options", {})
options = kwargs.pop("options", {})
raw = options.get("raw", False)
nomarkup = options.get("nomarkup", False)
screenreader = options.get("screenreader", flags.get("SCREENREADER", False))
@ -174,6 +176,7 @@ class WebSocketClient(Protocol, Session):
args[0] = text
else:
args[0] = parse_html(text, strip_ansi=nomarkup)
print "send_text:", cmd, args, kwargs
# send to client on required form [cmdname, args, kwargs]
self.sendLine(json.dumps([cmd, args, kwargs]))

View file

@ -55,14 +55,14 @@ var input_history = function() {
history_pos = 0;
return history[history.length -1];
}
var scratch = function (input) {
// Put the input into the last history entry (which is normally empty)
// without making the array larger as with add.
// Allows for in-progress editing to be saved.
history[history.length-1] = input;
}
return {back: back,
fwd: fwd,
add: add,
@ -103,8 +103,8 @@ function onKeydown (event) {
if (code === 13) { // Enter key sends text
doSendText();
event.preventDefault();
}
else if (inputfield[0].selectionStart == inputfield.val().length) {
}
else if (inputfield[0].selectionStart == inputfield.val().length) {
// Only process up/down arrow if cursor is at the end of the line.
if (code === 38) { // Arrow up
history_entry = input_history.back();
@ -112,8 +112,8 @@ function onKeydown (event) {
else if (code === 40) { // Arrow down
history_entry = input_history.fwd();
}
}
}
if (history_entry !== null) {
// Doing a history navigation; replace the text in the input.
inputfield.val(history_entry);
@ -133,7 +133,7 @@ var resizeInputField = function () {
var min_height = 50;
var max_height = 300;
var prev_text_len = 0;
// Check to see if we should change the height of the input area
return function () {
var inputfield = $("#inputfield");
@ -141,21 +141,21 @@ var resizeInputField = function () {
var clienth = inputfield.prop("clientHeight");
var newh = 0;
var curr_text_len = inputfield.val().length;
if (scrollh > clienth && scrollh <= max_height) {
// Need to make it bigger
newh = scrollh;
}
}
else if (curr_text_len < prev_text_len) {
// There is less text in the field; try to make it smaller
// To avoid repaints, we draw the text in an offscreen element and
// To avoid repaints, we draw the text in an offscreen element and
// determine its dimensions.
var sizer = $('#inputsizer')
.css("width", inputfield.prop("clientWidth"))
.text(inputfield.val());
newh = sizer.prop("scrollHeight");
}
if (newh != 0) {
newh = Math.min(newh, max_height);
if (clienth != newh) {
@ -173,7 +173,7 @@ function doWindowResize() {
var message_scrollh = $("#messagewindow").prop("scrollHeight");
$("#messagewindow")
.css({"bottom": formh}) // leave space for the input form
.scrollTop(message_scrollh); // keep the output window scrolled to the bottom
.scrollTop(message_scrollh); // keep the output window scrolled to the bottom
}
// Handle text coming from the server
@ -190,11 +190,11 @@ function onText(args, kwargs) {
// Handle prompt output from the server
function onPrompt(args, kwargs) {
// show prompt
$('prompt').replaceWith(
"<div id='prompt' class='msg out'>" + args[0] + "</div>");
$('#prompt').replaceWith(
"<div id='prompt'>" + args[0] + "</div>");
}
// Handle silencing events we don't do anything with.
// Silences events we don't do anything with.
function onSilence(cmdname, args, kwargs) {}
// Handle unrecognized commands from server
@ -224,6 +224,9 @@ $(document).keydown(onKeydown)
.bind("paste", resizeInputField)
.bind("cut", resizeInputField);
// Pressing the send button
$("#inputsend").bind("click", doSendText);
// Event when client finishes loading
$(document).ready(function() {
// This is safe to call, it will always only
@ -237,6 +240,8 @@ $(document).ready(function() {
Evennia.emitter.on("connection_open", onSilence);
Evennia.emitter.on("connection_close", onSilence);
// Handle pressing the send button
$("#inputsend").bind("click", doSendText);
// Event when closing window (have to have Evennia initialized)
$(window).bind("beforeunload", Evennia.connection.close);

View file

@ -15,7 +15,7 @@
<div id="prompt"></div>
<div id="inputcontrol">
<textarea id="inputfield" type="text"></textarea>
<input id="inputsend" type="button" onClick="doSendText()" value="&gt;"/>
<input id="inputsend" type="button" value="&gt;"/>
</div>
</div>
<div id="inputsizer"></div>