From dbdcda26a8010dd7d003be85506b3ef107defc4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz> Date: Wed, 30 Dec 2020 02:19:36 +0100 Subject: [PATCH] Informace o velikosti skupiny clenu --- .gitlab-ci.yml | 2 +- lib/CF/Controller/Websockets.pm | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 99932f9..d1b1588 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,7 +3,7 @@ image: docker:19.03.1 variables: DOCKER_TLS_CERTDIR: "/certs" IMAGE_TAG: $CI_REGISTRY_IMAGE - IMAGE_VER: 1.0.1 + IMAGE_VER: 1.1.0 services: - docker:19.03.1-dind diff --git a/lib/CF/Controller/Websockets.pm b/lib/CF/Controller/Websockets.pm index 8647e9d..789f426 100644 --- a/lib/CF/Controller/Websockets.pm +++ b/lib/CF/Controller/Websockets.pm @@ -3,6 +3,7 @@ package CF::Controller::Websockets; use Mojo::Base 'Mojolicious::Controller'; use Mojo::Pg::PubSub; use Digest::SHA qw(hmac_sha1_hex); +use POSIX qw(ceil); use feature 'signatures'; no warnings qw{ experimental::signatures }; @@ -44,13 +45,18 @@ sub main { my $all = $c->schema->resultset('Socket_view')->count( { is_alive => 't', } ); + my $members = $c->schema->resultset('Socket_view')->count( { is_alive => 't', is_member => 't' } ); + my $group_size = $c->_member_group_size($members); + $c->send({json => { event => 'online_users_updated', payload => { - all => $all, - members => $members, + all => $all, + members => $members, + group_size_full => $group_size->{full}, + group_size_half => $group_size->{half}, }}}); if ( $user ) { @@ -71,4 +77,18 @@ sub main { }); } +sub _member_group_size ($c, $total = 0){ + my $group = 2 * sqrt($total); + my $min = $total / 100; + my $max = $total / 5; + + $group = $min if $group < $min; + $group = $max if $group > $max; + + return { + full => ceil( $group ), + half => ceil( $group/2 ), + }; +} + 1; -- GitLab