Skip to content

Commit 0803f94

Browse files
Merge remote-tracking branch 'origin/release.24.12' into journey+content-main
2 parents 5e25b4c + 1d72392 commit 0803f94

File tree

6 files changed

+51
-28
lines changed

6 files changed

+51
-28
lines changed

.github/workflows/main.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ name: CI
66
on:
77
# Triggers the workflow on push or pull request events but only for the master branch
88
pull_request:
9-
branches: [ master, next, release.24.10, release.24.12 ]
9+
branches: [ master, next, release.*, flex ]
1010

1111
# Allows you to run this workflow manually from the Actions tab
1212
workflow_dispatch:

README.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
## 🔗 Quick links
99

1010
* [Countly Website](https://countly.com)
11-
* [Countly Server installation guide](https://support.count.ly/hc/en-us/articles/360036862332-Installing-the-Countly-Server)
12-
* [Countly SDKs, download and documentation links](https://support.count.ly/hc/en-us/articles/360037236571-Downloading-and-Installing-SDKs)
11+
* [Countly Server installation guide](https://support.countly.com/hc/en-us/articles/360036862332-Installing-the-Countly-Server)
12+
* [Countly SDKs, download and documentation links](https://support.countly.com/hc/en-us/articles/360037236571-Downloading-and-Installing-SDKs)
1313
* [Countly Community on Discord](https://discord.gg/countly)
14-
* [User Guides for Countly features](https://support.count.ly/hc/en-us/sections/7039354168729-User-Guides-Countly-22-x)
14+
* [User Guides for Countly features](https://support.countly.com/hc/en-us/sections/360007405211-User-Guides)
1515

1616
## 🌟 What is Countly?
1717

@@ -53,8 +53,8 @@ This repository includes server-side part of Countly, with the following feature
5353

5454
Countly can collect and visualize data from mobile, web and desktop applications. Using the write-API you can send data into Countly from any source. For more information please check the below resources:
5555

56-
* [List of Countly SDKs, documentation and download information](https://support.count.ly/hc/en-us/articles/360037236571-Downloading-and-Installing-SDKs)
57-
* [SDK development guide to build your own SDK](https://support.count.ly/hc/en-us/articles/360037753291-SDK-development-guide)
56+
* [List of Countly SDKs, documentation and download information](https://support.countly.com/hc/en-us/articles/360037236571-Downloading-and-Installing-SDKs)
57+
* [SDK development guide to build your own SDK](https://support.countly.com/hc/en-us/articles/360037753291-SDK-development-guide)
5858
* [Countly Server Write API to send data into Countly from any source](https://api.count.ly/reference/i)
5959

6060
## 🛠️ Installing and upgrading Countly server
@@ -69,15 +69,15 @@ There are several ways to install Countly:
6969

7070
2. For bash lovers, we provide a beautiful installation script (`bin/countly.install.sh`) in countly-server package which installs everything required to run Countly Server. For this, you need a stable release of this repository [available here](https://github.com/Countly/countly-server/releases).
7171

72-
3. Countly Lite also has Docker support - [see our official Docker repository](https://registry.hub.docker.com/r/countly/countly-server/) and [installation instructions for Docker](https://support.count.ly/hc/en-us/articles/360036862332-Installing-the-Countly-Server).
72+
3. Countly Lite also has Docker support - [see our official Docker repository](https://registry.hub.docker.com/r/countly/countly-server/) and [installation instructions for Docker](https://support.countly.com/hc/en-us/articles/360036862332-Installing-the-Countly-Server).
7373

74-
If you want to upgrade Countly from a previous version, please take a look at [upgrading documentation](https://support.count.ly/hc/en-us/articles/360037443652-Upgrading-the-Countly-Server).
74+
If you want to upgrade Countly from a previous version, please take a look at [upgrading documentation](https://support.countly.com/hc/en-us/articles/360037443652-Upgrading-the-Countly-Server).
7575

7676
## 🧩 API, extensibility and plugins
7777

7878
Countly has a [well-defined API](https://api.count.ly), that reads and writes data from/to the Countly backend. Countly dashboard is built using the read API, so it's possible to fetch any information you see on the dashboard using the API.
7979

80-
Countly is extensible using the plugin architecture. If you would like to modify any exiting feature by extending it or changing it, or if you would like to add completely new capabilities to Countly you can modify existing plugins or create new ones. We suggest [you read this document](https://support.count.ly/hc/en-us/articles/360036862392-Introduction) if you would like to start with plugin development.
80+
Countly is extensible using the plugin architecture. If you would like to modify any exiting feature by extending it or changing it, or if you would like to add completely new capabilities to Countly you can modify existing plugins or create new ones. We suggest [you read this document](https://support.countly.com/hc/en-us/articles/360036862392-Introduction) if you would like to start with plugin development.
8181

8282
## 💚 Community
8383

@@ -93,7 +93,7 @@ Security is very important to us. If you discover any issue regarding security,
9393
* **NodeJS** — An open-source, cross-platform JavaScript runtime environment
9494
* **Linux** — What we all love using ;-)
9595

96-
Plus lots of [open source libraries](https://support.count.ly/hc/en-us/articles/360037092232-Open-source-components)!
96+
Plus lots of [open source libraries](https://support.countly.com/hc/en-us/articles/360037092232-Open-source-components)!
9797

9898
## 🤝 How can I help you with your efforts?
9999

api/jobs/topEvents.js

+23-7
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class TopEventsJob extends job.Job {
1919
/**
2020
* TopEvents initialize function
2121
*/
22-
init() {
23-
this.getAllApps();
22+
async init() {
23+
return this.getAllApps();
2424
}
2525

2626
/**
@@ -144,6 +144,7 @@ class TopEventsJob extends job.Job {
144144
}
145145
catch (error) {
146146
log.e("TopEvents Job has a error: ", error);
147+
throw error;
147148
}
148149
}
149150

@@ -157,7 +158,18 @@ class TopEventsJob extends job.Job {
157158
const encodedData = this.encodeEvents(data);
158159
const timeSecond = this.timeSecond();
159160
const currentPeriood = this.mutatePeriod(period);
160-
await new Promise((res, rej) => common.db.collection(TopEventsJob.COLLECTION_NAME).insert({ app_id: _id, ts: timeSecond, period: currentPeriood, data: encodedData, totalCount: totalCount, prevTotalCount: prevTotalCount, totalSum: totalSum, prevTotalSum: prevTotalSum, totalDuration: totalDuration, prevTotalDuration: prevTotalDuration, prevSessionCount: sessionData.prevSessionCount, totalSessionCount: sessionData.totalSessionCount, prevUsersCount: usersData.prevUsersCount, totalUsersCount: usersData.totalUsersCount }, (error, records) => !error && records ? res(records) : rej(error)));
161+
await new Promise((res, rej) => common.db.collection(TopEventsJob.COLLECTION_NAME).findOneAndReplace(
162+
{
163+
app_id: _id, period: currentPeriood,
164+
},
165+
{
166+
app_id: _id, ts: timeSecond, period: currentPeriood, data: encodedData, totalCount: totalCount, prevTotalCount: prevTotalCount, totalSum: totalSum, prevTotalSum: prevTotalSum, totalDuration: totalDuration, prevTotalDuration: prevTotalDuration, prevSessionCount: sessionData.prevSessionCount, totalSessionCount: sessionData.totalSessionCount, prevUsersCount: usersData.prevUsersCount, totalUsersCount: usersData.totalUsersCount
167+
},
168+
{
169+
upsert: true
170+
},
171+
(error, records) => !error && records ? res(records) : rej(error))
172+
);
161173
}
162174

163175
/**
@@ -169,7 +181,6 @@ class TopEventsJob extends job.Job {
169181
const getEvents = await new Promise((res, rej) => common.db.collection("events").findOne({ _id: app._id }, (errorEvents, result) => errorEvents ? rej(errorEvents) : res(result)));
170182
if (getEvents && 'list' in getEvents) {
171183
const eventMap = this.eventsFilter(getEvents.list);
172-
await new Promise((res, rej) => common.db.collection(TopEventsJob.COLLECTION_NAME).remove({ app_id: app._id }, (error, result) => error ? rej(error) : res(result)));
173184
if (eventMap && eventMap instanceof Array) {
174185
for (const period of TopEventsJob.PERIODS) {
175186
const data = {};
@@ -211,9 +222,14 @@ class TopEventsJob extends job.Job {
211222
* @param {Db} db connection
212223
* @param {done} done callback
213224
*/
214-
run(db, done) {
215-
this.init();
216-
done();
225+
async run(db, done) {
226+
try {
227+
await this.init();
228+
done();
229+
}
230+
catch (error) {
231+
done(error);
232+
}
217233
}
218234
}
219235

frontend/express/public/javascripts/countly/vue/components/form.js

+8
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,12 @@
172172
},
173173
prevStep: function() {
174174
this.setStep(this.currentStepIndex - 1, 'prev');
175+
this.scrollToTop();
175176
},
176177
nextStep: function() {
177178
this.beforeLeavingStep("onlyCurrent");
178179
this.setStep(this.currentStepIndex + 1, 'next', !this.isCurrentStepValid);
180+
this.scrollToTop();
179181
},
180182
reset: function() {
181183
var self = this;
@@ -233,6 +235,12 @@
233235
}
234236
});
235237
}
238+
},
239+
scrollToTop: function() {
240+
var container = this.$el.getElementsByClassName("cly-vue-drawer__steps-container")[0];
241+
if (container && container.scrollTop) {
242+
container.scrollTop = 0;
243+
}
236244
}
237245
}
238246
};

package-lock.json

+8-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"express-session": "1.18.1",
5555
"form-data": "^4.0.0",
5656
"formidable": "2.1.1",
57-
"fs-extra": "11.2.0",
57+
"fs-extra": "11.3.0",
5858
"geoip-lite": "1.4.10",
5959
"get-random-values": "^3.0.0",
6060
"grunt": "1.6.1",
@@ -78,7 +78,7 @@
7878
"moment-timezone": "0.5.46",
7979
"mongodb": "6.11.0",
8080
"nginx-conf": "2.1.0",
81-
"nodemailer": "6.9.16",
81+
"nodemailer": "6.10.0",
8282
"object-hash": "3.0.0",
8383
"offline-geocoder": "git+https://github.com/Countly/offline-geocoder.git",
8484
"properties-parser": "0.6.0",

0 commit comments

Comments
 (0)