Last active
September 6, 2018 18:25
-
-
Save fostergn/9ba4e5f5f5a228c3a622f4296cea0cd9 to your computer and use it in GitHub Desktop.
Knack: Update Equation With Connected Record
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var scene_key = 'scene_1' | |
var view_key = 'view_36' | |
var name_field_key = 'field_1' | |
var price_field_key = 'field_39' | |
var connected_record_field_key = 'field_30' | |
var quantity_field_key = 'field_31' | |
var equation_total_field = 'field_50' | |
var quantity_selector = 'input#' + quantity_field_key | |
var equation_total_selector = '#kn-input-' + equation_total_field + ' p.kn-equation' | |
var connected_record_selector = '#connection-picker-chosen-'+ connected_record_field_key +' .chzn-results li' | |
var currency = '$' | |
var connected_records; | |
// async get records | |
getConnectedRecords(scene_key, view_key, function(records) { | |
connected_records = records; | |
}); | |
$(document).on('knack-view-render.view_10', function(event, scene) { | |
// hide connected table | |
// could be on a separate page to avoid doing this | |
$('#view_36').hide(); | |
$(quantity_selector).change(function() { | |
calculateTotal(connected_records, $(connected_record_selector + '.result-selected').text()) | |
}) | |
$(connected_record_selector).click(function() { | |
calculateTotal(connected_records, $(this).text()) | |
}) | |
}) | |
function calculateTotal(connected_records, connected_record_name) { | |
var selected_connected_record = connected_records.find(function(record) { | |
return connected_record_name === record[name_field_key]; | |
}) | |
if (!selected_connected_record) { return } | |
var selected_connected_record_price = selected_connected_record[price_field_key + '_raw']; | |
var quantity = $(quantity_selector).val(); | |
if (quantity < 1) { return } | |
var price = selected_connected_record_price * quantity; | |
var formatted_price = currency + price.toString() | |
// setting timeout to update after equation updates | |
setTimeout(function() {$(equation_total_selector).text(formatted_price)}, 100) | |
} | |
function getConnectedRecords(scene_key, view_key, cb) { | |
var connected_records; | |
$.ajax({ | |
url: 'https://api.knack.com/v1/pages/'+ scene_key +'/views/'+ view_key +'/records', | |
type: 'GET', | |
headers: { | |
'Authorization': Knack.getUserToken(), | |
'X-Knack-Application-Id': Knack.application_id, | |
'Content-Type': 'application/json' | |
}, | |
success: function(data) { | |
connected_records = data.records; | |
return cb(connected_records) | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment