graphdb-workbench 2.4.0-RC4 → 2.4.0-RC5

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.
Files changed (67) hide show
  1. package/dist/108.21ba9a6de554ddab0cb3.bundle.js +1 -1
  2. package/dist/{12.e6a377cf888480f8f98d.bundle.js → 12.49ccce6742a1415aec3c.bundle.js} +2 -2
  3. package/dist/{159.a2ea6062128ef461dc72.bundle.js → 159.2dfa76b41b8e0412fc9a.bundle.js} +1 -1
  4. package/dist/167.9ea529c0a3b5ecd3997a.bundle.js +1 -0
  5. package/dist/168.c2d77ca1c6e78c85cc1c.bundle.js +1 -0
  6. package/dist/{171.4f08cb300ca1440a3307.bundle.js → 171.57b7cb8f53876670f290.bundle.js} +1 -1
  7. package/dist/198.bef3c928879a4f4e88f8.bundle.js +1 -1
  8. package/dist/{2.c65777063a36c091a5bd.bundle.js → 2.b340e8a1374b41c1d31e.bundle.js} +1 -1
  9. package/dist/22.a052dbb90cc265342e5a.bundle.js +1 -1
  10. package/dist/29.23338c84d369c009f196.bundle.js +1 -1
  11. package/dist/{34.899bb892150c400098bf.bundle.js → 34.406736c7cf1269a90b35.bundle.js} +1 -1
  12. package/dist/36.55a3af7ce65b4b20033b.bundle.js +1 -1
  13. package/dist/{44.f4994f939a8ea66f5529.bundle.js → 44.14f58271400c03d0ab79.bundle.js} +1 -1
  14. package/dist/48.4d17d325f11d472a147d.bundle.js +1 -1
  15. package/dist/{bundle.2f1a1566e5af7ad08c7e.bundle.js → bundle.9270374dffa4437895d3.bundle.js} +12 -12
  16. package/dist/css/bootstrap-graphdb-theme.css +86 -27
  17. package/dist/css/graphs-vizualizations.css +4 -7
  18. package/dist/css/operations-statuses-monitor.css +41 -14
  19. package/dist/css/rdf-details-side-panel.css +7 -0
  20. package/dist/css/rdf-resource-search.css +5 -0
  21. package/dist/i18n/locale-en.json +3 -10
  22. package/dist/i18n/locale-fr.json +3 -10
  23. package/dist/index.html +72 -60
  24. package/dist/js/angular/chatgpt/templates/chat.html +1 -1
  25. package/dist/js/angular/core/directives/languageselector/templates/languageSelector.html +2 -2
  26. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +39 -33
  27. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +2 -2
  28. package/dist/js/angular/security/templates/user.html +1 -1
  29. package/dist/license-checker.json +2 -2
  30. package/dist/main.ef1675ae9664feabc0d4.css +1 -0
  31. package/dist/pages/aclmanagement.html +1 -1
  32. package/dist/pages/autocomplete.html +1 -1
  33. package/dist/pages/choose-repository-type.html +1 -1
  34. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  35. package/dist/pages/create-index.html +4 -4
  36. package/dist/pages/dependencies.html +1 -1
  37. package/dist/pages/domainRangeInfo.html +2 -2
  38. package/dist/pages/edit.html +1 -1
  39. package/dist/pages/explore.html +1 -1
  40. package/dist/pages/export.html +1 -1
  41. package/dist/pages/find.html +1 -1
  42. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  43. package/dist/pages/graphs-visualizations.html +9 -8
  44. package/dist/pages/guides.html +1 -1
  45. package/dist/pages/home.html +1 -1
  46. package/dist/pages/import.html +1 -1
  47. package/dist/pages/jdbc-create.html +5 -5
  48. package/dist/pages/login.html +2 -2
  49. package/dist/pages/monitor/backup-and-restore.html +1 -1
  50. package/dist/pages/monitor/queries.html +1 -1
  51. package/dist/pages/monitor/resources.html +2 -2
  52. package/dist/pages/namespaces.html +2 -2
  53. package/dist/pages/plugins.html +1 -1
  54. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  55. package/dist/pages/rdfrank.html +2 -2
  56. package/dist/pages/repositories.html +2 -2
  57. package/dist/pages/repository.html +2 -2
  58. package/dist/pages/similarity-indexes.html +1 -1
  59. package/dist/pages/sparql-template-create.html +5 -5
  60. package/dist/pages/sparql.html +4 -4
  61. package/dist/pages/webapi.html +2 -2
  62. package/dist/plugins.js +6 -0
  63. package/dist/res/swagger/index.html +27 -27
  64. package/package.json +1 -1
  65. package/dist/167.d7ebfad05a69c9ff7914.bundle.js +0 -1
  66. package/dist/168.2d82f1a487dc3ce888b0.bundle.js +0 -1
  67. package/dist/main.268656904f8e722f5489.css +0 -1
