Просмотр исходного кода

allow changing the language via the ui

Lucas Stadler лет назад: 11
Родитель
Сommit
82e4c94d6d
1 измененных файлов с 22 добавлено и 4 удалено
  1. 22 4
      go/linguaevalia/linguaevalia.go

+ 22 - 4
go/linguaevalia/linguaevalia.go

128
    <title>lingua evalia</title>
128
    <title>lingua evalia</title>
129
    <meta charset="utf-8" />
129
    <meta charset="utf-8" />
130
    <style type="text/css">
130
    <style type="text/css">
131
    #codeContainer {
132
      position: relative;
133
      display: inline-block;
134
    }
135
131
    #code {
136
    #code {
132
      border: none;
137
      border: none;
133
    }
138
    }
134
139
140
    #language {
141
      position: absolute;
142
      right: 0;
143
      top: 0;
144
    }
145
135
    .error { color: red; }
146
    .error { color: red; }
136
    </style>
147
    </style>
137
  </head>
148
  </head>
138
149
139
  <body>
150
  <body>
140
    <textarea id="code" rows="20" cols="80">package main
151
    <div id="codeContainer">
152
      <textarea id="code" rows="20" cols="80">package main
141
153
142
import (
154
import (
143
	"fmt"
155
	"fmt"
147
	fmt.Println("Hello, World!")
159
	fmt.Println("Hello, World!")
148
}
160
}
149
</textarea>
161
</textarea>
162
      <select id="language">
163
        <option value="go">Go</option>
164
        <option value="python">Python</option>
165
      </select>
166
    </div>
150
    <pre id="result"></pre>
167
    <pre id="result"></pre>
151
168
152
    <script>
169
    <script>
153
      var codeEl = document.getElementById("code");
170
      var codeEl = document.getElementById("code");
171
      var languageEl = document.getElementById("language");
154
      var resultEl = document.getElementById("result");
172
      var resultEl = document.getElementById("result");
155
173
156
      codeEl.onkeydown = function(ev) {
174
      codeEl.onkeydown = function(ev) {
157
        if (ev.ctrlKey && ev.keyCode == 13) {
175
        if (ev.ctrlKey && ev.keyCode == 13) {
158
          resultEl.textContent = "";
176
          resultEl.textContent = "";
159
          sendCode(codeEl.value, function(xhr) {
177
          sendCode(codeEl.value, languageEl.value, function(xhr) {
160
            resultEl.className = xhr.status == 200 ? "success" : "error";
178
            resultEl.className = xhr.status == 200 ? "success" : "error";
161
            resultEl.textContent = xhr.response;
179
            resultEl.textContent = xhr.response;
162
          });
180
          });
163
        }
181
        }
164
      }
182
      }
165
183
166
      function sendCode(code, cb) {
184
      function sendCode(code, language, cb) {
167
        var xhr = new XMLHttpRequest();
185
        var xhr = new XMLHttpRequest();
168
        xhr.open("POST", "/run");
186
        xhr.open("POST", "/run?language=" + language);
169
        xhr.onreadystatechange = function(ev) {
187
        xhr.onreadystatechange = function(ev) {
170
          if (xhr.readyState == XMLHttpRequest.DONE) {
188
          if (xhr.readyState == XMLHttpRequest.DONE) {
171
            cb(xhr);
189
            cb(xhr);