diff --git a/README.md b/README.md
index 32ea6d6..db96a4a 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,34 @@ Visualization and analysis of your git repository data ([demo](https://assayo.on
- forecast of rework time;
- forecast cost;
+### Table of contents
+
+- [How to quickly view the number of commits?](#link-1)
+- [How to concat authors?](#link-2)
+- [How to export data from git?](#link-3)
+ - [For online viewing](#link-4)
+ - [For offline viewing](#link-5)
+- [How to view the report?](#link-6)
+ - [Online](#headers)
+ - [Offline](#headers)
+- [How to rebuild the report build?](#link-)
+- [How to view a report on a group of microservices?](#link-)
+- [How to brand the interface?](#link-)
+- [How to sign commits?](#link-)
+- [How to add checking for commit message?](#link-)
+ - [Use file commit-msg](#link-)
+ - [Use package pre-commit](#link-)
+- [How to automate data collection?](#link-)
+ - [With backend](#link-)
+ - [Without backend](#link-)
+- [DevOps (CI/CD)](#link-)
+ - [Public server](#link-)
+ - [Private server](#link-)
+ - [How to update the Docker image?](#link-)
+- [How to add or edit a translation?](#link-)
+- [RoadMap](#link-)
+- [Contacts](#link-)
+
### How to quickly view the number of commits?
In the root directory of your project, run:
@@ -68,12 +96,13 @@ This file contains data for show a report.
The difference between the online and offline format is the presence of a wrapper for strings. The offline format will be pulled up like a `js` file if you just opened `/build/index.html `
-### How to view the report online?
+### How to view the report?
+#### Online
- go to the [website](https://assayo.online/);
- click the “[Demo](https://assayo.online/demo)” button;
- drag the `log.txt` file into the browser window;
-### How to view the report offline?
+#### Offline
- download this repository;
- drag the `log.txt` file to the `/build` folder;
- run `/build/index.html`;
@@ -109,8 +138,40 @@ JIRA-1234 feat(profile): Added avatar for user
- feature `(profile - new page on site or new function, use one (two) short wordor an abbreviation)`
- what problem were solved `(Added avatar for user)`
+### How to add checking for commit message?
+
+#### Use file `commit-msg`
+
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+
### How to automate data collection?
+#### With backend
+
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
#### Without backend
- create a clone of the repository you need;
- copy the `build` folder to the root;
diff --git a/documents/RU.md b/documents/RU.md
index 77abb12..cf4ce55 100644
--- a/documents/RU.md
+++ b/documents/RU.md
@@ -32,12 +32,42 @@
- прогноз времени доработок;
- прогноз стоимости;
+### Содержание
+
+- [Как быстро посмотреть количество коммитов?](#link-1)
+- [Как объединить авторов?](#link-2)
+- [Как выгрузить данные из git?](#link-3)
+ - [Для онлайн просмотра](#link-4)
+ - [Для офлайн просмотра](#link-5)
+- [Как посмотреть отчёт?](#link-6)
+ - [Онлайн](#headers)
+ - [Офлайн](#headers)
+- [Как пересобрать билд отчёта?](#headers)
+- [Как посмотреть отчёт по группе микросервисов?](#headers)
+- [Как брендировать интерфейс?](#headers)
+- [Как подписывать коммиты?](#headers)
+- [Как добавить проверку текста коммита?](#headers)
+ - [Используя файл commit-msg](#headers)
+ - [Используя пакет pre-commit](#headers)
+- [Как автоматизировать сбор данных?](#headers)
+ - [С бекендом](#headers)
+ - [Без бекенда](#headers)
+- [DevOps (CI/CD)](#headers)
+ - [Публичный сервер](#headers)
+ - [Приватный сервер](#headers)
+ - [Обновление Docker-образа](#headers)
+- [Как добавить или отредактировать перевод?](#headers)
+- [Дорожная карта](#headers)
+- [Пожелания, предложения, замечания](#headers)
+
+
### Как быстро посмотреть количество коммитов?
В корневой директории вашего проекта выполнить:
```
git shortlog -s -n -e
```
+
### Как объединить авторов?
В корневой директории вашего проекта нужно создать файл `.mailmap`.
Пример содержания файла:
@@ -49,13 +79,16 @@ Alex B
```
Подробнее про формат этого файла можно прочитать [тут](https://git-scm.com/docs/gitmailmap).
+
### Как выгрузить данные из git?
+
#### Для онлайн просмотра
В корневой директории вашего проекта выполнить:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
+
#### Для офлайн просмотра
```
@@ -66,13 +99,14 @@ Git создаст файл `log.txt`.
Разница между онлайн и офлайн форматом в наличие обёртки для строк. Оффлайн формат будет подтягиваться, как `js` файл если вы просто открыли `/build/index.html`
-### Как посмотреть отчёт онлайн?
+### Как посмотреть отчёт?
+#### Онлайн
- Перейти на [сайт](https://assayo.online/)
- Нажать кнопку «[Демо](https://assayo.online/demo)»
- Перетащить файл `log.txt` в окно браузера
-### Как посмотреть отчёт офлайн?
+#### Офлайн
- Скачать этот репозиторий
- Перетащить файл `log.txt` в папку `/build`
- Запустить `/build/index.html`
@@ -108,8 +142,39 @@ JIRA-1234 feat(profile): Added avatar for user
- фича `(profile - раздел сайта, страница или новый функционал, одним словом)`
- какую проблему решали `(Added avatar for user)`
+### Как добавить проверку текста коммита?
+
+#### Используя файл `commit-msg`
+
+1. Создайте файл `commit-msg` в папке `.git/hooks/`
+2. Добавьте в файл следующий текст:
+```
+#!/usr/bin/env bash
+
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Используя пакет [pre-commit](https://www.npmjs.com/package/pre-commit)
+
+1. Добавьте в файл `package.json` блок `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Выполните команду `npm install pre-commit`
+
### Как автоматизировать сбор данных?
+#### С бекендом
+
+- используйте модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
#### Без бекенда
- создайте клон нужного вам репозитория;
- скопируйте в корень папку `build`;
diff --git a/src/ts/helpers/i18n.ts b/src/ts/helpers/i18n.ts
index b0d3baa..4aaf299 100644
--- a/src/ts/helpers/i18n.ts
+++ b/src/ts/helpers/i18n.ts
@@ -33,22 +33,29 @@ function getTranslationWrapper(translation: string) {
};
}
-export default function initializationI18n(defaultLanguage?: string) {
+const translations = {
+ de: getTranslationWrapper(de),
+ en: getTranslationWrapper(en),
+ es: getTranslationWrapper(es),
+ fr: getTranslationWrapper(fr),
+ ja: getTranslationWrapper(ja),
+ pt: getTranslationWrapper(pt),
+ ru: getTranslationWrapper(ru),
+ zh: getTranslationWrapper(zh),
+};
+
+const defaultLanguage = navigator.languages
+ .filter((language) => language.length === 2 && translations[language])
+ .shift() || 'en';
+
+export default function initializationI18n(userLanguage?: string) {
i18next.use(initReactI18next).init({
- lng: defaultLanguage || 'ru', // if you're using a language detector, do not define the lng option
+ lng: userLanguage || defaultLanguage || 'ru', // if you're using a language detector, do not define the lng option
debug: false,
- resources: {
- de: getTranslationWrapper(de),
- en: getTranslationWrapper(en),
- es: getTranslationWrapper(es),
- fr: getTranslationWrapper(fr),
- ja: getTranslationWrapper(ja),
- pt: getTranslationWrapper(pt),
- ru: getTranslationWrapper(ru),
- zh: getTranslationWrapper(zh),
- },
+ resources: translations,
// if you see an error like: "Argument of type 'DefaultTFuncReturn' is not assignable to parameter of type xyz"
// set returnNull to false (and also in the i18next.d.ts options)
// returnNull: false,
});
}
+
diff --git a/src/ts/pages/Settings/helpers/getEmptySettings.ts b/src/ts/pages/Settings/helpers/getEmptySettings.ts
index 4672f3c..e46ab0e 100644
--- a/src/ts/pages/Settings/helpers/getEmptySettings.ts
+++ b/src/ts/pages/Settings/helpers/getEmptySettings.ts
@@ -37,7 +37,6 @@ export function getNewEmployeesSettings(
],
};
}
-
export default function getEmptySettings(): IUserSetting {
return {
version: 1,