Skip to content

Commit

Permalink
Merge pull request #258 from RabotaRu/dochub-metamodel
Browse files Browse the repository at this point in the history
Dochub metamodel
  • Loading branch information
rpiontik authored Apr 3, 2023
2 parents eee2063 + 3274bf5 commit d6444b1
Show file tree
Hide file tree
Showing 17 changed files with 95 additions and 17 deletions.
Binary file not shown.
8 changes: 8 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,13 @@
"engines": {
"npm": ">=8.1.0",
"node": ">=16.0.0"
},
"ide": {
"idea": {
"api": "1.0.0"
},
"vscode": {
"api": "1.0.0"
}
}
}
2 changes: 1 addition & 1 deletion public/documentation/docs/manual/plugins/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ DocHub.documents.register('html', doc);
### HTMLDocument.vue

Файл содержит [VUE2 компонент](https://ru.vuejs.org/v2/guide/components.html). Его задачей является
рендеринг данных архитектуры в соответсвии с переданными ему параметрами в "profile".
рендеринг данных архитектуры в соответствии с переданными ему параметрами в "profile".

```JavaScript
<template>
Expand Down
5 changes: 4 additions & 1 deletion public/documentation/root.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Манифест описывающий сам DocHub
imports: # Подключение манифестов
imports:
# Подключение базовой метамодели DocHub
- ../metamodel/root.yaml
# Подключение манифестов
- docs/root.yaml
- arch/root.yaml
- entities/root.yaml
1 change: 0 additions & 1 deletion public/example/root.yaml

This file was deleted.

Empty file.
Empty file.
Empty file.
4 changes: 4 additions & 0 deletions public/metamodel/dochub/entities/root.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
imports:
- components/root.yaml
- aspects/root.yaml
- contexts/root.yaml
11 changes: 11 additions & 0 deletions public/metamodel/dochub/root.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Базовая метамодель DocHub. Включает в себя сущности
# components - Архитектурные компоненты.
# aspects - Архитектурные аспекты. Позволяют выделить и отобразить на
# диаграмме компоненты реализующие, например, бизнес-функцию.
# contexts - Контексты представления архитектурных компонентов.
# Позволяет выделить группу компонентов и отобразить ее по
# смыслу заложенному в контекст. Например, выделить все компоненты
# инфраструктуры. Через контексты реализуется смысл C4 Model.

import:
- entities/root.yaml
2 changes: 2 additions & 0 deletions public/metamodel/root.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
imports:
- dochub/root.yaml
6 changes: 5 additions & 1 deletion src/frontend/components/Architecture/Context.vue
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
},
asyncComputed: {
async schema() {
this.$nextTick(this.reloadCustomUML);
// *******************************************************
// ТУТ ВЕРОЯТНО ОТЪЕХАЛИ ДАТАСЕТЫ В КОНТЕКСТАХ
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Expand All @@ -70,6 +69,11 @@
return typeof this.schema?.uml === 'string';
}
},
watch: {
schema() {
this.reloadCustomUML();
}
},
methods : {
reloadCustomUML() {
if (!this.isCustomUML) return;
Expand Down
20 changes: 15 additions & 5 deletions src/frontend/components/Entities/EntityUpload.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,24 @@ import mustache from 'mustache';
import datasets from '@front/helpers/datasets';
import requests from '@front/helpers/requests';
import uriTool from '@front/helpers/uri';
import env, {Plugins} from '@front/helpers/env';

function doUpload(content, mime) {
const base64 = window.btoa(unescape(encodeURIComponent(content)));
const link = document.createElement('a');
document.body.appendChild(link);
link.href = `data:${mime};base64,${base64}`;
link.download = `dh_${Date.now()}.${mime.split('/').pop()}`;
link.click();
const href = `data:${mime};base64,${base64}`;
if (env.isPlugin(Plugins.idea)) {
window.$PAPI.download(
href,
'Выгрузка представления',
'Выберите файл для сохранения'
);
} else {
const link = document.createElement('a');
document.body.appendChild(link);
link.href = href;
link.download = `dh_${Date.now()}.${mime.split('/').pop()}`;
link.click();
}
}

// Выгружает документы типа upload
Expand Down
14 changes: 10 additions & 4 deletions src/frontend/components/Tools/Image.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
<v-alert v-if="error" color="warning">
Здесь должна быть картинка, но что-то пошло не так.<br>
Проверьте, что ресурс доступен, а CORS политики настроены верно.<br>
<br>
Ошибка:<br>
{{ error }}
URL: {{ url.toString() }}<br>
Ошибка: {{ error }}
</v-alert>
<img v-else v-bind:src="data" style="max-width:100%">
</div>
Expand All @@ -26,6 +25,11 @@
data: null
};
},
computed: {
url() {
return new URL(this.src, this.baseURI);
}
},
mounted() {
this.reloadImage();
},
Expand All @@ -36,7 +40,9 @@
.then((response) => {
this.data = URL.createObjectURL(new Blob([response.data], { type: response.headers['content-type']}));
})
.catch((e) => this.error = e);
.catch((e) => {
this.error = e;
});
}
}
};
Expand Down
1 change: 1 addition & 0 deletions src/frontend/helpers/requests.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import YAML from 'yaml';
import crc16 from '@global/helpers/crc16';
import gitlab from '@front/helpers/gitlab';
import uriTool from '@front/helpers/uri';
import { Buffer } from 'buffer';

import env, { Plugins } from './env';
import { responseCacheInterceptor, requestCacheInterceptor } from './cache';
Expand Down
28 changes: 24 additions & 4 deletions src/ide/idea/papi.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const PAPI = {
}
});
};

window.$PAPI.cefQuery({
request: '' + data,
onSuccess: resolve,
Expand Down Expand Up @@ -76,9 +76,18 @@ const PAPI = {
// Ищем окружение плагина

// eslint-disable-next-line no-useless-escape
const cefQuery = (Object.getOwnPropertyNames(window).filter(item => /^cefQuery\_[0-9]/.test(item)) || [])[0];
// const cefQuery = (Object.getOwnPropertyNames(window).filter(item => /^cefQuery\_[0-9]/.test(item)) || [])[0];

const params = new URLSearchParams(document.location.search);
// Пытаемся получить название интерфейсной функции из параметров.
// Если в параметрах ее нет, то берем '%$dochub-api-interface-func%' который
// заботливо должен был подложить плагин заменой.
const cefQuery = params.get('$dochub-api-interface-func') || '%$dochub-api-interface-func%';

// eslint-disable-next-line no-console
console.info('Plugin API function: ', cefQuery);

if (cefQuery) {
if (cefQuery && window[cefQuery]) {
PAPI.cefQuery = window[cefQuery];
window.$PAPI = PAPI;
window.DocHubIDEACodeExt = {
Expand All @@ -94,9 +103,20 @@ if (cefQuery) {
};

PAPI.getSettings().then((config) => {
const supportAPI = process.env.VUE_APP_DOCHUB_IDE_IDEA_API || [];
if (supportAPI.indexOf(config.api) < 0) {
const message = `Данная версия плагина имеет версию API [${config.api}]. Требуются версии: ${supportAPI.join(';')}. Возможно необходимо обновить плагин.`;
// eslint-disable-next-line no-console
console.error(message);
alert(message);
}
window.DocHubIDEACodeExt.settings = config;
// eslint-disable-next-line no-console
}).catch(() => console.error('Не могу получить конфигурацию плагина.'));
}).catch((e) => {
alert('Не могу получить конфигурацию плагина.');
// eslint-disable-next-line no-console
console.error(e);
});

} else {
// eslint-disable-next-line no-console
Expand Down
10 changes: 10 additions & 0 deletions vue.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,24 @@ const HtmlWebpackInlineSourcePlugin = require('@effortlessmotion/html-webpack-in
const pluginsConf = require('./plugins.json');
const PluginMaker = require('./src/building/plugin-maker');
const path = require('path');
const package = require('./package.json');

const plugins = [];
const entries = {
app: './src/frontend/main.js'
};

// Указывается где лежит движок SmartAnts
!process.env.VUE_APP_DOCHUB_SMART_ANTS_SOURCE && (process.env.VUE_APP_DOCHUB_SMART_ANTS_SOURCE = '@assets/libs/smartants');


// Определяем версии API плагинов, которые поддерживаются в Enterprise режиме
const ideaAPIAvailable = process.env.VUE_APP_DOCHUB_IDE_IDEA_API || package.ide?.idea?.api || [];
process.env.VUE_APP_DOCHUB_IDE_IDEA_API = Array.isArray(ideaAPIAvailable) ? ideaAPIAvailable : ideaAPIAvailable.toString().split(',');

const vscodeAPIAvailable = process.env.VUE_APP_DOCHUB_IDE_VSCODE_API || package.ide?.vscode?.api || [];
process.env.VUE_APP_DOCHUB_IDE_IDEA_API = Array.isArray(vscodeAPIAvailable) ? vscodeAPIAvailable : vscodeAPIAvailable.toString().split(',');

// Собираем встраиваемые плагины
//if (process.env.VUE_APP_DOCHUB_MODE === 'production') {
(pluginsConf?.inbuilt || []).map((item) => {
Expand Down

0 comments on commit d6444b1

Please sign in to comment.