diff --git a/app/views/customers/_actions.html.erb b/app/views/customers/_actions.html.erb
index c06aef9..fd34e5d 100644
--- a/app/views/customers/_actions.html.erb
+++ b/app/views/customers/_actions.html.erb
@@ -1,4 +1,4 @@
-<%= link_to t(:label_appointment), "https://calendar.google.com/calendar/render?action=TEMPLATE&text=#{@customer.name}+-&details=#{ link_to t(:customer_details), "https://#{Setting.host_name}#{customer_path @customer.id}"}%0A#{@customer.primary_phone}&dates=#{Time.now.strftime("%Y%m%d")}T090000/#{Time.now.strftime("%Y%m%d")}T170000", target: :_blank, id: :appointment_link %>
+<%= link_to t(:label_appointment), "https://calendar.google.com/calendar/render?action=TEMPLATE&text=#{@customer.name}+-&details=#{ link_to t(:customer_details), "https://#{Setting.host_name}#{customer_path @customer.id}"}%0A#{@customer.primary_phone}%3Cbr/%3E+&dates=#{Time.now.strftime("%Y%m%d")}T090000/#{Time.now.strftime("%Y%m%d")}T170000", target: :_blank, id: :appointment_link %>
diff --git a/app/views/estimates/_list.html.erb b/app/views/estimates/_list.html.erb
index ca03da6..61065f6 100644
--- a/app/views/estimates/_list.html.erb
+++ b/app/views/estimates/_list.html.erb
@@ -2,6 +2,7 @@
<% estimates.sort.reverse.each do |estimate| %>
+ <%= check_box_tag "estimate_ids[]", estimate.id, false, onchange: "updateLink()", class: "estimate-checkbox" %>
<%= link_to "##{estimate.doc_number}", estimate_path(estimate), target: :_blank %> <%= estimate.txn_date %>
<% end %>
diff --git a/app/views/invoices/_list.html.erb b/app/views/invoices/_list.html.erb
index b189c5e..66c9117 100644
--- a/app/views/invoices/_list.html.erb
+++ b/app/views/invoices/_list.html.erb
@@ -12,7 +12,7 @@
<% invoices.sort.reverse.each do |invoice| %>
- <%= check_box_tag "invoice_ids[]", invoice.id, false, class: "invoice-checkbox" if invoices.count > 1 %>
+ <%= check_box_tag "invoice_ids[]", invoice.id, false, onchange: "updateLink()", class: "invoice-checkbox" if invoices.count > 1 %>
<%= link_to "##{invoice.doc_number}", invoice_path(invoice), target: :_blank %> <%= invoice.txn_date %>
<% end %>
diff --git a/assets/javascripts/application.js b/assets/javascripts/application.js
index 11ce176..5566227 100644
--- a/assets/javascripts/application.js
+++ b/assets/javascripts/application.js
@@ -1,38 +1,32 @@
function updateLink() {
-
- const selectedIds = getSelectedInvoiceIds();
-
-
- const extra = `%0A${selectedIds}`;
-
const linkElement = document.getElementById("appointment_link");
- const absoluteUrl = linkElement.href;
- let result = absoluteUrl.replace(/&dates/g, `${extra}&dates`);
-
- linkElement.href = result;
+ const regex = /((?:
|%3Cbr\/?%3E))([\s\S]*?)(&dates)/gi;
+ linkElement.href = linkElement.href.replace(regex, `$1${getSelectedDocs()}$3`);
linkElement.textContent = "New Appointment Link";
}
-function getSelectedInvoiceIds() {
- // Select all checkboxes with the class 'invoice-checkbox'
- const checkboxes = document.querySelectorAll('.invoice-checkbox');
+function getSelectedDocs() {
+ const invoices = document.querySelectorAll('.invoice-checkbox');
+ const estimates = document.querySelectorAll('.estimate-checkbox');
- // Use Array.from to convert NodeList to an array and then filter and map
- const selectedIds = Array.from(checkboxes)
- .filter(checkbox => checkbox.checked) // Keep only checked checkboxes
- .map(checkbox => checkbox.value); // Extract the value (invoice ID)
+ const invoiceIds = Array.from(invoices)
+ .filter(checkbox => checkbox.checked)
+ .map(checkbox => checkbox.value);
- // Display the result (for demonstration)
- console.log(JSON.stringify(selectedIds));
+ const estimateIds = Array.from(estimates)
+ .filter(checkbox => checkbox.checked)
+ .map(checkbox => checkbox.value);
- let invoice_link = '';
- let link = '';
- for (const value of selectedIds) {
- link = `${value}%0A`
- console.log(link);
- invoice_link += link;
+ let output = '';
+
+ for (const value of invoiceIds) {
+ output += `%0AInvoice:%20${value}%0A`;
+ }
+
+ for (const value of estimateIds) {
+ output += `%0AEstimate:%20${value}%0A`;
}
// You can return the array or use it as needed
- return invoice_link;
+ return output;
}