ontotext-yasgui-web-component 1.1.7 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/confirmation-dialog_9.cjs.entry.js +98 -11
- package/dist/collection/models/ontotext-yasgui.js +4 -0
- package/dist/collection/models/yasqe.js +1 -0
- package/dist/collection/plugins/yasr/charts/charts-plugin.js +2 -0
- package/dist/collection/plugins/yasr/pivot-table/pivot-table-plugin.js +2 -0
- package/dist/collection/services/tooltip-service.js +1 -1
- package/dist/collection/services/translation.service.js +45 -0
- package/dist/collection/services/yasgui/yasgui-builder.js +9 -2
- package/dist/collection/services/yasqe/yasqe-service.js +33 -5
- package/dist/components/ontotext-yasgui.js +50 -8
- package/dist/components/translation.service.js +48 -3
- package/dist/esm/confirmation-dialog_9.entry.js +98 -11
- package/dist/ontotext-yasgui-web-component/ontotext-yasgui-web-component.esm.js +1 -1
- package/dist/ontotext-yasgui-web-component/p-982e871d.entry.js +1 -0
- package/dist/types/models/yasqe.d.ts +9 -0
- package/dist/types/models/yasr.d.ts +1 -0
- package/dist/types/services/translation.service.d.ts +39 -4
- package/dist/types/services/yasgui/yasgui-builder.d.ts +5 -0
- package/package.json +1 -1
- package/dist/ontotext-yasgui-web-component/p-25d1d45a.entry.js +0 -1
|
@@ -451,7 +451,7 @@ const fr = {
|
|
|
451
451
|
"yasr.plugin.extended_boolean.false": "NON",
|
|
452
452
|
"yasr.plugin.no_compatible.message": " ",
|
|
453
453
|
"yasr.plugin.extended_error.default_status.message": "Erreur",
|
|
454
|
-
"yasqe.actions.save_query.button.tooltip": "
|
|
454
|
+
"yasqe.actions.save_query.button.tooltip": "Créer une requête enregistrée",
|
|
455
455
|
"yasqe.actions.save_query.dialog.title": "Créer une nouvelle requête enregistrée",
|
|
456
456
|
"yasqe.actions.save_query.dialog.query.label": "Créez votre requête d'exemple",
|
|
457
457
|
"yasqe.actions.save_query.dialog.query.empty_error": "La requête ne peut pas être vide !",
|
|
@@ -469,8 +469,8 @@ const fr = {
|
|
|
469
469
|
"yasqe.actions.share_query.button.tooltip": "Obtenir l'URL de la requête en cours",
|
|
470
470
|
"yasqe.actions.include_inferred.true.button.tooltip": "Inclure les données déduites dans les résultats: AU",
|
|
471
471
|
"yasqe.actions.include_inferred.false.button.tooltip": "Inclure les données déduites dans les résultats: DÉSACTIVÉ",
|
|
472
|
-
"yasqe.actions.expand_results_same_as.true.button.tooltip": "Développer les résultats sur owl:sameAs:
|
|
473
|
-
"yasqe.actions.expand_results_same_as.false.button.tooltip": "Développer les résultats sur owl:sameAs:
|
|
472
|
+
"yasqe.actions.expand_results_same_as.true.button.tooltip": "Développer les résultats sur owl:sameAs: AU",
|
|
473
|
+
"yasqe.actions.expand_results_same_as.false.button.tooltip": "Développer les résultats sur owl:sameAs: DÉSACTIVÉ",
|
|
474
474
|
"yasqe.actions.expand_results_same_as.disable.button.tooltip": "Nécessite 'Inclure les données inférées' !",
|
|
475
475
|
"yasqe.footer_buttons.abort_query.button.label": "Annuler la requête",
|
|
476
476
|
"yasqe.footer_buttons.abort_query.button.title": "Cliquez pour annuler la requête",
|
|
@@ -487,11 +487,22 @@ const fr = {
|
|
|
487
487
|
|
|
488
488
|
const DEFAULT_LANG = 'en';
|
|
489
489
|
|
|
490
|
+
/**
|
|
491
|
+
* Service responsible for translation operations in the component.
|
|
492
|
+
*/
|
|
490
493
|
class TranslationService {
|
|
491
494
|
constructor() {
|
|
492
495
|
this.currentLang = DEFAULT_LANG;
|
|
493
496
|
this.bundle = { en, fr };
|
|
497
|
+
this.languageChangeObservers = [];
|
|
494
498
|
}
|
|
499
|
+
/**
|
|
500
|
+
* Sets the language which should be used for registered labels. If there is no registered bundle
|
|
501
|
+
* for the provided language, then the default language will be set and used.
|
|
502
|
+
* This method also notifies all registered LanguageChangeObserver's.
|
|
503
|
+
*
|
|
504
|
+
* @param lang The language to be set.
|
|
505
|
+
*/
|
|
495
506
|
setLanguage(lang = DEFAULT_LANG) {
|
|
496
507
|
if (!this.bundle || !this.bundle[this.currentLang]) {
|
|
497
508
|
console.warn(`Missing locale file for [${this.currentLang}]`);
|
|
@@ -500,6 +511,34 @@ class TranslationService {
|
|
|
500
511
|
else {
|
|
501
512
|
this.currentLang = lang;
|
|
502
513
|
}
|
|
514
|
+
this.notifyLanguageChangeObservers(this.currentLang);
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Subscribes the observer for further language change events.
|
|
518
|
+
*
|
|
519
|
+
* @param observer The observer to be registered for the language change events.
|
|
520
|
+
* @return Returns an unsubscribe function which can be called by the observer to unsubscribe
|
|
521
|
+
* itself.
|
|
522
|
+
*/
|
|
523
|
+
subscribeForLanguageChange(observer) {
|
|
524
|
+
const existingObserverIndex = this.languageChangeObservers.findIndex((subscription) => subscription.name === observer.name);
|
|
525
|
+
if (existingObserverIndex === -1) {
|
|
526
|
+
this.languageChangeObservers.push(observer);
|
|
527
|
+
}
|
|
528
|
+
return () => this.unsubscribeFromLanguageChange(observer);
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Unsubscribes the observer from the language change events.
|
|
532
|
+
* @param observer The observer to be unsubscribed.
|
|
533
|
+
*/
|
|
534
|
+
unsubscribeFromLanguageChange(observer) {
|
|
535
|
+
const existingObserverIndex = this.languageChangeObservers.findIndex((subscription) => subscription.name === observer.name);
|
|
536
|
+
if (existingObserverIndex !== -1) {
|
|
537
|
+
this.languageChangeObservers.splice(existingObserverIndex, 1);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
notifyLanguageChangeObservers(currentLang) {
|
|
541
|
+
this.languageChangeObservers.forEach((observer) => observer.notify(currentLang));
|
|
503
542
|
}
|
|
504
543
|
/**
|
|
505
544
|
* Merges external i18e configuration with bundled one.
|
|
@@ -533,6 +572,12 @@ class TranslationService {
|
|
|
533
572
|
}
|
|
534
573
|
});
|
|
535
574
|
}
|
|
575
|
+
/**
|
|
576
|
+
* Translates the provided key using the currently selected language by applying the parameters if
|
|
577
|
+
* provided.
|
|
578
|
+
* @param key The key for the label which needs to be translated.
|
|
579
|
+
* @param parameters Optional parameters which to be applied during the translation.
|
|
580
|
+
*/
|
|
536
581
|
translate(key, parameters) {
|
|
537
582
|
let translation = this.bundle[this.currentLang][key];
|
|
538
583
|
if (!translation) {
|
|
@@ -779,6 +824,10 @@ class OntotextYasgui {
|
|
|
779
824
|
callback(args);
|
|
780
825
|
});
|
|
781
826
|
}
|
|
827
|
+
getYasqe() {
|
|
828
|
+
var _a;
|
|
829
|
+
return (_a = this.yasgui) === null || _a === void 0 ? void 0 : _a.getTab().getYasqe();
|
|
830
|
+
}
|
|
782
831
|
setQuery(query) {
|
|
783
832
|
this.yasgui.getTab().getYasqe().setValue(query);
|
|
784
833
|
}
|
|
@@ -918,8 +967,15 @@ class YasguiBuilder {
|
|
|
918
967
|
*/
|
|
919
968
|
build(hostElement, yasguiConfiguration) {
|
|
920
969
|
const yasgui = this.createYasguiInstance(hostElement, yasguiConfiguration);
|
|
921
|
-
//
|
|
922
|
-
|
|
970
|
+
// patches have to be applied before returning yasgui instance.
|
|
971
|
+
this.instance = new OntotextYasgui(yasgui, yasguiConfiguration);
|
|
972
|
+
return this.instance;
|
|
973
|
+
}
|
|
974
|
+
/**
|
|
975
|
+
* Returns the OntotextYasgui instance if created or undefined otherwise.
|
|
976
|
+
*/
|
|
977
|
+
getInstance() {
|
|
978
|
+
return this.instance;
|
|
923
979
|
}
|
|
924
980
|
createYasguiInstance(hostElement, yasguiConfiguration) {
|
|
925
981
|
// @ts-ignore
|
|
@@ -1075,7 +1131,7 @@ class TooltipService {
|
|
|
1075
1131
|
return tooltipElement;
|
|
1076
1132
|
}
|
|
1077
1133
|
static updateTooltip(element, tooltip, placement) {
|
|
1078
|
-
const parentElement = element.parentElement;
|
|
1134
|
+
const parentElement = element === null || element === void 0 ? void 0 : element.parentElement;
|
|
1079
1135
|
if (parentElement && 'yasgui-tooltip' === parentElement.tagName.toLowerCase()) {
|
|
1080
1136
|
TooltipService.updateTooltipData(parentElement, tooltip);
|
|
1081
1137
|
TooltipService.updatePlacement(parentElement, placement);
|
|
@@ -1126,15 +1182,45 @@ class YasqeService {
|
|
|
1126
1182
|
constructor(serviceFactory) {
|
|
1127
1183
|
//@ts-ignore
|
|
1128
1184
|
this.buttonBuilders = new Map();
|
|
1185
|
+
this.yasguiBuilder = serviceFactory.get(YasguiBuilder);
|
|
1129
1186
|
this.eventService = serviceFactory.getEventService();
|
|
1130
|
-
|
|
1187
|
+
YasqeService.initPluginButtonNameToClassNameMapping();
|
|
1131
1188
|
this.translationService = serviceFactory.get(TranslationService);
|
|
1189
|
+
this.translationService.subscribeForLanguageChange({
|
|
1190
|
+
name: 'YasqeServiceLanguageChangeObserver',
|
|
1191
|
+
notify: (currentLang) => this.onLanguageChange(currentLang)
|
|
1192
|
+
});
|
|
1132
1193
|
this.buttonBuilders.set(YasqeButtonName.CREATE_SAVED_QUERY, () => this.buildCreateSaveQueryButton());
|
|
1133
1194
|
this.buttonBuilders.set(YasqeButtonName.SHOW_SAVED_QUERIES, () => this.buildShowSavedQueriesButton());
|
|
1134
1195
|
this.buttonBuilders.set(YasqeButtonName.SHARE_QUERY, () => this.buildShareQueryButton());
|
|
1135
1196
|
this.buttonBuilders.set('includeInferredStatements', (externalConfiguration, yasqe) => this.buildInferAndSameAsButtons(externalConfiguration, yasqe));
|
|
1136
1197
|
}
|
|
1137
|
-
|
|
1198
|
+
onLanguageChange(_currentLang) {
|
|
1199
|
+
let button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.CREATE_SAVED_QUERY)}`);
|
|
1200
|
+
let tooltip = this.translationService.translate('yasqe.actions.save_query.button.tooltip');
|
|
1201
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
1202
|
+
button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.SHOW_SAVED_QUERIES)}`);
|
|
1203
|
+
tooltip = this.translationService.translate('yasqe.actions.show_saved_queries.button.tooltip');
|
|
1204
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
1205
|
+
button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.SHARE_QUERY)}`);
|
|
1206
|
+
tooltip = this.translationService.translate('yasqe.actions.share_query.button.tooltip');
|
|
1207
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
1208
|
+
const ontotextYasgui = this.yasguiBuilder.getInstance();
|
|
1209
|
+
const yasqe = ontotextYasgui === null || ontotextYasgui === void 0 ? void 0 : ontotextYasgui.getYasqe();
|
|
1210
|
+
if (ontotextYasgui && yasqe) {
|
|
1211
|
+
const inferredValue = yasqe.getInfer();
|
|
1212
|
+
const sameAsValue = yasqe.getSameAs();
|
|
1213
|
+
const sameAsButton = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.EXPANDS_RESULTS)}`);
|
|
1214
|
+
const sameAsButtonTooltipEl = sameAsButton === null || sameAsButton === void 0 ? void 0 : sameAsButton.parentElement;
|
|
1215
|
+
const inferStatementsButton = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.INFER_STATEMENTS)}`);
|
|
1216
|
+
const inferStatementButtonTooltipEl = inferStatementsButton === null || inferStatementsButton === void 0 ? void 0 : inferStatementsButton.parentElement;
|
|
1217
|
+
if (sameAsButtonTooltipEl && inferStatementButtonTooltipEl) {
|
|
1218
|
+
this.updateInferredElement(inferStatementButtonTooltipEl, sameAsButtonTooltipEl, inferredValue, sameAsValue);
|
|
1219
|
+
this.updateSameAsElement(sameAsButtonTooltipEl, sameAsValue, inferredValue);
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
}
|
|
1223
|
+
static initPluginButtonNameToClassNameMapping() {
|
|
1138
1224
|
YasqeService.pluginButtonNameToClassNameMapping = new Map();
|
|
1139
1225
|
YasqeService.pluginButtonNameToClassNameMapping.set(YasqeButtonName.CREATE_SAVED_QUERY, `yasqe_${YasqeButtonName.CREATE_SAVED_QUERY}Button`);
|
|
1140
1226
|
YasqeService.pluginButtonNameToClassNameMapping.set(YasqeButtonName.SHOW_SAVED_QUERIES, `yasqe_${YasqeButtonName.SHOW_SAVED_QUERIES}Button`);
|
|
@@ -1288,9 +1374,6 @@ class YasqeService {
|
|
|
1288
1374
|
/**
|
|
1289
1375
|
* Initializes the state of infer and same as buttons.
|
|
1290
1376
|
*
|
|
1291
|
-
*
|
|
1292
|
-
*
|
|
1293
|
-
*
|
|
1294
1377
|
* @param yasqe - the yasqe.
|
|
1295
1378
|
* @param defaultInfer - default value of infer if not set in <code>yasqe</code>
|
|
1296
1379
|
* @param defaultSameAs - default value of sameAs if not set in <code>yasqe</code>
|
|
@@ -2689,6 +2772,8 @@ class PivotTablePlugin {
|
|
|
2689
2772
|
}
|
|
2690
2773
|
destroy() {
|
|
2691
2774
|
// TODO remove all listeners if any.
|
|
2775
|
+
const configButtonWrapper = this.yasr.rootEl.querySelector('.yasr_header .chart-config-control');
|
|
2776
|
+
configButtonWrapper === null || configButtonWrapper === void 0 ? void 0 : configButtonWrapper.remove();
|
|
2692
2777
|
}
|
|
2693
2778
|
download(_filename) {
|
|
2694
2779
|
// @ts-ignore
|
|
@@ -3007,6 +3092,8 @@ class ChartsPlugin {
|
|
|
3007
3092
|
destroy() {
|
|
3008
3093
|
// @ts-ignore
|
|
3009
3094
|
google.visualization.events.removeListener(this.chartEditorOkHandler);
|
|
3095
|
+
const configButtonWrapper = this.yasr.rootEl.querySelector('.yasr_header .chart-config-control');
|
|
3096
|
+
configButtonWrapper === null || configButtonWrapper === void 0 ? void 0 : configButtonWrapper.remove();
|
|
3010
3097
|
}
|
|
3011
3098
|
drawChart() {
|
|
3012
3099
|
this.yasr.resultsEl.innerHTML = '';
|
|
@@ -24,6 +24,10 @@ export class OntotextYasgui {
|
|
|
24
24
|
callback(args);
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
+
getYasqe() {
|
|
28
|
+
var _a;
|
|
29
|
+
return (_a = this.yasgui) === null || _a === void 0 ? void 0 : _a.getTab().getYasqe();
|
|
30
|
+
}
|
|
27
31
|
setQuery(query) {
|
|
28
32
|
this.yasgui.getTab().getYasqe().setValue(query);
|
|
29
33
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -89,6 +89,8 @@ export class ChartsPlugin {
|
|
|
89
89
|
destroy() {
|
|
90
90
|
// @ts-ignore
|
|
91
91
|
google.visualization.events.removeListener(this.chartEditorOkHandler);
|
|
92
|
+
const configButtonWrapper = this.yasr.rootEl.querySelector('.yasr_header .chart-config-control');
|
|
93
|
+
configButtonWrapper === null || configButtonWrapper === void 0 ? void 0 : configButtonWrapper.remove();
|
|
92
94
|
}
|
|
93
95
|
drawChart() {
|
|
94
96
|
this.yasr.resultsEl.innerHTML = '';
|
|
@@ -80,6 +80,8 @@ export class PivotTablePlugin {
|
|
|
80
80
|
}
|
|
81
81
|
destroy() {
|
|
82
82
|
// TODO remove all listeners if any.
|
|
83
|
+
const configButtonWrapper = this.yasr.rootEl.querySelector('.yasr_header .chart-config-control');
|
|
84
|
+
configButtonWrapper === null || configButtonWrapper === void 0 ? void 0 : configButtonWrapper.remove();
|
|
83
85
|
}
|
|
84
86
|
download(_filename) {
|
|
85
87
|
// @ts-ignore
|
|
@@ -20,7 +20,7 @@ export class TooltipService {
|
|
|
20
20
|
return tooltipElement;
|
|
21
21
|
}
|
|
22
22
|
static updateTooltip(element, tooltip, placement) {
|
|
23
|
-
const parentElement = element.parentElement;
|
|
23
|
+
const parentElement = element === null || element === void 0 ? void 0 : element.parentElement;
|
|
24
24
|
if (parentElement && 'yasgui-tooltip' === parentElement.tagName.toLowerCase()) {
|
|
25
25
|
TooltipService.updateTooltipData(parentElement, tooltip);
|
|
26
26
|
TooltipService.updatePlacement(parentElement, placement);
|
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
import en from '../i18n/locale-en.json';
|
|
2
2
|
import fr from '../i18n/locale-fr.json';
|
|
3
3
|
import { DEFAULT_LANG } from '../configurations/constants';
|
|
4
|
+
/**
|
|
5
|
+
* Service responsible for translation operations in the component.
|
|
6
|
+
*/
|
|
4
7
|
export class TranslationService {
|
|
5
8
|
constructor() {
|
|
6
9
|
this.currentLang = DEFAULT_LANG;
|
|
7
10
|
this.bundle = { en, fr };
|
|
11
|
+
this.languageChangeObservers = [];
|
|
8
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Sets the language which should be used for registered labels. If there is no registered bundle
|
|
15
|
+
* for the provided language, then the default language will be set and used.
|
|
16
|
+
* This method also notifies all registered LanguageChangeObserver's.
|
|
17
|
+
*
|
|
18
|
+
* @param lang The language to be set.
|
|
19
|
+
*/
|
|
9
20
|
setLanguage(lang = DEFAULT_LANG) {
|
|
10
21
|
if (!this.bundle || !this.bundle[this.currentLang]) {
|
|
11
22
|
console.warn(`Missing locale file for [${this.currentLang}]`);
|
|
@@ -14,6 +25,34 @@ export class TranslationService {
|
|
|
14
25
|
else {
|
|
15
26
|
this.currentLang = lang;
|
|
16
27
|
}
|
|
28
|
+
this.notifyLanguageChangeObservers(this.currentLang);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Subscribes the observer for further language change events.
|
|
32
|
+
*
|
|
33
|
+
* @param observer The observer to be registered for the language change events.
|
|
34
|
+
* @return Returns an unsubscribe function which can be called by the observer to unsubscribe
|
|
35
|
+
* itself.
|
|
36
|
+
*/
|
|
37
|
+
subscribeForLanguageChange(observer) {
|
|
38
|
+
const existingObserverIndex = this.languageChangeObservers.findIndex((subscription) => subscription.name === observer.name);
|
|
39
|
+
if (existingObserverIndex === -1) {
|
|
40
|
+
this.languageChangeObservers.push(observer);
|
|
41
|
+
}
|
|
42
|
+
return () => this.unsubscribeFromLanguageChange(observer);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Unsubscribes the observer from the language change events.
|
|
46
|
+
* @param observer The observer to be unsubscribed.
|
|
47
|
+
*/
|
|
48
|
+
unsubscribeFromLanguageChange(observer) {
|
|
49
|
+
const existingObserverIndex = this.languageChangeObservers.findIndex((subscription) => subscription.name === observer.name);
|
|
50
|
+
if (existingObserverIndex !== -1) {
|
|
51
|
+
this.languageChangeObservers.splice(existingObserverIndex, 1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
notifyLanguageChangeObservers(currentLang) {
|
|
55
|
+
this.languageChangeObservers.forEach((observer) => observer.notify(currentLang));
|
|
17
56
|
}
|
|
18
57
|
/**
|
|
19
58
|
* Merges external i18e configuration with bundled one.
|
|
@@ -47,6 +86,12 @@ export class TranslationService {
|
|
|
47
86
|
}
|
|
48
87
|
});
|
|
49
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Translates the provided key using the currently selected language by applying the parameters if
|
|
91
|
+
* provided.
|
|
92
|
+
* @param key The key for the label which needs to be translated.
|
|
93
|
+
* @param parameters Optional parameters which to be applied during the translation.
|
|
94
|
+
*/
|
|
50
95
|
translate(key, parameters) {
|
|
51
96
|
let translation = this.bundle[this.currentLang][key];
|
|
52
97
|
if (!translation) {
|
|
@@ -14,8 +14,15 @@ export class YasguiBuilder {
|
|
|
14
14
|
*/
|
|
15
15
|
build(hostElement, yasguiConfiguration) {
|
|
16
16
|
const yasgui = this.createYasguiInstance(hostElement, yasguiConfiguration);
|
|
17
|
-
//
|
|
18
|
-
|
|
17
|
+
// patches have to be applied before returning yasgui instance.
|
|
18
|
+
this.instance = new OntotextYasgui(yasgui, yasguiConfiguration);
|
|
19
|
+
return this.instance;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Returns the OntotextYasgui instance if created or undefined otherwise.
|
|
23
|
+
*/
|
|
24
|
+
getInstance() {
|
|
25
|
+
return this.instance;
|
|
19
26
|
}
|
|
20
27
|
createYasguiInstance(hostElement, yasguiConfiguration) {
|
|
21
28
|
// @ts-ignore
|
|
@@ -4,19 +4,50 @@ import { InternalShareQueryEvent } from '../../models/internal-events/internal-s
|
|
|
4
4
|
import { InternalShowSavedQueriesEvent } from '../../models/internal-events/internal-show-saved-queries-event';
|
|
5
5
|
import { YasqeButtonName } from '../../models/yasqe-button-name';
|
|
6
6
|
import { InternalCreateSavedQueryEvent } from '../../models/internal-events/internal-create-saved-query-event';
|
|
7
|
+
import { YasguiBuilder } from "../yasgui/yasgui-builder";
|
|
7
8
|
export class YasqeService {
|
|
8
9
|
constructor(serviceFactory) {
|
|
9
10
|
//@ts-ignore
|
|
10
11
|
this.buttonBuilders = new Map();
|
|
12
|
+
this.yasguiBuilder = serviceFactory.get(YasguiBuilder);
|
|
11
13
|
this.eventService = serviceFactory.getEventService();
|
|
12
|
-
|
|
14
|
+
YasqeService.initPluginButtonNameToClassNameMapping();
|
|
13
15
|
this.translationService = serviceFactory.get(TranslationService);
|
|
16
|
+
this.translationService.subscribeForLanguageChange({
|
|
17
|
+
name: 'YasqeServiceLanguageChangeObserver',
|
|
18
|
+
notify: (currentLang) => this.onLanguageChange(currentLang)
|
|
19
|
+
});
|
|
14
20
|
this.buttonBuilders.set(YasqeButtonName.CREATE_SAVED_QUERY, () => this.buildCreateSaveQueryButton());
|
|
15
21
|
this.buttonBuilders.set(YasqeButtonName.SHOW_SAVED_QUERIES, () => this.buildShowSavedQueriesButton());
|
|
16
22
|
this.buttonBuilders.set(YasqeButtonName.SHARE_QUERY, () => this.buildShareQueryButton());
|
|
17
23
|
this.buttonBuilders.set('includeInferredStatements', (externalConfiguration, yasqe) => this.buildInferAndSameAsButtons(externalConfiguration, yasqe));
|
|
18
24
|
}
|
|
19
|
-
|
|
25
|
+
onLanguageChange(_currentLang) {
|
|
26
|
+
let button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.CREATE_SAVED_QUERY)}`);
|
|
27
|
+
let tooltip = this.translationService.translate('yasqe.actions.save_query.button.tooltip');
|
|
28
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
29
|
+
button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.SHOW_SAVED_QUERIES)}`);
|
|
30
|
+
tooltip = this.translationService.translate('yasqe.actions.show_saved_queries.button.tooltip');
|
|
31
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
32
|
+
button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.SHARE_QUERY)}`);
|
|
33
|
+
tooltip = this.translationService.translate('yasqe.actions.share_query.button.tooltip');
|
|
34
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
35
|
+
const ontotextYasgui = this.yasguiBuilder.getInstance();
|
|
36
|
+
const yasqe = ontotextYasgui === null || ontotextYasgui === void 0 ? void 0 : ontotextYasgui.getYasqe();
|
|
37
|
+
if (ontotextYasgui && yasqe) {
|
|
38
|
+
const inferredValue = yasqe.getInfer();
|
|
39
|
+
const sameAsValue = yasqe.getSameAs();
|
|
40
|
+
const sameAsButton = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.EXPANDS_RESULTS)}`);
|
|
41
|
+
const sameAsButtonTooltipEl = sameAsButton === null || sameAsButton === void 0 ? void 0 : sameAsButton.parentElement;
|
|
42
|
+
const inferStatementsButton = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.INFER_STATEMENTS)}`);
|
|
43
|
+
const inferStatementButtonTooltipEl = inferStatementsButton === null || inferStatementsButton === void 0 ? void 0 : inferStatementsButton.parentElement;
|
|
44
|
+
if (sameAsButtonTooltipEl && inferStatementButtonTooltipEl) {
|
|
45
|
+
this.updateInferredElement(inferStatementButtonTooltipEl, sameAsButtonTooltipEl, inferredValue, sameAsValue);
|
|
46
|
+
this.updateSameAsElement(sameAsButtonTooltipEl, sameAsValue, inferredValue);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
static initPluginButtonNameToClassNameMapping() {
|
|
20
51
|
YasqeService.pluginButtonNameToClassNameMapping = new Map();
|
|
21
52
|
YasqeService.pluginButtonNameToClassNameMapping.set(YasqeButtonName.CREATE_SAVED_QUERY, `yasqe_${YasqeButtonName.CREATE_SAVED_QUERY}Button`);
|
|
22
53
|
YasqeService.pluginButtonNameToClassNameMapping.set(YasqeButtonName.SHOW_SAVED_QUERIES, `yasqe_${YasqeButtonName.SHOW_SAVED_QUERIES}Button`);
|
|
@@ -170,9 +201,6 @@ export class YasqeService {
|
|
|
170
201
|
/**
|
|
171
202
|
* Initializes the state of infer and same as buttons.
|
|
172
203
|
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
204
|
* @param yasqe - the yasqe.
|
|
177
205
|
* @param defaultInfer - default value of infer if not set in <code>yasqe</code>
|
|
178
206
|
* @param defaultSameAs - default value of sameAs if not set in <code>yasqe</code>
|
|
@@ -106,6 +106,10 @@ class OntotextYasgui$1 {
|
|
|
106
106
|
callback(args);
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
|
+
getYasqe() {
|
|
110
|
+
var _a;
|
|
111
|
+
return (_a = this.yasgui) === null || _a === void 0 ? void 0 : _a.getTab().getYasqe();
|
|
112
|
+
}
|
|
109
113
|
setQuery(query) {
|
|
110
114
|
this.yasgui.getTab().getYasqe().setValue(query);
|
|
111
115
|
}
|
|
@@ -245,8 +249,15 @@ class YasguiBuilder {
|
|
|
245
249
|
*/
|
|
246
250
|
build(hostElement, yasguiConfiguration) {
|
|
247
251
|
const yasgui = this.createYasguiInstance(hostElement, yasguiConfiguration);
|
|
248
|
-
//
|
|
249
|
-
|
|
252
|
+
// patches have to be applied before returning yasgui instance.
|
|
253
|
+
this.instance = new OntotextYasgui$1(yasgui, yasguiConfiguration);
|
|
254
|
+
return this.instance;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Returns the OntotextYasgui instance if created or undefined otherwise.
|
|
258
|
+
*/
|
|
259
|
+
getInstance() {
|
|
260
|
+
return this.instance;
|
|
250
261
|
}
|
|
251
262
|
createYasguiInstance(hostElement, yasguiConfiguration) {
|
|
252
263
|
// @ts-ignore
|
|
@@ -402,7 +413,7 @@ class TooltipService {
|
|
|
402
413
|
return tooltipElement;
|
|
403
414
|
}
|
|
404
415
|
static updateTooltip(element, tooltip, placement) {
|
|
405
|
-
const parentElement = element.parentElement;
|
|
416
|
+
const parentElement = element === null || element === void 0 ? void 0 : element.parentElement;
|
|
406
417
|
if (parentElement && 'yasgui-tooltip' === parentElement.tagName.toLowerCase()) {
|
|
407
418
|
TooltipService.updateTooltipData(parentElement, tooltip);
|
|
408
419
|
TooltipService.updatePlacement(parentElement, placement);
|
|
@@ -453,15 +464,45 @@ class YasqeService {
|
|
|
453
464
|
constructor(serviceFactory) {
|
|
454
465
|
//@ts-ignore
|
|
455
466
|
this.buttonBuilders = new Map();
|
|
467
|
+
this.yasguiBuilder = serviceFactory.get(YasguiBuilder);
|
|
456
468
|
this.eventService = serviceFactory.getEventService();
|
|
457
|
-
|
|
469
|
+
YasqeService.initPluginButtonNameToClassNameMapping();
|
|
458
470
|
this.translationService = serviceFactory.get(TranslationService);
|
|
471
|
+
this.translationService.subscribeForLanguageChange({
|
|
472
|
+
name: 'YasqeServiceLanguageChangeObserver',
|
|
473
|
+
notify: (currentLang) => this.onLanguageChange(currentLang)
|
|
474
|
+
});
|
|
459
475
|
this.buttonBuilders.set(YasqeButtonName.CREATE_SAVED_QUERY, () => this.buildCreateSaveQueryButton());
|
|
460
476
|
this.buttonBuilders.set(YasqeButtonName.SHOW_SAVED_QUERIES, () => this.buildShowSavedQueriesButton());
|
|
461
477
|
this.buttonBuilders.set(YasqeButtonName.SHARE_QUERY, () => this.buildShareQueryButton());
|
|
462
478
|
this.buttonBuilders.set('includeInferredStatements', (externalConfiguration, yasqe) => this.buildInferAndSameAsButtons(externalConfiguration, yasqe));
|
|
463
479
|
}
|
|
464
|
-
|
|
480
|
+
onLanguageChange(_currentLang) {
|
|
481
|
+
let button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.CREATE_SAVED_QUERY)}`);
|
|
482
|
+
let tooltip = this.translationService.translate('yasqe.actions.save_query.button.tooltip');
|
|
483
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
484
|
+
button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.SHOW_SAVED_QUERIES)}`);
|
|
485
|
+
tooltip = this.translationService.translate('yasqe.actions.show_saved_queries.button.tooltip');
|
|
486
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
487
|
+
button = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.SHARE_QUERY)}`);
|
|
488
|
+
tooltip = this.translationService.translate('yasqe.actions.share_query.button.tooltip');
|
|
489
|
+
TooltipService.updateTooltip(button, tooltip);
|
|
490
|
+
const ontotextYasgui = this.yasguiBuilder.getInstance();
|
|
491
|
+
const yasqe = ontotextYasgui === null || ontotextYasgui === void 0 ? void 0 : ontotextYasgui.getYasqe();
|
|
492
|
+
if (ontotextYasgui && yasqe) {
|
|
493
|
+
const inferredValue = yasqe.getInfer();
|
|
494
|
+
const sameAsValue = yasqe.getSameAs();
|
|
495
|
+
const sameAsButton = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.EXPANDS_RESULTS)}`);
|
|
496
|
+
const sameAsButtonTooltipEl = sameAsButton === null || sameAsButton === void 0 ? void 0 : sameAsButton.parentElement;
|
|
497
|
+
const inferStatementsButton = document.querySelector(`.${YasqeService.getActionButtonClassName(YasqeButtonName.INFER_STATEMENTS)}`);
|
|
498
|
+
const inferStatementButtonTooltipEl = inferStatementsButton === null || inferStatementsButton === void 0 ? void 0 : inferStatementsButton.parentElement;
|
|
499
|
+
if (sameAsButtonTooltipEl && inferStatementButtonTooltipEl) {
|
|
500
|
+
this.updateInferredElement(inferStatementButtonTooltipEl, sameAsButtonTooltipEl, inferredValue, sameAsValue);
|
|
501
|
+
this.updateSameAsElement(sameAsButtonTooltipEl, sameAsValue, inferredValue);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
static initPluginButtonNameToClassNameMapping() {
|
|
465
506
|
YasqeService.pluginButtonNameToClassNameMapping = new Map();
|
|
466
507
|
YasqeService.pluginButtonNameToClassNameMapping.set(YasqeButtonName.CREATE_SAVED_QUERY, `yasqe_${YasqeButtonName.CREATE_SAVED_QUERY}Button`);
|
|
467
508
|
YasqeService.pluginButtonNameToClassNameMapping.set(YasqeButtonName.SHOW_SAVED_QUERIES, `yasqe_${YasqeButtonName.SHOW_SAVED_QUERIES}Button`);
|
|
@@ -615,9 +656,6 @@ class YasqeService {
|
|
|
615
656
|
/**
|
|
616
657
|
* Initializes the state of infer and same as buttons.
|
|
617
658
|
*
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
*
|
|
621
659
|
* @param yasqe - the yasqe.
|
|
622
660
|
* @param defaultInfer - default value of infer if not set in <code>yasqe</code>
|
|
623
661
|
* @param defaultSameAs - default value of sameAs if not set in <code>yasqe</code>
|
|
@@ -2016,6 +2054,8 @@ class PivotTablePlugin {
|
|
|
2016
2054
|
}
|
|
2017
2055
|
destroy() {
|
|
2018
2056
|
// TODO remove all listeners if any.
|
|
2057
|
+
const configButtonWrapper = this.yasr.rootEl.querySelector('.yasr_header .chart-config-control');
|
|
2058
|
+
configButtonWrapper === null || configButtonWrapper === void 0 ? void 0 : configButtonWrapper.remove();
|
|
2019
2059
|
}
|
|
2020
2060
|
download(_filename) {
|
|
2021
2061
|
// @ts-ignore
|
|
@@ -2334,6 +2374,8 @@ class ChartsPlugin {
|
|
|
2334
2374
|
destroy() {
|
|
2335
2375
|
// @ts-ignore
|
|
2336
2376
|
google.visualization.events.removeListener(this.chartEditorOkHandler);
|
|
2377
|
+
const configButtonWrapper = this.yasr.rootEl.querySelector('.yasr_header .chart-config-control');
|
|
2378
|
+
configButtonWrapper === null || configButtonWrapper === void 0 ? void 0 : configButtonWrapper.remove();
|
|
2337
2379
|
}
|
|
2338
2380
|
drawChart() {
|
|
2339
2381
|
this.yasr.resultsEl.innerHTML = '';
|
|
@@ -398,7 +398,7 @@ const fr = {
|
|
|
398
398
|
"yasr.plugin.extended_boolean.false": "NON",
|
|
399
399
|
"yasr.plugin.no_compatible.message": " ",
|
|
400
400
|
"yasr.plugin.extended_error.default_status.message": "Erreur",
|
|
401
|
-
"yasqe.actions.save_query.button.tooltip": "
|
|
401
|
+
"yasqe.actions.save_query.button.tooltip": "Créer une requête enregistrée",
|
|
402
402
|
"yasqe.actions.save_query.dialog.title": "Créer une nouvelle requête enregistrée",
|
|
403
403
|
"yasqe.actions.save_query.dialog.query.label": "Créez votre requête d'exemple",
|
|
404
404
|
"yasqe.actions.save_query.dialog.query.empty_error": "La requête ne peut pas être vide !",
|
|
@@ -416,8 +416,8 @@ const fr = {
|
|
|
416
416
|
"yasqe.actions.share_query.button.tooltip": "Obtenir l'URL de la requête en cours",
|
|
417
417
|
"yasqe.actions.include_inferred.true.button.tooltip": "Inclure les données déduites dans les résultats: AU",
|
|
418
418
|
"yasqe.actions.include_inferred.false.button.tooltip": "Inclure les données déduites dans les résultats: DÉSACTIVÉ",
|
|
419
|
-
"yasqe.actions.expand_results_same_as.true.button.tooltip": "Développer les résultats sur owl:sameAs:
|
|
420
|
-
"yasqe.actions.expand_results_same_as.false.button.tooltip": "Développer les résultats sur owl:sameAs:
|
|
419
|
+
"yasqe.actions.expand_results_same_as.true.button.tooltip": "Développer les résultats sur owl:sameAs: AU",
|
|
420
|
+
"yasqe.actions.expand_results_same_as.false.button.tooltip": "Développer les résultats sur owl:sameAs: DÉSACTIVÉ",
|
|
421
421
|
"yasqe.actions.expand_results_same_as.disable.button.tooltip": "Nécessite 'Inclure les données inférées' !",
|
|
422
422
|
"yasqe.footer_buttons.abort_query.button.label": "Annuler la requête",
|
|
423
423
|
"yasqe.footer_buttons.abort_query.button.title": "Cliquez pour annuler la requête",
|
|
@@ -434,11 +434,22 @@ const fr = {
|
|
|
434
434
|
|
|
435
435
|
const DEFAULT_LANG = 'en';
|
|
436
436
|
|
|
437
|
+
/**
|
|
438
|
+
* Service responsible for translation operations in the component.
|
|
439
|
+
*/
|
|
437
440
|
class TranslationService {
|
|
438
441
|
constructor() {
|
|
439
442
|
this.currentLang = DEFAULT_LANG;
|
|
440
443
|
this.bundle = { en, fr };
|
|
444
|
+
this.languageChangeObservers = [];
|
|
441
445
|
}
|
|
446
|
+
/**
|
|
447
|
+
* Sets the language which should be used for registered labels. If there is no registered bundle
|
|
448
|
+
* for the provided language, then the default language will be set and used.
|
|
449
|
+
* This method also notifies all registered LanguageChangeObserver's.
|
|
450
|
+
*
|
|
451
|
+
* @param lang The language to be set.
|
|
452
|
+
*/
|
|
442
453
|
setLanguage(lang = DEFAULT_LANG) {
|
|
443
454
|
if (!this.bundle || !this.bundle[this.currentLang]) {
|
|
444
455
|
console.warn(`Missing locale file for [${this.currentLang}]`);
|
|
@@ -447,6 +458,34 @@ class TranslationService {
|
|
|
447
458
|
else {
|
|
448
459
|
this.currentLang = lang;
|
|
449
460
|
}
|
|
461
|
+
this.notifyLanguageChangeObservers(this.currentLang);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Subscribes the observer for further language change events.
|
|
465
|
+
*
|
|
466
|
+
* @param observer The observer to be registered for the language change events.
|
|
467
|
+
* @return Returns an unsubscribe function which can be called by the observer to unsubscribe
|
|
468
|
+
* itself.
|
|
469
|
+
*/
|
|
470
|
+
subscribeForLanguageChange(observer) {
|
|
471
|
+
const existingObserverIndex = this.languageChangeObservers.findIndex((subscription) => subscription.name === observer.name);
|
|
472
|
+
if (existingObserverIndex === -1) {
|
|
473
|
+
this.languageChangeObservers.push(observer);
|
|
474
|
+
}
|
|
475
|
+
return () => this.unsubscribeFromLanguageChange(observer);
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Unsubscribes the observer from the language change events.
|
|
479
|
+
* @param observer The observer to be unsubscribed.
|
|
480
|
+
*/
|
|
481
|
+
unsubscribeFromLanguageChange(observer) {
|
|
482
|
+
const existingObserverIndex = this.languageChangeObservers.findIndex((subscription) => subscription.name === observer.name);
|
|
483
|
+
if (existingObserverIndex !== -1) {
|
|
484
|
+
this.languageChangeObservers.splice(existingObserverIndex, 1);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
notifyLanguageChangeObservers(currentLang) {
|
|
488
|
+
this.languageChangeObservers.forEach((observer) => observer.notify(currentLang));
|
|
450
489
|
}
|
|
451
490
|
/**
|
|
452
491
|
* Merges external i18e configuration with bundled one.
|
|
@@ -480,6 +519,12 @@ class TranslationService {
|
|
|
480
519
|
}
|
|
481
520
|
});
|
|
482
521
|
}
|
|
522
|
+
/**
|
|
523
|
+
* Translates the provided key using the currently selected language by applying the parameters if
|
|
524
|
+
* provided.
|
|
525
|
+
* @param key The key for the label which needs to be translated.
|
|
526
|
+
* @param parameters Optional parameters which to be applied during the translation.
|
|
527
|
+
*/
|
|
483
528
|
translate(key, parameters) {
|
|
484
529
|
let translation = this.bundle[this.currentLang][key];
|
|
485
530
|
if (!translation) {
|