diff --git a/web/src/components/alerts/add.vue b/web/src/components/alerts/add.vue index 9a28f4d743..9126091ffe 100644 --- a/web/src/components/alerts/add.vue +++ b/web/src/components/alerts/add.vue @@ -27,103 +27,239 @@
- + - + :rules="[(val: any) => !!val || 'Field is required!']" + />
- - + +
-
+
{{ t("alerts.sql") }}:
-
+
{{ t("alerts.condition") }}:
- +
- +
- +
-
+
{{ t("alerts.duration") }}:
-
+
- +
- +
-
+
{{ t("alerts.interval") }}:
-
+
- +
- +
-
+
{{ t("alerts.delayNotificationUntil") }}:
-
+
- +
- +
- +
- - + +
-
+
+ + diff --git a/web/src/components/logstream/schema.vue b/web/src/components/logstream/schema.vue index 4cd3f0d6d0..c62d7730e1 100644 --- a/web/src/components/logstream/schema.vue +++ b/web/src/components/logstream/schema.vue @@ -165,6 +165,7 @@ import { useI18n } from "vue-i18n"; import { useStore } from "vuex"; import { useQuasar, date, format } from "quasar"; import indexService from "../../services/index"; +import segment from "../../services/segment_analytics"; const defaultValue: any = () => { return { @@ -281,6 +282,13 @@ export default defineComponent({ ) .then((res) => { getSchema(); + segment.track("Button Click", { + button: "Update Settings", + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + stream_name: indexData.value.name, + page: "Schema Details", + }); dismiss(); }); }; diff --git a/web/src/layouts/MainLayout.vue b/web/src/layouts/MainLayout.vue index 67dfcc5272..2601c607cc 100644 --- a/web/src/layouts/MainLayout.vue +++ b/web/src/layouts/MainLayout.vue @@ -198,7 +198,7 @@ import { getUserInfo, } from "../utils/zincutils"; -import { ref } from "vue"; +import { ref, defineComponent } from "vue"; import { useStore } from "vuex"; import { useRouter } from "vue-router"; import organizationService from "../services/organizations"; @@ -206,7 +206,7 @@ import config from "../aws-exports"; import Tracker from "@openreplay/tracker"; import configService from "../services/config"; -export default { +export default defineComponent({ name: "MainLayout", components: { @@ -315,7 +315,7 @@ export default { ]; const local = ref(getLocale()); - const selectedLanguage = ref(langList.find((l) => l.code == local.value)); + const selectedLanguage:any = ref(langList.find((l) => l.code == local.value)); if (user.picture == "") { user.picture = "/src/assets/images/common/profile.svg"; @@ -467,7 +467,7 @@ export default { zoBackendUrl, }; }, -}; +}); - diff --git a/web/src/views/Ingestion.vue b/web/src/views/Ingestion.vue index 09ffdd07cd..a803be50c6 100644 --- a/web/src/views/Ingestion.vue +++ b/web/src/views/Ingestion.vue @@ -147,6 +147,7 @@ import organizationsService from "../services/organizations"; // import { config } from "../constants/config"; import config from "../aws-exports"; import ConfirmDialog from "../components/ConfirmDialog.vue"; +import segment from "../services/segment_analytics"; export default defineComponent({ name: "PageIngestion", @@ -182,6 +183,14 @@ export default defineComponent({ ingestiontab.value = router.currentRoute.value.name; router.push({ path: "/ingestion/" + router.currentRoute.value.name }); } + + segment.track("Button Click", { + button: router.currentRoute.value.name, + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + page: "Ingestion", + }); + getOrganizationPasscode(); }); @@ -219,6 +228,14 @@ export default defineComponent({ timeout: 5000, }); }); + + segment.track("Button Click", { + button: "Copy to Clipboard", + ingestion: router.currentRoute.value.name, + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + page: "Ingestion", + }); }; const updatePasscode = () => { @@ -251,6 +268,13 @@ export default defineComponent({ timeout: 5000, }); }); + + segment.track("Button Click", { + button: "Update Passcode", + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + page: "Ingestion", + }); }; const showUpdateDialogFn = () => { @@ -327,4 +351,4 @@ export default defineComponent({ } } } - \ No newline at end of file + diff --git a/web/src/views/LogStream.vue b/web/src/views/LogStream.vue index a3cd5e8183..39ef40ff19 100644 --- a/web/src/views/LogStream.vue +++ b/web/src/views/LogStream.vue @@ -141,6 +141,8 @@ import QTablePagination from "../components/shared/grid/Pagination.vue"; import indexService from "../services/index"; import SchemaIndex from "../components/logstream/schema.vue"; import NoData from "../components/shared/grid/NoData.vue"; +import segment from "../services/segment_analytics"; +import config from "../aws-exports"; export default defineComponent({ name: "PageLogStream", @@ -256,6 +258,13 @@ export default defineComponent({ }); }); } + + segment.track("Button Click", { + button: "Refresh Streams", + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + page: "Streams", + }); }; getLogStream(); @@ -265,6 +274,14 @@ export default defineComponent({ schemaData.value.schema = props.row.schema; schemaData.value.stream_type = props.row.stream_type; showIndexSchemaDialog.value = true; + + segment.track("Button Click", { + button: "Actions", + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + stream_name: props.row.name, + page: "Streams", + }); }; const perPageOptions: any = [ diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue index 647365f28b..e0de636635 100644 --- a/web/src/views/Login.vue +++ b/web/src/views/Login.vue @@ -14,241 +14,16 @@ --> - - diff --git a/web/src/views/User.vue b/web/src/views/User.vue index 0398fd7270..7f60899775 100644 --- a/web/src/views/User.vue +++ b/web/src/views/User.vue @@ -26,23 +26,6 @@ :filter="filterQuery" :filter-method="filterData" > - @@ -84,7 +67,8 @@ />
-
+
- +
-
+
{ - const dismiss = $q.notify({ spinner: true, message: "Please wait while loading users...", }); - usersService.orgUsers(0, 1000, "email", false, "", store.state.selectedOrganization.identifier).then((res) => { - resultTotal.value = res.data.data.length; - // columns.value = columns.value.filter((v: any) => v.name !== "actions"); - let counter = 1; - orgMembers.value = res.data.data.map((data: any) => { - if (store.state.userInfo.email == data.email) { - currentUserRole.value = data.role + usersService + .orgUsers( + 0, + 1000, + "email", + false, + "", + store.state.selectedOrganization.identifier + ) + .then((res) => { + resultTotal.value = res.data.data.length; + if (config.isZincObserveCloud == 'true') { + columns.value = columns.value.filter((v: any) => v.name !== "actions"); } + let counter = 1; + orgMembers.value = res.data.data.map((data: any) => { + if (store.state.userInfo.email == data.email) { + currentUserRole.value = data.role; + } - return { - "#": counter <= 9 ? `0${counter++}` : counter++, - email: data.email, - first_name: data.first_name, - last_name: data.last_name, - role: data.role, - member_created: date.formatDate(parseInt(data.member_created), "YYYY-MM-DDTHH:mm:ssZ"), - member_updated: date.formatDate(parseInt(data.member_updated), "YYYY-MM-DDTHH:mm:ssZ"), - org_member_id: data.org_member_id, - isLoggedinUser: store.state.userInfo.email == data.email - }; + return { + "#": counter <= 9 ? `0${counter++}` : counter++, + email: data.email, + first_name: data.first_name, + last_name: data.last_name, + role: data.role, + member_created: date.formatDate( + parseInt(data.member_created), + "YYYY-MM-DDTHH:mm:ssZ" + ), + member_updated: date.formatDate( + parseInt(data.member_updated), + "YYYY-MM-DDTHH:mm:ssZ" + ), + org_member_id: data.org_member_id, + isLoggedinUser: store.state.userInfo.email == data.email, + }; + }); + + dismiss(); }); - - dismiss(); - }); - }; if (orgMembers.value.length == 0) { @@ -393,7 +400,7 @@ export default defineComponent({ const updateUser = (props: any) => { selectedUser.value = props.row; showUpdateUserDialog.value = true; - } + }; const addUser = (props: any, is_updated: boolean) => { isUpdated.value = is_updated; @@ -404,7 +411,15 @@ export default defineComponent({ } showAddUserDialog.value = true; - } + + segment.track("Button Click", { + button: "Actions", + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + update_user: props.row.email, + page: "Users", + }); + }; const updateMember = (data: any) => { if (data.data != undefined) { @@ -415,7 +430,7 @@ export default defineComponent({ }); showUpdateUserDialog.value = false; } - } + }; const addMember = (res: any, data: any, operationType: string) => { showAddUserDialog.value = false; @@ -444,15 +459,20 @@ export default defineComponent({ }); } } - } + }; const deleteUser = (props: any) => { confirmDelete.value = true; }; const inviteUser = () => { - const emailArray = userEmail.value.split(';').filter((email: any) => email).map((email: any) => email.trim()) - const validationArray = emailArray.map((email: any) => validateEmail(email)) + const emailArray = userEmail.value + .split(";") + .filter((email: any) => email) + .map((email: any) => email.trim()); + const validationArray = emailArray.map((email: any) => + validateEmail(email) + ); if (!validationArray.includes(false)) { const dismiss = $q.notify({ @@ -461,10 +481,11 @@ export default defineComponent({ timeout: 2000, }); - organizationsService.add_members( - { member_lists: emailArray, role: selectedRole.value }, - store.state.selectedOrganization.identifier - ) + organizationsService + .add_members( + { member_lists: emailArray, role: selectedRole.value }, + store.state.selectedOrganization.identifier + ) .then((res: { data: any }) => { const data = res.data; @@ -486,60 +507,78 @@ export default defineComponent({ // this.$emit("updated"); dismiss(); - }).catch(error => { + }) + .catch((error) => { dismiss(); $q.notify({ type: "negative", message: error.message, timeout: 5000, }); - }) + }); userEmail.value = ""; + + segment.track("Button Click", { + button: "Invite User", + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + page: "Users", + }); } else { $q.notify({ type: "negative", message: `Please enter correct email id.`, }); } - } + }; const updateUserRole = (row: any) => { - const dismiss = $q.notify({ spinner: true, message: "Please wait...", timeout: 2000, }); - organizationsService.update_member_role( - { - id: parseInt(row.orgMemberId), - role: row.role, - email: row.email, - organization_id: parseInt(store.state.selectedOrganization.id), - }, - store.state.selectedOrganization.identifier - ).then((res: { data: any }) => { - if (res.data.error_members != null) { - const message = `Error while updating organization member`; - $q.notify({ - type: "negative", - message: message, - timeout: 15000, - }); - } else { - $q.notify({ - type: "positive", - message: "Organization member updated successfully.", - timeout: 3000, - }); - } - dismiss(); - }).catch(error => { - dismiss(); - console.log(error); + organizationsService + .update_member_role( + { + id: parseInt(row.orgMemberId ? row.orgMemberId : row.org_member_id), + role: row.role, + email: row.email, + organization_id: parseInt(store.state.selectedOrganization.id), + }, + store.state.selectedOrganization.identifier + ) + .then((res: { data: any }) => { + if (res.data.error_members != null) { + const message = `Error while updating organization member`; + $q.notify({ + type: "negative", + message: message, + timeout: 15000, + }); + } else { + $q.notify({ + type: "positive", + message: "Organization member updated successfully.", + timeout: 3000, + }); + } + dismiss(); + }) + .catch((error) => { + dismiss(); + console.log(error); + }); + + segment.track("Button Click", { + button: "Update Role", + user_org: store.state.selectedOrganization.identifier, + user_id: store.state.userInfo.email, + update_user: row.email, + page: "Users", }); - } + }; return { t, qTable, @@ -572,7 +611,12 @@ export default defineComponent({ var filtered = []; terms = terms.toLowerCase(); for (var i = 0; i < rows.length; i++) { - if (rows[i]["first_name"]?.toLowerCase().includes(terms) || rows[i]["last_name"]?.toLowerCase().includes(terms) || rows[i]["email"]?.toLowerCase().includes(terms) || rows[i]["role"].toLowerCase().includes(terms)) { + if ( + rows[i]["first_name"]?.toLowerCase().includes(terms) || + rows[i]["last_name"]?.toLowerCase().includes(terms) || + rows[i]["email"]?.toLowerCase().includes(terms) || + rows[i]["role"].toLowerCase().includes(terms) + ) { filtered.push(rows[i]); } } @@ -583,22 +627,25 @@ export default defineComponent({ options, inviteUser, currentUserRole, - updateUserRole + updateUserRole, }; }, computed: { selectedOrg() { - return this.store.state.selectedOrganization.identifier - } + return this.store.state.selectedOrganization.identifier; + }, }, watch: { selectedOrg(newVal: any, oldVal: any) { this.orgData = newVal; - if ((newVal != oldVal || this.orgMembers.value == undefined) && this.router.currentRoute.value.name == "users") { + if ( + (newVal != oldVal || this.orgMembers.value == undefined) && + this.router.currentRoute.value.name == "users" + ) { this.getOrgMembers(); } - } - } + }, + }, });