Skip to content

Commit

Permalink
Merge pull request #543 from RabotaRu/manifest-layers
Browse files Browse the repository at this point in the history
Manifest layers
  • Loading branch information
rpiontik authored Jun 10, 2024
2 parents 98ca24c + 58f1542 commit 2005141
Show file tree
Hide file tree
Showing 40 changed files with 1,662 additions and 888 deletions.
15 changes: 13 additions & 2 deletions config.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,33 @@ declare var DochubVsCodeExt: {
mode: string,
request_type: string,
server: string
}
};
env: { // Переменные среды для IDE режима
DOCHUB_IDE_GITLAB_URL?: string, // gitlab сервер для режима IDE
DOCHUB_IDE_BITBUCKET_URL?: string, // bitbacket сервер для режима IDE
DOCHUB_IDE_PERSONAL_TOKEN?: string, // персональный токен для gitlab/bitbacket
};
}
};

// eslint-disable-next-line no-var
declare var DocHubIDEACodeExt: {
rootManifest: string, // Корневой манифест (с чего начинается загрузка)
settings: {
[x: string]: {};
isEnterprise: boolean, // Признак использования фронта в плагине как Enterprise портала
enterpriseServer?: string,
render: {
external: boolean, // Признак рендера на внешнем сервере
mode: string, // Режим рендера ELK / Smetana / GraphVis
request_type: string, // Тип запросов к сервер рендеринга POST / GET
server: string // Сервер рендеринга
}
};
env: { // Переменные среды для IDE режима
DOCHUB_IDE_GITLAB_URL?: string, // gitlab сервер для режима IDE
DOCHUB_IDE_BITBUCKET_URL?: string, // bitbacket сервер для режима IDE
DOCHUB_IDE_PERSONAL_TOKEN?: string, // персональный токен для gitlab/bitbacket
};
}
};

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "dochubcore",
"version": "1.0.6",
"main": "/dist/dochub.js",
"main": "src/backend/main.mjs",
"files": [
"/dist"
],
Expand Down
5 changes: 5 additions & 0 deletions public/documentation/dochub.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
$package:
dochub-doc:
version: 3.0.0
imports:
- root.yaml
8 changes: 8 additions & 0 deletions public/documentation/docs/manual/config/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ DocHub поддерживает следующие режимы разверты

