Skip to content

Commit 9028c2a

Browse files
committed
Merge branch 'next' into newarchitecture
# Conflicts: # frontend/express/public/javascripts/countly/vue/components/datatable.js # plugins/push/api/proxy.js
2 parents 9ab68b6 + b944239 commit 9028c2a

40 files changed

Lines changed: 1845 additions & 1169 deletions

File tree

CHANGELOG.md

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,43 @@
22
Dependencies:
33
- Remove SQLite
44

5-
## Version 25.03.xx
5+
## Version 25.03.28
6+
Fixes:
7+
- [alerts] Add alert interval validation in the frontend
8+
- [events] Correctly navigate to event groupmin events menu
9+
10+
Enterprise Fixes:
11+
- [applications] Ensure application management list reorders after create/update
12+
- [concurrent_users] Fix email check for alert
13+
- [dashboards] Keep dashboard sidebar sorted alphabetically after additions
14+
- [data-manager] Correctly show last triggered for events if data masking is enabled
15+
16+
## Version 25.03.27
17+
Fixes:
18+
- [core-vis] Fix chart legend click event
19+
- [push] Fixed the options of the request being made during mime detection
20+
- [views] Fix view name that is displayed in view table
21+
- [data-manager] Fix last modified data for event and segment
22+
23+
Enterprise Fixes:
24+
- [concurrent_users] Fix alert threshold comparison
25+
- [dashboards] Add setting to disable public dashboards
26+
- [surveys] Handle multiple survey submission from same user based on survey visibility
27+
- [users] Display user property limits in user profiles when exceeded
28+
- [users] Set correct users widget table rows amount according to selected setting
29+
30+
## Version 25.03.26
631
Fixes:
732
- [push] Fixed timeout setting
833
- [security] Fixed injection possibility on res.expose
934

1035
Enterprise Fixes:
36+
- [data-manager] Fixed bug when merging events with ampersand symbol in the name
1137
- [groups] Add logs for user updates
1238
- [nps] Sort widgets by internal name and search by name or internal name
1339
- [surveys] Change question map log to debug log
1440
- [surveys] Sort widgets by internal name and search by name or internal name
1541

16-
Enterprise Fixes:
17-
- [data-manager] Fixed bug when merging events with ampersand symbol in the name
18-
1942
Dependencies:
2043
- Bump axios from 1.12.2 to 1.13.1 in /plugins/cognito
2144
- Bump csvtojson from 1.1.12 to 2.0.14
@@ -36,6 +59,8 @@ Fixes:
3659
Enterprise Fixes:
3760
- [ab-testing] Add script for fixing variant cohort
3861
- [groups] Fix user permission update after updating user group permission
62+
- [funnels] Fixed delete confirmation using correct button copy
63+
3964
## Version 25.03.24
4065
Fixes:
4166
- [jobs] Fix condition for scheduling alert job

