graphdb-workbench 3.2.0-TR1 → 3.2.0-TR2
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/10142.dae0223e0a1d85ad72fe.bundle.js +2 -0
- package/dist/10142.dae0223e0a1d85ad72fe.bundle.js.map +1 -0
- package/dist/{10376.e89fa63ff898d45f45fd.bundle.js → 10376.2723c52982b51c64bffb.bundle.js} +2 -2
- package/dist/10376.2723c52982b51c64bffb.bundle.js.map +1 -0
- package/dist/{12396.4c26c8da50c790b0f39a.bundle.js → 12396.9a7f2862146b6f9adcb1.bundle.js} +2 -2
- package/dist/{12396.4c26c8da50c790b0f39a.bundle.js.map → 12396.9a7f2862146b6f9adcb1.bundle.js.map} +1 -1
- package/dist/12940.7a45ae43d5f3ba6e7d83.bundle.js +2 -0
- package/dist/12940.7a45ae43d5f3ba6e7d83.bundle.js.map +1 -0
- package/dist/14824.a3bc164c5bf4313f5276.bundle.js +2 -0
- package/dist/14824.a3bc164c5bf4313f5276.bundle.js.map +1 -0
- package/dist/{15535.ce8d657c04f3401b9539.bundle.js → 15535.7b170e17ee0a58970ab6.bundle.js} +2 -2
- package/dist/{15535.ce8d657c04f3401b9539.bundle.js.map → 15535.7b170e17ee0a58970ab6.bundle.js.map} +1 -1
- package/dist/{16162.8f482628d1b34d41d496.bundle.js → 16162.67e7c1f5f313481b1e80.bundle.js} +2 -2
- package/dist/{16162.8f482628d1b34d41d496.bundle.js.map → 16162.67e7c1f5f313481b1e80.bundle.js.map} +1 -1
- package/dist/18961.5e34171366c281038fe5.bundle.js +2 -0
- package/dist/18961.5e34171366c281038fe5.bundle.js.map +1 -0
- package/dist/20227.a9333aa1320edea7264b.bundle.js +2 -0
- package/dist/20227.a9333aa1320edea7264b.bundle.js.map +1 -0
- package/dist/{20287.c42f9d1d913c36e46931.bundle.js → 20287.dd5bc263fe26adf34965.bundle.js} +2 -2
- package/dist/{20287.c42f9d1d913c36e46931.bundle.js.map → 20287.dd5bc263fe26adf34965.bundle.js.map} +1 -1
- package/dist/{21136.199caea09a1c9ad90393.bundle.js → 21136.b7efcb40fb956ff1109c.bundle.js} +2 -2
- package/dist/{21136.199caea09a1c9ad90393.bundle.js.map → 21136.b7efcb40fb956ff1109c.bundle.js.map} +1 -1
- package/dist/{21142.b690e00c8884fddb2bb3.bundle.js → 21142.ec45fad4d52b36961d17.bundle.js} +2 -2
- package/dist/{21142.b690e00c8884fddb2bb3.bundle.js.map → 21142.ec45fad4d52b36961d17.bundle.js.map} +1 -1
- package/dist/{21170.d5e3041241741d21080c.bundle.js → 21170.7832554eab9eaade6ffb.bundle.js} +2 -2
- package/dist/{21170.d5e3041241741d21080c.bundle.js.map → 21170.7832554eab9eaade6ffb.bundle.js.map} +1 -1
- package/dist/{21195.267abc9d42b711d0f17a.bundle.js → 21195.caae6cc33d755ad52df4.bundle.js} +2 -2
- package/dist/{21195.267abc9d42b711d0f17a.bundle.js.map → 21195.caae6cc33d755ad52df4.bundle.js.map} +1 -1
- package/dist/{25747.4e00941ec221c4d6ce8f.bundle.js → 25747.c01110e23b922cdd3d9e.bundle.js} +2 -2
- package/dist/{25747.4e00941ec221c4d6ce8f.bundle.js.map → 25747.c01110e23b922cdd3d9e.bundle.js.map} +1 -1
- package/dist/{27580.f71ebbc69dd1c7785ef3.bundle.js → 27580.5a421770ab66d2dedc37.bundle.js} +2 -2
- package/dist/{27580.f71ebbc69dd1c7785ef3.bundle.js.map → 27580.5a421770ab66d2dedc37.bundle.js.map} +1 -1
- package/dist/{28050.8ca1fa760c892bfc5466.bundle.js → 28050.6960a4a0961a07a94743.bundle.js} +2 -2
- package/dist/28050.6960a4a0961a07a94743.bundle.js.map +1 -0
- package/dist/{31636.e34ccc2d6f2dec577446.bundle.js → 31636.54e2817f8ae3998a34b3.bundle.js} +2 -2
- package/dist/{31636.e34ccc2d6f2dec577446.bundle.js.map → 31636.54e2817f8ae3998a34b3.bundle.js.map} +1 -1
- package/dist/{32489.97fac2c3daa49b143d13.bundle.js → 32489.f7a2dc39cd61c2cd8874.bundle.js} +2 -2
- package/dist/{32489.97fac2c3daa49b143d13.bundle.js.map → 32489.f7a2dc39cd61c2cd8874.bundle.js.map} +1 -1
- package/dist/33524.79f7e98ef89a46d4aa58.bundle.js +2 -0
- package/dist/33524.79f7e98ef89a46d4aa58.bundle.js.map +1 -0
- package/dist/{34495.cfa15bda8009fa37c6ff.bundle.js → 34495.be67c06c39909114bbe4.bundle.js} +2 -2
- package/dist/{34495.cfa15bda8009fa37c6ff.bundle.js.map → 34495.be67c06c39909114bbe4.bundle.js.map} +1 -1
- package/dist/{38360.0a90e77042876c86b279.bundle.js → 38360.efec913bb97c3b8588a4.bundle.js} +2 -2
- package/dist/{38360.0a90e77042876c86b279.bundle.js.map → 38360.efec913bb97c3b8588a4.bundle.js.map} +1 -1
- package/dist/{38644.3a0954c798ec413a3810.bundle.js → 38644.800252af49cd67310834.bundle.js} +2 -2
- package/dist/{38644.3a0954c798ec413a3810.bundle.js.map → 38644.800252af49cd67310834.bundle.js.map} +1 -1
- package/dist/{38843.5ef7a063337524ce3bb2.bundle.js → 38843.29e34a5e5293cee51566.bundle.js} +2 -2
- package/dist/{38843.5ef7a063337524ce3bb2.bundle.js.map → 38843.29e34a5e5293cee51566.bundle.js.map} +1 -1
- package/dist/{39518.4199684f3273d29d9105.bundle.js → 39518.0ca97879b92271d7c5e2.bundle.js} +2 -2
- package/dist/{39518.4199684f3273d29d9105.bundle.js.map → 39518.0ca97879b92271d7c5e2.bundle.js.map} +1 -1
- package/dist/{39539.c23e4878044d73f2505b.bundle.js → 39539.7cea6717cc3a5ba91617.bundle.js} +2 -2
- package/dist/{39539.c23e4878044d73f2505b.bundle.js.map → 39539.7cea6717cc3a5ba91617.bundle.js.map} +1 -1
- package/dist/{41453.8bb4c783da2c5077a6e9.bundle.js → 41453.4ae219d972a187c36bfc.bundle.js} +2 -2
- package/dist/{41453.8bb4c783da2c5077a6e9.bundle.js.map → 41453.4ae219d972a187c36bfc.bundle.js.map} +1 -1
- package/dist/41621.624ba3d867bc05b5c3cc.bundle.js +2 -0
- package/dist/41621.624ba3d867bc05b5c3cc.bundle.js.map +1 -0
- package/dist/{42129.f44b7b20f9cd376c6e59.bundle.js → 42129.0314e45b4b818b01b71f.bundle.js} +2 -2
- package/dist/{42129.f44b7b20f9cd376c6e59.bundle.js.map → 42129.0314e45b4b818b01b71f.bundle.js.map} +1 -1
- package/dist/{44444.ad66c8256bc5b653de1a.bundle.js → 44444.02026ff20e2a843dc05b.bundle.js} +2 -2
- package/dist/{44444.ad66c8256bc5b653de1a.bundle.js.map → 44444.02026ff20e2a843dc05b.bundle.js.map} +1 -1
- package/dist/45069.82993bf600a550fac275.bundle.js +2 -0
- package/dist/45069.82993bf600a550fac275.bundle.js.map +1 -0
- package/dist/{456.6118cb99d130f4c0410c.bundle.js → 456.634597f220a97bfbeab8.bundle.js} +2 -2
- package/dist/456.634597f220a97bfbeab8.bundle.js.map +1 -0
- package/dist/45758.9ffd8e7d5f99e2c394a2.bundle.js +2 -0
- package/dist/45758.9ffd8e7d5f99e2c394a2.bundle.js.map +1 -0
- package/dist/{52264.99261393a7f6e631da3b.bundle.js → 52264.4cf2f1a18d16484f0af1.bundle.js} +2 -2
- package/dist/52264.4cf2f1a18d16484f0af1.bundle.js.map +1 -0
- package/dist/54419.aec242a64c27ceda6e02.bundle.js +2 -0
- package/dist/54419.aec242a64c27ceda6e02.bundle.js.map +1 -0
- package/dist/5470.58e107e4c61ae7c22d48.bundle.js +2 -0
- package/dist/5470.58e107e4c61ae7c22d48.bundle.js.map +1 -0
- package/dist/{55862.1fb5abd075ba11a7e93c.bundle.js → 55862.5e8602827fbf72e60cc2.bundle.js} +2 -2
- package/dist/{55862.1fb5abd075ba11a7e93c.bundle.js.map → 55862.5e8602827fbf72e60cc2.bundle.js.map} +1 -1
- package/dist/{58306.ba9545cbaee021ebcbce.bundle.js → 58306.94b9336f68d11bdd72f0.bundle.js} +2 -2
- package/dist/{58306.ba9545cbaee021ebcbce.bundle.js.map → 58306.94b9336f68d11bdd72f0.bundle.js.map} +1 -1
- package/dist/58334.8a2bdb0560e0ce23f792.bundle.js +2 -0
- package/dist/58334.8a2bdb0560e0ce23f792.bundle.js.map +1 -0
- package/dist/60560.2ef51d3e2d9674450419.bundle.js +2 -0
- package/dist/60560.2ef51d3e2d9674450419.bundle.js.map +1 -0
- package/dist/64118.fb6952c8ef6fc9117f35.bundle.js +2 -0
- package/dist/64118.fb6952c8ef6fc9117f35.bundle.js.map +1 -0
- package/dist/66014.d9f7b86d6829ebfe9d0e.bundle.js +2 -0
- package/dist/66014.d9f7b86d6829ebfe9d0e.bundle.js.map +1 -0
- package/dist/{67888.7d4966e0a22ba655f1b8.bundle.js → 67888.772326168aed83cbad9c.bundle.js} +2 -2
- package/dist/67888.772326168aed83cbad9c.bundle.js.map +1 -0
- package/dist/69724.56df2d5b2ba312cb8118.bundle.js +2 -0
- package/dist/69724.56df2d5b2ba312cb8118.bundle.js.map +1 -0
- package/dist/{72379.bac50d0011665a85b6cd.bundle.js → 72379.8a3290df05f18f8c65bd.bundle.js} +2 -2
- package/dist/{72379.bac50d0011665a85b6cd.bundle.js.map → 72379.8a3290df05f18f8c65bd.bundle.js.map} +1 -1
- package/dist/{73667.3dd4f377e7ef54fd8758.bundle.js → 73667.52fdbdadddafe9e9559b.bundle.js} +2 -2
- package/dist/{73667.3dd4f377e7ef54fd8758.bundle.js.map → 73667.52fdbdadddafe9e9559b.bundle.js.map} +1 -1
- package/dist/{73793.6d80d47c26ed60a587fd.bundle.js → 73793.7e812bab1754ddd5efb5.bundle.js} +2 -2
- package/dist/{73793.6d80d47c26ed60a587fd.bundle.js.map → 73793.7e812bab1754ddd5efb5.bundle.js.map} +1 -1
- package/dist/{75282.88819e851ed18720b275.bundle.js → 75282.2f97d3a7d7f3fdd7aebf.bundle.js} +2 -2
- package/dist/{75282.88819e851ed18720b275.bundle.js.map → 75282.2f97d3a7d7f3fdd7aebf.bundle.js.map} +1 -1
- package/dist/{75849.51ade15bf0074eab76f3.bundle.js → 75849.bd0bdefa903741034a71.bundle.js} +2 -2
- package/dist/{75849.51ade15bf0074eab76f3.bundle.js.map → 75849.bd0bdefa903741034a71.bundle.js.map} +1 -1
- package/dist/77143.e0cb9ab61d798d7b5e0b.bundle.js +2 -0
- package/dist/77143.e0cb9ab61d798d7b5e0b.bundle.js.map +1 -0
- package/dist/78070.21b221881c2b49603eb9.bundle.js +2 -0
- package/dist/78070.21b221881c2b49603eb9.bundle.js.map +1 -0
- package/dist/{78250.6db42146a120459280e4.bundle.js → 78250.73e3013c5b2ebdddbf38.bundle.js} +2 -2
- package/dist/{78250.6db42146a120459280e4.bundle.js.map → 78250.73e3013c5b2ebdddbf38.bundle.js.map} +1 -1
- package/dist/78681.7b1c9100e03c2346550a.bundle.js +2 -0
- package/dist/78681.7b1c9100e03c2346550a.bundle.js.map +1 -0
- package/dist/{79329.5a5cbfa466d1c62af915.bundle.js → 79329.3d912887ba7e96090fb4.bundle.js} +2 -2
- package/dist/{79329.5a5cbfa466d1c62af915.bundle.js.map → 79329.3d912887ba7e96090fb4.bundle.js.map} +1 -1
- package/dist/81837.a989b5e255a0ce6176b2.bundle.js +2 -0
- package/dist/81837.a989b5e255a0ce6176b2.bundle.js.map +1 -0
- package/dist/82206.fd868720394b9dc2adac.bundle.js +2 -0
- package/dist/82206.fd868720394b9dc2adac.bundle.js.map +1 -0
- package/dist/82293.5e41c8378272aabf99f6.bundle.js +2 -0
- package/dist/82293.5e41c8378272aabf99f6.bundle.js.map +1 -0
- package/dist/82896.4787d205b19befaf263a.bundle.js +2 -0
- package/dist/82896.4787d205b19befaf263a.bundle.js.map +1 -0
- package/dist/{82926.93dbf44f2bcccba34e9b.bundle.js → 82926.93a59d42bf8d49aaac8e.bundle.js} +2 -2
- package/dist/{82926.93dbf44f2bcccba34e9b.bundle.js.map → 82926.93a59d42bf8d49aaac8e.bundle.js.map} +1 -1
- package/dist/{83136.56d692623cbc60048e03.bundle.js → 83136.4941a19a85eb34ca370a.bundle.js} +2 -2
- package/dist/83136.4941a19a85eb34ca370a.bundle.js.map +1 -0
- package/dist/{84727.b93b2f9857352d39b241.bundle.js → 84727.2e3214ad60bd59f435e2.bundle.js} +2 -2
- package/dist/84727.2e3214ad60bd59f435e2.bundle.js.map +1 -0
- package/dist/85281.76d06e1c26137bb4b417.bundle.js +2 -0
- package/dist/85281.76d06e1c26137bb4b417.bundle.js.map +1 -0
- package/dist/{86639.ab85108411ef0f006e10.bundle.js → 86639.d28da26b8f138f5eb19b.bundle.js} +2 -2
- package/dist/86639.d28da26b8f138f5eb19b.bundle.js.map +1 -0
- package/dist/89647.219c4eb306757647ae1c.bundle.js +2 -0
- package/dist/89647.219c4eb306757647ae1c.bundle.js.map +1 -0
- package/dist/{9062.d9049833d076191d3e1a.bundle.js → 9062.3541de664710a36fdac7.bundle.js} +2 -2
- package/dist/{9062.d9049833d076191d3e1a.bundle.js.map → 9062.3541de664710a36fdac7.bundle.js.map} +1 -1
- package/dist/95953.44049d81dd4879f745f9.bundle.js +2 -0
- package/dist/95953.44049d81dd4879f745f9.bundle.js.map +1 -0
- package/dist/96248.83e4f0c66a9f58161a66.bundle.js +2 -0
- package/dist/96248.83e4f0c66a9f58161a66.bundle.js.map +1 -0
- package/dist/98494.969124a68766ebbdee3c.bundle.js +3 -0
- package/dist/98494.969124a68766ebbdee3c.bundle.js.map +1 -0
- package/dist/99379.1b108abf4421ccee2973.bundle.js +2 -0
- package/dist/99379.1b108abf4421ccee2973.bundle.js.map +1 -0
- package/dist/{99448.314018d0afb1af150ddf.bundle.js → 99448.384b74c734331e5f8909.bundle.js} +2 -2
- package/dist/{99448.314018d0afb1af150ddf.bundle.js.map → 99448.384b74c734331e5f8909.bundle.js.map} +1 -1
- package/dist/99893.6ac254ca3f59996b2a52.bundle.js +2 -0
- package/dist/99893.6ac254ca3f59996b2a52.bundle.js.map +1 -0
- package/dist/api/models/configuration/configuration.d.ts +5 -0
- package/dist/api/models/logging/log-level.d.ts +7 -0
- package/dist/api/models/logging/logger-config.d.ts +19 -0
- package/dist/api/models/logging/logger-definitions.d.ts +7 -0
- package/dist/api/models/logging/logger-type.d.ts +3 -0
- package/dist/api/models/logging/logger.d.ts +15 -0
- package/dist/api/models/storage/storage-data.d.ts +1 -0
- package/dist/api/ontotext-workbench-api.d.ts +1 -0
- package/dist/api/ontotext-workbench-api.js +1 -1
- package/dist/api/ontotext-workbench-api.js.map +1 -1
- package/dist/api/services/logging/console/console-logger.service.d.ts +19 -0
- package/dist/api/services/logging/index.d.ts +2 -0
- package/dist/api/services/logging/logger-provider.d.ts +11 -0
- package/dist/api/services/logging/logger-service.d.ts +63 -0
- package/dist/api/services/logging/loggers.d.ts +15 -0
- package/dist/api/services/logging/test/loggers.spec.d.ts +1 -0
- package/dist/api/services/plugins/plugins-rest.service.d.ts +1 -0
- package/dist/api/services/plugins/plugins.service.d.ts +1 -0
- package/dist/api/services/repository/repository-storage.service.d.ts +1 -0
- package/dist/api/services/storage/local-storage-subscription-handler.service.d.ts +1 -0
- package/dist/api/services/utils/routing-utils.d.ts +1 -1
- package/dist/assets/configuration.default.json +5 -1
- package/dist/index.html +10 -8
- package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
- package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
- package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
- package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
- package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +1 -1
- package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
- package/dist/js/angular/security/templates/user.html +2 -2
- package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +2 -2
- package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
- package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
- package/dist/legacyWorkbench.2bd696723af2573e8bb7.js +3 -0
- package/dist/{legacyWorkbench.57fc12c172f6350ac4c5.js.map → legacyWorkbench.2bd696723af2573e8bb7.js.map} +1 -1
- package/dist/{main.b9a83da68ffc43c91de0.js → main.be51ba05166a17f051a0.js} +3 -3
- package/dist/main.be51ba05166a17f051a0.js.map +1 -0
- package/dist/pages/aclmanagement.html +2 -2
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +3 -3
- package/dist/pages/create-index.html +1 -1
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +8 -8
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/guides.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/login.html +1 -1
- package/dist/pages/monitor/backup-and-restore.html +1 -1
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +1 -1
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +1 -1
- package/dist/pages/repository.html +1 -1
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-editor.html +1 -1
- package/dist/pages/sparql-template-create.html +1 -1
- package/dist/pages/ux-test1.html +2 -2
- package/dist/pages/webapi.html +2 -2
- package/dist/plugins.js +1 -1
- package/dist/res/swagger5/index.html +11 -11
- package/dist/shared-components/cjs/onto-cookie-consent_2.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-dialog_2.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-dropdown.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-footer_6.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/translate-label.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/translation.service-CC6jY4U-.js +1 -0
- package/dist/shared-components/collection/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.js +1 -1
- package/dist/shared-components/collection/components/onto-dropdown/onto-dropdown.js +1 -1
- package/dist/shared-components/collection/components/onto-navbar/navbar-service.js +1 -1
- package/dist/shared-components/collection/services/logger-provider.js +1 -0
- package/dist/shared-components/collection/services/translation.service.js +1 -1
- package/dist/shared-components/esm/onto-cookie-consent_2.entry.js +1 -1
- package/dist/shared-components/esm/onto-dialog_2.entry.js +1 -1
- package/dist/shared-components/esm/onto-dropdown.entry.js +1 -1
- package/dist/shared-components/esm/onto-footer_6.entry.js +1 -1
- package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
- package/dist/shared-components/esm/translate-label.entry.js +1 -1
- package/dist/shared-components/esm/translation.service-nljGIprK.js +1 -0
- package/dist/shared-components/shared-components/p-09a97d11.entry.js +1 -0
- package/dist/shared-components/shared-components/p-21b82a97.entry.js +1 -0
- package/dist/shared-components/shared-components/p-8d20ae56.entry.js +1 -0
- package/dist/shared-components/shared-components/{p-91ad7f7f.entry.js → p-9131b137.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-1bc2ac8e.entry.js → p-e454ffc9.entry.js} +1 -1
- package/dist/shared-components/shared-components/{p-17bac1e3.entry.js → p-f9aa2123.entry.js} +1 -1
- package/dist/shared-components/shared-components/p-nljGIprK.js +1 -0
- package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
- package/dist/shared-components/types/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.d.ts +1 -0
- package/dist/shared-components/types/components/onto-dropdown/onto-dropdown.d.ts +1 -0
- package/dist/shared-components/types/services/logger-provider.d.ts +11 -0
- package/dist/shared-components/types/services/translation.service.d.ts +1 -0
- package/dist/styleguide.9451f25d197464f4079c.js +2 -0
- package/dist/styleguide.9451f25d197464f4079c.js.map +1 -0
- package/dist/workbench/workbench/workbenchApp.js +1 -1
- package/package.json +1 -1
- package/dist/10142.f47cd2aec05492fce7ce.bundle.js +0 -2
- package/dist/10142.f47cd2aec05492fce7ce.bundle.js.map +0 -1
- package/dist/10376.e89fa63ff898d45f45fd.bundle.js.map +0 -1
- package/dist/12940.5b35c2cf5958d8769c0a.bundle.js +0 -2
- package/dist/12940.5b35c2cf5958d8769c0a.bundle.js.map +0 -1
- package/dist/14824.5d5041c05fca4c0373fa.bundle.js +0 -2
- package/dist/14824.5d5041c05fca4c0373fa.bundle.js.map +0 -1
- package/dist/18961.c6505525fb0491b48f8b.bundle.js +0 -2
- package/dist/18961.c6505525fb0491b48f8b.bundle.js.map +0 -1
- package/dist/19968.fdb823f9a12e11a633ec.bundle.js +0 -2
- package/dist/19968.fdb823f9a12e11a633ec.bundle.js.map +0 -1
- package/dist/20227.ab5dfaab392dbb16ba31.bundle.js +0 -2
- package/dist/20227.ab5dfaab392dbb16ba31.bundle.js.map +0 -1
- package/dist/28050.8ca1fa760c892bfc5466.bundle.js.map +0 -1
- package/dist/33524.35fe079bcb99a78babaf.bundle.js +0 -2
- package/dist/33524.35fe079bcb99a78babaf.bundle.js.map +0 -1
- package/dist/41621.68c5ebc2104a62e2b41d.bundle.js +0 -2
- package/dist/41621.68c5ebc2104a62e2b41d.bundle.js.map +0 -1
- package/dist/456.6118cb99d130f4c0410c.bundle.js.map +0 -1
- package/dist/45758.6ceb731cbe0576149f31.bundle.js +0 -2
- package/dist/45758.6ceb731cbe0576149f31.bundle.js.map +0 -1
- package/dist/52264.99261393a7f6e631da3b.bundle.js.map +0 -1
- package/dist/54419.f09240da9349be115ab3.bundle.js +0 -2
- package/dist/54419.f09240da9349be115ab3.bundle.js.map +0 -1
- package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js +0 -2
- package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js.map +0 -1
- package/dist/58334.6fdc74532b5f755916d8.bundle.js +0 -2
- package/dist/58334.6fdc74532b5f755916d8.bundle.js.map +0 -1
- package/dist/60560.37740d97b418899a5d21.bundle.js +0 -2
- package/dist/60560.37740d97b418899a5d21.bundle.js.map +0 -1
- package/dist/64118.9841bd3b9724868b8a63.bundle.js +0 -2
- package/dist/64118.9841bd3b9724868b8a63.bundle.js.map +0 -1
- package/dist/66014.336bc4291da2fbc96cd1.bundle.js +0 -2
- package/dist/66014.336bc4291da2fbc96cd1.bundle.js.map +0 -1
- package/dist/67888.7d4966e0a22ba655f1b8.bundle.js.map +0 -1
- package/dist/69724.1a97fa707ee1379409e9.bundle.js +0 -2
- package/dist/69724.1a97fa707ee1379409e9.bundle.js.map +0 -1
- package/dist/77143.f23d8a7fa51df083741c.bundle.js +0 -2
- package/dist/77143.f23d8a7fa51df083741c.bundle.js.map +0 -1
- package/dist/78070.b5e22ffae27cc3ca7a6f.bundle.js +0 -2
- package/dist/78070.b5e22ffae27cc3ca7a6f.bundle.js.map +0 -1
- package/dist/78681.39694d37c0f75ea04df6.bundle.js +0 -2
- package/dist/78681.39694d37c0f75ea04df6.bundle.js.map +0 -1
- package/dist/81837.f10e22eaf72a0642b50e.bundle.js +0 -2
- package/dist/81837.f10e22eaf72a0642b50e.bundle.js.map +0 -1
- package/dist/82206.8ec983edcf675cfd4531.bundle.js +0 -2
- package/dist/82206.8ec983edcf675cfd4531.bundle.js.map +0 -1
- package/dist/82293.a9bb9cd640c007cc1e91.bundle.js +0 -2
- package/dist/82293.a9bb9cd640c007cc1e91.bundle.js.map +0 -1
- package/dist/82896.9aed45baf67510717c6f.bundle.js +0 -2
- package/dist/82896.9aed45baf67510717c6f.bundle.js.map +0 -1
- package/dist/83136.56d692623cbc60048e03.bundle.js.map +0 -1
- package/dist/84727.b93b2f9857352d39b241.bundle.js.map +0 -1
- package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js +0 -2
- package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js.map +0 -1
- package/dist/86639.ab85108411ef0f006e10.bundle.js.map +0 -1
- package/dist/89647.b1a4e522d685f0b5d60f.bundle.js +0 -2
- package/dist/89647.b1a4e522d685f0b5d60f.bundle.js.map +0 -1
- package/dist/95953.4ea6a7c68a22779ba299.bundle.js +0 -2
- package/dist/95953.4ea6a7c68a22779ba299.bundle.js.map +0 -1
- package/dist/96248.1b85f989b0a7852c9b7b.bundle.js +0 -2
- package/dist/96248.1b85f989b0a7852c9b7b.bundle.js.map +0 -1
- package/dist/98494.a2cdb2a1c5d32d0094f3.bundle.js +0 -3
- package/dist/98494.a2cdb2a1c5d32d0094f3.bundle.js.map +0 -1
- package/dist/99379.be6c85ef305af6667dc1.bundle.js +0 -2
- package/dist/99379.be6c85ef305af6667dc1.bundle.js.map +0 -1
- package/dist/99893.2537d77ee1f4df0c846b.bundle.js +0 -2
- package/dist/99893.2537d77ee1f4df0c846b.bundle.js.map +0 -1
- package/dist/legacyWorkbench.57fc12c172f6350ac4c5.js +0 -3
- package/dist/main.b9a83da68ffc43c91de0.js.map +0 -1
- package/dist/shared-components/cjs/translation.service-DjdwDpXN.js +0 -1
- package/dist/shared-components/esm/translation.service-Hf6024E7.js +0 -1
- package/dist/shared-components/shared-components/p-2433b25f.entry.js +0 -1
- package/dist/shared-components/shared-components/p-25fa0ee5.entry.js +0 -1
- package/dist/shared-components/shared-components/p-6266be98.entry.js +0 -1
- package/dist/shared-components/shared-components/p-Hf6024E7.js +0 -1
- /package/dist/{98494.a2cdb2a1c5d32d0094f3.bundle.js.LICENSE.txt → 98494.969124a68766ebbdee3c.bundle.js.LICENSE.txt} +0 -0
- /package/dist/{legacyWorkbench.57fc12c172f6350ac4c5.js.LICENSE.txt → legacyWorkbench.2bd696723af2573e8bb7.js.LICENSE.txt} +0 -0
- /package/dist/{main.b9a83da68ffc43c91de0.js.LICENSE.txt → main.be51ba05166a17f051a0.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"5470.7c17c7d3b58c8c0d0786.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/similarity/controllers/create-index.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index-status.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontotext-yasgui/rendering-mode.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-view-mode.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/mappers/similarity-index-mapper.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index-error.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index-info.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-index-type.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/utils/notifications.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontotext-yasgui/yasqe-mode.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/similarity/similarity-query-type.js"],"sourcesContent":["import 'angular/utils/notifications';\nimport 'angular/utils/local-storage-adapter';\nimport 'angular/core/services/event-emitter-service';\nimport {mapIndexesResponseToSimilarityIndex} from \"../../rest/mappers/similarity-index-mapper\";\nimport {\n DISABLE_YASQE_BUTTONS_CONFIGURATION, INFERRED_AND_SAME_AS_BUTTONS_CONFIGURATION, YasguiComponentDirectiveUtil, YasqeButtonName,\n} from \"../../core/directives/yasgui-component/yasgui-component-directive.util\";\nimport {RenderingMode} from \"../../models/ontotext-yasgui/rendering-mode\";\nimport {YasqeMode} from \"../../models/ontotext-yasgui/yasqe-mode\";\nimport {SimilarityViewMode} from \"../../models/similarity/similarity-view-mode\";\nimport {SimilarityQueryType} from \"../../models/similarity/similarity-query-type\";\nimport {SimilarityIndexType} from \"../../models/similarity/similarity-index-type\";\nimport {SimilarityIndexError} from \"../../models/similarity/similarity-index-error\";\nimport {QueryType} from \"../../models/ontotext-yasgui/query-type\";\nimport {SimilarityIndexInfo} from \"../../models/similarity/similarity-index-info\";\nimport {RepositoryContextService, ServiceProvider} from \"@ontotext/workbench-api\";\n\nangular\n .module('graphdb.framework.similarity.controllers.create', [\n 'graphdb.framework.utils.notifications',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .controller('CreateSimilarityIdxCtrl', CreateSimilarityIdxCtrl);\n\nCreateSimilarityIdxCtrl.$inject = [\n '$scope',\n 'toastr',\n '$uibModal',\n '$timeout',\n 'SimilarityRestService',\n 'SparqlRestService',\n '$location',\n 'productInfo',\n 'Notifications',\n 'RDF4JRepositoriesRestService',\n 'LocalStorageAdapter',\n 'LSKeys',\n '$translate',\n '$repositories',\n 'EventEmitterService',\n 'ModalService'\n];\n\nfunction CreateSimilarityIdxCtrl(\n $scope,\n toastr,\n $uibModal,\n $timeout,\n SimilarityRestService,\n SparqlRestService,\n $location,\n productInfo,\n Notifications,\n RDF4JRepositoriesRestService,\n LocalStorageAdapter,\n LSKeys,\n $translate,\n $repositories,\n EventEmitterService,\n ModalService\n) {\n\n /**\n * @type {ProductInfo}\n */\n $scope.productInfo = productInfo;\n\n $scope.SimilarityQueryType = SimilarityQueryType;\n $scope.SimilarityIndexType = SimilarityIndexType;\n\n /**\n * @type {SimilarityIndexInfo}\n */\n $scope.similarityIndexInfo = undefined;\n $scope.samples = undefined;\n $scope.yasguiConfig = undefined;\n $scope.saveOrUpdateExecuted = false;\n $scope.loadingControllerResources = false;\n $scope.helpHidden = LocalStorageAdapter.get(LSKeys.HIDE_SIMILARITY_HELP) === 1;\n /**\n * Flag that indicates if the index save operation is in progress.\n * @type {boolean}\n */\n $scope.savingIndex = false;\n\n let isDirty = false;\n let searchQueries = undefined;\n let allSamples = undefined;\n let usedPrefixes = undefined;\n let viewMode = SimilarityViewMode.CREATE;\n const textDefaultOptions = '-termweight idf';\n const predDefaultOptions = '';\n\n // This flag is used to prevent triggering the repository change event listener on initial subscription.\n let initialRepoChangeTrigger = true;\n\n\n // =========================\n // Public functions\n // =========================\n /**\n * Changes the similarity index type. (\"Create text similarity index\" or \"Create predication index\").\n *\n * @param {string} similarityIndexType - the new value of similarity index type. The value have to be one of {@link SimilarityIndexType}.\n * @param {string} similarityQueryType - the type of similarity query that have to be shown. Default value is data query.\n * The value have to be one of {@link SimilarityQueryType}.\n */\n $scope.changeSimilarityIndexType = (similarityIndexType, similarityQueryType = SimilarityQueryType.DATA) => {\n $scope.similarityIndexInfo.setType(similarityIndexType);\n if ($scope.similarityIndexInfo.isPredicationType()) {\n $scope.samples = allSamples[SimilarityIndexType.PREDICATION];\n } else {\n $scope.samples = allSamples[SimilarityIndexType.TEXT];\n }\n $scope.changeQueryTab(similarityQueryType)\n .then((similarityIndexInfo) => {\n setDefaultQueries($scope.similarityIndexInfo);\n $scope.setEditorQuery($scope.similarityIndexInfo.getQuery());\n });\n }\n\n /**\n * Changes the query tab. (\"Data query\", \"Search query\" or \"Analogical query\").\n *\n * @param {string} similarityQueryType - the type of query that have to be shown. The value have to be one of {@link SimilarityQueryType}.\n */\n $scope.changeQueryTab = (similarityQueryType) => {\n const oldSimilarityQueryType = $scope.similarityIndexInfo.getSelectedQueryType();\n if (oldSimilarityQueryType === similarityQueryType) {\n return Promise.resolve();\n }\n $scope.similarityIndexInfo.setSelectedQueryType(similarityQueryType);\n return updateQueryFromEditor($scope.similarityIndexInfo, oldSimilarityQueryType)\n .then((similarityIndexInfo) => validateQuery(similarityIndexInfo, oldSimilarityQueryType))\n .then((similarityIndexInfo) => validateQueryType(similarityIndexInfo, oldSimilarityQueryType))\n .catch((error) => {\n if (!(error instanceof SimilarityIndexError)) {\n console.log(error);\n }\n })\n .finally(() => {\n const ontotextYasgui = getOntotextYasgui();\n $scope.similarityIndexInfo.setSelectedYasguiRenderMode(RenderingMode.YASQE);\n ontotextYasgui.changeRenderMode($scope.similarityIndexInfo.getSelectedYasguiRenderMode());\n if ($scope.similarityIndexInfo.isDataQueryTypeSelected()) {\n ontotextYasgui.showYasqeActionButton([YasqeButtonName.INFER_STATEMENTS, YasqeButtonName.EXPANDS_RESULTS]);\n } else {\n ontotextYasgui.hideYasqeActionButton([YasqeButtonName.INFER_STATEMENTS, YasqeButtonName.EXPANDS_RESULTS]);\n }\n ontotextYasgui.setQuery($scope.similarityIndexInfo.getQuery());\n });\n }\n\n /**\n * Validates all similarity index data, and if everything is ok calls backend server to create an index.\n */\n $scope.createSimilarityIndex = () => {\n $scope.saveOrUpdateExecuted = true;\n $scope.savingIndex = true;\n updateQueryFromEditor($scope.similarityIndexInfo)\n .then(validateQuery)\n .then(validateQueryType)\n .then(validateSimilarityIndex)\n .then(validateSimilarityIndexNameExistence)\n .then((similarityIndexInfo) => createIndex(similarityIndexInfo.getSimilarityIndex()))\n .then(() => goToSimilarityIndexesView())\n .catch((error) => {\n if (!(error instanceof SimilarityIndexError)) {\n toastr.error(getError(error), $translate.instant('similarity.could.not.get.indexes.error'));\n }\n })\n .finally(() => {\n $scope.savingIndex = false;\n });\n };\n\n /**\n * Opens a modal dialog and displays the sparql query of currently selected index type query.\n */\n $scope.viewQuery = () => {\n updateQueryFromEditor($scope.similarityIndexInfo)\n .then(validateSimilarityIndex)\n .then(fetchSparqlQuery)\n .then(showSparqlQuery)\n .catch((error) => toastr.error(getError(error)));\n };\n\n /**\n * Executes the query.\n */\n $scope.preview = () => {\n updateQueryFromEditor($scope.similarityIndexInfo)\n .then(validateQueryType)\n .then(validateQuery)\n .then(() => {\n const ontotextYasgui = getOntotextYasgui();\n $scope.similarityIndexInfo.setSelectedYasguiRenderMode(RenderingMode.YASR);\n ontotextYasgui.query($scope.similarityIndexInfo.getSelectedYasguiRenderMode());\n });\n }\n\n $scope.saveSearchQuery = function () {\n if (!isDirty) {\n $location.url('similarity');\n } else {\n $scope.saveOrUpdateExecuted = true;\n $scope.savingIndex = true;\n updateQueryFromEditor($scope.similarityIndexInfo)\n .then(validateSimilarityIndexName)\n .then(validateQuery)\n .then(validateQueryType)\n .then(validateSearchQuery)\n .then(validateAnalogicalQuery)\n .then(saveQuery)\n .then((isSearchQuery) => {\n // toastr should be triggered before the redirect because the redirect will remove the toast\n return Notifications.showToastMessageWithDelay(isSearchQuery ? 'similarity.changed.search.query.msg' : 'similarity.changed.analogical.query.msg');\n })\n .then(() => {\n $location.url('similarity');\n })\n .catch((error) => {\n if (!(error instanceof SimilarityIndexError)) {\n toastr.error(getError(error), $translate.instant('similarity.change.query.error'));\n }\n })\n .finally(() => {\n $scope.savingIndex = false;\n });\n }\n };\n\n /**\n * Sets the <code>query</code> to the sparql editor.\n *\n * @param {string} query - a sparql query.\n */\n $scope.setEditorQuery = (query) => {\n $scope.similarityIndexInfo.markInvalidQuery(undefined, false);\n $scope.similarityIndexInfo.markInvalidQueryType(undefined, false);\n if ($scope.yasguiConfig) {\n getOntotextYasgui().setQuery(query);\n } else {\n updateYasguiComponent({initialQuery: query || ' '});\n }\n }\n\n $scope.similarityIndexNameChanged = () => {\n $scope.setDirty();\n $scope.similarityIndexInfo.isNameExist = false;\n }\n\n $scope.queryChanged = () => {\n $scope.setDirty();\n $scope.similarityIndexInfo.markInvalidQuery(undefined, false);\n $scope.similarityIndexInfo.markInvalidQueryType(undefined, false);\n }\n\n $scope.isCloneViewMode = () => {\n return SimilarityViewMode.CLONE === viewMode;\n }\n\n $scope.isEditViewMode = () => {\n return SimilarityViewMode.EDIT === viewMode;\n }\n\n $scope.isCreateViewMode = () => {\n return SimilarityViewMode.CREATE === viewMode;\n }\n\n $scope.setDirty = () => {\n isDirty = true;\n };\n\n $scope.isYasqeShown = () => {\n return $scope.similarityIndexInfo && $scope.similarityIndexInfo.isYasqeRenderMode();\n }\n\n $scope.isYasrShown = () => {\n return $scope.similarityIndexInfo && $scope.similarityIndexInfo.isYasrRenderMode();\n }\n\n $scope.showEditor = () => {\n const ontotextYasgui = getOntotextYasgui();\n ontotextYasgui.abortQuery().then(() => {\n return ontotextYasgui.setQuery($scope.similarityIndexInfo.getQuery());\n }).then(() => {\n $scope.similarityIndexInfo.setSelectedYasguiRenderMode(RenderingMode.YASQE);\n return ontotextYasgui.changeRenderMode($scope.similarityIndexInfo.getSelectedYasguiRenderMode());\n });\n };\n\n $scope.toggleHelp = (value) => {\n if (value === undefined) {\n value = LocalStorageAdapter.get(LSKeys.HIDE_SIMILARITY_HELP);\n }\n if (value !== 1) {\n LocalStorageAdapter.set(LSKeys.HIDE_SIMILARITY_HELP, 1);\n $scope.helpHidden = true;\n } else {\n LocalStorageAdapter.set(LSKeys.HIDE_SIMILARITY_HELP, 0);\n $scope.helpHidden = false;\n }\n };\n\n $scope.getCloseBtnMsg = function () {\n let operationType = $scope.editSearchQuery ? $translate.instant('similarity.query.edition.msg') : $translate.instant('similarity.index.creation.msg');\n return $translate.instant('similarity.close.btn.msg', {operation: operationType});\n }\n\n $scope.hasQueryError = () => {\n const similarityQueryType = $scope.similarityIndexInfo.getSelectedQueryType();\n\n if (SimilarityQueryType.DATA === similarityQueryType) {\n return $scope.hasSelectQueryError();\n }\n\n if (SimilarityQueryType.SEARCH === similarityQueryType) {\n return $scope.hasSearchQueryError();\n }\n\n if (SimilarityQueryType.ANALOGICAL === similarityQueryType) {\n return $scope.hasAnalogicalQueryError();\n }\n\n return false;\n }\n\n $scope.hasSelectQueryError = () => {\n return !$scope.similarityIndexInfo.hasSelectQuery() ||\n $scope.similarityIndexInfo.invalidSelectQuery ||\n $scope.similarityIndexInfo.invalidSelectQueryType;\n }\n\n $scope.hasSearchQueryError = () => {\n return !$scope.similarityIndexInfo.hasSearchQuery() ||\n $scope.similarityIndexInfo.invalidSearchQuery ||\n $scope.similarityIndexInfo.invalidSearchQueryType;\n }\n\n $scope.hasAnalogicalQueryError = () => {\n return !$scope.similarityIndexInfo.hasAnalogicalQuery() ||\n $scope.similarityIndexInfo.invalidAnalogicalQuery ||\n $scope.similarityIndexInfo.invalidAnalogicalQueryType;\n }\n\n $scope.getQueryErrorMessage = () => {\n const similarityQueryType = $scope.similarityIndexInfo.getSelectedQueryType();\n let isEmpty = false;\n let invalidQueryType = false;\n let invalidQuery = false;\n\n if (SimilarityQueryType.DATA === similarityQueryType) {\n isEmpty = !$scope.similarityIndexInfo.hasSelectQuery();\n invalidQueryType = $scope.similarityIndexInfo.invalidSelectQueryType;\n invalidQuery = $scope.similarityIndexInfo.invalidSelectQuery;\n } else if (SimilarityQueryType.SEARCH === similarityQueryType) {\n isEmpty = !$scope.similarityIndexInfo.hasSearchQuery();\n invalidQueryType = $scope.similarityIndexInfo.invalidSearchQueryType;\n invalidQuery = $scope.similarityIndexInfo.invalidSearchQuery;\n } else if (SimilarityQueryType.ANALOGICAL === similarityQueryType) {\n isEmpty = !$scope.similarityIndexInfo.hasAnalogicalQuery();\n invalidQueryType = $scope.similarityIndexInfo.invalidAnalogicalQueryType;\n invalidQuery = $scope.similarityIndexInfo.invalidAnalogicalQuery;\n }\n\n const labelParams = {queryType: $translate.instant(`similarity.query.type.${similarityQueryType}.name`)};\n if (isEmpty) {\n return $translate.instant('similarity.error.query.empty', labelParams);\n } else if (invalidQuery) {\n return $translate.instant('similarity.error.query.invalid', labelParams);\n } else if (invalidQueryType) {\n return $translate.instant('similarity.error.query.invalid_type', labelParams);\n }\n\n return '';\n }\n // =========================\n // Private functions\n // =========================\n /**\n * Initializes all view components.\n */\n const init = () => {\n getSimilarityIndex()\n .then((similarityIndexInfo) => {\n $scope.similarityIndexInfo = similarityIndexInfo;\n let initialQueryTab = SimilarityQueryType.DATA;\n if ($scope.isEditViewMode()) {\n initialQueryTab = SimilarityQueryType.SEARCH;\n }\n $scope.changeSimilarityIndexType(similarityIndexInfo.getType(), initialQueryTab)\n });\n }\n\n /**\n * Validates the editor query and updates error statuses of <code>SimilarityIndexInfo</code>. Updates <code>SimilarityIndexInfo</code> query with editor one.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @param {string} similarityQueryType - the type of similarity query that have to be shown. If parameter is undefined then currently selected query type will be used.\n * The value have to be one of {@link SimilarityQueryType}.\n * @return {Promise<SimilarityIndexInfo>}\n */\n const updateQueryFromEditor = (similarityIndexInfo, similarityQueryType = undefined) => {\n return getOntotextYasgui().getQuery()\n .then((query) => similarityIndexInfo.setQuery(query, similarityQueryType))\n .then(() => similarityIndexInfo);\n }\n\n /**\n * Fetches the sparql query of currently chosen query type from the backed server.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<string>} the sparql query of currently chosen query type.\n */\n const fetchSparqlQuery = (similarityIndexInfo) => {\n return SimilarityRestService.getQuery({\n indexName: similarityIndexInfo.getName(),\n indexOptions: similarityIndexInfo.getOptions(),\n query: similarityIndexInfo.getQuery(),\n indexStopList: similarityIndexInfo.getStopList(),\n queryInference: similarityIndexInfo.getInference(),\n querySameAs: similarityIndexInfo.getSameAs(),\n viewType: similarityIndexInfo.getSelectedQueryType(),\n indexAnalyzer: similarityIndexInfo.getAnalyzer()\n }).then((response) => response.data);\n }\n\n /**\n * Shows a modal dialog that displays the <code>query</code>.\n *\n * @param {string} query which will be displayed.\n */\n const showSparqlQuery = (query) => {\n if (query) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n }\n }\n\n const setDefaultQueries = (similarityIndexInfo) => {\n const similarityIndexType = similarityIndexInfo.getType();\n if (!$scope.isEditViewMode() && searchQueries) {\n similarityIndexInfo.setQuery(searchQueries[similarityIndexType], SimilarityQueryType.SEARCH);\n similarityIndexInfo.setQuery(searchQueries['analogical'], SimilarityQueryType.ANALOGICAL);\n }\n\n if (allSamples) {\n if (SimilarityIndexType.PREDICATION === similarityIndexType) {\n const allSampleElement = allSamples[SimilarityIndexType.PREDICATION]['predication'];\n similarityIndexInfo.setQuery(allSampleElement, SimilarityQueryType.DATA);\n } else {\n const allSampleElement1 = allSamples[SimilarityIndexType.TEXT]['literals'];\n similarityIndexInfo.setQuery(allSampleElement1, SimilarityQueryType.DATA);\n }\n }\n }\n\n /**\n * Initializes the similarity index info object with default values if view is opened for create or populates values from url if\n * view is opened for edit.\n *\n * @return {Promise<SimilarityIndexInfo>}\n */\n const getSimilarityIndex = () => {\n const similarityIndexInfo = new SimilarityIndexInfo();\n similarityIndexInfo.setName(getSimilarityIndexName());\n similarityIndexInfo.setType(getSimilarityType());\n similarityIndexInfo.setSelectedQueryType($scope.isEditViewMode() ? SimilarityQueryType.SEARCH : SimilarityQueryType.DATA);\n const options = $location.search().options;\n if (options) {\n similarityIndexInfo.setOptions(options);\n } else {\n similarityIndexInfo.setOptions(similarityIndexInfo.isTextType() ? textDefaultOptions : predDefaultOptions);\n }\n\n setDefaultQueries(similarityIndexInfo);\n const searchQuery = $location.search().searchQuery;\n if (searchQuery) {\n similarityIndexInfo.setQuery(searchQuery, SimilarityQueryType.SEARCH);\n }\n\n\n const selectQuery = $location.search().selectQuery;\n if (selectQuery) {\n similarityIndexInfo.setQuery(selectQuery, SimilarityQueryType.DATA);\n }\n\n const analogicalQuery = $location.search().analogicalQuery;\n if (analogicalQuery) {\n similarityIndexInfo.setQuery(analogicalQuery, SimilarityQueryType.ANALOGICAL);\n }\n\n if (similarityIndexInfo.isTextType()) {\n similarityIndexInfo.setStopList($location.search().stopList)\n similarityIndexInfo.setAnalyzer($location.search().analyzer);\n const isLiteralIndex = getAndRemoveOption(similarityIndexInfo.getSimilarityIndex(), '-literal_index');\n if (isLiteralIndex !== undefined) {\n similarityIndexInfo.setLiteralIndex(isLiteralIndex);\n }\n }\n\n if (similarityIndexInfo.isPredicationType()) {\n return SimilarityRestService.getIndexes()\n .then((response) => {\n const indexesNotInProgress = mapIndexesResponseToSimilarityIndex(response.data)\n .filter((similarityIndex) => similarityIndex.isTextLiteralType() && (similarityIndex.isBuiltStatus() || similarityIndex.isOutdatedStatus()))\n .map((similarityIndex) => similarityIndex.name);\n\n $scope.literalIndexes = ['no-index'].concat(indexesNotInProgress);\n\n if (similarityIndexInfo.getInputIndex() === undefined) {\n const desiredIdx = getAndRemoveOption(similarityIndexInfo.getSimilarityIndex(), '-input_index');\n if (desiredIdx !== undefined) {\n for (let j = 0; j < $scope.literalIndexes.length; j++) {\n if (desiredIdx === $scope.literalIndexes[j]) {\n similarityIndexInfo.setInputIndex($scope.literalIndexes[j]);\n }\n }\n }\n }\n if (similarityIndexInfo.getInputIndex() === undefined) {\n similarityIndexInfo.setInputIndex($scope.literalIndexes[0]);\n }\n return similarityIndexInfo;\n })\n .catch(function (error) {\n const msg = getError(error);\n toastr.error(msg, $translate.instant('similarity.could.not.get.indexes.error'));\n });\n }\n\n return Promise.resolve(similarityIndexInfo);\n }\n\n const updateYasguiComponent = (config) => {\n const defaultConfig = {\n endpoint: getQueryEndpoint,\n componentId: 'create-index',\n showEditorTabs: false,\n showToolbar: false,\n showResultTabs: false,\n showYasqeActionButtons: false,\n showQueryButton: false,\n downloadAsOn: false,\n showResultInfo: false,\n showYasqeResizer: false,\n pageSize: 100,\n prefixes: usedPrefixes,\n render: $scope.similarityIndexInfo.getSelectedYasguiRenderMode(),\n yasqeActionButtons: $scope.isEditViewMode() || !$scope.similarityIndexInfo.isDataQueryTypeSelected() ? DISABLE_YASQE_BUTTONS_CONFIGURATION : INFERRED_AND_SAME_AS_BUTTONS_CONFIGURATION,\n maxPersistentResponseSize: 0,\n yasqeMode: $scope.canWriteActiveRepo() ? YasqeMode.WRITE : YasqeMode.READ,\n }\n\n const yasguiConfig = {}\n angular.extend(yasguiConfig, defaultConfig, config);\n $scope.yasguiConfig = yasguiConfig;\n }\n\n const getQueryEndpoint = () => {\n return `repositories/${$repositories.getActiveRepository()}`;\n };\n\n /**\n * Call backend server to create a similarity index with data filled in <code>similarityIndexInfo</code>.\n *\n * @param {SimilarityIndex} similarityIndex - objects holds all needed data to create a similarity index.\n * @return {*}\n */\n const createIndex = (similarityIndex) => {\n if ($scope.literalIndexes !== undefined) {\n const inputIndex = similarityIndex.inputIndex;\n if (inputIndex !== $scope.literalIndexes[0]) {\n similarityIndex.options = similarityIndex.options + (similarityIndex.options === '' ? '' : ' ') + '-input_index' + ' ' + inputIndex;\n }\n }\n if (similarityIndex.isLiteralIndex === 'true') {\n similarityIndex.options = similarityIndex.options + (similarityIndex.options === '' ? '' : ' ') + '-literal_index' + ' true';\n similarityIndex.type = SimilarityIndexType.TEXT_LITERAL;\n }\n isDirty = false;\n return SimilarityRestService.createIndex('POST',\n similarityIndex.name,\n similarityIndex.options,\n similarityIndex.selectQuery,\n similarityIndex.searchQuery,\n similarityIndex.isPredicationType() ? similarityIndex.analogicalQuery : '',\n similarityIndex.stopList,\n similarityIndex.infer,\n similarityIndex.sameAs,\n similarityIndex.type,\n similarityIndex.analyzer)\n .then(() => {\n toastr.success($translate.instant('similarity.create.index.successfully'));\n return similarityIndex;\n })\n .catch(function (err) {\n const errorMessage = getError(err);\n toastr.error(errorMessage, $translate.instant('similarity.create.index.error'));\n console.log(errorMessage);\n return Promise.reject(new SimilarityIndexError('Could not create index.'));\n });\n }\n\n const notifySaveSuccess = async (isSearchQuery) => {\n await Notifications.showToastMessageWithDelay(isSearchQuery ? 'similarity.changed.search.query.msg' : 'similarity.changed.analogical.query.msg');\n $location.url('similarity');\n }\n\n const saveQuery = (similarityIndexInfo) => {\n const isSearchQuery = similarityIndexInfo.isSearchQueryTypeSelected();\n let data = {\n name: similarityIndexInfo.getSimilarityIndex().name,\n changedQuery: similarityIndexInfo.getQuery(),\n isSearchQuery\n };\n return SimilarityRestService.saveSearchQuery(JSON.stringify(data))\n .then(() => {\n isDirty = false;\n return isSearchQuery\n })\n }\n\n const goToSimilarityIndexesView = () => {\n $timeout(() =>\n $location.url('similarity')\n , 100);\n }\n\n const getOntotextYasgui = () => {\n return YasguiComponentDirectiveUtil.getOntotextYasguiElement('#query-editor');\n };\n\n /**\n * Fetches similarity index name from url parameters. Adds clone prefix if view mode is in clone mode.\n *\n * @return {string}\n */\n const getSimilarityIndexName = () => {\n const indexNameFromLocation = $location.search().name || '';\n return $scope.isCloneViewMode() ? `${$translate.instant('similarity.copy_of.prefix')}_${indexNameFromLocation}` : indexNameFromLocation;\n };\n\n /**\n * Fetches similarity index type from url parameters if any. Default value is {@see SimilarityIndexType.TEXT}.\n *\n * @return {*|string}\n */\n const getSimilarityType = () => {\n const indexType = $location.search().type;\n if (indexType === undefined || indexType.startsWith('text')) {\n return SimilarityIndexType.TEXT;\n } else {\n return indexType;\n }\n }\n\n // TODO simplify\n const getAndRemoveOption = (similarityIndex, key) => {\n const optArr = similarityIndex.options.split(' ');\n for (let i = 0; i < optArr.length; i++) {\n if (optArr[i] === key && i + 1 < optArr.length) {\n const value = optArr[i + 1];\n\n delete optArr[i];\n delete optArr[i + 1];\n similarityIndex.options = optArr.join(' ');\n\n return value;\n }\n }\n return undefined;\n }\n\n /**\n * Calculates the view mode. The view mode can be any value of {@see SimilarityViewMode}.\n * @return {string}\n */\n const getViewMode = () => {\n if ($location.search().name === undefined) {\n return SimilarityViewMode.CREATE;\n }\n\n const editSearchQuery = $location.search().editSearchQuery;\n if (editSearchQuery === undefined) {\n return SimilarityViewMode.CLONE;\n }\n\n // Cast is needed because when view is opened from another view the type value is boolean but if\n // page is refreshed the value is boolean (\"false\" for example).\n // TODO: Check why this happened.\n if (typeof editSearchQuery === 'string') {\n return editSearchQuery === 'false' ? SimilarityViewMode.CLONE : SimilarityViewMode.EDIT;\n }\n\n return editSearchQuery ? SimilarityViewMode.EDIT : SimilarityViewMode.CLONE;\n }\n\n\n // =========================\n // Validation functions\n // =========================\n /**\n * Validates all similarity index data and updates the error fields of the similarityIndexInfo object according to the validations.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n */\n const validateSimilarityIndex = (similarityIndexInfo) => {\n return Promise.all([validateSimilarityIndexName(similarityIndexInfo)\n .then(validateSelectQuery)\n .then(validateSearchQuery)\n .then(validateAnalogicalQuery)\n .then(validateQueryType)\n .then(validateQuery)])\n .then(() => similarityIndexInfo);\n }\n\n /**\n * Checks if typed similarity index name already exist.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n * @throws {SimilarityIndexError} if similarity already exist.\n */\n const validateSimilarityIndexNameExistence = (similarityIndexInfo) => {\n return SimilarityRestService.getIndexes()\n .then((response) => {\n if (response.data.some((index) => index.name === similarityIndexInfo.getName())) {\n similarityIndexInfo.isNameExist = true;\n return Promise.reject(new SimilarityIndexError('Similarity index name exists.'));\n }\n\n return similarityIndexInfo;\n });\n };\n\n /**\n * Check if similarity index name is filed and if is filled if it's value is correct.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n * @throws {SimilarityIndexError} if similarity index name is empty, or it's name is not correct.\n */\n const validateSimilarityIndexName = (similarityIndexInfo) => {\n if (!similarityIndexInfo.getSimilarityIndex().name) {\n return Promise.reject(new SimilarityIndexError('Missing similarity name.'));\n }\n if (!similarityIndexInfo.isNameValid()) {\n return Promise.reject(new SimilarityIndexError('Invalid similarity name.'));\n }\n return Promise.resolve(similarityIndexInfo);\n }\n\n /**\n * Validates if similarity index select query exist.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n * @throws {SimilarityIndexError} if select query is empty.\n */\n const validateSelectQuery = (similarityIndexInfo) => {\n if (!similarityIndexInfo.hasSelectQuery()) {\n return Promise.reject(new SimilarityIndexError('Missing select query.'));\n } else if (similarityIndexInfo.invalidSelectQuery) {\n return Promise.reject(new SimilarityIndexError('Invalid select query'));\n } else if (similarityIndexInfo.invalidSelectQueryType) {\n return Promise.reject(new SimilarityIndexError('Invalid select query type'));\n }\n return Promise.resolve(similarityIndexInfo);\n }\n\n /**\n * Validates if similarity index search query exist.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n * @throws {SimilarityIndexError} if search query is empty.\n */\n const validateSearchQuery = (similarityIndexInfo) => {\n if (!similarityIndexInfo.hasSearchQuery()) {\n return Promise.reject(new SimilarityIndexError('Missing search query.'));\n } else if (similarityIndexInfo.invalidSearchQuery) {\n return Promise.reject(new SimilarityIndexError('Invalid search query'));\n } else if (similarityIndexInfo.invalidSearchQueryType) {\n return Promise.reject(new SimilarityIndexError('Invalid search query type'));\n }\n return Promise.resolve(similarityIndexInfo);\n }\n\n /**\n * Validates if analogical index search query exist.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n * @throws {SimilarityIndexError} if analogical query is empty.\n */\n const validateAnalogicalQuery = (similarityIndexInfo) => {\n if (similarityIndexInfo.isPredicationType() && !similarityIndexInfo.hasAnalogicalQuery()) {\n return Promise.reject(new SimilarityIndexError('Missing analogical query.'));\n } else if (similarityIndexInfo.invalidAnalogicalQuery) {\n return Promise.reject(new SimilarityIndexError('Invalid analogical query'));\n } else if (similarityIndexInfo.invalidAnalogicalQueryType) {\n return Promise.reject(new SimilarityIndexError('Invalid analogical query type'));\n }\n return Promise.resolve(similarityIndexInfo);\n }\n\n /**\n * Checks if query mode is valid. The mode have to be \"SELECT\".\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n * @throws {SimilarityIndexError} if query type is not ot type \"SELECT\".\n */\n const validateQueryType = (similarityIndexInfo, similarityQueryType = undefined) => {\n return getOntotextYasgui().getQueryType()\n .then((queryType) => {\n if (QueryType.SELECT !== queryType) {\n similarityIndexInfo.markInvalidQueryType(similarityQueryType);\n return Promise.reject(new SimilarityIndexError('Query type is not valid.'));\n } else {\n similarityIndexInfo.markInvalidQueryType(similarityQueryType, false);\n }\n return similarityIndexInfo;\n });\n };\n\n /**\n * Checks if query is valid.\n *\n * @param {SimilarityIndexInfo} similarityIndexInfo - holds similarity index data (queries, sameAs, infer ...) and information about errors if any.\n * @return {Promise<SimilarityIndexInfo>}\n * @throws {SimilarityIndexError} if query is not valid.\n */\n const validateQuery = (similarityIndexInfo, similarityQueryType = undefined) => {\n return getOntotextYasgui().isQueryValid()\n .then((valid) => {\n if (!valid) {\n similarityIndexInfo.markInvalidQuery(similarityQueryType);\n return Promise.reject(new SimilarityIndexError('Query is not valid.'));\n } else {\n similarityIndexInfo.markInvalidQuery(similarityQueryType, false);\n }\n return similarityIndexInfo;\n });\n };\n\n const openConfirmDialog = (title, message, onConfirm, onCancel) => {\n ModalService.openSimpleModal({\n title,\n message,\n warning: true\n }).result.then(function () {\n if (angular.isFunction(onConfirm)) {\n onConfirm();\n }\n }, function () {\n if (angular.isFunction(onCancel)) {\n onCancel();\n }\n });\n };\n\n // =========================\n // Subscriptions handlers\n // =========================\n const repositoryWillChangeHandler = () => {\n return new Promise(function (resolve) {\n\n if ($scope.isCreateViewMode() || $scope.isCloneViewMode()) {\n resolve(true);\n return;\n }\n\n const onConfirm = () => {\n isDirty = false;\n resolve(true);\n };\n\n if (isDirty) {\n const onCancel = () => {\n resolve(false);\n };\n const title = $translate.instant('common.confirm');\n const message = $translate.instant('similarity.warning.unsaved.changes');\n openConfirmDialog(title, message, onConfirm, onCancel);\n } else {\n onConfirm();\n }\n });\n };\n\n const repositoryChangedHandler = (repository) => {\n if (!repository) {\n return;\n }\n if (initialRepoChangeTrigger) {\n initialRepoChangeTrigger = false;\n } else {\n goToSimilarityIndexesView();\n }\n };\n\n const activeRepositoryHandler = () => {\n // when repository is changed we have to switch yasgui back to editor mode\n if ($scope.isYasrShown() && $scope.similarityIndexInfo.isDataQueryTypeSelected()) {\n $scope.showEditor();\n }\n $scope.canEditActiveRepo = $scope.canWriteActiveRepo();\n const config = {...$scope.yasguiConfig, yasqeMode: $scope.canWriteActiveRepo()};\n updateYasguiComponent(config);\n };\n\n const locationChangedHandler = (event, newPath) => {\n if (isDirty) {\n event.preventDefault();\n const title = $translate.instant('common.confirm');\n const message = $translate.instant('similarity.warning.unsaved.changes');\n const onConfirm = () => {\n removeAllListeners();\n const baseLen = $location.absUrl().length - $location.url().length;\n const path = newPath.substring(baseLen);\n $location.path(path);\n };\n openConfirmDialog(title, message, onConfirm);\n } else {\n removeAllListeners();\n }\n };\n\n const beforeunloadHandler = (event) => {\n if (isDirty) {\n event.returnValue = true;\n }\n };\n\n const removeAllListeners = () => {\n window.removeEventListener('beforeunload', beforeunloadHandler);\n subscriptions.forEach((subscription) => subscription());\n };\n\n // =========================\n // Subscriptions\n // =========================\n const subscriptions = [];\n\n const repositoryContextService = ServiceProvider.get(RepositoryContextService);\n const repositoryChangeSubscription = repositoryContextService.onSelectedRepositoryChanged(repositoryChangedHandler, repositoryWillChangeHandler)\n\n subscriptions.push(repositoryChangeSubscription);\n subscriptions.push($scope.$on('$locationChangeStart', locationChangedHandler));\n subscriptions.push($scope.$on('$destroy', removeAllListeners));\n // Prevent go out of the current page? check\n window.addEventListener('beforeunload', beforeunloadHandler);\n\n viewMode = getViewMode();\n\n // Wait until the active repository object is set, otherwise \"canWriteActiveRepo()\" may return a wrong result and the \"ontotext-yasgui\"\n // readOnly configuration may be incorrect.\n const repoIsInitialized = $scope.$watch(function () {\n return $scope.getActiveRepositoryObject();\n }, function (activeRepo) {\n if (activeRepo) {\n $scope.loadingControllerResources = true;\n Promise.all([SimilarityRestService.getSearchQueries(), SimilarityRestService.getSamples(), $repositories.getPrefixes(activeRepo.id)])\n .then(([searchQueriesResponses, samplesResponse, usedPrefixesResponse]) => {\n $scope.canEditActiveRepo = $scope.canWriteActiveRepo();\n searchQueries = searchQueriesResponses ? searchQueriesResponses.data : [];\n allSamples = samplesResponse ? samplesResponse.data : [];\n usedPrefixes = usedPrefixesResponse;\n init();\n }).catch((error) => {\n console.log(error)\n $scope.repositoryError = getError(error);\n }).finally(() => {\n subscriptions.push($scope.$on('repositoryIsSet', activeRepositoryHandler));\n repoIsInitialized();\n $scope.loadingControllerResources = false;\n });\n }\n });\n}\n","export const SimilarityIndexStatus = {\n 'CREATING': 'CREATING',\n 'BUILDING': 'BUILDING',\n 'BUILT': 'BUILT',\n 'REBUILDING': 'REBUILDING',\n 'OUTDATED': 'OUTDATED',\n 'INTERRUPTED': 'INTERRUPTED',\n 'OBSOLETE': 'OBSOLETE',\n 'FAILED': 'FAILED',\n\n 'isCreatingStatus': (status) => {\n return SimilarityIndexStatus.CREATING === status;\n },\n\n 'isBuildingStatus': (status) => {\n return SimilarityIndexStatus.BUILDING === status;\n },\n\n 'isBuiltStatus': (status) => {\n return SimilarityIndexStatus.BUILT === status;\n },\n\n 'isRebuildingStatus': (status) => {\n return SimilarityIndexStatus.REBUILDING === status;\n },\n\n 'isOutdatedStatus': (status) => {\n return SimilarityIndexStatus.OUTDATED === status;\n },\n\n 'isInterruptedStatus': (status) => {\n return SimilarityIndexStatus.INTERRUPTED === status;\n },\n\n 'isObsoleteStatus': (status) => {\n return SimilarityIndexStatus.OBSOLETE === status;\n },\n\n 'isFailedStatus': (status) => {\n return SimilarityIndexStatus.FAILED === status;\n }\n};\n","import {SimilarityIndexType} from \"./similarity-index-type\";\nimport {SimilarityIndexStatus} from \"./similarity-index-status\";\n\nexport class SimilarityIndex {\n constructor() {\n this.analyzer = '';\n this.infer = true;\n this.options = '';\n this.sameAs = true;\n this.searchQuery = '';\n this.selectQuery = '';\n this.stopList = undefined;\n this.name = '';\n\n /**\n * The similarity index type.\n *\n * @type {string}\n */\n this.type = SimilarityIndexType.TEXT;\n\n /**\n * The similarity index type.\n *\n * @type {SimilarityIndexStatus}\n */\n this.status = undefined;\n\n this.analogicalQuery = undefined;\n this.inputIndex = undefined;\n this.isLiteralIndex = '';\n }\n\n isTextType() {\n return SimilarityIndexType.isTextType(this.type);\n }\n\n isTextLiteralType() {\n return SimilarityIndexType.isTextLiteralType(this.type);\n }\n\n isPredicationType() {\n return SimilarityIndexType.isPredicationType(this.type);\n }\n\n isCreatingStatus() {\n return SimilarityIndexStatus.isCreatingStatus(this.status);\n }\n\n isBuildingStatus() {\n return SimilarityIndexStatus.isBuildingStatus(this.status);\n }\n\n isBuiltStatus() {\n return SimilarityIndexStatus.isBuiltStatus(this.status);\n }\n\n isRebuildingStatus() {\n return SimilarityIndexStatus.isRebuildingStatus(this.status);\n }\n\n isOutdatedStatus() {\n return SimilarityIndexStatus.isOutdatedStatus(this.status);\n }\n\n isInterruptedStatus() {\n return SimilarityIndexStatus.isInterruptedStatus(this.status);\n }\n\n isObsoleteStatus() {\n return SimilarityIndexStatus.isObsoleteStatus(this.status);\n }\n\n isFailedStatus() {\n return SimilarityIndexStatus.isFailedStatus(this.status);\n }\n}\n","export const RenderingMode = {\n YASGUI: 'mode-yasgui',\n YASQE: 'mode-yasqe',\n YASR: 'mode-yasr'\n};\n","export const SimilarityViewMode = {\n 'CREATE': 'CREATE',\n 'EDIT': 'EDIT',\n 'CLONE': 'CLONE'\n};\n","import {SimilarityIndex} from \"../../models/similarity/similarity-index\";\n\n/**\n * Maps the response data to SimilarityIndex objects.\n * @param {*} responseData\n * @return {SimilarityIndex[]}\n */\nexport const mapIndexesResponseToSimilarityIndex = (responseData) => {\n return responseData.map((index) => {\n const similarityIndex = new SimilarityIndex();\n similarityIndex.type = index.type;\n similarityIndex.stopList = index.stopList;\n similarityIndex.status = index.status;\n similarityIndex.selectQuery = index.selectQuery;\n similarityIndex.searchQuery = index.searchQuery;\n similarityIndex.sameAs = index.sameAs;\n similarityIndex.options = index.options;\n similarityIndex.name = index.name;\n similarityIndex.infer = index.infer;\n similarityIndex.analyzer = index.analyzer;\n similarityIndex.analogicalQuery = index.analogicalQuery;\n return similarityIndex;\n });\n};\n","export class SimilarityIndexError extends Error {\n\n}\n","import {SimilarityIndex} from \"./similarity-index\";\nimport {SimilarityQueryType} from \"./similarity-query-type\";\nimport {RenderingMode} from \"../ontotext-yasgui/rendering-mode\";\n\nconst filenamePattern = new RegExp('^[a-zA-Z0-9-_]+$');\n\nexport class SimilarityIndexInfo {\n constructor() {\n this.similarityIndex = new SimilarityIndex();\n this.isNameExist = false;\n this.invalidSelectQueryType = false;\n this.invalidSelectQuery = false;\n this.invalidSearchQueryType = false;\n this.invalidSearchQuery = false;\n this.invalidAnalogicalQueryType = false;\n this.invalidAnalogicalQuery = false;\n /**\n * Holds the type of the selected query to be displayed, which determines the active tab.\n *\n * @type {string} - any of {@SimilarityQueryType} values.\n */\n this.selectedQueryType = SimilarityQueryType.DATA;\n this.selectedYasguiRenderMode = RenderingMode.YASQE;\n }\n\n /**\n * Sets the <code>query</code> as query of type <code>similarityQueryType</code>. If <code>similarityQueryType</code> not passed then the\n * currently selected type will be used. {@see SimilarityIndexInfo#selectedQueryType}.\n *\n * @param {string} query - the query to be set.\n * @param {string | undefined} similarityQueryType - the new value of similarity index type. The value have to be one of {@link SimilarityQueryType}.\n */\n setQuery(query, similarityQueryType = undefined) {\n const queryType = similarityQueryType || this.selectedQueryType;\n if (SimilarityQueryType.DATA === queryType) {\n this.similarityIndex.selectQuery = query;\n return;\n }\n\n if (SimilarityQueryType.SEARCH === queryType) {\n this.similarityIndex.searchQuery = query;\n return;\n }\n\n if (SimilarityQueryType.ANALOGICAL === queryType) {\n this.similarityIndex.analogicalQuery = query;\n }\n }\n\n /**\n * Fetches the query depends on <code>similarityQueryType</code>. If <code>similarityQueryType</code> not passed then the\n * currently selected type will be used. {@see SimilarityIndexInfo#selectedQueryType}.\n *\n * @param {string | undefined} similarityQueryType - the type of query that have to be returned. The value have to be one of {@link SimilarityQueryType}.\n * @return {string} the requested query.\n */\n getQuery(similarityQueryType = undefined) {\n const queryType = similarityQueryType || this.selectedQueryType;\n switch (queryType) {\n case SimilarityQueryType.DATA:\n return this.similarityIndex.selectQuery;\n case SimilarityQueryType.SEARCH:\n return this.similarityIndex.searchQuery;\n case SimilarityQueryType.ANALOGICAL:\n return this.similarityIndex.analogicalQuery;\n }\n }\n\n /**\n * Marks a SPARQL query as valid/invalid depends on the <code>isValid</code> value. If <code>similarityQueryType</code> is not passed,\n * then the currently selected type will be used.\n *\n * @param {string} similarityQueryType - the type of SPARQL query, that have to be marked as valid/invalid. The value must be one of {@see SimilarityQueryType} values.\n * @param {boolean} isInvalid - if true the SPARQL query of type <code>similarityQueryType</code> will be marked as invalid, If false will be marked as valid.\n */\n markInvalidQuery(similarityQueryType = undefined, isInvalid = true) {\n const queryType = similarityQueryType || this.selectedQueryType;\n if (SimilarityQueryType.DATA === queryType) {\n this.invalidSelectQuery = isInvalid;\n return;\n }\n\n if (SimilarityQueryType.SEARCH === queryType) {\n this.invalidSearchQuery = isInvalid;\n return;\n }\n if (SimilarityQueryType.ANALOGICAL === queryType) {\n this.invalidAnalogicalQuery = isInvalid;\n }\n }\n\n /**\n * Marks a SPARQL query type as valid/invalid depends on the <code>isValid</code> value. If <code>similarityQueryType</code> is not passed,\n * then the currently selected type will be used.\n *\n * @param {string} similarityQueryType - the type of similarity query, that have to be marked as valid/invalid query type. The value must be one of {@see SimilarityQueryType} values.\n * @param {boolean} isInvalid - if true the SPARQL query of type <code>similarityQueryType</code> will be marked as invalid SPARQL query type, If false will be marked as valid.\n */\n markInvalidQueryType(similarityQueryType = undefined, isInvalid = true) {\n const queryType = similarityQueryType || this.selectedQueryType;\n if (SimilarityQueryType.DATA === queryType) {\n this.invalidSelectQueryType = isInvalid;\n return;\n }\n\n if (SimilarityQueryType.SEARCH === queryType) {\n this.invalidSearchQueryType = isInvalid;\n return;\n }\n if (SimilarityQueryType.ANALOGICAL === queryType) {\n this.invalidAnalogicalQueryType = isInvalid;\n }\n }\n\n setSelectedQueryType(queryType) {\n this.selectedQueryType = queryType;\n }\n\n getSelectedQueryType() {\n return this.selectedQueryType;\n }\n\n setSelectedYasguiRenderMode(renderMode) {\n this.selectedYasguiRenderMode = renderMode;\n }\n\n getSelectedYasguiRenderMode() {\n return this.selectedYasguiRenderMode;\n }\n\n isDataQueryTypeSelected() {\n return SimilarityQueryType.DATA === this.selectedQueryType;\n }\n\n isSearchQueryTypeSelected() {\n return SimilarityQueryType.SEARCH === this.selectedQueryType;\n }\n\n isAnalogicalQueryTypeSelected() {\n return SimilarityQueryType.ANALOGICAL === this.selectedQueryType;\n }\n\n isTextType() {\n return this.similarityIndex.isTextType();\n }\n\n isPredicationType() {\n return this.similarityIndex.isPredicationType();\n }\n\n isTextLiteralType() {\n return this.similarityIndex.isTextLiteralType();\n }\n\n hasName() {\n return !!this.similarityIndex.name;\n }\n\n isNameValid() {\n return filenamePattern.test(this.similarityIndex.name);\n }\n\n hasSelectQuery() {\n return !!this.similarityIndex.selectQuery;\n }\n\n hasSearchQuery() {\n return !!this.similarityIndex.searchQuery;\n }\n\n hasAnalogicalQuery() {\n return !!this.similarityIndex.analogicalQuery;\n }\n\n isYasqeRenderMode() {\n return RenderingMode.YASQE === this.getSelectedYasguiRenderMode();\n }\n\n isYasrRenderMode() {\n return RenderingMode.YASR === this.getSelectedYasguiRenderMode();\n }\n\n ///////////////////////////////////////\n // Similarity index getters and setters\n ///////////////////////////////////////\n\n getName() {\n return this.similarityIndex.name;\n }\n\n setName(name) {\n this.similarityIndex.name = name;\n }\n\n setInputIndex(inputIndex) {\n this.similarityIndex.inputIndex = inputIndex;\n }\n\n getInputIndex() {\n return this.similarityIndex.inputIndex;\n }\n\n setLiteralIndex(literalIndex = false) {\n this.similarityIndex.isLiteralIndex = literalIndex;\n }\n\n getSimilarityIndex() {\n return this.similarityIndex;\n }\n\n setStopList(stopList) {\n this.similarityIndex.stopList = stopList;\n }\n\n getStopList() {\n return this.similarityIndex.stopList;\n }\n\n setAnalyzer(analyzer = 'org.apache.lucene.analysis.en.EnglishAnalyzer') {\n this.similarityIndex.analyzer = analyzer;\n }\n\n getAnalyzer() {\n return this.similarityIndex.analyzer;\n }\n\n setType(type) {\n this.similarityIndex.type = type;\n }\n\n getType() {\n return this.similarityIndex.type;\n }\n\n setOptions(options) {\n this.similarityIndex.options = options;\n }\n\n getOptions() {\n return this.similarityIndex.options;\n }\n\n getInference() {\n return this.similarityIndex.infer;\n }\n\n getSameAs() {\n return this.similarityIndex.sameAs;\n }\n}\n","export const SimilarityIndexType = {\n 'TEXT': 'text',\n 'TEXT_LITERAL': 'textLiteral',\n 'PREDICATION': 'predication',\n\n 'isTextType': (type) => {\n return SimilarityIndexType.TEXT === type;\n },\n\n 'isTextLiteralType': (type) => {\n return SimilarityIndexType.TEXT_LITERAL === type;\n },\n\n 'isPredicationType': (type) => {\n return SimilarityIndexType.PREDICATION === type;\n }\n};\n","angular\n .module('graphdb.framework.utils.notifications', [])\n .factory('Notifications', Notifications);\n\nNotifications.$inject = ['toastr', '$translate'];\n\nfunction Notifications(toastr, $translate) {\n return {\n showToastMessageWithDelay\n };\n\n /**\n * This method will show message with tiny delay and only after completion\n * of latter redirection to \"graphs-visualizations\" page will happen.\n * @param {string} message The message to be displayed.\n * @return {Promise<any>}\n */\n function showToastMessageWithDelay(message) {\n return new Promise((r) => {\n toastr.success($translate.instant(message));\n setTimeout(r, 300);\n });\n }\n}\n","export const YasqeMode = {\n /**\n * The query can be edited.\n */\n WRITE: 'WRITE',\n\n /**\n * The editor is read-only, but the query can be copied.\n */\n READ: 'READ',\n\n /**\n * The editor is read-only and the query can't be copied.\n */\n PROTECTED: 'PROTECTED'\n};\n","export const SimilarityQueryType = {\n 'DATA': 'DATA',\n 'SEARCH': 'SEARCH',\n 'ANALOGICAL': 'ANALOGICAL'\n};\n"],"names":["CreateSimilarityIdxCtrl","$scope","toastr","$uibModal","$timeout","SimilarityRestService","SparqlRestService","$location","productInfo","Notifications","RDF4JRepositoriesRestService","LocalStorageAdapter","LSKeys","$translate","$repositories","EventEmitterService","ModalService","SimilarityQueryType","SimilarityIndexType","similarityIndexInfo","undefined","samples","yasguiConfig","saveOrUpdateExecuted","loadingControllerResources","helpHidden","get","HIDE_SIMILARITY_HELP","savingIndex","searchQueries","allSamples","usedPrefixes","isDirty","viewMode","SimilarityViewMode","CREATE","initialRepoChangeTrigger","changeSimilarityIndexType","similarityIndexType","similarityQueryType","DATA","setType","isPredicationType","PREDICATION","TEXT","changeQueryTab","then","setDefaultQueries","setEditorQuery","getQuery","oldSimilarityQueryType","getSelectedQueryType","Promise","resolve","setSelectedQueryType","updateQueryFromEditor","validateQuery","validateQueryType","catch","error","SimilarityIndexError","console","log","finally","ontotextYasgui","getOntotextYasgui","setSelectedYasguiRenderMode","RenderingMode","YASQE","changeRenderMode","getSelectedYasguiRenderMode","isDataQueryTypeSelected","showYasqeActionButton","YasqeButtonName","INFER_STATEMENTS","EXPANDS_RESULTS","hideYasqeActionButton","setQuery","createSimilarityIndex","validateSimilarityIndex","validateSimilarityIndexNameExistence","createIndex","getSimilarityIndex","goToSimilarityIndexesView","getError","instant","viewQuery","fetchSparqlQuery","showSparqlQuery","preview","YASR","query","saveSearchQuery","validateSimilarityIndexName","validateSearchQuery","validateAnalogicalQuery","saveQuery","isSearchQuery","showToastMessageWithDelay","url","markInvalidQuery","markInvalidQueryType","updateYasguiComponent","initialQuery","similarityIndexNameChanged","setDirty","isNameExist","queryChanged","isCloneViewMode","CLONE","isEditViewMode","EDIT","isCreateViewMode","isYasqeShown","isYasqeRenderMode","isYasrShown","isYasrRenderMode","showEditor","abortQuery","toggleHelp","value","set","getCloseBtnMsg","operationType","editSearchQuery","operation","hasQueryError","hasSelectQueryError","SEARCH","hasSearchQueryError","ANALOGICAL","hasAnalogicalQueryError","hasSelectQuery","invalidSelectQuery","invalidSelectQueryType","hasSearchQuery","invalidSearchQuery","invalidSearchQueryType","hasAnalogicalQuery","invalidAnalogicalQuery","invalidAnalogicalQueryType","getQueryErrorMessage","isEmpty","invalidQueryType","invalidQuery","labelParams","queryType","indexName","getName","indexOptions","getOptions","indexStopList","getStopList","queryInference","getInference","querySameAs","getSameAs","viewType","indexAnalyzer","getAnalyzer","response","data","open","templateUrl","controller","getType","allSampleElement","allSampleElement1","config","defaultConfig","endpoint","getQueryEndpoint","componentId","showEditorTabs","showToolbar","showResultTabs","showYasqeActionButtons","showQueryButton","downloadAsOn","showResultInfo","showYasqeResizer","pageSize","prefixes","render","yasqeActionButtons","DISABLE_YASQE_BUTTONS_CONFIGURATION","INFERRED_AND_SAME_AS_BUTTONS_CONFIGURATION","maxPersistentResponseSize","yasqeMode","canWriteActiveRepo","YasqeMode","WRITE","READ","angular","extend","getActiveRepository","similarityIndex","literalIndexes","inputIndex","options","isLiteralIndex","type","TEXT_LITERAL","name","selectQuery","searchQuery","analogicalQuery","stopList","infer","sameAs","analyzer","success","err","errorMessage","reject","isSearchQueryTypeSelected","changedQuery","JSON","stringify","YasguiComponentDirectiveUtil","getOntotextYasguiElement","getSimilarityIndexName","indexNameFromLocation","search","getSimilarityType","indexType","startsWith","getAndRemoveOption","key","optArr","split","i","length","join","all","validateSelectQuery","getIndexes","some","index","isNameValid","getQueryType","QueryType","SELECT","isQueryValid","valid","openConfirmDialog","title","message","onConfirm","onCancel","openSimpleModal","warning","result","isFunction","activeRepositoryHandler","canEditActiveRepo","beforeunloadHandler","event","returnValue","removeAllListeners","window","removeEventListener","subscriptions","forEach","subscription","repositoryChangeSubscription","ServiceProvider","RepositoryContextService","onSelectedRepositoryChanged","repository","repositoryWillChangeHandler","push","$on","locationChangedHandler","newPath","preventDefault","baseLen","absUrl","path","substring","addEventListener","getViewMode","repoIsInitialized","$watch","getActiveRepositoryObject","activeRepo","getSearchQueries","getSamples","getPrefixes","id","searchQueriesResponses","samplesResponse","usedPrefixesResponse","SimilarityIndexInfo","setName","setOptions","isTextType","setStopList","setAnalyzer","setLiteralIndex","indexesNotInProgress","mapIndexesResponseToSimilarityIndex","filter","isTextLiteralType","isBuiltStatus","isOutdatedStatus","map","concat","getInputIndex","desiredIdx","j","setInputIndex","msg","initialQueryTab","repositoryError","module","$inject","SimilarityIndexStatus","status","CREATING","BUILDING","BUILT","REBUILDING","OUTDATED","INTERRUPTED","OBSOLETE","FAILED","SimilarityIndex","constructor","this","isCreatingStatus","isBuildingStatus","isRebuildingStatus","isInterruptedStatus","isObsoleteStatus","isFailedStatus","YASGUI","responseData","Error","filenamePattern","RegExp","selectedQueryType","selectedYasguiRenderMode","isInvalid","renderMode","isAnalogicalQueryTypeSelected","hasName","test","literalIndex","r","setTimeout","factory","PROTECTED"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=58334;export const __webpack_ids__=[3588,10307,58334];export const __webpack_modules__={3588:(r,e,o)=>{o.r(e),o.d(e,{FIELD_TYPE:()=>t});const t={STRING:"string",TEXT:"text",BOOLEAN:"boolean",JSON:"json",SELECT:"select",MULTI_SELECT:"multi_select"}},10307:(r,e,o)=>{o.r(e);var t=o(3588);function i(r){return{restrict:"E",scope:{field:"=",form:"=",translationKeyPrefix:"="},templateUrl:"js/angular/core/directives/dynamic-form/templates/form-field-template.html",link:function(r){r.FIELD_TYPE=t.FIELD_TYPE}}}angular.module("graphdb.framework.core.directives.dynamic-form-field",[]).directive("dynamicFormField",i),i.$inject=[]},58334:(r,e,o)=>{o.r(e),o(10307);var t=o(3588);function i(){return{restrict:"E",scope:{formModel:"=",showAllFields:"=?",onValidityChange:"&?",formCtrl:"=?",translationKeyPrefix:"@?"},templateUrl:"js/angular/core/directives/dynamic-form/templates/dynamic-form.html",link:function(r,e){r.FIELD_TYPE=t.FIELD_TYPE,r.formCtrl=void 0,r.showAllFields=r.showAllFields||!1,(()=>{const o=e.find("form").controller("form");if(!o)return void console.error("Form controller not found!");r.formCtrl=o;const t=o.$setValidity;r.formCtrl.$setValidity=function(e,i,l){t.call(o,e,i,l),r.onValidityChange&&r.onValidityChange({valid:o.$valid})}})()}}}angular.module("graphdb.framework.core.directives.dynamic-form",["graphdb.framework.core.directives.dynamic-form-field"]).directive("dynamicForm",i),i.$inject=[]}};
|
|
2
|
-
//# sourceMappingURL=58334.6fdc74532b5f755916d8.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"58334.6fdc74532b5f755916d8.bundle.js","mappings":"oKAKO,MAAMA,EAAa,CACtBC,OAAQ,SACRC,KAAM,OACNC,QAAS,UACTC,KAAM,OACNC,OAAQ,SACRC,aAAc,e,uCCFlB,SAASC,EAA0BC,GAC/B,MAAO,CACHC,SAAU,IACVC,MAAO,CACHC,MAAO,IACPC,KAAM,IACNC,qBAAsB,KAE1BC,YAAa,6EACbC,KAAM,SAASC,GACXA,EAAOhB,WAAaA,EAAAA,UACxB,EAER,CAnBAiB,QACKC,OAAO,uDAFI,IAGXC,UAAU,mBAAoBZ,GAEnCA,EAA0Ba,QAAU,E,gDCgCpC,SAASC,IACL,MAAO,CACHZ,SAAU,IACVC,MAAO,CAIHY,UAAW,IAKXC,cAAe,KACfC,iBAAkB,KAClBC,SAAU,KACVZ,qBAAsB,MAE1BC,YAAa,sEACbC,KAAM,SAASC,EAAQU,GAInBV,EAAOhB,WAAaA,EAAAA,WACpBgB,EAAOS,cAAWE,EAClBX,EAAOO,cAAgBP,EAAOO,gBAAiB,EAKlCK,MACT,MACMH,EADcC,EAAQG,KAAK,QACJC,WAAW,QAExC,IAAKL,EAED,YADAM,QAAQC,MAAM,8BAIlBhB,EAAOS,SAAWA,EAClB,MAAMQ,EAAsBR,EAASS,aACrClB,EAAOS,SAASS,aAAe,SAAUC,EAAiBC,EAASC,GAC/DJ,EAAoBK,KAAKb,EAAUU,EAAiBC,EAASC,GACzDrB,EAAOQ,kBACPR,EAAOQ,iBAAiB,CAACe,MAAOd,EAASe,QAEjD,GAMJZ,EACJ,EAER,CA5DAX,QACKC,OAAO,iDAFI,CAAC,yDAGZC,UAAU,cAAeE,GAE9BA,EAAqBD,QAAU,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/dynamic-form/field-type.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/dynamic-form/dynamic-form-field.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/dynamic-form/dynamic-form.directive.js"],"sourcesContent":["/**\n * Enum for field types.\n * @readonly\n * @enum {string}\n */\nexport const FIELD_TYPE = {\n STRING: 'string',\n TEXT: 'text',\n BOOLEAN: 'boolean',\n JSON: 'json',\n SELECT: 'select',\n MULTI_SELECT: 'multi_select'\n}\n","import {FIELD_TYPE} from \"./field-type\";\n\nconst modules = [];\nangular\n .module('graphdb.framework.core.directives.dynamic-form-field', modules)\n .directive('dynamicFormField', dynamicFormFieldDirective);\n\ndynamicFormFieldDirective.$inject = [];\n\nfunction dynamicFormFieldDirective($compile) {\n return {\n restrict: 'E',\n scope: {\n field: '=',\n form: '=',\n translationKeyPrefix: '='\n },\n templateUrl: 'js/angular/core/directives/dynamic-form/templates/form-field-template.html',\n link: function($scope) {\n $scope.FIELD_TYPE = FIELD_TYPE;\n }\n };\n}\n","import 'angular/core/directives/dynamic-form/dynamic-form-field.directive';\nimport {FIELD_TYPE} from \"./field-type\";\n\n/**\n * @function dynamicFormDirective\n * @description\n * A directive for rendering a dynamic form based on an array of field objects.\n *\n * This directive creates a form where each object in the provided formModel defines the type of input to render\n * (for example, text input, checkbox, dropdown, multi-select, or textarea for JSON data). The directive uses the\n * {@link FIELD_TYPE} enum to determine which input type to display. For select and multi-select fields, the\n * {@link SelectMenuOptionsModel} should be used to model the options.\n *\n * Additionally, the directive supports an optional `onValidityChange` callback that will be called whenever the overall\n * validity of the form changes. This is useful for informing a parent component or controller about the current form validity.\n *\n * @example\n * ### HTML Usage:\n * ```html\n * <dynamic-form formModel=\"myFields\" on-validity-change=\"handleValidityChange(valid)\"></dynamic-form>\n * ```\n *\n * @param {Object[]} field - The array of field objects used to render the form fields.\n * @param {string} field[].label - The label displayed for the input.\n * @param {string} field[].type - The type of field input. Should be one of the values defined in {@link FIELD_TYPE}.\n * @param {*} field[].value - The current value of the field.\n * @param {SelectMenuOptionsModel[]} [field[].values] - The array of possible options for select and multi-select fields.\n * @param {(string|RegExp)} [field[].regex] - A regular expression or its string representation for validating the field value.\n * @param {boolean} [field[].required=false] - Indicates whether the field is required.\n *\n * @returns {Object} The directive definition object.\n */\nconst modules = ['graphdb.framework.core.directives.dynamic-form-field'];\nangular\n .module('graphdb.framework.core.directives.dynamic-form', modules)\n .directive('dynamicForm', dynamicFormDirective);\n\ndynamicFormDirective.$inject = [];\n\nfunction dynamicFormDirective() {\n return {\n restrict: 'E',\n scope: {\n /**\n * @type {DynamicFormModel}\n */\n formModel: '=',\n /**\n * Controls whether to show all fields or only the ones that are not hidden in the model.\n * @type {boolean}\n */\n showAllFields: '=?',\n onValidityChange: '&?',\n formCtrl: '=?',\n translationKeyPrefix: '@?'\n },\n templateUrl: 'js/angular/core/directives/dynamic-form/templates/dynamic-form.html',\n link: function($scope, element) {\n // =========================\n // Public variables\n // =========================\n $scope.FIELD_TYPE = FIELD_TYPE;\n $scope.formCtrl = undefined;\n $scope.showAllFields = $scope.showAllFields || false;\n\n // =========================\n // Private function\n // =========================\n const init = () => {\n const formElement = element.find('form');\n const formCtrl = formElement.controller('form');\n\n if (!formCtrl) {\n console.error('Form controller not found!');\n return;\n }\n\n $scope.formCtrl = formCtrl;\n const originalSetValidity = formCtrl.$setValidity;\n $scope.formCtrl.$setValidity = function (validationToken, isValid, modelCtrl) {\n originalSetValidity.call(formCtrl, validationToken, isValid, modelCtrl);\n if ($scope.onValidityChange) {\n $scope.onValidityChange({valid: formCtrl.$valid});\n }\n };\n };\n\n // =========================\n // Initialization\n // =========================\n init();\n }\n };\n}\n\n\n"],"names":["FIELD_TYPE","STRING","TEXT","BOOLEAN","JSON","SELECT","MULTI_SELECT","dynamicFormFieldDirective","$compile","restrict","scope","field","form","translationKeyPrefix","templateUrl","link","$scope","angular","module","directive","$inject","dynamicFormDirective","formModel","showAllFields","onValidityChange","formCtrl","element","undefined","init","find","controller","console","error","originalSetValidity","$setValidity","validationToken","isValid","modelCtrl","call","valid","$valid"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=60560;export const __webpack_ids__=[60560];export const __webpack_modules__={60560:(e,a,t)=>{t.r(a),t.d(a,{onto_cookie_consent:()=>n,onto_cookie_policy_dialog:()=>s});var o=t(87848),i=t(77050),c=t(57154);const n=class{constructor(e){(0,o.r)(this,e),this.consentGiven=(0,o.c)(this,"consentGiven"),this.showModal=!1,this.openModal=e=>{e.preventDefault(),this.showModal=!0},this.handleConsentClick=()=>{this.consentGiven.emit()}}onDialogClose(){this.showModal=!1}render(){return(0,o.h)(o.a,{key:"dba3fc373e9ad60ada7f86d11acbe1b1ed24a92d"},(0,o.h)("div",{key:"414c970a3a4b263e8f3f5d066dc8bb22b8194c48",class:"cookie-consent-modal"},(0,o.h)("section",{key:"6a1cccadb167b301738fb6a453b7d300e93ba18b",class:"cookie-consent-content"},(0,o.h)("span",{key:"aa62410b522125feeb48eaa568a78c761e6b9596"},(0,o.h)("translate-label",{key:"0696068c1aa8738bb3ddf0e548d9140ba12609e1",labelKey:"cookie.cookie_consent"}),(0,o.h)("a",{key:"efd9792a6a424b86606b3904615c53f19a2cdb6e",id:"cookie-policy-link",href:"#",onClick:this.openModal,class:"btn btn-link p-0"},(0,o.h)("translate-label",{key:"12e95d1446f81b47c973e285ee71da5fbfa4934f",labelKey:"cookie.cookie_policy_url_label"})),"."),(0,o.h)("button",{key:"a91e7d9e7eddef1b50d82570f4211a0e1e1ae7b0",id:"accept-cookie-policy",class:"onto-btn onto-btn-primary",onClick:this.handleConsentClick},(0,o.h)("translate-label",{key:"5ca81d4f299a7b7f13ed0f77ac7d1ceaeaad318a",labelKey:"common.button.ok"})))),this.showModal&&(0,o.h)("onto-cookie-policy-dialog",{key:"e54d3f134771ff5f59a288d0d6c9949c6f59567f",dialogHandler:this}))}};var l;n.style=".cookie-consent-modal{position:fixed;bottom:0;left:0;right:0;background-color:#fff;box-shadow:0 -2px 10px rgba(0, 0, 0, 0.1);padding:20px;z-index:1050;width:100%}.cookie-consent-content{display:flex;justify-content:center;align-items:center}.cookie-consent-content button{margin-left:12px}.cookie-policy-modal{padding:24px 40px;overflow-y:auto}.cookie-policy-modal .modal-dialog{width:60% !important;max-width:60% !important}.cookie-policy-modal .title{font-size:xx-large;font-weight:bolder}.cookie-policy-modal .heading{font-size:x-large;font-weight:bolder;margin-top:12px}.cookie-policy-modal .subheading{font-size:large;font-weight:bolder;margin-top:8px}.cookie-policy-modal .text{font-size:math}",function(e){e.THIRD_PARTY="thirdParty",e.STATISTIC="statistic"}(l||(l={}));const s=class{constructor(e){(0,o.r)(this,e),this.user=c.ServiceProvider.get(c.SecurityContextService).getAuthenticatedUser(),this.securityService=c.ServiceProvider.get(c.SecurityService)}toggleChanged(e){this.setUserCookieConsent(this.updateCookieConsent(e.detail)),this.securityService.updateUserData(this.user).catch(console.error)}render(){var e,a;const t={dialogTitle:i.T.translate("cookie.policy.title"),onClose:()=>this.dialogHandler.onDialogClose(),modalClass:"cookie-policy-modal"},n=new c.CookieConsent(null===(a=null===(e=this.user)||void 0===e?void 0:e.appSettings)||void 0===a?void 0:a.COOKIE_CONSENT);return(0,o.h)("onto-dialog",{key:"5c9716eebf02b30a51d90af98775d7e183618290",config:t},(0,o.h)("div",{key:"afdaebff817f24cfda4bafbcc386a741f7907674",slot:"body"},(0,o.h)("section",{key:"5387b27738aaba232f3646a1a71fbe1bc7b5332f"},(0,o.h)("h4",{key:"ab64a92c9e72bfa48868b5e8e8055eb674e40eda"},(0,o.h)("translate-label",{key:"b7f62e750e65a6d354e2f3bc9bfaf6d5eca304d4",labelKey:"cookie.policy.purpose_heading"})),(0,o.h)("p",{key:"0354cbaf054caa4680d548f33434bbee4527c40e"},(0,o.h)("translate-label",{key:"69c60946be613dea36d2690d287e645edb71483a",labelKey:"cookie.policy.purpose_text"})),(0,o.h)("p",{key:"055e50c6a516413f46a35c7b85952e4aa1a9f9df"},(0,o.h)("translate-label",{key:"70857b357e74bb7dfb8c384883668c8b2482ca4a",labelKey:"cookie.policy.purpose_enterprise_text"}))),(0,o.h)("section",{key:"6e71eb5aae17c6da27bf257cae2a0760860df5d1"},(0,o.h)("h4",{key:"83b3b663f46498e43c7ab30410de8f074243c3ae"},(0,o.h)("translate-label",{key:"2f6b5c9c10ace40140ecafbcd7d10709df14b1ab",labelKey:"cookie.policy.privacy_commitment_heading"})),(0,o.h)("p",{key:"09f6d19d59629866fa3b21842831d392b9e555ec"},(0,o.h)("translate-label",{key:"4c8f23a3c88299a4fd5d390eaa4a7afa5862d9ad",labelKey:"cookie.policy.privacy_commitment_text"})),(0,o.h)("ul",{key:"09b90acc150cf43a9e59297b34657d9c0d6f58cf"},(0,o.h)("li",{key:"703ef7e25fb39d5d42980653b1fcf86d8a94557c"},(0,o.h)("translate-label",{key:"df7d2a7233e3c18a068fa9058c3c193d3cd29aa9",labelKey:"cookie.policy.privacy_commitment_1"})),(0,o.h)("li",{key:"8d31ea369caab98410d1ca4d10ca56acbf712b4d"},(0,o.h)("translate-label",{key:"4cf9f87d207ae4a56f5ef25ad5e61ae49229a66d",labelKey:"cookie.policy.privacy_commitment_2"})))),(0,o.h)("section",{key:"11a8ff13f5ccf5ce1ee72a6ddd14f7a15aaf28a8"},(0,o.h)("h4",{key:"05c721ac41e0ce384336f36efbed649cdf3c8521"},(0,o.h)("translate-label",{key:"0311734172a238e9a34d5b646ce7226146ca4fb4",labelKey:"cookie.policy.cookies_heading"})),(0,o.h)("p",{key:"9b6348c8749b252e1308c2217753333d7f34510d"},(0,o.h)("translate-label",{key:"ec1a61b4d8c13ade4a3596818916bd4fb0ea9250",labelKey:"cookie.policy.cookies_text"}))),(0,o.h)("section",{key:"0a56afdf911e56f1e857bd9c8141214b841cfab6"},(0,o.h)("h4",{key:"1aab64214b9a77114cd6a57ad32386dcc7361f92"},(0,o.h)("translate-label",{key:"124cd6d94ab003ee056b8f57a1550604500d2af8",labelKey:"cookie.policy.manage_cookies_heading"})),(0,o.h)("onto-toggle-switch",{key:"5cd4f7185729ac4741a1128b9be06d31ac7d7779",checked:null==n?void 0:n.statistic,labelKey:"cookie.policy.statistic_cookies",tooltipTranslationKey:"cookie.policy.statistic_tooltip",context:l.STATISTIC}),(0,o.h)("p",{key:"e4605b7731672924542ff9578bb7a4d631822927"},(0,o.h)("translate-label",{key:"3f119b863505286c2627a4f40327f81173c7df09",labelKey:"cookie.policy.statistic_text"})),(0,o.h)("onto-toggle-switch",{key:"12b41157eced1f90357f3e9780cd36694f2903e7",checked:null==n?void 0:n.thirdParty,labelKey:"cookie.policy.third_party_cookies",tooltipTranslationKey:"cookie.policy.third_party_tooltip",context:l.THIRD_PARTY}),(0,o.h)("p",{key:"1c93b76d442412854746e6aa75891a4a26664d88"},(0,o.h)("translate-label",{key:"52f2a72c222f2195b034c9e082b3848638382663",labelKey:"cookie.policy.third_party_cookies_text"}))),(0,o.h)("p",{key:"0a5b47d04abdec566b262fe469c30586f24f1b3e"},(0,o.h)("span",{key:"aabe70fb4f363aa7e1ce8db10c38215bc61ddbb9"},(0,o.h)("translate-label",{key:"b05702891f3c98aa7a404171a7db2fa77748d789",labelKey:"cookie.policy.change_cookies"}),(0,o.h)("i",{key:"24915a3359d6dfe55ff690035a2065f11178344a"}," ",(0,o.h)("translate-label",{key:"1e2318b63e72bc275ae3f6622a7a194d9d0b643e",labelKey:"menu.setup.label"})," > ",(0,o.h)("translate-label",{key:"24003f231854abb864c935f2931439dcf87c715f",labelKey:"menu.my.settings.label"})," > ",(0,o.h)("translate-label",{key:"b6dd2de94d005f6b6ad6495d680b66b11c02a035",labelKey:"security.user.settings"})," > ",(0,o.h)("translate-label",{key:"259fe2888ca703acc53ca90036686f8ba5cbc25d",labelKey:"cookie.policy.change_cookies_location4"})," ")))))}updateCookieConsent(e){var a,t;const o=new c.CookieConsent(null===(t=null===(a=this.user)||void 0===a?void 0:a.appSettings)||void 0===t?void 0:t.COOKIE_CONSENT);return o[e.context]=e.checked,o.updatedAt=(new Date).getTime(),o}setUserCookieConsent(e){this.user.appSettings||(this.user.appSettings={}),this.user.appSettings.COOKIE_CONSENT=e}};s.style="section h4{font-size:x-large;font-weight:bolder;margin-top:12px}"},77050:(e,a,t)=>{t.d(a,{T:()=>n,s:()=>i});var o=t(57154);function i(e){const a=document.createElement("textarea");return a.innerHTML=e,a.value}class c{constructor(){this.languageContextService=o.ServiceProvider.get(o.LanguageContextService),this.translationChangedObservers={},this.defaultBundle=this.languageContextService.getDefaultBundle(),this.subscribeToBundleChange()}onTranslate(e,a=[],t=()=>{}){this.translationChangedObservers[e]=this.translationChangedObservers[e]||[];const o={parameters:a,callback:t};return this.translationChangedObservers[e].push(o),t(this.translate(e,a)),()=>{const a=this.translationChangedObservers[e].indexOf(o);-1!==a&&this.translationChangedObservers[e].splice(a,1)}}translate(e,a){return this.translateInLocale(e,a)}translateInLocale(e,a){let t=this.translateFromBundle(this.currentBundle,e);return t||(t=this.translateFromBundle(this.defaultBundle,e)),t?(t=this.applyParameters(t,a),i(t)):(console.warn(`Missing translation for key: [${e}]`),e)}translateFromBundle(e,a){if(!e)return;let t=e[a];return"string"!=typeof t&&(t=this.translateAsJsonObject(e,a)),t}translateAsJsonObject(e,a){let t=a.split(".");return this.getTranslation(e,t)}getTranslation(e,a){if(!a||!e)return;const t=e[a.splice(0,1)[0]];return 0===a.length?t:"string"!=typeof t?a.length>0?this.getTranslation(t,a):t:void 0}applyParameters(e,a){return a?a.reduce((e,a)=>c.replaceAll(e,a),e):e}static replaceAll(e,a){return a?e.split(`{{${a.key}}}`).join(a.value):e}notifyTranslationsChanged(){Object.keys(this.translationChangedObservers).forEach(e=>{(this.translationChangedObservers[e]||[]).forEach(a=>a.callback(this.translate(e,a.parameters)))})}subscribeToBundleChange(){this.languageChangeSubscription=this.languageContextService.onLanguageBundleChanged(e=>{e&&(this.currentBundle=e,this.notifyTranslationsChanged())})}destroy(){this.languageChangeSubscription&&this.languageChangeSubscription()}}const n=new c}};
|
|
2
|
-
//# sourceMappingURL=60560.37740d97b418899a5d21.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"60560.37740d97b418899a5d21.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/shared-components/dist/esm/onto-cookie-consent_2.entry.js","webpack://root-config/./packages/shared-components/dist/esm/translation.service-Hf6024E7.js"],"sourcesContent":["import { r as registerInstance, c as createEvent, h, a as Host } from './index-I_gcXFWK.js';\nimport { T as TranslationService } from './translation.service-Hf6024E7.js';\nimport { ServiceProvider, SecurityContextService, SecurityService, CookieConsent } from '@ontotext/workbench-api';\n\nconst ontoCookieConsentCss = \".cookie-consent-modal{position:fixed;bottom:0;left:0;right:0;background-color:#fff;box-shadow:0 -2px 10px rgba(0, 0, 0, 0.1);padding:20px;z-index:1050;width:100%}.cookie-consent-content{display:flex;justify-content:center;align-items:center}.cookie-consent-content button{margin-left:12px}.cookie-policy-modal{padding:24px 40px;overflow-y:auto}.cookie-policy-modal .modal-dialog{width:60% !important;max-width:60% !important}.cookie-policy-modal .title{font-size:xx-large;font-weight:bolder}.cookie-policy-modal .heading{font-size:x-large;font-weight:bolder;margin-top:12px}.cookie-policy-modal .subheading{font-size:large;font-weight:bolder;margin-top:8px}.cookie-policy-modal .text{font-size:math}\";\n\nconst OntoCookieConsent = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.consentGiven = createEvent(this, \"consentGiven\");\n /** State to control the visibility of the cookie policy modal */\n this.showModal = false;\n /**\n * Opens the cookie policy modal.\n * @param {Event} event - The event that triggered the modal opening.\n */\n this.openModal = (event) => {\n event.preventDefault();\n this.showModal = true;\n };\n /**\n * Handles the click event on the consent button.\n * Emits the consentGiven event.\n */\n this.handleConsentClick = () => {\n this.consentGiven.emit();\n };\n }\n /**\n * Closes the cookie policy dialog.\n * This method is called when the dialog is closed.\n */\n // eslint-disable-next-line @stencil-community/own-methods-must-be-private\n onDialogClose() {\n this.showModal = false;\n }\n render() {\n return (h(Host, { key: 'dba3fc373e9ad60ada7f86d11acbe1b1ed24a92d' }, h(\"div\", { key: '414c970a3a4b263e8f3f5d066dc8bb22b8194c48', class: \"cookie-consent-modal\" }, h(\"section\", { key: '6a1cccadb167b301738fb6a453b7d300e93ba18b', class: \"cookie-consent-content\" }, h(\"span\", { key: 'aa62410b522125feeb48eaa568a78c761e6b9596' }, h(\"translate-label\", { key: '0696068c1aa8738bb3ddf0e548d9140ba12609e1', labelKey: 'cookie.cookie_consent' }), h(\"a\", { key: 'efd9792a6a424b86606b3904615c53f19a2cdb6e', id: \"cookie-policy-link\", href: \"#\", onClick: this.openModal, class: \"btn btn-link p-0\" }, h(\"translate-label\", { key: '12e95d1446f81b47c973e285ee71da5fbfa4934f', labelKey: 'cookie.cookie_policy_url_label' })), \".\"), h(\"button\", { key: 'a91e7d9e7eddef1b50d82570f4211a0e1e1ae7b0', id: \"accept-cookie-policy\", class: \"onto-btn onto-btn-primary\", onClick: this.handleConsentClick }, h(\"translate-label\", { key: '5ca81d4f299a7b7f13ed0f77ac7d1ceaeaad318a', labelKey: 'common.button.ok' })))), this.showModal && h(\"onto-cookie-policy-dialog\", { key: 'e54d3f134771ff5f59a288d0d6c9949c6f59567f', dialogHandler: this })));\n }\n};\nOntoCookieConsent.style = ontoCookieConsentCss;\n\nconst ontoCookiePolicyDialogCss = \"section h4{font-size:x-large;font-weight:bolder;margin-top:12px}\";\n\nvar CookieType;\n(function (CookieType) {\n CookieType[\"THIRD_PARTY\"] = \"thirdParty\";\n CookieType[\"STATISTIC\"] = \"statistic\";\n})(CookieType || (CookieType = {}));\nconst OntoCookiePolicyDialog = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.user = ServiceProvider.get(SecurityContextService).getAuthenticatedUser();\n this.securityService = ServiceProvider.get(SecurityService);\n }\n toggleChanged(event) {\n this.setUserCookieConsent(this.updateCookieConsent(event.detail));\n this.securityService.updateUserData(this.user)\n .catch(console.error);\n }\n render() {\n var _a, _b;\n const config = {\n dialogTitle: TranslationService.translate('cookie.policy.title'),\n onClose: () => this.dialogHandler.onDialogClose(),\n modalClass: 'cookie-policy-modal',\n };\n const cookieConsent = new CookieConsent((_b = (_a = this.user) === null || _a === void 0 ? void 0 : _a.appSettings) === null || _b === void 0 ? void 0 : _b.COOKIE_CONSENT);\n return (h(\"onto-dialog\", { key: '5c9716eebf02b30a51d90af98775d7e183618290', config: config }, h(\"div\", { key: 'afdaebff817f24cfda4bafbcc386a741f7907674', slot: 'body' }, h(\"section\", { key: '5387b27738aaba232f3646a1a71fbe1bc7b5332f' }, h(\"h4\", { key: 'ab64a92c9e72bfa48868b5e8e8055eb674e40eda' }, h(\"translate-label\", { key: 'b7f62e750e65a6d354e2f3bc9bfaf6d5eca304d4', labelKey: 'cookie.policy.purpose_heading' })), h(\"p\", { key: '0354cbaf054caa4680d548f33434bbee4527c40e' }, h(\"translate-label\", { key: '69c60946be613dea36d2690d287e645edb71483a', labelKey: 'cookie.policy.purpose_text' })), h(\"p\", { key: '055e50c6a516413f46a35c7b85952e4aa1a9f9df' }, h(\"translate-label\", { key: '70857b357e74bb7dfb8c384883668c8b2482ca4a', labelKey: 'cookie.policy.purpose_enterprise_text' }))), h(\"section\", { key: '6e71eb5aae17c6da27bf257cae2a0760860df5d1' }, h(\"h4\", { key: '83b3b663f46498e43c7ab30410de8f074243c3ae' }, h(\"translate-label\", { key: '2f6b5c9c10ace40140ecafbcd7d10709df14b1ab', labelKey: 'cookie.policy.privacy_commitment_heading' })), h(\"p\", { key: '09f6d19d59629866fa3b21842831d392b9e555ec' }, h(\"translate-label\", { key: '4c8f23a3c88299a4fd5d390eaa4a7afa5862d9ad', labelKey: 'cookie.policy.privacy_commitment_text' })), h(\"ul\", { key: '09b90acc150cf43a9e59297b34657d9c0d6f58cf' }, h(\"li\", { key: '703ef7e25fb39d5d42980653b1fcf86d8a94557c' }, h(\"translate-label\", { key: 'df7d2a7233e3c18a068fa9058c3c193d3cd29aa9', labelKey: 'cookie.policy.privacy_commitment_1' })), h(\"li\", { key: '8d31ea369caab98410d1ca4d10ca56acbf712b4d' }, h(\"translate-label\", { key: '4cf9f87d207ae4a56f5ef25ad5e61ae49229a66d', labelKey: 'cookie.policy.privacy_commitment_2' })))), h(\"section\", { key: '11a8ff13f5ccf5ce1ee72a6ddd14f7a15aaf28a8' }, h(\"h4\", { key: '05c721ac41e0ce384336f36efbed649cdf3c8521' }, h(\"translate-label\", { key: '0311734172a238e9a34d5b646ce7226146ca4fb4', labelKey: 'cookie.policy.cookies_heading' })), h(\"p\", { key: '9b6348c8749b252e1308c2217753333d7f34510d' }, h(\"translate-label\", { key: 'ec1a61b4d8c13ade4a3596818916bd4fb0ea9250', labelKey: 'cookie.policy.cookies_text' }))), h(\"section\", { key: '0a56afdf911e56f1e857bd9c8141214b841cfab6' }, h(\"h4\", { key: '1aab64214b9a77114cd6a57ad32386dcc7361f92' }, h(\"translate-label\", { key: '124cd6d94ab003ee056b8f57a1550604500d2af8', labelKey: 'cookie.policy.manage_cookies_heading' })), h(\"onto-toggle-switch\", { key: '5cd4f7185729ac4741a1128b9be06d31ac7d7779', checked: cookieConsent === null || cookieConsent === void 0 ? void 0 : cookieConsent.statistic, labelKey: 'cookie.policy.statistic_cookies', tooltipTranslationKey: 'cookie.policy.statistic_tooltip', context: CookieType.STATISTIC }), h(\"p\", { key: 'e4605b7731672924542ff9578bb7a4d631822927' }, h(\"translate-label\", { key: '3f119b863505286c2627a4f40327f81173c7df09', labelKey: 'cookie.policy.statistic_text' })), h(\"onto-toggle-switch\", { key: '12b41157eced1f90357f3e9780cd36694f2903e7', checked: cookieConsent === null || cookieConsent === void 0 ? void 0 : cookieConsent.thirdParty, labelKey: 'cookie.policy.third_party_cookies', tooltipTranslationKey: 'cookie.policy.third_party_tooltip', context: CookieType.THIRD_PARTY }), h(\"p\", { key: '1c93b76d442412854746e6aa75891a4a26664d88' }, h(\"translate-label\", { key: '52f2a72c222f2195b034c9e082b3848638382663', labelKey: 'cookie.policy.third_party_cookies_text' }))), h(\"p\", { key: '0a5b47d04abdec566b262fe469c30586f24f1b3e' }, h(\"span\", { key: 'aabe70fb4f363aa7e1ce8db10c38215bc61ddbb9' }, h(\"translate-label\", { key: 'b05702891f3c98aa7a404171a7db2fa77748d789', labelKey: 'cookie.policy.change_cookies' }), h(\"i\", { key: '24915a3359d6dfe55ff690035a2065f11178344a' }, \"\\u00A0\", h(\"translate-label\", { key: '1e2318b63e72bc275ae3f6622a7a194d9d0b643e', labelKey: 'menu.setup.label' }), \"\\u00A0>\\u00A0\", h(\"translate-label\", { key: '24003f231854abb864c935f2931439dcf87c715f', labelKey: 'menu.my.settings.label' }), \"\\u00A0>\\u00A0\", h(\"translate-label\", { key: 'b6dd2de94d005f6b6ad6495d680b66b11c02a035', labelKey: 'security.user.settings' }), \"\\u00A0>\\u00A0\", h(\"translate-label\", { key: '259fe2888ca703acc53ca90036686f8ba5cbc25d', labelKey: 'cookie.policy.change_cookies_location4' }), \"\\u00A0\"))))));\n }\n updateCookieConsent(payload) {\n var _a, _b;\n const cookieConsent = new CookieConsent((_b = (_a = this.user) === null || _a === void 0 ? void 0 : _a.appSettings) === null || _b === void 0 ? void 0 : _b.COOKIE_CONSENT);\n // Context is either 'thirdParty' or 'statistic'\n cookieConsent[payload.context] = payload.checked;\n cookieConsent.updatedAt = new Date().getTime();\n return cookieConsent;\n }\n setUserCookieConsent(cookieConsent) {\n if (!this.user.appSettings) {\n this.user.appSettings = {};\n }\n this.user.appSettings.COOKIE_CONSENT = cookieConsent;\n }\n};\nOntoCookiePolicyDialog.style = ontoCookiePolicyDialogCss;\n\nexport { OntoCookieConsent as onto_cookie_consent, OntoCookiePolicyDialog as onto_cookie_policy_dialog };\n","import { ServiceProvider, LanguageContextService } from '@ontotext/workbench-api';\n\nfunction sanitizeHTML(html) {\n const element = document.createElement('textarea');\n element.innerHTML = html;\n return element.value;\n}\n\n/**\n * Service responsible for translation operations in the component.\n */\nclass TranslationServiceClassDefinition {\n constructor() {\n this.languageContextService = ServiceProvider.get(LanguageContextService);\n this.translationChangedObservers = {};\n // log with background color\n this.defaultBundle = this.languageContextService.getDefaultBundle();\n this.subscribeToBundleChange();\n }\n /**\n * Translates the <code>messageLabelKey</code> with <code>translationParameter</code> and call <code>translationCallback</code> with translation of current language.\n * The <code>translationCallback</code> is called upon subscription and whenever the selected language is changed.\n *\n * @param messageLabelKey - The label key for the translation.\n * @param translationParameter - Parameters, if needed, for translation.\n * @param translationCallback - A function to be called when translating the `messageLabelKey`.\n * @returns A function that, when called, unsubscribes the provided callback from further translation updates.\n */\n onTranslate(messageLabelKey, translationParameter = [], translationCallback = () => { }) {\n this.translationChangedObservers[messageLabelKey] = this.translationChangedObservers[messageLabelKey] || [];\n const observer = { parameters: translationParameter, callback: translationCallback };\n this.translationChangedObservers[messageLabelKey].push(observer);\n translationCallback(this.translate(messageLabelKey, translationParameter));\n return () => {\n const index = this.translationChangedObservers[messageLabelKey].indexOf(observer);\n if (index !== -1) {\n this.translationChangedObservers[messageLabelKey].splice(index, 1);\n }\n };\n }\n /**\n * Translates the provided key using the currently selected language by applying the parameters if\n * provided.\n * @param key The key for the label which needs to be translated.\n * @param parameters Optional parameters which to be applied during the translation.\n */\n translate(key, parameters) {\n return this.translateInLocale(key, parameters);\n }\n /**\n * Translates a given key into the specified locale. If parameters are provided,\n * they will be applied to the translation.\n *\n * @param key - The translation key, which can be dot-separated for nested translations.\n * @param parameters - Optional parameters to be substituted into the translation string.\n * @returns The translated string with parameters applied if available, or the key itself if not found.\n */\n translateInLocale(key, parameters) {\n // Attempt to retrieve the translation from the specified locale's bundle.\n let translation = this.translateFromBundle(this.currentBundle, key);\n // If not found, fall back to the default language bundle.\n if (!translation) {\n translation = this.translateFromBundle(this.defaultBundle, key);\n }\n // If translation was found, apply any parameters provided and return the result.\n if (translation) {\n translation = this.applyParameters(translation, parameters);\n return sanitizeHTML(translation);\n }\n console.warn(`Missing translation for key: [${key}]`);\n return key;\n }\n /**\n * Retrieves a translation from a specified translation bundle using the given key.\n * If the key represents a nested JSON path, it attempts to resolve the key as such.\n *\n * @param bundle - The translation bundle for the specified locale.\n * @param key - The key to translate, which may be a simple key or dot-separated for nested keys.\n * @returns The translation string if found, or `undefined` if not available.\n */\n translateFromBundle(bundle, key) {\n if (!bundle) {\n return undefined;\n }\n // Try to retrieve the translation directly if it is defined as a whole string,\n // for instance as \"some_function.btn.label\".\n let translation = bundle[key];\n // If not found, attempt to retrieve the translation if it is defined as a JSON object.\n if (typeof translation !== 'string') {\n translation = this.translateAsJsonObject(bundle, key);\n }\n return translation;\n }\n /**\n * Resolves a nested translation key by treating it as a path in a JSON object.\n * For example, if the key is \"some.key.path\", this method will navigate through\n * the JSON object structure to retrieve the value at that path.\n *\n * @param bundle - The translation bundle containing nested keys.\n * @param key - The dot-separated key representing the path to the translation.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n translateAsJsonObject(bundle, key) {\n let path = key.split('.');\n return this.getTranslation(bundle, path);\n }\n /**\n * Recursively navigates through a JSON object based on a path array to retrieve\n * a translation string. Each element in the path array represents a nested key.\n *\n * @param jsonObject - The current JSON object or nested object being searched.\n * @param path - An array representing the path to the translation, where each element is a key.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n getTranslation(jsonObject, path) {\n // Stop the recursion if path or reach the inner element\n if (!path || !jsonObject) {\n return undefined;\n }\n const jsonOrTranslation = jsonObject[path.splice(0, 1)[0]];\n if (path.length === 0) {\n return jsonOrTranslation;\n }\n if (typeof jsonOrTranslation !== 'string') {\n // continue if the inner element is not reached.\n if (path.length > 0) {\n return this.getTranslation(jsonOrTranslation, path);\n }\n return jsonOrTranslation;\n }\n return undefined;\n }\n applyParameters(translation, parameters) {\n if (parameters) {\n return parameters.reduce(\n // replace all occurrence of parameter key with parameter value.\n (translation, parameter) => TranslationServiceClassDefinition.replaceAll(translation, parameter), translation);\n }\n return translation;\n }\n static replaceAll(translation, parameter) {\n return parameter ? translation.split(`{{${parameter.key}}}`).join(parameter.value) : translation;\n }\n notifyTranslationsChanged() {\n Object.keys(this.translationChangedObservers).forEach((eventName) => {\n const observers = this.translationChangedObservers[eventName] || [];\n observers.forEach((observer) => observer.callback(this.translate(eventName, observer.parameters)));\n });\n }\n subscribeToBundleChange() {\n this.languageChangeSubscription = this.languageContextService.onLanguageBundleChanged((bundle) => {\n if (bundle) {\n this.currentBundle = bundle;\n this.notifyTranslationsChanged();\n }\n });\n }\n destroy() {\n if (this.languageChangeSubscription) {\n this.languageChangeSubscription();\n }\n }\n}\nconst TranslationService = new TranslationServiceClassDefinition();\n\nexport { TranslationService as T, sanitizeHTML as s };\n"],"names":["OntoCookieConsent","constructor","hostRef","registerInstance","this","consentGiven","createEvent","showModal","openModal","event","preventDefault","handleConsentClick","emit","onDialogClose","render","h","Host","key","class","labelKey","id","href","onClick","dialogHandler","CookieType","style","OntoCookiePolicyDialog","user","ServiceProvider","get","SecurityContextService","getAuthenticatedUser","securityService","SecurityService","toggleChanged","setUserCookieConsent","updateCookieConsent","detail","updateUserData","catch","console","error","_a","_b","config","dialogTitle","TranslationService","translate","onClose","modalClass","cookieConsent","CookieConsent","appSettings","COOKIE_CONSENT","slot","checked","statistic","tooltipTranslationKey","context","STATISTIC","thirdParty","THIRD_PARTY","payload","updatedAt","Date","getTime","sanitizeHTML","html","element","document","createElement","innerHTML","value","TranslationServiceClassDefinition","languageContextService","LanguageContextService","translationChangedObservers","defaultBundle","getDefaultBundle","subscribeToBundleChange","onTranslate","messageLabelKey","translationParameter","translationCallback","observer","parameters","callback","push","index","indexOf","splice","translateInLocale","translation","translateFromBundle","currentBundle","applyParameters","warn","bundle","translateAsJsonObject","path","split","getTranslation","jsonObject","jsonOrTranslation","length","reduce","parameter","replaceAll","join","notifyTranslationsChanged","Object","keys","forEach","eventName","languageChangeSubscription","onLanguageBundleChanged","destroy"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=64118;export const __webpack_ids__=[12940,30553,49539,64118,65820,71920,89598,89647,98268];export const __webpack_modules__={12940:(e,t,n)=>{n.r(t);var o=n(5949),a=n(89598),r=n(30553);const i={buttonStyle:"position: absolute; top: 0; right: 0; margin-right: 24px"};function s(e){const t=(0,o.A)().use(a.markdownCodeCopyPlugin).use(r.markdownOpenInSparqlEditorPlugin,i);return{renderMarkdown:(n,s)=>{try{return e.trustAsHtml((e=>e?(0,o.A)().use(a.markdownCodeCopyPlugin,e).use(r.markdownOpenInSparqlEditorPlugin,_.merge({},i,e)):t)(s).render(n))}catch(t){return console.error("Error rendering markdown:",t),e.trustAsHtml(n)}}}}angular.module("graphdb.framework.core.services.markdown-service",[]).service("MarkdownService",s),s.$inject=["$sce"]},30553:(e,t,n)=>{n.r(t),n.d(t,{markdownOpenInSparqlEditorPlugin:()=>r});const o={buttonStyle:"position: absolute; top: 0; right: 0;",buttonClass:""};function a(e,t){return t=_.merge({},o,t),(...n)=>{const[o,a]=n,r=o[a],i=o[a].content.replaceAll('"',""").replaceAll("'","'"),s=e(...n);return"fence"===r.type&&"sparql"===r.info&&s.trim()?`<div style="position: relative">\n ${s}\n <open-in-sparql-editor\n style="${t.buttonStyle}"\n class="${t.buttonClass}"\n execute-query="${t.executeQuery}"\n repository-id="${t.repositoryId}"\n query="${i}">\n </open-in-sparql-editor>\n </div>`:s}}const r=(e,t)=>{e.renderer.rules.code_block=a(e.renderer.rules.code_block,t),e.renderer.rules.fence=a(e.renderer.rules.fence,t)}},64118:(e,t,n)=>{n.r(t),n(89647),n(98268);var o=n(71920),a=n(87252),r=n(65820);function i(e,t,n,i,s){return{restrict:"E",templateUrl:"js/angular/ttyg/templates/chat-item-detail.html",scope:{chatItemDetail:"=",showActions:"=",asking:"=",disabled:"=",onRegenerateQuestion:"&",onAskHowDeliveredAnswer:"&"},link:(l,c,d)=>{l.ExplainQueryType=a.ExplainQueryType,l.repositoryId=void 0,l.markdownContentOptions=void 0,l.agentNameByIdMap={},l.explainResponseModel={},l.loadingExplainResponse={},l.regenerateQuestion=()=>{l.onRegenerateQuestion({chatItem:l.chatItemDetail})},l.explainResponse=o=>{n.hasExplainResponse(o)?n.toggleExplainResponse(o):(l.loadingExplainResponse[o]=!0,i.explainResponse(l.chatItemDetail,o).then(e=>{n.addExplainResponseCache(e)}).catch(()=>{e.error(t.instant("ttyg.chat_panel.messages.explain_response_failure"))}).finally(()=>l.loadingExplainResponse[o]=!1))},l.onAskHowAnswerWasDerived=()=>{l.onAskHowDeliveredAnswer()},l.onTokenUsageInfo=e=>{e.preventDefault(),e.stopPropagation()},l.onOpenInSparqlEditor=e=>{l.chatItemDetail.agentId&&n.emit(o.TTYGEventName.GO_TO_SPARQL_EDITOR,{query:e,repositoryId:l.repositoryId})},l.showRawQuery=e=>{const t=e.rawQuery.replace(/\s+/g,""),n=e.query.replace(/\s+/g,"");return t&&t!==n},l.getRepositoryId=e=>{const t=n.getAgent(l.chatItemDetail.agentId);return t?t.repositoryId:""},l.getHumanReadableQuestionTimestamp=e=>(0,r.getHumanReadableTimestamp)(t,s,e);const p=()=>{l.chatItemDetail.answers.forEach(e=>{l.explainResponseModel[e.id]=n.getExplainResponse(e.id)})},E=[];E.push(n.onExplainResponseCacheUpdated(()=>{p()})),E.push(n.onAgentsListChanged(()=>{l.agentNameByIdMap=n.getAgents().agentNameByIdMap})),l.$on("$destroy",()=>{E.forEach(e=>e())}),l.repositoryId=l.getRepositoryId(),l.markdownContentOptions={repositoryId:l.repositoryId},p()}}}angular.module("graphdb.framework.ttyg.directives.chat-item-detail",["graphdb.framework.core.directives.open-in-sparql-editor","graphdb.framework.core.directives.markdown-content"]).directive("chatItemDetail",i),i.$inject=["toastr","$translate","TTYGContextService","TTYGService","$filter"]},65820:(e,t,n)=>{n.r(t),n.d(t,{getHumanReadableTimestamp:()=>o});const o=(e,t,n,o={})=>{if(!n)return"";const a=new Date(n),r=new Date,i=new Date(r.getFullYear(),r.getMonth(),r.getDate()),s=new Date(i);s.setDate(i.getDate()-1);const l=new Date(a.getFullYear(),a.getMonth(),a.getDate()),c=o.timeFormat?t("date")(a,o.timeFormat):"";if(l.getTime()===i.getTime())return e.instant("common.dates.today")+c;if(l.getTime()===s.getTime())return e.instant("common.dates.yesterday")+c;{const e=o.dateFormat||"yyyy-MM-dd";return t("date")(a,e)+c}}},71920:(e,t,n)=>{n.r(t),n.d(t,{TTYGEventName:()=>r});var o=n(98980);function a(e){let t,n,a,i,s,l={},c=!1;const d=()=>(0,o.cloneDeep)(t),p=()=>(0,o.cloneDeep)(n),E=e=>{n=(0,o.cloneDeep)(e),C(r.CHAT_LIST_UPDATED,p())},u=()=>(0,o.cloneDeep)(a),g=()=>(0,o.cloneDeep)(i),_=()=>(0,o.cloneDeep)(l),A=e=>!!l[e],T=()=>c,C=(t,n)=>{e.emitSync(t,(0,o.cloneDeep)(n))},m=(t,n)=>e.subscribeSync(t,e=>n(e));return{resetContext:()=>{t=void 0,n=void 0,a=void 0,i=void 0,l={},s=void 0,c=!1},emit:C,subscribe:m,getChats:p,updateChats:E,addChat:e=>{n.appendChat(e),E(n)},replaceChat:(e,t)=>{n.replaceChat(e,t),E(n)},onChatsListChanged:e=>(n&&angular.isFunction(e)&&e(p()),m(r.CHAT_LIST_UPDATED,t=>e(t))),getSelectedChat:u,selectChat:e=>{a&&a.id===e.id||(a=(0,o.cloneDeep)(e),C(r.SELECT_CHAT,u()))},deselectChat:()=>{a=void 0,C(r.SELECT_CHAT,u())},deleteChat:e=>{n.deleteChat(e),E(n)},onSelectedChatChanged:e=>(angular.isFunction(e)&&e(u()),m(r.SELECT_CHAT,t=>e(t))),updateSelectedChat:e=>{a&&a.id&&e&&a.id!==e.id||(a=(0,o.cloneDeep)(e),C(r.SELECTED_CHAT_UPDATED,u()))},onSelectedChatUpdated:e=>(a&&angular.isFunction(e)&&e(u()),m(r.SELECTED_CHAT_UPDATED,t=>e(t))),onLastMessageReceived:e=>(a&&angular.isFunction(e)&&e(u()),m(r.LAST_MESSAGE_RECEIVED,t=>e(t))),updateAgents:e=>{t=(0,o.cloneDeep)(e),C(r.AGENT_LIST_UPDATED,d())},onAgentsListChanged:e=>(t&&angular.isFunction(e)&&e(d()),m(r.AGENT_LIST_UPDATED,t=>e(t))),getAgents:d,getAgent:e=>{if(t)return(0,o.cloneDeep)(t.getAgent(e))},selectAgent:e=>{i=(0,o.cloneDeep)(e),C(r.AGENT_SELECTED,g())},getSelectedAgent:g,onSelectedAgentChanged:e=>(i&&angular.isFunction(e)&&e(g()),m(r.AGENT_SELECTED,t=>e(t))),getDefaultAgent:()=>(0,o.cloneDeep)(s),setDefaultAgent:e=>{s=e},setCanModifyAgent:e=>{c=(0,o.cloneDeep)(e),C(r.CAN_MODIFY_AGENT_UPDATED,T())},getCanModifyAgent:T,onCanUpdateAgentUpdated:e=>(angular.isFunction(e)&&e(T()),m(r.CAN_MODIFY_AGENT_UPDATED,t=>e(t))),hasExplainResponse:A,toggleExplainResponse:e=>{A(e)&&(l[e].expanded=!l[e].expanded,C(r.EXPLAIN_RESPONSE_CACHE_UPDATED,_()))},getExplainResponse:e=>(0,o.cloneDeep)(l[e]),addExplainResponseCache:e=>{l[e.answerId]=(0,o.cloneDeep)(e),C(r.EXPLAIN_RESPONSE_CACHE_UPDATED,_())},onExplainResponseCacheUpdated:e=>(angular.isFunction(e)&&e(_()),m(r.EXPLAIN_RESPONSE_CACHE_UPDATED,t=>e(t)))}}angular.module("graphdb.framework.ttyg.services.ttygcontext",[]).factory("TTYGContextService",a),a.$inject=["EventEmitterService","TTYGService"];const r={CREATE_CHAT:"createChat",CREATE_CHAT_SUCCESSFUL:"chatCreated",CREATE_CHAT_FAILURE:"chatCreationFailed",RENAME_CHAT:"renameChat",RENAME_CHAT_SUCCESSFUL:"chatRenamed",RENAME_CHAT_FAILURE:"chatRenamedFailure",SELECT_CHAT:"selectChat",SELECTED_CHAT_UPDATED:"selectChatUpdated",LAST_MESSAGE_RECEIVED:"lastMessageReceived",DELETING_CHAT:"deletingChat",DELETE_CHAT:"deleteChat",DELETE_CHAT_SUCCESSFUL:"chatDeleted",DELETE_CHAT_FAILURE:"chatDeletedFailure",CHAT_EXPORT:"chatExport",CHAT_EXPORT_SUCCESSFUL:"chatExportSuccess",CHAT_EXPORT_FAILURE:"chatExportFailure",CHAT_LIST_UPDATED:"chatListUpdated",ASK_QUESTION:"askQuestion",ASK_QUESTION_FAILURE:"askQuestionFailure",CONTINUE_CHAT_RUN:"continueChatRun",LOAD_CHATS:"loadChats",LOAD_CHAT_SUCCESSFUL:"loadChatSuccess",LOAD_CHAT_FAILURE:"loadChatFailure",AGENT_LIST_UPDATED:"agentListUpdated",OPEN_AGENT_SETTINGS:"openAgentSettings",EDIT_AGENT:"editAgent",CLONE_AGENT:"cloneAgent",DELETE_AGENT:"deleteAgent",AGENT_DELETED:"agentDeleted",DELETING_AGENT:"deletingAgent",AGENT_SELECTED:"agentSelected",GO_TO_CREATE_SIMILARITY_VIEW:"goToCreateSimilarityView",GO_TO_CONNECTORS_VIEW:"goToConnectorsView",GO_TO_AUTOCOMPLETE_INDEX_VIEW:"goToAutocompleteIndexView",EXPLAIN_RESPONSE:"explainResponse",EXPLAIN_RESPONSE_CACHE_UPDATED:"explainResponseCacheUpdated",GO_TO_SPARQL_EDITOR:"openQueryInSparqlEditor",CAN_MODIFY_AGENT_UPDATED:"canModifyAgentUpdated"}},89598:(e,t,n)=>{n.r(t),n.d(t,{markdownCodeCopyPlugin:()=>r});const o={buttonStyle:"position: absolute; top: 0; right: 0;",buttonClass:""};function a(e,t){return t=_.merge({},o,t),(...n)=>{const[o,a]=n,r=o[a],i=o[a].content.replaceAll('"',""").replaceAll("'","'"),s=e(...n);return"fence"===r.type&&s.trim()?`<div style="position: relative">\n ${s}\n <copy-to-clipboard\n style="${t.buttonStyle}"\n class="${t.buttonClass}"\n tooltip-text="ttyg.chat_panel.btn.copy_sparql.tooltip"\n text-to-copy="${i}">\n </copy-to-clipboard>\n </div>`:s}}const r=(e,t)=>{e.renderer.rules.code_block=a(e.renderer.rules.code_block,t),e.renderer.rules.fence=a(e.renderer.rules.fence,t)}},89647:(e,t,n)=>{function o(e,t){return{templateUrl:"js/angular/core/templates/markdown-content/markdown-content.html",restrict:"E",scope:{content:"@",options:"="},link:function(n,o){n.markdownContent=void 0;n.markdownContent=t.renderMarkdown(n.content,n.options),n.$evalAsync(()=>{const t=o.find(".markdown-content");e(angular.element(t).contents())(n)})}}}n.r(t),n(12940),angular.module("graphdb.framework.core.directives.markdown-content",["graphdb.framework.core.services.markdown-service"]).directive("markdownContent",o),o.$inject=["$compile","MarkdownService"]},98268:(e,t,n)=>{n.r(t);var o=n(69937);function a(e,t,n,a){return{template:'\n <style>\n .open-in-sparql-editor-btn {\n line-height: 0.75;\n }\n .open-in-sparql-editor-btn .fa:nth-child(2) {\n margin-left: -0.2em;\n margin-right: -0.2em;\n font-size: 0.9em;\n }\n </style>\n <button class="btn btn-link btn-sm open-in-sparql-editor-btn" gdb-tooltip="{{\'ttyg.chat_panel.btn.open_in_sparql_editor.tooltip\' | translate}}" ng-click="onGoToSparqlEditorView()" guide-selector="open-in-sparql-editor-btn">\n <i class="fa fa-bracket-curly"></i><i class="fa fa-ellipsis"></i><i class="fa fa-bracket-curly-right"></i>\n </button>\n ',restrict:"E",scope:{query:"@",repositoryId:"@",executeQuery:"@"},link:function(r,i){r.tooltipText="ttyg.chat_panel.btn.open_in_sparql_editor.tooltip";const s="true"===r.executeQuery;r.onGoToSparqlEditorView=()=>{const a=e.getActiveRepository();a&&a===r.repositoryId?l(r.query):n.openConfirmationModal({title:t.instant("common.confirm"),message:(0,o.Gz)(t.instant("ttyg.chat_panel.dialog.confirm_repository_change.body",{repositoryId:r.repositoryId})),confirmButtonKey:"ttyg.chat_panel.btn.proceed.label"},()=>{e.setRepository(e.getRepository(r.repositoryId)),l(r.query)})};const l=e=>{a.open(`/sparql?query=${encodeURIComponent(e)}&execute=${s}`,"_blank")}}}}angular.module("graphdb.framework.core.directives.open-in-sparql-editor",[]).directive("openInSparqlEditor",a),a.$inject=["$repositories","$translate","ModalService","$window"]}};
|
|
2
|
-
//# sourceMappingURL=64118.9841bd3b9724868b8a63.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"64118.9841bd3b9724868b8a63.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/markdown/markdown.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/markdown/plugins/markdown-open-in-sparql-editor-plugin.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/directives/chat-item-detail.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/ttyg.utils.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/services/ttyg-context.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/services/markdown/plugins/markdown-code-copy-plugin.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/markdown-content/markdown-content.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/open-in-sparql-editor/open-in-sparql-editor.directive.js"],"sourcesContent":["import markdownIt from 'markdown-it';\nimport {markdownCodeCopyPlugin} from \"./plugins/markdown-code-copy-plugin\";\nimport {markdownOpenInSparqlEditorPlugin} from \"./plugins/markdown-open-in-sparql-editor-plugin\";\n\nconst OPEN_IN_SPARQL_PLUGIN_OPTIONS = {\n buttonStyle: 'position: absolute; top: 0; right: 0; margin-right: 24px'\n};\n\n/**\n * AngularJS service that provides methods for rendering Markdown text.\n * @class MarkdownService\n * @param {$sce} $sce - AngularJS service for Strict Contextual Escaping.\n */\nangular\n .module('graphdb.framework.core.services.markdown-service', [])\n .service('MarkdownService', MarkdownService);\n\nMarkdownService.$inject = ['$sce'];\n\nfunction MarkdownService($sce) {\n const markdownInstance = markdownIt()\n .use(markdownCodeCopyPlugin)\n .use(markdownOpenInSparqlEditorPlugin, OPEN_IN_SPARQL_PLUGIN_OPTIONS);\n\n /**\n * Retrieves a Markdown-it instance with optional custom configuration.\n * @function getMarkdown\n * @param {Object} [config] - Optional custom configuration for Markdown-it.\n * @return {Object} The Markdown instance.\n */\n const getMarkdown = (config) => {\n if (config) {\n return markdownIt()\n .use(markdownCodeCopyPlugin, config)\n .use(markdownOpenInSparqlEditorPlugin, _.merge({}, OPEN_IN_SPARQL_PLUGIN_OPTIONS, config));\n\n }\n return markdownInstance;\n };\n\n /**\n * Renders Markdown text into HTML.\n * @function renderMarkdown\n * @param {string} text - The Markdown text to render.\n * @return {string} The rendered HTML, or the original text in case of an error.\n */\n const renderMarkdown = (text, config) => {\n try {\n return $sce.trustAsHtml(getMarkdown(config).render(text));\n } catch (e) {\n console.error('Error rendering markdown:', e);\n // Return the original text in case of an error\n return $sce.trustAsHtml(text);\n }\n };\n\n return {\n renderMarkdown\n };\n}\n","const DEFAULT_MARKDOWN_CONFIGURATION = {\n buttonStyle: \"position: absolute; top: 0; right: 0;\",\n buttonClass: \"\"\n};\n\n/**\n * This function enhances the rendering of fenced code blocks in markdown that contain SPARQL queries\n * by appending an \"open in SPARQL editor\" button to each SPARQL code block.\n *\n * @param {Function} origRule The original rule function responsible for rendering code blocks.\n * @param {Object} options The options to customize the rendering. These will be merged with the default configuration.\n * Options model description:\n * ```JSON\n * {\n * // Inline CSS styles applied to position the button inside the code block. Defaults to positioning the button at the top-right of the block.\n * buttonStyle: \"position: absolute; top: 0; right: 0;\",\n * // The CSS class for styling the button.\n * buttonClass: \"\",\n * // A flag that determines whether the SPARQL query should be automatically executed when opened in the SPARQL editor. Defaults to `false`.\n * executeQuery: false,\n * // The ID of the repository that the SPARQL query will be executed against.\n * repositoryId: ''\n * }\n * ```\n *\n * @return {Function} A function that renders a fenced code block with an \"open in SPARQL editor\" button when the block is recognized as containing SPARQL code.\n */\nfunction renderCode(origRule, options) {\n options = _.merge({}, DEFAULT_MARKDOWN_CONFIGURATION, options);\n return (...args) => {\n const [tokens, idx] = args;\n const token = tokens[idx];\n\n const content = tokens[idx].content\n .replaceAll('\"', '"')\n .replaceAll(\"'\", \"'\");\n const origRendered = origRule(...args);\n\n if (token.type === 'fence' && token.info === 'sparql' && origRendered.trim()) {\n return `<div style=\"position: relative\">\n ${origRendered}\n <open-in-sparql-editor\n style=\"${options.buttonStyle}\"\n class=\"${options.buttonClass}\"\n execute-query=\"${options.executeQuery}\"\n repository-id=\"${options.repositoryId}\"\n query=\"${content}\">\n </open-in-sparql-editor>\n </div>`;\n } else {\n return origRendered;\n }\n };\n}\n\nexport const markdownOpenInSparqlEditorPlugin = (md, options) => {\n md.renderer.rules.code_block = renderCode(md.renderer.rules.code_block, options);\n md.renderer.rules.fence = renderCode(md.renderer.rules.fence, options);\n};\n","import 'angular/core/directives/markdown-content/markdown-content';\nimport 'angular/core/directives/open-in-sparql-editor/open-in-sparql-editor.directive';\nimport {TTYGEventName} from \"../services/ttyg-context.service\";\nimport {ExplainQueryType} from \"../../models/ttyg/explain-response\";\nimport {getHumanReadableTimestamp} from \"../services/ttyg.utils\";\n\nconst modules = [\n 'graphdb.framework.core.directives.open-in-sparql-editor',\n 'graphdb.framework.core.directives.markdown-content'\n];\n\nangular\n .module('graphdb.framework.ttyg.directives.chat-item-detail', modules)\n .directive('chatItemDetail', ChatItemDetailComponent);\n\nChatItemDetailComponent.$inject = ['toastr', '$translate', 'TTYGContextService', 'TTYGService', '$filter'];\n\n/**\n * @ngdoc directive\n * @name graphdb.framework.ttyg.directives.chat-detail:chatItemDetail\n * @restrict E\n * @description\n *\n * This directive represents a component that displays a chat data.\n *\n * @example\n * <chat-item-detail chat-item=\"chatItem\"></chat-item-detail>\n */\nfunction ChatItemDetailComponent(toastr, $translate, TTYGContextService, TTYGService, $filter) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/ttyg/templates/chat-item-detail.html',\n scope: {\n chatItemDetail: '=',\n showActions: '=',\n asking: '=',\n disabled: '=',\n onRegenerateQuestion: '&',\n onAskHowDeliveredAnswer: '&'\n },\n link: ($scope, element, attrs) => {\n\n // =========================\n // Public variables\n // =========================\n\n $scope.ExplainQueryType = ExplainQueryType;\n $scope.repositoryId = undefined;\n $scope.markdownContentOptions = undefined;\n\n /**\n * Mapping of agent id to agent name which is used to display the agent name in the UI.\n * @type {{[key: string]: string}}\n */\n $scope.agentNameByIdMap = {};\n\n /**\n * @type {{[key: string]: ExplainResponseModel}}\n */\n $scope.explainResponseModel = {};\n\n /**\n * Mapping of answer id to a boolean value indicating whether the explanation of how the answer was\n * generated is being loaded.\n * @type {{[key: string]: boolean}}\n */\n $scope.loadingExplainResponse = {};\n\n // =========================\n // Private variables\n // =========================\n\n // =========================\n // Public functions\n // =========================\n $scope.regenerateQuestion = () => {\n $scope.onRegenerateQuestion({chatItem: $scope.chatItemDetail});\n };\n\n /**\n * Extract the explanation of how the answer was generated.\n * @param {string} answerId\n */\n $scope.explainResponse = (answerId) => {\n if (TTYGContextService.hasExplainResponse(answerId)) {\n TTYGContextService.toggleExplainResponse(answerId);\n } else {\n $scope.loadingExplainResponse[answerId] = true;\n TTYGService.explainResponse($scope.chatItemDetail, answerId)\n .then((explainResponse) => {\n TTYGContextService.addExplainResponseCache(explainResponse);\n })\n .catch(() => {\n toastr.error($translate.instant('ttyg.chat_panel.messages.explain_response_failure'));\n })\n .finally(() => $scope.loadingExplainResponse[answerId] = false);\n }\n };\n\n /**\n * Triggers an asking how the answer was generated.\n */\n $scope.onAskHowAnswerWasDerived = () => {\n $scope.onAskHowDeliveredAnswer();\n };\n\n /**\n * Handles the click event on the token usage info button.\n * No additional actions are needed at this time; the handler simply prevents\n * the default button behavior and stops the event from bubbling up.\n *\n * @param {Event} event - The click event object.\n */\n $scope.onTokenUsageInfo = (event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n /**\n * Opens <code>query</code> in sparql editor.\n * @param {string} query\n */\n $scope.onOpenInSparqlEditor = (query) => {\n if ($scope.chatItemDetail.agentId) {\n TTYGContextService.emit(TTYGEventName.GO_TO_SPARQL_EDITOR, {\n query,\n repositoryId: $scope.repositoryId\n });\n }\n };\n\n $scope.showRawQuery = (queryMethod) => {\n // TODO: Create a chat panel model and move this check there when the model is updated.\n const rawQueryNoSpaces = queryMethod.rawQuery.replace(/\\s+/g, '');\n const queryNoSpaces = queryMethod.query.replace(/\\s+/g, '');\n return rawQueryNoSpaces && rawQueryNoSpaces !== queryNoSpaces;\n };\n\n $scope.getRepositoryId = (f) => {\n const agent = TTYGContextService.getAgent($scope.chatItemDetail.agentId);\n return agent ? agent.repositoryId : '';\n };\n\n $scope.getHumanReadableQuestionTimestamp = (timestamp) => {\n return getHumanReadableTimestamp($translate, $filter, timestamp);\n };\n\n // =========================\n // Private functions\n // =========================\n const init = () => {\n $scope.repositoryId = $scope.getRepositoryId();\n $scope.markdownContentOptions = {repositoryId: $scope.repositoryId};\n updateExplainResponseModel();\n };\n\n const onExplainResponseCacheUpdated = () => {\n updateExplainResponseModel();\n };\n\n const updateExplainResponseModel = () => {\n $scope.chatItemDetail.answers.forEach((answer) => {\n $scope.explainResponseModel[answer.id] = TTYGContextService.getExplainResponse(answer.id);\n });\n };\n\n const onAgentsListChanged = () => {\n $scope.agentNameByIdMap = TTYGContextService.getAgents().agentNameByIdMap;\n };\n\n // =========================\n // Subscriptions\n // =========================\n const subscriptions = [];\n\n const removeAllSubscribers = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push(TTYGContextService.onExplainResponseCacheUpdated(onExplainResponseCacheUpdated));\n subscriptions.push(TTYGContextService.onAgentsListChanged(onAgentsListChanged));\n\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllSubscribers);\n\n // =========================\n // Initialization\n // =========================\n init();\n }\n };\n}\n","export const getHumanReadableTimestamp = ($translate, $filter, timestamp, options = {}) => {\n\n if (!timestamp) {\n return '';\n }\n\n const date = new Date(timestamp);\n const today = new Date();\n\n // Get start of today\n const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n\n // Get start of yesterday\n const yesterdayStart = new Date(todayStart);\n yesterdayStart.setDate(todayStart.getDate() - 1);\n\n // Get start of the timestamp's day\n const dateStart = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const time = options.timeFormat ? $filter('date')(date, options.timeFormat) : '';\n\n if (dateStart.getTime() === todayStart.getTime()) {\n return $translate.instant('common.dates.today') + time;\n } else if (dateStart.getTime() === yesterdayStart.getTime()) {\n return $translate.instant('common.dates.yesterday') + time;\n } else {\n // ISO format is the least ambiguous if no date format is passed.\n const dateFormat = options.dateFormat || 'yyyy-MM-dd';\n return $filter('date')(date, dateFormat) + time;\n }\n};\n","import {cloneDeep} from 'lodash';\n\nangular\n .module('graphdb.framework.ttyg.services.ttygcontext', [])\n .factory('TTYGContextService', TTYGContextService);\n\nTTYGContextService.$inject = ['EventEmitterService', 'TTYGService'];\n\nfunction TTYGContextService(EventEmitterService) {\n\n /**\n * The list of agents.\n * @type {AgentListModel}\n * @private\n */\n let _agents = undefined;\n\n /**\n * The ChatsListModel.\n * @type {ChatsListModel}\n * @private\n */\n let _chats = undefined;\n\n /**\n * The currently selected in the UI chat which is used for conversation.\n * @type {ChatModel|undefined}\n * @private\n */\n let _selectedChat = undefined;\n\n /**\n * The currently selected in the UI agent which is used for conversation.\n * @type {AgentModel|undefined}\n * @private\n */\n let _selectedAgent = undefined;\n\n /**\n * Stores information about loaded explain responses.\n * The key is the answer ID, and the value is an instance of {@see ExplainResponseModel} that holds the explanation message.\n *\n * @type {{[key: string]: ExplainResponseModel}}\n */\n let _explainCache = {};\n\n /**\n * The default agent values.\n * @type {AgentModel|undefined}\n * @private\n */\n let _defaultAgent = undefined;\n\n let _canModifyAgent = false;\n\n const resetContext = () => {\n _agents = undefined;\n _chats = undefined;\n _selectedChat = undefined;\n _selectedAgent = undefined;\n _explainCache = {};\n _defaultAgent = undefined;\n _canModifyAgent = false;\n };\n\n /**\n * @return {Promise<AgentModel>}\n */\n const getDefaultAgent = () => {\n return cloneDeep(_defaultAgent);\n };\n\n const setDefaultAgent = (agent) => {\n _defaultAgent = agent;\n };\n\n /**\n * @return {AgentListModel}\n */\n const getAgents = () => {\n return cloneDeep(_agents);\n };\n\n const getAgent = (agentId) => {\n if (_agents) {\n return cloneDeep(_agents.getAgent(agentId));\n }\n };\n\n /**\n * @return {ChatsListModel}\n */\n const getChats = () => {\n return cloneDeep(_chats);\n };\n\n /**\n * @param {ChatsListModel} chats\n */\n const updateChats = (chats) => {\n _chats = cloneDeep(chats);\n emit(TTYGEventName.CHAT_LIST_UPDATED, getChats());\n };\n\n /**\n * Deletes the chat with the provided <code>chatId</code>.\n * @param {ChatModel} chat\n */\n const deleteChat = (chat) => {\n _chats.deleteChat(chat);\n updateChats(_chats);\n };\n\n const addChat = (newChat) => {\n _chats.appendChat(newChat);\n updateChats(_chats);\n };\n\n const replaceChat = (newChat, oldChat) => {\n _chats.replaceChat(newChat, oldChat);\n updateChats(_chats);\n };\n\n /** Subscribes to the 'chatListUpdated' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onChatsListChanged = (callback) => {\n if (_chats && angular.isFunction(callback)) {\n callback(getChats());\n }\n return subscribe(TTYGEventName.CHAT_LIST_UPDATED, (chats) => callback(chats));\n };\n\n /**\n * @return {ChatModel}\n */\n const getSelectedChat = () => {\n return cloneDeep(_selectedChat);\n };\n\n /**\n * Updates the selected chat with the provided <code>selectedChat</code> and emits the 'selectChat' event\n * to notify listeners that a new chat has been selected.\n *\n * @param {ChatModel} selectedChat - The chat object to select.\n */\n const selectChat = (selectedChat) => {\n if (!_selectedChat || _selectedChat.id !== selectedChat.id) {\n _selectedChat = cloneDeep(selectedChat);\n emit(TTYGEventName.SELECT_CHAT, getSelectedChat());\n }\n };\n\n const deselectChat = () => {\n _selectedChat = undefined;\n emit(TTYGEventName.SELECT_CHAT, getSelectedChat());\n };\n\n /**\n * Subscribes to the 'selectChat' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onSelectedChatChanged = (callback) => {\n if (angular.isFunction(callback)) {\n callback(getSelectedChat());\n }\n return subscribe(TTYGEventName.SELECT_CHAT, (selectedChat) => callback(selectedChat));\n };\n\n /**\n * Updates the selected chat and emits the 'selectChatUpdated' event to notify listeners that a property\n * of the selected chat has changed.\n *\n * If the ID of the passed chat differs from the current selected chat, no action will occur.\n *\n * The selected chat can be updated through {@link TTYGContextService#selectChat}.\n *\n * @param {ChatModel} chat - The chat object that is being updated.\n */\n const updateSelectedChat = (chat) => {\n if (!_selectedChat || !_selectedChat.id || !chat || _selectedChat.id === chat.id) {\n _selectedChat = cloneDeep(chat);\n emit(TTYGEventName.SELECTED_CHAT_UPDATED, getSelectedChat());\n }\n };\n\n /** Subscribes to the 'selectChat' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onSelectedChatUpdated = (callback) => {\n if (_selectedChat && angular.isFunction(callback)) {\n callback(getSelectedChat());\n }\n return subscribe(TTYGEventName.SELECTED_CHAT_UPDATED, (selectedChat) => callback(selectedChat));\n };\n\n /** Subscribes to the 'lastMessageReceived' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onLastMessageReceived = (callback) => {\n if (_selectedChat && angular.isFunction(callback)) {\n callback(getSelectedChat());\n }\n return subscribe(TTYGEventName.LAST_MESSAGE_RECEIVED, (selectedChat) => callback(selectedChat));\n };\n\n /**\n * @param {AgentListModel} agents\n */\n const updateAgents = (agents) => {\n _agents = cloneDeep(agents);\n emit(TTYGEventName.AGENT_LIST_UPDATED, getAgents());\n };\n\n /**\n * Subscribes to the 'agentListUpdated' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onAgentsListChanged = (callback) => {\n if (_agents && angular.isFunction(callback)) {\n callback(getAgents());\n }\n return subscribe(TTYGEventName.AGENT_LIST_UPDATED, (selectedChat) => callback(selectedChat));\n };\n\n /**\n * @return {AgentModel}\n */\n const getSelectedAgent = () => {\n return cloneDeep(_selectedAgent);\n };\n\n /**\n * Updates the selected agent with the provided <code>selectedAgent</code> and emits the 'agentSelected' event\n * to notify listeners that a new agent has been selected.\n *\n * @param {AgentModel} selectedAgent - The instance of selected agent.\n */\n const selectAgent = (selectedAgent) => {\n _selectedAgent = cloneDeep(selectedAgent);\n emit(TTYGEventName.AGENT_SELECTED, getSelectedAgent());\n };\n\n const _getExplainResponseCache = () => {\n return cloneDeep(_explainCache);\n };\n\n /**\n * Gets the explain response.\n * @param {string} answerId\n * @return {ExplainResponseModel}\n */\n const getExplainResponse = (answerId) => {\n return cloneDeep(_explainCache[answerId]);\n };\n\n /**\n * Adds the <code>explainResponse</code> into the explain response cache.\n *\n * @param {ExplainResponseModel} explainResponse\n */\n const addExplainResponseCache = (explainResponse) => {\n _explainCache[explainResponse.answerId] = cloneDeep(explainResponse);\n emit(TTYGEventName.EXPLAIN_RESPONSE_CACHE_UPDATED, _getExplainResponseCache());\n };\n\n const hasExplainResponse = (answerId) => {\n return !!_explainCache[answerId];\n };\n\n const toggleExplainResponse = (answerId) => {\n if (hasExplainResponse(answerId)) {\n _explainCache[answerId].expanded = !_explainCache[answerId].expanded;\n emit(TTYGEventName.EXPLAIN_RESPONSE_CACHE_UPDATED, _getExplainResponseCache());\n }\n };\n\n /**\n * Subscribes to the 'explainResponseCacheUpdated' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onExplainResponseCacheUpdated = (callback) => {\n if (angular.isFunction(callback)) {\n callback(_getExplainResponseCache());\n }\n return subscribe(TTYGEventName.EXPLAIN_RESPONSE_CACHE_UPDATED, (explainResponses) => callback(explainResponses));\n };\n\n /**\n * Subscribes to the 'agentSelected' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onSelectedAgentChanged = (callback) => {\n if (_selectedAgent && angular.isFunction(callback)) {\n callback(getSelectedAgent());\n }\n return subscribe(TTYGEventName.AGENT_SELECTED, (selectedChat) => callback(selectedChat));\n };\n\n /**\n * Updates the \"canModifyAgent\" flag and emits the 'canModifyAgentUpdated' event to notify listeners that the canModifyAgent flag is changed.\n *\n * @param {boolean} canModifyAgent\n */\n const setCanModifyAgent = (canModifyAgent) => {\n _canModifyAgent = cloneDeep(canModifyAgent);\n emit(TTYGEventName.CAN_MODIFY_AGENT_UPDATED, getCanModifyAgent());\n };\n\n const getCanModifyAgent = () => {\n return _canModifyAgent;\n };\n\n /**\n * Subscribes to the 'canModifyAgentUpdated' event.\n * @param {function} callback - The callback to be called when the event is fired.\n *\n * @return {function} unsubscribe function.\n */\n const onCanUpdateAgentUpdated = (callback) => {\n if (angular.isFunction(callback)) {\n callback(getCanModifyAgent());\n }\n return subscribe(TTYGEventName.CAN_MODIFY_AGENT_UPDATED, (canModifyAgent) => callback(canModifyAgent));\n };\n\n /**\n * Emits an event with a deep-cloned payload using the EventEmitterService.\n *\n * @param {string} tTYGEventName - The name of the event to emit. It must be a value from {@link TTYGEventName}.\n * @param {*} payload - The data to emit with the event. The payload is deep-cloned before emission.\n */\n const emit = (tTYGEventName, payload) => {\n EventEmitterService.emitSync(tTYGEventName, cloneDeep(payload));\n };\n\n /**\n * Subscribes to an event with the specified callback using the EventEmitterService.\n *\n * @param {string} tTYGEventName - The name of the event to subscribe to. It must be a value from {@link TTYGEventName}.\n * @param {function} callback - The function to call when the event is emitted.\n * @return {function} - Returns a function that can be called to unsubscribe from the event.\n */\n const subscribe = (tTYGEventName, callback) => {\n return EventEmitterService.subscribeSync(tTYGEventName, (payload) => callback(payload));\n };\n\n return {\n resetContext,\n emit,\n subscribe,\n // chats\n getChats,\n updateChats,\n addChat,\n replaceChat,\n onChatsListChanged,\n getSelectedChat,\n selectChat,\n deselectChat,\n deleteChat,\n onSelectedChatChanged,\n updateSelectedChat,\n onSelectedChatUpdated,\n onLastMessageReceived,\n // agents\n updateAgents,\n onAgentsListChanged,\n getAgents,\n getAgent,\n selectAgent,\n getSelectedAgent,\n onSelectedAgentChanged,\n getDefaultAgent,\n setDefaultAgent,\n setCanModifyAgent,\n getCanModifyAgent,\n onCanUpdateAgentUpdated,\n // chat explain\n hasExplainResponse,\n toggleExplainResponse,\n getExplainResponse,\n addExplainResponseCache,\n onExplainResponseCacheUpdated\n };\n}\n\nexport const TTYGEventName = {\n /**\n * Emitting the \"createChat\" event triggers a backend request to create a new chat.\n */\n CREATE_CHAT: 'createChat',\n\n /**\n * This event is emitted when a chat is successfully created.\n */\n CREATE_CHAT_SUCCESSFUL: 'chatCreated',\n\n /**\n * This event is emitted when the creation of a chat fails.\n */\n CREATE_CHAT_FAILURE: 'chatCreationFailed',\n\n RENAME_CHAT: 'renameChat',\n RENAME_CHAT_SUCCESSFUL: 'chatRenamed',\n RENAME_CHAT_FAILURE: 'chatRenamedFailure',\n\n /**\n * Emitting the \"selectChat\" event when the selected chat has been changed.\n */\n SELECT_CHAT: 'selectChat',\n\n /**\n * Emitting the \"selectChatUpdated\" event when the selected chat has been updated.\n */\n SELECTED_CHAT_UPDATED: 'selectChatUpdated',\n\n /**\n * Emitting the \"lastMessageReceived\" event when the final answer message has been received.\n */\n LAST_MESSAGE_RECEIVED: 'lastMessageReceived',\n\n /**\n * This event will be emitted when the chat delete request is in progress. The payload will contain the chat ID\n * and a boolean indicating if the deletion is in progress.\n */\n DELETING_CHAT: 'deletingChat',\n\n /**\n * This event will be emitted when the delete chat process is triggered but before the chat delete request is sent.\n */\n DELETE_CHAT: 'deleteChat',\n\n /**\n * This event will be emitted when the chat was successfully deleted.\n */\n DELETE_CHAT_SUCCESSFUL: 'chatDeleted',\n\n /**\n * This event will be emitted when the attempt to answer the question fails.\n */\n\n /**\n * This event is emitted when the deletion of a chat fails.\n */\n DELETE_CHAT_FAILURE: 'chatDeletedFailure',\n\n CHAT_EXPORT: 'chatExport',\n CHAT_EXPORT_SUCCESSFUL: 'chatExportSuccess',\n CHAT_EXPORT_FAILURE: 'chatExportFailure',\n CHAT_LIST_UPDATED: 'chatListUpdated',\n\n /**\n * Emitting the \"askQuestion\" event triggers a request to the backend to retrieve an answer to a question.\n */\n ASK_QUESTION: 'askQuestion',\n\n /**\n * This event will be emitted when the attempt to answer the question fails.\n */\n ASK_QUESTION_FAILURE: 'askQuestionFailure',\n\n /**\n * Emitting the \"continueChatRun\" event triggers a request to the backend to retrieve more remaining answers from the same chat run.\n */\n CONTINUE_CHAT_RUN: 'continueChatRun',\n\n /**\n * Emitting the \"loadChats\" event will trigger an action to loads all chats from backend server.\n */\n LOAD_CHATS: 'loadChats',\n LOAD_CHAT_SUCCESSFUL: 'loadChatSuccess',\n LOAD_CHAT_FAILURE: 'loadChatFailure',\n\n AGENT_LIST_UPDATED: 'agentListUpdated',\n\n /**\n * This event will be emitted when the create agent process is triggered through the UI but before the agent create\n * request is sent. This is used to open the agent settings dialog.\n */\n OPEN_AGENT_SETTINGS: 'openAgentSettings',\n\n /**\n * This event will be emitted when an agent needs to be edited.\n */\n EDIT_AGENT: 'editAgent',\n\n /**\n * This event will be emitted when an agent needs to be cloned.\n */\n CLONE_AGENT: 'cloneAgent',\n\n /**\n * This event will be emitted when the delete agent process is triggered but before the agent delete request is sent.\n */\n DELETE_AGENT: 'deleteAgent',\n\n /**\n * This event will be emitted when the agent was successfully deleted.\n */\n AGENT_DELETED: 'agentDeleted',\n\n /**\n * This event will be emitted when the agent delete request is in progress. The payload will contain the agent ID\n * and a boolean indicating if the deletion is in progress.\n */\n DELETING_AGENT: 'deletingAgent',\n\n /**\n * This event will be emitted when an agent is selected by the user through the UI.\n */\n AGENT_SELECTED: 'agentSelected',\n\n /**\n * This event will trigger the opening of the similarity view.\n */\n GO_TO_CREATE_SIMILARITY_VIEW: \"goToCreateSimilarityView\",\n\n /**\n * This event will trigger the opening of the connectors view.\n */\n GO_TO_CONNECTORS_VIEW: \"goToConnectorsView\",\n\n /**\n * This event will trigger the opening of the \"Autocomplete index\" view.\n */\n GO_TO_AUTOCOMPLETE_INDEX_VIEW: \"goToAutocompleteIndexView\",\n\n /**\n * This event will trigger fetching a new explanation of how the answer was generated.\n */\n EXPLAIN_RESPONSE: \"explainResponse\",\n\n /**\n * This event will be emitted when the cache with explain responses changed.\n */\n EXPLAIN_RESPONSE_CACHE_UPDATED: \"explainResponseCacheUpdated\",\n\n /**\n * This event will trigger the opening of the sparql view.\n */\n GO_TO_SPARQL_EDITOR: \"openQueryInSparqlEditor\",\n\n CAN_MODIFY_AGENT_UPDATED: \"canModifyAgentUpdated\",\n};\n","const DEFAULT_MARKDOWN_CONFIGURATION = {\n buttonStyle: \"position: absolute; top: 0; right: 0;\",\n buttonClass: \"\"\n};\n\n/**\n * This function enhances the rendering of code blocks in markdown by appending a \"copy to clipboard\" button to each code block.\n *\n * @param {Function} origRule The original rule function responsible for rendering code blocks.\n * @param {Object} options The options to customize the rendering. These will be merged with the default configuration.\n * Options model description:\n * ```JSON\n * {\n * // Inline CSS styles applied to position the button inside the code block. Defaults to positioning the button at the top-right of the block.\n * buttonStyle: \"position: absolute; top: 0; right: 0;\",\n * // The CSS class for styling the button. The default applies Bootstrap-like styles with a small button size and a secondary theme\n * buttonClass: \"btn btn-link btn-sm secondary\",\n * }\n * ```\n * @return {Function} A function that renders a code block with a \"copy to clipboard\" button, when a fenced code block is detected.\n */\nfunction renderCode(origRule, options) {\n options = _.merge({}, DEFAULT_MARKDOWN_CONFIGURATION, options);\n return (...args) => {\n const [tokens, idx] = args;\n const token = tokens[idx];\n\n const content = tokens[idx].content\n .replaceAll('\"', '"')\n .replaceAll(\"'\", \"'\");\n const origRendered = origRule(...args);\n\n if (token.type === 'fence' && origRendered.trim()) {\n return `<div style=\"position: relative\">\n ${origRendered}\n <copy-to-clipboard\n style=\"${options.buttonStyle}\"\n class=\"${options.buttonClass}\"\n tooltip-text=\"ttyg.chat_panel.btn.copy_sparql.tooltip\"\n text-to-copy=\"${content}\">\n </copy-to-clipboard>\n </div>`;\n } else {\n return origRendered;\n }\n };\n}\n\nexport const markdownCodeCopyPlugin = (md, options) => {\n md.renderer.rules.code_block = renderCode(md.renderer.rules.code_block, options);\n md.renderer.rules.fence = renderCode(md.renderer.rules.fence, options);\n};\n","import 'angular/core/services/markdown/markdown.service';\n\nconst modules = [\n 'graphdb.framework.core.services.markdown-service'\n];\n\n/**\n * @ngdoc directive\n * @name graphdb.framework.core.directives.markdown-content:markdownContent\n * @restrict E\n *\n * @description\n * The `markdownContent` directive is used to render and compile Markdown content inside AngularJS applications.\n * It dynamically compiles any AngularJS directives within the rendered Markdown content, ensuring that the\n * directives are properly recognized and executed.\n *\n * @param {string=} content The markdown content to be rendered. This can be passed dynamically from the scope.\n * @param {object=} options Optional configuration object to pass to the Markdown rendering engine, providing\n * customization for how the Markdown is rendered.\n *\n * @example\n * Usage:\n * <markdown-content content=\"markdownText\" options=\"markdownOptions\"></markdown-content>\n */\nangular\n .module('graphdb.framework.core.directives.markdown-content', modules)\n .directive('markdownContent', markdownContentDirective);\n\nmarkdownContentDirective.$inject = ['$compile', 'MarkdownService'];\n\nfunction markdownContentDirective($compile, MarkdownService) {\n return {\n templateUrl: 'js/angular/core/templates/markdown-content/markdown-content.html',\n restrict: 'E',\n scope: {\n content: '@',\n options: '='\n },\n link: function ($scope, element) {\n\n // =========================\n // Public variables\n // =========================\n\n /**\n * The rendered HTML content generated from the provided Markdown.\n *\n * @type {string} markdownContent\n */\n $scope.markdownContent = undefined;\n\n // =========================\n // Private functions\n // =========================\n\n const init = () => {\n $scope.markdownContent = MarkdownService.renderMarkdown($scope.content, $scope.options);\n compileMarkdownAnswerContents();\n };\n\n /**\n * Manually compiles AngularJS directives within the dynamically generated markdown HTML content.\n * AngularJS does not automatically detect and compile directives inside HTML that is dynamically\n * inserted, so this function ensures that the content is compiled after it is rendered.\n */\n const compileMarkdownAnswerContents = () => {\n $scope.$evalAsync(() => {\n // Find the dynamically rendered element that needs to be compiled\n const markdownElement = element.find('.markdown-content');\n $compile(angular.element(markdownElement).contents())($scope);\n });\n };\n\n init();\n }\n };\n}\n","import {decodeHTML} from \"../../../../../app\";\n\n/**\n * @ngdoc directive\n * @name graphdb.framework.core.directives.open-in-sparql-editor.directive:openInSparqlEditor\n * @restrict E\n *\n * @description\n * This directive provides a button that allows users to open the SPARQL editor with a pre-defined query.\n * Optionally, it can handle repository switching before opening the editor and executing the query.\n * The directive can also trigger the query execution automatically if specified.\n *\n * @scope\n *\n * @param {string} query The SPARQL query to be opened and optionally executed in the SPARQL editor.\n * @param {string} repositoryId The ID of the repository to be selected before opening the SPARQL editor.\n * @param {string} executeQuery Flag that determines whether the query should be executed upon opening the editor.\n * It accepts 'true' or 'false'. If 'true', the query will be automatically executed.\n *\n * @example\n * <open-in-sparql-editor\n * query=\"SELECT * WHERE {?s ?p ?o}\"\n * repository-id=\"myRepository\"\n * execute-query=\"true\">\n * </open-in-sparql-editor>\n *\n * @requires $repositories\n * @requires $translate\n * @requires ModalService\n * @requires $window\n *\n * @param {string} query The SPARQL query to be executed in the new tab.\n */\n\nangular\n .module('graphdb.framework.core.directives.open-in-sparql-editor', [])\n .directive('openInSparqlEditor', openInSparqlEditorDirective);\n\nopenInSparqlEditorDirective.$inject = ['$repositories', '$translate', 'ModalService', '$window'];\n\nfunction openInSparqlEditorDirective($repositories, $translate, ModalService, $window) {\n return {\n // Note: the line-height of the element must match the line-height of the icon.\n // This defines a composite FontAwesome icon to match the style of the surrounding icons.\n template: `\n <style>\n .open-in-sparql-editor-btn {\n line-height: 0.75;\n }\n .open-in-sparql-editor-btn .fa:nth-child(2) {\n margin-left: -0.2em;\n margin-right: -0.2em;\n font-size: 0.9em;\n }\n </style>\n <button class=\"btn btn-link btn-sm open-in-sparql-editor-btn\" gdb-tooltip=\"{{'ttyg.chat_panel.btn.open_in_sparql_editor.tooltip' | translate}}\" ng-click=\"onGoToSparqlEditorView()\" guide-selector=\"open-in-sparql-editor-btn\">\n <i class=\"fa fa-bracket-curly\"></i><i class=\"fa fa-ellipsis\"></i><i class=\"fa fa-bracket-curly-right\"></i>\n </button>\n `,\n restrict: 'E',\n scope: {\n query: '@',\n repositoryId: '@',\n executeQuery: '@'\n },\n link: function ($scope, element) {\n\n // =========================\n // Public variables\n // =========================\n\n $scope.tooltipText = 'ttyg.chat_panel.btn.open_in_sparql_editor.tooltip';\n // =========================\n // Private functions\n // =========================\n const execute = $scope.executeQuery === 'true';\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Opens the SPARQL editor in a new browser tab with the specified query and optional execution.\n */\n $scope.onGoToSparqlEditorView = () => {\n const activeRepositoryId = $repositories.getActiveRepository();\n if (!activeRepositoryId || activeRepositoryId !== $scope.repositoryId) {\n // Open a confirmation modal before switching the repository\n ModalService.openConfirmationModal(\n {\n title: $translate.instant('common.confirm'),\n message: decodeHTML($translate.instant('ttyg.chat_panel.dialog.confirm_repository_change.body', {repositoryId: $scope.repositoryId})),\n confirmButtonKey: 'ttyg.chat_panel.btn.proceed.label'\n },\n () => {\n $repositories.setRepository($repositories.getRepository($scope.repositoryId));\n openInSparqlEditorInNewTab($scope.query);\n }\n );\n } else {\n // No repository switch needed, just open the SPARQL editor\n openInSparqlEditorInNewTab($scope.query);\n }\n };\n // =========================\n // Private functions\n // =========================\n\n /**\n * Opens SPARQL editor view with passed query and handles repository switch if necessary.\n * @param {string} query\n */\n const openInSparqlEditorInNewTab = (query) => {\n // Open the SPARQL editor in a new tab and execute the query\n $window.open(`/sparql?query=${encodeURIComponent(query)}&execute=${execute}`, '_blank');\n };\n }\n };\n}\n"],"names":["OPEN_IN_SPARQL_PLUGIN_OPTIONS","buttonStyle","MarkdownService","$sce","markdownInstance","markdownIt","use","markdownCodeCopyPlugin","markdownOpenInSparqlEditorPlugin","renderMarkdown","text","config","trustAsHtml","_","merge","getMarkdown","render","e","console","error","angular","module","service","$inject","DEFAULT_MARKDOWN_CONFIGURATION","buttonClass","renderCode","origRule","options","args","tokens","idx","token","content","replaceAll","origRendered","type","info","trim","executeQuery","repositoryId","md","renderer","rules","code_block","fence","ChatItemDetailComponent","toastr","$translate","TTYGContextService","TTYGService","$filter","restrict","templateUrl","scope","chatItemDetail","showActions","asking","disabled","onRegenerateQuestion","onAskHowDeliveredAnswer","link","$scope","element","attrs","ExplainQueryType","undefined","markdownContentOptions","agentNameByIdMap","explainResponseModel","loadingExplainResponse","regenerateQuestion","chatItem","explainResponse","answerId","hasExplainResponse","toggleExplainResponse","then","addExplainResponseCache","catch","instant","finally","onAskHowAnswerWasDerived","onTokenUsageInfo","event","preventDefault","stopPropagation","onOpenInSparqlEditor","query","agentId","emit","TTYGEventName","GO_TO_SPARQL_EDITOR","showRawQuery","queryMethod","rawQueryNoSpaces","rawQuery","replace","queryNoSpaces","getRepositoryId","f","agent","getAgent","getHumanReadableQuestionTimestamp","timestamp","getHumanReadableTimestamp","updateExplainResponseModel","answers","forEach","answer","id","getExplainResponse","subscriptions","push","onExplainResponseCacheUpdated","onAgentsListChanged","getAgents","$on","removeAllSubscribers","subscription","directive","date","Date","today","todayStart","getFullYear","getMonth","getDate","yesterdayStart","setDate","dateStart","time","timeFormat","getTime","dateFormat","EventEmitterService","_agents","_chats","_selectedChat","_selectedAgent","_defaultAgent","_explainCache","_canModifyAgent","cloneDeep","getChats","updateChats","chats","CHAT_LIST_UPDATED","getSelectedChat","getSelectedAgent","_getExplainResponseCache","getCanModifyAgent","tTYGEventName","payload","emitSync","subscribe","callback","subscribeSync","resetContext","addChat","newChat","appendChat","replaceChat","oldChat","onChatsListChanged","isFunction","selectChat","selectedChat","SELECT_CHAT","deselectChat","deleteChat","chat","onSelectedChatChanged","updateSelectedChat","SELECTED_CHAT_UPDATED","onSelectedChatUpdated","onLastMessageReceived","LAST_MESSAGE_RECEIVED","updateAgents","agents","AGENT_LIST_UPDATED","selectAgent","selectedAgent","AGENT_SELECTED","onSelectedAgentChanged","getDefaultAgent","setDefaultAgent","setCanModifyAgent","canModifyAgent","CAN_MODIFY_AGENT_UPDATED","onCanUpdateAgentUpdated","expanded","EXPLAIN_RESPONSE_CACHE_UPDATED","explainResponses","factory","CREATE_CHAT","CREATE_CHAT_SUCCESSFUL","CREATE_CHAT_FAILURE","RENAME_CHAT","RENAME_CHAT_SUCCESSFUL","RENAME_CHAT_FAILURE","DELETING_CHAT","DELETE_CHAT","DELETE_CHAT_SUCCESSFUL","DELETE_CHAT_FAILURE","CHAT_EXPORT","CHAT_EXPORT_SUCCESSFUL","CHAT_EXPORT_FAILURE","ASK_QUESTION","ASK_QUESTION_FAILURE","CONTINUE_CHAT_RUN","LOAD_CHATS","LOAD_CHAT_SUCCESSFUL","LOAD_CHAT_FAILURE","OPEN_AGENT_SETTINGS","EDIT_AGENT","CLONE_AGENT","DELETE_AGENT","AGENT_DELETED","DELETING_AGENT","GO_TO_CREATE_SIMILARITY_VIEW","GO_TO_CONNECTORS_VIEW","GO_TO_AUTOCOMPLETE_INDEX_VIEW","EXPLAIN_RESPONSE","markdownContentDirective","$compile","markdownContent","$evalAsync","markdownElement","find","contents","openInSparqlEditorDirective","$repositories","ModalService","$window","template","tooltipText","execute","onGoToSparqlEditorView","activeRepositoryId","getActiveRepository","openInSparqlEditorInNewTab","openConfirmationModal","title","message","decodeHTML","confirmButtonKey","setRepository","getRepository","open","encodeURIComponent"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export const __webpack_id__=66014;export const __webpack_ids__=[15435,56139,56413,66014,71156,83610,84923];export const __webpack_modules__={15435:(n,e,t)=>{t.r(e),t.d(e,{RenderingMode:()=>o});const o={YASGUI:"mode-yasgui",YASQE:"mode-yasqe",YASR:"mode-yasr"}},56139:()=>{function n(n,e){return{showToastMessageWithDelay:function(t){return new Promise(o=>{n.success(e.instant(t)),setTimeout(o,300)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",n),n.$inject=["toastr","$translate"]},56413:(n,e,t)=>{t.r(e),t.d(e,{DEFAULT_SPARQL_QUERY:()=>o,JdbcConfigurationInfo:()=>i});const o="PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n# Selects two variables to use as columns\nSELECT ?id ?label {\n ?id rdfs:label ?label\n # The following placeholder must be present in the query\n #!filter\n}";class i{constructor(n=o,e=!0,t=void 0){this.query=n,this.jdbcConfigurationName=t,this.isNewJdbcConfiguration=e,this.isValidQuery=!0,this.isValidQueryType=!0,this.hasUndefinedColumns=!1,this.isColumnsEmpty=!1,this.columns=[]}}},66014:(n,e,t)=>{t.r(e),t(76933),t(83351),t(56139),t(82493),t(81655);var o=t(56413),i=t(71156),r=t(84923),s=t(15435),a=t(83610),c=t(85727),u=t(69937),l=t(57154);function g(n,e,t,o,i,r){n.getSqlConfigurations=function(){!e.getActiveRepository()||e.isActiveRepoOntopType()||e.isActiveRepoFedXType()?n.jdbcConfigurations=[]:t.getJdbcConfigurations().success(function(e){n.jdbcConfigurations=e}).error(function(n){const e=getError(n);o.error(e,r.instant("jdbc.not.get.SQL.msg"))})},n.$watch(function(){return e.getActiveRepository()},function(){n.getSqlConfigurations()}),n.deleteConfiguration=function(e){i.openSimpleModal({title:r.instant("common.warning"),message:r.instant("jdbc.delete.sql.table.warning.msg",{name:e}),warning:!0}).result.then(function(){t.deleteJdbcConfiguration(e).success(function(){n.getSqlConfigurations()}).error(function(n){o.error(getError(n),r.instant("jdbc.not.delete.sql.msg"))})})}}function d(n,e,t,g,d,f,m,b,p,C,y,h,j,w,v,R){e.emptySparqlResponse='{"head": {"vars": []},"results": {"bindings": []}}',e.getSuggestionSqlType="",e.sqlTypes=[],e.activeTab=1,e.jdbcConfigurationInfo=new o.JdbcConfigurationInfo,e.jdbcConfigurationInfo.jdbcConfigurationName=g.search().name||"",e.saveOrUpdateExecuted=!1,e.jdbcConfigurationInfo.isNewJdbcConfiguration=!e.jdbcConfigurationInfo.jdbcConfigurationName,e.language=v.getLanguage(),e.isDirty=!1,e.prefixes=[],e.loadingControllerResources=!1,e.isQueryRunning=!1,e.canEditActiveRepo=!1;let S=!0,q=!0;e.saveJdbcConfiguration=()=>{if(e.saveOrUpdateExecuted=!0,!e.jdbcConfigurationInfo.jdbcConfigurationName)return;if(!e.isDirty)return void F();const n=e.jdbcConfigurationInfo.isNewJdbcConfiguration?_:A;Q(e.jdbcConfigurationInfo).then(D).then(P).then(U).then(n).catch(n=>{if(!(n instanceof r.JdbcConfigurationError)){const e=getError(n);d.error(e,w.instant("jdbc.not.saved.configuration"))}})},e.getPreview=()=>{e.activeTab=1,e.isQueryRunning=!0,Q(e.jdbcConfigurationInfo).then(D).then(P).then(U).then(n=>(J({render:s.RenderingMode.YASQE,initialQuery:n.query}),n)).then(E).then(([n,e])=>{const t=n&&n.results.bindings&&n.results.bindings.length>0;let o=s.RenderingMode.YASGUI;t||(o=s.RenderingMode.YASQE,d.info(w.instant("jdbc.table.definition"),w.instant("jdbc.preview.sql"))),J({render:o,sparqlResponse:n,initialQuery:e.query})}).catch(n=>{n instanceof r.JdbcConfigurationError?n.jdbcConfigurationInfo&&(n.jdbcConfigurationInfo.isColumnsEmpty||n.jdbcConfigurationInfo.hasUndefinedColumns)&&($(),e.activeTab=2):d.error(getError(n,0,100),w.instant("jdbc.not.show.preview"))}).finally(()=>{e.isQueryRunning=!1})},e.setActiveTab=n=>{e.activeTab=n;const t=e.jdbcConfigurationInfo.columns;2!==e.activeTab||t&&0!==t.length||Q(e.jdbcConfigurationInfo).then(D).then(()=>{e.getColumnsSuggestions()})},e.setDirty=()=>{e.isDirty=!0},e.getTypeLabel=n=>{switch(n){case"iri":return"VARCHAR: IRI";case"string":return"VARCHAR: String";default:return n.indexOf(" ")>0?n:n.toUpperCase()}},e.selectColumnType=(n,t)=>{e.setDirty();const o=e.jdbcConfigurationInfo.columns.find(e=>e.column_name===n);o.column_type===e.getSuggestionSqlType&&U(e.jdbcConfigurationInfo).then(e=>C.getColumnsTypeSuggestion(e.query,[n])).then(n=>n.data).then(n=>{(0,a.updateColumn)(o,n),I(o.column_type,t)}).catch(n=>{d.error(getError(n),w.instant("jdbc.not.suggest.column.type"))})},e.deleteColumn=function(n,t){j.openSimpleModal({title:w.instant("common.warning"),message:w.instant("jdbc.warning.delete.column.msg",{columnName:n}),warning:!0}).result.then(function(){e.jdbcConfigurationInfo.columns.splice(t,1),e.setDirty()})},e.getColumnsSuggestions=()=>{e.jdbcConfigurationInfo.columns&&e.jdbcConfigurationInfo.columns.length>0?j.openSimpleModal({title:w.instant("common.warning"),message:w.instant("jdbc.warning.column.type.msg"),warning:!0}).result.then(function(){$()}):$()},e.hasPrecision=n=>"iri"===n||"string"===n||"decimal"===n,e.containsColumnsWithPrecision=n=>n&&n.some(n=>e.hasPrecision(n.column_type)),e.containsColumnsWithScale=n=>n&&n.some(n=>Y(n.column_type)),e.isLiteral=n=>"iri"!==n&&"unknown"!==n,e.containsNonLiteralColumnsOnly=n=>n&&n.every(n=>!e.isLiteral(n.column_type));const E=n=>{if(e.canWriteActiveRepo){const t=JSON.stringify({name:e.jdbcConfigurationInfo.jdbcConfigurationName,query:e.jdbcConfigurationInfo.query,columns:e.jdbcConfigurationInfo.columns||[]});return Promise.all([C.getNewSqlTablePreview(t).then(n=>n.data),Promise.resolve(n)])}return Promise.all([C.getExistingSqlTablePreview(e.jdbcConfigurationInfo.jdbcConfigurationName).then(n=>n.data),Promise.resolve(n)])},I=(n,e)=>{n===e?d.info((0,u.Gz)(w.instant("jdbc.same.suggested.sql.type",{type:n})),w.instant("jdbc.suggest.sql.type"),{allowHtml:!0}):d.success((0,u.Gz)(w.instant("jdbc.suggested.sql.type",{type:n})),w.instant("jdbc.suggest.sql.type"),{allowHtml:!0})},T=(n,t=new o.JdbcConfigurationInfo)=>{e.jdbcConfigurationInfo.columns=t.columns,e.jdbcConfigurationInfo.query=t.query,e.jdbcConfigurationInfo.jdbcConfigurationName=g.search().name||"",e.jdbcConfigurationInfo.isNewJdbcConfiguration=!e.jdbcConfigurationInfo.jdbcConfigurationName,e.prefixes=n,J(),V()},_=n=>{const t={name:n.jdbcConfigurationName,query:n.query,columns:n.columns};return C.createNewJdbcConfiguration(t).then(()=>{e.isDirty=!1,e.jdbcConfigurationInfo.isNewConfiguration=!1,d.success(w.instant("jdbc.saved.configuration")),W()})},A=n=>{const t={name:n.jdbcConfigurationName,query:n.query,columns:n.columns};return C.updateJdbcConfiguration(t).then(()=>{e.isDirty=!1,e.jdbcConfigurationInfo.isNewConfiguration=!1,d.success(w.instant("jdbc.configuration.updated")),W()})},J=(n={})=>{const t={};angular.extend(t,e.yasguiConfig||N(),n),e.yasguiConfig=t},N=()=>({showEditorTabs:!1,showToolbar:!1,showResultTabs:!1,showQueryButton:!1,showResultInfo:!1,downloadAsOn:!1,showYasqeResizer:!1,initialQuery:e.jdbcConfigurationInfo.query,componentId:"jdbc-component",prefixes:e.prefixes,maxPersistentResponseSize:0,render:s.RenderingMode.YASQE,getCellContent:O,sparqlResponse:e.emptySparqlResponse,yasqeActionButtons:c.DISABLE_YASQE_BUTTONS_CONFIGURATION,yasqeMode:e.canEditActiveRepo?i.YasqeMode.WRITE:i.YasqeMode.READ}),Q=n=>L().getQueryType().then(e=>(n.isValidQueryType="SELECT"===e,n.isValidQueryType?n:Promise.reject(new r.JdbcConfigurationError("Query type is not valid.")))),D=n=>L().isQueryValid().then(e=>(n.isValidQuery=e,n.isValidQuery?n:Promise.reject(new r.JdbcConfigurationError("Invalid query.")))),P=n=>n.columns&&0!==n.columns.length?e.jdbcConfigurationInfo.columns&&e.jdbcConfigurationInfo.columns.find(n=>"unknown"===n.column_type)?(n.hasUndefinedColumns=!0,Promise.reject(new r.JdbcConfigurationError("There are columns without defined type.",n))):Promise.resolve(n):(n.isColumnsEmpty=!0,d.error(w.instant("jdbc.warning.one.column.msg")),Promise.reject(new r.JdbcConfigurationError("There are not defined columns.",n))),$=()=>{Q(e.jdbcConfigurationInfo).then(D).then(U).then(x).then(M).then(n=>e.jdbcConfigurationInfo=n).catch(n=>{console.log(n)})},x=n=>C.getColumnNames(n.query).then(e=>[n,e.data]).catch(function(n){d.error(getError(n),w.instant("jdbc.not.suggest.column.names"))}),M=([n,t])=>C.getColumnsTypeSuggestion(n.query,t).then(function(o){return n.columns=(0,a.toJDBCColumns)(t,o.data),n.isColumnsEmpty=n.columns.length,e.setDirty(),n}).catch(function(n){d.error(getError(n),w.instant("jdbc.not.suggest.column.types"))}),L=()=>c.YasguiComponentDirectiveUtil.getOntotextYasguiElement("#query-editor"),U=n=>L().getQuery().then(e=>(n.query=e,n)),Y=n=>"decimal"===n,O=(n,e)=>{let t=n.value;return t=t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),"<div class = 'literal-cell'><p class='nonUri' style='border: none; background-color: transparent; padding: 0; margin: 0'>"+t+"</p></div>"},k=(n,e,t,o)=>{j.openSimpleModal({title:n,message:e,warning:!0}).result.then(function(){angular.isFunction(t)&&t()},function(){angular.isFunction(o)&&o()})},V=()=>{e.getSuggestionSqlType=w.instant("view.jdbc.create.get_suggestion_sql_type"),e.sqlTypes=["string","iri","boolean","byte","short","int","long","float","double","decimal","date","time","timestamp",e.getSuggestionSqlType]},W=()=>{setTimeout(function(){F()},1e3)},F=()=>{g.url("/jdbc")},B=n=>{e.isDirty&&(n.returnValue=!0)},G=()=>{window.removeEventListener("beforeunload",B),z.forEach(n=>n())},z=[],H=l.ServiceProvider.get(l.RepositoryContextService).onSelectedRepositoryChanged(n=>{n&&(q?q=!1:L().abortQuery().then(F))},()=>new Promise(function(n){if(e.jdbcConfigurationInfo.isNewJdbcConfiguration)return void n(!0);const t=()=>{e.isDirty=!1,n(!0)};if(e.isDirty){const e=()=>{n(!1)},o=w.instant("common.confirm"),i=w.instant("jdbc.warning.unsaved.changes");k(o,i,t,e)}else t()}));z.push(H),z.push(t.$on("$translateChangeSuccess",()=>{e.language=v.getLanguage(),V()})),z.push(e.$on("$locationChangeStart",(n,t)=>{if(e.isDirty){n.preventDefault();const e=w.instant("common.confirm"),o=w.instant("jdbc.warning.unsaved.changes");k(e,o,()=>{G();const n=g.absUrl().length-g.url().length,e=t.substring(n);g.path(e)})}else G()})),z.push(e.$on("$destroy",G)),window.addEventListener("beforeunload",B),z.push(e.$watch(e.getActiveRepositoryObject,n=>{n&&(e.canEditActiveRepo=e.canWriteActiveRepo(),S?((()=>{e.loadingControllerResources=!0;const n=f.getActiveRepository();e.jdbcConfigurationInfo.jdbcConfigurationName?Promise.all([f.getPrefixes(n),C.getJdbcConfiguration(e.jdbcConfigurationInfo.jdbcConfigurationName)]).then(([n,e])=>{T(n,e.data)}).finally(()=>e.loadingControllerResources=!1):f.getPrefixes(n).then(n=>T(n)).finally(()=>e.loadingControllerResources=!1)})(),S=!1):L().abortQuery().then(F))}))}angular.module("graphdb.framework.jdbc.controllers",["ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.rest.monitoring.service","toastr","graphdb.framework.utils.event-emitter-service"],["graphdb.framework.utils.notifications"]).controller("JdbcListCtrl",g).controller("JdbcCreateCtrl",d),g.$inject=["$scope","$repositories","JdbcRestService","toastr","ModalService","$translate"],d.$inject=["$q","$scope","$rootScope","$location","toastr","$repositories","$window","$timeout","$interval","JdbcRestService","RDF4JRepositoriesRestService","SparqlRestService","ModalService","$translate","$languageService","EventEmitterService"]},71156:(n,e,t)=>{t.r(e),t.d(e,{YasqeMode:()=>o});const o={WRITE:"WRITE",READ:"READ",PROTECTED:"PROTECTED"}},83610:(n,e,t)=>{t.r(e),t.d(e,{JdbcColumn:()=>o,toJDBCColumns:()=>i,updateColumn:()=>r});class o{constructor(){this.column_name="",this.column_type="",this.sparql_type="",this.nullable=!0}}const i=(n=[],e)=>n.map(n=>({column_name:n,column_type:e[n].column_type,nullable:!0,sparql_type:e[n].sparql_type})),r=(n,e)=>{n.column_type=e[n.column_name].column_type,n.sparql_type=e[n.column_name].sparql_type}},84923:(n,e,t)=>{t.r(e),t.d(e,{JdbcConfigurationError:()=>o});class o extends Error{constructor(n,e){super(n),this.jdbcConfigurationInfo=e}}}};
|
|
2
|
-
//# sourceMappingURL=66014.336bc4291da2fbc96cd1.bundle.js.map
|