diff --git a/database/Database.php b/database/Database.php index 39fdb1975c51071cde29af41f2b0e71b46cac77b..d6a28c7961acfa12ee34db915f3aee497dee669a 100644 --- a/database/Database.php +++ b/database/Database.php @@ -195,11 +195,11 @@ class Database $stmt->execute(); return [ 'results' => $stmt->fetchAll(\PDO::FETCH_ASSOC), - 'hasmore' => $this->findInBufferCount($query, $since, $before, $bufferid, $offset, $limit) + 'hasmore' => $this->findInBufferCount($query, $since, $before, $sender, $bufferid, $offset, $limit) ]; } - public function findInBufferCount(string $query, int $since = null, int $before = null, string $sender = null, int $bufferid, int $offset = 0, int $limit = 4): array + public function findInBufferCount(string $query, int $since = null, int $before = null, string $sender = null, int $bufferid, int $offset = 0, int $limit = 4): bool { $truncatedLimit = max(min($limit, 50), 0); $ignore_since = $since === null; @@ -223,7 +223,7 @@ class Database $stmt->bindParam(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); - return $stmt->fetchAll(\PDO::FETCH_ASSOC); + return $stmt->fetchColumn(); } public function context(int $anchor, int $buffer, int $loadBefore, int $loadAfter): array diff --git a/database/backends/PostgresSmartBackend.php b/database/backends/PostgresSmartBackend.php index 3030dce08ccfbdf52bccfe7588f5226e8f2813da..cd95adc67ccdd3748f1774afea820c65ef7a5ba3 100644 --- a/database/backends/PostgresSmartBackend.php +++ b/database/backends/PostgresSmartBackend.php @@ -93,7 +93,7 @@ class PostgresSmartBackend implements Backend return $this->db->prepare(" SELECT backlog.bufferid, - COUNT(backlog.messageid) > (:limit::INT + :offset::INT) AS hasmore + COUNT(*) > (:limit::INT + :offset::INT) AS hasmore FROM backlog JOIN buffer ON backlog.bufferid = buffer.bufferid @@ -115,9 +115,6 @@ class PostgresSmartBackend implements Backend { return $this->db->prepare(" SELECT - matching_messages.bufferid, - matching_messages.buffername, - network.networkname, matching_messages.messageid, matching_messages.time, sender.sender, @@ -150,14 +147,12 @@ class PostgresSmartBackend implements Backend AND buffer.bufferid = :bufferid AND (:ignore_since::BOOLEAN OR backlog.time > :since::TIMESTAMP) AND (:ignore_before::BOOLEAN OR backlog.time < :before::TIMESTAMP) - AND (:ignore_buffer::BOOLEAN OR buffer.buffername ~* :buffer) AND backlog.type & 23559 > 0 AND backlog.tsv @@ query ) matching_messages JOIN sender ON matching_messages.senderid = sender.senderid JOIN network ON matching_messages.networkid = network.networkid - WHERE (:ignore_network::BOOLEAN OR network.networkname ~* :network) - AND (:ignore_sender::BOOLEAN OR sender.sender ~* :sender) + WHERE (:ignore_sender::BOOLEAN OR sender.sender ~* :sender) ORDER BY matching_messages.rank_value DESC LIMIT :limit OFFSET :offset @@ -168,8 +163,7 @@ class PostgresSmartBackend implements Backend { return $this->db->prepare(" SELECT - backlog.bufferid, - COUNT(backlog.messageid) > (:limit::INT + :offset::INT) AS hasmore + COUNT(*) > (:limit::INT + :offset::INT) AS hasmore FROM backlog JOIN buffer ON backlog.bufferid = buffer.bufferid diff --git a/res/css/_content.sass b/res/css/_content.sass index c130017f8f6cdeed9b9bf925adad5fa8d4cdc2a3..dd9f971d4d0c60a9e7fe489d0a0795ed7d6415f3 100644 --- a/res/css/_content.sass +++ b/res/css/_content.sass @@ -175,16 +175,32 @@ font-style: italic cursor: pointer @include vendor-prefix('user-select', 'none') - position: sticky - bottom: 0 box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24) transition: height 400ms + position: relative .context + position: relative + .container .before .after + &.active + padding: 0 + margin: 1rem -1rem + + &:before + bottom: 0 + box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24) + content: '' + display: block + left: 0 + pointer-events: none + position: absolute + right: 0 + top: 0 + &:not(.focus) > .before, > .after display: none @@ -199,18 +215,6 @@ border-bottom: 1px solid #e5e5e5 color: #212121 background: #fff - position: relative - - &:before - bottom: 0 - box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24) - content: '' - display: block - left: 0 - pointer-events: none - position: absolute - right: 0 - top: 0 &:last-child border-bottom: none diff --git a/res/css/search.css b/res/css/search.css index 8cac96c5d17dac181e1d0b967586fe81d03f4e3c..52aaae168425883929f794b84bf8e68b1e9978c5 100644 --- a/res/css/search.css +++ b/res/css/search.css @@ -705,10 +705,30 @@ body { -ms-user-select: none; -o-user-select: none; user-select: none; - position: sticky; - bottom: 0; box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24); transition: height 400ms; + position: relative; +} + +.results .buffer .container .context { + position: relative; +} + +.results .buffer .container .context.active { + padding: 0; + margin: 1rem -1rem; +} + +.results .buffer .container .context:before { + bottom: 0; + box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24); + content: ""; + display: block; + left: 0; + pointer-events: none; + position: absolute; + right: 0; + top: 0; } .results .buffer .container .context:not(.focus) > .before, .results .buffer .container .context:not(.focus) > .after { @@ -726,19 +746,6 @@ body { border-bottom: 1px solid #e5e5e5; color: #212121; background: #fff; - position: relative; -} - -.results .buffer .container .context .message:before { - bottom: 0; - box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24); - content: ""; - display: block; - left: 0; - pointer-events: none; - position: absolute; - right: 0; - top: 0; } .results .buffer .container .context .message:last-child { diff --git a/res/css/search.css.map b/res/css/search.css.map index 9e7f155441f818130c5d83cc478226abf172fe5e..2b948f209f65c05bfbe6ebbd09140529022d95be 100644 --- a/res/css/search.css.map +++ b/res/css/search.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": ";EACE,WAAW,EAAE,gBAAgB;EAC7B,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,2KAA2K;AAElL,KAAK;EACH,WAAW,EAAE,4BAA4B;EACzC,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,MAAM;EACtB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,MAAM;EACnB,SAAS,EAAE,GAAG;;EAGd,sBAAsB,EAAE,WAAW;;EAEnC,cAAc,EAAE,kBAAkB;;EAGlC,uBAAuB,EAAE,SAAS;;EAGlC,qBAAqB,EAAE,MAAM;;;EC7B7B,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,4RAA4R;;EAGjS,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,sRAAsR;ACN7R,CAAC;EACC,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,UAAU;EACtB,2BAA2B,EAAE,WAAgB;;AAE/C,IAAI;EACF,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,MAAM;;AAEnB,OAAO;EACL,OAAO,EAAE,IAAI;;AAEf,kBAAkB;EAChB,MAAM,EAAE,CAAC;;AAEX,QAAQ;EACN,UAAU,EAAE,iBAAiB;EAC7B,OAAO,EAAE,eAAe;;ACrB1B,IAAI;EACF,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,CAAC;EAEV,SAAI;IACF,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,4EAA0E;IACtF,UAAU,EAAE,sBAAqB;IACjC,WAAW,EAAE,gBAAgB;IAE7B,oBAAU;MACR,SAAS,EAAE,MAAM;MACjB,MAAM,EAAE,MAAM;MACd,OAAO,EAAE,MAAM;MACf,OAAO,EAAE,IAAI;;EAJf,oBAAU;IAON,OAAO,EAAE,SAAS;MAEpB,+BAAU;QACR,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,OAAO;QACnB,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,OAAO;QACd,cAAc,EAAE,GAAG;QACnB,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,6BAA4B;QACxC,UAAU,EAAE,sBAAqB;QAEjC,qCAAO;UACL,gBAAgB,EAAE,wBAAuB;QAE3C,qCAAK;UACH,OAAO,EAAE,YAAY;UACrB,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,QAAQ,EAAE,QAAQ;UAClB,UAAU,EAAE,MAAM;UAClB,WAAW,EAAE,IAAI;UACjB,IAAI,EAAE,CAAC;UACP,GAAG,EAAE,CAAC;QAER,uCAAO;UACL,OAAO,EAAE,YAAY;UACrB,SAAS,EAAE,CAAC;UACZ,WAAW,EAAE,CAAC;UACd,UAAU,EAAE,IAAI;UAChB,MAAM,EAAE,IAAI;UACZ,WAAW,EAAE,IAAI;UACjB,KAAK,EAAE,OAAO;UACd,SAAS,EAAE,IAAI;UACf,YAAY,EAAE,GAAG;UACjB,kBAAkB,EAAE,SAAS;UAC7B,kBAAkB,EAAE,WAAW;UAE/B,yDAAmB;YACjB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CAAC;YACV,uBAAuB,EAAE,SAAS;UAEpC,kEAA4B;YAC1B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,CAAC;YACV,sBAAsB,EAAE,WAAW;UAErC,yIAA6D;YAC3D,OAAO,EAAE,IAAI;MAEnB,6BAAQ;QACN,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,QAAQ;IAE7B,WAAC;MACC,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,QAAQ;MAClB,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,OAAO;MACf,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,SAAQ;MACpB,eAAe,EAAE,IAAI;MACrB,UAAU,EAAE,MAAM;MChGpB,mBAAkB,EAAE,IAAS;MAA7B,gBAAkB,EAAE,IAAS;MAA7B,eAAkB,EAAE,IAAS;MAA7B,cAAkB,EAAE,IAAS;MAA7B,WAAkB,EAAE,IAAS;MDmG3B,kBAAQ;QACN,gBAAgB,EAAE,yBAAwB;QAC1C,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,GAAG;QACV,GAAG,EAAE,GAAG;QACR,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,GAAG;QAClB,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,aAAa;MAE3B,wBAAc;QACZ,OAAO,EAAE,CAAC;EAEhB,aAAQ;IACN,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,MAAM;IACf,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,eAAe;IAC3B,QAAQ,EAAE,QAAQ;;EAPpB,aAAQ;IAUJ,OAAO,EAAE,CAAC;IAEZ,gBAAE;MACA,eAAe,EAAE,IAAI;MACrB,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,KAAK;MACd,UAAU,EAAE,IAAI;MAChB,UAAU,EAAE,4EAA0E;MAEtF,mBAAE;QACA,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,WAAW,EAAE,MAAM;QAEnB,+EAAyB;UACvB,UAAU,EAAE,mBAAmB;QAEjC,yBAAK;UACH,aAAa,EAAE,IAAI;UACnB,MAAM,EAAE,IAAI;UACZ,YAAY,EAAE,IAAI;UAClB,cAAc,EAAE,MAAM;UACtB,KAAK,EAAE,IAAI;UACX,OAAO,EAAE,YAAY;UACrB,eAAe,EAAE,KAAK;UACtB,OAAO,EAAE,GAAG;MAEhB,kBAAC;QACC,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,OAAO;EAGlB,eAAI;IACF,UAAU,EAAE,OAAO;IAIjB,qCAAU;MACR,UAAU,EAAE,OAAO;MAEnB,6CAAO;QACL,KAAK,EAAE,OAAO;QAEd,+DAAmB;UACjB,KAAK,EAAE,OAAO;QAEhB,wEAA4B;UAC1B,KAAK,EAAE,OAAO;IAEpB,gCAAK;MACH,KAAK,EAAE,OAAO;EAEpB,mBAAQ;IACN,SAAS,EAAE,aAAa;EAE1B,qBAAY;IACV,OAAO,EAAE,CAAC;;AElMhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AAEhB,sBAAsB;EACpB,KAAK,EAAE,OAAO;;AC9ChB,SAAS;EACP,WAAW,EAAE,IAAI;;AAEnB,WAAW;EACT,UAAU,EAAE,MAAM;;AAEpB,cAAc;EACZ,eAAe,EAAE,SAAS;;AAE5B,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,KAAK,EAAE,OAAO;;AAEhB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAEhB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAEhB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAEhB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAEhB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAEhB,0BAA0B;EACxB,KAAK,EAAE,OAAO;;AAEhB,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,yBAAyB;EACvB,gBAAgB,EAAE,OAAO;;AAE3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAE3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAE3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAE3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAE3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;AAE3B,0BAA0B;EACxB,gBAAgB,EAAE,OAAO;;ACnG3B,QAAQ;EACN,SAAS,EAAE,MAAM;EACjB,OAAO,EAAE,mBAAmB;EAC5B,MAAM,EAAE,MAAM;EAEd,UAAU,EAAE,aAAa;;EAL3B,QAAQ;IAQJ,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;EAEnB,gBAAO;IACL,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAElB,uBAAM;MACJ,aAAa,EAAE,qBAAqB;MACpC,UAAU,EAAE,qBAAqB;MACjC,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,kBAAkB;MAC3B,QAAQ,EAAE,MAAM;MAChB,GAAG,EAAE,IAAI;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,SAAS;MACrB,OAAO,EAAE,IAAI;MAEb,8BAAQ;QACN,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE,CAAC;QACN,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,OAAO;QACzB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,EAAE;;EATb,8BAAQ;IAYJ,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;MAEZ,6BAAO;QACL,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,WAAW;QAC7B,UAAU,EAAE,6DAA6D;QACzE,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,EAAE;MAEb,0BAAE;QACA,IAAI,EAAE,CAAC;QACP,WAAW,EAAE,IAAI;MAEnB,8BAAM;QACJ,aAAa,EAAE,GAAG;QAClB,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,OAAO;QACd,cAAc,EAAE,SAAS;QACzB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,YAAY;QACrB,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,MAAM;QACtB,YAAY,EAAE,YAAY;QAC1B,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,KAAK;QAClB,gBAAgB,EAAE,IAAI;QACtB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE,UAAU;QAEvB,oCAAO;UACL,gBAAgB,EAAE,mBAAmB;QAEvC,oCAAO;UACL,OAAO,EAAE,EAAE;UACX,OAAO,EAAE,KAAK;UACd,QAAQ,EAAE,QAAQ;UAClB,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,GAAG,EAAE,CAAC;UACN,IAAI,EAAE,CAAC;UACP,UAAU,EAAE,sEAAsE;UAClF,eAAe,EAAE,WAAW;UAC5B,OAAO,EAAE,CAAC;UACV,cAAc,EAAE,IAAI;UACpB,UAAU,EAAE,2BAA0B;QAGtC,2CAAO;UACL,eAAe,EAAE,GAAG;UACpB,OAAO,EAAE,GAAE;UACX,UAAU,EAAE,EAAE;QAElB,oCAAK;UACH,OAAO,EAAE,OAAO;QAClB,qCAAM;UACJ,OAAO,EAAE,IAAI;IAEnB,uCAAwB;MACtB,OAAO,EAAE,IAAI;IAEf,uBAAQ;MACN,OAAO,EAAE,EAAE;MACX,OAAO,EAAE,KAAK;MACd,IAAI,EAAE,CAAC;MACP,KAAK,EAAE,CAAC;MACR,GAAG,EAAE,CAAC;MACN,MAAM,EAAE,CAAC;MACT,gBAAgB,EAAE,WAAW;MAC7B,UAAU,EAAE,kFAAkF;MAC9F,WAAW,EAAE,0DAA0D;MACvE,QAAQ,EAAE,QAAQ;MAClB,OAAO,EAAE,EAAE;IAGX,6BAAQ;MACN,aAAa,EAAE,KAAK;MACpB,gBAAgB,EAAE,IAAI;;EAFxB,6BAAQ;IAKJ,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IAGrB,mCAAO;MACL,gBAAgB,EAAE,IAAI;;EADxB,mCAAO;IAIH,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,KAAK;IAGrB,0CAAK;MACH,OAAO,EAAE,IAAI;IACf,2CAAM;MACJ,OAAO,EAAE,OAAO;IAGpB,kDAAgB;MACd,MAAM,EAAE,IAAI;IAElB,2BAAU;MACR,SAAS,EAAE,IAAI;MAEf,4CAAgB;QACd,MAAM,EAAE,CAAC;QACT,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,OAAkB;QACzB,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,MAAM;QAClB,MAAM,EAAE,OAAO;QH7KnB,mBAAkB,EAAE,IAAS;QAA7B,gBAAkB,EAAE,IAAS;QAA7B,eAAkB,EAAE,IAAS;QAA7B,cAAkB,EAAE,IAAS;QAA7B,WAAkB,EAAE,IAAS;QG+KzB,UAAU,EAAE,4EAA0E;QACtF,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,QAAQ;MAEpB,oCAAQ;QACN,QAAQ,EAAE,QAAQ;QAMlB,2CAAQ;UACN,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,UAAU;QAEpB,2CAAQ;UACN,MAAM,EAAE,CAAC;UACT,UAAU,EAAE,4EAA0E;UACtF,OAAO,EAAE,EAAE;UACX,OAAO,EAAE,KAAK;UACd,IAAI,EAAE,CAAC;UACP,cAAc,EAAE,IAAI;UACpB,QAAQ,EAAE,QAAQ;UAClB,KAAK,EAAE,CAAC;UACR,GAAG,EAAE,CAAC;QAGN,qHAAmB;UACjB,OAAO,EAAE,IAAI;QAEf,iEAAgB;UACd,OAAO,EAAE,IAAI;QAEjB,6CAAQ;UACN,OAAO,EAAE,IAAI;UACb,WAAW,EAAE,IAAI;UACjB,OAAO,EAAE,SAAS;UAClB,aAAa,EAAE,iBAAiB;UAChC,KAAK,EAAE,OAAO;UACd,UAAU,EAAE,IAAI;UAEhB,wDAAY;YACV,aAAa,EAAE,IAAI;UAErB,kDAAI;YACF,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,IAAI;;EAPb,kDAAI;IAUA,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IACX,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,IAAI;UAEf,wDAAU;YACR,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,MAAM;;EAJlB,wDAAU;IAON,OAAO,EAAE,KAAK;IACd,cAAc,EAAE,IAAI;YAEtB,gEAAO;cACL,KAAK,EAAE,KAAK;cACZ,OAAO,EAAE,YAAY;cACrB,OAAO,EAAE,MAAM;cACf,WAAW,EAAE,IAAI;cACjB,WAAW,EAAE,CAAC;;EALhB,gEAAO;IAQH,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,CAAC;;EAEZ,sEAAO;IAEH,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,GAAG;;EAdvB,gEAAO;IAiBH,OAAO,EAAE,IAAI;YAEjB,iEAAQ;cACN,SAAS,EAAE,CAAC;cACZ,QAAQ,EAAE,MAAM;cAEhB,gFAAc;gBACZ,gBAAgB,EAAE,wBAAwB;gBAC1C,KAAK,EAAE,kBAAkB;;EAN7B,iEAAQ;IASJ,OAAO,EAAE,MAAM", "sources": [ "_icons.sass", "_font.sass", diff --git a/res/js/app.js b/res/js/app.js index 9d4a412058648680bdcb232acf219325c94cc386..567c3d6c56beeb979699b2ed772ad53aa2bdde9a 100644 --- a/res/js/app.js +++ b/res/js/app.js @@ -38,7 +38,7 @@ class App { this.loadingQuery++; const queryId = this.loadingQuery; - load("web/search/", {query: query}).then((result) => { + load("web/search/", {query: statehandler.state}).then((result) => { if (this.loadingQuery !== queryId) return; @@ -66,6 +66,20 @@ class App { insert(buffer) { this.resultContainer.appendChild(buffer.elem); + buffer.addEventListener("loadMore", () => this.bufferLoadMore(buffer)) + } + + bufferLoadMore(buffer) { + if (buffer.loading) + return; + + buffer.setLoading(true); + const offset = buffer.count(); + console.log(offset); + load("web/searchbuffer/", {query: statehandler.state, buffer: buffer.id, offset: offset}).then((result) => { + buffer.load(result); + buffer.setLoading(false); + }); } } diff --git a/res/js/component/buffer.js b/res/js/component/buffer.js index 3a8c660d94a97bb5bf8dcb0508c56ddf4c667bcf..74b3c0e07702e607d4aff5bcb2771e87edccecec 100644 --- a/res/js/component/buffer.js +++ b/res/js/component/buffer.js @@ -8,9 +8,10 @@ class Buffer extends Component { this.render(); this.contextList.forEach(context => this.insert(context)); this.loadMoreBtn.setVisible(hasMore); + this.loading = false; } render() { - return this.elem = function () { + this.elem = function () { var $$a = document.createElement('div'); $$a.setAttribute('class', 'buffer'); var $$b = document.createElement('div'); @@ -46,20 +47,46 @@ class Buffer extends Component { $$p.setAttribute('class', 'secondary'); return $$p; }.call(this)); - $$l.appendChildren((this.loadMoreBtn = new LoadMore(translation.results.show_more, this.loadMore)).elem); + $$l.appendChildren((this.loadMoreBtn = new LoadMore(translation.results.show_more)).elem); return $$a; }.call(this); + this.loadMoreBtn.addEventListener('click', () => this.loadMore()); + return this.elem; + } + + count() { + return this.contextList.length; } loadMore() { + this.sendEvent('loadMore', []); } focus(focus) { if (focus === undefined) focus = !this.elem.classList.contains('focus'); this.elem.classList.toggle('focus', focus); this.sendEvent('focus', focus); + if (focus === false) { + const bottomVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20 + this.insertContainerFirst.offsetHeight; + const fullyVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20; + const targetPosition = window.scrollY - this.insertContainer.offsetHeight; + window.scrollTo(0, targetPosition > bottomVisible - 56 ? fullyVisible : targetPosition); + } + } + + load(resultSet) { + resultSet.results.map(msg => new Context(new Message(msg.messageid, msg.time, msg.sender, msg.message))).forEach(context => { + this.contextList.push(context); + this.insert(context); + }); + this.hasMore = resultSet.hasmore; + this.loadMoreBtn.setVisible(this.hasMore); } insert(context) { let container = this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer; container.appendChild(context.elem); } + + setLoading(value) { + this.loading = value; + } } \ No newline at end of file diff --git a/res/js/component/buffer.jsx b/res/js/component/buffer.jsx index 359764ef3144733ce1e7805a2000fdc05e8c8c37..295654ea626c46c5b3f4349537a067f83f69a7ae 100644 --- a/res/js/component/buffer.jsx +++ b/res/js/component/buffer.jsx @@ -10,10 +10,12 @@ class Buffer extends Component { this.render(); this.contextList.forEach((context) => this.insert(context)); this.loadMoreBtn.setVisible(hasMore); + + this.loading = false; } render() { - return this.elem = ( + this.elem = ( <div className="buffer"> <div className="title"> <h2>{this.network} – {this.name}</h2> @@ -30,14 +32,20 @@ class Buffer extends Component { <div className="secondary"> </div> )} - {(this.loadMoreBtn = new LoadMore(translation.results.show_more, this.loadMore)).elem} + {(this.loadMoreBtn = new LoadMore(translation.results.show_more)).elem} </div> </div> ); + this.loadMoreBtn.addEventListener("click", () => this.loadMore()); + return this.elem; + } + + count() { + return this.contextList.length } loadMore() { - /* load data */ + this.sendEvent("loadMore", []) } focus(focus) { @@ -46,10 +54,33 @@ class Buffer extends Component { this.elem.classList.toggle("focus", focus); this.sendEvent("focus", focus); + + if (focus === false) { + const bottomVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20 + this.insertContainerFirst.offsetHeight; + const fullyVisible = this.elem.offsetTop - this.insertContainerFirst.offsetTop + 20; + const targetPosition = window.scrollY - this.insertContainer.offsetHeight; + window.scrollTo(0, (targetPosition > bottomVisible - 56) ? fullyVisible : targetPosition); + } + } + + load(resultSet) { + resultSet.results + .map((msg) => new Context(new Message(msg.messageid, msg.time, msg.sender, msg.message))) + .forEach((context) => { + this.contextList.push(context); + this.insert(context) + }); + this.hasMore = resultSet.hasmore; + this.loadMoreBtn.setVisible(this.hasMore); } insert(context) { let container = (this.insertContainerFirst.childElementCount < 4 ? this.insertContainerFirst : this.insertContainer); container.appendChild(context.elem); } + + setLoading(value) { + // Add UI indicator + this.loading = value; + } } \ No newline at end of file diff --git a/res/js/component/loadmore.js b/res/js/component/loadmore.js index 68404a0adc885dfeb1b0c512a960572b41eeff48..49c1e5ad5f6f2470effa0903143c11afc95d7560 100644 --- a/res/js/component/loadmore.js +++ b/res/js/component/loadmore.js @@ -2,8 +2,6 @@ class LoadMore extends Component { constructor(text, eventListener) { super(); this.render(text); - if (eventListener) - this.addEventListener('click', eventListener); } render(text) { return this.elem = function () { diff --git a/res/js/component/loadmore.jsx b/res/js/component/loadmore.jsx index b80d3c353088288e70f2c376183f4a070b82ec34..445a27f71c9974f609e68adc437d33005db94cb5 100644 --- a/res/js/component/loadmore.jsx +++ b/res/js/component/loadmore.jsx @@ -2,8 +2,6 @@ class LoadMore extends Component { constructor(text, eventListener) { super(); this.render(text); - if (eventListener) - this.addEventListener("click", eventListener); } render(text) { diff --git a/res/js/util/loader.js b/res/js/util/loader.js index ec2e911f6f593b8c222d36385814803ac7c8940b..273c42d384862e54e4ef36cbb4c3b07b4223fedc 100644 --- a/res/js/util/loader.js +++ b/res/js/util/loader.js @@ -7,13 +7,13 @@ function load(url, data = null) { result.push(encodeURIComponent(key) + "=" + encodeURIComponent(data[key])); } } - return result.join(""); + return result.join("&"); }; const request = new XMLHttpRequest(); const method = data === null ? "GET" : "POST"; request.onreadystatechange = () => { - if (request.readyState == 4) { + if (request.readyState === 4) { if (request.status >= 200 && request.status < 300) { try { resolve(JSON.parse(request.responseText)); diff --git a/res/js/util/statehandler.js b/res/js/util/statehandler.js index 38dd687ef90adef0b1b697952650ffc179c97b76..f5176ce5d302b936d13bb8fdd1b82b332d572565 100644 --- a/res/js/util/statehandler.js +++ b/res/js/util/statehandler.js @@ -1,8 +1,9 @@ class StateHandler extends Component { constructor() { super(); + this.state = null; window.addEventListener("hashchange", () => { - this.sendEvent("update", [this.state]); + this.update() }); } @@ -11,12 +12,12 @@ class StateHandler extends Component { } replace(value) { - history.replaceState(null, null, "#" + encodeURIComponent(value)); + history.replaceState(null, "", "#" + encodeURIComponent(value)); this.update(); } push(value) { - history.pushState(null, null, "#" + encodeURIComponent(value)); + history.pushState(null, "", "#" + encodeURIComponent(value)); this.update(); } diff --git a/web/searchbuffer/index.php b/web/searchbuffer/index.php index 9df1ab14fe3cb1e808a66f27deeaa7ae5c6db5df..b90be801b4b90114fdc7a7e8cab46902a4c059fe 100644 --- a/web/searchbuffer/index.php +++ b/web/searchbuffer/index.php @@ -25,6 +25,7 @@ if (!$backend->authenticate($session->username ?: '', $session->password ?: '')) param('query', ""), param('since'), param('before'), + param('sender'), param('buffer', 0), param('offset', 0), param('limit', 20)