graphdb-workbench 3.5.0-TR3 → 3.5.0-TR4
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/40808.78f81786cadf334f8531.bundle.js +2 -0
- package/dist/40808.78f81786cadf334f8531.bundle.js.map +1 -0
- package/dist/44906.3d40209be900c399a67d.bundle.js +2 -0
- package/dist/44906.3d40209be900c399a67d.bundle.js.map +1 -0
- package/dist/{64709.c88c51016f076cbabc90.bundle.js → 64709.ec1274a92bb4614c24c6.bundle.js} +2 -2
- package/dist/{64709.c88c51016f076cbabc90.bundle.js.map → 64709.ec1274a92bb4614c24c6.bundle.js.map} +1 -1
- package/dist/{65677.17f5dcabfc485f1e12eb.bundle.js → 65677.2612e7602a65661c9b59.bundle.js} +2 -2
- package/dist/{65677.17f5dcabfc485f1e12eb.bundle.js.map → 65677.2612e7602a65661c9b59.bundle.js.map} +1 -1
- package/dist/{80933.f525c8a525c14438dd9c.bundle.js → 80933.0869da7c01768e58482e.bundle.js} +2 -2
- package/dist/{80933.f525c8a525c14438dd9c.bundle.js.map → 80933.0869da7c01768e58482e.bundle.js.map} +1 -1
- package/dist/{82917.b24600c57a3e4a08374e.bundle.js → 82917.ae9eeab518f795c561b9.bundle.js} +2 -2
- package/dist/{82917.b24600c57a3e4a08374e.bundle.js.map → 82917.ae9eeab518f795c561b9.bundle.js.map} +1 -1
- package/dist/{86099.7261b39d7cff80da2a41.bundle.js → 86099.fd59643685687c61ee48.bundle.js} +2 -2
- package/dist/{86099.7261b39d7cff80da2a41.bundle.js.map → 86099.fd59643685687c61ee48.bundle.js.map} +1 -1
- package/dist/index.html +8 -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 +2 -2
- 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 +2 -2
- 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 +3 -3
- 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.d59df54d7b195790cc81.js → legacyWorkbench.c431d63e6fe22b925efd.js} +3 -3
- package/dist/{legacyWorkbench.d59df54d7b195790cc81.js.map → legacyWorkbench.c431d63e6fe22b925efd.js.map} +1 -1
- package/dist/pages/aclmanagement.html +1 -1
- 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/home.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/jdbc.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 +2 -2
- 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/sparql-templates.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/package.json +1 -1
- package/dist/40808.39a22bb87bfc33dafad7.bundle.js +0 -2
- package/dist/40808.39a22bb87bfc33dafad7.bundle.js.map +0 -1
- package/dist/44906.add6bedebb53f0cc1aaa.bundle.js +0 -2
- package/dist/44906.add6bedebb53f0cc1aaa.bundle.js.map +0 -1
- /package/dist/{legacyWorkbench.d59df54d7b195790cc81.js.LICENSE.txt → legacyWorkbench.c431d63e6fe22b925efd.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const __webpack_esm_id__=40808;export const __webpack_esm_ids__=[40808];export const __webpack_esm_modules__={40808(){PluginRegistry.add("route",[{url:"/repository",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"LocationsAndRepositoriesCtrl",templateUrl:"pages/repositories.html",title:"menu.repositories.label",helpInfo:"view.repositories.helpInfo",documentationUrl:"creating-a-repository.html",allowAuthorities:["READ_REPO_{repoId}","READ_REPO_{repoId}:GRAPHQL"]},{url:"/repository/create",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"ChooseRepositoryCtrl",templateUrl:"pages/choose-repository-type.html",title:"view.choose.repo.title",allowAuthorities:["READ_REPO_{repoId}"]},{url:"/repository/create/:repositoryType",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"AddRepositoryCtrl",templateUrl:"pages/repository.html",title:"Create Repository",allowAuthorities:["READ_REPO_{repoId}"]},{url:"/repository/edit/:repositoryId",module:"graphdb.framework.repositories",path:"repositories/app",chunk:"repositories",controller:"EditRepositoryCtrl",templateUrl:"pages/repository.html",title:"Edit Repository",allowAuthorities:["READ_REPO_{repoId}"]}]),PluginRegistry.add("main.menu",{items:[{label:"Repositories",labelKey:"menu.repositories.label",href:"repository",order:1,role:"ROLE_MANAGE_REPO",parent:"Setup",children:[{href:"repository/create",children:[{href:"repository/create/*"}]},{href:"repository/edit/*"}],guideSelector:"sub-menu-repositories",testSelector:"sub-menu-repositories"}]})}};
|
|
2
|
+
//# sourceMappingURL=40808.78f81786cadf334f8531.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"40808.78f81786cadf334f8531.bundle.js","mappings":"6HAAAA,eAAeC,IAAI,QAAS,CACxB,CACI,IAAO,cACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,+BACd,YAAe,0BACf,MAAS,0BACT,SAAY,6BACZ,iBAAoB,6BACpB,iBAAoB,CAAC,qBAAsB,+BAC5C,CACC,IAAO,qBACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,uBACd,YAAe,oCACf,MAAS,yBACT,iBAAoB,CAAC,uBACtB,CACC,IAAO,qCACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,oBACd,YAAe,wBACf,MAAS,oBACT,iBAAoB,CAAC,uBACtB,CACC,IAAO,iCACP,OAAU,iCACV,KAAQ,mBACR,MAAS,eACT,WAAc,qBACd,YAAe,wBACf,MAAS,kBACT,iBAAoB,CAAC,yBAI7BD,eAAeC,IAAI,YAAa,CAC5B,MAAS,CACL,CACIC,MAAO,eACPC,SAAU,0BACVC,KAAM,aACNC,MAAO,EACPC,KAAM,mBACNC,OAAQ,QACRC,SAAU,CACN,CACIJ,KAAM,oBACNI,SAAU,CACN,CACIJ,KAAM,yBAIlB,CACIA,KAAM,sBAGdK,cAAe,wBACfC,aAAc,2B","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/plugin.js"],"sourcesContent":["PluginRegistry.add('route', [\n {\n 'url': '/repository',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'LocationsAndRepositoriesCtrl',\n 'templateUrl': 'pages/repositories.html',\n 'title': 'menu.repositories.label',\n 'helpInfo': 'view.repositories.helpInfo',\n 'documentationUrl': 'creating-a-repository.html',\n 'allowAuthorities': ['READ_REPO_{repoId}', 'READ_REPO_{repoId}:GRAPHQL'],\n }, {\n 'url': '/repository/create',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'ChooseRepositoryCtrl',\n 'templateUrl': 'pages/choose-repository-type.html',\n 'title': 'view.choose.repo.title',\n 'allowAuthorities': ['READ_REPO_{repoId}'],\n }, {\n 'url': '/repository/create/:repositoryType',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'AddRepositoryCtrl',\n 'templateUrl': 'pages/repository.html',\n 'title': 'Create Repository',\n 'allowAuthorities': ['READ_REPO_{repoId}'],\n }, {\n 'url': '/repository/edit/:repositoryId',\n 'module': 'graphdb.framework.repositories',\n 'path': 'repositories/app',\n 'chunk': 'repositories',\n 'controller': 'EditRepositoryCtrl',\n 'templateUrl': 'pages/repository.html',\n 'title': 'Edit Repository',\n 'allowAuthorities': ['READ_REPO_{repoId}'],\n },\n]);\n\nPluginRegistry.add('main.menu', {\n 'items': [\n {\n label: 'Repositories',\n labelKey: 'menu.repositories.label',\n href: 'repository',\n order: 1,\n role: 'ROLE_MANAGE_REPO',\n parent: 'Setup',\n children: [\n {\n href: 'repository/create',\n children: [\n {\n href: 'repository/create/*',\n },\n ],\n },\n {\n href: 'repository/edit/*',\n },\n ],\n guideSelector: 'sub-menu-repositories',\n testSelector: 'sub-menu-repositories',\n }],\n});\n"],"names":["PluginRegistry","add","label","labelKey","href","order","role","parent","children","guideSelector","testSelector"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const __webpack_esm_id__=44906;export const __webpack_esm_ids__=[44906,62062,67262,81417,83196];export const __webpack_esm_modules__={67262(e,o,t){var r=t(81417);angular.module("graphdb.framework.core.directives.validate-url",[]).directive("validateUrl",function(){return{restrict:"A",require:"ngModel",link:function(e,o,t,n){n.$validators.validUrl=function(e,o){if(n.$isEmpty(o))return"false"!==t.allowEmpty;if(!r.r.isValidUrl(o))return!1;if(t.exclude&&!r.r.doesNotContain(o,t.exclude))return!1;if(t.excludeProtocol){const e=t.excludeProtocol.split(",");if(!r.r.doesNotUseProtocol(o,e))return!1}return!0}}}})},44906(e,o,t){t.d(o,{W:()=>l});var r=t(83196),n=t(41767),i=(t(62062),t(62831)),a=t(57154),s=t(82385);const c=1e4,l=function(e){let o=e.lastIndexOf("/");-1===o&&(o=e.lastIndexOf("\\"));let t=e;return-1!==o&&(t=t.substring(o+1)),t},p=function(e){e&&Object.keys(e).forEach(o=>{const t=e[o];if(t&&"string"==typeof t.value){const r=parseFloat(e[o].value);!isNaN(r)&&u[o]&&(e[o].value=Number.isInteger(r)?parseInt(t.value,10):r,t.isNumber=!0)}})},d=function(){const e=document.getElementById("shaclOptions");if(e){const o=e.getAttribute("aria-expanded");if(o&&"true"===o)return"ri-arrow-down-s-line"}return"ri-arrow-right-s-line"},u={queryLimitResults:"invalid.query.limit",queryTimeout:"invalid.query.timeout",validationResultsLimitTotal:"invalid.validation.results.limit.total",validationResultsLimitPerConstraint:"invalid.validation.results.limit.per.constraint",joinWorkerThreads:"invalid.join.worker.threads",leftJoinWorkerThreads:"invalid.left.join.worker.threads",unionWorkerThreads:"invalid.union.worker.threads",boundJoinBlockSize:"invalid.bound.join.block.size",entityIndexSize:"invalid.entity.index.size"},f=function(e,o){if(!e)return"";const t=Object.keys(e).find(o=>{const t=e[o];return t.isNumber&&!r.nj.test(t.value)});return t&&u[t]?o.instant(u[t]):""},m=function(e){return`https://graphdb.ontotext.com/documentation/${e.productShortVersion}`},y=function(e){return e.getLocations().then(e=>e.filter(e=>e.isGraphDBLocation()&&!e.errorMsg&&!e.degradedReason))};function g(e,o,t,s,c,l,p,d,u,f,m){const y=(0,a.service)(a.GuidesService),g=(0,a.service)(a.AuthorizationService);e.RemoteLocationType=i.Il,e.loader=!0,e.locations=[],e.isLocationInactive=function(o){return!o.active||!e.hasActiveLocation()};const h=m.defer();function v(){return c.getLocations(h).then(o=>(e.locations=o,o)).finally(()=>e.loader=!1)}e.getLocalLocation=(o,t)=>{const r=e.locations.filter(e=>{let r=!0;return t&&(r=e.locationType===t),r&&e.local===o});return e.isRepoManager()?r:r.filter(o=>e.getRepositoriesFromLocation(o.uri)?.length>0)},e.hasAnyRemoteLocation=(o,t)=>t.some(t=>e.getLocalLocation(o,t).length>0),e.hasActiveLocation=function(){return c.hasActiveLocation()},e.getActiveLocation=function(){return c.getActiveLocation()},e.getLocationError=function(){return c.getLocationError()},e.getDegradedReason=function(){return c.getDegradedReason()},e.getRepositories=function(){return c.getRepositories()},e.isRepoActive=function(e){return c.isRepoActive(e)},e.deleteLocation=function(o){l.openSimpleModal({title:f.instant("location.confirm.detach"),message:f.instant("location.confirm.detach.warning",{uri:o}),warning:!0}).result.then(function(){e.loader=!0,c.deleteLocation(o).finally(()=>v())})},e.addLocationHttp=function(o){e.loader=!0,p.addLocation(o).success(function(){c.init()}).error(function(e){const o=getError(e);s.error(o,f.instant("common.error"))}).finally(()=>v())},e.addLocation=()=>{e.openRemoteLocationDialog()},e.editLocation=o=>{void 0===o.locationType&&(o.locationType=i.Il.GRAPH_DB),e.openRemoteLocationDialog(o)},e.openRemoteLocationDialog=o=>{t.open({templateUrl:"js/angular/repositories/templates/manage-remote-location-dialog.template.html",windowClass:"addLocationDialog",controller:"ManageRemoteLocationDialogController",resolve:{data:()=>({remoteLocation:o})}}).result.then(t=>{o?e.editLocationHttp(t):e.addLocationHttp(t)})},e.editLocationHttp=function(o){e.loader=!0,p.editLocation(o).success(function(){c.init()}).error(function(e){const o=getError(e);s.error(o,f.instant("common.error"))}).finally(()=>v())},e.setRepository=function(e){c.setRepository(e)},e.deleteRepository=function(o){l.openSimpleModal({title:f.instant("common.confirm.delete"),message:(0,n.Gz)(f.instant("delete.repo.warning.msg",{repositoryId:o.id})),warning:!0}).result.then(function(){e.loader=!0,c.deleteRepository(o).finally(()=>{v(),e.loader=!1}),function(e){const o=`dependencies-selectedGraph-${e.id}`,t=`classHierarchy-selectedGraph-${e.id}`;angular.forEach(d.keys(),function(e){(e.startsWith(t)||e.startsWith(o))&&d.remove(e)})}(o)})},e.restartRepository=function(o){l.openSimpleModal({title:f.instant("confirm.restart.repo"),message:(0,n.Gz)(f.instant("confirm.restart.repo.warning.msg",{repositoryId:o.id})),warning:!0}).result.then(function(){e.loader=!0,c.restartRepository(o).finally(()=>v())})},e.toggleDefaultRepository=function(o){e.getDefaultRepository()===o?c.setDefaultRepository(null):c.setDefaultRepository(o)},e.getDefaultRepository=function(){return c.getDefaultRepository()},e.getRepositoryDownloadLink=function(e){let o=`rest/repositories/${e.id}${e.type===r.VH.ontop?"/download-zip":"/download-ttl"}?location=${e.location}`;const t=(0,a.service)(a.AuthenticationStorageService).getAuthToken().getValue();return t&&(o=`${o}&authToken=${encodeURIComponent(t)}`),o},e.copyToClipboard=function(e){l.openCopyToClipboardModal(e)},e.fromFile=function(){t.open({templateUrl:"js/angular/templates/modal/upload-repository-config.html",controller:"UploadRepositoryConfigCtrl"}).result.then(function(){c.init()})},e.openActiveLocationSettings=function(){t.open({templateUrl:"js/angular/settings/modal/location-settings.html",controller:"ActiveLocationSettingsCtrl"})},v();const R=u(function(){y.isActive()&&!o.guidePaused||(c.initQuick(),v())},5e3);e.$on("$destroy",function(){u.cancel(R),h&&h.resolve()}),e.getRepositoriesFromLocation=function(o){const t=c.getRepositoriesFromLocation(o)||[];return e.isRepoManager()?t:t.filter(e=>g.canReadRepo(e)||g.canReadGqlRepo(e))},e.isRepoManager=()=>g.isRepoManager(),e.canManageRepo=e=>g.canManageRepo(e)}function h(e,o,t,r,n){e.upload=function(o){o&&o.length&&(e.uploadFile=o[0])},e.ok=function(){e.uploadFile&&(e.uploadFileLoader=!0,t.upload({url:"rest/repositories",method:"POST",data:{config:e.uploadFile}}).success(function(){e.uploadFileLoader=!1,o.close()}).error(function(o){const t=getError(o);r.error(t,n.instant("common.error")),e.uploadFileLoader=!1}))},e.cancel=function(){o.dismiss("cancel")}}function v(e,o,t,r,n){e.newLocation={uri:"",authType:"none",username:"",password:"",active:!1},e.docBase=m(r),e.isValidLocation=function(){return(e.newLocation.uri.length<6||0===e.newLocation.uri.indexOf("http:")||0===e.newLocation.uri.indexOf("https:"))&&e.newLocation.uri.indexOf("/repositories")<=-1},e.ok=function(){e.newLocation?o.close(e.newLocation):t.error(n.instant("location.cannot.be.empty.error"))},e.cancel=function(){o.dismiss("cancel")}}function R(e,o,t,r){e.editedLocation=_.cloneDeep(t),e.docBase=m(r),e.ok=function(){o.close(e.editedLocation)},e.cancel=function(){o.dismiss("cancel")}}function I(e,o){e.repositoryTypes=r.VH,e.chooseRepositoryType=function(e){o.path(`${o.path()}/${e}`)}}function L(e,o,t,n,i,a,l,u,m,g,h){function v(e){switch(e){case r.VH.graphdbRepo:o.pageTitle=g.instant("view.create.repo.title",{repoType:"GraphDB"});break;case r.VH.ontop:o.pageTitle=g.instant("view.create.repo.title",{repoType:"Ontop Virtual SPARQL"});break;case r.VH.fedx:o.pageTitle=g.instant("view.create.repo.title",{repoType:"FedX Virtual SPARQL"})}}var R;o.rulesets=r.Ds.slice(),o.repositoryTypes=r.VH,o.params=u,o.repositoryType=u.repositoryType,o.enable=!0,o.entityIndexSizeMin=c,o.documentationUrlForStorageEncryption=s.m.getDocumentationUrl(h.productShortVersion,"creating-a-repository.html#using-workbench"),o.encryptInput={hovered:!1},o.loader=!0,o.pageTitle=g.instant("view.create.repo.title"),o.repositoryInfo={id:"",params:{},title:"",type:"",location:""},y(n).then(e=>{o.locations=e}),o.changedLocation=function(){o.$broadcast("changedLocation")},o.getConfig=function(e){m.getRepositoryConfiguration(e).then(function(e){const t=e.data;var r;o.repositoryInfo.params=t.params,o.repositoryInfo.type=t.type,p(o.repositoryInfo.params),(r=o.repositoryInfo.params)&&r.member&&(r.member.value=[]),o.loader=!1,a(function(){angular.element(document).find("#id").focus()},50)}).catch(function(e){const r=getError(e);t.error(r,g.instant("common.error")),o.loader=!1})},o.repositoryType&&(function(e){return o.isEnterprise()&&e===r.VH.graphdbRepo}(R=o.repositoryType)||function(e){return!o.isFreeEdition()&&!o.isEnterprise()&&e===r.VH.graphdbRepo}(R)||function(e){return o.isFreeEdition()&&e===r.VH.graphdbRepo}(R)||function(e){return e===r.VH.ontop}(R)||function(e){return e===r.VH.fedx}(R))?(o.repositoryInfo.type=o.repositoryType,o.getConfig(o.repositoryType),v(o.repositoryType)):i.path("/repository/create"),o.hasActiveLocation=function(){return n.hasActiveLocation()},o.activeLocation=function(){return n.getActiveLocation()};let I=!1;o.uploadRuleset=function(e){e&&e.length&&(o.uploadFile=e[0],o.uploadFileLoader=!0,l.upload({url:"rest/repositories/ruleset/upload",data:{ruleset:o.uploadFile,location:o.repositoryInfo.location}}).progress(function(e){}).success(function(e){if(e.success){I=!1;const t=o.uploadFile.name,r={id:e.fileLocation,name:"Custom: "+t};o.rulesetPie?o.rulesets[0]=r:o.rulesets.unshift(r),o.rulesetPie=e.fileLocation,o.rulesetPieFile=t,o.repositoryInfo.params.ruleset.value=o.rulesetPie}else t.error(e.errorMessage),I=!0,o.uploadFile="";o.uploadFileLoader=!1}).error(function(e){const r=getError(e);t.error(r,g.instant("common.error")),o.uploadFile="",o.uploadFileLoader=!1,I=!0}))},o.noMembersError=function(){t.error(g.instant("fedx.create.repo.no.members.warning"))},o.goBackToPreviousLocation=function(){const e=i.search().previous;if(e){i.search("previous",null);const o="string"==typeof e&&"/"===e.charAt(0)?e:"/"+e;i.url(o)}else i.path("/repository")},o.createRepoHttp=function(){o.loader=!0,m.createRepository(o.repositoryInfo).then(function(){return t.success(g.instant("created.repo.success.msg",{repoId:o.repositoryInfo.id})),n.init()}).then(()=>o.goBackToPreviousLocation()).catch(function(e){const o=getError(e.data);t.error(o,g.instant("common.error"))}).finally(()=>{o.loader=!1})},o.createRepo=function(){if(!o.repositoryInfo.id)return void t.error(g.instant("empty.repoid.warning"));o.isInvalidRepoName=!r.vH.test(o.repositoryInfo.id),o.isInvalidEntityIndexSizeMin=o.repositoryInfo.params.entityIndexSize?.value<c;const e=f(o.repositoryInfo.params,g);I?t.error(g.instant("invalid.ruleset.file.error")):o.isInvalidRepoName?t.error(g.instant("wrong.repo.name.error")):"fedx"===o.repositoryType&&0===o.repositoryInfo.params.member.value.length?o.noMembersError():e?t.error(e):o.isInvalidEntityIndexSizeMin?t.error(g.instant("repo.error.entityIndex.min")):o.createRepoHttp()},o.rulesetWarning=function(){const e=o.repositoryInfo.params;return void 0===e||void 0===e.ruleset||void 0===e.disableSameAs?"":0===e.ruleset.value.indexOf("owl")&&"true"===e.disableSameAs.value?g.instant("repoTooltips.rulesetWarnings.needsSameAs"):0===e.ruleset.value.indexOf("rdfs")&&"false"===e.disableSameAs.value?g.instant("repoTooltips.rulesetWarnings.doesntNeedSameAs"):e.ruleset.value===o.rulesetPie?g.instant("repoTooltips.rulesetWarnings.customRuleset"):""},o.getShaclOptionsClass=function(){return d()},o.autofocusId="autofocus";const L=e.$on("$translateChangeSuccess",()=>{v(o.repositoryType)});o.$on("$destroy",()=>{L()})}function $(e,o,t,r,n,i,a,s){e.dialogTitle=a||i.instant("update.file.content.header"),r&&t.getRepositoryFileContent(r,s).success(function(o){e.fileContent=o}).error(function(e){const o=getError(e);n.error(o,i.instant("common.error"))}),e.ok=function(){o.close({content:e.fileContent,fileLocation:r})},e.cancel=function(){o.dismiss("cancel")}}function w(e,o,t,i,a,s,u,m,g,h){o.rulesets=r.Ds.slice(),o.repositoryTypes=r.VH,o.entityIndexSizeMin=c,o.editRepoPage=!0,o.canEditRepoId=!1,o.isRepoInCluster=!0,o.params=t,o.loader=!0,o.repositoryInfo={},o.repositoryInfo.id=o.params.repositoryId,o.repositoryInfo.location=o.params.location,o.repositoryInfo.restartRequested=!1,o.repositoryType="",o.saveRepoId=o.params.repositoryId,o.pageTitle=g.instant("view.edit.repo.title",{repositoryId:o.params.repositoryId}),o.hasActiveLocation=function(){return a.hasActiveLocation()},o.$watch(o.hasActiveLocation,function(){if(o.hasActiveLocation){let e;y(a).then(e=>(o.locations=e,m.getRepository(o.repositoryInfo))).then(t=>(e=t,h.monitorActiveOperations(o.repositoryInfo.id))).then(e=>{o.isRepoInCluster=e.hasClusterOperation()}).catch(t=>e?Promise.resolve():(o.repositoryInfo=void 0,Promise.reject(t))).then(()=>{(e=>{const t=e.data;if(angular.isDefined(t.params.ruleset)){let e=!1;if(angular.forEach(o.rulesets,function(o){o.id===t.params.ruleset.value&&(e=!0)}),t.params.ruleset&&!e){const e=l(t.params.ruleset.value);o.rulesets.unshift({id:t.params.ruleset.value,name:"Custom: "+e})}}o.repositoryInfo=t,o.setRepositoryType(t.type),p(o.repositoryInfo.params),o.repositoryInfo.saveId=o.saveRepoId,o.loader=!1})(e)}).catch(e=>{const r=e.data,a=e.status,c=t.repositoryId;let l;l=404===a&&"system"!==c?(0,n.Gz)(g.instant("edit.repo.error.not.exists",{repositoryId:c})):404===a&&"system"===c?(0,n.Gz)(g.instant("edit.system.repo.warning")):getError(r),i.error(l,g.instant("common.error"),{allowHtml:!0}),404===a?setTimeout(function(){o.loader=!1,s.path("repository")},1e3):o.loader=!1})}}),o.setRepositoryType=function(e){o.repositoryType=e},o.noMembersError=function(){i.error(g.instant("fedx.create.repo.no.members.warning"))},o.editRepoHttp=function(){o.loader=!0,m.editRepository(o.repositoryInfo.saveId,o.repositoryInfo).success(function(){i.success(g.instant("edit.repo.success.msg",{saveId:o.repositoryInfo.saveId})),a.init().finally(()=>o.goBackToPreviousLocation()),o.repositoryInfo.saveId===o.repositoryInfo.id&&o.repositoryInfo.restartRequested&&a.restartRepository(o.repositoryInfo)}).error(function(e){const t=getError(e);i.error(t,g.instant("common.error")),o.loader=!1})},o.editRepository=function(){o.isInvalidRepoName=!r.vH.test(o.repositoryInfo.id),o.isInvalidEntityIndexSizeMin=o.repositoryInfo.params.entityIndexSize?.value<c;const e=f(o.repositoryInfo.params,g);let t=(0,n.Gz)(g.instant("edit.repo.save.changes.msg",{repoId:o.repositoryInfo.id}));o.repositoryInfo.saveId!==o.repositoryInfo.id?t+=(0,n.Gz)(g.instant("edit.repo.rename.changes.msg")):o.repositoryInfo.restartRequested?t+=(0,n.Gz)(g.instant("edit.repo.restart.requested.msg")):t+=(0,n.Gz)(g.instant("edit.repo.restart.needed.msg")),o.isInvalidRepoName?i.error(g.instant("wrong.repo.name.error")):"fedx"===o.repositoryType&&0===o.repositoryInfo.params.member.value.length?o.noMembersError():e?i.error(e):o.isInvalidEntityIndexSizeMin?i.error(g.instant("repo.error.entityIndex.min")):u.openSimpleModal({title:g.instant("common.confirm.save"),message:t,warning:!0}).result.then(function(){o.editRepoHttp()})},o.editRepositoryId=function(){const e=(0,n.Gz)(g.instant("edit.repo.id.warning.msg"));u.openSimpleModal({title:g.instant("confirm.enable.edit"),message:e,warning:!0}).result.then(function(){o.canEditRepoId=!0})},o.goBackToPreviousLocation=function(){angular.isDefined(t.previous)?(delete s.$$search.previous,s.path("/")):s.path("/repository")},o.getShaclOptionsClass=function(){return d()};const v=e.$on("$translateChangeSuccess",()=>{o.pageTitle=g.instant("view.edit.repo.title",{repositoryId:o.params.repositoryId})});o.$on("$destroy",()=>{v()})}angular.module("graphdb.framework.repositories.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.utils.localstorageadapter","toastr","ngFileUpload","graphdb.framework.repositories.controllers.manage-remote-location-dialog"]).controller("LocationsAndRepositoriesCtrl",g).controller("AddLocationCtrl",v).controller("EditLocationCtrl",R).controller("ChooseRepositoryCtrl",I).controller("AddRepositoryCtrl",L).controller("EditRepositoryCtrl",w).controller("EditRepositoryFileCtrl",$).controller("UploadRepositoryConfigCtrl",h),g.$inject=["$scope","$rootScope","$uibModal","toastr","$repositories","ModalService","LocationsRestService","LocalStorageAdapter","$interval","$translate","$q"],h.$inject=["$scope","$uibModalInstance","Upload","toastr","$translate"],v.$inject=["$scope","$uibModalInstance","toastr","productInfo","$translate"],R.$inject=["$scope","$uibModalInstance","location","productInfo"],I.$inject=["$scope","$location"],L.$inject=["$rootScope","$scope","toastr","$repositories","$location","$timeout","Upload","$routeParams","RepositoriesRestService","$translate","productInfo"],$.$inject=["$scope","$uibModalInstance","RepositoriesRestService","file","toastr","$translate","dialogTitle","location"],w.$inject=["$rootScope","$scope","$routeParams","toastr","$repositories","$location","ModalService","RepositoriesRestService","$translate","MonitoringRestService"]},62062(e,o,t){var r=t(62831);function n(e,o,t,n){e.remoteLocation=n.remoteLocation?new r.TP({...n.remoteLocation}):new r.TP,e.RemoteLocationType=r.Il,e.RemoteLocationAuthType=r.Qk,e.isEdit=!!n.remoteLocation,e.docBase=`https://graphdb.ontotext.com/documentation/${t.productShortVersion}`,e.ok=()=>{e.remoteLocationForm.$pristine||e.remoteLocationForm.$invalid||o.close(e.remoteLocation)},e.cancel=()=>{o.dismiss("cancel")},e.onLocationTypeChanged=()=>{[r.Il.ONTOPIC,r.Il.SPARQL].includes(e.remoteLocation.locationType)?e.remoteLocation.authType=r.Qk.BASIC:e.remoteLocation.authType=r.Qk.NONE}}t(67262),angular.module("graphdb.framework.repositories.controllers.manage-remote-location-dialog",["graphdb.framework.core.directives.validate-url"]).controller("ManageRemoteLocationDialogController",n),n.$inject=["$scope","$uibModalInstance","productInfo","data"]},83196(e,o,t){t.d(o,{Ds:()=>r,VH:()=>n,nj:()=>a,vH:()=>i});const r=[{id:"empty",name:"No inference"},{id:"rdfs-optimized",name:"RDFS (Optimized)"},{id:"rdfs",name:"RDFS"},{id:"rdfsplus-optimized",name:"RDFS-Plus (Optimized)"},{id:"owl-horst-optimized",name:"OWL-Horst (Optimized)"},{id:"owl-horst",name:"OWL-Horst"},{id:"owl2-ql-optimized",name:"OWL2-QL (Optimized)"},{id:"owl2-ql",name:"OWL2-QL"},{id:"owl-max-optimized",name:"OWL-Max (Optimized)"},{id:"owl-max",name:"OWL-Max"},{id:"owl2-rl-optimized",name:"OWL2-RL (Optimized)"},{id:"owl2-rl",name:"OWL2-RL"}],n={graphdbRepo:"graphdb",free:"free",eeWorker:"worker",eeMaster:"master",ontop:"ontop",se:"se",fedx:"fedx"},i=new RegExp("^[a-zA-Z0-9-_]+$"),a=new RegExp("^[0-9]+$")},81417(e,o,t){t.d(o,{r:()=>i});const r=/^(h|ht|htt|http|https|http:|https:|http:\/|https:\/|http:\/\/|https:\/\/|https?:\/\/[\S]*)$/i,n=/^(f|ft|ftp|ftps|ftp:|ftps:|ftp:\/|ftps:\/|ftp:\/\/|ftps:\/\/[\S]*)$/i;class i{static isValidUrl(e){return r.test(e)||n.test(e)}static doesNotContain(e,o){return!new RegExp(o).test(e)}static doesNotUseProtocol(e,o){return!new RegExp("^("+o.join("|")+")://","i").test(e)}}}};
|
|
2
|
+
//# sourceMappingURL=44906.3d40209be900c399a67d.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"44906.3d40209be900c399a67d.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/validate-url.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/controllers.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/controllers/manage-remote-location-dialog.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/repositories/repository.constants.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/utils/url-utils.js"],"sourcesContent":["/**\n * @ngdoc directive\n * @name validateUrl\n * @module graphdb.framework.core.directives.validate-url\n * @restrict A\n *\n * @description\n * This directive validates the URL input field based on a specified pattern.\n * It ensures that the input URL adheres to standard URL formats and provides\n * visual feedback to the user if the URL is invalid.\n *\n * The directive can also be configured to exclude certain substrings or protocols from valid URLs,\n * and to control whether empty input values are considered valid.\n *\n * @example\n * <pre>\n * <form name=\"myForm\">\n * <!-- Basic URL validation -->\n * <input type=\"text\" name=\"urlField\" ng-model=\"url\" validate-url/>\n * <div ng-show=\"myForm.urlField.$error.validUrl\">\n * Invalid URL format.\n * </div>\n *\n * <!-- URL validation excluding a specific substring -->\n * <input type=\"text\" name=\"urlFieldWithExclusion\" ng-model=\"url\" validate-url exclude=\"/repositories\"/>\n * <div ng-show=\"myForm.urlFieldWithExclusion.$error.validUrl\">\n * Invalid URL format or contains excluded substring.\n * </div>\n *\n * <!-- URL validation excluding a specific protocol -->\n * <input type=\"text\" name=\"urlFieldWithProtocolExclusion\" ng-model=\"url\" validate-url exclude-protocol=\"ftp\"/>\n * <div ng-show=\"myForm.urlFieldWithProtocolExclusion.$error.validUrl\">\n * Invalid URL format or uses an excluded protocol.\n * </div>\n *\n * <!-- URL validation that does not allow empty values -->\n * <input type=\"text\" name=\"urlFieldNoEmpty\" ng-model=\"url\" validate-url allow-empty=\"false\"/>\n * <div ng-show=\"myForm.urlFieldNoEmpty.$error.validUrl\">\n * Invalid URL format or empty value not allowed.\n * </div>\n *\n * <!-- URL validation with both substring and protocol exclusions, and empty values not allowed -->\n * <input type=\"text\" name=\"urlFieldFullValidation\" ng-model=\"url\" validate-url exclude=\"/repositories\" exclude-protocol=\"ftp\" allow-empty=\"false\"/>\n * <div ng-show=\"myForm.urlFieldFullValidation.$error.validUrl\">\n * Invalid URL format, contains excluded substring, uses an excluded protocol, or empty value not allowed.\n * </div>\n * </form>\n * </pre>\n *\n * @usage\n * This directive can be added as an attribute to any input field where URL validation is required.\n * It will automatically validate the input value.\n *\n * Optional attributes:\n * - `exclude`: A string specifying a substring that must not be present in the URL.\n * - `exclude-protocol`: A comma-separated list of protocols (e.g., `ftp,http`) that must not be used in the URL.\n * - `allow-empty`: A boolean attribute (`true` by default). If set to `false`, empty values are considered invalid.\n */\n\nimport {UrlUtils} from \"../../utils/url-utils\";\n\nconst modules = [];\n\nangular\n .module('graphdb.framework.core.directives.validate-url', modules)\n .directive('validateUrl', validateUrl);\n\nfunction validateUrl() {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$validators.validUrl = function (modelValue, viewValue) {\n // Check if empty values should be allowed\n if (ctrl.$isEmpty(viewValue)) {\n return attr.allowEmpty !== 'false';\n }\n\n if (!UrlUtils.isValidUrl(viewValue)) {\n return false;\n }\n\n if (attr.exclude && !UrlUtils.doesNotContain(viewValue, attr.exclude)) {\n return false;\n }\n\n if (attr.excludeProtocol) {\n const excludedProtocols = attr.excludeProtocol.split(',');\n if (!UrlUtils.doesNotUseProtocol(viewValue, excludedProtocols)) {\n return false;\n }\n }\n return true;\n };\n }\n };\n}\n","import {\n FILENAME_PATTERN,\n NUMBER_PATTERN,\n REPOSITORY_TYPES,\n STATIC_RULESETS,\n} from \"./repository.constants\";\nimport {decodeHTML} from \"../../../app\";\nimport './controllers/manage-remote-location-dialog.controller';\nimport {RemoteLocationType} from \"../models/repository/remote-location.model\";\nimport {\n service,\n AuthenticationStorageService,\n AuthorizationService,\n GuidesService,\n} from '@ontotext/workbench-api';\nimport {DocumentationUrlResolver} from \"../utils/documentation-url-resolver\";\n\nconst ENTITY_INDEX_SIZE_MIN = 10000;\n\nexport const getFileName = function(path) {\n let lastIdx = path.lastIndexOf('/');\n if (lastIdx === -1) {\n lastIdx = path.lastIndexOf('\\\\');\n }\n let name = path;\n if (lastIdx !== -1) {\n name = name.substring(lastIdx + 1);\n }\n return name;\n};\n\nconst parseNumberParamsIfNeeded = function(params) {\n if (!params) {\n return;\n }\n\n Object.keys(params).forEach((key) => {\n const param = params[key];\n if (param && typeof param.value === 'string') {\n const possibleNumber = parseFloat(params[key].value);\n if (!isNaN(possibleNumber) && numberParamToErrorKey[key]) {\n params[key].value = Number.isInteger(possibleNumber) ? parseInt(param.value, 10) : possibleNumber;\n // internal prop to indicate number value and save extra checks\n param.isNumber = true;\n }\n }\n });\n};\n\nconst parseMemberParamIfNeeded = function(param) {\n if (param && param.member) {\n param.member.value = [];\n }\n};\n\nconst getShaclOptionsClass = function() {\n const optionsModule = document.getElementById('shaclOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'ri-arrow-down-s-line';\n }\n }\n return 'ri-arrow-right-s-line';\n};\n\nconst numberParamToErrorKey = {\n queryLimitResults: 'invalid.query.limit',\n queryTimeout: 'invalid.query.timeout',\n validationResultsLimitTotal: 'invalid.validation.results.limit.total',\n validationResultsLimitPerConstraint: 'invalid.validation.results.limit.per.constraint',\n joinWorkerThreads: 'invalid.join.worker.threads',\n leftJoinWorkerThreads: 'invalid.left.join.worker.threads',\n unionWorkerThreads: 'invalid.union.worker.threads',\n boundJoinBlockSize: 'invalid.bound.join.block.size',\n entityIndexSize: 'invalid.entity.index.size',\n};\n\nconst getNumberFormatError = function(params, $translate) {\n if (!params) {\n return '';\n }\n\n const errorEntry = Object.keys(params).find((key) => {\n const param = params[key];\n return param.isNumber && !NUMBER_PATTERN.test(param.value);\n });\n\n return errorEntry && numberParamToErrorKey[errorEntry]\n ? $translate.instant(numberParamToErrorKey[errorEntry])\n : '';\n};\n\nconst getDocBase = function(productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n};\nconst filterLocations = function(result) {\n return result.filter((location) => location.isGraphDBLocation() && !location.errorMsg && !location.degradedReason);\n};\n\n/**\n * Gets the remote locations that are error free, without degraded reason and is not of type Ontopic\n * @param {*} $repositories the repositories service\n * @return {[] | Promise} returns the locations as array or a promise of the array\n */\nconst getFilteredLocations = function($repositories) {\n // Don't allow the user to create repository on location with error or degradeded reason\n return $repositories.getLocations().then((locations) => filterLocations(locations));\n};\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter',\n 'toastr',\n 'ngFileUpload',\n 'graphdb.framework.repositories.controllers.manage-remote-location-dialog',\n];\n\nangular.module('graphdb.framework.repositories.controllers', modules)\n .controller('LocationsAndRepositoriesCtrl', LocationsAndRepositoriesCtrl)\n .controller('AddLocationCtrl', AddLocationCtrl)\n .controller('EditLocationCtrl', EditLocationCtrl)\n .controller('ChooseRepositoryCtrl', ChooseRepositoryCtrl)\n .controller('AddRepositoryCtrl', AddRepositoryCtrl)\n .controller('EditRepositoryCtrl', EditRepositoryCtrl)\n .controller('EditRepositoryFileCtrl', EditRepositoryFileCtrl)\n .controller('UploadRepositoryConfigCtrl', UploadRepositoryConfigCtrl);\n\nLocationsAndRepositoriesCtrl.$inject = ['$scope', '$rootScope', '$uibModal', 'toastr', '$repositories', 'ModalService', 'LocationsRestService',\n 'LocalStorageAdapter', '$interval', '$translate', '$q'];\n\nfunction LocationsAndRepositoriesCtrl($scope, $rootScope, $uibModal, toastr, $repositories, ModalService, LocationsRestService, // NOSONAR\n LocalStorageAdapter, $interval, $translate, $q) {\n const guidesService = service(GuidesService);\n const authorizationService = service(AuthorizationService);\n $scope.RemoteLocationType = RemoteLocationType;\n $scope.loader = true;\n /**\n * @type {RemoteLocationModel[]}\n */\n $scope.locations = [];\n\n $scope.isLocationInactive = function(location) {\n return !location.active || !$scope.hasActiveLocation();\n };\n\n const getLocationsAbortRequestPromise = $q.defer();\n //Get locations\n function getLocations() {\n return $repositories.getLocations(getLocationsAbortRequestPromise)\n .then((locations) => {\n $scope.locations = locations;\n return locations;\n })\n .finally(() => $scope.loader = false);\n }\n\n $scope.getLocalLocation = (local, locationType) => {\n const remoteLocationModel = $scope.locations.filter((location) => {\n let locationTypeCheck = true;\n if (locationType) {\n locationTypeCheck = location.locationType === locationType;\n }\n return locationTypeCheck && location.local === local;\n });\n\n // Repository managers can access all locations.\n if ($scope.isRepoManager()) {\n return remoteLocationModel;\n }\n\n // Users without the repository manager role can access only locations where they have\n // repository-specific management permission for at least one repository.\n return remoteLocationModel.filter((location) => $scope.getRepositoriesFromLocation(location.uri)?.length > 0);\n };\n\n $scope.hasAnyRemoteLocation = (local, locationTypes) => {\n return locationTypes.some((locationType) => $scope.getLocalLocation(local, locationType).length > 0);\n };\n\n $scope.hasActiveLocation = function() {\n return $repositories.hasActiveLocation();\n };\n\n $scope.getActiveLocation = function() {\n return $repositories.getActiveLocation();\n };\n\n $scope.getLocationError = function() {\n return $repositories.getLocationError();\n };\n\n $scope.getDegradedReason = function() {\n return $repositories.getDegradedReason();\n };\n\n $scope.getRepositories = function() {\n return $repositories.getRepositories();\n };\n\n $scope.isRepoActive = function(repo) {\n return $repositories.isRepoActive(repo);\n };\n\n //Delete location\n $scope.deleteLocation = function(uri) {\n ModalService.openSimpleModal({\n title: $translate.instant('location.confirm.detach'),\n message: $translate.instant('location.confirm.detach.warning', {uri: uri}),\n warning: true,\n }).result\n .then(function() {\n $scope.loader = true;\n $repositories.deleteLocation(uri).finally(() => getLocations());\n });\n };\n\n //Add new location\n $scope.addLocationHttp = function(dataAddLocation) {\n $scope.loader = true;\n LocationsRestService.addLocation(dataAddLocation)\n .success(function() {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n $scope.addLocation = () => {\n $scope.openRemoteLocationDialog();\n };\n\n $scope.editLocation = (remoteLocation) => {\n if (remoteLocation.locationType === undefined) {\n // for backward compatibility. The old instances this property not exist so we assume it is GraphDB instance.\n remoteLocation.locationType = RemoteLocationType.GRAPH_DB;\n }\n $scope.openRemoteLocationDialog(remoteLocation);\n };\n\n /**\n * Opens the location dialog.\n * @param {RemoteLocationModel} remoteLocation (optional) If a location is passed, the dialog will open for editing; otherwise, it will open for registering a new one.\n */\n $scope.openRemoteLocationDialog = (remoteLocation) => {\n $uibModal.open({\n templateUrl: 'js/angular/repositories/templates/manage-remote-location-dialog.template.html',\n windowClass: 'addLocationDialog',\n controller: 'ManageRemoteLocationDialogController',\n resolve: {\n data: () => {\n return {\n remoteLocation,\n };\n },\n },\n }).result.then((dataAddLocation) => {\n if (remoteLocation) {\n $scope.editLocationHttp(dataAddLocation);\n } else {\n $scope.addLocationHttp(dataAddLocation);\n }\n });\n };\n\n //Edit location\n $scope.editLocationHttp = function(dataEditLocation) {\n $scope.loader = true;\n LocationsRestService.editLocation(dataEditLocation)\n .success(function() {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n //Change repository\n $scope.setRepository = function(repo) {\n $repositories.setRepository(repo);\n };\n\n //Delete repository\n $scope.deleteRepository = function(repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: decodeHTML($translate.instant('delete.repo.warning.msg', {repositoryId: repository.id})),\n warning: true,\n }).result\n .then(function() {\n $scope.loader = true;\n $repositories.deleteRepository(repository)\n .finally(() => {\n getLocations();\n $scope.loader = false;\n });\n removeCachedGraphsOnDelete(repository);\n });\n };\n\n $scope.restartRepository = function(repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.restart.repo'),\n message: decodeHTML($translate.instant('confirm.restart.repo.warning.msg', {repositoryId: repository.id})),\n warning: true,\n }).result\n .then(function() {\n $scope.loader = true;\n $repositories.restartRepository(repository).finally(() => getLocations());\n });\n };\n\n $scope.toggleDefaultRepository = function(repositoryId) {\n if ($scope.getDefaultRepository() === repositoryId) {\n // unset\n $repositories.setDefaultRepository(null);\n } else {\n // set\n $repositories.setDefaultRepository(repositoryId);\n }\n };\n\n $scope.getDefaultRepository = function() {\n return $repositories.getDefaultRepository();\n };\n\n /* Unused, data urls don't behave well in all browsers, avoid them when possible\n $scope.getRepoTurtleConfig = function (repository) {\n function downloadRepoConfig(repoTurtleConfig, repository) {\n $('.download-turtle-config')\n .mouseup(function () {\n $(this)\n .attr('href', repoTurtleConfig)\n .attr('download', repository.id + '-config.ttl')\n });\n }\n\n $repositories.getRepositoryTurtleConfig(repository)\n .success(function (response) {\n var repoTurtleConfigDownload = 'data:application/octet-stream;charset=utf-8;base64,'\n + btoa(unescape(encodeURIComponent(response)));\n downloadRepoConfig(repoTurtleConfigDownload, repository);\n })\n .error(function () {\n toastr.error('Error getting repository configuration for '' + repository.id + ''');\n });\n };\n */\n\n $scope.getRepositoryDownloadLink = function(repository) {\n let url = `rest/repositories/${repository.id}${(repository.type === REPOSITORY_TYPES.ontop ? '/download-zip'\n : '/download-ttl')}?location=${repository.location}`;\n const token = service(AuthenticationStorageService).getAuthToken().getValue();\n if (token) {\n url = `${url}&authToken=${encodeURIComponent(token)}`;\n }\n return url;\n };\n\n ///Copy to clipboard popover options\n $scope.copyToClipboard = function(uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.fromFile = function() {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/upload-repository-config.html',\n controller: 'UploadRepositoryConfigCtrl',\n });\n modalInstance.result.then(function() {\n $repositories.init();\n });\n };\n\n //Delete repository\n $scope.openActiveLocationSettings = function() {\n $uibModal.open({\n templateUrl: 'js/angular/settings/modal/location-settings.html',\n controller: 'ActiveLocationSettingsCtrl',\n });\n };\n\n getLocations();\n const timer = $interval(function() {\n if (guidesService.isActive() && !$rootScope.guidePaused) {\n // Don't refresh list while a guide is active\n return;\n }\n\n // Update repositories state\n $repositories.initQuick();\n getLocations();\n }, 5000);\n\n $scope.$on('$destroy', function() {\n $interval.cancel(timer);\n // If there is a getLocations request in progress, abort it so the service can properly clear flags\n if (getLocationsAbortRequestPromise) {\n getLocationsAbortRequestPromise.resolve();\n }\n });\n\n function removeCachedGraphsOnDelete(repo) {\n const cashedDependenciesGraphPrefix = `dependencies-selectedGraph-${repo.id}`;\n const cashedClassHierarchyGraphPrefix = `classHierarchy-selectedGraph-${repo.id}`;\n angular.forEach(LocalStorageAdapter.keys(), function(key) {\n // remove everything but the hide prefixes setting, it should always persist\n if (key.startsWith(cashedClassHierarchyGraphPrefix) || key.startsWith(cashedDependenciesGraphPrefix)) {\n LocalStorageAdapter.remove(key);\n }\n });\n }\n\n /**\n * Returns the repositories available in the specified location that the current user is allowed to access.\n *\n * @param {string} locationId The identifier of the location.\n * @returns {Array<Repository>} The repositories visible to the current user in the specified location.\n */\n $scope.getRepositoriesFromLocation = function(locationId) {\n const repositoriesFromLocation = $repositories.getRepositoriesFromLocation(locationId) || [];\n\n if ($scope.isRepoManager()) {\n return repositoriesFromLocation;\n }\n\n return repositoriesFromLocation.filter((repo) => authorizationService.canReadRepo(repo) || authorizationService.canReadGqlRepo(repo));\n };\n\n $scope.isRepoManager = () => {\n return authorizationService.isRepoManager();\n };\n\n $scope.canManageRepo = (repo) => {\n return authorizationService.canManageRepo(repo);\n };\n}\n\nUploadRepositoryConfigCtrl.$inject = ['$scope', '$uibModalInstance', 'Upload', 'toastr', '$translate'];\n\nfunction UploadRepositoryConfigCtrl($scope, $uibModalInstance, Upload, toastr, $translate) {\n $scope.upload = function(files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n }\n };\n $scope.ok = function() {\n if ($scope.uploadFile) {\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories',\n method: 'POST',\n data: {config: $scope.uploadFile},\n })\n .success(function() {\n $scope.uploadFileLoader = false;\n $uibModalInstance.close();\n })\n .error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFileLoader = false;\n });\n }\n };\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nAddLocationCtrl.$inject = ['$scope', '$uibModalInstance', 'toastr', 'productInfo', '$translate'];\n\nfunction AddLocationCtrl($scope, $uibModalInstance, toastr, productInfo, $translate) {\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'none',\n 'username': '',\n 'password': '',\n 'active': false,\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function() {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function() {\n if (!$scope.newLocation) {\n toastr.error($translate.instant('location.cannot.be.empty.error'));\n return;\n }\n $uibModalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nEditLocationCtrl.$inject = ['$scope', '$uibModalInstance', 'location', 'productInfo'];\n\nfunction EditLocationCtrl($scope, $uibModalInstance, location, productInfo) {\n $scope.editedLocation = _.cloneDeep(location);\n $scope.docBase = getDocBase(productInfo);\n\n $scope.ok = function() {\n $uibModalInstance.close($scope.editedLocation);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nChooseRepositoryCtrl.$inject = ['$scope', '$location'];\n\nfunction ChooseRepositoryCtrl($scope, $location) {\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.chooseRepositoryType = function(repoType) {\n $location.path(`${$location.path()}/${repoType}`);\n };\n}\n\nAddRepositoryCtrl.$inject = ['$rootScope', '$scope', 'toastr', '$repositories', '$location', '$timeout', 'Upload', '$routeParams',\n 'RepositoriesRestService', '$translate', 'productInfo'];\n\nfunction AddRepositoryCtrl($rootScope, $scope, toastr, $repositories, $location, $timeout, Upload, $routeParams, RepositoriesRestService, $translate, productInfo) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.params = $routeParams;\n $scope.repositoryType = $routeParams.repositoryType;\n $scope.enable = true;\n $scope.entityIndexSizeMin = ENTITY_INDEX_SIZE_MIN;\n $scope.documentationUrlForStorageEncryption = DocumentationUrlResolver.getDocumentationUrl(productInfo.productShortVersion, 'creating-a-repository.html#using-workbench');\n $scope.encryptInput = {hovered: false};\n\n $scope.loader = true;\n $scope.pageTitle = $translate.instant('view.create.repo.title');\n $scope.repositoryInfo = {\n id: '',\n params: {},\n title: '',\n type: '',\n location: '',\n };\n\n getFilteredLocations($repositories)\n .then((locations) => {\n $scope.locations = locations;\n });\n\n $scope.changedLocation = function() {\n $scope.$broadcast('changedLocation');\n };\n\n function isValidEERepository(repositoryType) {\n return $scope.isEnterprise() && (repositoryType === REPOSITORY_TYPES.graphdbRepo);\n }\n\n function isValidSERepository(repositoryType) {\n return !$scope.isFreeEdition() && !$scope.isEnterprise() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidFRRepository(repositoryType) {\n return $scope.isFreeEdition() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidOntopRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.ontop;\n }\n\n function isValidFedXRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.fedx;\n }\n\n function isRepositoryTypeValid(repositoryType) {\n return isValidEERepository(repositoryType) || isValidSERepository(repositoryType)\n || isValidFRRepository(repositoryType) || isValidOntopRepository(repositoryType)\n || isValidFedXRepository(repositoryType);\n }\n\n function setPageTitle(repositoryType) {\n switch (repositoryType) {\n case REPOSITORY_TYPES.graphdbRepo:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'GraphDB'});\n break;\n case REPOSITORY_TYPES.ontop:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'Ontop Virtual SPARQL'});\n break;\n case REPOSITORY_TYPES.fedx:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'FedX Virtual SPARQL'});\n break;\n }\n }\n\n $scope.getConfig = function(repoType) {\n RepositoriesRestService.getRepositoryConfiguration(repoType).then(function(resp) {\n const data = resp.data;\n $scope.repositoryInfo.params = data.params;\n $scope.repositoryInfo.type = data.type;\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n parseMemberParamIfNeeded($scope.repositoryInfo.params);\n $scope.loader = false;\n // The clean way is the \"autofocus\" attribute and we use it but it doesn't seem to\n // work in all browsers because of the way dynamic content is handled so give it another\n // try here.\n $timeout(function() {\n // Focus the ID field\n angular.element(document).find('#id').focus();\n }, 50);\n }).catch(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n if ($scope.repositoryType && isRepositoryTypeValid($scope.repositoryType)) {\n $scope.repositoryInfo.type = $scope.repositoryType;\n $scope.getConfig($scope.repositoryType);\n setPageTitle($scope.repositoryType);\n } else {\n $location.path('/repository/create');\n }\n\n $scope.hasActiveLocation = function() {\n return $repositories.hasActiveLocation();\n };\n\n $scope.activeLocation = function() {\n return $repositories.getActiveLocation();\n };\n\n let isInvalidPieFile = false;\n $scope.uploadRuleset = function(files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/ruleset/upload',\n data: {ruleset: $scope.uploadFile, location: $scope.repositoryInfo.location},\n }).progress(function(evt) {\n /*\t\t\t\t\t\tvar progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);*/\n }).success(function(data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n isInvalidPieFile = true;\n $scope.uploadFile = '';\n } else {\n isInvalidPieFile = false;\n const fileName = $scope.uploadFile.name;\n const newValue = {id: data.fileLocation, name: 'Custom: ' + fileName};\n if ($scope.rulesetPie) {\n // file was previously uploaded\n $scope.rulesets[0] = newValue;\n } else {\n // file uploaded for the first time\n $scope.rulesets.unshift(newValue);\n }\n $scope.rulesetPie = data.fileLocation;\n $scope.rulesetPieFile = fileName;\n $scope.repositoryInfo.params.ruleset.value = $scope.rulesetPie;\n }\n $scope.uploadFileLoader = false;\n }).error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n isInvalidPieFile = true;\n });\n }\n };\n\n $scope.noMembersError = function() {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.goBackToPreviousLocation = function() {\n const previous = $location.search().previous;\n if (previous) {\n $location.search('previous', null);\n const isAbsolute = typeof previous === 'string' && previous.charAt(0) === '/';\n const target = isAbsolute ? previous : '/' + previous;\n $location.url(target);\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.createRepoHttp = function() {\n $scope.loader = true;\n RepositoriesRestService.createRepository($scope.repositoryInfo)\n .then(function() {\n toastr.success($translate.instant('created.repo.success.msg', {repoId: $scope.repositoryInfo.id}));\n return $repositories.init();\n })\n .then(() => $scope.goBackToPreviousLocation())\n .catch(function(error) {\n const msg = getError(error.data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => {\n $scope.loader = false;\n });\n };\n\n $scope.createRepo = function() {\n if (!$scope.repositoryInfo.id) {\n toastr.error($translate.instant('empty.repoid.warning'));\n return;\n }\n\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n $scope.isInvalidEntityIndexSizeMin = $scope.repositoryInfo.params.entityIndexSize?.value < ENTITY_INDEX_SIZE_MIN;\n const numberFormatError = getNumberFormatError($scope.repositoryInfo.params, $translate);\n\n if (isInvalidPieFile) {\n toastr.error($translate.instant('invalid.ruleset.file.error'));\n } else if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (numberFormatError) {\n toastr.error(numberFormatError);\n } else if ($scope.isInvalidEntityIndexSizeMin) {\n toastr.error($translate.instant('repo.error.entityIndex.min'));\n } else {\n $scope.createRepoHttp();\n }\n };\n\n $scope.rulesetWarning = function() {\n const pp = $scope.repositoryInfo.params;\n if (pp === undefined || pp.ruleset === undefined || pp.disableSameAs === undefined) {\n return '';\n }\n\n if (pp.ruleset.value.indexOf('owl') === 0 && pp.disableSameAs.value === 'true') {\n return $translate.instant('repoTooltips.rulesetWarnings.needsSameAs');\n } else if (pp.ruleset.value.indexOf('rdfs') === 0 && pp.disableSameAs.value === 'false') {\n return $translate.instant('repoTooltips.rulesetWarnings.doesntNeedSameAs');\n } else if (pp.ruleset.value === $scope.rulesetPie) {\n return $translate.instant('repoTooltips.rulesetWarnings.customRuleset');\n } else {\n return '';\n }\n };\n\n $scope.getShaclOptionsClass = function() {\n return getShaclOptionsClass();\n };\n //TODO - check if repositoryID exist\n\n // Request auto-focus of the ID input when creating a repo (but not when editing)\n $scope.autofocusId = 'autofocus';\n\n const languageChangedSubscription = $rootScope.$on('$translateChangeSuccess', () => {\n setPageTitle($scope.repositoryType);\n });\n $scope.$on('$destroy', () => {\n languageChangedSubscription();\n });\n}\n\nEditRepositoryFileCtrl.$inject = ['$scope', '$uibModalInstance', 'RepositoriesRestService', 'file', 'toastr', '$translate', 'dialogTitle', 'location'];\n\nfunction EditRepositoryFileCtrl($scope, $uibModalInstance, RepositoriesRestService, file, toastr, $translate, dialogTitle, location) {\n $scope.dialogTitle = dialogTitle ? dialogTitle : $translate.instant('update.file.content.header');\n if (file) {\n RepositoriesRestService.getRepositoryFileContent(file, location).success(function(data) {\n $scope.fileContent = data;\n }).error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n $scope.ok = function() {\n $uibModalInstance.close({\n content: $scope.fileContent,\n fileLocation: file,\n });\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nEditRepositoryCtrl.$inject = ['$rootScope', '$scope', '$routeParams', 'toastr', '$repositories', '$location', 'ModalService', 'RepositoriesRestService',\n '$translate', 'MonitoringRestService'];\n\nfunction EditRepositoryCtrl($rootScope, $scope, $routeParams, toastr, $repositories, $location, ModalService, RepositoriesRestService, $translate, MonitoringRestService) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.entityIndexSizeMin = ENTITY_INDEX_SIZE_MIN;\n\n $scope.editRepoPage = true;\n $scope.canEditRepoId = false;\n $scope.isRepoInCluster = true;\n $scope.params = $routeParams;\n $scope.loader = true;\n $scope.repositoryInfo = {};\n $scope.repositoryInfo.id = $scope.params.repositoryId;\n $scope.repositoryInfo.location = $scope.params.location;\n $scope.repositoryInfo.restartRequested = false;\n $scope.repositoryType = '';\n $scope.saveRepoId = $scope.params.repositoryId;\n $scope.pageTitle = $translate.instant('view.edit.repo.title', {repositoryId: $scope.params.repositoryId});\n $scope.hasActiveLocation = function() {\n return $repositories.hasActiveLocation();\n };\n\n const loadRepositoryData = () => {\n return getFilteredLocations($repositories).then((locations) => {\n $scope.locations = locations;\n return RepositoriesRestService.getRepository($scope.repositoryInfo);\n });\n };\n\n const initView = (repositoryInfoResponse) => {\n const repositoryInfo = repositoryInfoResponse.data;\n if (angular.isDefined(repositoryInfo.params.ruleset)) {\n let ifRulesetExists = false;\n angular.forEach($scope.rulesets, function(item) {\n if (item.id === repositoryInfo.params.ruleset.value) {\n ifRulesetExists = true;\n }\n });\n if (repositoryInfo.params.ruleset && !ifRulesetExists) {\n const name = getFileName(repositoryInfo.params.ruleset.value);\n $scope.rulesets.unshift({id: repositoryInfo.params.ruleset.value, name: 'Custom: ' + name});\n }\n }\n $scope.repositoryInfo = repositoryInfo;\n $scope.setRepositoryType(repositoryInfo.type);\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n $scope.repositoryInfo.saveId = $scope.saveRepoId;\n $scope.loader = false;\n };\n\n $scope.$watch($scope.hasActiveLocation, function() {\n if ($scope.hasActiveLocation) {\n // Should get locations before getting repository info\n let repositoryInfoResponse;\n loadRepositoryData().then((repositoryInfo) => {\n repositoryInfoResponse = repositoryInfo;\n return MonitoringRestService.monitorActiveOperations($scope.repositoryInfo.id);\n }).then((monitoringResponse) => {\n $scope.isRepoInCluster = monitoringResponse.hasClusterOperation();\n }).catch((error) => {\n if (!repositoryInfoResponse) {\n $scope.repositoryInfo = undefined;\n return Promise.reject(error);\n }\n // the monitoring request failed, but we can still continue\n return Promise.resolve();\n }).then(() => {\n initView(repositoryInfoResponse);\n }).catch((response) => {\n const data = response.data;\n const status = response.status;\n const repositoryId = $routeParams.repositoryId;\n let toastrMsg;\n\n if (status === 404 && repositoryId !== 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.repo.error.not.exists', {repositoryId}));\n } else if (status === 404 && repositoryId === 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.system.repo.warning'));\n } else {\n toastrMsg = getError(data);\n }\n\n toastr.error(toastrMsg, $translate.instant('common.error'), {allowHtml: true});\n\n if (status === 404) {\n setTimeout(function() {\n $scope.loader = false;\n $location.path('repository');\n }, 1000);\n } else {\n $scope.loader = false;\n }\n });\n }\n });\n\n $scope.setRepositoryType = function(type) {\n $scope.repositoryType = type;\n };\n\n $scope.noMembersError = function() {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.editRepoHttp = function() {\n $scope.loader = true;\n RepositoriesRestService.editRepository($scope.repositoryInfo.saveId, $scope.repositoryInfo)\n .success(function() {\n toastr.success($translate.instant('edit.repo.success.msg', {saveId: $scope.repositoryInfo.saveId}));\n $repositories.init().finally(() => $scope.goBackToPreviousLocation());\n if ($scope.repositoryInfo.saveId === $scope.repositoryInfo.id && $scope.repositoryInfo.restartRequested) {\n $repositories.restartRepository($scope.repositoryInfo);\n }\n }).error(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n $scope.editRepository = function() {\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n $scope.isInvalidEntityIndexSizeMin = $scope.repositoryInfo.params.entityIndexSize?.value < ENTITY_INDEX_SIZE_MIN;\n const numberFormatError = getNumberFormatError($scope.repositoryInfo.params, $translate);\n let modalMsg = decodeHTML($translate.instant('edit.repo.save.changes.msg', {repoId: $scope.repositoryInfo.id}));\n if ($scope.repositoryInfo.saveId !== $scope.repositoryInfo.id) {\n modalMsg += decodeHTML($translate.instant('edit.repo.rename.changes.msg'));\n } else if ($scope.repositoryInfo.restartRequested) {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.requested.msg'));\n } else {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.needed.msg'));\n }\n if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (numberFormatError) {\n toastr.error(numberFormatError);\n } else if ($scope.isInvalidEntityIndexSizeMin) {\n toastr.error($translate.instant('repo.error.entityIndex.min'));\n } else {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.save'),\n message: modalMsg,\n warning: true,\n }).result\n .then(function() {\n $scope.editRepoHttp();\n });\n }\n };\n\n $scope.editRepositoryId = function() {\n const msg = decodeHTML($translate.instant('edit.repo.id.warning.msg'));\n\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.enable.edit'),\n message: msg,\n warning: true,\n }).result.then(function() {\n $scope.canEditRepoId = true;\n });\n };\n\n $scope.goBackToPreviousLocation = function() {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.getShaclOptionsClass = function() {\n return getShaclOptionsClass();\n };\n\n const languageChangedSubscription = $rootScope.$on('$translateChangeSuccess', () => {\n $scope.pageTitle = $translate.instant('view.edit.repo.title', {repositoryId: $scope.params.repositoryId});\n });\n $scope.$on('$destroy', () => {\n languageChangedSubscription();\n });\n}\n","import {RemoteLocationAuthType, RemoteLocationModel, RemoteLocationType} from \"../../models/repository/remote-location.model\";\nimport 'angular/core/directives/validate-url.directive';\n\nconst modules = [\n 'graphdb.framework.core.directives.validate-url',\n];\n\nangular.module('graphdb.framework.repositories.controllers.manage-remote-location-dialog', modules)\n .controller('ManageRemoteLocationDialogController', ManageRemoteLocationDialogController);\n\nManageRemoteLocationDialogController.$inject = ['$scope', '$uibModalInstance', 'productInfo', 'data'];\n\n/**\n * Controller for managing the remote location dialog, which handles both creation and editing of remote locations.\n *\n * @param {Object} $scope\n * @param {Object} $uibModalInstance\n * @param {Object} productInfo\n * @param {Object} data - Data passed to the dialog:\n * - If `data.remoteLocation` is provided, the dialog is in edit mode\n * and the remote location object is initialized with the provided data.\n * - If `data.remoteLocation` is not provided, the dialog is in create mode\n * and a new `RemoteLocationModel` instance is initialized.\n *\n * @constructor\n */\nfunction ManageRemoteLocationDialogController($scope, $uibModalInstance, productInfo, data) {\n /**\n * @type {RemoteLocationModel}\n */\n $scope.remoteLocation = data.remoteLocation ? new RemoteLocationModel({...data.remoteLocation}) : new RemoteLocationModel();\n\n $scope.RemoteLocationType = RemoteLocationType;\n $scope.RemoteLocationAuthType = RemoteLocationAuthType;\n $scope.isEdit = !!data.remoteLocation;\n $scope.docBase = `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n\n $scope.ok = () => {\n if ($scope.remoteLocationForm.$pristine || $scope.remoteLocationForm.$invalid) {\n return;\n }\n $uibModalInstance.close($scope.remoteLocation);\n };\n\n $scope.cancel = () => {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.onLocationTypeChanged = () => {\n if ([RemoteLocationType.ONTOPIC, RemoteLocationType.SPARQL].includes($scope.remoteLocation.locationType)) {\n $scope.remoteLocation.authType = RemoteLocationAuthType.BASIC;\n } else {\n $scope.remoteLocation.authType = RemoteLocationAuthType.NONE;\n }\n };\n}\n","export const STATIC_RULESETS = [\n {id: 'empty', name: 'No inference'},\n {id: 'rdfs-optimized', name: 'RDFS (Optimized)'},\n {id: 'rdfs', name: 'RDFS'},\n {id: 'rdfsplus-optimized', name: 'RDFS-Plus (Optimized)'},\n {id: 'owl-horst-optimized', name: 'OWL-Horst (Optimized)'},\n {id: 'owl-horst', name: 'OWL-Horst'},\n {id: 'owl2-ql-optimized', name: 'OWL2-QL (Optimized)'},\n {id: 'owl2-ql', name: 'OWL2-QL'},\n {id: 'owl-max-optimized', name: 'OWL-Max (Optimized)'},\n {id: 'owl-max', name: 'OWL-Max'},\n {id: 'owl2-rl-optimized', name: 'OWL2-RL (Optimized)'},\n {id: 'owl2-rl', name: 'OWL2-RL'},\n\n];\n\nexport const REPOSITORY_TYPES = {graphdbRepo: 'graphdb', free: 'free', eeWorker: 'worker', eeMaster: 'master', ontop: 'ontop', se: 'se', fedx: 'fedx'};\nexport const FILENAME_PATTERN = new RegExp('^[a-zA-Z0-9-_]+$');\nexport const NUMBER_PATTERN = new RegExp('^[0-9]+$');\n","const httpRegex = /^(h|ht|htt|http|https|http:|https:|http:\\/|https:\\/|http:\\/\\/|https:\\/\\/|https?:\\/\\/[\\S]*)$/i;\nconst ftpRegex = /^(f|ft|ftp|ftps|ftp:|ftps:|ftp:\\/|ftps:\\/|ftp:\\/\\/|ftps:\\/\\/[\\S]*)$/i;\n\n\n/**\n * Utilities for URL manipulation, validation, etc.\n */\nexport class UrlUtils {\n /**\n * Validates whether the given string is a valid URL or a partial URL that follows the rules.\n *\n * @param {string} url - The URL string to validate.\n * @return {boolean} True if the URL is valid or a valid partial URL, false otherwise.\n */\n static isValidUrl(url) {\n return httpRegex.test(url) || ftpRegex.test(url);\n }\n\n /**\n * Checks if the URL contains an excluded substring.\n *\n * @param {string} url - The URL string to check.\n * @param {string} exclude - The substring to exclude.\n * @return {boolean} True if the URL does not contain the substring, false if it does.\n */\n static doesNotContain(url, exclude) {\n return !new RegExp(exclude).test(url);\n }\n\n /**\n * Checks if the URL uses an excluded protocol.\n *\n * @param {string} url - The URL string to check.\n * @param {Array<string>} excludedProtocols - The protocols to exclude.\n * @return {boolean} True if the URL does not use the excluded protocols, false if it does.\n */\n static doesNotUseProtocol(url, excludedProtocols) {\n const protocolPattern = new RegExp('^(' + excludedProtocols.join('|') + ')://', 'i');\n return !protocolPattern.test(url);\n }\n}\n"],"names":["angular","module","directive","restrict","require","link","scope","element","attr","ctrl","$validators","validUrl","modelValue","viewValue","$isEmpty","allowEmpty","UrlUtils","isValidUrl","exclude","doesNotContain","excludeProtocol","excludedProtocols","split","doesNotUseProtocol","ENTITY_INDEX_SIZE_MIN","getFileName","path","lastIdx","lastIndexOf","name","substring","parseNumberParamsIfNeeded","params","Object","keys","forEach","key","param","value","possibleNumber","parseFloat","isNaN","numberParamToErrorKey","Number","isInteger","parseInt","isNumber","getShaclOptionsClass","optionsModule","document","getElementById","isAriaExpanded","getAttribute","queryLimitResults","queryTimeout","validationResultsLimitTotal","validationResultsLimitPerConstraint","joinWorkerThreads","leftJoinWorkerThreads","unionWorkerThreads","boundJoinBlockSize","entityIndexSize","getNumberFormatError","$translate","errorEntry","find","NUMBER_PATTERN","test","instant","getDocBase","productInfo","productShortVersion","getFilteredLocations","$repositories","getLocations","then","locations","filter","location","isGraphDBLocation","errorMsg","degradedReason","LocationsAndRepositoriesCtrl","$scope","$rootScope","$uibModal","toastr","ModalService","LocationsRestService","LocalStorageAdapter","$interval","$q","guidesService","service","GuidesService","authorizationService","AuthorizationService","RemoteLocationType","loader","isLocationInactive","active","hasActiveLocation","getLocationsAbortRequestPromise","defer","finally","getLocalLocation","local","locationType","remoteLocationModel","locationTypeCheck","isRepoManager","getRepositoriesFromLocation","uri","length","hasAnyRemoteLocation","locationTypes","some","getActiveLocation","getLocationError","getDegradedReason","getRepositories","isRepoActive","repo","deleteLocation","openSimpleModal","title","message","warning","result","addLocationHttp","dataAddLocation","addLocation","success","init","error","data","msg","getError","openRemoteLocationDialog","editLocation","remoteLocation","undefined","GRAPH_DB","open","templateUrl","windowClass","controller","resolve","editLocationHttp","dataEditLocation","setRepository","deleteRepository","repository","decodeHTML","repositoryId","id","cashedDependenciesGraphPrefix","cashedClassHierarchyGraphPrefix","startsWith","remove","removeCachedGraphsOnDelete","restartRepository","toggleDefaultRepository","getDefaultRepository","setDefaultRepository","getRepositoryDownloadLink","url","type","REPOSITORY_TYPES","ontop","token","AuthenticationStorageService","getAuthToken","getValue","encodeURIComponent","copyToClipboard","openCopyToClipboardModal","fromFile","openActiveLocationSettings","timer","isActive","guidePaused","initQuick","$on","cancel","locationId","repositoriesFromLocation","canReadRepo","canReadGqlRepo","canManageRepo","UploadRepositoryConfigCtrl","$uibModalInstance","Upload","upload","files","uploadFile","ok","uploadFileLoader","method","config","close","dismiss","AddLocationCtrl","newLocation","docBase","isValidLocation","indexOf","EditLocationCtrl","editedLocation","_","cloneDeep","ChooseRepositoryCtrl","$location","repositoryTypes","chooseRepositoryType","repoType","AddRepositoryCtrl","$timeout","$routeParams","RepositoriesRestService","setPageTitle","repositoryType","graphdbRepo","pageTitle","fedx","rulesets","STATIC_RULESETS","slice","enable","entityIndexSizeMin","documentationUrlForStorageEncryption","DocumentationUrlResolver","getDocumentationUrl","encryptInput","hovered","repositoryInfo","changedLocation","$broadcast","getConfig","getRepositoryConfiguration","resp","member","focus","catch","isEnterprise","isValidEERepository","isFreeEdition","isValidSERepository","isValidFRRepository","isValidOntopRepository","isValidFedXRepository","activeLocation","isInvalidPieFile","uploadRuleset","ruleset","progress","evt","fileName","newValue","fileLocation","rulesetPie","unshift","rulesetPieFile","errorMessage","noMembersError","goBackToPreviousLocation","previous","search","target","charAt","createRepoHttp","createRepository","repoId","createRepo","isInvalidRepoName","FILENAME_PATTERN","isInvalidEntityIndexSizeMin","numberFormatError","rulesetWarning","pp","disableSameAs","autofocusId","languageChangedSubscription","EditRepositoryFileCtrl","file","dialogTitle","getRepositoryFileContent","fileContent","content","EditRepositoryCtrl","MonitoringRestService","editRepoPage","canEditRepoId","isRepoInCluster","restartRequested","saveRepoId","$watch","repositoryInfoResponse","getRepository","monitorActiveOperations","monitoringResponse","hasClusterOperation","Promise","reject","isDefined","ifRulesetExists","item","setRepositoryType","saveId","initView","response","status","toastrMsg","allowHtml","setTimeout","editRepoHttp","editRepository","modalMsg","editRepositoryId","$$search","$inject","ManageRemoteLocationDialogController","RemoteLocationModel","RemoteLocationAuthType","isEdit","remoteLocationForm","$pristine","$invalid","onLocationTypeChanged","ONTOPIC","SPARQL","includes","authType","BASIC","NONE","free","eeWorker","eeMaster","se","RegExp","httpRegex","ftpRegex","join"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const __webpack_esm_id__=64709;export const __webpack_esm_ids__=[64709];export const __webpack_esm_modules__={64709(){function t(){return{link:function(t,e,o){t.$watch("file.status",function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+o.size+'" height="'+o.size+'" data="js/angular/templates/loader/ot-loader.svg?v=3.5.0-
|
|
2
|
-
//# sourceMappingURL=64709.
|
|
1
|
+
export const __webpack_esm_id__=64709;export const __webpack_esm_ids__=[64709];export const __webpack_esm_modules__={64709(){function t(){return{link:function(t,e,o){t.$watch("file.status",function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+o.size+'" height="'+o.size+'" data="js/angular/templates/loader/ot-loader.svg?v=3.5.0-TR4">{{\'common.loading\' | translate}}</object>')})}}}angular.module("graphdb.framework.import.directives.import-progress-indicator",[]).directive("ImportProgressIndicator",t),t.$inject=[]}};
|
|
2
|
+
//# sourceMappingURL=64709.ec1274a92bb4614c24c6.bundle.js.map
|
package/dist/{64709.c88c51016f076cbabc90.bundle.js.map → 64709.ec1274a92bb4614c24c6.bundle.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"64709.
|
|
1
|
+
{"version":3,"file":"64709.ec1274a92bb4614c24c6.bundle.js","mappings":"6HASA,SAASA,IACL,MAAO,CACHC,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMG,OAAO,cAAe,WACE,cAAtBH,EAAMI,KAAKC,QAAgD,cAAtBL,EAAMI,KAAKC,SAC3CC,EAAEL,GAASM,IAAI,UAAUC,OAAS,GACnCF,EAAEL,GAASQ,OAAO,kBAAoBP,EAAKQ,KAAO,aAAeR,EAAKQ,KAAO,6GAGzF,EACJ,EAER,CAnBAC,QACKC,OAAO,gEAHI,IAIXC,UAAU,0BAA2Bf,GAE1CA,EAAwBgB,QAAU,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/import/directives/import-progress-indicator.directive.js"],"sourcesContent":["const modules = [];\n\nangular\n .module('graphdb.framework.import.directives.import-progress-indicator', modules)\n .directive('ImportProgressIndicator', ImportProgressIndicator);\n\nImportProgressIndicator.$inject = [];\n\n// importDirectives.directive('filesOntoLoader',\nfunction ImportProgressIndicator() {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=3.5.0-TR4\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n}\n"],"names":["ImportProgressIndicator","link","scope","element","attr","$watch","file","status","$","has","length","append","size","angular","module","directive","$inject"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const __webpack_esm_id__=65677;export const __webpack_esm_ids__=[65677];export const __webpack_esm_modules__={65677(t,e,r){var a=r(66886),n=r(9508),o=(r(38473),r(44482));function s(t,e,r,s,c,i,l,d,p,u,f,g,h){return{restrict:"AE",template:'<div id="domain-range"></div>',scope:{showPredicatesInfoPanel:"=",selectedPredicate:"=",collapseEdges:"="},link:function(u){const f=d(function(){!function(u){var f=1200,y=f/18,x=f/110,m=x/2,v=f/90,b=1.2,k=o.select("#domain-range").append("svg").attr("viewBox","0 0 1200 600").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null),w=o.forceSimulation(),E=o.drag().subject(function(t){return t}).on("start",function(t,e){w.stop(),e.fx=t.x,e.fy=t.y,o.select(this).classed("selected",!0)}).on("end",function(t,e){e.fx=null,e.fy=null,o.select(this).classed("selected",!1),C?(w.alpha(.2).restart(),C=!1):w.restart()}).on("drag",function(t,e){C=!0,w.alphaTarget(0).restart(),e.fx=t.x,e.fy=t.y}),N=k.append("defs");N.append("marker").attrs({id:"arrow",viewBox:"0 -5 10 10",refX:10,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"collapsed-arrow",viewBox:"0 -5 10 10",refX:9,refY:0,markerUnits:"strokeWidth",markerWidth:4,markerHeight:4,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"arrow-loop",viewBox:"0 -5 10 10",refX:7,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),o.select("#download-svg").on("mouseover",function(){var t=a.A.Export.getCSSRules("css/domain-range-graph.css?v=3.5.0-TR3");$("defs").append('<style type="text/css"><![CDATA['+t+"]]></style>");var e=a.A.Export.generateBase64ImageSource("#domain-range svg");o.select(this).attrs({href:e,download:"domain-range-graph-"+r.getActiveRepository()+".svg"})}),function(){var t=f/7,e=205.7142857142857,r=o.select(".legend-container").append("svg").attr("viewBox","0 0 "+t+" "+e).attr("preserveAspectRatio","xMidYMid meet");r.append("rect").attrs({width:t,height:e}).style("fill","rgba(235, 235, 235, 0.9)");var a=16,n=42.66666666666667,s=n+f/90,i=v/1.1,l=(r.append("circle").attrs({class:"legend-class-node",cx:29.333333333333336,cy:30,r:y/4.5}),30+f/370);r.append("text").attrs({x:s,y:l}).style("font-size",i+"px").text("main class node"),r.append("circle").attrs({class:"legend-object-node",cx:29.333333333333336,cy:70,r:8.727272727272727});var d=l+40;r.append("text").attrs({x:s,y:d}).style("font-size",i+"px").text("class node");var p=70+f/45;r.append("circle").attrs({class:"legend-datatype-node",cx:29.333333333333336,cy:p,r:m});var u=d+f/45;r.append("text").attrs({x:s,y:u}).style("font-size",i+"px").text("datatype node");var g=123.33333333333334;r.append("line").attrs({class:"property-arrow",x1:a,y1:g,x2:n,y2:g}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:126.57657657657658}).style("font-size",i+"px").text("explicit property");var h=150;r.append("line").attrs({class:"implicit-property-arrow",x1:a,y1:h,x2:n,y2:h}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:153.24324324324326}).style("font-size",i+"px").text("implicit property");var x=176.66666666666666;r.append("line").attrs({class:"collapsed-property-arrow",x1:a,y1:x,x2:n,y2:x}).style("stroke-width",2).attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)"),r.append("text").attrs({x:s,y:179.9099099099099}).style("font-size",i+"px").text("collapsed property")}();var R=c.search().uri,A=c.search().name;const L=c.search().collapsed;(function(t,e){s.getDomainRangeData(t,e).success(function(t,e,r){u.domainRangeGraphData=t}).error(function(t){p.error("Request for "+A+" failed!")})})(R,L),$(window).on("popstate",function(){i.set(l.DOMAIN_RANGE_WENT_BACK,!0)}),e.onpopstate=function(e){e.state&&t.$broadcast("changeCollapsedEdgesState",e.state.collapsed)},u.$watch("collapseEdges",function(){angular.isUndefined(u.collapseEdges)||(i.set(l.DOMAIN_RANGE_COLLAPSE_EDGES,u.collapseEdges),"true"!==i.get(l.DOMAIN_RANGE_WENT_BACK)&&function(e){t.$broadcast("switchEdgeMode",{uri:R,name:A,collapsed:e})}(u.collapseEdges),i.remove(l.DOMAIN_RANGE_WENT_BACK))}),u.$watch("domainRangeGraphData",function(){if(u.domainRangeGraphData){var r=_.cloneDeep(u.domainRangeGraphData);const S=r.nodes,I=r.links;w.nodes(S).force("x",o.forceX(600)).force("y",o.forceY(300)).force("charge",o.forceManyBody().strength(-800)).force("link",o.forceLink(I).distance(f/3.5));var a=k.selectAll(".link").data(I).enter().append("g");function B(t){t.style("stroke",g),t.style("stroke-width",2),t.attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)")}var s,i,l=0;a.each(function(t){if(t.objectPropNodeClassUri!==R)s=a.append("line").attrs({class:"link","marker-end":"url("+c.absUrl()+"#arrow)"}).style("stroke-width",b).each(function(t){switch(t.propertyType){case"objectLeft":t.targetRadius=y;break;case"objectRight":t.targetRadius=x;break;case"datatype":t.targetRadius=m;break;default:t.targetRadius=0}var e=o.select(this);t.targetNodeEdgeCount>1?B(e):t.implicit&&e.style("stroke-dasharray","3, 3")});else{if(angular.isUndefined(i)){var e=y/2;i=o.select(this).append("path").attrs({d:"M 0 0 A "+e+" "+e+" 0 1 1 0 "+e,class:"loop-link",fill:"none","marker-end":"url("+c.absUrl()+"#arrow-loop)"}).style("stroke-width",b)}(l+=t.targetNodeEdgeCount)>1&&B(o.select(".loop-link"))}});var p={};function G(){$.isEmptyObject(p)||(p.text.style("fill","black"),p.background.style("fill","#f0f0f0"))}function W(t,e){G(),p.text=o.select(this),p.background=o.select(this.previousSibling),p.text.style("fill","white"),p.background.style("fill",g),d(function(){u.showPredicatesInfoPanel=!0,u.selectedPredicate=e}),t.stopPropagation()}$("document").ready(function(){$("#domain-range").bind("click",G)});var N=a.append("text").attr("class",function(t){return t.objectPropNodeClassUri===R?"loop-link-property-name":"property-name"}).attr("dx",function(t){return y/2*("objectLeft"===t.propertyType?1:-1)}).style("text-anchor",function(t){return"objectLeft"===t.propertyType?"end":"start"}).style("font-size",v).text(function(t){return t.targetNodeEdgeCount>1?t.targetNodeEdgeCount+" predicates":t.name});N.each(function(t){var r=o.select(this);/\d\spredicates/.test(r.text())?r.style("font-weight","bold").on("click",W):r.on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.uri),"_blank")})});var L=a.append("rect").attr("class",function(t){return t.objectPropNodeClassUri!==R?"link-background":"loop-link-background"}).attr("width",function(t){return t.calculatedWidth=this.previousSibling.getBBox().width,t.calculatedWidth+4}).attr("height",function(t){return t.calculatedHeight=this.previousSibling.getBBox().height,t.calculatedHeight+2}).attr("transform",function(t){var e=2-y/2*("objectLeft"===t.propertyType?1:-1);return"objectLeft"===t.propertyType&&(e+=t.calculatedWidth),"translate(-"+e+",-"+(2+t.calculatedHeight/2)+")"}).on("click",function(t){t.stopPropagation()}),C=k.selectAll(".node").data(S).enter().append("g"),P=C.filter(function(t){return t.objectPropClassUri!==R}).append("circle").each(function(t){var e=o.select(this);"main"===t.classPosition?e.attrs({class:"class-node",r:y}).attr("marker-end","url("+c.absUrl()+"#loop-link)"):null===t.objectPropClassName?e.attrs({class:"datatype-node",r:m}):e.attrs({class:"object-prop-node",r:x})}).call(E);function z(e,r,a){u.$apply(function(){t.$broadcast("reloadDomainRangeGraphView",r,a)})}o.selectAll(".object-prop-node").on("dblclick",z),C.filter(function(t){return t.objectPropClassName&&t.objectPropClassUri!==R}).append("text").attr("class",function(t){return t.classPosition+"-class-label"}).style("font-size",v).text(function(t){return t.objectPropClassName}).on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.objectPropClassUri),"_blank")});var U=C.select("text");k.select(".class-node").each(function(){o.select(this.parentNode).append("text").attr("class","rdf-class-label").style("font-size",function(t){return n.A.Text.calcFontSize(A,y)}).text(A).on("click",function(){e.open("resource?uri="+encodeURIComponent(R),"_blank")})});var j=k.select(".class-node + text"),T=o.select(".class-node"),M=o.selectAll(".loop-link-background"),O=o.selectAll(".loop-link-property-name");if(N=o.selectAll(".property-name"),!angular.isUndefined(i)){var D=[];M.each(function(t,e){o.select(this),D.push({idx:e,width:t.calculatedWidth,height:t.calculatedHeight})})}function F(t){var e=8*w.alpha();function r(t){var e=t.x+2*y,r=t.y-35.08771929824562;var a=[];M.each(function(n,s){a.push(n),s<h?function(a,n){var o=$.grep(D,function(t){return t.idx==n});n>0&&(e+=parseFloat(n*(o[0].height/(n/1.4)))),a.attrs({transform:"rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")",width:o[0].height,height:o[0].width})}(o.select(this),s):o.select(this).remove()}),function(t){var e;o.select(".view-more-preds-label").style("font-weight","bold").each(function(r){r.target.allEdges=t,e=this.getComputedTextLength()}).on("click",W),o.select(".view-more-preds-rect").attr("height",e+4)}(a)}s.filter(function(t){return t.objectPropNodeClassUri!==R}).attr("x1",function(t){return t.source.x}).attr("y1",function(t){return t.source.y}).attr("x2",function(t){return t.targetX}).attr("y2",function(t){return t.targetY}).each(function(t){!function(t){"objectLeft"===t.propertyType?(t.source.x-=8*e,t.source.y-=e/9):(t.target.x+=8*e,t.target.y-=e/9)}(t);var r=Math.atan2(t.target.y-t.source.y,t.target.x-t.source.x);t.targetX=t.target.x-Math.cos(r)*t.targetRadius,t.targetY=t.target.y-Math.sin(r)*t.targetRadius}),P.each(function(t){"main"!==t.classPosition||angular.isUndefined(i)||(function(t){var e=t.x+64,r=t.y-y/5.7-5;i.attr("transform","rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")")}(t),function(t){function e(e,r){var a=$.grep(D,function(t){return t.idx==r}),n=0;r>0&&(n=parseFloat(2*r*(a[0].height/1.4)));var o=t.x,s=t.y-2.1*y-n;e.attrs({x:o,y:s}).moveToFront()}O.each(function(t,r){var a=o.select(this),n=O.size()-h;n<0?e(a,r):(0==r&&!u.collapseEdges&&n>1&&(function(t,e,r){t.classed("view-more-preds-label",!0).text(r+" predicates more ..."),null!==this.nextSibling&&e.classed("view-more-preds-rect",!0)}(a,o.select(this.nextSibling),n),e(a,r)),r<h?e(a,r):a.remove())})}(t),r(t)),t.objectPropClassUri!==R&&o.select(this).attr("cx",function(t){return"main"===t.classPosition?function(t){!window.ActiveXObject&&"ActiveXObject"in window&&(Math.log10=function(t){return Math.log(t)/Math.LN10});var e=T.attr("cx")-600,r=.5*Math.log10(Math.abs(e));return t.x+=e>0?-r:r,t.x}(t):t.x}).attr("cy",function(t){return t.y})}),j.attr("x",function(t){return t.x}).attr("y",function(t){return t.y}).moveToFront(),L.filter(function(t){return t.objectPropNodeClassUri!==R}).attr("x",function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2}).attr("y",function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2}).moveToFront(),N.attr("x",function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2}).attr("y",function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2}).moveToFront(),U.attr("x",function(t){return"right"===t.classPosition?t.x+13.09090909090909:t.x-13.09090909090909}).attr("y",function(t){return t.y}).moveToFront()}w.on("tick",F)}});let C=!1}(u)},50);u.$on("$destroy",function(){d.cancel(f)})}}}angular.module("graphdb.framework.graphexplore.directives.domainrange",["graphdb.framework.graphexplore.controllers.domainrange","graphdb.framework.utils.localstorageadapter"]).constant("ONTO_RED","var(--gw-primary-base)").constant("ONTO_GREEN","var(--gw-tertiary-base)").constant("ONTO_BLUE","var(--gw-secondary-base)").constant("NON_COLLAPSED_REFLEXIVE_LINK_LIMIT",6).directive("domainRangeGraph",s),s.$inject=["$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT"]}};
|
|
2
|
-
//# sourceMappingURL=65677.
|
|
1
|
+
export const __webpack_esm_id__=65677;export const __webpack_esm_ids__=[65677];export const __webpack_esm_modules__={65677(t,e,r){var a=r(66886),n=r(9508),o=(r(38473),r(44482));function s(t,e,r,s,c,i,l,d,p,u,f,g,h){return{restrict:"AE",template:'<div id="domain-range"></div>',scope:{showPredicatesInfoPanel:"=",selectedPredicate:"=",collapseEdges:"="},link:function(u){const f=d(function(){!function(u){var f=1200,y=f/18,x=f/110,m=x/2,v=f/90,b=1.2,k=o.select("#domain-range").append("svg").attr("viewBox","0 0 1200 600").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null),w=o.forceSimulation(),E=o.drag().subject(function(t){return t}).on("start",function(t,e){w.stop(),e.fx=t.x,e.fy=t.y,o.select(this).classed("selected",!0)}).on("end",function(t,e){e.fx=null,e.fy=null,o.select(this).classed("selected",!1),C?(w.alpha(.2).restart(),C=!1):w.restart()}).on("drag",function(t,e){C=!0,w.alphaTarget(0).restart(),e.fx=t.x,e.fy=t.y}),N=k.append("defs");N.append("marker").attrs({id:"arrow",viewBox:"0 -5 10 10",refX:10,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"collapsed-arrow",viewBox:"0 -5 10 10",refX:9,refY:0,markerUnits:"strokeWidth",markerWidth:4,markerHeight:4,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"arrow-loop",viewBox:"0 -5 10 10",refX:7,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),o.select("#download-svg").on("mouseover",function(){var t=a.A.Export.getCSSRules("css/domain-range-graph.css?v=3.5.0-TR4");$("defs").append('<style type="text/css"><![CDATA['+t+"]]></style>");var e=a.A.Export.generateBase64ImageSource("#domain-range svg");o.select(this).attrs({href:e,download:"domain-range-graph-"+r.getActiveRepository()+".svg"})}),function(){var t=f/7,e=205.7142857142857,r=o.select(".legend-container").append("svg").attr("viewBox","0 0 "+t+" "+e).attr("preserveAspectRatio","xMidYMid meet");r.append("rect").attrs({width:t,height:e}).style("fill","rgba(235, 235, 235, 0.9)");var a=16,n=42.66666666666667,s=n+f/90,i=v/1.1,l=(r.append("circle").attrs({class:"legend-class-node",cx:29.333333333333336,cy:30,r:y/4.5}),30+f/370);r.append("text").attrs({x:s,y:l}).style("font-size",i+"px").text("main class node"),r.append("circle").attrs({class:"legend-object-node",cx:29.333333333333336,cy:70,r:8.727272727272727});var d=l+40;r.append("text").attrs({x:s,y:d}).style("font-size",i+"px").text("class node");var p=70+f/45;r.append("circle").attrs({class:"legend-datatype-node",cx:29.333333333333336,cy:p,r:m});var u=d+f/45;r.append("text").attrs({x:s,y:u}).style("font-size",i+"px").text("datatype node");var g=123.33333333333334;r.append("line").attrs({class:"property-arrow",x1:a,y1:g,x2:n,y2:g}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:126.57657657657658}).style("font-size",i+"px").text("explicit property");var h=150;r.append("line").attrs({class:"implicit-property-arrow",x1:a,y1:h,x2:n,y2:h}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:153.24324324324326}).style("font-size",i+"px").text("implicit property");var x=176.66666666666666;r.append("line").attrs({class:"collapsed-property-arrow",x1:a,y1:x,x2:n,y2:x}).style("stroke-width",2).attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)"),r.append("text").attrs({x:s,y:179.9099099099099}).style("font-size",i+"px").text("collapsed property")}();var R=c.search().uri,A=c.search().name;const L=c.search().collapsed;(function(t,e){s.getDomainRangeData(t,e).success(function(t,e,r){u.domainRangeGraphData=t}).error(function(t){p.error("Request for "+A+" failed!")})})(R,L),$(window).on("popstate",function(){i.set(l.DOMAIN_RANGE_WENT_BACK,!0)}),e.onpopstate=function(e){e.state&&t.$broadcast("changeCollapsedEdgesState",e.state.collapsed)},u.$watch("collapseEdges",function(){angular.isUndefined(u.collapseEdges)||(i.set(l.DOMAIN_RANGE_COLLAPSE_EDGES,u.collapseEdges),"true"!==i.get(l.DOMAIN_RANGE_WENT_BACK)&&function(e){t.$broadcast("switchEdgeMode",{uri:R,name:A,collapsed:e})}(u.collapseEdges),i.remove(l.DOMAIN_RANGE_WENT_BACK))}),u.$watch("domainRangeGraphData",function(){if(u.domainRangeGraphData){var r=_.cloneDeep(u.domainRangeGraphData);const S=r.nodes,I=r.links;w.nodes(S).force("x",o.forceX(600)).force("y",o.forceY(300)).force("charge",o.forceManyBody().strength(-800)).force("link",o.forceLink(I).distance(f/3.5));var a=k.selectAll(".link").data(I).enter().append("g");function B(t){t.style("stroke",g),t.style("stroke-width",2),t.attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)")}var s,i,l=0;a.each(function(t){if(t.objectPropNodeClassUri!==R)s=a.append("line").attrs({class:"link","marker-end":"url("+c.absUrl()+"#arrow)"}).style("stroke-width",b).each(function(t){switch(t.propertyType){case"objectLeft":t.targetRadius=y;break;case"objectRight":t.targetRadius=x;break;case"datatype":t.targetRadius=m;break;default:t.targetRadius=0}var e=o.select(this);t.targetNodeEdgeCount>1?B(e):t.implicit&&e.style("stroke-dasharray","3, 3")});else{if(angular.isUndefined(i)){var e=y/2;i=o.select(this).append("path").attrs({d:"M 0 0 A "+e+" "+e+" 0 1 1 0 "+e,class:"loop-link",fill:"none","marker-end":"url("+c.absUrl()+"#arrow-loop)"}).style("stroke-width",b)}(l+=t.targetNodeEdgeCount)>1&&B(o.select(".loop-link"))}});var p={};function G(){$.isEmptyObject(p)||(p.text.style("fill","black"),p.background.style("fill","#f0f0f0"))}function W(t,e){G(),p.text=o.select(this),p.background=o.select(this.previousSibling),p.text.style("fill","white"),p.background.style("fill",g),d(function(){u.showPredicatesInfoPanel=!0,u.selectedPredicate=e}),t.stopPropagation()}$("document").ready(function(){$("#domain-range").bind("click",G)});var N=a.append("text").attr("class",function(t){return t.objectPropNodeClassUri===R?"loop-link-property-name":"property-name"}).attr("dx",function(t){return y/2*("objectLeft"===t.propertyType?1:-1)}).style("text-anchor",function(t){return"objectLeft"===t.propertyType?"end":"start"}).style("font-size",v).text(function(t){return t.targetNodeEdgeCount>1?t.targetNodeEdgeCount+" predicates":t.name});N.each(function(t){var r=o.select(this);/\d\spredicates/.test(r.text())?r.style("font-weight","bold").on("click",W):r.on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.uri),"_blank")})});var L=a.append("rect").attr("class",function(t){return t.objectPropNodeClassUri!==R?"link-background":"loop-link-background"}).attr("width",function(t){return t.calculatedWidth=this.previousSibling.getBBox().width,t.calculatedWidth+4}).attr("height",function(t){return t.calculatedHeight=this.previousSibling.getBBox().height,t.calculatedHeight+2}).attr("transform",function(t){var e=2-y/2*("objectLeft"===t.propertyType?1:-1);return"objectLeft"===t.propertyType&&(e+=t.calculatedWidth),"translate(-"+e+",-"+(2+t.calculatedHeight/2)+")"}).on("click",function(t){t.stopPropagation()}),C=k.selectAll(".node").data(S).enter().append("g"),P=C.filter(function(t){return t.objectPropClassUri!==R}).append("circle").each(function(t){var e=o.select(this);"main"===t.classPosition?e.attrs({class:"class-node",r:y}).attr("marker-end","url("+c.absUrl()+"#loop-link)"):null===t.objectPropClassName?e.attrs({class:"datatype-node",r:m}):e.attrs({class:"object-prop-node",r:x})}).call(E);function z(e,r,a){u.$apply(function(){t.$broadcast("reloadDomainRangeGraphView",r,a)})}o.selectAll(".object-prop-node").on("dblclick",z),C.filter(function(t){return t.objectPropClassName&&t.objectPropClassUri!==R}).append("text").attr("class",function(t){return t.classPosition+"-class-label"}).style("font-size",v).text(function(t){return t.objectPropClassName}).on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.objectPropClassUri),"_blank")});var U=C.select("text");k.select(".class-node").each(function(){o.select(this.parentNode).append("text").attr("class","rdf-class-label").style("font-size",function(t){return n.A.Text.calcFontSize(A,y)}).text(A).on("click",function(){e.open("resource?uri="+encodeURIComponent(R),"_blank")})});var j=k.select(".class-node + text"),T=o.select(".class-node"),M=o.selectAll(".loop-link-background"),O=o.selectAll(".loop-link-property-name");if(N=o.selectAll(".property-name"),!angular.isUndefined(i)){var D=[];M.each(function(t,e){o.select(this),D.push({idx:e,width:t.calculatedWidth,height:t.calculatedHeight})})}function F(t){var e=8*w.alpha();function r(t){var e=t.x+2*y,r=t.y-35.08771929824562;var a=[];M.each(function(n,s){a.push(n),s<h?function(a,n){var o=$.grep(D,function(t){return t.idx==n});n>0&&(e+=parseFloat(n*(o[0].height/(n/1.4)))),a.attrs({transform:"rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")",width:o[0].height,height:o[0].width})}(o.select(this),s):o.select(this).remove()}),function(t){var e;o.select(".view-more-preds-label").style("font-weight","bold").each(function(r){r.target.allEdges=t,e=this.getComputedTextLength()}).on("click",W),o.select(".view-more-preds-rect").attr("height",e+4)}(a)}s.filter(function(t){return t.objectPropNodeClassUri!==R}).attr("x1",function(t){return t.source.x}).attr("y1",function(t){return t.source.y}).attr("x2",function(t){return t.targetX}).attr("y2",function(t){return t.targetY}).each(function(t){!function(t){"objectLeft"===t.propertyType?(t.source.x-=8*e,t.source.y-=e/9):(t.target.x+=8*e,t.target.y-=e/9)}(t);var r=Math.atan2(t.target.y-t.source.y,t.target.x-t.source.x);t.targetX=t.target.x-Math.cos(r)*t.targetRadius,t.targetY=t.target.y-Math.sin(r)*t.targetRadius}),P.each(function(t){"main"!==t.classPosition||angular.isUndefined(i)||(function(t){var e=t.x+64,r=t.y-y/5.7-5;i.attr("transform","rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")")}(t),function(t){function e(e,r){var a=$.grep(D,function(t){return t.idx==r}),n=0;r>0&&(n=parseFloat(2*r*(a[0].height/1.4)));var o=t.x,s=t.y-2.1*y-n;e.attrs({x:o,y:s}).moveToFront()}O.each(function(t,r){var a=o.select(this),n=O.size()-h;n<0?e(a,r):(0==r&&!u.collapseEdges&&n>1&&(function(t,e,r){t.classed("view-more-preds-label",!0).text(r+" predicates more ..."),null!==this.nextSibling&&e.classed("view-more-preds-rect",!0)}(a,o.select(this.nextSibling),n),e(a,r)),r<h?e(a,r):a.remove())})}(t),r(t)),t.objectPropClassUri!==R&&o.select(this).attr("cx",function(t){return"main"===t.classPosition?function(t){!window.ActiveXObject&&"ActiveXObject"in window&&(Math.log10=function(t){return Math.log(t)/Math.LN10});var e=T.attr("cx")-600,r=.5*Math.log10(Math.abs(e));return t.x+=e>0?-r:r,t.x}(t):t.x}).attr("cy",function(t){return t.y})}),j.attr("x",function(t){return t.x}).attr("y",function(t){return t.y}).moveToFront(),L.filter(function(t){return t.objectPropNodeClassUri!==R}).attr("x",function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2}).attr("y",function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2}).moveToFront(),N.attr("x",function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2}).attr("y",function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2}).moveToFront(),U.attr("x",function(t){return"right"===t.classPosition?t.x+13.09090909090909:t.x-13.09090909090909}).attr("y",function(t){return t.y}).moveToFront()}w.on("tick",F)}});let C=!1}(u)},50);u.$on("$destroy",function(){d.cancel(f)})}}}angular.module("graphdb.framework.graphexplore.directives.domainrange",["graphdb.framework.graphexplore.controllers.domainrange","graphdb.framework.utils.localstorageadapter"]).constant("ONTO_RED","var(--gw-primary-base)").constant("ONTO_GREEN","var(--gw-tertiary-base)").constant("ONTO_BLUE","var(--gw-secondary-base)").constant("NON_COLLAPSED_REFLEXIVE_LINK_LIMIT",6).directive("domainRangeGraph",s),s.$inject=["$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT"]}};
|
|
2
|
+
//# sourceMappingURL=65677.2612e7602a65661c9b59.bundle.js.map
|