TheFrenchDemos commited on
Commit
386bcc5
·
1 Parent(s): d27f127

Update templates/index.html

Browse files

dans la version précédente, le clic de la deuxième image ne produisait rien.
Celle-ci intègre de plus un fade-in et un liseré bleu

Files changed (1) hide show
  1. templates/index.html +58 -13
templates/index.html CHANGED
@@ -15,12 +15,16 @@
15
  width: 100%;
16
  height: auto;
17
  cursor: pointer;
18
- transition: transform 0.2s;
 
19
  border-radius: 8px;
20
  }
21
  .preset-image:hover {
22
  transform: scale(1.05);
23
  }
 
 
 
24
  .dropzone {
25
  border: 2px dashed #ccc;
26
  padding: 20px;
@@ -34,6 +38,11 @@
34
  height: auto;
35
  margin-top: 10px;
36
  border-radius: 8px;
 
 
 
 
 
37
  }
38
  .loading-container {
39
  text-align: center;
@@ -59,17 +68,17 @@
59
  <div class="row">
60
  <div class="col-4">
61
  <div class="preset-image-container">
62
- <img src="/static/1.webp" class="preset-image" onclick="selectPreset(1, 1)" alt="Original 1">
63
  </div>
64
  </div>
65
  <div class="col-4">
66
  <div class="preset-image-container">
67
- <img src="/static/2.webp" class="preset-image" onclick="selectPreset(2, 1)" alt="Original 2">
68
  </div>
69
  </div>
70
  <div class="col-4">
71
  <div class="preset-image-container">
72
- <img src="/static/3.webp" class="preset-image" onclick="selectPreset(3, 1)" alt="Original 3">
73
  </div>
74
  </div>
75
  </div>
@@ -86,17 +95,17 @@
86
  <div class="row">
87
  <div class="col-4">
88
  <div class="preset-image-container">
89
- <img src="/static/1.webp" class="preset-image" onclick="selectPreset(4, 2)" alt="AI 1">
90
  </div>
91
  </div>
92
  <div class="col-4">
93
  <div class="preset-image-container">
94
- <img src="/static/2.webp" class="preset-image" onclick="selectPreset(5, 2)" alt="AI 2">
95
  </div>
96
  </div>
97
  <div class="col-4">
98
  <div class="preset-image-container">
99
- <img src="/static/3.webp" class="preset-image" onclick="selectPreset(6, 2)" alt="AI 3">
100
  </div>
101
  </div>
102
  </div>
@@ -112,6 +121,19 @@
112
  <!-- Compare Button -->
113
  <div id="compareButtonContainer" class="text-center my-4"></div>
114
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  <!-- Result -->
116
  <div id="results" class="mt-5"></div>
117
 
@@ -122,6 +144,13 @@
122
  let file1 = null;
123
  let file2 = null;
124
 
 
 
 
 
 
 
 
125
  function selectPreset(presetNumber, target) {
126
  fetch(`/static/${presetNumber}.webp`)
127
  .then(res => res.blob())
@@ -129,34 +158,50 @@
129
  const file = new File([blob], `preset${presetNumber}.webp`, { type: blob.type });
130
  if (target === 1) {
131
  file1 = file;
132
- updatePreview('dropzone1', blob);
 
 
133
  } else {
134
  file2 = file;
135
- updatePreview('dropzone2', blob);
 
 
136
  }
137
  })
138
  .then(() => checkReadyToCompare());
139
  }
140
 
141
- function updatePreview(dropzoneId, blob) {
142
  const reader = new FileReader();
143
  reader.onload = (event) => {
144
  document.getElementById(dropzoneId).innerHTML = `
145
- <img src="${event.target.result}" class="preview-image"/>
146
  `;
 
 
 
 
 
 
 
 
 
 
147
  };
148
  reader.readAsDataURL(blob);
149
  }
150
 
151
  document.getElementById('fileInput1').addEventListener('change', (e) => {
152
  file1 = e.target.files[0];
153
- updatePreview('dropzone1', file1);
 
154
  checkReadyToCompare();
155
  });
156
 
157
  document.getElementById('fileInput2').addEventListener('change', (e) => {
158
  file2 = e.target.files[0];
159
- updatePreview('dropzone2', file2);
 
160
  checkReadyToCompare();
161
  });
162
 
 
15
  width: 100%;
16
  height: auto;
17
  cursor: pointer;
18
+ transition: transform 0.2s, border 0.2s;
19
+ border: 2px solid transparent;
20
  border-radius: 8px;
21
  }
22
  .preset-image:hover {
23
  transform: scale(1.05);
24
  }
25
+ .preset-image.selected {
26
+ border-color: #0d6efd;
27
+ }
28
  .dropzone {
29
  border: 2px dashed #ccc;
30
  padding: 20px;
 
38
  height: auto;
39
  margin-top: 10px;
40
  border-radius: 8px;
41
+ opacity: 0;
42
+ transition: opacity 0.5s ease-in;
43
+ }
44
+ .preview-image.visible {
45
+ opacity: 1;
46
  }
