Skip to content

Commit 3f3315c

Browse files
authored
Merge branch 'master' into crash-stats-empty
2 parents 5309a1c + 0eb776b commit 3f3315c

File tree

5 files changed

+279
-3
lines changed

5 files changed

+279
-3
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
## Version 25.03.XX
1+
## Version 25.03.XX
2+
3+
Features:
4+
- [plugins] Add configuration warning tags to settings UI
5+
26
Fixes:
37
- [core] Use correct rights validation for loyality
48
- [crashes] Fix free session for home widget

plugins/plugins/frontend/public/javascripts/countly.models.js

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
var _userConfigsData = {};
88
var _themeList = [];
99
var _graph = {};
10+
var _configWarnings = null;
1011

1112
//Public Methods
1213
countlyPlugins.initialize = function() {
@@ -307,4 +308,237 @@
307308
});
308309
};
309310

311+
// Warning types and their associated colors
312+
var WARNING_TYPES = {
313+
DATA_INGESTION: 'dataIngestion',
314+
UI_FILTERING: 'uiFiltering',
315+
SERVER_PERFORMANCE: 'serverPerformance'
316+
// SECURITY_IMPACT: 'securityImpact' // for the 2nd phase
317+
};
318+
319+
// Tooltip color mappings
320+
var TOOLTIP_COLORS = {
321+
dataIngestion: "color-yellow-100",
322+
uiFiltering: "color-blue-100",
323+
serverPerformance: "color-red-100"
324+
};
325+
326+
/**
327+
* Helper function to create warning objects
328+
* @param {string} type - Warning type
329+
* @param {string} textKey - Warning text key
330+
* @returns {Object} Warning object with type and text
331+
*/
332+
function createWarning(type, textKey) {
333+
return {
334+
type: type,
335+
text: textKey
336+
};
337+
}
338+
339+
// Predefined warning combinations
340+
var WARNING_COMBINATIONS = {
341+
DATA_INGESTION: [
342+
createWarning(WARNING_TYPES.DATA_INGESTION, "configs.tooltip.data-ingestion-warning")
343+
],
344+
UI_FILTERING: [
345+
createWarning(WARNING_TYPES.UI_FILTERING, "configs.tooltip.ui-filtering-warning")
346+
],
347+
SERVER_PERFORMANCE: [
348+
createWarning(WARNING_TYPES.SERVER_PERFORMANCE, "configs.tooltip.server-performance-warning")
349+
]
350+
};
351+
352+
/**
353+
* Initialize configuration warnings
354+
* @returns {Object} Configuration warnings map
355+
*/
356+
function initializeConfigWarnings() {
357+
if (_configWarnings !== null) {
358+
return _configWarnings;
359+
}
360+
361+
var configWarnings = {
362+
// API Core Configurations
363+
"api.trim_trailing_ending_spaces": [
364+
...WARNING_COMBINATIONS.DATA_INGESTION,
365+
...WARNING_COMBINATIONS.UI_FILTERING
366+
],
367+
"api.event_limit": [
368+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
369+
...WARNING_COMBINATIONS.DATA_INGESTION,
370+
...WARNING_COMBINATIONS.UI_FILTERING
371+
],
372+
"api.event_segmentation_limit": [
373+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
374+
...WARNING_COMBINATIONS.DATA_INGESTION,
375+
...WARNING_COMBINATIONS.UI_FILTERING
376+
],
377+
"api.event_segmentation_value_limit": [
378+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
379+
...WARNING_COMBINATIONS.DATA_INGESTION,
380+
...WARNING_COMBINATIONS.UI_FILTERING
381+
],
382+
"api.metric_limit": [
383+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
384+
...WARNING_COMBINATIONS.DATA_INGESTION,
385+
...WARNING_COMBINATIONS.UI_FILTERING
386+
],
387+
"api.session_duration_limit": [
388+
...WARNING_COMBINATIONS.DATA_INGESTION,
389+
...WARNING_COMBINATIONS.UI_FILTERING
390+
],
391+
"api.array_list_limit": [
392+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
393+
...WARNING_COMBINATIONS.DATA_INGESTION,
394+
...WARNING_COMBINATIONS.UI_FILTERING
395+
],
396+
"api.city_data": [
397+
...WARNING_COMBINATIONS.DATA_INGESTION,
398+
...WARNING_COMBINATIONS.UI_FILTERING
399+
],
400+
"api.country_data": [
401+
...WARNING_COMBINATIONS.DATA_INGESTION,
402+
...WARNING_COMBINATIONS.UI_FILTERING
403+
],
404+
405+
// Logging Configurations
406+
"logs.default": WARNING_COMBINATIONS.UI_FILTERING,
407+
408+
// Plugin-specific Configurations
409+
"attribution.segment_value_limit": [
410+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
411+
...WARNING_COMBINATIONS.DATA_INGESTION,
412+
...WARNING_COMBINATIONS.UI_FILTERING
413+
],
414+
415+
"crashes.report_limit": [
416+
...WARNING_COMBINATIONS.UI_FILTERING
417+
],
418+
"crashes.max_custom_field_keys": [
419+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
420+
...WARNING_COMBINATIONS.DATA_INGESTION,
421+
...WARNING_COMBINATIONS.UI_FILTERING
422+
],
423+
"crashes.smart_regexes": WARNING_COMBINATIONS.UI_FILTERING,
424+
425+
"drill.list_limit": [
426+
...WARNING_COMBINATIONS.UI_FILTERING
427+
],
428+
"drill.custom_property_limit": [
429+
...WARNING_COMBINATIONS.UI_FILTERING
430+
],
431+
"drill.projection_limit": [
432+
...WARNING_COMBINATIONS.UI_FILTERING
433+
],
434+
"drill.big_list_limit": [
435+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
436+
...WARNING_COMBINATIONS.DATA_INGESTION,
437+
...WARNING_COMBINATIONS.UI_FILTERING
438+
],
439+
440+
"flows.maxDepth": [
441+
...WARNING_COMBINATIONS.UI_FILTERING
442+
],
443+
"flows.nodesCn": [
444+
...WARNING_COMBINATIONS.UI_FILTERING
445+
],
446+
447+
"hooks.requestLimit": [
448+
...WARNING_COMBINATIONS.DATA_INGESTION
449+
],
450+
451+
"logger.limit": [
452+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
453+
...WARNING_COMBINATIONS.DATA_INGESTION,
454+
...WARNING_COMBINATIONS.UI_FILTERING
455+
],
456+
"logger.state": [
457+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
458+
...WARNING_COMBINATIONS.DATA_INGESTION,
459+
...WARNING_COMBINATIONS.UI_FILTERING
460+
],
461+
462+
"remote-config.conditions_per_paramaeters": [
463+
...WARNING_COMBINATIONS.DATA_INGESTION,
464+
...WARNING_COMBINATIONS.UI_FILTERING
465+
],
466+
"remote-config.maximum_allowed_parameters": [
467+
...WARNING_COMBINATIONS.DATA_INGESTION,
468+
...WARNING_COMBINATIONS.UI_FILTERING
469+
],
470+
471+
"sources.sources_length_limit": [
472+
...WARNING_COMBINATIONS.DATA_INGESTION,
473+
...WARNING_COMBINATIONS.UI_FILTERING
474+
],
475+
476+
"users.custom_prop_limit": [
477+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
478+
...WARNING_COMBINATIONS.DATA_INGESTION,
479+
...WARNING_COMBINATIONS.UI_FILTERING
480+
],
481+
"users.custom_set_limit": [
482+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
483+
...WARNING_COMBINATIONS.DATA_INGESTION,
484+
...WARNING_COMBINATIONS.UI_FILTERING
485+
],
486+
487+
"views.segment_limit": [
488+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
489+
...WARNING_COMBINATIONS.DATA_INGESTION,
490+
...WARNING_COMBINATIONS.UI_FILTERING
491+
],
492+
"views.segment_value_limit": [
493+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
494+
...WARNING_COMBINATIONS.DATA_INGESTION,
495+
...WARNING_COMBINATIONS.UI_FILTERING
496+
],
497+
"views.view_limit": [
498+
...WARNING_COMBINATIONS.SERVER_PERFORMANCE,
499+
...WARNING_COMBINATIONS.DATA_INGESTION,
500+
...WARNING_COMBINATIONS.UI_FILTERING
501+
],
502+
"views.view_name_limit": [
503+
...WARNING_COMBINATIONS.DATA_INGESTION,
504+
...WARNING_COMBINATIONS.UI_FILTERING
505+
],
506+
507+
"data-manager.globalValidationAction": [
508+
...WARNING_COMBINATIONS.DATA_INGESTION,
509+
...WARNING_COMBINATIONS.UI_FILTERING
510+
],
511+
"data-manager.segmentLevelValidationAction": [
512+
...WARNING_COMBINATIONS.DATA_INGESTION,
513+
...WARNING_COMBINATIONS.UI_FILTERING
514+
],
515+
"data-manager.enableDataMasking": [
516+
...WARNING_COMBINATIONS.DATA_INGESTION,
517+
...WARNING_COMBINATIONS.UI_FILTERING
518+
]
519+
};
520+
521+
_configWarnings = configWarnings;
522+
return _configWarnings;
523+
}
524+
525+
countlyPlugins.getConfigWarnings = function(configGroup, key) {
526+
var warnings = initializeConfigWarnings();
527+
var mapKey = configGroup + "." + key;
528+
return warnings[mapKey] || [];
529+
};
530+
531+
countlyPlugins.getTooltipColors = function() {
532+
return TOOLTIP_COLORS;
533+
};
534+
535+
countlyPlugins.getTooltipLabel = function(type) {
536+
var labels = {
537+
dataIngestion: CV.i18n('configs.tooltip.data-ingestion'),
538+
uiFiltering: CV.i18n('configs.tooltip.ui-filtering'),
539+
serverPerformance: CV.i18n('configs.tooltip.server-performance')
540+
};
541+
return labels[type] || 'Unknown Type';
542+
};
543+
310544
}(window.countlyPlugins = window.countlyPlugins || {}, jQuery));

