From 8dca74b03ef2aef7dbe1a5ce487520474df4c1d0 Mon Sep 17 00:00:00 2001 From: Bhargav Date: Mon, 25 Mar 2024 15:12:21 +0530 Subject: [PATCH] fix: added pagination in logs and stream page for schema field list (#3093) --- .../cypress/e2e/tests/logs_queries.cy.js | 4 +- web/src/components/logstream/schema.vue | 337 +++++++++++------- web/src/composables/useLogs.ts | 5 + web/src/plugins/logs/IndexList.vue | 26 +- 4 files changed, 234 insertions(+), 138 deletions(-) diff --git a/tests/ui-testing/cypress/e2e/tests/logs_queries.cy.js b/tests/ui-testing/cypress/e2e/tests/logs_queries.cy.js index 258087106d..0dc0d51ee9 100644 --- a/tests/ui-testing/cypress/e2e/tests/logs_queries.cy.js +++ b/tests/ui-testing/cypress/e2e/tests/logs_queries.cy.js @@ -251,7 +251,7 @@ describe("Logs testcases", () => { cy.get('[data-test="menu-link-/streams-item"]').click({ force: true }); cy.get('[data-test="streams-search-stream-input"]').type("e2e_automate"); - cy.get('[title="Stream Detail"]').click({ force: true }); + cy.get('[title="Stream Detail"]:first').click({ force: true }); cy.get(':nth-child(2) > [data-test="schema-stream-index-select"]').click(); cy.get(".q-virtual-scroll__content").within(() => { cy.contains("Inverted Index").click(); @@ -261,7 +261,7 @@ describe("Logs testcases", () => { force: true, }); cy.get(".col-auto > .q-btn > .q-btn__content").click({ force: true }); - cy.get('[title="Explore"]').click({ force: true }); + cy.get('[title="Explore"]:first').click({ force: true }); cy.get('[data-test="log-table-column-0-@timestamp"]').should("exist"); }); it("should display error if blank spaces added under stream name and clicked create stream ", () => { diff --git a/web/src/components/logstream/schema.vue b/web/src/components/logstream/schema.vue index 81d2d01605..e83fb0a026 100644 --- a/web/src/components/logstream/schema.vue +++ b/web/src/components/logstream/schema.vue @@ -45,7 +45,8 @@ along with this program. If not, see . > No data available. -
+
{{ indexData.name }}
@@ -129,113 +130,133 @@ along with this program. If not, see .
-
- + - - - - - - - - - - + - - - - - - -
{{ t("logStream.deleteActionLabel") }}{{ t("logStream.propertyName") }}{{ t("logStream.propertyType") }} - {{ t("logStream.indexType") }} -
- - {{ schema.name }}{{ schema.type }} - -
+ + + + + + + + +
- -
- - - -
+


@@ -296,6 +317,8 @@ export default defineComponent({ const confirmQueryModeChangeDialog = ref(false); const formDirtyFlag = ref(false); const loadingState = ref(true); + const rowsPerPage = ref(250); + const filterField = ref(""); const streamIndexType = [ { label: "Inverted Index", value: "fullTextSearchKey" }, @@ -328,6 +351,7 @@ export default defineComponent({ }; const deleteFields = async () => { + loadingState.value = true; await streamService .deleteFields( store.state.selectedOrganization.identifier, @@ -335,6 +359,7 @@ export default defineComponent({ deleteFieldList.value ) .then(async (res) => { + loadingState.value = false; if (res.data.code == 200) { q.notify({ color: "positive", @@ -359,6 +384,7 @@ export default defineComponent({ } }) .catch((err: any) => { + loadingState.value = false; console.log(err); q.notify({ color: "negative", @@ -541,6 +567,7 @@ export default defineComponent({ settings.partition_keys.concat(added_part_keys); } + loadingState.value = true; await streamService .updateSettings( store.state.selectedOrganization.identifier, @@ -549,6 +576,7 @@ export default defineComponent({ settings ) .then(async (res) => { + loadingState.value = false; q.notify({ color: "positive", message: "Stream settings updated successfully.", @@ -571,6 +599,7 @@ export default defineComponent({ }); }) .catch((err: any) => { + loadingState.value = false; q.notify({ color: "negative", message: err.response.data.message, @@ -624,6 +653,46 @@ export default defineComponent({ return false; }; + const filterFieldFn = (rows: any, terms: any) => { + var filtered = []; + if (terms != "") { + terms = terms.toLowerCase(); + for (var i = 0; i < rows.length; i++) { + if (rows[i]["name"].toLowerCase().includes(terms)) { + filtered.push(rows[i]); + } + } + } + return filtered; + }; + + const columns = [ + { + name: "delete", + label: t("logStream.deleteActionLabel"), + align: "center", + sortable: false, + }, + { + name: "name", + label: t("logStream.propertyName"), + align: "center", + sortable: true, + }, + { + name: "type", + label: t("logStream.propertyType"), + align: "center", + sortable: true, + }, + { + name: "index_type", + label: t("logStream.indexType"), + align: "center", + sortable: false, + }, + ]; + return { t, q, @@ -649,6 +718,10 @@ export default defineComponent({ streamIndexType, disableOptions, loadingState, + filterFieldFn, + rowsPerPage, + filterField, + columns, }; }, created() { @@ -698,7 +771,7 @@ export default defineComponent({ td { font-size: 0.875rem; font-weight: 600; - height: 35px; + height: 25px; padding: 0px 5px; } } @@ -755,39 +828,39 @@ export default defineComponent({ } } -.sticky-buttons { - position: sticky; - bottom: 0px; - margin: 0 auto; - background-color: var(--q-accent); - box-shadow: 6px 6px 18px var(--q-accent); - justify-content: right; - width: 100%; - padding-right: 20px; -} +// .sticky-buttons { +// position: sticky; +// bottom: 0px; +// margin: 0 auto; +// background-color: var(--q-accent); +// box-shadow: 6px 6px 18px var(--q-accent); +// justify-content: right; +// width: 100%; +// padding-right: 20px; +// } -.btn-delete { - left: 20px; - position: absolute; -} +// .btn-delete { +// left: 20px; +// position: absolute; +// } -.sticky-table-header { - position: sticky; - top: 0px; - background: var(--q-accent); - z-index: 1; -} +// .sticky-table-header { +// position: sticky; +// top: 0px; +// background: var(--q-accent); +// z-index: 1; +// } -.body--dark { - .sticky-table-header { - background: var(--q-dark); - } +// .body--dark { +// .sticky-table-header { +// background: var(--q-dark); +// } - .sticky-buttons { - background-color: var(--q-dark); - box-shadow: 6px 6px 18px var(--q-dark); - } -} +// .sticky-buttons { +// background-color: var(--q-dark); +// box-shadow: 6px 6px 18px var(--q-dark); +// } +// }