47
  .loading-container {
48
  text-align: center;
 
68
  <div class="row">
69
  <div class="col-4">
70
  <div class="preset-image-container">
71
+ <img id="preset-1-1" src="/static/1.webp" class="preset-image" onclick="selectPreset(1, 1)" alt="Original 1">
72
  </div>
73
  </div>
74
  <div class="col-4">
75
  <div class="preset-image-container">
76
+ <img id="preset-2-1" src="/static/2.webp" class="preset-image" onclick="selectPreset(2, 1)" alt="Original 2">
77
  </div>
78
  </div>
79
  <div class="col-4">
80
  <div class="preset-image-container">
81
+ <img id="preset-3-1" src="/static/3.webp" class="preset-image" onclick="selectPreset(3, 1)" alt="Original 3">
82
  </div>
83
  </div>
84
  </div>
 
95
  <div class="row">
96
  <div class="col-4">
97
  <div class="preset-image-container">
98
+ <img id="preset-1-2" src="/static/1.webp" class="preset-image" onclick="selectPreset(1, 2)" alt="AI 1">
99
  </div>
100
  </div>
101
  <div class="col-4">
102
  <div class="preset-image-container">
103
+ <img id="preset-2-2" src="/static/2.webp" class="preset-image" onclick="selectPreset(2, 2)" alt="AI 2">
104
  </div>
105
  </div>
106
  <div class="col-4">
107
  <div class="preset-image-container">
108
+ <img id="preset-3-2" src="/static/3.webp" class="preset-image" onclick="selectPreset(3, 2)" alt="AI 3">
109
  </div>
110
  </div>
111
  </div>
 
121
  <!-- Compare Button -->
122
  <div id="compareButtonContainer" class="text-center my-4"></div>
123
 
124
+ <!-- Preview of Selected Images -->
125
+ <div class="row mt-5" id="previewSection" style="display:none;">
126
+ <h4 class="text-center mb-4">Selected Images</h4>
127
+ <div class="col-md-6 text-center">
128
+ <h6>Original Image</h6>
129
+ <img id="previewImage1" class="preview-image img-fluid" alt="Original Preview">
130
+ </div>
131
+ <div class="col-md-6 text-center">
132
+ <h6>AI Generated Image</h6>
133
+ <img id="previewImage2" class="preview-image img-fluid" alt="AI Preview">
134
+ </div>
135
+ </div>
136
+
137
  <!-- Result -->
138
  <div id="results" class="mt-5"></div>
139
 
 
144
  let file1 = null;
145
  let file2 = null;
146
 
147
+ function resetSelection(target) {
148
+ for (let i = 1; i <= 3; i++) {
149
+ const img = document.getElementById(`preset-${i}-${target}`);
150
+ if (img) img.classList.remove('selected');
151
+ }
152
+ }
153
+
154
  function selectPreset(presetNumber, target) {
155
  fetch(`/static/${presetNumber}.webp`)
156
  .then(res => res.blob())
 
158
  const file = new File([blob], `preset${presetNumber}.webp`, { type: blob.type });
159
  if (target === 1) {
160
  file1 = file;
161
+ updatePreview('dropzone1', blob, 1);
162
+ resetSelection(1);
163
+ document.getElementById(`preset-${presetNumber}-1`).classList.add('selected');
164
  } else {
165
  file2 = file;
166
+ updatePreview('dropzone2', blob, 2);
167
+ resetSelection(2);
168
+ document.getElementById(`preset-${presetNumber}-2`).classList.add('selected');
169
  }
170
  })
171
  .then(() => checkReadyToCompare());
172
  }
173
 
174
+ function updatePreview(dropzoneId, blob, target) {
175
  const reader = new FileReader();
176
  reader.onload = (event) => {
177
  document.getElementById(dropzoneId).innerHTML = `
178
+ <img src="${event.target.result}" class="preview-image visible"/>
179
  `;
180
+
181
+ if (target === 1) {
182
+ document.getElementById('previewImage1').src = event.target.result;
183
+ document.getElementById('previewImage1').classList.add('visible');
184
+ } else {
185
+ document.getElementById('previewImage2').src = event.target.result;
186
+ document.getElementById('previewImage2').classList.add('visible');
187
+ }
188
+
189
+ document.getElementById('previewSection').style.display = 'flex';
190
  };
191
  reader.readAsDataURL(blob);
192
  }
193
 
194
  document.getElementById('fileInput1').addEventListener('change', (e) => {
195
  file1 = e.target.files[0];
196
+ updatePreview('dropzone1', file1, 1);
197
+ resetSelection(1);
198
  checkReadyToCompare();
199
  });
200
 
201
  document.getElementById('fileInput2').addEventListener('change', (e) => {
202
  file2 = e.target.files[0];
203
+ updatePreview('dropzone2', file2, 2);
204
+ resetSelection(2);
205
  checkReadyToCompare();
206
  });
207