api/parts/data/fetch.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@ fetch.fetchEventGroups = function(params) {
221221
fetch.fetchMergedEventGroups = function(params) {
222222
const { qstring: { event } } = params;
223223
fetch.getMergedEventGroups(params, event, {}, function(result) {
224+
result = result || {};
225+
result.eventName = params.qstring.event;
224226
common.returnOutput(params, result);
225227
});
226228
};

bin/scripts/export-data/setting_limits_and_real_values.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ const DEFAULT_LIMITS = {
1919
view_name_limit: 128,
2020
view_segment_limit: 100,
2121
view_segment_value_limit: 10,
22-
//custom_prop_limit: 20,
23-
custom_property_limit: 20,
22+
custom_prop_limit: 20,
23+
//custom_property_limit: 20,
2424
custom_prop_value_limit: 50,
2525
};
2626
Promise.all([pluginManager.dbConnection("countly"), pluginManager.dbConnection("countly_drill")]).then(async function([countlyDb, drillDb]) {
@@ -56,8 +56,8 @@ Promise.all([pluginManager.dbConnection("countly"), pluginManager.dbConnection("
5656
view_name_limit: pluginsCollectionPlugins?.views?.view_name_limit || DEFAULT_LIMITS.view_name_limit,
5757
view_segment_limit: pluginsCollectionPlugins?.views?.segment_limit || DEFAULT_LIMITS.view_segment_limit,
5858
view_segment_value_limit: pluginsCollectionPlugins?.views?.segment_value_limit || DEFAULT_LIMITS.view_segment_value_limit,
59-
//custom_prop_limit: pluginsCollectionPlugins?.users?.custom_prop_limit || DEFAULT_LIMITS.custom_prop_limit,
60-
custom_property_limit: pluginsCollectionPlugins?.drill?.custom_property_limit || DEFAULT_LIMITS.custom_property_limit,
59+
custom_prop_limit: pluginsCollectionPlugins?.users?.custom_prop_limit || DEFAULT_LIMITS.custom_prop_limit,
60+
//custom_property_limit: pluginsCollectionPlugins?.drill?.custom_property_limit || DEFAULT_LIMITS.custom_property_limit,
6161
custom_prop_value_limit: pluginsCollectionPlugins?.users?.custom_set_limit || DEFAULT_LIMITS.custom_prop_value_limit,
6262
};
6363
// GETTING REAL DATA PER APP
@@ -247,10 +247,10 @@ Promise.all([pluginManager.dbConnection("countly"), pluginManager.dbConnection("
247247
});
248248
app_results['View Segments Unique Values'] = {"default": defaultVal, "set": currentVal, "real": realVal};
249249
// USER PROPERTIES
250-
//defaultVal = DEFAULT_LIMITS.custom_prop_limit;
251-
//currentVal = CURRENT_LIMITS.custom_prop_limit;
252-
defaultVal = DEFAULT_LIMITS.custom_property_limit;
253-
currentVal = CURRENT_LIMITS.custom_property_limit;
250+
defaultVal = DEFAULT_LIMITS.custom_prop_limit;
251+
currentVal = CURRENT_LIMITS.custom_prop_limit;
252+
//defaultVal = DEFAULT_LIMITS.custom_property_limit;
253+
//currentVal = CURRENT_LIMITS.custom_property_limit;
254254
realVal = customPropsPerApp && customPropsPerApp[0]?.customPropertiesCount || 0;
255255
app_results['Max user custom properties'] = {"default": defaultVal, "set": currentVal, "real": realVal};
256256
// VALUES IN AN ARRAY FOR ONE USER PROPERTY

countly-community

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit f772bcd2c0e918dcf337ef3d978efbaa986bd882

frontend/express/public/core/app-management/javascripts/countly.views.js

Lines changed: 60 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,12 @@
5959
value: id
6060
};
6161
});
62-
if (countlyGlobal.member.appSortList) {
63-
appList = this.sortBy(appList, countlyGlobal.member.appSortList);
62+
var sortList = (countlyGlobal.member && countlyGlobal.member.appSortList) || [];
63+
if (sortList.length) {
64+
appList = this.sortBy(appList, sortList);
6465
}
6566
else {
66-
appList.sort(function(a, b) {
67-
return a.label > b.label && 1 || -1;
68-
});
67+
appList.sort(this.sortAppOptionsAlphabetically);
6968
}
7069
var app_id = this.$route.params.app_id || countlyCommon.ACTIVE_APP_ID;
7170
return {
@@ -340,6 +339,56 @@
340339
}
341340
}
342341
},
342+
getAppListItemId: function(option) {
343+
if (!option) {
344+
return "";
345+
}
346+
347+
return (option._id || option.value || option.id || option.app_id || "") + "";
348+
},
349+
sortAppOptionsAlphabetically: function(optionA, optionB) {
350+
var labelA = (optionA.label || "").toLowerCase();
351+
var labelB = (optionB.label || "").toLowerCase();
352+
353+
if (labelA < labelB) {
354+
return -1;
355+
}
356+
357+
if (labelA > labelB) {
358+
return 1;
359+
}
360+
361+
var valueA = (optionA.value || "").toLowerCase();
362+
var valueB = (optionB.value || "").toLowerCase();
363+
364+
if (valueA < valueB) {
365+
return -1;
366+
}
367+
368+
if (valueA > valueB) {
369+
return 1;
370+
}
371+
372+
return 0;
373+
},
374+
applyAppListOrdering: function() {
375+
if (!Array.isArray(this.appList)) {
376+
return;
377+
}
378+
379+
var sortList = (countlyGlobal.member && countlyGlobal.member.appSortList) || [];
380+
var currentList = this.appList.slice();
381+
var orderedList;
382+
383+
if (sortList.length) {
384+
orderedList = this.sortBy(currentList, sortList);
385+
}
386+
else {
387+
orderedList = currentList.sort(this.sortAppOptionsAlphabetically);
388+
}
389+
390+
this.appList = orderedList;
391+
},
343392
sortBy: function(arrayToSort, sortList) {
344393
if (!sortList.length) {
345394
return arrayToSort;
@@ -349,9 +398,10 @@
349398
retArr = [];
350399
var i;
351400
for (i = 0; i < arrayToSort.length; i++) {
352-
var objId = arrayToSort[i]._id + "";
353-
if (sortList.indexOf(objId) !== -1) {
354-
tmpArr[sortList.indexOf(objId)] = arrayToSort[i];
401+
var objId = this.getAppListItemId(arrayToSort[i]);
402+
var desiredIndex = sortList.indexOf(objId);
403+
if (desiredIndex !== -1) {
404+
tmpArr[desiredIndex] = arrayToSort[i];
355405
}
356406
}
357407

@@ -392,6 +442,7 @@
392442
value: data._id + "",
393443
label: data.name
394444
});
445+
self.applyAppListOrdering();
395446
self.$store.dispatch("countlyCommon/addToAllApps", data);
396447
self.$store.dispatch("countlyCommon/updateActiveApp", data._id + "");
397448
countlyCommon.setActiveApp(data._id);
@@ -459,6 +510,7 @@
459510
break;
460511
}
461512
}
513+
self.applyAppListOrdering();
462514
self.discardForm();
463515
CountlyHelpers.notify({
464516
title: jQuery.i18n.map["configs.changed"],

frontend/express/public/core/events/javascripts/countly.details.models.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -920,7 +920,13 @@
920920
res.list = res.list.map(eventName => countlyCommon.unescapeHtml(eventName));
921921
}
922922
context.commit("setAllEventsData", res);
923-
if ((!context.state.selectedEventName) || (res.map && res.map[context.state.selectedEventName] && !res.map[context.state.selectedEventName].is_visible) || (res.list && res.list.indexOf(context.state.selectedEventName) === -1)) {
923+
var is_group = false;
924+
if (context.state.selectedEventName && context.state.selectedEventName.startsWith('[CLY]_group')) {
925+
is_group = true;
926+
}
927+
if ((!context.state.selectedEventName) ||
928+
(res.map && res.map[context.state.selectedEventName] && !res.map[context.state.selectedEventName].is_visible) ||
929+
(res.list && res.list.indexOf(context.state.selectedEventName) === -1 && context.state && !is_group)) {
924930
var appId = countlyCommon.ACTIVE_APP_ID;
925931
var eventKeyForStorage = {};
926932
var eventKey = res.list[0];

0 commit comments

Comments
 (0)