Skip to content

Commit 9124635

Browse files
authored
fix: fixed saved views functionality for metrics and traces stream type in logs page (#2592)
fix #2588
1 parent aeb17e0 commit 9124635

File tree

2 files changed

+75
-9
lines changed

2 files changed

+75
-9
lines changed

web/src/composables/useLogs.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,7 @@ const useLogs = () => {
642642
// searchObj.data.searchAround.histogramHide = false;
643643
// searchObj.meta.showHistogram = true;
644644
// }
645+
645646
const queryReq = buildSearch();
646647

647648
if (queryReq != null) {
@@ -1452,6 +1453,7 @@ const useLogs = () => {
14521453
onStreamChange,
14531454
generateURLQuery,
14541455
buildSearch,
1456+
loadStreamLists,
14551457
};
14561458
};
14571459

web/src/plugins/logs/SearchBar.vue

Lines changed: 73 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
7979
side
8080
@click.stop="handleDeleteSavedView(item)"
8181
>
82-
<q-icon name="delete"
83-
color="grey" size="xs" />
82+
<q-icon name="delete" color="grey" size="xs" />
8483
</q-item-section>
8584
</q-item>
8685
</div>
@@ -192,8 +191,7 @@ color="grey" size="xs" />
192191
</q-item-section>
193192
</q-item>
194193
<q-separator />
195-
<q-item class="q-pa-sm saved-view-item"
196-
clickable v-close-popup>
194+
<q-item class="q-pa-sm saved-view-item" clickable v-close-popup>
197195
<q-item-section
198196
@click.stop="toggleCustomDownloadDialog"
199197
v-close-popup
@@ -647,6 +645,7 @@ import useSqlSuggestions from "@/composables/useSuggestions";
647645
import { mergeDeep, b64DecodeUnicode, getImageURL } from "@/utils/zincutils";
648646
import savedviewsService from "@/services/saved_views";
649647
import ConfirmDialog from "@/components/ConfirmDialog.vue";
648+
import { cloneDeep } from "lodash-es";
650649

651650
const defaultValue: any = () => {
652651
return {
@@ -775,6 +774,7 @@ export default defineComponent({
775774
generateURLQuery,
776775
buildSearch,
777776
resetStreamData,
777+
loadStreamLists,
778778
} = useLogs();
779779
const queryEditorRef = ref(null);
780780

@@ -955,7 +955,6 @@ export default defineComponent({
955955
};
956956

957957
const downloadLogs = (data) => {
958-
console.log(data);
959958
const filename = "logs-data.csv";
960959
const dataobj = jsonToCsv(data);
961960
const file = new File([dataobj], filename, {
@@ -1408,7 +1407,68 @@ export default defineComponent({
14081407
await updatedLocalLogFilterField();
14091408
await getStreams("logs", true);
14101409
} else {
1410+
// ----- Here we are explicitly handling stream change -----
14111411
resetStreamData();
1412+
searchObj.data.stream.streamType =
1413+
extractedObj.data.stream.streamType;
1414+
// Here copying selected stream object, as in loadStreamLists() we are setting selected stream object to empty object
1415+
// After loading stream list, we are setting selected stream object to copied object
1416+
const selectedStream = cloneDeep(
1417+
extractedObj.data.stream.selectedStream
1418+
);
1419+
1420+
extractedObj.data.transforms = searchObj.data.transforms;
1421+
extractedObj.data.histogram = {
1422+
xData: [],
1423+
yData: [],
1424+
chartParams: {},
1425+
};
1426+
extractedObj.data.savedViews = searchObj.data.savedViews;
1427+
extractedObj.data.queryResults = [];
1428+
extractedObj.meta.scrollInfo = {};
1429+
1430+
searchObj.value = mergeDeep(searchObj, extractedObj);
1431+
searchObj.data.streamResults = {};
1432+
1433+
const streamData = await getStreams(
1434+
searchObj.data.stream.streamType,
1435+
true
1436+
);
1437+
searchObj.data.streamResults = streamData;
1438+
await loadStreamLists();
1439+
searchObj.data.stream.selectedStream = selectedStream;
1440+
// searchObj.value = mergeDeep(searchObj, extractedObj);
1441+
1442+
await nextTick();
1443+
if (extractedObj.data.tempFunctionContent != "") {
1444+
populateFunctionImplementation(
1445+
{
1446+
name: "",
1447+
function: searchObj.data.tempFunctionContent,
1448+
},
1449+
false
1450+
);
1451+
searchObj.data.tempFunctionContent =
1452+
extractedObj.data.tempFunctionContent;
1453+
searchObj.meta.functionEditorPlaceholderFlag = false;
1454+
} else {
1455+
populateFunctionImplementation(
1456+
{
1457+
name: "",
1458+
function: "",
1459+
},
1460+
false
1461+
);
1462+
searchObj.data.tempFunctionContent = "";
1463+
searchObj.meta.functionEditorPlaceholderFlag = true;
1464+
}
1465+
dateTimeRef.value.setSavedDate(searchObj.data.datetime);
1466+
if (searchObj.meta.refreshInterval != "0") {
1467+
onRefreshIntervalUpdate();
1468+
} else {
1469+
clearInterval(store.state.refreshIntervalID);
1470+
}
1471+
await updatedLocalLogFilterField();
14121472
}
14131473
$q.notify({
14141474
message: `${item.view_name} view applied successfully.`,
@@ -1417,10 +1477,14 @@ export default defineComponent({
14171477
timeout: 1000,
14181478
});
14191479
setTimeout(async () => {
1420-
searchObj.loading = true;
1421-
await getQueryData();
1422-
store.dispatch("setSavedViewFlag", false);
1423-
updateUrlQueryParams();
1480+
try {
1481+
searchObj.loading = true;
1482+
await getQueryData();
1483+
store.dispatch("setSavedViewFlag", false);
1484+
updateUrlQueryParams();
1485+
} catch (e) {
1486+
console.log(e);
1487+
}
14241488
}, 1000);
14251489

14261490
// } else {

0 commit comments

Comments
 (0)