From 5d041e4c5c1baf6f1a4ab07fe664ad1582722f9e Mon Sep 17 00:00:00 2001 From: Ilya Bushin Date: Mon, 7 Nov 2022 16:47:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20we?= =?UTF-8?q?b-=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D1=8B,=20http-=D1=81?= =?UTF-8?q?=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D1=8B=20=D0=B8=20ws-=D1=81=D1=81?= =?UTF-8?q?=D1=8B=D0=BB=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/dark/http.svg | 4 +++ resources/dark/operation.svg | 4 +++ resources/dark/parameter.svg | 4 +++ resources/dark/urlTemplate.svg | 4 +++ resources/dark/ws.svg | 4 +++ resources/dark/wsLink.svg | 4 +++ resources/light/http.svg | 4 +++ resources/light/operation.svg | 4 +++ resources/light/parameter.svg | 4 +++ resources/light/urlTemplate.svg | 4 +++ resources/light/ws.svg | 4 +++ resources/light/wsLink.svg | 4 +++ src/metadataView.ts | 57 ++++++++++++++++++++++++++++++--- 13 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 resources/dark/http.svg create mode 100644 resources/dark/operation.svg create mode 100644 resources/dark/parameter.svg create mode 100644 resources/dark/urlTemplate.svg create mode 100644 resources/dark/ws.svg create mode 100644 resources/dark/wsLink.svg create mode 100644 resources/light/http.svg create mode 100644 resources/light/operation.svg create mode 100644 resources/light/parameter.svg create mode 100644 resources/light/urlTemplate.svg create mode 100644 resources/light/ws.svg create mode 100644 resources/light/wsLink.svg diff --git a/resources/dark/http.svg b/resources/dark/http.svg new file mode 100644 index 0000000..6030e5d --- /dev/null +++ b/resources/dark/http.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/dark/operation.svg b/resources/dark/operation.svg new file mode 100644 index 0000000..e1caad4 --- /dev/null +++ b/resources/dark/operation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/dark/parameter.svg b/resources/dark/parameter.svg new file mode 100644 index 0000000..cd5b2a1 --- /dev/null +++ b/resources/dark/parameter.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/dark/urlTemplate.svg b/resources/dark/urlTemplate.svg new file mode 100644 index 0000000..867312c --- /dev/null +++ b/resources/dark/urlTemplate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/dark/ws.svg b/resources/dark/ws.svg new file mode 100644 index 0000000..5363ab0 --- /dev/null +++ b/resources/dark/ws.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/dark/wsLink.svg b/resources/dark/wsLink.svg new file mode 100644 index 0000000..0a2a54f --- /dev/null +++ b/resources/dark/wsLink.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/light/http.svg b/resources/light/http.svg new file mode 100644 index 0000000..99eda32 --- /dev/null +++ b/resources/light/http.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/light/operation.svg b/resources/light/operation.svg new file mode 100644 index 0000000..19657b6 --- /dev/null +++ b/resources/light/operation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/light/parameter.svg b/resources/light/parameter.svg new file mode 100644 index 0000000..6cfb1a4 --- /dev/null +++ b/resources/light/parameter.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/light/urlTemplate.svg b/resources/light/urlTemplate.svg new file mode 100644 index 0000000..dad44bb --- /dev/null +++ b/resources/light/urlTemplate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/light/ws.svg b/resources/light/ws.svg new file mode 100644 index 0000000..c2fcad5 --- /dev/null +++ b/resources/light/ws.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/resources/light/wsLink.svg b/resources/light/wsLink.svg new file mode 100644 index 0000000..25eaf1e --- /dev/null +++ b/resources/light/wsLink.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/metadataView.ts b/src/metadataView.ts index 20eb48b..017f16a 100644 --- a/src/metadataView.ts +++ b/src/metadataView.ts @@ -22,6 +22,9 @@ interface MetadataObjects { exchangePlan: TreeItem[], eventSubscription: TreeItem[], scheduledJob: TreeItem[], + webService: TreeItem[], + httpService: TreeItem[], + wsReference: TreeItem[], constant: TreeItem[], catalog: TreeItem[], document: TreeItem[], @@ -47,7 +50,8 @@ type IconType = 'common' | 'subsystem' | 'commonModule' | 'sessionParameter' | ' 'informationRegister' | 'accumulationRegister' | 'tabularSection' | 'form' | 'command' | 'template' | 'dimension' | 'resource' | 'column' | 'task' | 'businessProcess' | 'externalDataSource' | 'accountingRegister' | 'calculationRegister' | 'filterCriteria' | 'eventSubscription' | 'scheduledJob' | - 'accountingFlag' | 'extDimensionAccountingFlag'; + 'accountingFlag' | 'extDimensionAccountingFlag' | 'http' | 'ws' | 'wsLink' | 'operation' | 'parameter' | + 'urlTemplate'; interface TreeItemParams { icon?: IconType, @@ -280,6 +284,21 @@ function CreateTreeElements(element: TreeItem, metadataFile: MetadataFile) { case current.$.name.startsWith('ScheduledJob.'): previous.scheduledJob.push(GetTreeItem(treeItemId, current.$.name, { icon: 'scheduledJob' })); break; + case current.$.name.startsWith('WebService.'): + previous.webService.push(GetTreeItem(treeItemId, current.$.name, { + icon: 'ws', context: 'module', path: treeItemPath, + children: FillWebServiceItemsByMetadata(treeItemId, current, attributeReduceResult) })); + + break; + case current.$.name.startsWith('HTTPService.'): + previous.httpService.push(GetTreeItem(treeItemId, current.$.name, { + icon: 'http', context: 'module', path: treeItemPath, + children: FillHttpServiceItemsByMetadata(treeItemId, current, attributeReduceResult) })); + + break; + case current.$.name.startsWith('WSReference.'): + previous.wsReference.push(GetTreeItem(treeItemId, current.$.name, { icon: 'wsLink' })); + break; case current.$.name.startsWith('Constant.'): previous.constant.push(GetTreeItem( treeItemId, current.$.name, { @@ -410,6 +429,9 @@ function CreateTreeElements(element: TreeItem, metadataFile: MetadataFile) { exchangePlan: [], eventSubscription: [], scheduledJob: [], + webService: [], + httpService: [], + wsReference: [], constant: [], catalog: [], document: [], @@ -437,6 +459,9 @@ function CreateTreeElements(element: TreeItem, metadataFile: MetadataFile) { SearchTree(element, element.id + '/exchangePlans')!.children = reduceResult.exchangePlan; SearchTree(element, element.id + '/eventSubscriptions')!.children = reduceResult.eventSubscription; SearchTree(element, element.id + '/scheduledJobs')!.children = reduceResult.scheduledJob; + SearchTree(element, element.id + '/webServices')!.children = reduceResult.webService; + SearchTree(element, element.id + '/httpServices')!.children = reduceResult.httpService; + SearchTree(element, element.id + '/wsReferences')!.children = reduceResult.wsReference; SearchTree(element, element.id + '/constants')!.children = reduceResult.constant; SearchTree(element, element.id + '/catalogs')!.children = reduceResult.catalog; @@ -460,6 +485,28 @@ function CreateTreeElements(element: TreeItem, metadataFile: MetadataFile) { console.timeEnd('reduce'); } +function FillWebServiceItemsByMetadata(idPrefix: string, versionMetadata: VersionMetadata, objectData: MetadataDictionaries) { + return (versionMetadata + .Metadata ?? []) + .filter(m => m.$.name.startsWith(versionMetadata.$.name + '.Operation.') && m.$.name.split('.').length === 4) + .map(m => GetTreeItem(idPrefix + m.$.id, m.$.name, { + icon: 'operation', children: (versionMetadata + .Metadata ?? []) + .filter(f => f.$.name.startsWith(versionMetadata.$.name + '.Operation.' + m.$.name.split('.').pop() + '.Parameter.') && f.$.name.split('.').length === 6) + .map(f => GetTreeItem(idPrefix + f.$.id, f.$.name, { icon: 'parameter' })) })); +} + +function FillHttpServiceItemsByMetadata(idPrefix: string, versionMetadata: VersionMetadata, objectData: MetadataDictionaries) { + return (versionMetadata + .Metadata ?? []) + .filter(m => m.$.name.startsWith(versionMetadata.$.name + '.URLTemplate.') && m.$.name.split('.').length === 4) + .map(m => GetTreeItem(idPrefix + m.$.id, m.$.name, { + icon: 'urlTemplate', children: (versionMetadata + .Metadata ?? []) + .filter(f => f.$.name.startsWith(versionMetadata.$.name + '.URLTemplate.' + m.$.name.split('.').pop() + '.Method.') && f.$.name.split('.').length === 6) + .map(f => GetTreeItem(idPrefix + f.$.id, f.$.name, { icon: 'parameter' })) })); +} + function FillObjectItemsByMetadata(idPrefix: string, versionMetadata: VersionMetadata, objectData: MetadataDictionaries): TreeItem[] { const attributes = (versionMetadata .Metadata ?? []) @@ -656,6 +703,8 @@ function CreatePath(name: string): string { .replace('Subsystem.', 'Subsystems/') .replace('CommonModule.', 'CommonModules/') .replace('ExchangePlan.', 'ExchangePlans/') + .replace('WebService.', 'WebServices/') + .replace('HTTPService.', 'HTTPServices/') .replace('Constant.', 'Constants/') .replace('Catalog.', 'Catalogs/') .replace('Document.', 'Documents/') @@ -720,9 +769,9 @@ function CreateMetadata(idPrefix: string) { GetTreeItem(idPrefix + '/commonTemplates', 'Общие макеты', { children: [] }), GetTreeItem(idPrefix + '/commonPictures', 'Общие картинки', { children: [] }), GetTreeItem(idPrefix + '/xdtoPackages', 'XDTO-пакеты', { children: [] }), - GetTreeItem(idPrefix + '/webServices', 'Web-сервисы', { children: [] }), - GetTreeItem(idPrefix + '/httpServices', 'HTTP-сервисы', { children: [] }), - GetTreeItem(idPrefix + '/wsReferences', 'WS-ссылки', { children: [] }), + GetTreeItem(idPrefix + '/webServices', 'Web-сервисы', { icon: 'ws', children: [] }), + GetTreeItem(idPrefix + '/httpServices', 'HTTP-сервисы', { icon: 'http', children: [] }), + GetTreeItem(idPrefix + '/wsReferences', 'WS-ссылки', { icon: 'wsLink', children: [] }), //GetTreeItem(idPrefix + '/', 'Сервисы интеграции', { children: [] }), GetTreeItem(idPrefix + '/styleItems', 'Элементы стиля', { children: [] }), //GetTreeItem(idPrefix + '/', 'Стили', { children: [] }),