Uvix commited on
Commit
d39bca9
·
verified ·
1 Parent(s): 14d5f84

כרדע אני רוצה שאחרי שאני מעלה את הקבוץ הראשון בשדה הכחול

Browse files

האפליקציה תשלום אילו אריכי חשבוניות הזנתי בטופס
ואת "סוג השירות
בגינו מבוקש החזר"
מה שרשום מתחת
ייעוץ פסיכיאטרי
ובצד אחד תרשום לי את כל מה שהאפליקציה מצאה כולל הצגת preview של מסמך ה pdf
ובצד ליד בעמודה נופסת את השדות החדשים שארצה להזין

Files changed (3) hide show
  1. index.html +18 -9
  2. script.js +60 -4
  3. style.css +23 -2
index.html CHANGED
@@ -42,23 +42,32 @@
42
  </div>
43
  </div>
44
  </div>
45
-
46
  <div class="col-md-6">
47
  <div class="card mb-4">
48
  <div class="card-header bg-info text-white">
49
- <h5>CSV Preview</h5>
50
  </div>
51
  <div class="card-body">
52
- <div class="table-responsive">
53
- <table class="table table-striped" id="csvPreview">
54
- <thead></thead>
55
- <tbody></tbody>
56
- </table>
 
 
 
 
 
 
 
 
 
 
 
57
  </div>
58
  </div>
59
  </div>
60
-
61
- <div class="card">
62
  <div class="card-header bg-warning text-dark">
63
  <h5>Step 3: Generate PDFs</h5>
64
  </div>
 
42
  </div>
43
  </div>
44
  </div>
 
45
  <div class="col-md-6">
46
  <div class="card mb-4">
47
  <div class="card-header bg-info text-white">
48
+ <h5>PDF Form Fields</h5>
49
  </div>
50
  <div class="card-body">
51
+ <div id="pdfFieldsPreview" class="mb-4">
52
+ <h6>Existing Fields in PDF:</h6>
53
+ <ul id="existingFieldsList" class="list-group"></ul>
54
+ </div>
55
+ <div id="pdfPreview" class="mb-4">
56
+ <h6>PDF Preview:</h6>
57
+ <iframe id="pdfViewer" style="width:100%; height:300px; border:1px solid #ddd;"></iframe>
58
+ </div>
59
+ <div id="newFieldsSection">
60
+ <h6>Add New Fields:</h6>
61
+ <div class="mb-3">
62
+ <input type="text" id="newFieldName" class="form-control mb-2" placeholder="Field Name">
63
+ <input type="text" id="newFieldValue" class="form-control mb-2" placeholder="Field Value">
64
+ <button id="addFieldBtn" class="btn btn-sm btn-primary">Add Field</button>
65
+ </div>
66
+ <div id="newFieldsList" class="list-group"></div>
67
  </div>
68
  </div>
69
  </div>
70
+ <div class="card">
 
71
  <div class="card-header bg-warning text-dark">
72
  <h5>Step 3: Generate PDFs</h5>
73
  </div>
