the-exploit-expert commited on
Commit
36bb3e5
·
verified ·
1 Parent(s): c3304c5

Update static/script.js

Browse files
Files changed (1) hide show
  1. static/script.js +125 -102
static/script.js CHANGED
@@ -1,102 +1,125 @@
1
- document.addEventListener("DOMContentLoaded", function () {
2
- const fileInput = document.getElementById("fileInput");
3
- const scanBtn = document.getElementById("scan-btn");
4
- const resultDiv = document.getElementById("result");
5
- const consentCheckbox = document.getElementById("user-consent");
6
- const preview = document.getElementById("preview");
7
- const splash = document.getElementById("splash-screen");
8
-
9
- function updateButton() {
10
- scanBtn.disabled = !(consentCheckbox.checked && fileInput.files.length > 0);
11
- }
12
-
13
- consentCheckbox.addEventListener("change", updateButton);
14
-
15
- fileInput.addEventListener("change", function () {
16
- const file = this.files[0];
17
- if (!file) {
18
- preview.style.display = "none";
19
- updateButton();
20
- return;
21
- }
22
-
23
- if (file.size > 4 * 1024 * 1024) {
24
- alert("File too big! Max 4MB allowed");
25
- fileInput.value = "";
26
- preview.style.display = "none";
27
- updateButton();
28
- return;
29
- }
30
-
31
- preview.src = URL.createObjectURL(file);
32
- preview.style.display = "block";
33
- updateButton();
34
- });
35
-
36
- scanBtn.addEventListener("click", async function (e) {
37
- e.preventDefault();
38
-
39
- if (!fileInput.files[0]) {
40
- alert("Select image first");
41
- return;
42
- }
43
-
44
- resultDiv.innerHTML = "Analyzing... ⏳";
45
-
46
- const formData = new FormData();
47
- formData.append("image", fileInput.files[0]);
48
-
49
- try {
50
- const res = await fetch("/analyze", {
51
- method: "POST",
52
- body: formData
53
- });
54
-
55
- const data = await res.json();
56
-
57
- if (data.error) {
58
- resultDiv.innerHTML = "" + data.error;
59
- return;
60
- }
61
-
62
- const analysis = data.analysis || {};
63
- const metadata = data.metadata || {};
64
-
65
- const width = metadata.width ?? "N/A";
66
- const height = metadata.height ?? "N/A";
67
- const size = metadata.size_mb ?? "N/A";
68
-
69
- const status = analysis.is_real ? "Likely Real ✅" : "Likely AI Generated 🔴";
70
-
71
- resultDiv.innerHTML = `
72
- <div style="text-align: center; margin-top: 15px;">
73
- <p><b>Result:</b> ${status}</p>
74
- <p><b>Confidence:</b> ${analysis.confidence ?? 0}%</p>
75
- <p><b>Reason:</b> ${analysis.reason ?? "N/A"}</p>
76
- <p><b>Detected Text:</b> ${data.text || "None"}</p>
77
- <hr>
78
- <p><b>Width:</b> ${width} px</p>
79
- <p><b>Height:</b> ${height} px</p>
80
- <p><b>Size:</b> ${size} MB</p>
81
- </div>
82
- `;
83
- } catch (err) {
84
- console.error("ERROR:", err);
85
- resultDiv.innerHTML = "❌ Server connection error!";
86
- }
87
- });
88
-
89
- if (splash) {
90
- splash.style.display = "flex";
91
- setTimeout(() => {
92
- splash.style.transition = "opacity 0.8s ease";
93
- splash.style.opacity = "0";
94
- setTimeout(() => { splash.style.display = "none"; }, 800);
95
- }, 2000);
96
- }
97
-
98
- const yearEl = document.getElementById("year");
99
- if (yearEl) {
100
- yearEl.innerText = new Date().getFullYear();
101
- }
102
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener("DOMContentLoaded", () => {
2
+ const fileInput = document.getElementById("fileInput");
3
+ const scanBtn = document.getElementById("scan-btn");
4
+ const resultDiv = document.getElementById("result");
5
+ const consentCheckbox = document.getElementById("user-consent");
6
+ const preview = document.getElementById("preview");
7
+ const previewBox = document.getElementById("previewBox"); // ✅ NEW
8
+ const removeBtn = document.getElementById("removeBtn"); // ✅ NEW
9
+ const splash = document.getElementById("splash-screen");
10
+ const yearEl = document.getElementById("year");
11
+
12
+ // Initially hide preview
13
+ if (previewBox) previewBox.style.display = "none";
14
+
15
+ function updateButton() {
16
+ scanBtn.disabled = !(consentCheckbox.checked && fileInput.files.length > 0);
17
+ }
18
+
19
+ consentCheckbox.addEventListener("change", updateButton);
20
+
21
+ fileInput.addEventListener("change", function () {
22
+ const file = this.files[0];
23
+
24
+ if (!file) {
25
+ preview.style.display = "none";
26
+ if (previewBox) previewBox.style.display = "none";
27
+ updateButton();
28
+ return;
29
+ }
30
+
31
+ if (file.size > 4 * 1024 * 1024) {
32
+ alert("File too big! Max 4MB allowed");
33
+ fileInput.value = "";
34
+ preview.style.display = "none";
35
+ if (previewBox) previewBox.style.display = "none";
36
+ updateButton();
37
+ return;
38
+ }
39
+
40
+ preview.src = URL.createObjectURL(file);
41
+ preview.style.display = "block";
42
+ if (previewBox) previewBox.style.display = "block";
43
+
44
+ updateButton();
45
+ });
46
+
47
+ // ❌ REMOVE IMAGE BUTTON (X)
48
+ if (removeBtn) {
49
+ removeBtn.addEventListener("click", () => {
50
+ preview.src = "";
51
+ preview.style.display = "none";
52
+ fileInput.value = "";
53
+ if (previewBox) previewBox.style.display = "none";
54
+ updateButton();
55
+ });
56
+ }
57
+
58
+ scanBtn.addEventListener("click", async (e) => {
59
+ e.preventDefault();
60
+
61
+ if (!fileInput.files[0]) {
62
+ alert("Select image first");
63
+ return;
64
+ }
65
+
66
+ resultDiv.innerHTML = "Analyzing...";
67
+
68
+ const formData = new FormData();
69
+ formData.append("image", fileInput.files[0]);
70
+
71
+ try {
72
+ const res = await fetch("/analyze", {
73
+ method: "POST",
74
+ body: formData
75
+ });
76
+
77
+ const data = await res.json();
78
+
79
+ if (data.error) {
80
+ resultDiv.innerHTML = "Error: " + data.error;
81
+ return;
82
+ }
83
+
84
+ const analysis = data.analysis || {};
85
+ const metadata = data.metadata || {};
86
+ const width = metadata.width ?? "N/A";
87
+ const height = metadata.height ?? "N/A";
88
+ const size = metadata.size_mb ?? "N/A";
89
+ const status = analysis.is_real ? "Likely Real" : "Likely AI Generated";
90
+
91
+ resultDiv.innerHTML = `
92
+ <div style="text-align: center; margin-top: 15px;">
93
+ <p><b>Result:</b> ${status}</p>
94
+ <p><b>Confidence:</b> ${analysis.confidence ?? 0}%</p>
95
+ <p><b>Reason:</b> ${analysis.reason ?? "N/A"}</p>
96
+ <p><b>Detected Text:</b> ${data.text || "None"}</p>
97
+ <hr>
98
+ <p><b>Width:</b> ${width} px</p>
99
+ <p><b>Height:</b> ${height} px</p>
100
+ <p><b>Size:</b> ${size} MB</p>
101
+ </div>
102
+ `;
103
+ } catch (error) {
104
+ console.error("Analyze error:", error);
105
+ resultDiv.innerHTML = "Server connection error!";
106
+ }
107
+ });
108
+
109
+ window.addEventListener('load', () => {
110
+ if (splash) {
111
+ splash.style.display = "flex";
112
+ setTimeout(() => {
113
+ splash.style.transition = "opacity 0.8s ease";
114
+ splash.style.opacity = "0";
115
+ setTimeout(() => {
116
+ splash.style.display = "none";
117
+ }, 800);
118
+ }, 2000);
119
+ }
120
+ });
121
+
122
+ if (yearEl) {
123
+ yearEl.innerText = new Date().getFullYear();
124
+ }
125
+ });