Skip to content

Commit acbf236

Browse files
author
Emre Üstere
committed
events and event conditions
1 parent c30f8c3 commit acbf236

File tree

2 files changed

+40
-5
lines changed

2 files changed

+40
-5
lines changed

plugins/populator/frontend/public/javascripts/countly.common.components.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,8 @@
571571
onAddEventSegmentation: function(index) {
572572
this.events[index].segmentations.push({
573573
"key": "",
574-
"values": [{key: "", probability: 0}],
574+
"values": [{key: "", probability: 100}],
575+
"isProbabilitiesEqual": true,
575576
});
576577
},
577578
checkRemoveValue: function(key, value, index) {
@@ -628,6 +629,7 @@
628629
return;
629630
}
630631
this.events[index].segmentations[segmentIndex].values.splice(valueIndex, 1);
632+
this.calculateSegmentProbabilities(index, segmentIndex);
631633
}
632634
catch (error) {
633635
CountlyHelpers.notify({
@@ -640,6 +642,7 @@
640642
onAddAnotherValue: function(index, segmentIndex) {
641643
try {
642644
this.events[index].segmentations[segmentIndex].values.push({key: "", probability: 0});
645+
this.calculateSegmentProbabilities(index, segmentIndex);
643646
}
644647
catch (error) {
645648
CountlyHelpers.notify({
@@ -651,6 +654,7 @@
651654
},
652655
onAddAnotherConditionValue: function(index, segmentIndex, conditionIndex) {
653656
this.events[index].segmentations[segmentIndex].conditions[conditionIndex].values.push({key: "", probability: 0});
657+
this.calculateConditionProbabilities(index, segmentIndex, conditionIndex);
654658
},
655659
onRemoveConditionValue: function(index, segmentIndex, valueIndex, conditionIndex) {
656660
try {
@@ -659,6 +663,7 @@
659663
}
660664
else {
661665
this.events[index].segmentations[segmentIndex].conditions[conditionIndex].values.splice(valueIndex, 1);
666+
this.calculateConditionProbabilities(index, segmentIndex, conditionIndex);
662667
}
663668
}
664669
catch (error) {
@@ -677,6 +682,30 @@
677682
if (item) {
678683
this.conditionPropertyValues = item.values.map(valueItem => valueItem.key || null);
679684
}
685+
},
686+
calculateSegmentProbabilities: function(index, segmentIndex) {
687+
if (this.events[index].segmentations[segmentIndex].isProbabilitiesEqual) {
688+
var valueCount = Object.keys(this.events[index].segmentations[segmentIndex].values).length,
689+
equalProbability = 100 / valueCount;
690+
const updatedValues = this.events[index].segmentations[segmentIndex].values.map(item => ({
691+
...item,
692+
probability: equalProbability // Set the new probability value
693+
}));
694+
this.events[index].segmentations[segmentIndex].values = updatedValues;
695+
this.events[index].segmentations[segmentIndex].probabilitySum = equalProbability * valueCount;
696+
}
697+
},
698+
calculateConditionProbabilities: function(index, segmentIndex, conditionIndex) {
699+
if (this.events[index].segmentations[segmentIndex].conditions[conditionIndex].isProbabilitiesEqual) {
700+
var valueCount = Object.keys(this.events[index].segmentations[segmentIndex].conditions[conditionIndex].values).length,
701+
equalProbability = 100 / valueCount;
702+
const updatedValues = this.events[index].segmentations[segmentIndex].conditions[conditionIndex].values.map(item => ({
703+
...item,
704+
probability: equalProbability // Set the new probability value
705+
}));
706+
this.events[index].segmentations[segmentIndex].conditions[conditionIndex].values = updatedValues;
707+
this.events[index].segmentations[segmentIndex].conditions[conditionIndex].probabilitySum = equalProbability * valueCount;
708+
}
680709
}
681710
},
682711
created() {

plugins/populator/frontend/public/templates/sections/events.html

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,17 @@
6767
</div>
6868
<div>
6969
<div>
70-
<span class="text-smallish bu-has-text-weight-medium">{{i18n('populator-template.probability')}}</span>
70+
<span class="text-smallish bu-has-text-weight-medium">
71+
<el-switch v-model="segment.isProbabilitiesEqual" class="bu-mr-2" @change="calculateSegmentProbabilities(index)"></el-switch>
72+
{{i18n('populator-template.probability')}}
73+
</span>
7174
<cly-tooltip-icon :tooltip="i18n('populator-template.probability-tooltip')" icon="ion ion-help-circled"></cly-tooltip-icon>
7275
</div>
7376
<div v-for="(value, valueIndex) in segment.values">
7477
<div class="bu-is-flex">
7578
<div class="bu-mt-2">
7679
<validation-provider name="probability" rules="required|integer|min_value:0|max_value:100" v-slot="v">
77-
<el-input class="input" v-model="value.probability" :class="{'is-error': v.errors.length > 0}">
80+
<el-input class="input" v-model="value.probability" :class="{'is-error': v.errors.length > 0}" :disabled="!!segment.isProbabilitiesEqual">
7881
<template slot="suffix">
7982
<span class="text-medium color-cool-gray-50">%</span>
8083
</template>
@@ -109,14 +112,17 @@
109112
</div>
110113
<div>
111114
<div>
112-
<span class="text-smallish bu-has-text-weight-medium">{{i18n('populator-template.probability')}}</span>
115+
<span class="text-smallish bu-has-text-weight-medium">
116+
<el-switch v-model="condition.isProbabilitiesEqual" class="bu-mr-2" @change="calculateConditionProbabilities(index, conditionIndex)"></el-switch>
117+
{{i18n('populator-template.probability')}}
118+
</span>
113119
<cly-tooltip-icon :tooltip="i18n('populator-template.probability-tooltip')" icon="ion ion-help-circled"></cly-tooltip-icon>
114120
</div>
115121
<div>
116122
<div class="bu-is-flex" v-for="(segmentValue, segmentValueIndex) in condition.values">
117123
<div class="bu-mt-2">
118124
<validation-provider name="probability" rules="required|integer|min_value:0|max_value:100" v-slot="v">
119-
<el-input class="input" v-model="segmentValue.probability" :class="{'is-error': v.errors.length > 0}">
125+
<el-input class="input" v-model="segmentValue.probability" :class="{'is-error': v.errors.length > 0}" :disabled="!!condition.isProbabilitiesEqual">
120126
<template slot="suffix">
121127
<span class="text-medium color-cool-gray-50">%</span>
122128
</template>

0 commit comments

Comments
 (0)