feat(assist): changed pagination response

feat(assist): allow nested-key sort
feat(api): support new live sessions pagination response
This commit is contained in:
Taha Yassine Kraiem 2022-06-16 11:53:49 +02:00
parent c254aab413
commit fe6a50dc2c
2 changed files with 26 additions and 14 deletions

View file

@ -63,11 +63,12 @@ def __get_live_sessions_ws(project_id, data):
except:
print("couldn't get response")
live_peers = []
for s in live_peers:
_live_peers = live_peers
if "sessions" in live_peers:
_live_peers = live_peers["sessions"]
for s in _live_peers:
s["live"] = True
s["projectId"] = project_id
live_peers = sorted(live_peers, key=lambda l: l.get("timestamp", 0), reverse=True)
return live_peers

View file

@ -136,29 +136,40 @@ const extractPayloadFromRequest = function (req) {
debug && console.log("payload/filters:" + JSON.stringify(filters))
return filters;
}
const sortPaginate = function (list, filters) {
let skey = "timestamp";
if (list.length > 0 && filters.sort.key) {
for (let key of Object.keys(list[0])) {
if (key.toLowerCase() == filters.sort.key.toLowerCase()) {
skey = key;
break;
const getValue = function (obj, key) {
if (obj !== undefined && obj !== null) {
let val;
for (let k of Object.keys(obj)) {
if (typeof (obj[k]) === "object") {
val = getValue(obj[k], key);
} else if (k.toLowerCase() === key.toLowerCase()) {
val = obj[k];
}
if (val !== undefined) {
return val;
}
}
}
return undefined;
}
const sortPaginate = function (list, filters) {
const total = list.length;
list.sort((a, b) => {
return a[skey] > b[skey] ? 1 : a[skey] < b[skey] ? -1 : 0;
})
const vA = getValue(a, filters.sort.key || "timestamp");
const vB = getValue(b, filters.sort.key || "timestamp");
return vA > vB ? 1 : vA < vB ? -1 : 0;
});
if (filters.sort.order) {
list.reverse();
}
if (filters.pagination.page && filters.pagination.limit) {
return list.slice((filters.pagination.page - 1) * filters.pagination.limit,
list = list.slice((filters.pagination.page - 1) * filters.pagination.limit,
filters.pagination.page * filters.pagination.limit);
}
return list;
return {"total": total, "sessions": list};
}
const uniqueAutocomplete = function (list) {
let _list = [];