// basic JS needed for zymonic manual page // setups up the filter api manual page form to be able to generate api requests function setupFilterAPICallForm(filter_details) { // set default url and system from page url $("[name='url']").val(window.location.origin+"/zymonicmp"); var system = window.location.pathname.match(/\/man\/(.*)\/Filter/); if (system && system[1]) { $("[name='system']").val(system[1]); } // populate fields updateFilterAPICallFields(filter_details) $("#generate_example").click(function() { var request = generateFilterAPICallRequest(filter_details); var request_to_send = convertRequestToFormat(request.request, $("[name='api_request_type']").val()); var example_response = convertRequestToFormat(request.example_response, $("[name='api_response_type']").val()); $("#FilterAPICallRequest pre code").text(censorOutput(request_to_send)); $("#FilterAPICallResponse pre code").text(censorOutput(example_response)); return false; }); $("#send_request").click(function() { var request_type = $("[name='api_request_type']").val(); var response_type = $("[name='api_response_type']").val(); var request = generateFilterAPICallRequest(filter_details); var request_to_send = convertRequestToFormat(request.request, request_type); $("#FilterAPICallRequest pre code").text(censorOutput(request_to_send)); $("#FilterAPICallResponse pre code").text("Sending Request ..."); var data = setupDataForSending(request.request, request_type); $("#send_request").prop('disabled', true); if(request_type == "json") { $.ajax({ url: $("[name='url']").val(), type: "POST", data: data, datatype: "json", contentType: "application/json", error: function(xhr, type, error) { $("#FilterAPICallResponse pre code").text("ERROR: "+type+"\n"+error); $("#send_request").prop('disabled', false); }, success: function(incoming) { var response = convertResponseToFormat(incoming, response_type); $("#FilterAPICallResponse pre code").text(censorOutput(response)); $("#send_request").prop('disabled', false); } }); } else { // Send anything other than JSON using params and assume XML response $.ajax({ url: $("[name='url']").val(), type: "POST", data: data, error: function(xhr, type, error) { $("#FilterAPICallResponse pre code").text("ERROR: "+type+"\n"+error); $("#send_request").prop('disabled', false); }, success: function(xml) { var response = convertResponseToFormat(xml, response_type); $("#FilterAPICallResponse pre code").text(censorOutput(response)); $("#send_request").prop('disabled', false); } }); } return false; }); } // updates field inputs based on filter search fields function updateFilterAPICallFields(filter_details) { var fields_container = $("#FilterAPICallSearchFields").empty(); var input = buildFilterAPICallFormInput(filter_details); fields_container.append(input); } // builds a form to capture search fields for a filter function buildFilterAPICallFormInput(filter_details) { var form_container = $("
", { class: "FilterPICallFormInputs", id: "search_fields" }); form_container.append($("").text("Search Fields")); for (var i=0; i", { for: field.zname, 'class': ( field.required ? 'FilterAPICallFieldRequired' : '' ), title: field.description }); label.append($("", { href: "../Field/"+field.zname+"_api.html" }).text(label_text)); if (field.values) { var select = $("", { type: "text", name: field.zname })); } if(field.keyfield) { label.append($("").text("Key field")); } return label; } //assembles api call request function generateFilterAPICallRequest(filter_details) { var result = { request: { ZymonicRequest: { ZymonicHeader: { system: $("[name='system']").val(), webservicemode: "filter", debug: ( $("[name='debug']").is(':checked') ? 'true' : 'false' ), compact_output: ( $("[name='compact_output']").is(':checked') ? 'true' : 'false' ), no_display_attributes: "false", } } }, example_response: { Zymonic: {} }, }; if ( $("[name='api_response_type']").val() == 'json' ) { result.request.ZymonicRequest.ZymonicHeader.json = 'true'; } var username = $("[name='username']").val(); if (username) { result.request.ZymonicRequest.Authentication = { username: $("[name='username']").val(), password: $("[name='password']").val(), }; } // setup basic filter details result.request.ZymonicRequest[filter_details.zname] = { search: "Show Results", }; // add search fields var form_request = generateFilterAPICallFormRequest(filter_details); for (var key in form_request) { result.request.ZymonicRequest[filter_details.zname][key] = form_request[key]; } // add extras for (var key in filter_details.extra_header_params) { result.request.ZymonicRequest.ZymonicHeader[key] = filter_details.extra_header_params[key]; } for (var key in filter_details.extra_params) { result.request.ZymonicRequest[filter_details.zname][key] = filter_details.extra_params[key]; } return result; } // builds fragment of the request function generateFilterAPICallFormRequest(filter_details) { var form_result = {}; for (var i=0; i").attr('value', "").text("No State, i.e. load current state"); state_select.append(option); // add rest of the states for (var i=0; i", { value: state.zname }).text(state.display_name); if (process_details.initial_state == state.zname) { option.attr("selected", true) } state_select.append(option); } // trigger transition/fields update on state change state_select.change(function(){ updateProcessAPICallTransitions(process_details); updateProcessAPICallFields(process_details); }); } // updates transition list based on currently selected state function updateProcessAPICallTransitions(process_details) { var state = $("[name='state']").val(); var transition_select = $("[name='transition']").empty(); // always add an option for no transition var option = $("").text("Record ID")); reclabel.append($("", { type: "text", name: "ZZrecord_"+position, value: "ZZNEW"+(form.multiple_records ? position : '') })); reclabel.append($("").text("Replace ZZNEW[NUMBER] with the correct ID if using an existing process or nothing if using 'Key fields'")); form_container.append(reclabel); // if multiple records add a button to generate another record if (form.multiple_records) { var new_record = $("