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

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