document.getElementById("finder-html").innerHTML = '
Loading, Please wait...
'; var show_log = ''; const jqueryUrl = "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/jquery-3-6-0/jquery-3.6.0.min.js"; const cssToLoad = [ "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/datatables-1-13-4/css/jquery.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/autofill-2-5-3/css/autoFill.dataTables.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/buttons-2-3-6/css/buttons.dataTables.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/colreorder-1-6-2/css/colReorder.dataTables.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/datatables-1-13-4/css/jquery.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/datetime-1-4-1/css/dataTables.dateTime.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/editor-2-1-2/css/editor.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fixedcolumns-4-2-2/css/fixedColumns.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fixedheader-3-3-2/css/fixedHeader.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/keytable-2-9-0/css/keyTable.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/responsive-2-4-1/css/responsive.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowgroup-1-3-1/css/rowGroup.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowreorder-1-3-3/css/rowReorder.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/scroller-2-1-1/css/scroller.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/searchbuilder-1-4-2/css/searchBuilder.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/searchpanes-2-1-2/css/searchPanes.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/select-1-6-2/css/select.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/staterestore-1-2-2/css/stateRestore.dataTables.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/fonts/fontawesome-6-4-0/css/fontawesome.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/quill-1-3-7/css/quill.snow.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/nouislider-15-7-0/css/nouislider.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/autofill-2-5-3/css/autoFill.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/buttons-2-3-6/css/buttons.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/colreorder-1-6-2/css/colReorder.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/datatables-1-13-4/css/dataTables.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/editor-2-1-2/css/editor.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fixedcolumns-4-2-2/css/fixedColumns.bootstrap.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fixedheader-3-3-2/css/fixedHeader.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/keytable-2-9-0/css/keyTable.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/responsive-2-4-1/css/responsive.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowgroup-1-3-1/css/rowGroup.bootstrap5.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowreorder-1-3-3/css/rowReorder.bootstrap5.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/scroller-2-1-1/css/scroller.bootstrap5.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/searchbuilder-1-4-2/css/searchBuilder.bootstrap5.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/searchpanes-2-1-2/css/searchPanes.bootstrap5.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/select-1-6-2/css/select.bootstrap.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/staterestore-1-2-2/css/stateRestore.bootstrap5.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/quill-1-3-7/css/quill.snow.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/nouislider-15-7-0/css/nouislider.min.css", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fontawesome-6-4-0/css/all.min.css", ]; const scriptsToLoad = [ "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/bootstrap-5-1-3/js/bootstrap.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/bootstrap-5-1-3/js/bootstrap.bundle.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/datatables-1-13-4/js/jquery.dataTables.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/datatables-1-13-4/js/dataTables.bootstrap5.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/editor-2-1-2/js/dataTables.editor.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/editor-2-1-2/js/editor.bootstrap5.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fixedheader-3-3-2/js/fixedHeader.dataTables.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowgroup-1-3-1/js/dataTables.rowGroup.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowreorder-1-3-3/js/rowReorder.dataTables.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/select-1-6-2/js/dataTables.select.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/keytable-2-9-0/js/dataTables.keyTable.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/pdfmake-0-2-7/pdfmake.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/pdfmake-0-2-7/vfs_fonts.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/searchbuilder-1-4-2/js/dataTables.searchBuilder.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/datetime-1-4-1/js/dataTables.dateTime.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/responsive-2-4-1/js/dataTables.responsive.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/nouislider-15-7-0/js/nouislider.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fixedheader-3-3-2/js/fixedHeader.bootstrap.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowgroup-1-3-1/js/rowGroup.bootstrap5.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/rowreorder-1-3-3/js/rowReorder.bootstrap.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/select-1-6-2/js/select.bootstrap4.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/keytable-2-9-0/js/keyTable.bootstrap4.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/searchbuilder-1-4-2/js/searchBuilder.bootstrap.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/responsive-2-4-1/js/responsive.bootstrap5.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/buttons-2-3-6/js/dataTables.buttons.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/buttons-2-3-6/js/buttons.bootstrap5.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/buttons-2-3-6/js/buttons.colVis.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/buttons-2-3-6/js/buttons.print.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/jszip-3-1-3/js/jszip.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/buttons-2-3-6/js/buttons.html5.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/nouislider-15-7-0/js/nouislider.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/moment-2-18-1/js/moment.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/quill-1-3-7/js/quill.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/quill-1-3-7/js/datatables.quill.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/chartjs-1-0-2/js/chart.min.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/chartjs-1-0-2/js/chartdata.js", "https://www.coherent.com/content/dam/coherent/site/en/web-assets/datatables/fileinput-4-2-6/js/fileinput.js", "https://utilities-stage.coherent.com/assets/js/main.js" ]; show_log = 'Start Embed Script (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; if (typeof jQuery === "undefined") { show_log = 'Loading jQuery (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; var script = document.createElement("script"); script.src = jqueryUrl; script.onload = loadFirst; document.head.appendChild(script); } else { show_log = 'jQuery already loaded (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; loadFirst(); } function loadFirst() { $('head').append(''); var cssFiles = cssToLoad; cssFiles.forEach(function(value) { $('head').append(''); var filename = value.substring(value.lastIndexOf("/") + 1); show_log = 'CSS - ' + filename + ' loaded (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; show_log = 'Jo-Anna Testing generate.php console statements' }); show_log = 'CSS loaded (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; loadScripts(); } function loadScripts() { var loaded = 0; function loadScript(index) { $.getScript(scriptsToLoad[index], function() { loaded++; let filename = scriptsToLoad[index].substring(scriptsToLoad[index].lastIndexOf("/") + 1); show_log = 'JS - ' + filename + ' loaded (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; if (loaded == scriptsToLoad.length) { show_log = 'JS - All scriptsToLoad loaded (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; show_log = 'JS - Loading Table Configuration (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; console.log('%cTemplate: pages/table_api_finder_config', 'padding:5px;background: #0032FF; color: #C8C8C8'); var formatForSlider = { from: function(formattedValue) { return Number(formattedValue); }, to: function(numericValue) { return Math.round(numericValue); } }; var arr_checkbox_data = {}; var columnData = {}; var activeGroupNames = []; var activeGroupIds = []; const countAttributes = {}; var part_log = ''; window.isTableSearching = 0; var searchIt = []; var valid_rows = 0; const link_to_json = 'https://utilities-stage.coherent.com/public/static/specialty-optical-fibers/gyroscope.json'; const link_to_aem_page = 'https://www.coherent.com/components-accessories/specialty-optical-fibers/product-manager'; const arr_fields_name_changes = {"landing_page": "Group","part_number": "Product","sku":"SKU","part_description": "Description","wavelength_lower_range": "MIN λ","wavelength_upper_range":"MAX λ","wavelength_unit": "unit λ","wavelength": "Wavelength λ","fiber_core": "Fiber Core"}; const arr_fields_width_class = {"part_number":"finder-width-2","part_description":"finder-width-4","wavelength":"finder-width-1","wavelength_upper_range":"finder-width-1","wavelength_lower_range":"finder-width-1","parameters":"finder-width-12"}; const arr_fields_width = []; const arr_fields_to_remove = ["part_id","sort_order","part_hero_text","images","product_grouping","power_upper_range","power_lower_range","power","power_unit","datasheet","housing","operation_mode","miscellaneous","package_type","tier_one","tier_two","keywords","fiber_core"]; const arr_field_for_checkboxes = ["tier_one","tier_two"]; const arr_fields_to_hide = ["wavelength_unit","sku"]; const arr_fields_with_embeds = ["parameters", "images"]; const finder_group = "gyroscope"; var table; function getDT() { typeof getPageLoadTime === 'function' ? getPageLoadTime('Load JSON') : null; $.ajax({ url: link_to_json, dataType: "json", success: function(response) { typeof getPageLoadTime === 'function' ? getPageLoadTime('JSON loaded') : null; const data = response; let parameterArrayColumn = {}; const columns = [{ "data": null, "defaultContent": "", "className": "no_click", "searchable": false, "orderable": false, }]; for (let key in data[0]) { if (!data[0].hasOwnProperty(key)) continue; const key_title = arr_fields_name_changes[key] || key; let display_it = !arr_fields_to_remove.includes(key); const noVis = arr_fields_to_hide.includes(key) ? "noVis finder-width-0" : ""; let col_width = arr_fields_width[key] || "1%"; let width_class = arr_fields_width_class[key] || ""; let link_look_class = ""; if (key === 'parameters') { col_width = "100%"; } if (key === 'parameter_array' || key === 'landing_page_value' || key === 'tier_one_value' || key === 'tier_two_value' || key === 'has_dynamic_page' || key === 'show_datasheet' ) { display_it = false; width_class = 'noVis finder-width-0 no_click hide'; } if (key === 'sku' || key === 'part_number') { link_look_class = 'finder-link-look'; } const column = { data: key, title: capitalizeFirstLetter(key_title), visible: display_it, width: col_width, className: `${key} ${noVis} ${width_class} ${link_look_class}` }; if (arr_fields_with_embeds.includes(key)) { column.render = renderColumnAsTable; } if (key === 'datasheet') { column.render = renderColumnAsLink; } if (key === 'main_image') { column.title = ''; column.render = renderColumnAsImage; } if (key === 'drawings') { column.title = ''; column.render = renderColumnImageArrayAsList; } columns.push(column); }; table = $('#results_table').DataTable({ data: data, columns: columns, 'fixedHeader': true, 'processing': true, 'language': { 'loadingRecords': ' ', 'processing': '
Loading
' }, initComplete: function(settings, json) { build_checkboxes(arr_checkbox_data); $('div.loading').fadeOut(500, function() { $('.loaded_content').delay(100).fadeIn(750); typeof getPageLoadTime === 'function' ? getPageLoadTime('Table displayed') : null; }); changeTableCSS(); build_checkboxes(arr_checkbox_data); getSearchPush(); $('.dataTables_filter').detach().appendTo('#finder-search-container'); }, responsive: { breakpoints: [{ name: 'desktop', width: 1000 }, { name: 'tablet', width: 400 }, { name: 'phone', width: 380 } ] }, dom: 'flrtip', pageLength: 15, searching: true, lengthMenu: [ [10, 15, 25, 50, 100, 150, 200, -1], [10, 15, 25, 50, 100, 150, 200, 'All'] ], order: [ [1, "asc"] ], buttons: [{ extend: "excel", text: "Export to Excel" }], }); table.on('click', 'td:not(.no_click)', function() { const rowData = $('#results_table').DataTable().row(this).data(); if (!rowData || !rowData.part_id) { return; } const has_dynamic_page = rowData.has_dynamic_page; const show_datasheet = rowData.show_datasheet; const datasheet = rowData.datasheet; const partId = rowData.part_id; const name = rowData.part_number || rowData.sku; if (has_dynamic_page === 1) { let slug = name || ''; slug = slug.replace(/\W+(?!$)/g, '-').toLowerCase(); slug = slug.replace(/\W$/, '').toLowerCase(); const newUrl = link_to_aem_page + "?id=" + partId; window.open(newUrl, '_blank'); } else if (show_datasheet === 1 && datasheet !== '') { const newUrl = datasheet; window.open(newUrl, '_blank'); } }); table.on('draw.dt', function() { changeTableCSS(); }); table.on('responsive-resize', function(e, datatable, columns) {}); }, error: function(xhr, status, error) {} }); }; function getSearchPush() { let activeGroupIds = []; let activeGroupNames = []; $.fn.dataTable.ext.search.push(function(settings, data, dataIndex, rowData, counter) { if (settings.sTableId !== 'results_table') { return true; }; let parameter_properties = getCheckboxProperties('finder-parameter-checkbox'); let tier_properties = getCheckboxProperties('finder-tier-checkbox'); let searchTierCriteria = Object.values(tier_properties).flat(); let searchParameterCriteria = Object.values(parameter_properties).flat(); let columnData = settings.aoColumns.map(column => column.data); let tierNameMatch = ''; let paramIndex = ''; let tierIndex = ''; let searchColumnName = ''; let searchParameterName = ''; let paramColumnDataArray = []; let columnDataArray = []; let matches = []; let parameterNameMatch = ''; let searchColumnValues = []; let searchParameterValues = []; let targetColumnValue = ''; let matchingAttributes = []; parameter_content = ''; let groupMatch = false; let paramMatch = false; let groupSearched = false; let paramSearched = false; if (parameter_properties.length === 0 && tier_properties.length === 0) { $(":checkbox").prop("disabled", false); $('.checkbox-toggle-message').html(''); return true; }; var columnDataParam = rowData.parameter_array; if (tier_properties.length > 0) { groupSearched = true; for (const criterion of searchTierCriteria) { searchColumnName = criterion['name'] + '_value'; searchColumnValues = criterion['values']; tierIndex = columnData.findIndex(column => column === searchColumnName); columnDataArray = table.column(tierIndex).data().toArray(); matches = data.filter(function(value) { return searchColumnValues.includes(value); }); if (matches.length > 0) { activeGroupNames.push(matches); groupMatch = true; } }; }; searchKey = ''; if (searchParameterCriteria.length > 0) { paramSearched = true; } for (const criterionParameter of searchParameterCriteria) { searchParameterName = criterionParameter['name']; searchParameterValues = criterionParameter['values']; if (searchParameterValues.length > 0) { searchKey = searchParameterName; searchAttribute = searchParameterValues; for (var i = 0; i < columnDataParam.length; i++) { var object = columnDataParam[i]; var objectNext = columnDataParam[i + 1]; let parameterNameMatch = '-'; for (var key in object) { if (object.hasOwnProperty(key)) { var value = object[key].toString().toLowerCase(); if (parameterNameMatch != '-') { if (searchAttribute.includes(value)) { paramMatch = true; } } else if (searchKey.length > 0 && value.includes(searchKey.toLowerCase())) { parameterNameMatch = value; } else { parameterNameMatch = '-'; } } } } } }; $('.checkbox-toggle-message').html(tierNameMatch + parameterNameMatch); if (groupMatch && groupSearched && !paramSearched) { return true; } else if (paramMatch && !groupSearched) { return true; } else if (groupMatch && groupSearched && paramMatch && paramSearched) { return true; } else { return false; } return false; }); }; function renderColumnImageArrayAsList(data, type, row, key) { if (type !== "display" || data === null || typeof data !== "object") { return data; }; let result = ''; if (Array.isArray(data)) { if (data != null && data != '') { for (let i = 0; i < data.length; i++) { if (data[i] === null || data[i] === '') { break; } result += renderColumnImageArrayAsList(data[i], 'display', row, key); }; }; } else { for (let [key, value] of Object.entries(data)) { if (Array.isArray(value)) { result += `
${key}: ${renderColumnImageArrayAsList(value, 'display', row, key)}
`; } else if (value !== null && typeof value === "object") { value = JSON.stringify(flattenObject(value)); result += `
${key}: ${value}
`; } else { if (key === 'url') { result += `
Drawing URL: ${value}
`; } } }; result = result ? `
${result}
` : ''; }; return result; }; function array_to_list(data, type, row, key) { if (type !== "display" || data === null || typeof data !== "object") { return data; }; let result = ''; if (Array.isArray(data)) { result += ''; } else { for (let [key, value] of Object.entries(data)) { if (Array.isArray(value)) { result += `
  • ${key}: ${array_to_list(value, 'display', row, key)}
  • `; } else if (value !== null && typeof value === "object") { value = JSON.stringify(flattenObject(value)); result += `
  • ${key}: ${value}
  • `; } else { result += `
  • ${key}: ${value}
  • `; } }; result = ``; }; return result; }; function embedded_json_to_array(data, type, row, key) { if (type !== "display" || data === null || typeof data !== "object") { return data; }; let result = ''; if (Array.isArray(data)) { result += ''; } else { for (let [key, value] of Object.entries(data)) { if (Array.isArray(value)) { result += `
  • ${key}: ${array_to_list(value, 'display', row, key)}
  • `; } else if (value !== null && typeof value === "object") { value = JSON.stringify(flattenObject(value)); result += `
  • ${key}: ${value}
  • `; } else { result += `
  • ${key}: ${value}
  • `; } }; result = ``; }; return result; }; function renderColumnAsImage(data, type, row, meta) { if (type === 'display') { return '
    ' + data.alt + '
    '; } return data; }; renderColumnAsLink = function(data, type, row, key) { if (type === "display") { var linkText = 'Download the PDF'; var href = data ? data.replace('{filedir_293}', 'https://www.coherent.com/resources/datasheet/components-and-accessories/') : ''; return '' + linkText + ''; } else { return data; } }; function renderArrayAsString(data, type, row, key) { if (type !== "display" || data === null || typeof data !== "object") { return data; } return JSON.stringify(data); }; function renderColumnAsTable(data, type, row, key) { if (type !== "display" || data === null || typeof data !== "object") { return data; } const columns = data.columns; if (!columns || columns.length === 0 || !columns[0].parameter || columns[0].parameter.length <= 0) { return data; }; columnData = columns[0]; return buildParameterTable(columnData); }; function buildParameterTable(parameterToMap) { const attributesByParameter = {}; const parameterValues = parameterToMap.parameter.map((parameter) => { const { parameter: str_parameter, attribute: str_attribute, min: num_min, nominal: num_nominal, max: num_max, unit: str_unit } = parameter; const min = isNaN(parseFloat(num_min)) ? '' : parseFloat(num_min).toFixed(2) + ' ' + str_unit; const nominal = isNaN(parseFloat(num_nominal)) ? '' : parseFloat(num_nominal).toFixed(2) + ' ' + str_unit; const max = isNaN(parseFloat(num_max)) ? '' : parseFloat(num_max).toFixed(2) + ' ' + str_unit; const id_parameter = ''; if (str_attribute) { countAttributes[str_parameter] = countAttributes[str_parameter] || {}; countAttributes[str_parameter][str_attribute] = (countAttributes[str_parameter][str_attribute] || 0) + 1; arr_checkbox_data[str_parameter] = arr_checkbox_data[str_parameter] || []; arr_checkbox_data[str_parameter].push(str_attribute); } return ` ${id_parameter} ${str_parameter} ${str_attribute} ${min} ${nominal} ${max} `; }).join(''); return `
    ${parameterValues}
      MinNominalMax
    `; }; function build_checkboxes(arr_checkboxes) { $('#parameter_search_checkboxes').html(''); const keys = Object.keys(arr_checkboxes); keys.sort(function(a, b) { return a.toLowerCase().localeCompare(b.toLowerCase()); }); const uniqueCheckboxValues = {}; for (const key of keys) { const uniqueValues = []; const values = arr_checkboxes[key]; for (const value of values) { if (!uniqueValues.includes(value)) { uniqueValues.push(value); } }; uniqueValues.sort(function(a, b) { return parseInt(a) - parseInt(b); }); uniqueCheckboxValues[key] = uniqueValues; let checkbox_id = 'id-' + key.replace(/\s+/g, '-').toLowerCase(); let checkbox = ` `; $('#parameter_search_checkboxes').append(checkbox); } $('.finder-section-toggle').click(function() { var target = $($(this).data('target')); target.toggleClass('hidden'); $('html, body').animate({ scrollTop: target }, 400); }); }; function flattenObject(obj) { let result = {}; function recurse(currentObj, currentPath) { if (typeof currentObj !== "object") { result[currentPath] = currentObj; } else { for (let key in currentObj) { let newPath = currentPath + "." + key; recurse(currentObj[key], newPath); }; }; }; recurse(obj, ""); return result; }; function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); }; $(document).on('change', '.finder-family', function() { table.draw(); }); $(document).on('change', '.finder-parameter-checkbox', function() { table.draw(); }); function displayObjectAsTable(obj) { const table = document.createElement('table'); const tableBody = document.createElement('tbody'); table.appendChild(tableBody); for (let key in obj) { const row = document.createElement('tr'); const nameCell = document.createElement('td'); const valueCell = document.createElement('td'); nameCell.style.verticalAlign = 'top'; nameCell.style.padding = '3px'; nameCell.textContent = key; if (key === 'name') { nameCell.textContent = 'Name'; nameCell.classList.add('name-cell-main'); nameCell.classList.add('name-cell-box'); } else if (key === 'values') { nameCell.textContent = 'Value(s)'; nameCell.classList.add('value-cell-main'); nameCell.classList.add('value-cell-box'); } else { nameCell.classList.remove('name-cell-main'); nameCell.classList.remove('value-cell-main'); nameCell.textContent = ''; nameCell.classList.add('no-value'); } if (Array.isArray(obj[key])) { const subTable = document.createElement('table'); for (let i = 0; i < obj[key].length; i++) { const subRow = document.createElement('tr'); const subCell = document.createElement('td'); subCell.textContent = obj[key][i]; subRow.appendChild(subCell); subTable.appendChild(subRow); } valueCell.appendChild(subTable); } else if (typeof obj[key] === 'object') { valueCell.appendChild(displayObjectAsTable(obj[key])); } else { valueCell.textContent = obj[key]; } if (key === 'name') { row.classList.add('name-box'); } else if (key === 'values') { row.classList.add('value-box'); } row.appendChild(nameCell); row.appendChild(valueCell); tableBody.appendChild(row); } return table; } function getCheckboxProperties(className) { let properties = {}; let checkboxes = document.getElementsByClassName(className); for (let i = 0; i < checkboxes.length; i++) { if (checkboxes[i].checked) { let name = checkboxes[i].name; let value = checkboxes[i].value; if (!properties.hasOwnProperty(name)) { properties[name] = []; }; properties[name].push(value); }; }; let result = []; for (let [key, value] of Object.entries(properties)) { result.push({ name: key, values: value }); }; return result; }; function changeTableCSS() { $('#results_table th:first-child') .css('margin', '0') .css('padding', '0') .css('border-right', 'none') .css('background-color', 'transparent') .css('background-image', 'none') .removeClass('sorting_asc') .css('width', '1%'); $('#results_table td:first-child') .removeClass('sorting_1') .css('margin', '0,0,0,0') .css('padding', '0,0,0,0') .css('border-right', 'none') .css('background-color', 'transparent') .css('background-image', 'none') .css('width', '1%'); $('#results_table td:nth-child(2)') .css('border-left', 'none') }; $(document).ready(function() { getDT( function() { table.columns.adjust().draw(); } ); }); function createRangeSlider(sliderId, startValues, minValue, maxValue, lowerValueId, upperValueId) { var snapSlider = document.getElementById(sliderId); noUiSlider.create(snapSlider, { start: startValues, range: { 'min': minValue, 'max': maxValue }, format: formatForSlider, tooltips: { to: function(numericValue) { return numericValue.toFixed(1); } } }); var formatValues = [ document.getElementById(lowerValueId), document.getElementById(upperValueId) ]; snapSlider.noUiSlider.on('set', function(values, handle) { searchIt = [{ 'sliderid': sliderId, values }]; table.draw(); }); }; ; show_log = 'JS - Table Configuration loaded (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )'; } else { loadScript(loaded); } }); } loadScript(0); } show_log = 'End Embed Script (' + new Date().toLocaleTimeString() + ' - ' + new Date().getTime() + ' )';