You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
4.0 KiB

require([
"jquery",
"splunkjs/mvc",
"splunkjs/mvc/simplexml/ready!"], function($, mvc) {
const FIRST_CONVERT_DROPDOWN_VALUE = 'table';
var defaultToken = mvc.Components.get("default");
var submittedTokenModel = mvc.Components.get("submitted");
const tableEls = (() => {
const arr = [...document.getElementsByClassName('splunk-view splunk-table')];
arr.shift();
return arr.map(el => el.children[1]);
})();
const clearDataPreviewPanel = () => {
defaultToken.unset('data_query');
submittedTokenModel.unset('data_query');
tableEls[0].style.display = 'none';
}
const clearConvertTextToSPLPanel = () => {
const convertSPLClearBtn = document.querySelector("#Convert_SPL_Panel [data-test=button][aria-label='Clear filter']");
if (convertSPLClearBtn) {
convertSPLClearBtn.click();
defaultToken.unset('task_description_init');
submittedTokenModel.unset('task_description_init');
defaultToken.unset('form.task_description_init');
submittedTokenModel.unset('form.task_description_init');
defaultToken.unset('task_description');
submittedTokenModel.unset('task_description');
tableEls[1].style.display = 'none';
}
};
const clearRunSearchPanel = () => {
defaultToken.unset('input_query');
submittedTokenModel.unset('input_query');
defaultToken.unset('input_query_init');
submittedTokenModel.unset('input_query_init');
defaultToken.unset('form.input_query_init');
submittedTokenModel.unset('form.input_query_init');
tableEls[2].style.display = 'none';
};
const onDataIndexFieldClick = (e) => {
clearDataPreviewPanel();
clearConvertTextToSPLPanel();
clearRunSearchPanel();
};
const onConvertFieldClick = (e) => {
clearRunSearchPanel();
$("#Convert_SPL_Panel [data-test=button][aria-label='Clear filter']").on('click', (e) => {
clearRunSearchPanel();
});
};
// Listeners for button clicks to reset table views
$('#submit_data_query').on('click', (e) => {
const data_query= $('#data_query input[type="text"]').val();
submittedTokenModel.set("data_query", data_query);
tableEls[0].style.display = 'block';
clearConvertTextToSPLPanel();
clearRunSearchPanel();
});
$('#submit_task_description').on('click', (e) => {
const task_description= $('#task_description input[type="text"]').val();
submittedTokenModel.set("task_description", task_description);
tableEls[1].style.display = 'block';
clearRunSearchPanel();
});
$('#submit_input_query').on('click', (e) => {
const input_query= $('#input_query input[type="text"]').val();
submittedTokenModel.set("input_query", input_query);
tableEls[2].style.display = 'block';
});
// On field selection click
$('div[data-test=select] button[data-test=toggle]').on('click', (e) => {
// Need timeout for race condition of page rendering
setTimeout(() => {
if (e.currentTarget.closest('#Data_Preview_Panel')) {
const fieldInputs = document.querySelectorAll('button[data-test=option][data-selectable=true]');
fieldInputs.forEach(el => {
el.addEventListener('click', onDataIndexFieldClick);
});
}
if (e.currentTarget.closest('#Convert_SPL_Panel')) {
const fieldInputs = document.querySelectorAll('button[data-test=option][data-selectable=true]');
if (fieldInputs[0].value === FIRST_CONVERT_DROPDOWN_VALUE) {
fieldInputs.forEach(el => {
el.addEventListener('click', onConvertFieldClick);
});
}
}
}, 0);
});
});