Subham9126 commited on
Commit
f22db44
·
verified ·
1 Parent(s): 1564fdd

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +52 -127
index.html CHANGED
@@ -1,162 +1,92 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Dynamic Input Form and Facet Explorer</title>
7
- <script src="https://cdn.tailwindcss.com"></script>
8
  <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
9
- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
10
  <style>
11
  .sticky-query {
12
  position: sticky;
13
  top: 0;
14
- z-index: 10;
 
 
 
 
15
  }
16
  .fade-in {
17
  animation: fadeIn 0.5s ease-out;
18
- }
19
- @keyframes fadeIn {
20
- 0% { opacity: 0; }
21
- 100% { opacity: 1; }
 
 
 
 
22
  }
23
  </style>
24
  </head>
 
25
  <body class="bg-gray-50 min-h-screen font-sans text-gray-800">
26
- <div class="flex flex-col md:flex-row">
27
- <!-- Dynamic Input Form (30% width on larger screens) -->
28
- <div class="w-full md:w-3/10 p-4 bg-white border-b md:border-r border-gray-200">
29
- <h2 class="text-2xl font-bold mb-6 text-center">Dynamic Input Form</h2>
30
- <form id="dynamicForm" class="space-y-4">
31
- <div id="inputContainer" class="space-y-4">
32
- <div class="flex items-center space-x-2">
33
- <input type="text" class="flex-grow px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Enter value">
34
- <button type="button" class="px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700 transition duration-300 delete-btn" onclick="deleteInput(this)" disabled>Delete</button>
35
- </div>
36
- </div>
37
- <div class="flex justify-between">
38
- <button type="button" class="px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition duration-300" onclick="addInput()">Add Input Box</button>
39
- <button type="submit" class="px-4 py-2 bg-green-600 text-white rounded-md hover:bg-green-700 transition duration-300">Submit</button>
40
- <button type="button" class="px-4 py-2 bg-gray-600 text-white rounded-md hover:bg-gray-700 transition duration-300" onclick="resetForm()">Reset</button>
41
- </div>
42
- </form>
43
- <div id="output" class="mt-6 p-4 bg-gray-200 rounded-md hidden">
44
- <h2 class="text-lg font-semibold mb-2">Output:</h2>
45
- <pre id="formattedOutput" class="text-gray-800 font-mono whitespace-pre-wrap"></pre>
46
- </div>
47
- </div>
48
 
49
- <!-- Facet Explorer (70% width on larger screens) -->
50
- <div class="w-full md:w-7/10 p-4">
51
- <h2 class="text-2xl font-bold mb-6 text-center">Dynamic Facet Explorer</h2>
52
- <!-- Query Input -->
53
- <div class="sticky-query bg-white rounded-lg shadow-lg p-4 mb-6">
54
- <div class="mb-4">
55
- <label for="query" class="block text-lg font-medium text-gray-700 mb-2">Query</label>
56
- <input type="text" id="query" placeholder="Enter your query" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
57
- </div>
58
  </div>
 
59
 
60
- <!-- Section 1: Input -->
61
- <div class="bg-white rounded-lg shadow-lg p-4 mb-6">
62
- <div class="mb-4">
63
- <label for="given_facet" class="block text-lg font-medium text-gray-700 mb-2">Given Facet</label>
64
- <textarea id="given_facet" placeholder="Enter your facet in the specified format" class="w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" rows="6"></textarea>
65
- </div>
66
- <button id="submit" class="w-full bg-blue-600 text-white py-2 px-4 rounded-md hover:bg-blue-700 transition duration-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">Submit</button>
67
  </div>
 
 
68
 
69
- <!-- Section 2: Dynamic Boxes -->
70
- <div id="dynamicBoxes" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"></div>
71
-
72
- <!-- Get List Button -->
73
- <div class="mt-6 text-center">
74
- <button id="getList" class="bg-green-600 text-white py-2 px-4 rounded-md hover:bg-green-700 transition duration-300 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2">Get List</button>
75
- <button id="reset" class="bg-red-600 text-white py-2 px-4 ml-2 rounded-md hover:bg-red-700 transition duration-300 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2">Reset</button>
76
- </div>
77
 
78
- <!-- Result Display -->
79
- <div id="result" class="mt-6 text-center text-xl font-semibold"></div>
 
 
80
  </div>
 
 
 
81
  </div>
