Skip to content

Commit a59690b

Browse files
authored
make default frontend hostname configurable and add subschema extraction utility to toolbar
* make default frontend hostname configurable via github action * add utility menu option to schema editor, now with option to extract all inlined elements * apply formatting changes * fix merge conflict * remove unused imports * apply formatting changes --------- Co-authored-by: Logende <[email protected]>
1 parent f59dd6b commit a59690b

6 files changed

Lines changed: 32 additions & 17 deletions

File tree

.github/workflows/github-pages.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ jobs:
1616
- name: Install and Build
1717
env:
1818
USE_META_CONFIGURATOR_BASE_PATH: true # Set to true for GitHub Pages deployment
19+
FRONTEND_HOSTNAME: https://metaconfigurator.github.io/meta-configurator
1920
run: |
2021
cd meta_configurator
2122
npm ci
Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
1-
import {openClearDataEditorDialog} from '@/components/toolbar/clearFile';
21
import {toastService} from '@/utility/toastService';
3-
import {useDataSource} from '@/data/dataSource';
4-
import {fetchExternalContent} from '@/utility/fetchExternalContent';
2+
import {extractAllInlinedSchemaElements} from '@/schema/schemaManipulationUtils';
3+
import {getDataForMode} from '@/data/useDataLink';
4+
import {SessionMode} from '@/store/sessionMode';
55

66
/**
77
* Goes through the schema and extracts all sub-schema definitions into the $defs section.
88
*/
9-
export async function fetchSchemaFromUrl(schemaURL: string): Promise<void> {
10-
const response = await fetchExternalContent(schemaURL);
11-
const schemaContent = await response.json();
12-
const schemaName = schemaContent.title || 'Unknown Schema';
13-
useDataSource().userSchemaData.value = schemaContent;
14-
15-
openClearDataEditorDialog();
9+
export async function extractInlinedSchemaDefinitions(): Promise<void> {
10+
const extractedElementCount = extractAllInlinedSchemaElements(
11+
getDataForMode(SessionMode.SchemaEditor),
12+
false,
13+
true
14+
);
1615

1716
if (toastService) {
1817
toastService.add({
1918
severity: 'info',
2019
summary: 'Info',
21-
detail: `"${schemaName}" fetched successfully`,
22-
life: 3000,
20+
detail: `"Extracted ${extractedElementCount}" inlined schema elements into the $defs section.`,
21+
life: 5000,
2322
});
2423
}
2524
}

meta_configurator/src/components/toolbar/menuItems.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ import {openUploadFileDialog, openUploadSchemaDialog} from '@/components/toolbar
22
import {downloadFile} from '@/components/toolbar/downloadFile';
33
import {clearCurrentFile} from '@/components/toolbar/clearFile';
44
import {useSessionStore} from '@/store/sessionStore';
5-
import {ref} from 'vue';
6-
import type {SchemaOption} from '@/packaged-schemas/schemaOption';
75
import {openGenerateDataDialog} from '@/components/toolbar/createSampleData';
8-
import {getDataForMode, useCurrentData, useCurrentSchema} from '@/data/useDataLink';
6+
import {getDataForMode, useCurrentData} from '@/data/useDataLink';
97
import {useDataSource} from '@/data/dataSource';
108
import {SessionMode} from '@/store/sessionMode';
119
import {SETTINGS_DATA_DEFAULT} from '@/settings/defaultSettingsData';
@@ -14,6 +12,7 @@ import type {MenuItem} from 'primevue/menuitem';
1412
import {panelTypeRegistry} from '@/components/panels/panelTypeRegistry';
1513
import {panelTypeGuiEditor} from '@/components/panels/defaultPanelTypes';
1614
import {openImportSchemaDialog} from '@/components/toolbar/importFile';
15+
import {extractInlinedSchemaDefinitions} from '@/components/toolbar/extractSchemaDefinitions';
1716

1817
/**
1918
* Helper class that contains the menu items for the top menu bar.
@@ -185,6 +184,18 @@ export class MenuItems {
185184
icon: 'fa-solid fa-download',
186185
command: () => downloadFile(useDataSource().userSchemaData.value.title ?? 'untitled', true),
187186
},
187+
{
188+
label: 'Utility',
189+
icon: 'fa-solid fa-wrench',
190+
key: 'utility',
191+
items: [
192+
{
193+
label: 'Extract All Inlined Schema Elements',
194+
icon: 'fa-solid fa-scissors',
195+
command: extractInlinedSchemaDefinitions,
196+
},
197+
],
198+
},
188199
{
189200
label: 'Generate Source Code...',
190201
icon: 'fa-solid fa-file-code',

meta_configurator/src/fontawesome.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import {
3939
faListUl,
4040
faFileCode,
4141
faShare,
42+
faScissors,
4243
} from '@fortawesome/free-solid-svg-icons';
4344
import {
4445
faFile,
@@ -96,4 +97,5 @@ export function registerIcons() {
9697
library.add(faFileCode);
9798
library.add(faFileCodeRegular);
9899
library.add(faShare);
100+
library.add(faScissors);
99101
}

meta_configurator/src/settings/defaultSettingsData.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ export const SETTINGS_DATA_DEFAULT = {
8585
hidden: ['aiPrompts', 'debug', 'test'],
8686
},
8787
frontend: {
88-
hostname: 'https://metaconfigurator.github.io/meta-configurator',
88+
hostname:
89+
process.env.FRONTEND_HOSTNAME || 'https://metaconfigurator.github.io/meta-configurator',
8990
},
9091
backend: {
9192
hostname: 'https://metaconfigurator.informatik.uni-stuttgart.de',

meta_configurator/src/settings/settingsSchema.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,8 @@ export const SETTINGS_SCHEMA: TopLevelSchema = {
290290
hostname: {
291291
type: 'string',
292292
description: 'The hostname of the frontend server.',
293-
default: 'https://metaconfigurator.github.io/meta-configurator/',
293+
default:
294+
process.env.FRONTEND_HOSTNAME || 'https://metaconfigurator.github.io/meta-configurator',
294295
format: 'uri',
295296
},
296297
},

0 commit comments

Comments
 (0)