script.js CHANGED
@@ -11,8 +11,7 @@ document.addEventListener('DOMContentLoaded', function() {
11
 
12
  let csvData = [];
13
  let headers = [];
14
-
15
- // Upload template PDF
16
  uploadTemplateBtn.addEventListener('click', async () => {
17
  if (!templateUpload.files.length) {
18
  alert('Please select a PDF file first');
@@ -28,14 +27,71 @@ document.addEventListener('DOMContentLoaded', function() {
28
  body: formData
29
  });
30
  const result = await response.json();
31
- alert(result.message || 'Template uploaded successfully!');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  } catch (error) {
33
  console.error('Error uploading template:', error);
34
  alert('Failed to upload template');
35
  }
36
  });
37
 
38
- // Upload and preview CSV
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  uploadCsvBtn.addEventListener('click', async () => {
40
  if (!csvUpload.files.length) {
41
  alert('Please select a CSV file first');
 
11
 
12
  let csvData = [];
13
  let headers = [];
14
+ // Upload template PDF and extract fields
 
15
  uploadTemplateBtn.addEventListener('click', async () => {
16
  if (!templateUpload.files.length) {
17
  alert('Please select a PDF file first');
 
27
  body: formData
28
  });
29
  const result = await response.json();
30
+
31
+ // Display PDF preview
32
+ const pdfViewer = document.getElementById('pdfViewer');
33
+ pdfViewer.src = URL.createObjectURL(templateUpload.files[0]);
34
+
35
+ // Display form fields (mock data - in real app this would come from server)
36
+ const fieldsList = document.getElementById('existingFieldsList');
37
+ fieldsList.innerHTML = '';
38
+
39
+ // Mock fields - replace with actual fields from your PDF
40
+ const mockFields = [
41
+ 'מספר ח חשבונית',
42
+ 'תאריך ח חשבונית',
43
+ 'סוג השירות',
44
+ 'ששם המ המטופל',
45
+ 'סכום לה להחזר'
46
+ ];
47
+
48
+ mockFields.forEach(field => {
49
+ const li = document.createElement('li');
50
+ li.className = 'list-group-item';
51
+ li.textContent = field;
52
+ fieldsList.appendChild(li);
53
+ });
54
+
55
+ // Show the fields section
56
+ document.getElementById('pdfFieldsPreview').classList.remove('d-none');
57
+ document.getElementById('pdfPreview').classList.remove('d-none');
58
+
59
  } catch (error) {
60
  console.error('Error uploading template:', error);
61
  alert('Failed to upload template');
62
  }
63
  });
64
 
65
+ // Add new field functionality
66
+ document.getElementById('addFieldBtn').addEventListener('click', () => {
67
+ const nameInput = document.getElementById('newFieldName');
68
+ const valueInput = document.getElementById('newFieldValue');
69
+ const fieldsList = document.getElementById('newFieldsList');
70
+
71
+ if (!nameInput.value.trim()) {
72
+ alert('Please enter a field name');
73
+ return;
74
+ }
75
+
76
+ const fieldItem = document.createElement('div');
77
+ fieldItem.className = 'list-group-item d-flex justify-content-between align-items-center';
78
+ fieldItem.innerHTML = `
79
+ <span><strong>${nameInput.value}:</strong> ${valueInput.value}</span>
80
+ <button class="btn btn-sm btn-danger remove-field">×</button>
81
+ `;
82
+
83
+ fieldsList.appendChild(fieldItem);
84
+
85
+ // Clear inputs
86
+ nameInput.value = '';
87
+ valueInput.value = '';
88
+
89
+ // Add remove functionality
90
+ fieldItem.querySelector('.remove-field').addEventListener('click', () => {
91
+ fieldItem.remove();
92
+ });
93
+ });
94
+ // Upload and preview CSV
95
  uploadCsvBtn.addEventListener('click', async () => {
96
  if (!csvUpload.files.length) {
97
  alert('Please select a CSV file first');
style.css CHANGED
@@ -16,12 +16,33 @@ body {
16
  .card-header {
17
  font-weight: 600;
18
  }
19
-
20
- #csvPreview {
 
21
  max-height: 300px;
22
  overflow-y: auto;
23
  }
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  .btn {
26
  font-weight: 500;
27
  padding: 0.5rem 1.5rem;
 
16
  .card-header {
17
  font-weight: 600;
18
  }
19
+ #csvPreview,
20
+ #existingFieldsList,
21
+ #newFieldsList {
22
  max-height: 300px;
23
  overflow-y: auto;
24
  }
25
 
26
+ .list-group-item {
27
+ padding: 0.75rem 1.25rem;
28
+ }
29
+
30
+ .remove-field {
31
+ padding: 0 0.5rem;
32
+ line-height: 1;
33
+ }
34
+
35
+ #pdfPreview {
36
+ background: #f8f9fa;
37
+ border-radius: 0.25rem;
38
+ padding: 1rem;
39
+ }
40
+
41
+ #newFieldsSection {
42
+ margin-top: 1.5rem;
43
+ padding-top: 1.5rem;
44
+ border-top: 1px solid #eee;
45
+ }
46
  .btn {
47
  font-weight: 500;
48
  padding: 0.5rem 1.5rem;