@@ -7,6 +7,18 @@
7
7
  --autocomplete-background: hsla(var(--tertiary-color-hsl), 0.3);
8
8
  --autocomplete-background-selected: hsla(var(--tertiary-color-hsl), 0.5);
9
9
  --autocomplete-match: var(--secondary-color);
10
+ /* width of menu 15 + margin left 1 + margin right 2 => 18rem */
11
+ --menu-width-expanded: 18rem;
12
+ /* width of menu 4.375 + margin left 1 + margin right 2 => 7.375 */
13
+ --menu-width-collapsed: 7.375rem;
14
+ /* menu width in general */
15
+ --menu-width: var(--menu-width-expanded);
16
+ /* max usable content width not considering the menu and margins */
17
+ --max-width-minus-menu: calc(100% - var(--menu-width));
18
+ }
19
+
20
+ :root.menu-collapsed {
21
+ --menu-width: var(--menu-width-collapsed);
10
22
  }
11
23
 
12
24
  /*-------------------------------------------------------------
@@ -512,7 +524,7 @@ a:focus, a:hover {
512
524
 
513
525
  .main-container {
514
526
  margin-left: 15rem;
515
- padding: 3rem 2rem 0 2rem;
527
+ padding: 0 2rem 3rem 2rem;
516
528
  /*max-width: 1600px; Removed because of the collapse of the menu*/
517
529
  /*-moz-transition: margin-left 0.2s ease-in; !* FF4+ *!*/
518
530
  /*-o-transition: margin-left 0.2s ease-in; !* Opera 10.5+ *!*/
@@ -548,12 +560,6 @@ a:focus, a:hover {
548
560
  height: 26px !important;
549
561
  }
550
562
 
