{{ indexData.name }}
diff --git a/web/src/composables/useLogs.ts b/web/src/composables/useLogs.ts
index 2c158066d0..83019fd907 100644
--- a/web/src/composables/useLogs.ts
+++ b/web/src/composables/useLogs.ts
@@ -3001,7 +3001,12 @@ const useLogs = () => {
});
}
} else {
- if (searchObj.data.hasSearchDataTimestampField == true) {
+ if (
+ searchObj.data.hasSearchDataTimestampField ||
+ searchObj.data.stream.selectedFields.includes(
+ store.state.zoConfig.timestamp_column,
+ )
+ ) {
searchObj.data.resultGrid.columns.unshift({
name: store.state.zoConfig.timestamp_column,
id: store.state.zoConfig.timestamp_column,
diff --git a/web/src/plugins/logs/SearchResult.vue b/web/src/plugins/logs/SearchResult.vue
index 2923d4ea5b..c7506a6fc0 100644
--- a/web/src/plugins/logs/SearchResult.vue
+++ b/web/src/plugins/logs/SearchResult.vue
@@ -253,29 +253,19 @@ export default defineComponent({
},
handleColumnOrderUpdate(newColOrder: string[], columns: any[]) {
// Here we are checking if the columns are default columns ( _timestamp and source)
- // As there can be case where user can have column with source like default source column
- // So checking enableResizing as well as its off for default column
- // If default columns not saving in colOrder
- const updatedColOrder = [...newColOrder];
+ // If selected fields are empty, then we are setting colOrder to empty array as we
+ // don't change the order of default columns
+ // If you store the colOrder it will create issue when you save the view and load it again
- if (updatedColOrder[0] === this.store.state.zoConfig.timestamp_column)
- updatedColOrder.splice(0, 1);
-
- const sourceOrderIndex = updatedColOrder.indexOf("source");
-
- if (sourceOrderIndex > -1) {
- const sourceColIndex = columns.findIndex(
- (col: any) => col.name === "source",
- );
-
- if (columns[sourceColIndex].enableResizing === false) {
- updatedColOrder.splice(sourceOrderIndex, 1);
- }
+ if (!this.searchObj.data.stream.selectedFields.length) {
+ this.searchObj.data.resultGrid.colOrder[
+ this.searchObj.data.stream.selectedStream
+ ] = [];
+ } else {
+ this.searchObj.data.resultGrid.colOrder[
+ this.searchObj.data.stream.selectedStream
+ ] = [...newColOrder];
}
-
- this.searchObj.data.resultGrid.colOrder[
- this.searchObj.data.stream.selectedStream
- ] = [...updatedColOrder];
},
getPageData(actionType: string) {
diff --git a/web/src/utils/dashboard/convertSQLData.ts b/web/src/utils/dashboard/convertSQLData.ts
index e9ad65f0f7..b352016282 100644
--- a/web/src/utils/dashboard/convertSQLData.ts
+++ b/web/src/utils/dashboard/convertSQLData.ts
@@ -939,6 +939,7 @@ export const convertSQLData = async (
data: getMarkLineData(panelSchema),
},
data: getAxisDataFromKey(key),
+ barMinHeight: 1,
};
return seriesObj;
});
@@ -963,6 +964,7 @@ export const convertSQLData = async (
data: getMarkLineData(panelSchema),
},
data: getAxisDataFromKey(key),
+ barMinHeight: 1,
};
return seriesObj;
});
@@ -1144,6 +1146,7 @@ export const convertSQLData = async (
yAxisKeys[0]
] ?? null,
),
+ barMinHeight: 1,
};
return seriesObj;
});
@@ -1353,6 +1356,7 @@ export const convertSQLData = async (
yAxisKeys[0]
] ?? null,
),
+ barMinHeight: 1,
};
return seriesObj;
});
diff --git a/web/src/views/LogStream.vue b/web/src/views/LogStream.vue
index 6b972fd8ee..7c55d8be1c 100644
--- a/web/src/views/LogStream.vue
+++ b/web/src/views/LogStream.vue
@@ -36,17 +36,18 @@ along with this program. If not, see
.
-
+
-
+
-
+
@@ -167,27 +168,25 @@ size="sm" color="secondary" />
/>
-
-
-
-
+
+
@@ -220,8 +219,7 @@ size="sm" color="secondary" />
-
+
{{ t("logStream.cancel") }}
-
+
{{ t("logStream.cancel") }}
{
if (columns.value && !store.state.zoConfig.show_stream_stats_doc_num) {
columns.value = columns.value.filter(
- (column) => column.name !== "doc_num"
+ (column) => column.name !== "doc_num",
);
}
@@ -426,7 +423,7 @@ export default defineComponent({
if (!value) {
onChangeStreamFilter(selectedStreamType.value);
}
- }
+ },
);
const getLogStream = (refresh: boolean = false) => {
@@ -470,7 +467,7 @@ export default defineComponent({
schema: data.schema ? data.schema : [],
stream_type: data.stream_type,
};
- })
+ }),
);
duplicateStreamList.value = [...logStream.value];
@@ -548,7 +545,7 @@ export default defineComponent({
};
const confirmBatchDeleteAction = () => {
confirmBatchDelete.value = true;
- console.log(selected,"selected items")
+ console.log(selected, "selected items");
};
const deleteStream = () => {
@@ -556,7 +553,7 @@ export default defineComponent({
.delete(
store.state.selectedOrganization.identifier,
deleteStreamName,
- deleteStreamType
+ deleteStreamType,
)
.then((res: any) => {
if (res.data.code == 200) {
@@ -565,7 +562,7 @@ export default defineComponent({
message: "Stream deleted successfully.",
});
removeStream(deleteStreamName, deleteStreamType);
- selected.value = []
+ selected.value = [];
getLogStream();
}
})
@@ -574,61 +571,70 @@ export default defineComponent({
color: "negative",
message: "Error while deleting stream.",
});
- })
+ });
};
const deleteBatchStream = () => {
isDeleting.value = true;
- const selectedItems = selected.value
- const promises : Promise[] = [];
+ const selectedItems = selected.value;
+ const promises: Promise[] = [];
- selectedItems.forEach((stream : any) => {
- promises.push(
- streamService.delete(
- store.state.selectedOrganization.identifier,
- stream.name,
- stream.stream_type
- )
- );
- });
-
- Promise.all(promises)
- .then((responses) => {
- const successfulDeletions = responses.filter((res) => res.data.code === 200);
- const failedDeletions = responses.filter((res) => res.data.code !== 200);
-
- if (successfulDeletions.length > 0) {
- $q.notify({
- color: "positive",
- message: `Deleted ${successfulDeletions.length} streams successfully.`,
- });
- }
-
- if (failedDeletions.length > 0) {
- $q.notify({
- color: "negative",
- message: `Failed to delete ${failedDeletions.length} streams.`,
- });
- }
-
- // Remove deleted streams from the list
- console.log(selectedItems,"after deleting streams")
- selectedItems.forEach((stream : any) => {
- removeStream(stream.name, stream.stream_type);
- selected.value = selected.value.filter((item : any) => item.name !== stream.name && item.stream_type !== stream.stream_type);
+ selectedItems.forEach((stream: any) => {
+ promises.push(
+ streamService.delete(
+ store.state.selectedOrganization.identifier,
+ stream.name,
+ stream.stream_type,
+ ),
+ );
});
- getLogStream();
- })
- .catch((error) => {
- console.error(error);
- $q.notify({
- color: "negative",
- message: "Error while deleting streams.",
- });
- }).finally(() => {
- isDeleting.value = false;
- });
-};
+ Promise.all(promises)
+ .then((responses) => {
+ const successfulDeletions = responses.filter(
+ (res) => res.data.code === 200,
+ );
+ const failedDeletions = responses.filter(
+ (res) => res.data.code !== 200,
+ );
+
+ if (successfulDeletions.length > 0) {
+ $q.notify({
+ color: "positive",
+ message: `Deleted ${successfulDeletions.length} streams successfully.`,
+ });
+ }
+
+ if (failedDeletions.length > 0) {
+ $q.notify({
+ color: "negative",
+ message: `Failed to delete ${failedDeletions.length} streams.`,
+ });
+ }
+
+ // Remove deleted streams from the list
+ console.log(selectedItems, "after deleting streams");
+ selectedItems.forEach((stream: any) => {
+ removeStream(stream.name, stream.stream_type);
+ selected.value = selected.value.filter(
+ (item: any) =>
+ item.name !== stream.name &&
+ item.stream_type !== stream.stream_type,
+ );
+ });
+
+ getLogStream();
+ })
+ .catch((error) => {
+ console.error(error);
+ $q.notify({
+ color: "negative",
+ message: "Error while deleting streams.",
+ });
+ })
+ .finally(() => {
+ isDeleting.value = false;
+ });
+ };
onActivated(() => {
if (logStream.value.length > 0) {
@@ -646,10 +652,11 @@ export default defineComponent({
getLogStream();
}
});
- const getSelectedString = () => {
- return selected.value.length === 0 ? '' : `${selected.value.length} record${selected.value.length > 1 ? 's' : ''} selected`
- }
-
+ const getSelectedString = () => {
+ return selected.value.length === 0
+ ? ""
+ : `${selected.value.length} record${selected.value.length > 1 ? "s" : ""} selected`;
+ };
const exploreStream = (props: any) => {
router.push({
@@ -690,14 +697,14 @@ export default defineComponent({
selectedStreamType.value = value;
logStream.value = filterData(
duplicateStreamList.value,
- filterQuery.value.toLowerCase()
+ filterQuery.value.toLowerCase(),
);
resultTotal.value = logStream.value.length;
};
- const getSelectedItems = () =>{
- console.log(selected.value[0],"selected")
- }
+ const getSelectedItems = () => {
+ console.log(selected.value[0], "selected");
+ };
const addStream = () => {
addStreamDialog.value.show = true;
// router.push({
@@ -750,7 +757,6 @@ export default defineComponent({
getSelectedItems,
isDeleting,
};
-
},
});
@@ -762,13 +768,13 @@ export default defineComponent({
justify-content: flex-end;
}
}
-.bottom-bar{
+.bottom-bar {
display: flex;
- width:100%;
+ width: 100%;
justify-content: space-between;
align-items: center;
}
-.delete-btn{
+.delete-btn {
width: 10vw;
}