Вам также поможет статья ["Архитектура рядом с кодом"](https://habr.com/ru/post/659595/).

### Переменные среды

* **DOCHUB_IDE_GITLAB_URL** - Адрес Gitlab сервера для интеграции с ним (например, https://gitlab.com/);
* **DOCHUB_IDE_BITBUCKET_URL** - Адрес Bitbucket сервера для интеграции с ним (например, https://bitbucket.org/);
* **DOCHUB_IDE_PERSONAL_TOKEN** - Персональный токен, необходимый для доступа к системе управления версиями. Выпускается самой системой (Gitlab/Bitbucket).

Переменные среды могут быть переопределены через пользовательский интерфейс в настройках плагина.

### Преимущества
1. Развертывание буквально за 2 минуты;
2. Встраивание в инструмент производства (IDE);
Expand Down
33 changes: 33 additions & 0 deletions public/documentation/docs/manual/docs/bpmn.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,5 +87,38 @@
![Редактирование BPM диаграмм в IDEA](https://youtu.be/qQzsHuYxNzg)


## Анализ процессов

DocHub может обращаться к описанию процессов в XML формате аналогично YAML и JSON. Для этого необходимо указать XML
файл как источник данных. Например, рассмотрим анализ процесса:

![BPMN](@document/dochub.example.bpmn.full)

Выявим реестр задач определенных в процессе и выразим его в таблице:

```yaml
docs:
...
dochub.example.bpmn.analyse:
origin: examples/pizza-collaboration.xml # Указываем источником оригинальных данных XML файл
source: > # Обрабатываем XML
(
[$."semantic:definitions"."semantic:process"."semantic:task"."$"]
)
type: table # Тип документа "таблица"
headers: # Заголовки таблицы
- value: id
text: Идентификатор
sortable: true
align: left
width: 20%
- value: name
text: Название задачи
sortable: true
align: left
...
```

Результат:

![BPMN](@document/dochub.example.bpmn.analyse)
2 changes: 1 addition & 1 deletion public/documentation/docs/manual/docs/examples/bpmn.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
</definitions>
46 changes: 40 additions & 6 deletions public/documentation/docs/manual/docs/markdown.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
# Markdown

В Markdown документах включена поддержка HTML. Добавлены специальные теги DocHub, которые позволяют
заметно расширить функциональность:
Облегчённый язык разметки, созданный с целью обозначения форматирования в простом тексте,
с максимальным сохранением его читаемости человеком, и пригодный для машинного
преобразования в языки для продвинутых публикаций.

## Навигационные якоря
## Расширенные возможности

Добавлены специальные теги DocHub, которые позволяют заметно расширить функциональность:

### Навигационные якоря
Позволяет создавать именованные якоря для "коротких" ссылок внутри документа. Например, код:
```
![](@anchor/markdown)
Expand All @@ -13,7 +18,7 @@
[Пример короткой ссылки](#markdown)
```

## Изображения
### Изображения
Поддерживается встраивание изображений. Например:

```
Expand All @@ -22,7 +27,7 @@

![Кот](examples/cat.jpg)

## Ссылки на объекты DocHub
### Ссылки на объекты DocHub
Добавляет ссылку на архитектурный объект. Пример для ссылки на документ:
```
[Swagger контракт](/docs/dochub.example.swgr)
Expand All @@ -41,7 +46,7 @@

[Компонент gitlab](/architect/components/dochub.gitlab)

## Встраиваемые объекты DocHub
### Встраиваемые объекты DocHub
Интегрирует в документ архитектурный объект. Например:
```
![Компонент архитектуры](@component/dochub.front)
Expand All @@ -66,4 +71,33 @@

Через "/" указывается идентификатор объекта.

## Использование HTML
По умолчанию в markdown отключены HTML тэги. Это сделано для исключения встраивания потенциально опасного
произвольного кода. Для включения поддержки HTML, используйте переменную окружения VUE_APP_DOCHUB_MARKDOWN_HTML
в режиме портала.

```
VUE_APP_DOCHUB_MARKDOWN_HTML=on
```

Подробнее [здесь](https://github.com/RabotaRu/DocHub/blob/master/example.env).

Для включения поддержки HTML в плагинах, потребуется установить переменную DOCHUB_IDE_MARKDOWN_HTML на рабочей станции.

Для linux:

```
export DOCHUB_IDE_MARKDOWN_HTML=on
```

Для windows:
```
set DOCHUB_IDE_MARKDOWN_HTML=on
```

**ВНИМАНИЕ:** Поддержка HTML не является стандартом markdown. Высока вероятность столкнуться с различными
проблемами при его использовании. Не рекомендуется использование HTML в Markdown.




22 changes: 20 additions & 2 deletions public/documentation/docs/manual/docs/root.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -399,10 +399,28 @@ docs:
location: DocHub/Руководство/Документы/BPMN/Простой пример
type: bpmnjs
source: examples/bpmn.xml
dochub.example.bpmn_full:
dochub.example.bpmn.full:
location: DocHub/Руководство/Документы/BPMN/Расширенный пример
type: bpmnjs
source: examples/pizza-collaboration.xml
dochub.example.bpmn.analyse:
origin: examples/pizza-collaboration.xml # Указываем источником оригинальных данных XML файл
source: > # Обрабатываем XML
(
[$."semantic:definitions".*."semantic:task"."$"]
)
type: table # Тип документа "таблица"
headers: # Заголовки таблицы
- value: id
text: Идентификатор
sortable: true
align: left
width: 20%
- value: name
text: Название задачи
sortable: true
align: left

# *****************************************
# Шаблоны
# *****************************************
Expand Down Expand Up @@ -475,4 +493,4 @@ docs:
}]
}
)
template: examples/openapi_template.json
template: examples/openapi_template.json
1 change: 0 additions & 1 deletion public/documentation/root.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,3 @@ imports:
- docs/root.yaml
- arch/root.yaml
- entities/root.yaml
testkey: 14
21 changes: 16 additions & 5 deletions src/backend/helpers/request.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import uriTool from './uri.mjs';
import gitlab from './gitlab.mjs';
import bitbucket from './bitbucket.mjs';
import logger from '../utils/logger.mjs';
import xml from '../../global/helpers/xmlparser.mjs';

const REQUEST_TAG = 'request';

Expand All @@ -28,6 +29,8 @@ axios.interceptors.response.use(
response.data = JSON.parse(response.data);
else if ((url.indexOf('.yaml/raw') >= 0) || url.endsWith('.yaml'))
response.data = yaml.parse(response.data);
else if ((url.indexOf('.xml/raw') >= 0) || url.endsWith('.xml'))
response.data = xml.parse(response.data);
}
}
return response;
Expand All @@ -40,14 +43,20 @@ function isAvailablePath(path) {
return path.startsWith(`${$paths.file_storage}/`);
}

const CONTENT_TYPE_YAML = 'application/x-yaml';
const CONTENT_TYPE_JSON = 'application/json';
const CONTENT_TYPE_XML = 'application/xhtml+xml';

// Определяет тип контента
function getContentType(url) {
let contentType = null;
const uri = url.split('?')[0];
if (uri.endsWith('.yaml') || uri.endsWith('.yml') || (uri.indexOf('.yaml/raw') >= 0) || (uri.indexOf('.yml/raw') >= 0)) {
contentType = 'application/x-yaml';
contentType = CONTENT_TYPE_YAML;
} else if (uri.endsWith('.json') || (uri.indexOf('.json/raw') >= 0)) {
contentType = 'application/json';
contentType = CONTENT_TYPE_JSON;
} else if (uri.endsWith('.xml') || (uri.indexOf('.xml/raw') >= 0)) {
contentType = CONTENT_TYPE_XML;
}
return contentType;
}
Expand Down Expand Up @@ -79,11 +88,13 @@ async function request(url, baseURI, response) {
const result = {
data: fs.readFileSync(fileName, { encoding: 'utf8', flag: 'r' })
};
if (contentType === 'application/x-yaml') {
if (contentType === CONTENT_TYPE_YAML) {
result.data = yaml.parse(result.data);
} else if (contentType === 'application/json') {
} else if (contentType === CONTENT_TYPE_JSON) {
result.data = JSON.parse(result.data);
}
} else if (contentType === CONTENT_TYPE_XML) {
result.data = xml.parse(result.data);
}
return result;
}
} // Если запрос по http / https
Expand Down
2 changes: 1 addition & 1 deletion src/backend/storage/cache.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ export default Object.assign(prototype, {

// Подключаем документацию, если нужно
if ((process.env.VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS || 'y').toLowerCase() === 'y') {
content.imports.push('/documentation/root.yaml');
content.imports.push('/documentation/dochub.yaml');
}

// Подключаем корневой манифест, если есть
Expand Down
1 change: 1 addition & 0 deletions src/frontend/components/Docs/DocAsyncApi.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import { getAsyncApiContext } from '@front/helpers/misc';
export default {
name: 'DocAsyncApi',
mixins: [DocMixin],
methods: {
renderRefSection(res) {
Expand Down
1 change: 1 addition & 0 deletions src/frontend/components/Docs/DocContextMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<script>
export default {
name: 'DocContextMenu',
props: {
items: {
type: Array,
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/components/Docs/DocHubDoc.vue
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
export default {
name: 'Document',
name: 'DocHubDoc',
components: {
AsyncApiComponent,
Plantuml,
Expand Down
10 changes: 9 additions & 1 deletion src/frontend/components/Docs/DocMarkdown.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
<markdown
v-if="(markdown !== null)"
toc
v-bind:toc-first-level="0"
v-bind:toc-last-level="100"
v-bind:breaks="false"
v-bind:html="isHTMLSupport"
v-bind:postrender="rendered"
Expand Down Expand Up @@ -34,6 +36,7 @@
import DocMixin from './DocMixin';
import ContextMenu from './DocContextMenu.vue';
import Spinner from '@front/components/Controls/Spinner.vue';
import env from '@front/helpers/env';
export default {
name: 'DocMarkdown',
Expand Down Expand Up @@ -92,7 +95,7 @@
computed: {
// Определяет поддерживаются ли HTML тэги в markdown
isHTMLSupport() {
return (process.env.VUE_APP_DOCHUB_MARKDOWN_HTML || 'off').toLocaleLowerCase() === 'on';
return (process.env.VUE_APP_DOCHUB_MARKDOWN_HTML || env.ideSettings?.env.DOCHUB_IDE_MARKDOWN_HTML || 'off').toLocaleLowerCase() === 'on';
},
// Возвращает URL документа с учетом истории переходов
currentURL() {
Expand Down Expand Up @@ -188,6 +191,11 @@
<style>
.table-of-contents {
list-style-type: none;
padding-left: 0;
}
.theme--light.v-application code {
background: none !important;
}
Expand Down
Loading

0 comments on commit 2005141

Please sign in to comment.