ChristopherJKoen commited on
Commit
248ca68
·
verified ·
1 Parent(s): 2c3ba61

Dont do anything.

Browse files
Files changed (2) hide show
  1. README.md +8 -5
  2. index.html +263 -17
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Repex Report Express Export
3
- emoji: 👁
4
- colorFrom: green
5
- colorTo: blue
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: RepEx - Report Express | Export 🚀
3
+ colorFrom: blue
4
+ colorTo: red
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
index.html CHANGED
@@ -1,19 +1,265 @@
1
  <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
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" />
6
+ <title>RepEx - Report Express | Export</title>
7
+
8
+ <link rel="stylesheet" href="style.css" />
9
+ <script src="https://cdn.tailwindcss.com"></script>
10
+ <script defer src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+
12
+ <style>
13
+ img { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
14
+ @media print {
15
+ body { background: #fff !important; }
16
+ .no-print { display: none !important; }
17
+ main { box-shadow: none !important; border: none !important; margin: 0 !important; padding: 0 !important; }
18
+ }
19
+ </style>
20
+ </head>
21
+
22
+ <body class="bg-gray-50 min-h-screen">
23
+ <main class="max-w-4xl mx-auto my-8 bg-white shadow-sm ring-1 ring-gray-200 rounded-xl p-6 md:p-8">
24
+ <!-- Header -->
25
+ <header class="mb-8 border-b border-gray-200 pb-4">
26
+ <div class="grid grid-cols-[auto,1fr,auto] items-center gap-4">
27
+ <div class="flex items-center">
28
+ <img
29
+ src="https://huggingface.co/spaces/ChristopherJKoen/docusnap-report-wizard/resolve/main/images/Picture3.png"
30
+ alt="Company logo"
31
+ class="h-12 w-auto object-contain"
32
+ loading="eager"
33
+ />
34
+ </div>
35
+
36
+ <div class="text-center">
37
+ <h1 class="text-2xl md:text-3xl font-bold text-gray-900 whitespace-nowrap">
38
+ RepEx - Report Express
39
+ </h1>
40
+ <p class="text-gray-600 whitespace-nowrap">Export</p>
41
+ </div>
42
+
43
+ <div class="flex justify-end gap-2 no-print">
44
+ <a
45
+ href="report-viewer.html"
46
+ class="inline-flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-semibold text-gray-800 hover:bg-gray-50 transition"
47
+ >
48
+ <i data-feather="arrow-left" class="h-4 w-4"></i>
49
+ Back
50
+ </a>
51
+ </div>
52
+ </div>
53
+ </header>
54
+
55
+ <!-- Workflow navigation -->
56
+ <nav class="mb-6 no-print" aria-label="Report workflow navigation">
57
+ <div class="flex flex-wrap gap-2">
58
+ <a
59
+ href="report-viewer.html"
60
+ class="inline-flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-semibold text-gray-800 hover:bg-gray-50 transition"
61
+ >
62
+ <i data-feather="layout" class="h-4 w-4"></i>
63
+ Report Viewer
64
+ </a>
65
+
66
+ <a
67
+ href="edit-layouts.html"
68
+ class="inline-flex items-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-semibold text-gray-800 hover:bg-gray-50 transition"
69
+ >
70
+ <i data-feather="grid" class="h-4 w-4"></i>
71
+ Edit Page Layouts
72
+ </a>
73
+
74
+ <a
75
+ href="export.html"
76
+ class="inline-flex items-center gap-2 rounded-lg border border-gray-200 bg-gray-900 px-4 py-2 text-sm font-semibold text-white"
77
+ >
78
+ <i data-feather="download" class="h-4 w-4"></i>
79
+ Export
80
+ </a>
81
+ </div>
82
+ </nav>
83
+
84
+ <section class="grid grid-cols-1 lg:grid-cols-[1fr,360px] gap-6">
85
+ <!-- Export options -->
86
+ <div class="rounded-lg border border-gray-200 bg-white p-4">
87
+ <h2 class="text-lg font-semibold text-gray-900 mb-2">Export Options</h2>
88
+ <p class="text-sm text-gray-600 mb-4">
89
+ PDF export comes next. For now, you can export a report “package” as JSON (pages + layout settings + payload).
90
+ </p>
91
+
92
+ <div class="space-y-4">
93
+ <div class="rounded-lg border border-gray-200 bg-gray-50 p-4">
94
+ <div class="flex items-start justify-between gap-3">
95
+ <div>
96
+ <div class="text-sm font-semibold text-gray-900">Report package (.json)</div>
97
+ <div class="text-xs text-gray-500">Includes edited pages, layout settings and upload metadata</div>
98
+ </div>
99
+ <span class="text-xs font-semibold text-emerald-700 bg-emerald-50 border border-emerald-200 rounded-md px-2 py-1">
100
+ Available
101
+ </span>
102
+ </div>
103
+
104
+ <div class="mt-3 grid grid-cols-1 sm:grid-cols-2 gap-3">
105
+ <label class="inline-flex items-center gap-2 text-sm text-gray-700">
106
+ <input id="incPages" type="checkbox" class="rounded border-gray-300" checked />
107
+ Include pages
108
+ </label>
109
+ <label class="inline-flex items-center gap-2 text-sm text-gray-700">
110
+ <input id="incLayout" type="checkbox" class="rounded border-gray-300" checked />
111
+ Include layout settings
112
+ </label>
113
+ <label class="inline-flex items-center gap-2 text-sm text-gray-700">
114
+ <input id="incPayload" type="checkbox" class="rounded border-gray-300" checked />
115
+ Include upload payload
116
+ </label>
117
+ <label class="inline-flex items-center gap-2 text-sm text-gray-700">
118
+ <input id="incTimestamp" type="checkbox" class="rounded border-gray-300" checked />
119
+ Include timestamp
120
+ </label>
121
+ </div>
122
+
123
+ <button id="downloadJson" type="button"
124
+ class="mt-4 inline-flex items-center justify-center gap-2 rounded-lg bg-emerald-600 px-4 py-2.5 text-white font-semibold hover:bg-emerald-700 transition">
125
+ <i data-feather="download" class="h-4 w-4"></i>
126
+ Download JSON package
127
+ </button>
128
+ </div>
129
+
130
+ <div class="rounded-lg border border-gray-200 bg-gray-50 p-4">
131
+ <div class="flex items-start justify-between gap-3">
132
+ <div>
133
+ <div class="text-sm font-semibold text-gray-900">PDF export</div>
134
+ <div class="text-xs text-gray-500">Will export as print-ready A4 PDF</div>
135
+ </div>
136
+ <span class="text-xs font-semibold text-gray-600 bg-white border border-gray-200 rounded-md px-2 py-1">
137
+ Coming soon
138
+ </span>
139
+ </div>
140
+
141
+ <button type="button" disabled
142
+ class="mt-4 inline-flex items-center justify-center gap-2 rounded-lg bg-gray-200 px-4 py-2.5 text-gray-500 font-semibold cursor-not-allowed">
143
+ <i data-feather="file-text" class="h-4 w-4"></i>
144
+ Export PDF (disabled)
145
+ </button>
146
+ </div>
147
+ </div>
148
+ </div>
149
+
150
+ <!-- Summary -->
151
+ <aside class="rounded-lg border border-gray-200 bg-white p-4">
152
+ <h2 class="text-lg font-semibold text-gray-900 mb-2">Export Summary</h2>
153
+ <p class="text-sm text-gray-600 mb-4">This is what will be included based on your current session.</p>
154
+
155
+ <div class="space-y-3">
156
+ <div class="rounded-lg border border-gray-200 bg-gray-50 p-3">
157
+ <div class="text-xs font-semibold text-gray-600">Pages</div>
158
+ <div id="sumPages" class="text-sm font-semibold text-gray-900">—</div>
159
+ </div>
160
+
161
+ <div class="rounded-lg border border-gray-200 bg-gray-50 p-3">
162
+ <div class="text-xs font-semibold text-gray-600">Selected example photos</div>
163
+ <div id="sumPhotos" class="text-sm font-semibold text-gray-900">—</div>
164
+ </div>
165
+
166
+ <div class="rounded-lg border border-gray-200 bg-gray-50 p-3">
167
+ <div class="text-xs font-semibold text-gray-600">Documents</div>
168
+ <div id="sumDocs" class="text-sm font-semibold text-gray-900">—</div>
169
+ </div>
170
+
171
+ <div class="rounded-lg border border-gray-200 bg-gray-50 p-3">
172
+ <div class="text-xs font-semibold text-gray-600">Data files</div>
173
+ <div id="sumData" class="text-sm font-semibold text-gray-900">—</div>
174
+ </div>
175
+
176
+ <div class="text-xs text-gray-500">
177
+ Uses storage keys:
178
+ <div class="mt-1 font-mono text-[11px] text-gray-700">
179
+ repex_report_pages_v1<br>
180
+ repex_layout_settings_v1<br>
181
+ repex_report_payload
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </aside>
186
+ </section>
187
+
188
+ <footer class="mt-12 text-center text-xs text-gray-500 no-print">
189
+ <p>Prosento - © 2026 All Rights Reserved</p>
190
+ <p class="mt-1">Export: JSON package now; PDF export will be added next.</p>
191
+ </footer>
192
+ </main>
193
+
194
+ <script>
195
+ document.addEventListener('DOMContentLoaded', () => {
196
+ if (window.feather && typeof window.feather.replace === 'function') feather.replace();
197
+
198
+ const PAGES_KEY = 'repex_report_pages_v1';
199
+ const LAYOUT_KEY = 'repex_layout_settings_v1';
200
+ const PAYLOAD_KEY = 'repex_report_payload';
201
+
202
+ const sumPages = document.getElementById('sumPages');
203
+ const sumPhotos = document.getElementById('sumPhotos');
204
+ const sumDocs = document.getElementById('sumDocs');
205
+ const sumData = document.getElementById('sumData');
206
+
207
+ const incPages = document.getElementById('incPages');
208
+ const incLayout = document.getElementById('incLayout');
209
+ const incPayload = document.getElementById('incPayload');
210
+ const incTimestamp = document.getElementById('incTimestamp');
211
+ const downloadJson = document.getElementById('downloadJson');
212
+
213
+ function loadJson(key) {
214
+ try {
215
+ const raw = localStorage.getItem(key);
216
+ return raw ? JSON.parse(raw) : null;
217
+ } catch {
218
+ return null;
219
+ }
220
+ }
221
+
222
+ const pagesObj = loadJson(PAGES_KEY);
223
+ const pages = pagesObj?.pages ?? [];
224
+ const layout = loadJson(LAYOUT_KEY);
225
+ const payload = loadJson(PAYLOAD_KEY);
226
+
227
+ const selectedPhotos = payload?.selectedPhotoIndices?.length ?? 0;
228
+ const docs = payload?.uploads?.documents?.length ?? 0;
229
+ const dataFiles = payload?.uploads?.dataFiles?.length ?? 0;
230
+
231
+ // Count total items
232
+ const totalItems = pages.reduce((acc, p) => acc + ((p?.items?.length) || 0), 0);
233
+
234
+ sumPages.textContent = pages.length ? `${pages.length} pages • ${totalItems} total items` : 'No saved pages yet';
235
+ sumPhotos.textContent = `${selectedPhotos}`;
236
+ sumDocs.textContent = `${docs}`;
237
+ sumData.textContent = `${dataFiles}`;
238
+
239
+ function downloadBlob(filename, text) {
240
+ const blob = new Blob([text], { type: 'application/json' });
241
+ const url = URL.createObjectURL(blob);
242
+ const a = document.createElement('a');
243
+ a.href = url;
244
+ a.download = filename;
245
+ document.body.appendChild(a);
246
+ a.click();
247
+ a.remove();
248
+ URL.revokeObjectURL(url);
249
+ }
250
+
251
+ downloadJson.addEventListener('click', () => {
252
+ const pack = {};
253
+ if (incPages.checked) pack.pages = pagesObj ?? null;
254
+ if (incLayout.checked) pack.layout = layout ?? null;
255
+ if (incPayload.checked) pack.payload = payload ?? null;
256
+ if (incTimestamp.checked) pack.exportedAt = new Date().toISOString();
257
+
258
+ const filename = `repex_report_package_${new Date().toISOString().replace(/[:.]/g,'-')}.json`;
259
+ downloadBlob(filename, JSON.stringify(pack, null, 2));
260
+ });
261
+ });
262
+ </script>
263
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
264
+ </body>
265
  </html>