mirror of
https://github.com/rickbarrette/redmine_qbo.git
synced 2026-02-13 09:13:58 -05:00
inital start of using javascript to update the appointment link with selected document links
This commit is contained in:
@@ -188,6 +188,21 @@ class CustomersController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_apointment
|
||||||
|
estimate = params[:estimate_id]
|
||||||
|
invoice = params[:invoice_id]
|
||||||
|
output = ""
|
||||||
|
logger.debug "Calling :add_apointment hook"
|
||||||
|
results = Redmine::Hook.call_hook :add_apointment, { customer: customer }
|
||||||
|
unless results.nil?
|
||||||
|
results.each do |r|
|
||||||
|
output.concat "%0A" if output.length > 0
|
||||||
|
output.concat r unless r.nil?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
redirect_to "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}%0A#{output}&dates=#{Time.now.strftime("%Y%m%d")}T090000/#{Time.now.strftime("%Y%m%d")}T170000", target: :_blank
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
# redmine permission - add customers
|
# redmine permission - add customers
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<%= 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 %>
|
<%= 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 %>
|
||||||
|
|
||||||
|
<button onclick="updateLink()">Change Link</button>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,30 @@
|
|||||||
$(function() {
|
function updateLink() {
|
||||||
$("input#issue_customer_id").on("change", function() {
|
|
||||||
|
const selectedIds = getSelectedInvoiceIds();
|
||||||
$.ajax({
|
|
||||||
url: "/filter_estimates_by_customer",
|
|
||||||
type: "GET",
|
const extra = `%0A${selectedIds}`;
|
||||||
data: { selected_customer: $("input#issue_customer_id").val() }
|
|
||||||
});
|
const linkElement = document.getElementById("appointment_link");
|
||||||
});
|
const absoluteUrl = linkElement.href;
|
||||||
|
let result = absoluteUrl.replace(/&dates/g, `${extra}&dates`);
|
||||||
});
|
|
||||||
|
linkElement.href = result;
|
||||||
|
linkElement.textContent = "New Appointment Link";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSelectedInvoiceIds() {
|
||||||
|
// Select all checkboxes with the class 'invoice-checkbox'
|
||||||
|
const checkboxes = document.querySelectorAll('.invoice-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)
|
||||||
|
|
||||||
|
// Display the result (for demonstration)
|
||||||
|
console.log(JSON.stringify(selectedIds));
|
||||||
|
|
||||||
|
// You can return the array or use it as needed
|
||||||
|
return selectedIds;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user