update link on change

This commit is contained in:
2026-02-08 19:45:58 -05:00
parent 8a4d64ffc0
commit f4a979672f
4 changed files with 23 additions and 28 deletions

View File

@@ -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 %>
<button onclick="updateLink()">Change Link</button> <button onclick="updateLink()">Change Link</button>
<br/> <br/>

View File

@@ -2,6 +2,7 @@
<% estimates.sort.reverse.each do |estimate| %> <% estimates.sort.reverse.each do |estimate| %>
<div class="row"> <div class="row">
<%= check_box_tag "estimate_ids[]", estimate.id, false, onchange: "updateLink()", class: "estimate-checkbox" %>
<b><%= link_to "##{estimate.doc_number}", estimate_path(estimate), target: :_blank %></b> <%= estimate.txn_date %> <b><%= link_to "##{estimate.doc_number}", estimate_path(estimate), target: :_blank %></b> <%= estimate.txn_date %>
</div> </div>
<% end %> <% end %>

View File

@@ -12,7 +12,7 @@
<% invoices.sort.reverse.each do |invoice| %> <% invoices.sort.reverse.each do |invoice| %>
<div class="row"> <div class="row">
<%= 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 %>
<b><%= link_to "##{invoice.doc_number}", invoice_path(invoice), target: :_blank %></b> <%= invoice.txn_date %> <b><%= link_to "##{invoice.doc_number}", invoice_path(invoice), target: :_blank %></b> <%= invoice.txn_date %>
</div> </div>
<% end %> <% end %>

View File

@@ -1,38 +1,32 @@
function updateLink() { function updateLink() {
const selectedIds = getSelectedInvoiceIds();
const extra = `%0A${selectedIds}`;
const linkElement = document.getElementById("appointment_link"); const linkElement = document.getElementById("appointment_link");
const absoluteUrl = linkElement.href; const regex = /((?:<br\/>|%3Cbr\/?%3E))([\s\S]*?)(&dates)/gi;
let result = absoluteUrl.replace(/&dates/g, `${extra}&dates`); linkElement.href = linkElement.href.replace(regex, `$1${getSelectedDocs()}$3`);
linkElement.href = result;
linkElement.textContent = "New Appointment Link"; linkElement.textContent = "New Appointment Link";
} }
function getSelectedInvoiceIds() { function getSelectedDocs() {
// Select all checkboxes with the class 'invoice-checkbox' const invoices = document.querySelectorAll('.invoice-checkbox');
const checkboxes = 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 invoiceIds = Array.from(invoices)
const selectedIds = Array.from(checkboxes) .filter(checkbox => checkbox.checked)
.filter(checkbox => checkbox.checked) // Keep only checked checkboxes .map(checkbox => checkbox.value);
.map(checkbox => checkbox.value); // Extract the value (invoice ID)
// Display the result (for demonstration) const estimateIds = Array.from(estimates)
console.log(JSON.stringify(selectedIds)); .filter(checkbox => checkbox.checked)
.map(checkbox => checkbox.value);
let invoice_link = ''; let output = '';
let link = '';
for (const value of selectedIds) { for (const value of invoiceIds) {
link = `<a href="${window.location.origin}/invoices/${value}">${value}</a>%0A` output += `%0A<a href="${window.location.origin}/invoices/${value}">Invoice:%20${value}</a>%0A`;
console.log(link); }
invoice_link += link;
for (const value of estimateIds) {
output += `%0A<a href="${window.location.origin}/estimates/${value}">Estimate:%20${value}</a>%0A`;
} }
// You can return the array or use it as needed // You can return the array or use it as needed
return invoice_link; return output;
} }