diff --git a/bin/scripts/fix-data/revenue_plugin_cleanup.js b/bin/scripts/fix-data/revenue_plugin_cleanup.js new file mode 100644 index 00000000000..7ed547c7922 --- /dev/null +++ b/bin/scripts/fix-data/revenue_plugin_cleanup.js @@ -0,0 +1,71 @@ +/** + * Description: + * This script clean up deprecated references to the removed "revenue" plugin in Countly. + * The "revenue" plugin has been deprecated and removed from the Countly and will no longer be supported + * + * This script will: + * - Identify and remove all leftover "revenue"-related widgets, metrics, conditions, or configurations + * from custom dashboards, alerts, and email reports. + * - Disable revenue and performance-monitoring plugins in the plugins configuration. + * + * Server: countly + * Path: $(countly dir)/bin/scripts/revenue_plugin_cleanup.js + * Command: node revenue_plugin_cleanup.js + */ + +var pluginManager = require('./../../../plugins/pluginManager.js'); +var Promise = require("bluebird"); + +Promise.all([pluginManager.dbConnection("countly")]).then(async function([countlyDb]) { + console.log("Starting revenue data cleanup..."); + + try { + // 1. Clean revenue widgets + console.log("Cleaning widgets collection..."); + const widgetsQuery = { "feature": "revenue" }; + const widgetsResult = await countlyDb.collection("widgets").deleteMany(widgetsQuery); + console.log(`Removed ${widgetsResult.deletedCount} revenue widgets from widgets collection`); + + // 2. Clean revenue e-mail reports + console.log("Cleaning reports collection..."); + const reportsQuery = { "metrics.revenue": true }; + const reportsResult = await countlyDb.collection("reports").deleteMany(reportsQuery); + console.log(`Removed ${reportsResult.deletedCount} revenue reports from reports collection`); + + // 3. Clean revenue alerts + console.log("Cleaning alerts collection..."); + const alertsQuery = { "alertDataType": "revenue" }; + const alertsResult = await countlyDb.collection("alerts").deleteMany(alertsQuery); + console.log(`Successfully removed ${alertsResult.deletedCount} revenue alerts from alerts collection`); + + // 4. Disable revenue and performance-monitoring plugins + console.log("Disabling revenue and performance-monitoring plugins..."); + const updateFields = { + "plugins.revenue": false, + "plugins.performance-monitoring": false + }; + + const pluginsResult = await countlyDb.collection("plugins").updateOne( + { _id: "plugins" }, + { $set: updateFields } + ); + + if (pluginsResult.matchedCount > 0) { + console.log("Successfully disabled revenue and performance-monitoring plugins"); + } + else { + console.log("No plugins document found to update"); + } + + console.log("\n\nRevenue data cleanup completed successfully!"); + + } + catch (error) { + console.log("Error during revenue data cleanup:", error); + } + finally { + countlyDb.close(); + } +}).catch(function(error) { + console.log("Database connection error:", error); +}); \ No newline at end of file diff --git a/plugins/alerts/README.md b/plugins/alerts/README.md index a2567227028..a8456957d99 100644 --- a/plugins/alerts/README.md +++ b/plugins/alerts/README.md @@ -14,7 +14,6 @@ alerts/ │ ├── events.js # events alert checker │ ├── nps.js # NPS alert checker │ ├── rating.js # rating alert checker - │ ├── revenue.js # revenue alert checker │ ├── sessions.js # sessions alert checker │ ├── survey.js # survey alert checker │ ├── users.js # users alert checker diff --git a/plugins/alerts/api/alertModules/revenue.js b/plugins/alerts/api/alertModules/revenue.js deleted file mode 100644 index 467818aabe5..00000000000 --- a/plugins/alerts/api/alertModules/revenue.js +++ /dev/null @@ -1,167 +0,0 @@ -/** - * @typedef {import('../parts/common-lib.js').Alert} Alert - * @typedef {import('../parts/common-lib.js').App} App - */ - -const log = require('../../../../api/utils/log.js')('alert:revenue'); -const moment = require('moment-timezone'); -const common = require('../../../../api/utils/common.js'); -const commonLib = require("../parts/common-lib.js"); -const { ObjectId } = require('mongodb'); -const { getEventMetricByDate } = require("./events.js"); -const { getUserMetricByDate } = require("./users.js"); - -const PURCHASE_PROP_KEY = "s"; -const USER_PROP_KEY = "u"; -const PAYING_USER_PROP_KEY = "p"; - -/** - * Alert triggering logic - * All possible metrics: - * - total revenue - * - average revenue per user - * - average revenue per paying user - * - # of paying users - */ -module.exports.check = async({ alertConfigs: alert, done, scheduledTo: date }) => { - const app = await common.readBatcher.getOne("apps", { _id: new ObjectId(alert.selectedApps[0]) }); - if (!app) { - log.e(`App ${alert.selectedApps[0]} couldn't be found`); - return done(); - } - - let { alertDataSubType, period, compareType, compareValue } = alert; - compareValue = Number(compareValue); - - const metricValue = await calculateRevenueMetric(app, alertDataSubType, date, period) || 0; - - if (compareType === commonLib.COMPARE_TYPE_ENUM.MORE_THAN) { - if (metricValue > compareValue) { - await commonLib.trigger({ alert, app, metricValue, date }, log); - } - } - else { - const before = moment(date).subtract(1, commonLib.PERIOD_TO_DATE_COMPONENT_MAP[period]).toDate(); - const metricValueBefore = await calculateRevenueMetric(app, alertDataSubType, before, period); - if (!metricValueBefore) { - return done(); - } - - const change = (metricValue / metricValueBefore - 1) * 100; - const shouldTrigger = compareType === commonLib.COMPARE_TYPE_ENUM.INCREASED_BY - ? change >= compareValue - : change <= -compareValue; - - if (shouldTrigger) { - await commonLib.trigger({ alert, app, date, metricValue, metricValueBefore }, log); - } - } - done(); -}; - -/** - * Abstraction to calculate metrics that requires multiple parameters. - * @param {App} app - app document - * @param {string} metricName - full metric name string. check function body for possible values. - * @param {Date} date - date of the value you're looking for - * @param {string} period - hourly|daily|monthly - * @returns {Promise} - a promise resolves to metric value or undefined - */ -async function calculateRevenueMetric(app, metricName, date, period) { - let metricValue, revenue, users, payingUsers; - switch (metricName) { - case "total revenue": - metricValue = await getRevenueEventMetricByDate(app, PURCHASE_PROP_KEY, date, period); - break; - case "average revenue per user": - users = await getUserMetricByDate(app, USER_PROP_KEY, date, period); - revenue = await getRevenueEventMetricByDate(app, PURCHASE_PROP_KEY, date, period); - if (users && revenue) { - metricValue = revenue / users; - } - break; - case "average revenue per paying user": - payingUsers = await getUserMetricByDate(app, PAYING_USER_PROP_KEY, date, period); - revenue = await getRevenueEventMetricByDate(app, PURCHASE_PROP_KEY, date, period); - if (payingUsers && revenue) { - metricValue = revenue / payingUsers; - } - break; - case "# of paying users": - metricValue = await getUserMetricByDate(app, PAYING_USER_PROP_KEY, date, period); - break; - } - return metricValue; -} - -/** - * Returns the revenue metric value by date and metric type. - * @param {App} app - app document - * @param {string} metric - prop name in event collection: c, s, dur - * @param {Date} date - date of the value you're looking for - * @param {string} period - hourly|daily|monthly - * @returns {Promise} - a promise resolves to metric value or undefined - */ -async function getRevenueEventMetricByDate(app, metric, date, period) { - const events = app.plugins?.revenue?.iap_events; - if (!Array.isArray(events)) { - return; - } - - let result; - for (let eventName of events) { - let value = await getEventMetricByDate(app, eventName, metric, date, period); - if (typeof value !== "number") { - continue; - } - if (typeof result !== "number") { - result = 0; - } - result += value; - } - - return result; -} - -/* -(async function() { - await new Promise(res => setTimeout(res, 2000)); - const date = new Date("2024-01-04T12:47:19.247Z"); - const app = { - _id: "65c1f875a12e98a328d5eb9e", - timezone: "Europe/Istanbul", - plugins: { - revenue: { - iap_events: [ 'Checkout' ] - } - } - }; - - const hourlyRevenue = await calculateRevenueMetric(app, "total revenue", date, "hourly"); - const hourlyRevenuePerUser = await calculateRevenueMetric(app, "average revenue per user", date, "hourly"); - const hourlyRevenuePerPayingUser = await calculateRevenueMetric(app, "average revenue per paying user", date, "hourly"); - const hourlyPayingUsers = await calculateRevenueMetric(app, "# of paying users", date, "hourly"); - console.log("hourly total revenue", date, "is", hourlyRevenue); - console.log("hourly revenue per user on", date, "is", hourlyRevenuePerUser); - console.log("hourly revenue per paying user on", date, "is", hourlyRevenuePerPayingUser); - console.log("hourly paying user on", date, "is", hourlyPayingUsers); - - const dailyRevenue = await calculateRevenueMetric(app, "total revenue", date, "daily"); - const dailyRevenuePerUser = await calculateRevenueMetric(app, "average revenue per user", date, "daily"); - const dailyRevenuePerPayingUser = await calculateRevenueMetric(app, "average revenue per paying user", date, "daily"); - const dailyPayingUsers = await calculateRevenueMetric(app, "# of paying users", date, "daily"); - console.log("daily total revenue", date, "is", dailyRevenue); - console.log("daily revenue per user on", date, "is", dailyRevenuePerUser); - console.log("daily revenue per paying user on", date, "is", dailyRevenuePerPayingUser); - console.log("daily paying user on", date, "is", dailyPayingUsers); - - const monthlyRevenue = await calculateRevenueMetric(app, "total revenue", date, "monthly"); - const monthlyRevenuePerUser = await calculateRevenueMetric(app, "average revenue per user", date, "monthly"); - const monthlyRevenuePerPayingUser = await calculateRevenueMetric(app, "average revenue per paying user", date, "monthly"); - const monthlyPayingUsers = await calculateRevenueMetric(app, "# of paying users", date, "monthly"); - console.log("monthly total revenue", date, "is", monthlyRevenue); - console.log("monthly revenue per user on", date, "is", monthlyRevenuePerUser); - console.log("monthly revenue per paying user on", date, "is", monthlyRevenuePerPayingUser); - console.log("monthly paying user on", date, "is", monthlyPayingUsers); -})(); -*/ \ No newline at end of file diff --git a/plugins/alerts/api/jobs/monitor.js b/plugins/alerts/api/jobs/monitor.js index debe90c19c8..44810758294 100644 --- a/plugins/alerts/api/jobs/monitor.js +++ b/plugins/alerts/api/jobs/monitor.js @@ -12,7 +12,6 @@ const ALERT_MODULES = { "sessions": require("../alertModules/sessions.js"), "survey": require("../alertModules/survey.js"), "nps": require("../alertModules/nps.js"), - "revenue": require("../alertModules/revenue.js"), "events": require("../alertModules/events.js"), "rating": require("../alertModules/rating.js"), "cohorts": require("../alertModules/cohorts.js"), diff --git a/plugins/alerts/frontend/public/javascripts/countly.views.js b/plugins/alerts/frontend/public/javascripts/countly.views.js index 0e390d62eaa..3d1f9ed33c4 100644 --- a/plugins/alerts/frontend/public/javascripts/countly.views.js +++ b/plugins/alerts/frontend/public/javascripts/countly.views.js @@ -179,24 +179,7 @@ label: "# of users in the profile group", }, ], - }, - revenue: { - target: [ - { value: "total revenue", label: "total revenue" }, - { - value: "average revenue per user", - label: "average revenue per user", - }, - { - value: "average revenue per paying user", - label: "average revenue per paying user", - }, - { - value: "# of paying users", - label: "# of paying users", - }, - ], - }, + } }, emailOptions: [ { @@ -330,10 +313,6 @@ value: "profile_groups", }, { label: jQuery.i18n.map["alert.Rating"], value: "rating" }, - { - label: jQuery.i18n.map["alert.Revenue"], - value: "revenue", - }, { label: jQuery.i18n.map["alert.Session"], value: "sessions", @@ -349,9 +328,6 @@ if (!countlyGlobal.plugins.includes("surveys")) { alertDataTypeOptions = alertDataTypeOptions.filter(({ value }) => value !== "survey" && value !== "nps"); } - if (!countlyGlobal.plugins.includes("revenue")) { - alertDataTypeOptions = alertDataTypeOptions.filter(({ value }) => value !== "revenue"); - } if (!countlyGlobal.plugins.includes("cohorts")) { alertDataTypeOptions = alertDataTypeOptions.filter(({ value }) => value !== "cohorts" && value !== "profile_groups"); } @@ -707,8 +683,6 @@ return "cly-io-16 cly-is cly-is-user-group"; case "rating": return "cly-io-16 cly-is cly-is-star"; - case "revenue": - return "cly-io-16 cly-is cly-is-currency-dollar"; case "sessions": return "cly-io-16 cly-is cly-is-clock"; case "survey": diff --git a/plugins/alerts/frontend/public/localization/alerts.properties b/plugins/alerts/frontend/public/localization/alerts.properties index 427a0bd335c..1657d053bfa 100644 --- a/plugins/alerts/frontend/public/localization/alerts.properties +++ b/plugins/alerts/frontend/public/localization/alerts.properties @@ -18,7 +18,6 @@ alert.Data-points=Data Points alert.Online-users=Online Users alert.Cohorts=Cohorts alert.Profile-groups = Profile Groups -alert.Revenue=Revenue alert.Data_type=Data Type alert.For_Application=For Application alert.all-applications=All Applications diff --git a/plugins/reports/api/generate_reports.js b/plugins/reports/api/generate_reports.js index 26051498d59..b4c814b8512 100644 --- a/plugins/reports/api/generate_reports.js +++ b/plugins/reports/api/generate_reports.js @@ -55,7 +55,7 @@ plugins.dbConnection().then((countlyDb) => { for (var i = 0; i < res.length; i++) { if (!res[i].global_admin) { var adminApps = getAdminApps(res[i]); - arr.push({emails: [res[i].email], apps: adminApps || [], metrics: {"analytics": true, "revenue": true, "push": true, "crash": true }, frequency: "daily", hour: 17, minute: 0, day: 1, timezone: "Etc/GMT", user: res[i]._id}); + arr.push({emails: [res[i].email], apps: adminApps || [], metrics: {"analytics": true, "push": true, "crash": true }, frequency: "daily", hour: 17, minute: 0, day: 1, timezone: "Etc/GMT", user: res[i]._id}); } } async.map(arr, function(report, done) { diff --git a/plugins/reports/api/reports.js b/plugins/reports/api/reports.js index 1cc57ae2f0c..c208533d39e 100644 --- a/plugins/reports/api/reports.js +++ b/plugins/reports/api/reports.js @@ -11,7 +11,6 @@ var reportsInstance = {}, fetch = require("../../../api/parts/data/fetch"), countlyCommon = require('../../../api/lib/countly.common.js'), localize = require('../../../api/utils/localization.js'), - common = require('../../../api/utils/common.js'), log = require('../../../api/utils/log')('reports:reports'), versionInfo = require('../../../frontend/express/version.info'), countlyConfig = require('../../../frontend/express/config.js'), @@ -34,11 +33,6 @@ var metrics = { "total_time": true, "avg_time": true, }, - "revenue": { - "paying_users": true, - "purchases_c": true, - "purchases_s": true, - }, "push": { "messaging_users": true, "push_sent": true, @@ -193,11 +187,7 @@ var metricProps = { var parts = metric.split("."); var event = null; //replace with app's iap_key - if (parts[1] === "purchases") { - event = common.dot(params.app, 'plugins.revenue.iap_events'); - event = event && event.length ? event : null; - } - else if (parts[1] === "[CLY]_push_sent" || parts[1] === "[CLY]_push_open" || parts[1] === "[CLY]_push_action") { + if (parts[1] === "[CLY]_push_sent" || parts[1] === "[CLY]_push_open" || parts[1] === "[CLY]_push_action") { if ((params.app.gcm && Object.keys(params.app.gcm).length) || (params.app.apn && Object.keys(params.app.apn).length)) { event = parts[1]; } @@ -241,7 +231,7 @@ var metricProps = { } else { // process in reports plugin - if (["users", "revenue"].indexOf(metric) >= 0) { + if (["users"].indexOf(metric) >= 0) { fetch.getTimeObj(metric, params, {db: db}, function(output) { fetch.getTotalUsersObj(metric, params, function(dbTotalUsersObj) { output.correction = fetch.formatTotalUsersObj(dbTotalUsersObj); @@ -450,15 +440,6 @@ var metricProps = { apps[i].results.analytics = apps[i].results[j]; delete apps[i].results[j]; - let iap_events = common.dot(apps[i], 'plugins.revenue.iap_events'); - if (iap_events && iap_events.length) { - if (!apps[i].results.revenue) { - apps[i].results.revenue = {}; - } - apps[i].results.revenue.paying_users = apps[i].results.analytics.paying_users; - } - delete apps[i].results.analytics.paying_users; - if ((apps[i].gcm && Object.keys(apps[i].gcm).length) || (apps[i].apn && Object.keys(apps[i].apn).length)) { if (!apps[i].results.push) { apps[i].results.push = {}; @@ -478,15 +459,6 @@ var metricProps = { apps[i].results.push[j.replace("[CLY]_", "")] = getEventData(apps[i].results[j] || {}); delete apps[i].results[j]; } - else if (j === "purchases") { - if (!apps[i].results.revenue) { - apps[i].results.revenue = {}; - } - var revenueData = getRevenueData(apps[i].results[j] || {}); - apps[i].results.revenue[j + "_c"] = revenueData.c; - apps[i].results.revenue[j + "_s"] = revenueData.s; - delete apps[i].results[j]; - } else { if (!apps[i].results.events) { apps[i].results.events = {}; @@ -748,9 +720,6 @@ var metricProps = { collections["events.[CLY]_push_sent"] = true; collections["events.[CLY]_push_action"] = true; } - else if (i === "revenue") { - collections["events.purchases"] = true; - } else if (i === "events") { for (let j = 0; j < events.length; j++) { if (events[j].indexOf("[CLY]_") === -1 || events[j].startsWith('[CLY]_group_')) { @@ -782,8 +751,6 @@ var metricProps = { tmp_y, currentTotal = 0, previousTotal = 0, - currentPayingTotal = 0, - previousPayingTotal = 0, currentMsgEnabledTotal = 0, previousMsgEnabledTotal = 0, currentNew = 0, @@ -804,33 +771,24 @@ var metricProps = { tmp_x = countlyCommon.getDescendantProp(_sessionDb, _periodObj.uniquePeriodArr[i]); tmp_x = clearSessionObject(tmp_x); currentUnique += tmp_x.u; - currentPayingTotal += tmp_x.p; currentMsgEnabledTotal += tmp_x.m; } var tmpUniqObj, tmpCurrentUniq = 0, - tmpCurrentPaying = 0, tmpCurrentMsgEnabled = 0; for (let i = 0; i < (_periodObj.uniquePeriodCheckArr.length); i++) { tmpUniqObj = countlyCommon.getDescendantProp(_sessionDb, _periodObj.uniquePeriodCheckArr[i]); tmpUniqObj = clearSessionObject(tmpUniqObj); tmpCurrentUniq += tmpUniqObj.u; - tmpCurrentPaying += tmpUniqObj.p; tmpCurrentMsgEnabled += tmpUniqObj.m; } - //console.log(currentPayingTotal + " " + tmpCurrentPaying) - if (currentUnique > tmpCurrentUniq) { currentUnique = tmpCurrentUniq; } - if (currentPayingTotal > tmpCurrentPaying) { - currentPayingTotal = tmpCurrentPaying; - } - if (currentMsgEnabledTotal > tmpCurrentMsgEnabled) { currentMsgEnabledTotal = tmpCurrentMsgEnabled; } @@ -839,29 +797,22 @@ var metricProps = { tmp_y = countlyCommon.getDescendantProp(_sessionDb, _periodObj.previousUniquePeriodArr[i]); tmp_y = clearSessionObject(tmp_y); previousUnique += tmp_y.u; - previousPayingTotal += tmp_y.p; previousMsgEnabledTotal += tmp_y.m; } var tmpUniqObj2, - tmpPreviousUniq = 0, - tmpPreviousPaying = 0; + tmpPreviousUniq = 0; for (let i = 0; i < (_periodObj.previousUniquePeriodCheckArr.length); i++) { tmpUniqObj2 = countlyCommon.getDescendantProp(_sessionDb, _periodObj.previousUniquePeriodCheckArr[i]); tmpUniqObj2 = clearSessionObject(tmpUniqObj2); tmpPreviousUniq += tmpUniqObj2.u; - tmpPreviousPaying += tmpUniqObj2.p; } if (previousUnique > tmpPreviousUniq) { previousUnique = tmpPreviousUniq; } - if (previousPayingTotal > tmpPreviousPaying) { - previousPayingTotal = tmpPreviousPaying; - } - if (currentMsgEnabledTotal > tmpCurrentMsgEnabled) { currentMsgEnabledTotal = tmpCurrentMsgEnabled; } @@ -898,8 +849,6 @@ var metricProps = { previousDuration = tmp_y.d; currentEvents = tmp_x.e; previousEvents = tmp_y.e; - currentPayingTotal = tmp_x.p; - previousPayingTotal = tmp_y.p; currentMsgEnabledTotal = tmp_x.m; previousMsgEnabledTotal = tmp_y.m; } @@ -934,7 +883,6 @@ var metricProps = { changeReturning = countlyCommon.getPercentChange((previousUnique - previousNew), (currentUnique - currentNew)), changeEvents = countlyCommon.getPercentChange(previousEvents, currentEvents), changeEventsPerUser = countlyCommon.getPercentChange(previousEventsPerUser, eventsPerUser), - changePaying = countlyCommon.getPercentChange(previousPayingTotal, currentPayingTotal), changeMsgEnabled = countlyCommon.getPercentChange(previousMsgEnabledTotal, currentMsgEnabledTotal); var timeSpentString = (sessionDuration.toFixed(1)) + " min"; @@ -958,13 +906,6 @@ var metricProps = { "change": changeTotal.percent, "trend": changeTotal.trend }, - "paying_users": { - "total": currentPayingTotal, - "prev-total": previousPayingTotal, - "change": changePaying.percent, - "trend": changePaying.trend, - "isEstimate": isEstimate - }, "total_users": { "total": currentUnique, "prev-total": previousUnique, @@ -1168,74 +1109,6 @@ var metricProps = { }; } - /** - * get revenue chart data - * @param {object} eventDb - event data - * @return {object} - return revenu data chart object - */ - function getRevenueData(eventDb) { - _periodObj = countlyCommon.periodObj; - - if (!eventDb) { - return { - c: { - total: 0, - change: 'NA', - trend: 'u', - sparkline: '0,0' - }, - s: { - total: 0, - change: 'NA', - trend: 'u', - sparkline: '0,0' - } - }; - } - - var total = { - c: 0, - pc: 0, - s: 0, - ps: 0 - }; - - if (_periodObj.isSpecialPeriod) { - for (var i = 0; i < (_periodObj.currentPeriodArr.length); i++) { - let tmpObj = countlyCommon.getDescendantProp(eventDb, _periodObj.currentPeriodArr[i]); - total.c += (tmpObj && tmpObj.c) ? tmpObj.c : 0; - total.s += (tmpObj && tmpObj.s) ? tmpObj.s : 0; - let tmpObj2 = countlyCommon.getDescendantProp(eventDb, _periodObj.previousPeriodArr[i]); - total.pc += (tmpObj2 && tmpObj2.c) ? tmpObj2.c : 0; - total.ps += (tmpObj2 && tmpObj2.s) ? tmpObj2.s : 0; - } - } - else { - let tmpObj = countlyCommon.getDescendantProp(eventDb, _periodObj.activePeriod); - total.c = (tmpObj && tmpObj.c) ? tmpObj.c : 0; - total.s = (tmpObj && tmpObj.s) ? tmpObj.s : 0; - let tmpObj2 = countlyCommon.getDescendantProp(eventDb, _periodObj.previousPeriod); - total.pc = (tmpObj2 && tmpObj2.c) ? tmpObj2.c : 0; - total.ps = (tmpObj2 && tmpObj2.s) ? tmpObj2.s : 0; - } - - var changeTotalCount = countlyCommon.getPercentChange(total.pc, total.c); - var changeTotalSum = countlyCommon.getPercentChange(total.ps, total.s); - - return { - c: { - "total": total.c, - "change": changeTotalCount.percent, - "trend": changeTotalCount.trend - }, - s: { - "total": total.s.toFixed(2), - "change": changeTotalSum.percent, - "trend": changeTotalSum.trend - } - }; - } - /** * get event count * @param {object} eventDb - event data diff --git a/plugins/reports/frontend/public/javascripts/countly.models.js b/plugins/reports/frontend/public/javascripts/countly.models.js index 74f48f0625e..4465712e51e 100644 --- a/plugins/reports/frontend/public/javascripts/countly.models.js +++ b/plugins/reports/frontend/public/javascripts/countly.models.js @@ -15,7 +15,6 @@ var _metrics = [ {name: jQuery.i18n.map["reports.analytics"], value: "analytics"}, {name: jQuery.i18n.map["reports.events"], value: "events"}, - {name: jQuery.i18n.map["reports.revenue"], value: "revenue"}, {name: jQuery.i18n.map["reports.crash"], value: "crash"}, ]; diff --git a/plugins/reports/frontend/public/javascripts/countly.views.js b/plugins/reports/frontend/public/javascripts/countly.views.js index b3bc5edf80c..cbea6409af8 100644 --- a/plugins/reports/frontend/public/javascripts/countly.views.js +++ b/plugins/reports/frontend/public/javascripts/countly.views.js @@ -146,7 +146,6 @@ var metricOptions = [ {label: jQuery.i18n.map["reports.analytics"], value: "analytics"}, {label: jQuery.i18n.map["reports.events"], value: "events"}, - {label: jQuery.i18n.map["reports.revenue"], value: "revenue"}, {label: jQuery.i18n.map["reports.crash"], value: "crash"}, ]; diff --git a/plugins/reports/frontend/public/localization/reports.properties b/plugins/reports/frontend/public/localization/reports.properties index 715fc47d6e8..2be2e143239 100644 --- a/plugins/reports/frontend/public/localization/reports.properties +++ b/plugins/reports/frontend/public/localization/reports.properties @@ -41,7 +41,6 @@ reports.help-apps = Select at least one app reports.analytics = Analytics reports.events = Events reports.views = Views -reports.revenue = Revenue reports.push = Push reports.crash = Crash reports.total_sessions = Total Sessions