Quellcode durchsuchen

Поправлено отображение количества найденных значений

Book Pauk vor 2 Jahren
Ursprung
Commit
c2e1d062e8

+ 2 - 1
server/core/opds/AuthorPage.js

@@ -1,4 +1,5 @@
 const BasePage = require('./BasePage');
+const utils = require('../utils');
 
 class AuthorPage extends BasePage {
     constructor(config) {
@@ -172,7 +173,7 @@ class AuthorPage extends BasePage {
                 if (rec.count) {
                     e.content = {
                         '*ATTRS': {type: 'text'},
-                        '*TEXT': `${rec.count} авторов`,
+                        '*TEXT': `${rec.count} автор${utils.wordEnding(rec.count, 0)}`,
                     };
                 }
 

+ 1 - 1
server/core/opds/BasePage.js

@@ -196,7 +196,7 @@ class BasePage {
         }
 
         if (!query.others && others.length)
-            result.unshift({id: 'other', title: otherTitle, q: '___others'});
+            result.unshift({id: 'other', title: otherTitle, q: '___others', count: others.length});
 
         return (!query.others ? result : others);
     }

+ 2 - 1
server/core/opds/SeriesPage.js

@@ -1,4 +1,5 @@
 const BasePage = require('./BasePage');
+const utils = require('../utils');
 
 class SeriesPage extends BasePage {
     constructor(config) {
@@ -105,7 +106,7 @@ class SeriesPage extends BasePage {
                 if (rec.count) {
                     e.content = {
                         '*ATTRS': {type: 'text'},
-                        '*TEXT': `${rec.count} серий`,
+                        '*TEXT': `${rec.count} сери${utils.wordEnding(rec.count, 1)}`,
                     };
                 }
 

+ 2 - 1
server/core/opds/TitlePage.js

@@ -1,4 +1,5 @@
 const BasePage = require('./BasePage');
+const utils = require('../utils');
 
 class TitlePage extends BasePage {
     constructor(config) {
@@ -75,7 +76,7 @@ class TitlePage extends BasePage {
                 if (rec.count) {
                     e.content = {
                         '*ATTRS': {type: 'text'},
-                        '*TEXT': `${rec.count} названий`,
+                        '*TEXT': `${rec.count} назван${utils.wordEnding(rec.count, 3)}`,
                     };
                 }
 

+ 20 - 0
server/core/utils.js

@@ -174,6 +174,25 @@ function makeValidFileNameOrEmpty(fileName) {
     }
 }
 
+function wordEnding(num, type = 0) {
+    const endings = [
+        ['ов', '', 'а', 'а', 'а', 'ов', 'ов', 'ов', 'ов', 'ов'],//0
+        ['й', 'я', 'и', 'и', 'и', 'й', 'й', 'й', 'й', 'й'],//1
+        ['о', '', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о'],//2
+        ['ий', 'ие', 'ия', 'ия', 'ия', 'ий', 'ий', 'ий', 'ий', 'ий'],//3
+        ['о', 'а', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о'],//4
+        ['ок', 'ка', 'ки', 'ки', 'ки', 'ок', 'ок', 'ок', 'ок', 'ок'],//5
+        ['ых', 'ое', 'ых', 'ых', 'ых', 'ых', 'ых', 'ых', 'ых', 'ых'],//6
+        ['о', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о', 'о'],//7
+    ];
+    const deci = num % 100;
+    if (deci > 10 && deci < 20) {
+        return endings[type][0];
+    } else {
+        return endings[type][num % 10];
+    }
+}
+
 module.exports = {
     sleep,
     processLoop,
@@ -193,4 +212,5 @@ module.exports = {
     toUnixPath,
     makeValidFileName,
     makeValidFileNameOrEmpty,
+    wordEnding,
 };