Skip to content

Commit cbfb601

Browse files
committed
Recent comments displaying implemented
1 parent 3c601b2 commit cbfb601

File tree

7 files changed

+162
-1
lines changed

7 files changed

+162
-1
lines changed

assets/style.css

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,3 +292,32 @@ img.pict {
292292
.reactions-bar:hover .reactions-not-involved {
293293
visibility: visible;
294294
}
295+
296+
.nav {
297+
text-align: center;
298+
margin-bottom: 1em;
299+
margin-top: 5px;
300+
padding: 2px;
301+
zoom:1.5;
302+
display: flex;
303+
gap: 0.2em;
304+
flex-wrap: wrap
305+
align-items: center;
306+
justify-content: center;
307+
}
308+
309+
.nav:before .nav:after {
310+
content: "";
311+
display: table
312+
}
313+
314+
.nav:after {
315+
clear: both
316+
}
317+
318+
.page-number {
319+
/*
320+
border: solid 1px;
321+
border-radius: 5px;
322+
*/
323+
}

manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"resources": [
2121
"panel/panel.html",
2222
"popup/main.html",
23+
"popup/recent.html",
2324
"assets/emoji/*",
2425
"assets/style.css",
2526
"assets/rules.html"

panel/content.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ const app = {
181181
$('body').append(s);
182182
}
183183

184-
let data = await app.request( { action: 'getComments' } );
184+
let data = await app.request( { action: 'getComments', title: $("title").text() } );
185185

186186
if( data?.hide_panel )
187187
return false;
@@ -288,6 +288,7 @@ const app = {
288288
form.find('textarea[name="comment"]').prop('disabled', true);
289289

290290
args = Object.assign({ name: rfind('#cwc_user').val() }, args);
291+
args['title'] = $("title").text();
291292
args['author_secret'] = self.crypto.randomUUID();
292293

293294
let add = await app.request({ action: "addComment" }, args);
@@ -375,6 +376,7 @@ const app = {
375376
const updatedText = textarea.value;
376377

377378
const response = await app.request({ action: 'updateComment' }, {
379+
title: $("title").text(),
378380
msg_id: msg_id,
379381
author_secret: b.secret,
380382
name: msg.author,

panel/panel.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
</b>
1919
</span>
2020
</nobr>
21+
<a href="/popup/recent.html" class="relative-href">Комментарии к другим вакансиям</a>
2122
</section>
2223
<button id="chrome-web-comments-panel-close">x</button>
2324
<form id="chrome-web-comments-form">

popup/main.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ <h1>Подписки</h1>
3333
<section class="buttons">
3434
<button id="unsubBtn" disabled>Отписаться от отмеченных крестиком</button>
3535
</section>
36+
<section class="buttons"><!-- "buttons" is just to align=center -->
37+
&nbsp;
38+
</section>
39+
<section class="buttons"><!-- "buttons" is just to align=center -->
40+
<a href="/popup/recent.html" class="relative-href">Комментарии к другим вакансиям</a>
41+
</section>
3642
<script type="text/javascript" src="/assets/libs/jquery.min.js"></script>
3743
<script type="text/javascript" src="/assets/libs/jquery-ui.js"></script>
3844
<script type="text/javascript" src="/assets/js/storage.js"></script>

popup/recent.html

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<meta charset="utf-8">
4+
<head>
5+
<title>Свежие комментарии</title>
6+
<link rel="stylesheet" href="/assets/style.css">
7+
</head>
8+
<body>
9+
<h1>Вакансии с новыми комментариями</h1>
10+
<div id="cwc-error" hidden>Нет связи с сервером</div>
11+
<section id="main_section">
12+
<div class="nav"></div>
13+
14+
<div>
15+
<ul id="recentList">
16+
<template id="recentItemTpl">
17+
<li class="recentItem">
18+
<nobr>
19+
<span class="subscription-link">
20+
<a class="page-link" target="_blank"></a> -
21+
<!-- FIXME: class "unread" is used -->
22+
комментариев: <span class="msgs-cnt unread" title="Количество комментариев"></span>,
23+
<span class="timestamp" title="Время создания последнего комментария"></span>
24+
</span>
25+
</nobr>
26+
</li>
27+
</template>
28+
</ul>
29+
</div>
30+
31+
<div class="nav"></div>
32+
33+
</section>
34+
<script type="text/javascript" src="/assets/libs/jquery.min.js"></script>
35+
<script type="text/javascript" src="/assets/libs/jquery-ui.js"></script>
36+
<script type="text/javascript" src="/assets/js/fetch.js"></script>
37+
<script type="text/javascript" src="recent.js"></script>
38+
</body>
39+
</html>

popup/recent.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
function getUrlParameter(name) {
2+
const urlParams = new URLSearchParams(window.location.search);
3+
return urlParams.get(name);
4+
}
5+
6+
const elemsPerPage = 20;
7+
8+
function fillNav(currPage, numOfPages)
9+
{
10+
const curr_url = window.location.origin + window.location.pathname;
11+
12+
if(currPage == 1)
13+
$('.nav').append($(`<span class="page-number">←</span>`));
14+
else
15+
$('.nav').append($(`<a class="page-number" href="${curr_url}?page=${currPage-1}" rel="prev">←</a>`));
16+
17+
for (let i = 1; i <= numOfPages; i++) {
18+
if(i != currPage)
19+
$('.nav').append($(`<a class="page-number" href="${curr_url}?page=${i}">${i}</a>`));
20+
else
21+
$('.nav').append($(`<strong class="page-number">${i}</strong>`));
22+
}
23+
24+
if(currPage == numOfPages)
25+
$('.nav').append($(`<span class="page-number">→</span>`));
26+
else
27+
$('.nav').append($(`<a class="page-number" href="${curr_url}?page=${currPage - (-1)}" rel="next">→</a>`));
28+
}
29+
30+
function addToDisplay(url, title, commentsCount, timestamp)
31+
{
32+
const template = $("#recentItemTpl")[0];
33+
34+
const c = $( document.importNode(template.content, true) );
35+
36+
c.find(".page-link").attr("href", url);
37+
c.find(".page-link").text(title);
38+
c.find(".subscription-link .msgs-cnt").text(commentsCount);
39+
c.find(".subscription-link .timestamp").text(timestamp);
40+
41+
$('#recentList').append(c);
42+
}
43+
44+
document.addEventListener("DOMContentLoaded", async () => {
45+
let currPage = getUrlParameter('page');
46+
if(currPage === null)
47+
currPage = 1;
48+
49+
const r = await request({
50+
action: 'getRecentCommentedList',
51+
"offset": currPage * elemsPerPage - elemsPerPage,
52+
"limit": elemsPerPage
53+
});
54+
55+
const numOfPages = Math.ceil(r.total / elemsPerPage);
56+
57+
fillNav(currPage, numOfPages);
58+
59+
r.recently_commented_list.forEach((e) => addToDisplay(e.url, e.title, e.commentsCount, e.new_added));
60+
});
61+
62+
async function request(args, post_args ={})
63+
{
64+
/* args["url"] = app.getURL(); */
65+
66+
let data;
67+
68+
try
69+
{
70+
data = await requester.request(args, post_args);
71+
72+
if(data?.error)
73+
throw "data error";
74+
75+
return data;
76+
}
77+
catch(err)
78+
{
79+
$('#cwc-error').show();
80+
81+
console.log("Нет связи с сервером?", err);
82+
}
83+
}

0 commit comments

Comments
 (0)