- Posts: 38
- Thank you received: 0
Ask the community, share ideas, and connect with other LimeSurvey users!
$(document).ready(function () { // Look for questions with an "arrayGroup" class // These denote question groups $.each($('.arrayGroup input'), function (index, groupInput) { var inputName = $(groupInput).attr('name').trim(); var inputId = $(groupInput).attr('id').trim(); var nameSegments = inputName.split('X'); window._de_surveryId = nameSegments[0].trim(); var groupId = nameSegments[1].trim(); var questionId = nameSegments[2].trim(); initialise(groupId, inputId); }); }); function initialise(groupId, inputId) { var url = 'https://api' + window.location.hostname + '/group/' + groupId + '/arrays'; console.log('url=' + url); $.getJSON(url, function (data) { if (!window._de_data) window._de_data = {}; window._de_data[groupId] = data; if (!window._de_maxRow) window._de_maxRow = {}; if (!window._de_maxRow[groupId]) window._de_maxRow[groupId] = {}; window._de_maxRow[groupId][inputId] = 0; var groupData = getGroupData(data, inputId); processGroupSegment(data, groupId, inputId); if (groupData.table_id == "SystemArch") { getMachineData(groupId, inputId); } }).fail(function (jqxhr, textStatus, error) { var err = textStatus + ", " + error; console.log("Request Failed: " + err); }); } function getMachineData(groupId, inputId) { var machine_data_url = 'https://api' + window.location.hostname + '/machine/' + userToken; var nrows = 1; console.log('url=' + machine_data_url); $('.questionCell .mandatory.question-container').show() $.getJSON(machine_data_url, function (data) { processMachineData(data, groupId, inputId, userToken); for (var row = 1; row <= data.length; row++) { $('#' + getShowId(groupId, inputId, row) + ' input').val('true'); var tr = getTr(groupId, inputId, row); tr.removeClass('hide'); $('#table_SystemArch tr').eq(row).find('td').eq(10).find('button').prop('disabled', true) tr.find('td').each(function (i, el) { $(this).find('.question-container').show() }); } $("#table_SystemArch tr").each(function(i, v) { if (i) { if ($(this).find("td").eq(2).find('.form-control.list-question-select').val() !== '') { nrows++; } } }); nrows--; window._de_maxRow[groupId][inputId] = nrows; $('#' + getShowId(groupId, inputId, nrows) + ' input').val('false'); var tr = getTr(groupId, inputId, nrows); tr.addClass('hide'); $('.questionCell .mandatory.question-container').show() }).fail(function (jqxhr, textStatus, error) { var err = textStatus + ", " + error; console.log("Request Failed: " + err); }); } function processMachineData(data, groupId, inputId, app_code) { var component_map = { 'Web Tier': 'A1', 'Application Tier': 'A2', 'Database': 'A3', 'Messinging Layer': 'A4', 'Load Balancer': 'A5', 'Mobile Application': 'A6', 'Other': 'A7' }; var component_codes = { 'Web Tier': 'WT', 'Application Tier': 'AT', 'Database': 'DT', 'Messinging Layer': 'ML', 'Load Balancer': 'LB', 'Mobile Application': 'MA', 'Other': 'OT' }; var component; var current_component = ''; var component_counter = 0; for (var row = 0; row < data.length; row++) { if (data[row].component in component_map) { component = component_map[data[row].component]; component_code = component_codes[data[row].component]; } else { component = component_map['Other']; component_code = component_codes['Other']; } if (component != current_component) { current_component = component; component_counter = 0; } else { var sw_name_field = $('#table_SystemArch tr').eq(row+1).find('td').eq(3).find('.form-control.text'); if (sw_name_field.val() == '') { component_counter += 1; } } addArchRow(row+1, component, data[row].os, data[row].os_version, groupId, inputId, app_code, component_counter, component_code); } } function addArchRow(row, component, os, version, groupId, inputId, app_code, component_counter, component_code) { var sw_name_field = $('#table_SystemArch tr').eq(row).find('td').eq(3).find('.form-control.text'); var version_field = $('#table_SystemArch tr').eq(row).find('td').eq(4).find('.form-control.text'); var latency_field = $('#table_SystemArch tr').eq(row).find('td').eq(8).find('.form-control.list-question-select'); var statefulness_field = $('#table_SystemArch tr').eq(row).find('td').eq(9).find('.form-control.list-question-select'); if (sw_name_field.val() == '' || typeof sw_name_field.val() === 'undefined') { sw_name = app_code.substring(app_code.length - 4, app_code.length) + component_code + pad(parseInt(component_counter), 2); sw_name_field.val(sw_name); sw_name_field.css('color', 'red'); } if (component !== null && component !== '') { $('#table_SystemArch tr').eq(row).find('td').eq(2).find('.form-control.list-question-select').val(component); $('#table_SystemArch tr').eq(row).find('td').eq(2).find('.form-control.list-question-select').mousedown(function(e){ e.preventDefault(); }); } if (os !== null && os !== '') { $('#table_SystemArch tr').eq(row).find('td').eq(5).find('.form-control.text').val(os); $('#table_SystemArch tr').eq(row).find('td').eq(5).find('.form-control.text').prop('readonly', true); } if (version !== null && version !== '') { $('#table_SystemArch tr').eq(row).find('td').eq(6).find('.form-control.text').val(version); $('#table_SystemArch tr').eq(row).find('td').eq(6).find('.form-control.text').prop('readonly', true); } }