82
 
 
83
  <script>
84
- // Dynamic Input Form JavaScript
85
- function addInput() {
86
- const container = document.getElementById('inputContainer');
87
- const newInput = document.createElement('div');
88
- newInput.className = 'flex items-center space-x-2';
89
- newInput.innerHTML = `
90
- <input type="text" class="flex-grow px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Enter value">
91
- <button type="button" class="px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700 transition duration-300 delete-btn" onclick="deleteInput(this)">Delete</button>
92
- `;
93
- container.appendChild(newInput);
94
- updateDeleteButtons();
95
- }
96
-
97
- function deleteInput(button) {
98
- button.parentElement.remove();
99
- updateDeleteButtons();
100
- }
101
-
102
- function updateDeleteButtons() {
103
- const deleteButtons = document.querySelectorAll('.delete-btn');
104
- deleteButtons.forEach(btn => {
105
- btn.disabled = deleteButtons.length === 1;
106
- });
107
- }
108
-
109
- function resetForm() {
110
- const container = document.getElementById('inputContainer');
111
- container.innerHTML = `
112
- <div class="flex items-center space-x-2">
113
- <input type="text" class="flex-grow px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder="Enter value">
114
- <button type="button" class="px-4 py-2 bg-red-600 text-white rounded-md hover:bg-red-700 transition duration-300 delete-btn" onclick="deleteInput(this)" disabled>Delete</button>
115
- </div>
116
- `;
117
- document.getElementById('output').classList.add('hidden');
118
- document.getElementById('formattedOutput').textContent = '';
119
- }
120
-
121
- function processInputValue(value) {
122
- return value.trim().toLowerCase().replace(/\s+/g, '_');
123
- }
124
-
125
- document.getElementById('dynamicForm').addEventListener('submit', function(e) {
126
- e.preventDefault();
127
- const inputs = document.querySelectorAll('#inputContainer input');
128
- const values = Array.from(inputs).map(input => processInputValue(input.value));
129
- const formattedOutput = '[' + values.map(v => `'${v}'`).join(', ') + ']';
130
-
131
- document.getElementById('formattedOutput').textContent = formattedOutput;
132
- document.getElementById('output').classList.remove('hidden');
133
- });
134
-
135
  $(document).ready(function() {
136
  let isResultShown = false;
137
- let facetData = [];
138
  $('#submit').click(function() {
139
  const query = $('#query').val();
140
  const givenFacet = $('#given_facet').val();
141
  try {
142
- facetData = JSON.parse(givenFacet.replace(/'/g, '"'));
143
- generateBoxes(facetData);
144
  resetResult();
145
  } catch (error) {
146
- alert('Invalid facet format. Please enter a valid JSON array of objects.');
147
  }
148
  });
149
- function generateBoxes(facetArray) {
150
  const $dynamicBoxes = $('#dynamicBoxes').empty();
151
- facetArray.forEach((facetObj, index) => {
152
- const [key, values] = Object.entries(facetObj)[0];
153
  const $box = $('<div>').addClass('bg-white rounded-lg shadow-md p-6 fade-in');
154
  const $title = $('<div>').addClass('flex items-center justify-between mb-4')
155
- .append($('<h2>').addClass('text-xl font-semibold').text(key))
156
  .append($('<input>').attr({
157
  type: 'checkbox',
158
  name: key,
159
- 'data-index': index,
160
  class: 'form-checkbox h-5 w-5 text-blue-600'
161
  }));
162
  const $content = $('<div>').addClass('space-y-2');
@@ -168,16 +98,11 @@
168
  });
169
  }
170
  $('#getList').click(function() {
171
- const result = facetData.reduce((acc, facetObj) => {
172
- const [key] = Object.keys(facetObj);
173
- const $categoryCheckbox = $(`input[type="checkbox"][name="${key}"]`);
174
- if ($categoryCheckbox.is(':checked')) {
175
- acc.push(`'${key}'`);
176
- }
177
- return acc;
178
- }, []);
179
- const formattedResult = `[${result.join(', ')}]`;
180
- $('#result').text(formattedResult).addClass('fade-in');
181
  isResultShown = true;
182
  });
183
  $('#reset').click(function() {
@@ -194,4 +119,4 @@
194
  });
195
  </script>
196
  </body>
197
- </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
3
+
4
  <head>
5
  <meta charset="UTF-8">
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Dynamic Facet Explorer</title>
 
8
  <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
 
9
  <style>
10
  .sticky-query {
11
  position: sticky;
12
  top: 0;
13
+ z-Coeff: 1;
14
+ background-color: white;
15
+ padding: 1rem;
16
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
17
+ animation: zoomIn 0.5s ease-out;
18
  }
19
  .fade-in {
20
  animation: fadeIn 0.5s ease-out;
21
+ @keyframes fadeIn {
22
+ 0% {
23
+ opacity: 0;
24
+ }
25
+ 100% {
26
+ opacity: 1;
27
+ }
28
+ }
29
  }
30
  </style>
31
  </head>
32
+
33
  <body class="bg-gray-50 min-h-screen font-sans text-gray-800">
34
+ <div class="container mx-auto px-4 py-12">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
+ <!-- Query Input -->
37
+ <div class="sticky-query bg-white rounded-lg shadow-lg p-8 mb-12">
38
+ <div class="mb-6">
39
+ <label for="query" class="block text-lg font-medium text-gray-700 mb-2">Query</label>
40
+ <input type="text" id="query" placeholder="Enter your query" class="w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
 
 
 
 
41
  </div>
42
+ </div>
43
 
44
+ <!-- Section 1: Input -->
45
+ <div class="bg-white rounded-lg shadow-lg p-8 mb-12">
46
+ <div class="mb-6">
47
+ <label for="given_facet" class="block text-lg font-medium text-gray-700 mb-2">Given Facet</label>
48
+ <input type="text" id="given_facet" placeholder="Enter your facet in Python dictionary format" class="w-full px-4 py-3 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500">
 
 
49
  </div>
50
+ <button id="submit" class="w-full bg-blue-600 text-white py-3 px-6 rounded-md hover:bg-blue-700 transition duration-300 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">Submit</button>
51
+ </div>
52
 
53
+ <!-- Section 2: Dynamic Boxes -->
54
+ <div id="dynamicBoxes" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"></div>
 
 
 
 
 
 
55
 
56
+ <!-- Get List Button -->
57
+ <div class="mt-12 text-center">
58
+ <button id="getList" class="bg-green-600 text-white py-3 px-8 rounded-md hover:bg-green-700 transition duration-300 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2">Get List</button>
59
+ <button id="reset" class="bg-red-600 text-white py-3 px-8 ml-4 rounded-md hover:bg-red-700 transition duration-300 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2">Reset</button>
60
  </div>
61
+
62
+ <!-- Result Display -->
63
+ <div id="result" class="mt-12 text-center text-2xl font-semibold"></div>
64
  </div>
65
 
66
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
67
  <script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  $(document).ready(function() {
69
  let isResultShown = false;
 
70
  $('#submit').click(function() {
71
  const query = $('#query').val();
72
  const givenFacet = $('#given_facet').val();
73
  try {
74
+ const facetObj = eval('(' + givenFacet + ')');
75
+ generateBoxes(facetObj);
76
  resetResult();
77
  } catch (error) {
78
+ alert('Invalid facet format. Please enter a valid Python dictionary.');
79
  }
80
  });
81
+ function generateBoxes(facetObj) {
82
  const $dynamicBoxes = $('#dynamicBoxes').empty();
83
+ Object.entries(facetObj).forEach(([key, values]) => {
 
84
  const $box = $('<div>').addClass('bg-white rounded-lg shadow-md p-6 fade-in');
85
  const $title = $('<div>').addClass('flex items-center justify-between mb-4')
86
+ .append($('<h2>').addClass('text-xl font-semibold').text(`'${key}'`))
87
  .append($('<input>').attr({
88
  type: 'checkbox',
89
  name: key,
 
90
  class: 'form-checkbox h-5 w-5 text-blue-600'
91
  }));
92
  const $content = $('<div>').addClass('space-y-2');
 
98
  });
99
  }
100
  $('#getList').click(function() {
101
+ const checkedBoxes = $('input[type="checkbox"]:checked').map(function() {
102
+ return `'${this.name}'`;
103
+ }).get();
104
+ const result = `[${checkedBoxes.join(', ')}]`;
105
+ $('#result').text(result).addClass('fade-in');
 
 
 
 
 
106
  isResultShown = true;
107
  });
108
  $('#reset').click(function() {
 
119
  });
120
  </script>
121
  </body>
122
+ </html>