Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

87 рядки
3.8KB

  1. <div class="card shadow-sm mb-3">
  2. <div class="card-body">
  3. <h1 class="h3 mb-1">Match columns</h1>
  4. <p class="text-muted">
  5. <i class="bi bi-file-earmark-spreadsheet"></i> <%= H(originalName) %> &middot;
  6. Choose what each column contains. Columns set to <em>Ignore</em> are not imported. Sample values come from the first rows of the file.
  7. </p>
  8. <form method="post" action="/import/run" id="mapForm">
  9. <input type="hidden" name="csrf" value="<%= H(csrf) %>" />
  10. <input type="hidden" name="token" value="<%= H(token) %>" />
  11. <input type="hidden" name="original_name" value="<%= H(originalName) %>" />
  12. <input type="hidden" name="ncols" value="<%= UBound(headers) + 1 %>" />
  13. <div class="table-responsive">
  14. <table class="table table-sm align-middle">
  15. <thead>
  16. <tr><th>Column in file</th><th>Import as</th><th>Sample values</th></tr>
  17. </thead>
  18. <tbody>
  19. <%
  20. Dim ci, ri, guess, fld, sample, usedGuess
  21. Set usedGuess = CreateObject("Scripting.Dictionary")
  22. For ci = 0 To UBound(headers)
  23. guess = ImportFile_GuessField(headers(ci))
  24. ' Only the first column guessed for a field is pre-selected.
  25. If Len(guess) > 0 Then
  26. If usedGuess.Exists(guess) Then guess = "" Else usedGuess.Add guess, 1
  27. End If
  28. %>
  29. <tr>
  30. <td class="fw-semibold"><%= H(headers(ci)) %></td>
  31. <td>
  32. <select name="map_<%= ci %>" class="form-select form-select-sm">
  33. <option value="">Ignore</option>
  34. <% For Each fld In fields %>
  35. <option value="<%= fld(0) %>"<% If fld(0) = guess Then Response.Write " selected" %>><%= H(fld(1)) %></option>
  36. <% Next %>
  37. </select>
  38. </td>
  39. <td class="text-muted small">
  40. <%
  41. sample = ""
  42. For ri = 0 To rows.Count - 1
  43. If Len(ImportFile_Cell(rows(ri), ci)) > 0 Then
  44. If Len(sample) > 0 Then sample = sample & " &middot; "
  45. sample = sample & H(Left(ImportFile_Cell(rows(ri), ci), 40))
  46. End If
  47. Next
  48. Response.Write sample
  49. %>
  50. </td>
  51. </tr>
  52. <% Next %>
  53. </tbody>
  54. </table>
  55. </div>
  56. <div class="row g-3 mb-3">
  57. <div class="col-md-6">
  58. <label for="default_industry" class="form-label">Default industry <span class="text-muted">(used when a row has none)</span></label>
  59. <input type="text" class="form-control" id="default_industry" name="default_industry" maxlength="100" />
  60. </div>
  61. <div class="col-md-6 d-flex align-items-end">
  62. <div class="form-check">
  63. <input class="form-check-input" type="checkbox" id="mark_customers" name="mark_customers" value="1" />
  64. <label class="form-check-label" for="mark_customers">These are previous customers</label>
  65. </div>
  66. </div>
  67. </div>
  68. <button type="submit" class="btn btn-primary" id="runBtn"><i class="bi bi-check2-circle"></i> Import</button>
  69. <a href="/import" class="btn btn-link">Cancel</a>
  70. <span class="text-muted small ms-2 d-none" id="working">Importing &mdash; large files can take a minute&hellip;</span>
  71. </form>
  72. </div>
  73. </div>
  74. <script>
  75. document.getElementById('mapForm').addEventListener('submit', function (e) {
  76. var hasName = Array.prototype.some.call(this.querySelectorAll('select'), function (s) { return s.value === 'name'; });
  77. if (!hasName) { e.preventDefault(); alert('Map one column to "Business name".'); return; }
  78. document.getElementById('runBtn').disabled = true;
  79. document.getElementById('working').classList.remove('d-none');
  80. });
  81. </script>

Powered by TurnKey Linux.