plugins/plugins/frontend/public/javascripts/countly.views.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,17 @@
534534
getConfigType: function(id) {
535535
return this.coreDefaults.includes(id) ? "Core" : "Plugins";
536536
},
537+
getWarningTags(configGroup, key) {
538+
var warnings = countlyPlugins.getConfigWarnings(configGroup, key);
539+
var tooltipColors = countlyPlugins.getTooltipColors();
540+
return warnings.map(function(warning) {
541+
return {
542+
tooltipText: CV.i18n(warning.text),
543+
color: tooltipColors[warning.type],
544+
label: countlyPlugins.getTooltipLabel(warning.type)
545+
};
546+
});
547+
},
537548
checkIfOverwritten: function(id, ns) {
538549
ns = ns || this.selectedConfig;
539550
var configsData = countlyPlugins.getConfigsData();

plugins/plugins/frontend/public/localization/plugins.properties

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,5 +243,12 @@ configs.help.push-proxyuser = (if needed) Username for proxy server HTTP Basic a
243243
configs.help.push-proxypass = (if needed) Password for proxy server HTTP Basic authentication
244244
configs.help.push-proxyunauthorized = (if needed) Allow self signed certificates without CA installed
245245

246+
configs.tooltip.server-performance-warning = Adjusting this value may impact system performance
247+
configs.tooltip.data-ingestion-warning = Adjusting this value may affect data processing
248+
configs.tooltip.ui-filtering-warning = Adjusting this value controls how much data is shown in the UI
249+
configs.tooltip.data-ingestion = Data Processing
250+
configs.tooltip.ui-filtering = UI Display
251+
configs.tooltip.server-performance = Performance Impact
252+
246253
systemlogs.action.change_configs = Setting Changed
247254
systemlogs.action.change_plugins = Plugins Changed

plugins/plugins/frontend/public/templates/configurations.html

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,28 @@ <h3 v-if="predefinedStructure[selectedConfig].groups.length > 1 || group.label"
5151
v-for="key in group.list" :key="key"
5252
class="bu-columns bu-is-vcentered bu-p-5 config-section">
5353
<div class="bu-column bu-is-7">
54-
<p class="bu-has-text-weight-medium" :data-test-id="'settings-title-label-' + key.toLowerCase().replaceAll('_', '-')">{{getLabelName(key)}}</p>
55-
<p class="bu-has-text-weight-normal bu-mt-2" v-html="getHelperLabel(key)" v-if="getHelperLabel(key)" :data-test-id="'settings-description-label-' + key.toLowerCase().replaceAll('_', '-')"></p>
54+
<div
55+
v-if="getWarningTags(selectedConfig, key).length"
56+
class="bu-is-flex bu-is-align-items-center bu-is-justify-content-start bu-mb-2">
57+
<div
58+
v-for="(tag, index) in getWarningTags(selectedConfig, key)"
59+
:key="index"
60+
class="bu-is-flex bu-is-align-items-center bu-is-justify-content-center"
61+
v-tooltip="tag.tooltipText"
62+
>
63+
<i
64+
class="cly-io cly-io-exclamation text-big"
65+
:class="tag.color"
66+
/>
67+
<span class="bu-ml-1 bu-mr-4 text-smallest" :class="tag.color">{{ tag.label }}</span>
68+
</div>
69+
</div>
70+
<div class="bu-has-text-weight-medium bu-is-flex bu-is-align-items-center" :data-test-id="'settings-title-label-' + key.toLowerCase().replaceAll('_', '-')">
71+
<div>
72+
<span class="bu-mr-2"> {{ getLabelName(key) }} </span>
73+
</div>
74+
</div>
75+
<p class="bu-has-text-weight-normal bu-mt-2 bu-mb-0" v-html="getHelperLabel(key)" v-if="getHelperLabel(key)" :data-test-id="'settings-description-label-' + key.toLowerCase().replaceAll('_', '-')"></p>
5676
<div v-if="checkIfOverwritten(key)" class="config-section-overwritten">
5777
<a :href="checkIfOverwritten(key).href" target="_blank">{{checkIfOverwritten(key).label}}</a>
5878
</div>

0 commit comments

Comments
 (0)