551
- .active-operation {
552
- position: fixed;
553
- top: 0;
554
- left: 50vw;
555
- }
556
-
557
563
  .dropdown-menu-center {
558
564
  left: 50% !important;
559
565
  right: auto !important;
@@ -561,17 +567,6 @@ a:focus, a:hover {
561
567
  transform: translate(-50%, 0) !important;
562
568
  }
563
569
 
564
- @media (max-width: 1000px) {
565
- .active-operation {
566
- left: 30vw;
567
- }
568
- }
569
-
570
- .btn.active-operation {
571
- padding: 0 !important;
572
- border: 0 !important;
573
- }
574
-
575
570
  /*-------------------------------------------------------------
576
571
  Headings
577
572
  -------------------------------------------------------------*/
@@ -595,6 +590,7 @@ h1 .btn {
595
590
  .main-menu {
596
591
  width: 15rem;
597
592
  position: fixed;
593
+ top: 0;
598
594
  font-weight: 400;
599
595
  z-index: 1010;
600
596
  margin: 0;
@@ -818,11 +814,13 @@ main menu height*/
818
814
  }
819
815
 
820
816
  .small-logo {
821
- height: auto;
817
+ width: 50px;
818
+ height: 50px;
822
819
  }
823
820
 
824
821
  .big-logo {
825
- height: auto;
822
+ width: 180px;
823
+ height: 50px;
826
824
  }
827
825
 
828
826
  .container-fluid.main-container.expanded {
@@ -1047,8 +1045,7 @@ main menu height*/
1047
1045
 
1048
1046
  .btn [class^="icon-"] {
1049
1047
  font-size: 1.4em;
1050
- vertical-align: -0.25em;
1051
- line-height: 0.8;
1048
+ line-height: 0.75;
1052
1049
  display: inline-block;
1053
1050
  }
1054
1051
 
@@ -1094,6 +1091,10 @@ main menu height*/
1094
1091
  right: 3px;
1095
1092
  }
1096
1093
 
1094
+ .status-bar .dropdown-menu-right {
1095
+ right: 0;
1096
+ }
1097
+
1097
1098
  /* collapse button */
1098
1099
  .btn.collapsed [class^=icon-]{
1099
1100
  transform: rotate(180deg);
@@ -1113,17 +1114,39 @@ h3 [class^=icon-] {
1113
1114
  status bar
1114
1115
  -------------------------------------------------------------*/
1115
1116
  .status-bar {
1116
- position: fixed;
1117
+ display: flex;
1118
+ flex-wrap: wrap-reverse;
1119
+ justify-content: flex-end;
1120
+ gap: 0.25em;
1121
+ position: sticky;
1117
1122
  top: 0;
1118
- right: 2rem;
1119
- font-size: 0.9em;
1120
- z-index: 1015;
1123
+ padding-bottom: 0.5em;
1124
+ width: max-content;
1125
+ max-width: var(--max-width-minus-menu);
1126
+ margin-left: auto;
1127
+ margin-right: 2em;
1128
+ font-size: 1.1em;
1129
+ /* below pageslide (position: absolute, z-index: 1000) */
1130
+ z-index: 999;
1121
1131
  -moz-transition: all 0.1s ease-out; /* FF4+ */
1122
1132
  -o-transition: all 0.1s ease-out; /* Opera 10.5+ */
1123
1133
  -webkit-transition: all 0.1s ease-out; /* Saf3.2+, Chrome */
1124
1134
  transition: all 0.1s ease-out;
1125
1135
  }
1126
1136
 
1137
+ /* Hides gap when no monitoring, this doesn't work with :empty */
1138
+ .status-bar operations-statuses-monitor:not(:has(div)) {
1139
+ display: none;
1140
+ }
1141
+
1142
+ .status-bar .btn {
1143
+ font-size: inherit;
1144
+ }
1145
+
1146
+ .status-bar .btn-group .dropdown-toggle {
1147
+ margin-right: 0;
1148
+ }
1149
+
1127
1150
  /*-------------------------------------------------------------
1128
1151
  sticky footer
1129
1152
  -------------------------------------------------------------*/
@@ -1161,7 +1184,7 @@ footer.footer .container-fluid.main-container p {
1161
1184
  }
1162
1185
 
1163
1186
  .open > .btn-secondary.dropdown-toggle [class^="icon-"] {
1164
- color: var(--icon-on-primary-color) !important;
1187
+ color: var(--icon-on-primary-color);
1165
1188
  }
1166
1189
 
1167
1190
  .btn-secondary.dropdown-toggle [class^="icon-"] {
@@ -2795,3 +2818,39 @@ input[name=namespace] {
2795
2818
  .rzslider .rz-selection {
2796
2819
  background: var(--secondary-color) !important;
2797
2820
  }
2821
+
2822
+ .login-form {
2823
+ max-width: 600px;
2824
+ padding-top: 4em;
2825
+ margin: auto;
2826
+ }
2827
+
2828
+ .btn-fade-warning {
2829
+ animation: fade-button 2s infinite;
2830
+ --fade-color: var(--color-warning-medium);
2831
+ }
2832
+
2833
+ .btn-fade-danger {
2834
+ animation: fade-button 2s infinite;
2835
+ --fade-color: var(--color-danger-medium);
2836
+ }
2837
+
2838
+ .btn-fade-warning:hover, .btn-fade-danger:hover {
2839
+ background-color: var(--fade-color) !important;
2840
+ border-color: var(--fade-color) !important;
2841
+ }
2842
+
2843
+ @keyframes fade-button {
2844
+ from {
2845
+ background-color: #EBEBEB;
2846
+ border-color: #EBEBEB;
2847
+ }
2848
+ 50% {
2849
+ background-color: var(--fade-color);
2850
+ border-color: var(--fade-color);
2851
+ }
2852
+ to {
2853
+ background-color: #EBEBEB;
2854
+ border-color: #EBEBEB;
2855
+ }
2856
+ }
@@ -56,11 +56,12 @@
56
56
  }
57
57
 
58
58
  .toolbar-holder {
59
- position: absolute;
60
- right: 2.5em;
61
- top: 4em;
59
+ position: relative;
60
+ top: -3em;
62
61
  z-index: 10;
63
62
  background-color: rgba(2552, 255, 255, 0.75);
63
+ width: max-content;
64
+ margin-left: auto;
64
65
  }
65
66
 
66
67
  .rdf-list .node-info {
@@ -105,10 +106,6 @@
105
106
  stroke-width: 1;
106
107
  }
107
108
 
108
- .rdf-info-side-panel.node-info.predicate-info {
109
- max-width: none;
110
- }
111
-
112
109
  .rdf-info-side-panel.node-info.predicate-info .rdf-list {
113
110
  padding: 0;
114
111
  }
@@ -1,13 +1,30 @@
1
1
  .operations-statuses .operations-statuses-dropdown-toggle {
2
2
  display: flex;
3
- background-color: #EBEBEB;
4
- border-radius: 0;
5
- border: 0;
3
+ gap: 0.75em;
4
+ }
5
+
6
+ .operations-statuses .operations-statuses-dropdown-toggle .caret {
7
+ margin-left: -0.75em;
8
+ }
9
+
10
+ .operations-statuses .operations-statuses-dropdown-toggle[aria-expanded="true"] {
11
+ background-color: #bbb !important;
12
+ border-color: #bbb !important;
6
13
  }
7
14
 
8
15
  .operations-statuses .operation-status-header {
9
16
  display: flex;
10
- padding-right: 7px;
17
+ }
18
+
19
+ /* FontAwesome icons are different size, scale/pad them a bit */
20
+ .operations-statuses div.fa {
21
+ padding-left: 3px;
22
+ padding-right: 3px;
23
+ font-size: 1.1em;
24
+ }
25
+
26
+ .operations-statuses-content .operation-status-content.row > * {
27
+ padding: 0;
11
28
  }
12
29
 
13
30
  .operations-statuses .operation-status-header img {
@@ -20,7 +37,6 @@
20
37
 
21
38
  .operations-statuses .running-operation-count sup {
22
39
  color: white;
23
- border-radius: 2px;
24
40
  padding-left: 2px;
25
41
  padding-right: 2px;
26
42
  top: -1em;
@@ -32,27 +48,27 @@
32
48
  flex-direction: column;
33
49
  align-content: space-around;
34
50
  justify-content: space-around;
35
- background-color: #EBEBEB;
51
+ background-color: #bbb;
36
52
  margin:0;
37
53
  }
38
54
 
39
55
  .operations-statuses .operation-status-content {
40
56
  display: flex;
41
- background-color: #D4D4D4;
42
57
  margin: 5px 10px;
43
58
  align-items: center;
44
59
  justify-content: space-around;
45
60
  cursor: pointer;
46
61
  text-decoration: none;
47
62
  width: auto;
63
+ gap: 0.5em;
48
64
  }
49
65
 
50
- .operations-statuses .last-operation {
51
- margin-bottom: 10px;
66
+ .operations-statuses-content li:last-child {
67
+ margin-bottom: 5px;
52
68
  }
53
69
 
54
- .operations-statuses .first-operation {
55
- margin-top: 10px;
70
+ .operations-statuses li:first-child {
71
+ margin-top: 5px;
56
72
  }
57
73
 
58
74
  .operations-statuses .operation-status-content:hover {
@@ -64,12 +80,15 @@
64
80
  }
65
81
 
66
82
  .operations-statuses .operation-status-label {
67
- min-width: 250px;
68
83
  padding: 5px;
69
84
  line-height: 0;
70
85
  text-align: start;
71
86
  }
72
87
 
88
+ .operations-statuses .operation-number {
89
+ min-width: 50px;
90
+ }
91
+
73
92
  .operations-statuses .operation-status-running-operation-count {
74
93
  color: white;
75
94
  border-radius: 2px;
@@ -79,6 +98,14 @@
79
98
  font-size: 75%;
80
99
  }
81
100
 
82
- .operations-statuses .operation-status-content .icon-external {
83
- padding: 4px;
101
+ .status-information {
102
+ color: var(--color-info-dark) !important;
103
+ }
104
+
105
+ .status-warning {
106
+ color: var(--color-warning-dark) !important;
107
+ }
108
+
109
+ .status-critical {
110
+ color: var(--color-danger-dark) !important;
84
111
  }
@@ -5,6 +5,13 @@
5
5
  box-shadow: -1px 3px 10px 0 rgba(0, 0, 0, 0.3);
6
6
  /* force it because pageslide sets the top:0 property inline and we need to override it */
7
7
  top: 45px !important;
8
+ /* adapt to view width but at least 300px, menu size ignored for all practical screen sizes */
9
+ max-width: max(300px, 25vw);
10
+ }
11
+
12
+ .rdf-info-side-panel-expanded {
13
+ /* adapt width according to available space but not more than 800px */
14
+ max-width: min(800px, 100% - var(--menu-width));
8
15
  }
9
16
 
10
17
  .rdf-list {
@@ -1,5 +1,10 @@
1
1
  .search-rdf-btn {
2
2
  display: block;
3
+ border: 0;
4
+ }
5
+
6
+ .search-rdf-btn .icon-search {
7
+ font-size: 1.7em;
3
8
  }
4
9
 
5
10
  .close-rdf-search-btn{
@@ -1917,20 +1917,13 @@
1917
1917
  "ttyg.settings.topk.tooltip": "Number of results returned to the chat bot when it requests more information. More results will provide more information but they may also introduce noise.",
1918
1918
  "ttyg.settings.echo.vector.query": "Echo vector query",
1919
1919
  "ttyg.settings.echo.vector.query.tooltip": "If enabled the bot will use the generated queries as feedback to the GPT API.",
1920
- "global.operations_statuses.queries.title": "Running query",
1921
- "global.operations_statuses.queries.title.plural": "Running queries",
1922
- "global.operations_statuses.updates.title": "Running update",
1923
- "global.operations_statuses.updates.title.plural": "Running updates",
1924
- "global.operations_statuses.imports.title": "Running import",
1925
- "global.operations_statuses.imports.title.plural": "Running imports",
1920
+ "global.operations_statuses.queries.title": "Running queries",
1921
+ "global.operations_statuses.updates.title": "Running updates",
1922
+ "global.operations_statuses.imports.title": "Running imports",
1926
1923
  "global.operations_statuses.CREATE_BACKUP_IN_PROGRESS.title": "Creating backup",
1927
- "global.operations_statuses.CREATE_BACKUP_IN_PROGRESS.title.plural": "Creating backups",
1928
1924
  "global.operations_statuses.RESTORE_BACKUP_IN_PROGRESS.title": "Restoring backup",
1929
- "global.operations_statuses.RESTORE_BACKUP_IN_PROGRESS.title.plural": "Restoring backups",
1930
1925
  "global.operations_statuses.CREATE_CLOUD_BACKUP_IN_PROGRESS.title": "Creating cloud backup",
1931
- "global.operations_statuses.CREATE_CLOUD_BACKUP_IN_PROGRESS.title.plural": "Creating cloud backups",
1932
1926
  "global.operations_statuses.RESTORE_CLOUD_BACKUP_IN_PROGRESS.title": "Restoring cloud backup",
1933
- "global.operations_statuses.RESTORE_CLOUD_BACKUP_IN_PROGRESS.title.plural": "Restoring cloud backups",
1934
1927
  "global.operations_statuses.IN_SYNC.title": "In sync",
1935
1928
  "global.operations_statuses.RECOVERING.title": "Recovering",
1936
1929
  "global.operations_statuses.OUT_OF_SYNC.title": "Out of sync",
@@ -1904,20 +1904,13 @@
1904
1904
  "ttyg.settings.topk.tooltip": "Nombre de résultats renvoyés au chatbot lorsqu'il demande plus d'informations. Plus de résultats fourniront plus d'informations mais ils peuvent également introduire du bruit.",
1905
1905
  "ttyg.settings.echo.vector.query": "Écho à la requête vectorielle",
1906
1906
  "ttyg.settings.echo.vector.query.tooltip": "S'il est activé, le bot utilisera les requêtes générées comme retour à l'API GPT.",
1907
- "global.operations_statuses.queries.title": "Exécution de requête",
1908
- "global.operations_statuses.queries.title.plural": "Exécution de requêtes",
1909
- "global.operations_statuses.updates.title": "Exécution de mise à jour",
1910
- "global.operations_statuses.updates.title.plural": "Exécution de mises à jour",
1911
- "global.operations_statuses.imports.title": "Exécution d'importation",
1912
- "global.operations_statuses.imports.title.plural": "Exécution d'importations",
1907
+ "global.operations_statuses.queries.title": "Exécution de requêtes",
1908
+ "global.operations_statuses.updates.title": "Exécution de mises à jour",
1909
+ "global.operations_statuses.imports.title": "Exécution d'importations",
1913
1910
  "global.operations_statuses.CREATE_BACKUP_IN_PROGRESS.title": "Création de sauvegarde en cours",
1914
- "global.operations_statuses.CREATE_BACKUP_IN_PROGRESS.title.plural": "Création de sauvegardes en cours",
1915
1911
  "global.operations_statuses.RESTORE_BACKUP_IN_PROGRESS.title": "Restauration de sauvegarde en cours",
1916
- "global.operations_statuses.RESTORE_BACKUP_IN_PROGRESS.title.plural": "Restauration de sauvegardes en cours",
1917
1912
  "global.operations_statuses.CREATE_CLOUD_BACKUP_IN_PROGRESS.title": "Création de sauvegarde cloud en cours",
1918
- "global.operations_statuses.CREATE_CLOUD_BACKUP_IN_PROGRESS.title.plural": "Création de sauvegardes cloud en cours",
1919
1913
  "global.operations_statuses.RESTORE_CLOUD_BACKUP_IN_PROGRESS.title": "Restauration de sauvegarde cloud en cours",
1920
- "global.operations_statuses.RESTORE_CLOUD_BACKUP_IN_PROGRESS.title.plural": "Restauration de sauvegardes cloud en cours",
1921
1914
  "global.operations_statuses.IN_SYNC.title": "Synchronisé",
1922
1915
  "global.operations_statuses.RECOVERING.title": "Récupération en cours",
1923
1916
  "global.operations_statuses.OUT_OF_SYNC.title": "Désynchronisé",
package/dist/index.html CHANGED
@@ -13,73 +13,85 @@
13
13
 
14
14
  <link rel="apple-touch-icon-precomposed" href="icon.png">
15
15
 
16
- <script src="plugin-registry.js?v=2.4.0-RC4"></script>
17
- <script src="plugins.js?v=2.4.0-RC4"></script>
18
- <link rel="shortcut icon" href="icon.png"><link href="vendor.d1c629ceaacea40a5f4a.css" rel="stylesheet"><link href="main.268656904f8e722f5489.css" rel="stylesheet"></head>
16
+ <script src="plugin-registry.js?v=2.4.0-RC5"></script>
17
+ <script src="plugins.js?v=2.4.0-RC5"></script>
18
+ <link rel="shortcut icon" href="icon.png"><link href="vendor.d1c629ceaacea40a5f4a.css" rel="stylesheet"><link href="main.ef1675ae9664feabc0d4.css" rel="stylesheet"></head>
19
19
 
20
20
  <body>
21
21
 
22
22
  <div class="status-bar bg-white" ng-hide="!showMainManuAndStatusBar()" ng-cloak>
23
- <operations-statuses-monitor class="active-operation"></operations-statuses-monitor>
24
- <div class="btn-group btn-group-lg" role="group" aria-label="Button group with nested dropdown">
23
+ <!-- Looking glass search icon -->
24
+ <rdf-resource-search></rdf-resource-search>
25
25
 
26
- <div class="btn alert alert-warning no-icon" ng-if="!getLicense().valid && showLicense()"
26
+ <!-- Invalid/expired license notification -->
27
+ <div ng-if="!getLicense().valid && showLicense()">
28
+ <a class="btn btn-fade-danger no-icon" ng-href="license"
27
29
  gdb-tooltip="{{getLicense().message}}" tooltip-placement="bottom">
28
30
  <span class="icon-warning"></span> {{'no.valid.license.warning' | translate}}
29
- <a ng-show="!isLicenseHardcoded()" href="license/register" class="btn btn-secondary btn-sm" style="margin: -5px 0 -5px 0">{{'set.label' | translate}}</a>
30
- </div>
31
+ </a>
32
+ </div>
31
33
 
32
- <div id="guideResume" class="btn-group" role="group" ng-if="guidePaused" gdb-tooltip="{{'guide.button.guide-resume' | translate}}" tooltip-placement="bottom">
33
- <a class="btn btn-lg btn-secondary" ng-click="resumeGuide()"><span class="icon-play text-primary"></span> {{'guide.button.guide-paused' | translate}}</a>
34
- </div>
35
- <rdf-resource-search class="float-xs-left p-0"></rdf-resource-search>
36
- <div id="repositorySelectDropdown" class="btn-group" role="group" ng-show="!embedded">
37
- <button id="btnReposGroup" type="button" class="btn btn-lg btn-secondary dropdown-toggle"
38
- data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" guide-selector="repositoriesGroupButton">
39
- <span ng-mouseover="setPopoverRepo(getActiveRepositoryObject())" popover-popup-delay="1000" popover-trigger="mouseenter" popover-placement="left-bottom"
40
- uib-popover-template="popoverTemplate" popover-title="{{'security.repository.title' | translate}} {{getActiveRepositoryObject().id}}" ng-if="getActiveRepository()"
41
- guide-selector="repository-{{getActiveRepositoryObject().id}}-button"
42
- class="active-repository">
43
- <em ng-class="'icon-repo-' + getActiveRepositoryObject().type" class="icon-1-5x"></em>
44
- {{getActiveRepository()}}{{ getActiveRepositoryShortLocation() }}
45
- </span>
46
- <span class="no-selected-repository" ng-if="!getActiveRepository() && getReadableRepositories().length">{{'choose.repo' | translate}}</span>
47
- <span class="no-repositories" ng-if="!getActiveRepository() && !getReadableRepositories().length">{{'no.accessible.repos.warning' | translate}}</span>
48
- </button>
49
- <ul class="dropdown-menu dropdown-menu-right pre-scrollable" aria-labelledby="dropdownMenuButton">
50
- <li ng-repeat="repository in getReadableRepositories() | orderBy: ['location', 'id']"
51
- ng-if="!isRepoActive(repository)"
52
- ng-mouseover="setPopoverRepo(repository)" popover-popup-delay="500"
53
- popover-trigger="mouseenter" popover-placement="left"
54
- uib-popover-template="popoverTemplate" popover-title="{{'security.repository.title' | translate}} {{repository.id}}">
55
- <a class="dropdown-item" ng-click="setRepository(repository)" guide-selector="repository-{{repository.id}}-button">
56
- <em ng-class="'icon-repo-' + repository.type" class="icon-1-5x"></em>
57
- <span class="multiline-text">
58
- {{repository.id}} <br/>
59
- <small ng-show="!isLoadingLocation() && hasActiveLocation() && (!isSecurityEnabled() || isUserLoggedIn() || isFreeAccessEnabled())">{{repository.location ? repository.location : 'Local'}}</small>
60
- </span>
61
- </a>
62
- </li>
63
- </ul>
64
- </div>
65
- <div class="btn-group" role="group" ng-if="isSecurityEnabled() && isUserLoggedIn()">
66
- <button id="btnGroupDrop2" type="button" class="btn btn-lg btn-secondary dropdown-toggle"
67
- data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
68
- <span class="icon-user text-primary"></span>
69
- {{principal.username}}
70
- </button>
71
- <div class="dropdown-menu dropdown-menu-right" aria-labelledby="btnUserGroup">
72
- <a class="dropdown-item" href="settings">{{'menu.my.settings.label' | translate}}</a>
73
- <a class="dropdown-item" ng-click="logout()" title="{{'sign.out.label' | translate}}" ng-href="./login" ng-if="!hasExternalAuthUser()">{{'logout.label' | translate}}</a>
74
- </div>
75
- </div>
76
- <div class="btn-group" ng-show="isSecurityEnabled() && !isUserLoggedIn() && !isCurrentPath('login')">
77
- <a class="btn btn-lg btn-secondary" href="./login" ng-href="./login">
78
- <span class="icon-arrow-right text-primary"></span> {{'view.login.title' | translate}}
79
- </a>
34
+ <!-- Guide pause/resume -->
35
+ <div id="guideResume" class="btn-group" role="group" ng-if="guidePaused" gdb-tooltip="{{'guide.button.guide-resume' | translate}}" tooltip-placement="bottom">
36
+ <a class="btn btn-secondary" ng-click="resumeGuide()"><span class="icon-play"></span> {{'guide.button.guide-paused' | translate}}</a>
37
+ </div>
38
+
39
+ <!-- Monitoring overview and monitoring details dropdown -->
40
+ <operations-statuses-monitor></operations-statuses-monitor>
41
+
42
+ <!-- Current repository and repository selection dropdown -->
43
+ <div id="repositorySelectDropdown" class="btn-group" role="group" ng-show="!embedded">
44
+ <button id="btnReposGroup" type="button" class="btn btn-secondary dropdown-toggle"
45
+ data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" guide-selector="repositoriesGroupButton">
46
+ <span ng-mouseover="setPopoverRepo(getActiveRepositoryObject())" popover-popup-delay="1000" popover-trigger="mouseenter" popover-placement="left-bottom"
47
+ uib-popover-template="popoverTemplate" popover-title="{{'security.repository.title' | translate}} {{getActiveRepositoryObject().id}}" ng-if="getActiveRepository()"
48
+ guide-selector="repository-{{getActiveRepositoryObject().id}}-button"
49
+ class="active-repository">
50
+ <em ng-class="'icon-repo-' + getActiveRepositoryObject().type"></em>
51
+ {{getActiveRepository()}}{{ getActiveRepositoryShortLocation() }}
52
+ </span>
53
+ <span class="no-selected-repository" ng-if="!getActiveRepository() && getReadableRepositories().length">{{'choose.repo' | translate}}</span>
54
+ <span class="no-repositories" ng-if="!getActiveRepository() && !getReadableRepositories().length">{{'no.accessible.repos.warning' | translate}}</span>
55
+ </button>
56
+ <ul class="dropdown-menu dropdown-menu-right pre-scrollable" aria-labelledby="dropdownMenuButton">
57
+ <li ng-repeat="repository in getReadableRepositories() | orderBy: ['location', 'id']"
58
+ ng-if="!isRepoActive(repository)"
59
+ ng-mouseover="setPopoverRepo(repository)" popover-popup-delay="500"
60
+ popover-trigger="mouseenter" popover-placement="left"
61
+ uib-popover-template="popoverTemplate" popover-title="{{'security.repository.title' | translate}} {{repository.id}}">
62
+ <a class="dropdown-item" ng-click="setRepository(repository)" guide-selector="repository-{{repository.id}}-button">
63
+ <em ng-class="'icon-repo-' + repository.type" class="icon-1-5x"></em>
64
+ <span class="multiline-text">
65
+ {{repository.id}} <br/>
66
+ <small ng-show="!isLoadingLocation() && hasActiveLocation() && (!isSecurityEnabled() || isUserLoggedIn() || isFreeAccessEnabled())">{{repository.location ? repository.location : 'Local'}}</small>
67
+ </span>
68
+ </a>
69
+ </li>
70
+ </ul>
71
+ </div>
72
+
73
+ <!-- Logged user and settings/logout dropdown -->
74
+ <div class="btn-group" role="group" ng-if="isSecurityEnabled() && isUserLoggedIn()">
75
+ <button id="btnGroupDrop2" type="button" class="btn btn-secondary dropdown-toggle"
76
+ data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
77
+ <span class="icon-user"></span>
78
+ {{principal.username}}
79
+ </button>
80
+ <div class="dropdown-menu dropdown-menu-right" aria-labelledby="btnUserGroup">
81
+ <a class="dropdown-item" href="settings">{{'menu.my.settings.label' | translate}}</a>
82
+ <a class="dropdown-item" ng-click="logout()" title="{{'sign.out.label' | translate}}" ng-href="./login" ng-if="!hasExternalAuthUser()">{{'logout.label' | translate}}</a>
80
83
  </div>
81
- <language-selector></language-selector>
82
84
  </div>
85
+
86
+ <!-- Login button -->
87
+ <div ng-if="isSecurityEnabled() && !isUserLoggedIn() && !isCurrentPath('login')">
88
+ <a class="btn btn-secondary" href="./login" ng-href="./login">
89
+ <span class="icon-arrow-right"></span> {{'view.login.title' | translate}}
90
+ </a>
91
+ </div>
92
+
93
+ <!-- Current language and language selection dropdown -->
94
+ <language-selector></language-selector>
83
95
  </div>
84
96
 
85
97
  <ul class="main-menu" ng-cloak ng-show="!embedded">
@@ -88,11 +100,11 @@
88
100
  <em class="icon-caret-left"></em>
89
101
  </span>
90
102
  <a class="menu-element-root" ng-href="./" href="./" ng-click="selected = -1">
91
- <svg class="big-logo" width="180" height="50">
103
+ <svg class="big-logo">
92
104
  <desc>GraphDB logo</desc>
93
105
  <use href="img/graphdb-logo.741abf3e3881e1566e4504c9f00b91c0.svg#Layer_1"></use>
94
106
  </svg>
95
- <svg class="small-logo" width="58" height="58">
107
+ <svg class="small-logo">
96
108
  <desc>GraphDB logo</desc>
97
109
  <use href="img/graphdb-logo-sq.3a5fb4b3f1e0e248dc308da1bf4de9f8.svg#Layer_1"></use>
98
110
  </svg>
@@ -152,6 +164,6 @@
152
164
  <object data="img/graphdb-splash.1ef2940889acddc03c7defb3f9f41f8d.svg"></object>
153
165
  <div>GraphDB Workbench is loading...</div>
154
166
  </div>
155
- <script type="text/javascript" src="vendor.627c422eb658d286fa62.bundle.js"></script><script type="text/javascript" src="main.34b9127de6103da85a3d.bundle.js"></script><script type="text/javascript" src="bundle.2f1a1566e5af7ad08c7e.bundle.js"></script></body>
167
+ <script type="text/javascript" src="vendor.627c422eb658d286fa62.bundle.js"></script><script type="text/javascript" src="main.34b9127de6103da85a3d.bundle.js"></script><script type="text/javascript" src="bundle.9270374dffa4437895d3.bundle.js"></script></body>
156
168
 
157
169
  </html>
@@ -93,7 +93,7 @@
93
93
  <form>
94
94
  <div class="mb-2 d-flex">
95
95
  <input class="form-control" ng-model="question" type="text">
96
- <button class="btn btn-primary" ng-click="ask()">{{ 'ttyg.ask.button' | translate }}</button>
96
+ <button class="btn btn-primary" ng-disabled="loading" ng-click="ask()">{{ 'ttyg.ask.button' | translate }}</button>
97
97
  </div>
98
98
  </form>
99
99
  </div>
@@ -1,10 +1,10 @@
1
1
  <div class="btn-group" role="group" ng-if="languages.length > 0">
2
2
  <button id="languageGroupDrop" type="button"
3
- class="btn btn-lg btn-secondary dropdown-toggle translate-button"
3
+ class="btn btn-secondary dropdown-toggle translate-button"
4
4
  data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"
5
5
  tooltip-placement="left"
6
6
  gdb-tooltip="{{ 'current.language.tooltip' | translate }}: {{selectedLang.name}}">
7
- <span class="icon-translation icon-1-5x text-primary"></span>
7
+ <span class="icon-translation icon-1-5x"></span>
8
8
  {{selectedLang.key}}
9
9
  </button>
10
10
  <ul class="dropdown-menu dropdown-menu-right pre-scrollable" aria-labelledby="languageGroupDrop">