File size: 4,657 Bytes
e7cf806
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f68a38d
 
 
e7cf806
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f68a38d
e7cf806
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>SQL Practice Platform</title>
    <link rel="icon" href="/static/favicon.png" type="image/x-icon" />
    <script src="https://cdn.tailwindcss.com/3.3.3"></script>
    <script
      src="/static/ace.js"
      id="ace-script"
      onerror="this.nextElementSibling.src='https://cdnjs.cloudflare.com/ajax/libs/ace-builds/1.35.0/ace.js';"
    ></script>
    <script src="" id="ace-fallback"></script>
    <link href="/static/style.css" rel="stylesheet" />
    <style>
      #schemaInfo {
        max-height: calc(100vh - 200px);
        overflow-y: auto;
      }
    </style>
  </head>
  <body class="bg-gray-100 min-h-screen">
    <div class="max-w-full mx-auto p-4">
      <h1 class="text-3xl font-bold mb-6 text-center text-blue-600">
        SQL Practice Platform
      </h1>
      <div
        class="grid grid-cols-1 md:grid-cols-[30%,40%,30%] gap-4 h-[calc(100vh-100px)]"
      >
        <div class="bg-white p-4 rounded-lg shadow-md">
          <h2 class="text-xl font-semibold mb-4 text-green-600">Database</h2>
          <select
            id="domainSelect"
            class="w-full p-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 mb-4"
          >
            <option value="">Select Database</option>
          </select>
          <button
            id="loadSchemaBtn"
            class="w-full bg-blue-600 text-white p-2 rounded-md hover:bg-blue-700 disabled:bg-gray-400 mb-4"
            disabled
          >
            Loading...
          </button>
          <button
            id="showSchemaBtn"
            class="w-full bg-gray-500 text-white p-2 rounded-md hover:bg-gray-600 mb-4 hidden"
          >
            Show Schema
          </button>
          <button
            id="showTableBtn"
            class="w-full bg-gray-500 text-white p-2 rounded-md hover:bg-gray-600 mb-4 hidden"
          >
            Show Table
          </button>
          <div
            id="schemaInfo"
            class="text-sm overflow-auto max-h-60 hidden"
          ></div>
        </div>
        <div class="bg-white p-4 rounded-lg shadow-md flex flex-col">
          <h2 class="text-xl font-semibold mb-4 text-purple-600">SQL Editor</h2>
          <div id="sqlEditor" class="w-full h-72 border rounded-md mb-4"></div>
          <div class="flex space-x-4 mb-4">
            <button
              id="runQueryBtn"
              class="bg-green-600 text-white p-2 rounded-md hover:bg-green-700 disabled:bg-gray-400"
            >
              Run
            </button>
          </div>
          <h2 class="text-xl font-semibold mb-4 text-purple-600">Results</h2>
          <div id="results" class="text-sm overflow-auto flex-grow"></div>
          <div id="errorMessage" class="text-red-500 mt-2"></div>
        </div>
        <div class="bg-white p-4 rounded-lg shadow-md flex flex-col">
          <h2 class="text-xl font-semibold mb-4 text-yellow-600">
            Practice Question
          </h2>
          <select
            id="difficultySelect"
            class="w-full p-2 border rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 mb-4"
            disabled
          >
            <option value="">Select Difficulty</option>
            <option value="Beginner">Beginner</option>
            <option value="Intermediate">Intermediate</option>
            <option value="Advanced">Advanced</option>
          </select>
          <div id="questionDetails" class="text-sm mb-4"></div>
          <div
            class="flex justify-between mb-4"
            style="display: none"
            id="navButtons"
          >
            <button
              id="prevBtn"
              class="bg-gray-500 text-white p-2 rounded-md hover:bg-gray-600"
            >
              <<
            </button>
            <button
              id="nextBtn"
              class="bg-gray-500 text-white p-2 rounded-md hover:bg-gray-600"
            >
              >>
            </button>
          </div>
          <button
            id="hintBtn"
            class="w-full bg-gray-500 text-white p-2 rounded-md hover:bg-gray-600 mb-4"
            style="display: none"
          >
            Show Hint
          </button>
          <button
            id="solutionBtn"
            class="w-full bg-gray-400 text-white p-2 rounded-md hover:bg-gray-500 mb-4"
            style="display: none"
          >
            Show Solution
          </button>
        </div>
      </div>
    </div>
    <script src="/static/script.js"></script>
  </body>
</html>