Skip to content

Commit 81288b3

Browse files
Merge branch 'next' into SER-2097-improve-error-reporting-for-hooks
2 parents dd0dbb5 + 426d597 commit 81288b3

File tree

116 files changed

+8168
-1225
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+8168
-1225
lines changed

api/parts/data/fetch.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1323,7 +1323,7 @@ fetch.fetchEvents = function(params) {
13231323
*/
13241324
fetch.fetchTimeObj = function(collection, params, isCustomEvent, options) {
13251325
fetchTimeObj(collection, params, isCustomEvent, options, function(output) {
1326-
if (params?.qstring?.event) {
1326+
if (params.qstring?.event) {
13271327
output.eventName = params.qstring.event;
13281328
}
13291329
common.returnOutput(params, output);

api/utils/requestProcessor.js

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,44 +1011,46 @@ const processRequest = (params) => {
10111011
catch (SyntaxError) {
10121012
update_array.overview = []; console.log('Parse ' + params.qstring.event_overview + ' JSON failed', params.req.url, params.req.body);
10131013
}
1014-
if (update_array.overview && Array.isArray(update_array.overview) && update_array.overview.length > 12) {
1015-
common.returnMessage(params, 400, "You can't add more than 12 items in overview");
1016-
return;
1017-
}
1018-
//sanitize overview
1019-
var allowedEventKeys = event.list;
1020-
var allowedProperties = ['dur', 'sum', 'count'];
1021-
var propertyNames = {
1022-
'dur': 'Dur',
1023-
'sum': 'Sum',
1024-
'count': 'Count'
1025-
};
1026-
for (let i = 0; i < update_array.overview.length; i++) {
1027-
update_array.overview[i].order = i;
1028-
update_array.overview[i].eventKey = update_array.overview[i].eventKey || "";
1029-
update_array.overview[i].eventProperty = update_array.overview[i].eventProperty || "";
1030-
if (allowedEventKeys.indexOf(update_array.overview[i].eventKey) === -1 || allowedProperties.indexOf(update_array.overview[i].eventProperty) === -1) {
1031-
update_array.overview.splice(i, 1);
1032-
i = i - 1;
1033-
}
1034-
else {
1035-
update_array.overview[i].is_event_group = (typeof update_array.overview[i].is_event_group === 'boolean' && update_array.overview[i].is_event_group) || false;
1036-
update_array.overview[i].eventName = update_array.overview[i].eventName || update_array.overview[i].eventKey;
1037-
update_array.overview[i].propertyName = propertyNames[update_array.overview[i].eventProperty];
1038-
}
1039-
}
1040-
//check for duplicates
1041-
var overview_map = Object.create(null);
1042-
for (let p = 0; p < update_array.overview.length; p++) {
1043-
if (!overview_map[update_array.overview[p].eventKey]) {
1044-
overview_map[update_array.overview[p].eventKey] = {};
1014+
if (update_array.overview && Array.isArray(update_array.overview)) {
1015+
if (update_array.overview.length > 12) {
1016+
common.returnMessage(params, 400, "You can't add more than 12 items in overview");
1017+
return;
10451018
}
1046-
if (!overview_map[update_array.overview[p].eventKey][update_array.overview[p].eventProperty]) {
1047-
overview_map[update_array.overview[p].eventKey][update_array.overview[p].eventProperty] = 1;
1019+
//sanitize overview
1020+
var allowedEventKeys = event.list;
1021+
var allowedProperties = ['dur', 'sum', 'count'];
1022+
var propertyNames = {
1023+
'dur': 'Dur',
1024+
'sum': 'Sum',
1025+
'count': 'Count'
1026+
};
1027+
for (let i = 0; i < update_array.overview.length; i++) {
1028+
update_array.overview[i].order = i;
1029+
update_array.overview[i].eventKey = update_array.overview[i].eventKey || "";
1030+
update_array.overview[i].eventProperty = update_array.overview[i].eventProperty || "";
1031+
if (allowedEventKeys.indexOf(update_array.overview[i].eventKey) === -1 || allowedProperties.indexOf(update_array.overview[i].eventProperty) === -1) {
1032+
update_array.overview.splice(i, 1);
1033+
i = i - 1;
1034+
}
1035+
else {
1036+
update_array.overview[i].is_event_group = (typeof update_array.overview[i].is_event_group === 'boolean' && update_array.overview[i].is_event_group) || false;
1037+
update_array.overview[i].eventName = update_array.overview[i].eventName || update_array.overview[i].eventKey;
1038+
update_array.overview[i].propertyName = propertyNames[update_array.overview[i].eventProperty];
1039+
}
10481040
}
1049-
else {
1050-
update_array.overview.splice(p, 1);
1051-
p = p - 1;
1041+
//check for duplicates
1042+
var overview_map = Object.create(null);
1043+
for (let p = 0; p < update_array.overview.length; p++) {
1044+
if (!overview_map[update_array.overview[p].eventKey]) {
1045+
overview_map[update_array.overview[p].eventKey] = {};
1046+
}
1047+
if (!overview_map[update_array.overview[p].eventKey][update_array.overview[p].eventProperty]) {
1048+
overview_map[update_array.overview[p].eventKey][update_array.overview[p].eventProperty] = 1;
1049+
}
1050+
else {
1051+
update_array.overview.splice(p, 1);
1052+
p = p - 1;
1053+
}
10521054
}
10531055
}
10541056
}
@@ -3657,7 +3659,7 @@ const restartRequest = (params, initiator, done, try_times, fail) => {
36573659
*/
36583660
function processUser(params, initiator, done, try_times) {
36593661
return new Promise((resolve) => {
3660-
if (!params.app_user.uid) {
3662+
if (params && params.app_user && !params.app_user.uid) {
36613663
//first time we see this user, we need to id him with uid
36623664
countlyApi.mgmt.appUsers.getUid(params.app_id, function(err, uid) {
36633665
plugins.dispatch("/i/app_users/create", {
@@ -3716,7 +3718,7 @@ function processUser(params, initiator, done, try_times) {
37163718
});
37173719
}
37183720
//check if device id was changed
3719-
else if (params.qstring.old_device_id && params.qstring.old_device_id !== params.qstring.device_id) {
3721+
else if (params && params.qstring && params.qstring.old_device_id && params.qstring.old_device_id !== params.qstring.device_id) {
37203722
const old_id = common.crypto.createHash('sha1')
37213723
.update(params.qstring.app_key + params.qstring.old_device_id + "")
37223724
.digest('hex');

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -849,6 +849,9 @@
849849
return countlyGlobal.apps[key].plugins.consolidate.includes(self.selectedApp);
850850
}
851851
}) || [];
852+
},
853+
handleCancelForm: function() {
854+
CountlyHelpers.goTo({url: "/manage/apps"});
852855
}
853856
},
854857
mounted: function() {

frontend/express/public/core/app-management/templates/app-management.html

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,22 @@ <h2 class="bu-mb-4" data-test-id="selected-app-name-title"> {{apps[selectedApp]
188188
</cly-inline-form-field>
189189
</div>
190190
</cly-form-step>
191-
<div v-if="newApp" class="bu-has-text-right" @mouseenter="formScope.validate()">
191+
<div v-if="newApp" class="bu-level-right">
192192
<el-button
193-
:disabled="isDisabled() || !formScope.isSubmissionAllowed"
194-
@click="formScope.submit()"
195-
data-test-id="empty-page-create-new-app-button"
196-
type="primary">{{i18n( newApp ? 'common.create' : 'common.apply')}}
193+
@click="handleCancelForm"
194+
data-test-id="create-new-app-cancel-button"
195+
type="secondary"
196+
>
197+
{{i18n('common.cancel')}}
197198
</el-button>
199+
<div class="bu-ml-2" @mouseenter="formScope.validate()">
200+
<el-button
201+
:disabled="isDisabled() || !formScope.isSubmissionAllowed"
202+
@click="formScope.submit()"
203+
data-test-id="empty-page-create-new-app-button"
204+
type="primary">{{i18n( newApp ? 'common.create' : 'common.apply')}}
205+
</el-button>
206+
</div>
198207
</div>
199208
<cly-diff-helper
200209
v-if="!edited"

frontend/express/public/core/date-presets/templates/preset-management.html

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
>
55
<cly-back-link slot="header-top" link="/" :title="i18n('management.preset.back-to-home')"></cly-back-link>
66
<template v-slot:header-right>
7-
<el-button type="success" icon="el-icon-circle-plus" @click="createNewPreset">{{i18n('management.preset.create-button')}}</el-button>
7+
<el-button type="success" icon="el-icon-circle-plus" @click="createNewPreset" data-test-id="new-date-preset-button">{{i18n('management.preset.create-button')}}</el-button>
88
</template>
99
</cly-header>
1010

1111
<cly-main>
1212
<cly-datatable-n
13-
:display-mode="'list'"
13+
test-id="datatable-date-presets"
1414
:rows="rows"
1515
:resizable="true"
1616
:force-loading="isLoading"
@@ -31,8 +31,9 @@
3131
<el-table-column prop="name" :label="i18n('management.preset.column.name')">
3232
<template v-slot="rowScope">
3333
<div class="bu-is-flex">
34-
<span class="has-ellipsis bu-has-text-weight-medium">{{ unescapeHtml(rowScope.row.name) }}</a></span>
34+
<span class="has-ellipsis bu-has-text-weight-medium" :data-test-id="'datatable-date-presets-name-' + rowScope.$index">{{ unescapeHtml(rowScope.row.name) }}</a></span>
3535
<cly-check
36+
:data-test-id="'datatable-date-presets-star-icon-' + rowScope.$index"
3637
class="bu-pl-1"
3738
element-loading-spinner="el-icon-loading"
3839
@input="toggleFav(scope, rowScope.row)"
@@ -42,15 +43,27 @@
4243
</div>
4344
</template>
4445
</el-table-column>
45-
<el-table-column prop="range_label" :label="i18n('management.preset.column.range')"></el-table-column>
46-
<el-table-column prop="owner_name" :label="i18n('management.preset.column.owner')"></el-table-column>
47-
<el-table-column prop="share_with" :formatter="sharingOption" :label="i18n('management.preset.column.visibility')"></el-table-column>
46+
<el-table-column prop="range_label" :label="i18n('management.preset.column.range')">
47+
<template v-slot="rowScope">
48+
<span class="has-ellipsis" :data-test-id="'datatable-date-presets-range-' + rowScope.$index">{{ rowScope.row.range_label }}</span>
49+
</template>
50+
</el-table-column>
51+
<el-table-column prop="owner_name" :label="i18n('management.preset.column.owner')">
52+
<template v-slot="rowScope">
53+
<span class="has-ellipsis" :data-test-id="'datatable-date-presets-owner-' + rowScope.$index">{{ rowScope.row.owner_name }}</span>
54+
</template>
55+
</el-table-column>
56+
<el-table-column prop="share_with" :formatter="sharingOption" :label="i18n('management.preset.column.visibility')">
57+
<template v-slot="rowScope">
58+
<span class="has-ellipsis" :data-test-id="'datatable-date-presets-visibility-' + rowScope.$index">{{ rowScope.row.share_with }}</span>
59+
</template>
60+
</el-table-column>
4861
<el-table-column type="options" width="90">
4962
<template v-slot="rowScope">
50-
<cly-more-options v-if="rowScope.row.hover" size="small" @command="handleCommand($event, rowScope.row)">
51-
<el-dropdown-item v-if="hasWritePermissions(rowScope.row)" command="edit">{{ i18n('common.edit') }}</el-dropdown-item>
52-
<el-dropdown-item v-if="hasWritePermissions(rowScope.row)" command="duplicate">{{ i18n('common.duplicate') }}</el-dropdown-item>
53-
<el-dropdown-item v-if="hasWritePermissions(rowScope.row)" command="delete">{{ i18n('common.delete') }}</el-dropdown-item>
63+
<cly-more-options v-if="rowScope.row.hover" size="small" @command="handleCommand($event, rowScope.row)" :test-id="'datatable-date-presets-' + rowScope.$index">
64+
<el-dropdown-item v-if="hasWritePermissions(rowScope.row)" :data-test-id="'datatable-more-button-edit-select-' + rowScope.$index" command="edit">{{ i18n('common.edit') }}</el-dropdown-item>
65+
<el-dropdown-item v-if="hasWritePermissions(rowScope.row)" :data-test-id="'datatable-more-button-duplicate-select-' + rowScope.$index" command="duplicate">{{ i18n('common.duplicate') }}</el-dropdown-item>
66+
<el-dropdown-item v-if="hasWritePermissions(rowScope.row)" :data-test-id="'datatable-more-button-delete-select-' + rowScope.$index" command="delete">{{ i18n('common.delete') }}</el-dropdown-item>
5467
</cly-more-options>
5568
</template>
5669
</el-table-column>

frontend/express/public/core/device-and-type/templates/devices-tab.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<div class="bu-p-3">
1616
<div class="bu-level-left bu-p-3 bu-pb-4">
1717
<span class="text-small text-uppercase bu-has-text-weight-medium" :data-test-id="item.title.replaceAll(' ', '-').toLowerCase() + '-label'">{{item.title}}</span>
18-
<span class="cly-vue-tooltip-icon ion ion-help-circled has-tooltip bu-ml-2" v-tooltip.top-center="item.description" :data-test-id="item.title.replaceAll(' ', '-').toLowerCase() + '-tooltip'"></span>
18+
<cly-tooltip-icon class="bu-ml-2" :tooltip="item.description" placement="top-center" :data-test-id="item.title.replaceAll(' ', '-').toLowerCase() + '-tooltip'"></cly-tooltip-icon>
1919
</div>
2020
<div class="topData">
2121
<div v-if="!item.data.length">

frontend/express/public/core/device-and-type/templates/technologyHomeWidget.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<cly-section :class="(idx === 0 || idx === 1)? 'bu-pb-2' : 'bu-pt-2 bu-pb-2'">
66
<div class="bu-level-left bu-p-5">
77
<span class="text-medium text-uppercase" :data-test-id="`cly-section-label-${item.title.toLowerCase().replaceAll(/\s/g, '-')}`">{{item.title}}</span>
8-
<span class="cly-vue-tooltip-icon ion ion-help-circled has-tooltip" :data-test-id="`cly-section-${item.title.toLowerCase().replaceAll(/\s/g, '-')}-tooltip`" style="margin-left:10px" v-tooltip.top-center="item.description"></span>
8+
<cly-tooltip-icon class="bu-ml-2" :tooltip="item.description" placement="top-center" :data-test-id="`cly-section-${item.title.toLowerCase().replaceAll(/\s/g, '-')}-tooltip`"></cly-tooltip-icon>
99
</div>
1010
<div class="topData bu-pl-3 bu-pr-3 bu-pb-5" :data-test-id="`cly-section-${item.title.toLowerCase().replaceAll(/\s/g, '-')}-data-block`">
1111
<div :key="idx2" v-for="(item2, idx2) in item.data" >

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,7 @@
10811081
.then(function(resp) {
10821082
if (resp) {
10831083
context.commit("setSelectedEventsOverview", countlyAllEvents.helpers.getSelectedEventsOverview(context, resp) || {});
1084-
context.commit("setLegendData", countlyAllEvents.helpers.getLegendData(context || {}));
1084+
context.commit("setLegendData", countlyAllEvents.helpers.getLegendData(context));
10851085
}
10861086
});
10871087
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@
107107
return monitorData;
108108
},
109109
getOverviewConfigureList: function(eventsList, groupList) {
110-
var map = eventsList.map || {};
111110
var allEvents = [];
112111
if (eventsList && eventsList.list) {
112+
var map = eventsList.map || {};
113113
eventsList.list.forEach(function(item) {
114114
if (!map[item] || (map[item] && (map[item].is_visible || map[item].is_visible === undefined))) {
115115
var label;
@@ -141,9 +141,9 @@
141141
return allEvents;
142142
},
143143
getEventMapping: function(eventsList, groupList) {
144-
var map = eventsList.map || {};
145144
var mapping = {};
146145
if (eventsList && eventsList.list) {
146+
var map = eventsList.map || {};
147147
eventsList.list.forEach(function(item) {
148148
var obj = {
149149
"eventKey": item,

frontend/express/public/core/home/templates/sessionsWidget.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<div class="bu-is-flex bu-is-flex-direction-column bu-is-justify-content-space-between">
88
<div>
99
<span class="text-medium">{{item.label}}</span>
10-
<span v-if="item.description" class="cly-vue-tooltip-icon ion ion-help-circled bu-pl-2" v-tooltip.top-center="item.description"></span>
10+
<cly-tooltip-icon v-if="item.description" class="bu-pl-2" :tooltip="item.description" placement="top-center"></cly-tooltip-icon>
1111
</div>
1212
</div>
1313
<div class="bu-is-flex bu-is-align-items-baseline number">

0 commit comments

Comments
 (0)