kaui 4.0.3 → 4.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/kaui/kaui_override.js +1 -1
- data/app/controllers/kaui/account_timelines_controller.rb +3 -3
- data/app/controllers/kaui/home_controller.rb +1 -1
- data/app/controllers/kaui/invoices_controller.rb +9 -0
- data/app/controllers/kaui/payments_controller.rb +1 -1
- data/app/helpers/kaui/plugin_helper.rb +3 -1
- data/app/views/kaui/account_timelines/_multi_functions_bar.html.erb +2 -2
- data/app/views/kaui/accounts/_billing_details.html.erb +4 -6
- data/app/views/kaui/admin_allowed_users/index.html.erb +8 -17
- data/app/views/kaui/admin_tenants/_clock.html.erb +20 -13
- data/app/views/kaui/admin_tenants/new_catalog.html.erb +66 -0
- data/app/views/kaui/admin_tenants/show.html.erb +3 -7
- data/app/views/kaui/audit_logs/_multi_functions_bar.html.erb +2 -2
- data/app/views/kaui/components/dashboard/_card.html.erb +2 -1
- data/app/views/kaui/invoices/_multi_functions_bar.html.erb +2 -2
- data/app/views/kaui/payments/_multi_functions_bar.html.erb +2 -2
- data/config/locales/en.yml +3 -0
- data/lib/kaui/version.rb +1 -1
- data/lib/kaui.rb +1 -1
- metadata +2 -4
- data/app/views/kaui/admin/index.html.erb +0 -64
- data/app/views/kaui/admin/index.js.erb +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 68c8619a8002b5eccb52c3e514b3eaa09c6360c76fb7655305ef38d8a8bd9389
|
|
4
|
+
data.tar.gz: 2558a2c5362f1547e269bcae07aff1b533854c8dbcead9d81e278f379a62302e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ab1dec602fc6943ce1994f7c080ab659e3b40568855ce480237760da4c983780a9e17b30ab2843925adcb29e85119606b59b6cd0bbb26ffdf708ba1f4c99abdd
|
|
7
|
+
data.tar.gz: fbbf245fd6e028b9d898b4bfe662202222fbd9bc2f0818fc8b582dfb8401ad343a12c8aa86a46044b846866c8f3b76071d7282b2a52cfc77ebe69f4332df4ebb
|
|
@@ -556,7 +556,7 @@ function showCustomTooltip(element, objectId) {
|
|
|
556
556
|
// Set 5-second auto-hide timer
|
|
557
557
|
window.tooltipAutoHideTimeout = setTimeout(function () {
|
|
558
558
|
hideCustomTooltip();
|
|
559
|
-
},
|
|
559
|
+
}, 3000); // 3 seconds
|
|
560
560
|
}
|
|
561
561
|
|
|
562
562
|
function showObjectIdTooltip(element, objectId) {
|
|
@@ -72,7 +72,7 @@ module Kaui
|
|
|
72
72
|
@selected_bundle = params.key?(:external_key) ? @bundle_names[params[:external_key]] : nil
|
|
73
73
|
|
|
74
74
|
csv_string = CSV.generate(headers: true) do |csv|
|
|
75
|
-
csv << ['Effective Date', 'Bundles', '
|
|
75
|
+
csv << ['Effective Date', 'Bundles', 'Event Type', 'Details', 'Reason Code/ Comments']
|
|
76
76
|
if %w[INVOICE ALL].include?(event_type)
|
|
77
77
|
@invoices.each do |invoice_stub|
|
|
78
78
|
invoice = invoice_stub.invoice_id.present? && @invoices_by_id.key?(invoice_stub.invoice_id) ? @invoices_by_id[invoice_stub.invoice_id] : invoice_stub
|
|
@@ -97,7 +97,7 @@ module Kaui
|
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
payment.transactions.each do |transaction|
|
|
100
|
-
effective_date = transaction.effective_date.present? ? transaction.effective_date : '[unknown]'
|
|
100
|
+
effective_date = transaction.effective_date.present? ? Date.parse(transaction.effective_date).to_s : '[unknown]'
|
|
101
101
|
bundle_keys = @bundle_keys_by_invoice_id[payment.target_invoice_id].present? ? @bundle_keys_by_invoice_id[payment.target_invoice_id].map { |bundle_key| @bundle_names[bundle_key] }.join(', ') : ''
|
|
102
102
|
transaction_type = transaction.transaction_type
|
|
103
103
|
details = []
|
|
@@ -120,7 +120,7 @@ module Kaui
|
|
|
120
120
|
# Skip SERVICE_STATE_CHANGE events
|
|
121
121
|
next if event.event_type == 'SERVICE_STATE_CHANGE'
|
|
122
122
|
|
|
123
|
-
effective_date = event.effective_date.present? ? event.effective_date : '[unknown]'
|
|
123
|
+
effective_date = event.effective_date.present? ? Date.parse(event.effective_date).to_s : '[unknown]'
|
|
124
124
|
bundle_keys = @bundle_names[bundle.external_key]
|
|
125
125
|
event_type = event.event_type
|
|
126
126
|
phase = event.phase
|
|
@@ -14,7 +14,7 @@ module Kaui
|
|
|
14
14
|
@max_records = {}
|
|
15
15
|
%w[account payment invoice].each do |type|
|
|
16
16
|
model = "Kaui::#{type.capitalize}".constantize
|
|
17
|
-
@max_records[type.to_sym] = model.list_or_search(nil, 0, 0, options_for_klient).pagination_max_nb_records
|
|
17
|
+
@max_records[type.to_sym] = model.list_or_search(nil, 0, 0, options_for_klient).pagination_max_nb_records
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -36,6 +36,15 @@ module Kaui
|
|
|
36
36
|
Kaui::Invoice.list_or_search(query_string, 0, MAXIMUM_NUMBER_OF_RECORDS_DOWNLOAD, options_for_klient.merge(params: kb_params))
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
if start_date && end_date
|
|
40
|
+
invoices = invoices.select do |invoice|
|
|
41
|
+
start_date_parsed = Date.parse(start_date)
|
|
42
|
+
end_date_parsed = Date.parse(end_date)
|
|
43
|
+
invoice_date = Date.parse(invoice.invoice_date)
|
|
44
|
+
invoice_date.between?(start_date_parsed, end_date_parsed)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
39
48
|
csv_string = CSV.generate(headers: true) do |csv|
|
|
40
49
|
csv << columns
|
|
41
50
|
|
|
@@ -44,7 +44,7 @@ module Kaui
|
|
|
44
44
|
account = account_id.present? ? Kaui::Account.find_by_id_or_key(account_id, false, false, options_for_klient) : nil
|
|
45
45
|
|
|
46
46
|
payments = if account_id.present? && query_string.blank?
|
|
47
|
-
Kaui::
|
|
47
|
+
Kaui::Payment.list_or_search(account_id, 0, MAXIMUM_NUMBER_OF_RECORDS_DOWNLOAD, options_for_klient.merge(params: kb_params))
|
|
48
48
|
else
|
|
49
49
|
Kaui::Payment.list_or_search(query_string, 0, MAXIMUM_NUMBER_OF_RECORDS_DOWNLOAD, options_for_klient.merge(params: kb_params))
|
|
50
50
|
end
|
|
@@ -24,10 +24,12 @@ module Kaui
|
|
|
24
24
|
'/kenui'
|
|
25
25
|
when /payment-test/
|
|
26
26
|
'/payment_test'
|
|
27
|
+
when /aviate/
|
|
28
|
+
'/aviate'
|
|
27
29
|
else
|
|
28
30
|
"/#{plugin_key}"
|
|
29
31
|
end
|
|
30
|
-
plugin_path = nil unless CONFIGABLE_PLUGINS.include?(
|
|
32
|
+
plugin_path = nil unless CONFIGABLE_PLUGINS.map { |key| plugin_key.include?(key) }.any?
|
|
31
33
|
plugins << { name: plugin_name, path: plugin_path } if plugin_path
|
|
32
34
|
end
|
|
33
35
|
plugins
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<path d="M2.5 8.3335H17.5" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
44
44
|
</svg>
|
|
45
45
|
</label>
|
|
46
|
-
<input type="text" class="form-control center-input" id="startDate" placeholder="All
|
|
46
|
+
<input type="text" class="form-control center-input" id="startDate" placeholder="All Account Timelines" name="startDate">
|
|
47
47
|
<div id="dash" class="dash">–</div>
|
|
48
48
|
<input type="text" class="form-control right-input" id="endDate" placeholder="" name="endDate">
|
|
49
49
|
<div id="toggle-wrapper" class="position-absolute" style="width: 100%; height: 100%;" onclick="document.getElementById('single-toggle').click()"></div>
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
<div class="fake-select-dropdown">
|
|
68
68
|
<label class="fake-select-option">
|
|
69
69
|
<input type="radio" name="download_option" id="allData" />
|
|
70
|
-
<span>All
|
|
70
|
+
<span>All account data</span>
|
|
71
71
|
</label>
|
|
72
72
|
|
|
73
73
|
<label class="fake-select-option">
|
|
@@ -117,12 +117,10 @@
|
|
|
117
117
|
<% end %>
|
|
118
118
|
</div>
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
<
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
</div>
|
|
125
|
-
<% end %>
|
|
120
|
+
<div class="info-item">
|
|
121
|
+
<b>Next invoice date</b>
|
|
122
|
+
<p id='next-invoice-date'>N/A</p>
|
|
123
|
+
</div>
|
|
126
124
|
</div>
|
|
127
125
|
|
|
128
126
|
<!-- Right Column -->
|
|
@@ -60,23 +60,12 @@
|
|
|
60
60
|
<td><%= link_to u.kb_username, admin_allowed_user_path(u.id) %></td>
|
|
61
61
|
<td><%= u.description %></td>
|
|
62
62
|
<td class="text-end">
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
html_class: "kaui-button delete-button custom-hover",
|
|
70
|
-
html_options: {
|
|
71
|
-
data: {
|
|
72
|
-
confirm: "Are you sure?",
|
|
73
|
-
method: "delete",
|
|
74
|
-
turbo: false,
|
|
75
|
-
"url": kaui_engine.admin_allowed_user_path(u.id)
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
} %>
|
|
79
|
-
<%= link_to kaui_engine.edit_admin_allowed_user_path(u.id), :class => '' do %>
|
|
63
|
+
<%= form_tag kaui_engine.admin_allowed_user_path(u.id), method: :delete, class: 'd-inline', onsubmit: "return confirm('Are you sure?');" do %>
|
|
64
|
+
<%= button_tag type: 'submit', class: 'btn btn-outline-secondary d-inline-flex align-items-center gap-1 kaui-button delete-button custom-hover' do %>
|
|
65
|
+
Delete
|
|
66
|
+
<% end %>
|
|
67
|
+
<% end %>
|
|
68
|
+
<%= link_to kaui_engine.edit_admin_allowed_user_path(u.id), class: 'text-decoration-none' do %>
|
|
80
69
|
<%= render "kaui/components/button/button", {
|
|
81
70
|
label: "Edit",
|
|
82
71
|
variant: "outline-secondary d-inline-flex align-items-center gap-1",
|
|
@@ -154,6 +143,8 @@
|
|
|
154
143
|
$header.find('.sort-' + direction).addClass('active');
|
|
155
144
|
}
|
|
156
145
|
|
|
146
|
+
} catch (e) {
|
|
147
|
+
console.error('Error initializing DataTable:', e);
|
|
157
148
|
}
|
|
158
149
|
}, 100);
|
|
159
150
|
});
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
<%= form_tag admin_tenant_set_clock_path(@tenant.id), method: :put, class: 'form-horizontal' do %>
|
|
16
16
|
<div class="trigger-invoice-box form-group">
|
|
17
17
|
<b>Set new date</b>
|
|
18
|
+
<p id="clock_warning" class="text-danger mb-2" style="display: none;"><%= t('admin_tenants.clock_warning') %></p>
|
|
18
19
|
<div class="d-flex align-items-center">
|
|
19
20
|
<div class="custom-date-input-wrapper kaui-button custom-hover">
|
|
20
21
|
<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
@@ -25,9 +26,11 @@
|
|
|
25
26
|
</svg>
|
|
26
27
|
|
|
27
28
|
<input class="form-control" name="new_date" type="text"
|
|
29
|
+
id="clock_datepicker"
|
|
28
30
|
data-provide="datepicker"
|
|
29
31
|
data-date-format="yyyy-mm-dd"
|
|
30
|
-
data-date-today-highlight="true"
|
|
32
|
+
data-date-today-highlight="true"
|
|
33
|
+
data-date-autoclose="true"
|
|
31
34
|
value="<%= @clock&.[]('localDate') || '' %>">
|
|
32
35
|
</div>
|
|
33
36
|
|
|
@@ -56,17 +59,21 @@
|
|
|
56
59
|
|
|
57
60
|
<%= javascript_tag do %>
|
|
58
61
|
$(document).ready(function() {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
var clockElement = $('#kb_clock');
|
|
63
|
+
var initialTime = clockElement.text();
|
|
64
|
+
|
|
65
|
+
// Parse the initial time
|
|
66
|
+
var currentTime = new Date(initialTime);
|
|
67
|
+
|
|
68
|
+
// Update clock every second
|
|
69
|
+
setInterval(function() {
|
|
70
|
+
currentTime.setSeconds(currentTime.getSeconds() + 1);
|
|
71
|
+
clockElement.text(currentTime.toISOString());
|
|
72
|
+
}, 1000);
|
|
65
73
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
74
|
+
// Show warning when date is selected
|
|
75
|
+
$('#clock_datepicker').on('changeDate', function() {
|
|
76
|
+
$('#clock_warning').show();
|
|
77
|
+
});
|
|
78
|
+
});
|
|
69
79
|
<% end %>
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
@@ -246,6 +246,8 @@ function switch_basic_config() {
|
|
|
246
246
|
$(document).ready(function() {
|
|
247
247
|
switch_basic_config();
|
|
248
248
|
|
|
249
|
+
// jQuery UI autocomplete interferes with HTML5 validation
|
|
250
|
+
// So we keep the custom JS validation
|
|
249
251
|
$('#simple_plan_product_name').autocomplete({
|
|
250
252
|
source: function(query, process) {
|
|
251
253
|
process(known_products());
|
|
@@ -261,8 +263,72 @@ $(document).ready(function() {
|
|
|
261
263
|
$('#simple_plan_product_name').on('mouseleave', function() {
|
|
262
264
|
recompute_available_base_products_for_ao();
|
|
263
265
|
});
|
|
266
|
+
|
|
267
|
+
// Custom validation since HTML5 validation is not working
|
|
268
|
+
// (possibly due to jQuery autocomplete or other JavaScript interference)
|
|
269
|
+
$('#catalog_simple form').on('submit', function(e) {
|
|
270
|
+
var isValid = true;
|
|
271
|
+
var pattern = /^[a-zA-Z_][\w\.-]*$/;
|
|
272
|
+
|
|
273
|
+
// Validate Product Name
|
|
274
|
+
var productName = $('#simple_plan_product_name').val().trim();
|
|
275
|
+
var productNameField = $('#simple_plan_product_name');
|
|
276
|
+
|
|
277
|
+
if (productName === '') {
|
|
278
|
+
showError(productNameField, 'Product Name is required');
|
|
279
|
+
isValid = false;
|
|
280
|
+
} else if (!pattern.test(productName)) {
|
|
281
|
+
showError(productNameField, 'Product Name must start with a letter or underscore, and can only contain letters, digits, underscores, hyphens, and periods');
|
|
282
|
+
isValid = false;
|
|
283
|
+
} else {
|
|
284
|
+
clearError(productNameField);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Validate Plan Name
|
|
288
|
+
var planName = $('#simple_plan_plan_id').val().trim();
|
|
289
|
+
var planNameField = $('#simple_plan_plan_id');
|
|
290
|
+
|
|
291
|
+
if (planName === '') {
|
|
292
|
+
showError(planNameField, 'Plan Name is required');
|
|
293
|
+
isValid = false;
|
|
294
|
+
} else if (!pattern.test(planName)) {
|
|
295
|
+
showError(planNameField, 'Plan Name must start with a letter or underscore, and can only contain letters, digits, underscores, hyphens, and periods');
|
|
296
|
+
isValid = false;
|
|
297
|
+
} else {
|
|
298
|
+
clearError(planNameField);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (!isValid) {
|
|
302
|
+
e.preventDefault();
|
|
303
|
+
e.stopPropagation();
|
|
304
|
+
// Scroll to first error
|
|
305
|
+
$('.error-message:first').get(0)?.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
return true;
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
// Clear errors on input
|
|
313
|
+
$('#simple_plan_product_name, #simple_plan_plan_id').on('input', function() {
|
|
314
|
+
clearError($(this));
|
|
315
|
+
});
|
|
264
316
|
});
|
|
265
317
|
|
|
318
|
+
function showError(field, message) {
|
|
319
|
+
clearError(field);
|
|
320
|
+
field.addClass('error-field');
|
|
321
|
+
field.css('border-color', '#dc3545');
|
|
322
|
+
var errorDiv = $('<div class="error-message" style="color: #dc3545; font-size: 0.875rem; margin-top: 0.25rem;"></div>').text(message);
|
|
323
|
+
field.parent().append(errorDiv);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
function clearError(field) {
|
|
327
|
+
field.removeClass('error-field');
|
|
328
|
+
field.css('border-color', '');
|
|
329
|
+
field.parent().find('.error-message').remove();
|
|
330
|
+
}
|
|
331
|
+
|
|
266
332
|
document.querySelectorAll('.toggle-option').forEach(el => {
|
|
267
333
|
el.addEventListener('click', () => {
|
|
268
334
|
document.querySelectorAll('.toggle-option').forEach(opt => opt.classList.remove('active-btn'));
|
|
@@ -11,15 +11,11 @@
|
|
|
11
11
|
|
|
12
12
|
<div class="w-100">
|
|
13
13
|
<div class="row gap-4 m-0 gap-container pb-2">
|
|
14
|
-
|
|
15
|
-
=begin%>
|
|
16
|
-
<div class="p-4 card w-100 col">
|
|
14
|
+
<div class="p-4 card col">
|
|
17
15
|
<%= render :partial => 'clock' %>
|
|
18
|
-
</div>
|
|
19
|
-
<%
|
|
20
|
-
=end%>
|
|
16
|
+
</div>
|
|
21
17
|
|
|
22
|
-
<div class="p-4 card
|
|
18
|
+
<div class="p-4 card col">
|
|
23
19
|
<%= render :partial => 'useful_links' %>
|
|
24
20
|
</div>
|
|
25
21
|
</div>
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<path d="M2.5 8.3335H17.5" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
44
44
|
</svg>
|
|
45
45
|
</label>
|
|
46
|
-
<input type="text" class="form-control center-input" id="startDate" placeholder="All
|
|
46
|
+
<input type="text" class="form-control center-input" id="startDate" placeholder="All Logs" name="startDate">
|
|
47
47
|
<div id="dash" class="dash">–</div>
|
|
48
48
|
<input type="text" class="form-control right-input" id="endDate" placeholder="" name="endDate">
|
|
49
49
|
<div id="toggle-wrapper" class="position-absolute" style="width: 100%; height: 100%;" onclick="document.getElementById('single-toggle').click()"></div>
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
<div class="fake-select-dropdown">
|
|
68
68
|
<label class="fake-select-option">
|
|
69
69
|
<input type="radio" name="download_option" id="allData" />
|
|
70
|
-
<span>All
|
|
70
|
+
<span>All logs</span>
|
|
71
71
|
</label>
|
|
72
72
|
|
|
73
73
|
<label class="fake-select-option">
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<% count_text = count.nil? ? "20k+" : count.to_i %>
|
|
1
2
|
<div class="col-md-4">
|
|
2
3
|
<div class="dashboard-card border rounded-4 d-flex flex-column justify-content-between h-100">
|
|
3
4
|
<div class="d-flex px-4 py-3 align-items-center gap-3">
|
|
@@ -6,7 +7,7 @@
|
|
|
6
7
|
</div>
|
|
7
8
|
<div>
|
|
8
9
|
<h6 class="mb-0 fw-600 text-black-900"><%= title %></h6>
|
|
9
|
-
<p class="text-muted fw-normal text-tertiary small mb-0"><%=
|
|
10
|
+
<p class="text-muted fw-normal text-tertiary small mb-0"><%= count_text %></p>
|
|
10
11
|
</div>
|
|
11
12
|
</div>
|
|
12
13
|
<div class="w-full dashboard-card-divider"></div>
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
<path d="M2.5 8.3335H17.5" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
92
92
|
</svg>
|
|
93
93
|
</label>
|
|
94
|
-
<input type="text" class="form-control center-input" id="startDate" placeholder="All
|
|
94
|
+
<input type="text" class="form-control center-input" id="startDate" placeholder="All Invoices" name="startDate">
|
|
95
95
|
<div id="dash" class="dash">–</div>
|
|
96
96
|
<input type="text" class="form-control right-input" id="endDate" placeholder="" name="endDate">
|
|
97
97
|
<div id="toggle-wrapper" class="position-absolute" style="width: 100%; height: 100%;" onclick="document.getElementById('single-toggle').click()"></div>
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
<div class="fake-select-dropdown">
|
|
116
116
|
<label class="fake-select-option">
|
|
117
117
|
<input type="radio" name="download_option" id="allData" />
|
|
118
|
-
<span>All
|
|
118
|
+
<span>All invoices</span>
|
|
119
119
|
</label>
|
|
120
120
|
|
|
121
121
|
<label class="fake-select-option">
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
<path d="M2.5 8.3335H17.5" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
91
91
|
</svg>
|
|
92
92
|
</label>
|
|
93
|
-
<input type="text" class="form-control center-input" id="startDate" placeholder="All
|
|
93
|
+
<input type="text" class="form-control center-input" id="startDate" placeholder="All Payments" name="startDate">
|
|
94
94
|
<div id="dash" class="dash">–</div>
|
|
95
95
|
<input type="text" class="form-control right-input" id="endDate" placeholder="" name="endDate">
|
|
96
96
|
<div id="toggle-wrapper" class="position-absolute" style="width: 100%; height: 100%;" onclick="document.getElementById('single-toggle').click()"></div>
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
<div class="fake-select-dropdown">
|
|
115
115
|
<label class="fake-select-option">
|
|
116
116
|
<input type="radio" name="download_option" id="allData" />
|
|
117
|
-
<span>All
|
|
117
|
+
<span>All payments</span>
|
|
118
118
|
</label>
|
|
119
119
|
|
|
120
120
|
<label class="fake-select-option">
|
data/config/locales/en.yml
CHANGED
data/lib/kaui/version.rb
CHANGED
data/lib/kaui.rb
CHANGED
|
@@ -82,7 +82,7 @@ module Kaui
|
|
|
82
82
|
when 'account_id'
|
|
83
83
|
view_context.link_to(account.account_id, view_context.url_for(action: :show, account_id: account.account_id))
|
|
84
84
|
when 'parent_account_id'
|
|
85
|
-
account.parent_account_id.nil? ? nil : view_context.link_to(account.
|
|
85
|
+
account.parent_account_id.nil? ? nil : view_context.link_to(account.parent_account_id, view_context.url_for(action: :show, account_id: account.parent_account_id))
|
|
86
86
|
when 'account_balance'
|
|
87
87
|
view_context.humanized_money_with_symbol(account.balance_to_money)
|
|
88
88
|
else
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kaui
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.0.
|
|
4
|
+
version: 4.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kill Bill core team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-12-
|
|
11
|
+
date: 2025-12-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: actionpack
|
|
@@ -540,8 +540,6 @@ files:
|
|
|
540
540
|
- app/views/kaui/accounts/index.html.erb
|
|
541
541
|
- app/views/kaui/accounts/new.html.erb
|
|
542
542
|
- app/views/kaui/accounts/show.html.erb
|
|
543
|
-
- app/views/kaui/admin/index.html.erb
|
|
544
|
-
- app/views/kaui/admin/index.js.erb
|
|
545
543
|
- app/views/kaui/admin_allowed_users/_form.html.erb
|
|
546
544
|
- app/views/kaui/admin_allowed_users/edit.html.erb
|
|
547
545
|
- app/views/kaui/admin_allowed_users/index.html.erb
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
<div class="kaui-container ">
|
|
2
|
-
<div class="clock-container">
|
|
3
|
-
<div class="d-flex flex-column">
|
|
4
|
-
<div class="clock-header mb-3">
|
|
5
|
-
<div class="d-flex align-items-start flex-column">
|
|
6
|
-
<h2>Clock</h2>
|
|
7
|
-
<p>Current date/time: <span id="kb_clock"><%= @clock['currentUtcTime'] %></span></p>
|
|
8
|
-
</div>
|
|
9
|
-
<span>
|
|
10
|
-
</span>
|
|
11
|
-
</div>
|
|
12
|
-
<div>
|
|
13
|
-
<%= form_tag kaui_engine.admin_set_clock_path(params.to_h), :method => :put, :class => 'form-horizontal' do %>
|
|
14
|
-
|
|
15
|
-
<div class="trigger-invoice-box form-group">
|
|
16
|
-
<b>Set new date</b>
|
|
17
|
-
<div class="d-flex align-items-center">
|
|
18
|
-
<div class="custom-date-input-wrapper kaui-button custom-hover">
|
|
19
|
-
<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
20
|
-
<path d="M14.9167 12.5V18.3333M17.8333 15.4167H12" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
21
|
-
<path d="M14.0833 1.66675V5.00008M6.58325 1.66675V5.00008" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
22
|
-
<path d="M17.8333 10.8333V4.99992C17.8333 4.07944 17.0871 3.33325 16.1666 3.33325H4.49992C3.57944 3.33325 2.83325 4.07944 2.83325 4.99992V16.6666C2.83325 17.5871 3.57944 18.3333 4.49992 18.3333H10.3333" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
23
|
-
<path d="M2.83325 8.33325H17.8333" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
24
|
-
</svg>
|
|
25
|
-
<input class="form-control" name="new_date" type="text" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-today-highlight="true" value="<%= @clock['localDate'] %>">
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<%= render "kaui/components/button/button", {
|
|
29
|
-
label: "Submit",
|
|
30
|
-
variant: "outline-secondary d-inline-flex align-items-center gap-1",
|
|
31
|
-
type: "submit",
|
|
32
|
-
html_class: "btn btn-xs kaui-dropdown custom-hover py-2 px-3",
|
|
33
|
-
html_options: { name: "commit", value: "Submit" }
|
|
34
|
-
} %>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<%= button_tag type: 'submit', name: 'commit', value: 'Reset', class: 'kaui-button dots-menu custom-hover' do %>
|
|
38
|
-
<%= image_tag('kaui/setting/reset.svg', alt: 'Reset Icon', class: 'me-2', size: '16x16') %>
|
|
39
|
-
Reset
|
|
40
|
-
<% end %>
|
|
41
|
-
|
|
42
|
-
</div>
|
|
43
|
-
<% end %>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
<%= javascript_tag do %>
|
|
50
|
-
$(document).ready(function() {
|
|
51
|
-
scheduleRefresh();
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
function scheduleRefresh() {
|
|
55
|
-
setTimeout(refreshClock, 1000);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function refreshClock() {
|
|
59
|
-
$.ajax({url: "<%= admin_path(:format => :js) %>"});
|
|
60
|
-
}
|
|
61
|
-
<% end %>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|