graphdb-workbench 2.4.0-RC1 → 2.4.0-RC3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/108.21ba9a6de554ddab0cb3.bundle.js +1 -1
  2. package/dist/{12.eb00a82848770f10d0ef.bundle.js → 12.e6a377cf888480f8f98d.bundle.js} +2 -2
  3. package/dist/{128.d595d6b6fb9ae610976d.bundle.js → 128.ad625978e3241953ffba.bundle.js} +1 -1
  4. package/dist/{143.6e364b1eca9d52b02b4b.bundle.js → 143.205bd5ed1d706768a171.bundle.js} +1 -1
  5. package/dist/168.2d82f1a487dc3ce888b0.bundle.js +1 -1
  6. package/dist/171.4f08cb300ca1440a3307.bundle.js +1 -1
  7. package/dist/{18.253aea7fe10e3ba2e32c.bundle.js → 18.1b68d0b88fa20176aa24.bundle.js} +1 -1
  8. package/dist/198.55e79d00713b2500f203.bundle.js +1 -1
  9. package/dist/{2.619c2619f736dbce2a2f.bundle.js → 2.c65777063a36c091a5bd.bundle.js} +1 -1
  10. package/dist/20.c6da63eaca8c7d70114f.bundle.js +1 -0
  11. package/dist/22.a052dbb90cc265342e5a.bundle.js +1 -1
  12. package/dist/{23.b4c0f0ceb8bd010f614b.bundle.js → 23.bb941b1c5b252f4ca45d.bundle.js} +1 -1
  13. package/dist/25.e270178ce42ba8e4e7ee.bundle.js +1 -0
  14. package/dist/{26.68f4f27950281a3c38f5.bundle.js → 26.40d859a0a8a84551e6a3.bundle.js} +1 -1
  15. package/dist/29.23338c84d369c009f196.bundle.js +1 -1
  16. package/dist/32.9a8e75f644f231ec2346.bundle.js +1 -0
  17. package/dist/{33.7cbb90a6b50f8930dbea.bundle.js → 33.19afa1f8be001d8dbb35.bundle.js} +1 -1
  18. package/dist/36.55a3af7ce65b4b20033b.bundle.js +1 -1
  19. package/dist/{4.c8e2274b40fd185a3738.bundle.js → 4.61bf53cda571e1e46d8b.bundle.js} +1 -1
  20. package/dist/40.f1f27b64356cd38da424.bundle.js +1 -0
  21. package/dist/{45.4be80cd242c82f24dee0.bundle.js → 45.0e828cba3f18851b0c36.bundle.js} +1 -1
  22. package/dist/48.4d17d325f11d472a147d.bundle.js +1 -1
  23. package/dist/{5.1638e5d352dd9ff72475.bundle.js → 5.df72ab6068dcb3268c22.bundle.js} +1 -1
  24. package/dist/{61.9bf61ab90dcbc0bb6276.bundle.js → 61.d58f9cc70caedb912d9f.bundle.js} +1 -1
  25. package/dist/64.305906a8eb2fa755117a.bundle.js +1 -0
  26. package/dist/{72.a2a2287694bcbc2550a8.bundle.js → 72.2a93a562e2af1ada5ce7.bundle.js} +1 -1
  27. package/dist/{bundle.4e5715c43e767d286da2.bundle.js → bundle.b51cb0800fa0b21c0a17.bundle.js} +6 -6
  28. package/dist/css/aclmanagement.css +9 -0
  29. package/dist/i18n/locale-en.json +5 -2
  30. package/dist/i18n/locale-fr.json +5 -2
  31. package/dist/index.html +3 -3
  32. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  33. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  34. package/dist/js/angular/security/templates/user.html +1 -1
  35. package/dist/license-checker.json +2 -2
  36. package/dist/pages/aclmanagement.html +7 -11
  37. package/dist/pages/autocomplete.html +1 -1
  38. package/dist/pages/choose-repository-type.html +1 -1
  39. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  40. package/dist/pages/create-index.html +4 -4
  41. package/dist/pages/dependencies.html +1 -1
  42. package/dist/pages/domainRangeInfo.html +2 -2
  43. package/dist/pages/edit.html +1 -1
  44. package/dist/pages/explore.html +1 -1
  45. package/dist/pages/export.html +1 -1
  46. package/dist/pages/find.html +1 -1
  47. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  48. package/dist/pages/graphs-visualizations.html +7 -7
  49. package/dist/pages/guides.html +1 -1
  50. package/dist/pages/import.html +1 -1
  51. package/dist/pages/jdbc-create.html +5 -5
  52. package/dist/pages/monitor/backup-and-restore.html +1 -1
  53. package/dist/pages/monitor/queries.html +1 -1
  54. package/dist/pages/monitor/resources.html +2 -2
  55. package/dist/pages/namespaces.html +2 -2
  56. package/dist/pages/plugins.html +1 -1
  57. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  58. package/dist/pages/rdfrank.html +2 -2
  59. package/dist/pages/repositories.html +2 -2
  60. package/dist/pages/repository.html +2 -2
  61. package/dist/pages/similarity-indexes.html +1 -1
  62. package/dist/pages/sparql-template-create.html +5 -5
  63. package/dist/pages/sparql.html +3 -3
  64. package/dist/pages/webapi.html +2 -2
  65. package/dist/res/swagger/index.html +27 -27
  66. package/package.json +1 -1
  67. package/dist/20.89bc66429b9d42b35779.bundle.js +0 -1
  68. package/dist/25.144cbec4c8b6067b4862.bundle.js +0 -1
  69. package/dist/32.4b694d4b6b15e1e3ff16.bundle.js +0 -1
  70. package/dist/40.c569fcee033d5ae3fa2a.bundle.js +0 -1
  71. package/dist/64.951218e19b5a087d25f9.bundle.js +0 -1
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[128],{129:function(e,t,r){"use strict";r.r(t);var o=r(82);const a={OBDA:"obdaFile",OWL:"owlFile",CONSTRAINT:"constraintFile",LENSES:"lensesFile",DB_METADATA:"dbMetadataFile"};class n{constructor(e="generic"){this.driverType=e,this.hostName="",this.port=void 0,this.databaseName="",this.username="",this.password="",this.driverClass="",this.url="",this.urlUserInput=""}}class i{constructor(e,t=!1){this.type=e,this.fileName="",this.loading=!1,this.required=t}}class s extends Error{}const l="generic",p="dremio",c="databricks",d="snowflake";class m{constructor(){this.classAvailable=!1,this.downloadDriverUrl="",this.driverClass="",this.driverName="",this.driverType="",this.portRequired=!1,this.urlTemplate=""}static isGenericDriver(e){return e===l}static isSnowflakeDriver(e){return e===d}}function f(e,t,r,f,u){return{restrict:"E",scope:!1,templateUrl:"js/angular/repositories/templates/ontop-repo.html",link:function(v){v.isGenericDriver=!0,v.defaultUrlTemplate="jdbc:database://localhost:port/database_name",v.ontopProperiesLink="https://ontop-vkg.org/guide/advanced/configuration.html",v.ontopFileType=a,v.selectedDriver=new m,v.supportedDriversData=[],v.formData={connectionInformation:new n,settings:{additionalProperties:"",ontopFiles:[]}},v.selectDriver=e=>{v.selectedDriver=v.supportedDriversData.find(t=>t.driverType===e),v.isGenericDriver=m.isGenericDriver(v.selectedDriver.driverType),v.editRepoPage&&v.currentOntopRepoInfo&&v.currentOntopRepoInfo.connectionInformation.driverType===e?v.formData=angular.copy(v.currentOntopRepoInfo):(k(),v.formData.connectionInformation.driverType=v.selectedDriver.driverType),v.formData.connectionInformation.driverClass=v.selectedDriver.driverClass,v.updateUrl()},v.getOntopFileInfo=e=>v.formData.settings.ontopFiles.find(t=>e===t.type),v.getHostNameLabel=()=>{const e=m.isSnowflakeDriver(v.selectedDriver.driverType)?"ontop.repo.database.snowflake.host_name":"ontop.repo.database.host_name";return u.instant(e)+"*"},v.getDatabaseNameLabel=()=>{let e="";switch(v.selectedDriver.driverType){case d:e="ontop.repo.database.warehouse.database_name";break;case c:e="ontop.repo.database.http_path.database_name";break;case p:e="ontop.repo.database.schema.database_name";break;default:e="ontop.repo.database.database_name"}return u.instant(e)},v.updateUrl=()=>{const e=h()||"";v.formData.connectionInformation.url=e+v.formData.connectionInformation.urlUserInput},v.isTestConnectionDisabled=()=>{const e=v.formData.connectionInformation,t=v.selectedDriver;return!(e.driverClass&&e.url&&(!t.portRequired||e.port))||!(m.isGenericDriver(t.driverType)||e.hostName&&e.databaseName)},v.testConnection=()=>{w().then(R).then(T).then(P).then(F).then(b).then(()=>t.validateOntopPropertiesConnection(v.repositoryInfo)).then(()=>r.success(u.instant("ontop.repo.successful.connection.msg"))).catch(e=>{e instanceof s?r.error(e.message):N(u.instant("ontop.repo.failed.to.connect"),e)})},v.editFile=r=>{const a=v.repositoryInfo.params[r.type].label,n=u.instant("update.file.edit.content.header",{fileName:a});e.open({templateUrl:"js/angular/templates/modal/editRepoFile.html",controller:"EditRepositoryFileCtrl",windowClass:"update-ontop-repo-dialog",resolve:{file:()=>{const e=v.repositoryInfo.params[r.type];return e?e.value:""},dialogTitle:()=>n}}).result.then(e=>{t.updateRepositoryFileContent(e.fileLocation,e.content,v.repositoryInfo.location).success(e=>{r.fileName=Object(o.getFileName)(e.fileLocation),v.repositoryInfo.params[r.type].value=e.fileLocation}).error(e=>{N(u.instant("common.error"),e)})})},v.uploadOntopFile=(e,t)=>{if(e&&e.length){const o=e[0];t.loading=!0;const a={url:"rest/repositories/file/upload",data:{file:o,location:v.repositoryInfo.location}};f.upload(a).success(e=>{e.success?(t.fileName=o.name,v.repositoryInfo.params[t.type].value=e.fileLocation):r.error(e.errorMessage)}).error(e=>{N(u.instant("common.error"),e),v.uploadFile=""}).finally(()=>{t.loading=!1})}},v.updateOntopRepo=()=>{const e=v.editRepoPage?v.editRepository:v.createRepo;O().then(w).then(R).then(T).then(P).then(F).then(C).then(b).then(e).catch(e=>{e instanceof s?r.error(e.message):console.log(e)})},v.onKeyDownInUrlInput=e=>{const t=e.keyCode;if(37===t||39===t||36===t||35===t)return;const r=h();if(!r)return;const o=e.ctrlKey||e.metaKey;if(o&&65===t||o&&67===t)return;const a=e.target.selectionStart;8===t&&a-1<r.length&&(e.preventDefault(),e.stopPropagation()),a<r.length&&(e.preventDefault(),e.stopPropagation())},v.onKeyUpInUrlInput=()=>{D()};const D=()=>{const e=h();e&&v.formData.connectionInformation.url.startsWith(e)?v.formData.connectionInformation.urlUserInput=v.formData.connectionInformation.url.substring(e.length):v.formData.connectionInformation.urlUserInput=v.formData.connectionInformation.url},h=()=>m.isSnowflakeDriver(v.selectedDriver.driverType)?I():g(),I=()=>{let e=v.selectedDriver.urlTemplate;const t=v.formData.connectionInformation;return t.hostName&&(e=e.replace("{identifier}",t.hostName)),t.port&&(e=e.replace(".snowflakecomputing.com/?",`.snowflakecomputing.com:${t.port}/?`)),t.databaseName&&(e=e.replace("{database}",t.databaseName)),e},g=()=>{let e=v.selectedDriver.urlTemplate;const t=v.formData.connectionInformation;return t.hostName&&(e=t.port?e.replace("{hostport}",`${t.hostName}:${t.port}`):e.replace("{hostport}",""+t.hostName)),t.databaseName&&(e=e.replace("{database}",t.databaseName)),e},y=e=>{v.formData.settings.ontopFiles.forEach(t=>{t.loading=e})},b=()=>{y(!0);const e=v.formData.connectionInformation,r={hostName:e.hostName,port:e.port,databaseName:e.databaseName,userName:e.username,password:e.password,driverClass:e.driverClass,url:e.url,additionalProperties:v.formData.settings.additionalProperties};return t.updatePropertiesFile(v.repositoryInfo.params.propertiesFile.value,r,v.repositoryInfo.location,v.selectedDriver.driverType).success(e=>{v.repositoryInfo.params.propertiesFile.value=e.fileLocation}).error(e=>{N(u.instant("common.error"),e)}).finally(()=>y(!1))},N=(e,t)=>{const o=getError(t);r.error(o,e)},w=()=>m.isGenericDriver(v.selectedDriver.driverType)||v.formData.connectionInformation.hostName?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.host_name")}))),T=()=>m.isGenericDriver(v.selectedDriver.driverType)||v.formData.connectionInformation.databaseName?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.database_name")}))),P=()=>v.formData.connectionInformation.driverClass?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.driver_class")}))),F=()=>v.formData.connectionInformation.url?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.url")}))),O=()=>v.repositoryInfo.id?Promise.resolve():Promise.reject(new s(u.instant("empty.repoid.warning"))),C=()=>v.getOntopFileInfo(a.OBDA).fileName?Promise.resolve():Promise.reject(new s(u.instant("ontop.repo.missing.required.file",{fileName:v.repositoryInfo.params[a.OBDA].label}))),R=()=>v.selectedDriver.portRequired&&!v.formData.connectionInformation.port?Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.port")}))):Promise.resolve(),k=()=>{v.formData={connectionInformation:new n,settings:{additionalProperties:"",ontopFiles:[]}},Object.values(a).forEach(e=>{const t=new i(e);v.formData.settings.ontopFiles.push(t)}),v.getOntopFileInfo(a.OBDA).required=!0};t.getSupportedDriversData(v.repositoryInfo).success(e=>{v.supportedDriversData=e}).error(e=>{N(u.instant("common.error"),e)}).then(()=>{v.editRepoPage?(y(!0),t.loadPropertiesFile(v.repositoryInfo.params.propertiesFile.value,v.repositoryInfo.location,v.selectedDriver.driverType).success(e=>{let t=v.supportedDriversData.find(t=>t.driverClass===e.driverClass);t&&e.hostName||(t=v.supportedDriversData.find(e=>m.isGenericDriver(e.driverType))),v.selectDriver(t.driverType),v.formData.connectionInformation.driverType=t.driverType,v.formData.connectionInformation.driverClass=e.driverClass,v.formData.connectionInformation.password=e.password,v.formData.connectionInformation.username=e.userName,v.formData.connectionInformation.url=e.url,v.formData.settings.additionalProperties=e.additionalProperties,m.isGenericDriver(t.driverType)||(v.formData.connectionInformation.hostName=e.hostName,v.formData.connectionInformation.databaseName=e.databaseName,v.formData.connectionInformation.port=e.port?parseInt(e.port,10):void 0),D(),v.updateUrl(),Object.values(a).forEach(e=>{const t=v.repositoryInfo.params[e],r=v.getOntopFileInfo(e);t&&(r.fileName=Object(o.getFileName)(t.value))}),v.currentOntopRepoInfo=angular.copy(v.formData)}).error(e=>{N(u.instant("common.error"),e)}).finally(()=>{y(!1)})):v.selectDriver(l)})}}}angular.module("graphdb.framework.repositories.ontop-repo.directive",[]).directive("ontopRepo",f),f.$inject=["$uibModal","RepositoriesRestService","toastr","Upload","$translate"]}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[128],{129:function(e,t,r){"use strict";r.r(t);var o=r(83);const a={OBDA:"obdaFile",OWL:"owlFile",CONSTRAINT:"constraintFile",LENSES:"lensesFile",DB_METADATA:"dbMetadataFile"};class n{constructor(e="generic"){this.driverType=e,this.hostName="",this.port=void 0,this.databaseName="",this.username="",this.password="",this.driverClass="",this.url="",this.urlUserInput=""}}class i{constructor(e,t=!1){this.type=e,this.fileName="",this.loading=!1,this.required=t}}class s extends Error{}const l="generic",p="dremio",c="databricks",d="snowflake";class m{constructor(){this.classAvailable=!1,this.downloadDriverUrl="",this.driverClass="",this.driverName="",this.driverType="",this.portRequired=!1,this.urlTemplate=""}static isGenericDriver(e){return e===l}static isSnowflakeDriver(e){return e===d}}function f(e,t,r,f,u){return{restrict:"E",scope:!1,templateUrl:"js/angular/repositories/templates/ontop-repo.html",link:function(v){v.isGenericDriver=!0,v.defaultUrlTemplate="jdbc:database://localhost:port/database_name",v.ontopProperiesLink="https://ontop-vkg.org/guide/advanced/configuration.html",v.ontopFileType=a,v.selectedDriver=new m,v.supportedDriversData=[],v.formData={connectionInformation:new n,settings:{additionalProperties:"",ontopFiles:[]}},v.selectDriver=e=>{v.selectedDriver=v.supportedDriversData.find(t=>t.driverType===e),v.isGenericDriver=m.isGenericDriver(v.selectedDriver.driverType),v.editRepoPage&&v.currentOntopRepoInfo&&v.currentOntopRepoInfo.connectionInformation.driverType===e?v.formData=angular.copy(v.currentOntopRepoInfo):(k(),v.formData.connectionInformation.driverType=v.selectedDriver.driverType),v.formData.connectionInformation.driverClass=v.selectedDriver.driverClass,v.updateUrl()},v.getOntopFileInfo=e=>v.formData.settings.ontopFiles.find(t=>e===t.type),v.getHostNameLabel=()=>{const e=m.isSnowflakeDriver(v.selectedDriver.driverType)?"ontop.repo.database.snowflake.host_name":"ontop.repo.database.host_name";return u.instant(e)+"*"},v.getDatabaseNameLabel=()=>{let e="";switch(v.selectedDriver.driverType){case d:e="ontop.repo.database.warehouse.database_name";break;case c:e="ontop.repo.database.http_path.database_name";break;case p:e="ontop.repo.database.schema.database_name";break;default:e="ontop.repo.database.database_name"}return u.instant(e)},v.updateUrl=()=>{const e=h()||"";v.formData.connectionInformation.url=e+v.formData.connectionInformation.urlUserInput},v.isTestConnectionDisabled=()=>{const e=v.formData.connectionInformation,t=v.selectedDriver;return!(e.driverClass&&e.url&&(!t.portRequired||e.port))||!(m.isGenericDriver(t.driverType)||e.hostName&&e.databaseName)},v.testConnection=()=>{w().then(R).then(T).then(P).then(F).then(b).then(()=>t.validateOntopPropertiesConnection(v.repositoryInfo)).then(()=>r.success(u.instant("ontop.repo.successful.connection.msg"))).catch(e=>{e instanceof s?r.error(e.message):N(u.instant("ontop.repo.failed.to.connect"),e)})},v.editFile=r=>{const a=v.repositoryInfo.params[r.type].label,n=u.instant("update.file.edit.content.header",{fileName:a});e.open({templateUrl:"js/angular/templates/modal/editRepoFile.html",controller:"EditRepositoryFileCtrl",windowClass:"update-ontop-repo-dialog",resolve:{file:()=>{const e=v.repositoryInfo.params[r.type];return e?e.value:""},dialogTitle:()=>n}}).result.then(e=>{t.updateRepositoryFileContent(e.fileLocation,e.content,v.repositoryInfo.location).success(e=>{r.fileName=Object(o.getFileName)(e.fileLocation),v.repositoryInfo.params[r.type].value=e.fileLocation}).error(e=>{N(u.instant("common.error"),e)})})},v.uploadOntopFile=(e,t)=>{if(e&&e.length){const o=e[0];t.loading=!0;const a={url:"rest/repositories/file/upload",data:{file:o,location:v.repositoryInfo.location}};f.upload(a).success(e=>{e.success?(t.fileName=o.name,v.repositoryInfo.params[t.type].value=e.fileLocation):r.error(e.errorMessage)}).error(e=>{N(u.instant("common.error"),e),v.uploadFile=""}).finally(()=>{t.loading=!1})}},v.updateOntopRepo=()=>{const e=v.editRepoPage?v.editRepository:v.createRepo;O().then(w).then(R).then(T).then(P).then(F).then(C).then(b).then(e).catch(e=>{e instanceof s?r.error(e.message):console.log(e)})},v.onKeyDownInUrlInput=e=>{const t=e.keyCode;if(37===t||39===t||36===t||35===t)return;const r=h();if(!r)return;const o=e.ctrlKey||e.metaKey;if(o&&65===t||o&&67===t)return;const a=e.target.selectionStart;8===t&&a-1<r.length&&(e.preventDefault(),e.stopPropagation()),a<r.length&&(e.preventDefault(),e.stopPropagation())},v.onKeyUpInUrlInput=()=>{D()};const D=()=>{const e=h();e&&v.formData.connectionInformation.url.startsWith(e)?v.formData.connectionInformation.urlUserInput=v.formData.connectionInformation.url.substring(e.length):v.formData.connectionInformation.urlUserInput=v.formData.connectionInformation.url},h=()=>m.isSnowflakeDriver(v.selectedDriver.driverType)?I():g(),I=()=>{let e=v.selectedDriver.urlTemplate;const t=v.formData.connectionInformation;return t.hostName&&(e=e.replace("{identifier}",t.hostName)),t.port&&(e=e.replace(".snowflakecomputing.com/?",`.snowflakecomputing.com:${t.port}/?`)),t.databaseName&&(e=e.replace("{database}",t.databaseName)),e},g=()=>{let e=v.selectedDriver.urlTemplate;const t=v.formData.connectionInformation;return t.hostName&&(e=t.port?e.replace("{hostport}",`${t.hostName}:${t.port}`):e.replace("{hostport}",""+t.hostName)),t.databaseName&&(e=e.replace("{database}",t.databaseName)),e},y=e=>{v.formData.settings.ontopFiles.forEach(t=>{t.loading=e})},b=()=>{y(!0);const e=v.formData.connectionInformation,r={hostName:e.hostName,port:e.port,databaseName:e.databaseName,userName:e.username,password:e.password,driverClass:e.driverClass,url:e.url,additionalProperties:v.formData.settings.additionalProperties};return t.updatePropertiesFile(v.repositoryInfo.params.propertiesFile.value,r,v.repositoryInfo.location,v.selectedDriver.driverType).success(e=>{v.repositoryInfo.params.propertiesFile.value=e.fileLocation}).error(e=>{N(u.instant("common.error"),e)}).finally(()=>y(!1))},N=(e,t)=>{const o=getError(t);r.error(o,e)},w=()=>m.isGenericDriver(v.selectedDriver.driverType)||v.formData.connectionInformation.hostName?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.host_name")}))),T=()=>m.isGenericDriver(v.selectedDriver.driverType)||v.formData.connectionInformation.databaseName?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.database_name")}))),P=()=>v.formData.connectionInformation.driverClass?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.driver_class")}))),F=()=>v.formData.connectionInformation.url?Promise.resolve():Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.url")}))),O=()=>v.repositoryInfo.id?Promise.resolve():Promise.reject(new s(u.instant("empty.repoid.warning"))),C=()=>v.getOntopFileInfo(a.OBDA).fileName?Promise.resolve():Promise.reject(new s(u.instant("ontop.repo.missing.required.file",{fileName:v.repositoryInfo.params[a.OBDA].label}))),R=()=>v.selectedDriver.portRequired&&!v.formData.connectionInformation.port?Promise.reject(new s(u.instant("missing.required.field",{fieldName:u.instant("ontop.repo.database.port")}))):Promise.resolve(),k=()=>{v.formData={connectionInformation:new n,settings:{additionalProperties:"",ontopFiles:[]}},Object.values(a).forEach(e=>{const t=new i(e);v.formData.settings.ontopFiles.push(t)}),v.getOntopFileInfo(a.OBDA).required=!0};t.getSupportedDriversData(v.repositoryInfo).success(e=>{v.supportedDriversData=e}).error(e=>{N(u.instant("common.error"),e)}).then(()=>{v.editRepoPage?(y(!0),t.loadPropertiesFile(v.repositoryInfo.params.propertiesFile.value,v.repositoryInfo.location,v.selectedDriver.driverType).success(e=>{let t=v.supportedDriversData.find(t=>t.driverClass===e.driverClass);t&&e.hostName||(t=v.supportedDriversData.find(e=>m.isGenericDriver(e.driverType))),v.selectDriver(t.driverType),v.formData.connectionInformation.driverType=t.driverType,v.formData.connectionInformation.driverClass=e.driverClass,v.formData.connectionInformation.password=e.password,v.formData.connectionInformation.username=e.userName,v.formData.connectionInformation.url=e.url,v.formData.settings.additionalProperties=e.additionalProperties,m.isGenericDriver(t.driverType)||(v.formData.connectionInformation.hostName=e.hostName,v.formData.connectionInformation.databaseName=e.databaseName,v.formData.connectionInformation.port=e.port?parseInt(e.port,10):void 0),D(),v.updateUrl(),Object.values(a).forEach(e=>{const t=v.repositoryInfo.params[e],r=v.getOntopFileInfo(e);t&&(r.fileName=Object(o.getFileName)(t.value))}),v.currentOntopRepoInfo=angular.copy(v.formData)}).error(e=>{N(u.instant("common.error"),e)}).finally(()=>{y(!1)})):v.selectDriver(l)})}}}angular.module("graphdb.framework.repositories.ontop-repo.directive",[]).directive("ontopRepo",f),f.$inject=["$uibModal","RepositoriesRestService","toastr","Upload","$translate"]}}]);
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[143],{85:function(e,t,n){"use strict";n.r(t);n(6),n(23);function s(e,t,n,s,i){e.supportsStatistics=!0,e.settings={statistics:!1},e.getSettings=function(){e.loader=!0,s.getStatistics().then((function(t){e.settings.statistics="true"===t.data,e.supportsStatistics=!0}),(function(n){if(404===n.status)e.supportsStatistics=!1;else{const e=getError(n.data);t.error(e,i.instant("error.getting.settings"))}}))},e.getSettings(),e.setSettings=function(){e.loader=!0,s.toggleStatistics(e.settings.statistics).then((function(){n.close(),t.success(i.instant("saving.settings.success"))}),(function(e){const n=getError(e.data);t.error(n,i.instant("saving.settings.error"))}))},e.submitForm=function(){e.setSettings()},e.cancel=function(){n.dismiss("cancel")}}function i(e,t,n,s,i,c,r){e.loadingLicense=function(){return n.loadingLicense},n.checkLicenseStatus(),e.revertToFree=function(){c.openSimpleModal({title:r.instant("confirm.operation"),message:r.instant("revert.to.free.warning.msg"),warning:!0}).result.then((function(){t.unregisterLicense().success((function(){n.checkLicenseStatus()}))}))}}function c(e,t,n,s,i,c,r,o){e.$on("securityInit",(function(){r.isAdmin()||n.path("/license")})),e.sendLicenseToValidateAndActivate=l;const a=$(".license-textarea");function l(e){t.sendLicenseToValidate(e).success((function(n){"Invalid"!==n.licensee?(a.val(e),function(e,n){s.open({templateUrl:"js/angular/settings/modal/validate-license.html",controller:"ValidateLicenseModalCtrl",size:"lg",resolve:{license:function(){return e}}}).result.then((function(){!function(e){e||(e=a.val());if(e){const n=atob(e.replace(/\s/g,""));t.registerLicense(n).success((function(){c.history.back()})).error((function(){i.error(o.instant("license.register.error"))}))}else i.error(o.instant("no.license.code.error"))}(n)}))}(n,e)):(a.val(""),i.error(n.message))})).error((function(){i.error(o.instant("invalid.license"))}))}e.$watch("currentFile",(function(){if(e.currentFile){const n=e.currentFile;t.extractFromLicenseFile(n).success((function(e){l(e)})).error((function(){i.error(o.instant("could.not.upload.file.error"))}))}})),e.getBackToPreviousPage=function(){c.history.back()}}function r(e,t,n){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")},e.license=n}function o(e){e.loader=!0,e.setLoader=function(t){e.loader=t}}angular.module("graphdb.framework.settings.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","toastr"]).controller("ActiveLocationSettingsCtrl",s).controller("ValidateLicenseModalCtrl",r).controller("LicenseCtrl",i).controller("RegisterLicenseCtrl",c).controller("LoaderSamplesCtrl",o),s.$inject=["$scope","toastr","$uibModalInstance","LicenseRestService","$translate"],i.$inject=["$scope","LicenseRestService","$licenseService","toastr","$rootScope","ModalService","$translate"],c.$inject=["$scope","LicenseRestService","$location","$uibModal","toastr","$window","$jwtAuth","$translate"],r.$inject=["$scope","$uibModalInstance","license"],o.$inject=["$scope"]}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[143],{86:function(e,t,n){"use strict";n.r(t);n(6),n(23);function s(e,t,n,s,i){e.supportsStatistics=!0,e.settings={statistics:!1},e.getSettings=function(){e.loader=!0,s.getStatistics().then((function(t){e.settings.statistics="true"===t.data,e.supportsStatistics=!0}),(function(n){if(404===n.status)e.supportsStatistics=!1;else{const e=getError(n.data);t.error(e,i.instant("error.getting.settings"))}}))},e.getSettings(),e.setSettings=function(){e.loader=!0,s.toggleStatistics(e.settings.statistics).then((function(){n.close(),t.success(i.instant("saving.settings.success"))}),(function(e){const n=getError(e.data);t.error(n,i.instant("saving.settings.error"))}))},e.submitForm=function(){e.setSettings()},e.cancel=function(){n.dismiss("cancel")}}function i(e,t,n,s,i,c,r){e.loadingLicense=function(){return n.loadingLicense},n.checkLicenseStatus(),e.revertToFree=function(){c.openSimpleModal({title:r.instant("confirm.operation"),message:r.instant("revert.to.free.warning.msg"),warning:!0}).result.then((function(){t.unregisterLicense().success((function(){n.checkLicenseStatus()}))}))}}function c(e,t,n,s,i,c,r,o){e.$on("securityInit",(function(){r.isAdmin()||n.path("/license")})),e.sendLicenseToValidateAndActivate=l;const a=$(".license-textarea");function l(e){t.sendLicenseToValidate(e).success((function(n){"Invalid"!==n.licensee?(a.val(e),function(e,n){s.open({templateUrl:"js/angular/settings/modal/validate-license.html",controller:"ValidateLicenseModalCtrl",size:"lg",resolve:{license:function(){return e}}}).result.then((function(){!function(e){e||(e=a.val());if(e){const n=atob(e.replace(/\s/g,""));t.registerLicense(n).success((function(){c.history.back()})).error((function(){i.error(o.instant("license.register.error"))}))}else i.error(o.instant("no.license.code.error"))}(n)}))}(n,e)):(a.val(""),i.error(n.message))})).error((function(){i.error(o.instant("invalid.license"))}))}e.$watch("currentFile",(function(){if(e.currentFile){const n=e.currentFile;t.extractFromLicenseFile(n).success((function(e){l(e)})).error((function(){i.error(o.instant("could.not.upload.file.error"))}))}})),e.getBackToPreviousPage=function(){c.history.back()}}function r(e,t,n){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")},e.license=n}function o(e){e.loader=!0,e.setLoader=function(t){e.loader=t}}angular.module("graphdb.framework.settings.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","toastr"]).controller("ActiveLocationSettingsCtrl",s).controller("ValidateLicenseModalCtrl",r).controller("LicenseCtrl",i).controller("RegisterLicenseCtrl",c).controller("LoaderSamplesCtrl",o),s.$inject=["$scope","toastr","$uibModalInstance","LicenseRestService","$translate"],i.$inject=["$scope","LicenseRestService","$licenseService","toastr","$rootScope","ModalService","$translate"],c.$inject=["$scope","LicenseRestService","$location","$uibModal","toastr","$window","$jwtAuth","$translate"],r.$inject=["$scope","$uibModalInstance","license"],o.$inject=["$scope"]}}]);
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[168],{250:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/operations-statuses-monitor.css?v=2.4.0-RC1" rel="stylesheet"/>\n\n<div ng-if="activeOperations && activeOperations.operations && activeOperations.operations.length > 0" class="operations-statuses btn-group btn-group-lg">\n <button type="button" class="btn operations-statuses-dropdown-toggle dropdown-toggle" data-toggle="dropdown">\n <div class="operation-status-header" ng-repeat="operationGroup in operationsSummary" ng-if="operationsSummary && operationsSummary.length > 0 && operationGroup.runningOperations">\n <div ng-class="{\n \'icon-import\': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n \'icon-exchange\': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n \'fa fa-archive\': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n \'fa fa-sitemap\': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n \'text-danger\': OPERATION_STATUS.CRITICAL === activeOperations.status,\n \'text-info\': OPERATION_STATUS.INFORMATION === activeOperations.status,\n \'text-warning\': OPERATION_STATUS.WARNING === activeOperations.status}">\n </div>\n <span ng-if="OPERATION_GROUP_TYPE.CLUSTER_OPERATION !== operationGroup.type" class="running-operation-count">\n <sup class="tag-info">{{operationGroup.runningOperations}}</sup>\n </span>\n </div>\n <span class="caret"></span>\n </button>\n <ul role="menu" class="dropdown-menu dropdown-menu-center">\n <div class="operations-statuses-content">\n <li ng-repeat="operationStatus in activeOperations.operations">\n <a class="operation-status-content btn" target="_blank" ng-attr-href="{{operationStatus.monitoringViewUrl}}"\n ng-class="{ \'last-operation\': $last,\n \'first-operation\': $first}">\n <div ng-class="{\n \'icon-import\': OPERATION_TYPE.IMPORTS === operationStatus.type,\n \'icon-exchange\': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n \'fa fa-archive\': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n \'fa fa-sitemap\': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type,\n \'text-danger\': OPERATION_STATUS.CRITICAL === operationStatus.status,\n \'text-info\': OPERATION_STATUS.INFORMATION === operationStatus.status,\n \'text-warning\': OPERATION_STATUS.WARNING === operationStatus.status}">\n </div>\n <div class="operation-status-label">\n <ng-pluralize count="operationStatus.runningOperationCount || 1"\n when="{\'one\': \'{{(&quot;global.operations_statuses.&quot; + operationStatus.titleLabelKey + &quot;.title&quot;) | translate}}\',\n \'other\': \'{{(&quot;global.operations_statuses.&quot; + operationStatus.titleLabelKey + &quot;.title.plural&quot;) | translate}}\'}">\n </ng-pluralize>\n </div>\n <div ng-if="OPERATION_TYPE.CLUSTER_STATUS !== operationStatus.type" class="operation-status-running-operation-count tag-info">\n {{operationStatus.runningOperationCount || 1}}\n </div>\n <div class="icon-external"></div>\n </a>\n </li>\n </div>\n </ul>\n</div>\n';return __p}}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[168],{250:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/operations-statuses-monitor.css?v=2.4.0-RC3" rel="stylesheet"/>\n\n<div ng-if="activeOperations && activeOperations.operations && activeOperations.operations.length > 0" class="operations-statuses btn-group btn-group-lg">\n <button type="button" class="btn operations-statuses-dropdown-toggle dropdown-toggle" data-toggle="dropdown">\n <div class="operation-status-header" ng-repeat="operationGroup in operationsSummary" ng-if="operationsSummary && operationsSummary.length > 0 && operationGroup.runningOperations">\n <div ng-class="{\n \'icon-import\': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n \'icon-exchange\': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n \'fa fa-archive\': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n \'fa fa-sitemap\': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n \'text-danger\': OPERATION_STATUS.CRITICAL === activeOperations.status,\n \'text-info\': OPERATION_STATUS.INFORMATION === activeOperations.status,\n \'text-warning\': OPERATION_STATUS.WARNING === activeOperations.status}">\n </div>\n <span ng-if="OPERATION_GROUP_TYPE.CLUSTER_OPERATION !== operationGroup.type" class="running-operation-count">\n <sup class="tag-info">{{operationGroup.runningOperations}}</sup>\n </span>\n </div>\n <span class="caret"></span>\n </button>\n <ul role="menu" class="dropdown-menu dropdown-menu-center">\n <div class="operations-statuses-content">\n <li ng-repeat="operationStatus in activeOperations.operations">\n <a class="operation-status-content btn" target="_blank" ng-attr-href="{{operationStatus.monitoringViewUrl}}"\n ng-class="{ \'last-operation\': $last,\n \'first-operation\': $first}">\n <div ng-class="{\n \'icon-import\': OPERATION_TYPE.IMPORTS === operationStatus.type,\n \'icon-exchange\': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n \'fa fa-archive\': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n \'fa fa-sitemap\': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type,\n \'text-danger\': OPERATION_STATUS.CRITICAL === operationStatus.status,\n \'text-info\': OPERATION_STATUS.INFORMATION === operationStatus.status,\n \'text-warning\': OPERATION_STATUS.WARNING === operationStatus.status}">\n </div>\n <div class="operation-status-label">\n <ng-pluralize count="operationStatus.runningOperationCount || 1"\n when="{\'one\': \'{{(&quot;global.operations_statuses.&quot; + operationStatus.titleLabelKey + &quot;.title&quot;) | translate}}\',\n \'other\': \'{{(&quot;global.operations_statuses.&quot; + operationStatus.titleLabelKey + &quot;.title.plural&quot;) | translate}}\'}">\n </ng-pluralize>\n </div>\n <div ng-if="OPERATION_TYPE.CLUSTER_STATUS !== operationStatus.type" class="operation-status-running-operation-count tag-info">\n {{operationStatus.runningOperationCount || 1}}\n </div>\n <div class="icon-external"></div>\n </a>\n </li>\n </div>\n </ul>\n</div>\n';return __p}}}]);
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[171],{253:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=2.4.0-RC1" rel="stylesheet"/>\n\n<div ng-if="getActiveRepository() && hasActiveLocation() && isNotLoading()" ng-cloak>\n <div id="search-box" class="card search-rdf-input" ng-keydown="onKeyDown($event)" ng-if="!isHomePage()">\n <div class="card-block">\n <search-resource-input namespacespromise="getNamespacesPromise"\n autocompletepromisestatus="getAutocompletePromise"\n empty="empty"\n open-in-new-tab="true"\n preserve-search="true"\n radio-buttons="true"\n clear-input-icon="true">\n </search-resource-input>\n <button class="btn btn-link close-rdf-search-btn"\n gdb-tooltip="{{\'search.resource.close.msg\' | translate}}" tooltip-placement="bottom"\n ng-click="hideInput()">\n <i class="icon-close icon-2x" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <button class="btn btn-link search-rdf-btn"\n gdb-tooltip="{{\'search.resources.msg\' | translate}}"\n tooltip-placement="bottom"\n ng-click="showInput()">\n <i class="icon-search icon-2x" aria-hidden="true"></i>\n </button>\n</div>\n';return __p}}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[171],{253:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=2.4.0-RC3" rel="stylesheet"/>\n\n<div ng-if="getActiveRepository() && hasActiveLocation() && isNotLoading()" ng-cloak>\n <div id="search-box" class="card search-rdf-input" ng-keydown="onKeyDown($event)" ng-if="!isHomePage()">\n <div class="card-block">\n <search-resource-input namespacespromise="getNamespacesPromise"\n autocompletepromisestatus="getAutocompletePromise"\n empty="empty"\n open-in-new-tab="true"\n preserve-search="true"\n radio-buttons="true"\n clear-input-icon="true">\n </search-resource-input>\n <button class="btn btn-link close-rdf-search-btn"\n gdb-tooltip="{{\'search.resource.close.msg\' | translate}}" tooltip-placement="bottom"\n ng-click="hideInput()">\n <i class="icon-close icon-2x" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <button class="btn btn-link search-rdf-btn"\n gdb-tooltip="{{\'search.resources.msg\' | translate}}"\n tooltip-placement="bottom"\n ng-click="showInput()">\n <i class="icon-search icon-2x" aria-hidden="true"></i>\n </button>\n</div>\n';return __p}}}]);
@@ -1,2 +1,2 @@
1
1
  (window.webpackJsonp=window.webpackJsonp||[]).push([[18,39,45,75,152],{145:function(e,t,n){"use strict";n.r(t);n(6),n(22),n(95),n(63),n(21),n(299);angular.module("graphdb.framework.impex.export",["ui.bootstrap","toastr","ngRoute","ngCookies","graphdb.framework.impex.export.controllers","graphdb.framework.core.directives.paginations","graphdb.framework.core.services.repositories","graphdb.framework.core.directives"]).config(["$uibTooltipProvider",function(e){e.setTriggers({showExportDDTooltip:"showExportDDTooltip"})}])},294:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},295:function(e,t){(function(t){e.exports=t}).call(this,{})},299:function(e,t,n){var o,r=r||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),r=e.webkitRequestFileSystem,i=e.requestFileSystem||r||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},s=0,p=function(t){var o=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,500)},l=function(e,t,n){for(var o=(t=[].concat(t)).length;o--;){var r=e["on"+t[o]];if("function"==typeof r)try{r.call(e,n||e)}catch(e){a(e)}}},c=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},u=function(t,a){t=c(t);var u,g,d,f=this,h=t.type,m=!1,x=function(){l(f,"writestart progress write writeend".split(" "))},y=function(){(!m&&u||(u=n().createObjectURL(t)),g)?g.location.href=u:null==e.open(u,"_blank")&&"undefined"!=typeof safari&&(e.location.href=u);f.readyState=f.DONE,x(),p(u)},w=function(e){return function(){if(f.readyState!==f.DONE)return e.apply(this,arguments)}},v={create:!0,exclusive:!1};if(f.readyState=f.INIT,a||(a="download"),o)return u=n().createObjectURL(t),o.href=u,o.download=a,void setTimeout((function(){var e,t;e=o,t=new MouseEvent("click"),e.dispatchEvent(t),x(),p(u),f.readyState=f.DONE}));e.chrome&&h&&"application/octet-stream"!==h&&(d=t.slice||t.webkitSlice,t=d.call(t,0,t.size,"application/octet-stream"),m=!0),r&&"download"!==a&&(a+=".download"),("application/octet-stream"===h||r)&&(g=e),i?(s+=t.size,i(e.TEMPORARY,s,w((function(e){e.root.getDirectory("saved",v,w((function(e){var n=function(){e.getFile(a,v,w((function(e){e.createWriter(w((function(n){n.onwriteend=function(t){g.location.href=e.toURL(),f.readyState=f.DONE,l(f,"writeend",t),p(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&y()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=f["on"+e]})),n.write(t),f.abort=function(){n.abort(),f.readyState=f.DONE},f.readyState=f.WRITING})),y)})),y)};e.getFile(a,{create:!1},w((function(e){e.remove(),n()})),w((function(e){e.code===e.NOT_FOUND_ERR?n():y()})))})),y)})),y)):y()},g=u.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(c(e),t)}:(g.abort=function(){this.readyState=this.DONE,l(this,"abort")},g.readyState=g.INIT=0,g.WRITING=1,g.DONE=2,g.error=g.onwritestart=g.onprogress=g.onwrite=g.onabort=g.onerror=g.onwriteend=null,function(e,t){return new u(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);
2
- /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=r:null!==n(294)&&null!=n(295)&&(void 0===(o=function(){return r}.apply(t,[]))||(e.exports=o))},63:function(e,t){angular.module("graphdb.framework.core.directives.paginations",[]).directive("paginations",(function(){return{template:'<uib-pagination class="nav navbar-right" total-items="matchedElements.length" items-per-page="pageSize" ng-model="page" ng-change="changePagination()" direction-links="false" boundary-links="true" max-size="5" rotate="true"></uib-pagination>'}}))},78:function(e,t){angular.module("graphdb.workbench.utils.filetypes",[]).value("FileTypes",[{name:"JSON",type:"application/rdf+json",extension:".json"},{name:"JSON-LD",type:"application/ld+json",extension:".jsonld"},{name:"RDF-XML",type:"application/rdf+xml",extension:".rdf"},{name:"N3",type:"text/rdf+n3",extension:".n3"},{name:"N-Triples",type:"text/plain",extension:".nt"},{name:"N-Quads",type:"text/x-nquads",extension:".nq"},{name:"Turtle",type:"text/turtle",extension:".ttl"},{name:"Turtle*",type:"application/x-turtlestar",extension:".ttls"},{name:"TriX",type:"application/trix",extension:".trix"},{name:"TriG",type:"application/x-trig",extension:".trig"},{name:"TriG*",type:"application/x-trigstar",extension:".trigs"},{name:"Binary RDF",type:"application/x-binary-rdf",extension:".brf"}])},95:function(e,t,n){"use strict";n.r(t);n(6),n(21),n(23),n(78);var o=n(0),r=n(86);angular.module("graphdb.framework.impex.export.controllers",["ngCookies","ui.bootstrap","toastr","graphdb.framework.core.services.repositories","graphdb.framework.core.services.jwtauth","graphdb.workbench.utils.filetypes"]).controller("ExportCtrl",["$scope","$http","$location","$timeout","ModalService","filterFilter","$repositories","toastr","RDF4JRepositoriesRestService","FileTypes","$translate","AuthTokenService",function(e,t,n,i,a,s,p,l,c,u,g,d){e.getActiveRepository=function(){return p.getActiveRepository()},e.exportFormats=u,e.deleting={},e.showExportDDTooltip=!0,e.page=1,e.pageSize=10,e.pageSizeOptions=[10,20,50,100],e.displayGraphs=[],e.exportFilter="",e.export=!0,e.exportMultipleGraphs=!1,e.repoExportFormat={name:"TriG",type:"application/x-trig",extension:".trig"},e.selectedGraphs={exportGraphs:{}},e.$watch((function(){return p.getActiveRepository()}),(function(){e.exportFilter="",e.getGraphs(),e.selectedAll=!1,i((function(){e.changePageSize(10)}),100)})),e.isShacl=function(e){return"http%3A%2F%2Frdf4j.org%2Fschema%2Frdf4j%23SHACLShapeGraph"===e},e.getGraphs=function(){e.getActiveRepository()?(e.loader=!0,c.getGraphs(e.getActiveRepository()).success((function(t){t.results.bindings.unshift({contextID:{type:"default",value:"import.default.graph"}}),e.graphsByValue={},Object.keys(t.results.bindings).forEach((function(n){const o=t.results.bindings[n];"bnode"===o.contextID.type?o.contextID.value="_:"+o.contextID.value:"default"===o.contextID.type?(o.contextID.uri=encodeURIComponent("http://www.openrdf.org/schema/sesame#nil"),o.contextID.clearUri="DEFAULT",o.contextID.exportUri="null",o.contextID.longName="default graph"):(o.contextID.uri=encodeURIComponent(o.contextID.value),o.contextID.clearUri="GRAPH <"+o.contextID.value+">",o.contextID.exportUri=encodeURIComponent("<"+o.contextID.value+">"),o.contextID.longName="named graph "+o.contextID.value),e.graphsByValue[o.contextID.value]=o.contextID})),e.graphs=t.results.bindings,e.filteredGraphs=Object(r.cloneDeep)(e.graphs),e.displayGraphs=e.filteredGraphs.slice(e.pageSize*(e.page-1),e.pageSize*e.page),e.loader=!1,e.selectedGraphs.exportGraphs={},e.matchedElements=e.graphs})).error((function(t,n){const o=getError(t,n);"There is no active location!"===o&&(p.setRepository(""),l.error(o,g.instant("common.error"))),e.loader=!1}))):e.loader=!1},e.onGraphSearch=function(){e.matchedElements=[],e.deselectAll(),e.filterResults()},e.filterResults=function(){angular.forEach(e.graphs,(function(t){-1!==t.contextID.value.indexOf(e.exportFilter)&&e.matchedElements.push(t)}))},e.downloadExport=function(e,t){let n=e+"&Accept="+encodeURIComponent(t.type);const o=d.getAuthToken();o&&(n=n+"&authToken="+encodeURIComponent(o));let r=window.open(n);i((function(){"about:blank"!==r.document.location.href&&(r.close(),l.error("Could not export graph. Check GraphDB logs for detailed reason."))}),100)},e.openExportDDTooltip=function(){e.showExportDDTooltip&&(i((function(){$("#tooltipTarget").trigger("showExportDDTooltip")}),0),i((function(){$("#tooltipTarget").trigger("showExportDDTooltip")}),3e3),e.showExportDDTooltip=!1)},e.exportRepo=function(t,n){"application/rdf+xml"===t.type||"text/plain"===t.type||"text/turtle"===t.type||"application/x-turtlestar"===t.type||"text/rdf+n3"===t.type?a.openSimpleModal({title:g.instant("common.warning"),message:Object(o.decodeHTML)(g.instant("export.format.warning.msg")),warning:!0}).result.then((function(){e.startDownload(t,n)})):e.startDownload(t,n)},e.startDownload=function(t,n){let o;const r=p.getActiveRepositoryObject();o=n?`repositories/${r.id}/statements?infer=false&context=${e.graphsByValue[n.value].exportUri}&location=${encodeURIComponent(r.location)}`:`repositories/${r.id}/statements?infer=false&location=${encodeURIComponent(r.location)}`,e.downloadExport(o,t)},e.hasMultipleSelected=function(){if(_.isEmpty(e.selectedGraphs.exportGraphs))return!_.isEmpty(e.selectedGraphs.exportGraphs);for(const t in e.selectedGraphs.exportGraphs)if(!0===e.selectedGraphs.exportGraphs[t])return!0;return!1},e.exportSelectedGraphs=function(t){let n="";for(const t in e.selectedGraphs.exportGraphs)e.selectedGraphs.exportGraphs[t]&&(n+="context="+e.graphsByValue[t].exportUri+"&");if(n){const r=function(){n=n.substring(0,n.length-1);const o="repositories/"+e.getActiveRepository()+"/statements?infer=false&"+n;e.downloadExport(o,t)};"application/rdf+xml"===t.type||"text/plain"===t.type||"text/turtle"===t.type||"application/x-turtlestar"===t.type||"text/rdf+n3"===t.type?a.openSimpleModal({title:g.instant("common.warning"),message:Object(o.decodeHTML)(g.instant("export.format.warning.msg")),warning:!0}).result.then((function(){r()})):r()}else a.openSimpleModal({title:g.instant("export.multiple.graph"),message:g.instant("export.check.graphs.msg"),warning:!0})},e.$watch("exportFilter",(function(){if(e.filteredGraphs=s(e.graphs,e.exportFilter),e.getActiveRepository()&&angular.element(document).find(".btn.btn-secondary.btn-sm.dropdown-toggle span").length){const t=angular.element(document).find(".btn.btn-secondary.btn-sm.dropdown-toggle span")[0].innerHTML.trim();let n;"All"===t&&(n=e.filteredGraphs.length),e.filteredGraphs&&e.filteredGraphs.length>e.pageSize&&"All"!==t&&(n=e.pageSize),e.changePageSize(n),e.changePagination()}})),e.changePagination=function(){e.selectedAll=!1,angular.isDefined(e.filteredGraphs)&&(e.displayGraphs=e.filteredGraphs.slice(e.pageSize*(e.page-1),e.pageSize*e.page))},e.changePageSize=function(t){$(".ot-graph-page-size").removeClass("active"),e.page=1,t&&(e.pageSize=t,e.changePagination()),e.filteredGraphs&&""!==e.exportFilter&&(e.displayGraphs=e.filteredGraphs)},e.checkAll=function(){e.selectedAll=e.selectedAll||!1,angular.forEach(e.displayGraphs,(function(t){t.contextID.uri&&(e.selectedGraphs.exportGraphs[t.contextID.value]=e.selectedAll)}))},e.deselectAll=function(){e.selectedAll=!1,angular.forEach(e.displayGraphs,(function(t){t.contextID.uri&&(e.selectedGraphs.exportGraphs[t.contextID.value]=!1)}))},e.dropRepository=function(){e.canWriteActiveRepo()&&(e.deleting["*"]=!0,a.openSimpleModal({title:g.instant("export.confirm.clear.msg"),message:g.instant("export.warning.clear.repo.msg",{repo:p.getActiveRepository()}),warning:!0}).result.then((function(){i((function(){c.addStatements(p.getActiveRepository(),"update=CLEAR ALL").then((function(){e.deleting["*"]=!1,l.success(g.instant("export.cleared.repo",{repo:p.getActiveRepository()})),e.getGraphs()}),(function(t){e.deleting["*"]=!1;const n=t.data;"string"==typeof n&&n.indexOf("Clearing all statements in the repository is incompatible with collecting history")>-1?l.error(g.instant("export.clearing.statements.warning")):l.error(g.instant("export.cleared.repo.failed.msg",{repo:p.getActiveRepository()}),t)}))}),100)})))},e.dropContext=function(t){e.canWriteActiveRepo()&&(angular.isDefined(t)?function(t){const n=t.contextID.longName;e.deleting[t]=!0,a.openSimpleModal({title:g.instant("export.confirm.clear.graph"),message:g.instant("export.clear.graph.warning",{longName:n}),warning:!0}).result.then((function(){i((function(){const o="update=CLEAR "+t.contextID.clearUri;c.addStatements(p.getActiveRepository(),o).then((function(){e.deleting[t]=!1,l.success(g.instant("export.cleared.graph",{longName:n})),e.getGraphs(),e.exportFilter="",e.filteredGraphs.length=0,e.updateResults(),e.changePageSize(e.pageSize)}),(function(o){e.deleting[t]=!1,l.error(g.instant("export.clear.graph.msg",{longName:n}),getError(o,o.status))}))}),100)}),(function(){e.deleting[t]=!1}))}(t):function(t){const n=[];angular.forEach(e.selectedGraphs.exportGraphs,(function(e,t){e&&n.push(t)})),n.length>0&&(e.deleting[t]=!0,a.openSimpleModal({title:g.instant("export.confirm.clear.graph"),message:g.instant("export.warning.clear.graph.msg"),warning:!0}).result.then((function(){i((function(){let t=0;angular.forEach(n,(function(o){const r="update=CLEAR "+e.graphsByValue[o].clearUri;c.addStatements(p.getActiveRepository(),r).then((function(){e.loader=!0,e.selectedGraphs.exportGraphs[o]=!1,delete e.selectedGraphs.exportGraphs[o],t++,n.length===t&&(e.selectedAll=!1,e.exportFilter="",e.filteredGraphs.length=0,e.getGraphs(),e.updateResults(),e.changePageSize(e.pageSize),l.success(g.instant("export.cleared.graph.msg")),e.loader=!1)}),(function(t){const n=e.graphsByValue[o].longName;l.error(g.instant("export.clear.graph.msg",{longName:n}),getError(t,t.status)),e.selectedAll=!1}))}))}),100)}),(function(){e.deleting[t]=!1})))}(t))}}])}}]);
2
+ /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=r:null!==n(294)&&null!=n(295)&&(void 0===(o=function(){return r}.apply(t,[]))||(e.exports=o))},63:function(e,t){angular.module("graphdb.framework.core.directives.paginations",[]).directive("paginations",(function(){return{template:'<uib-pagination class="nav navbar-right" total-items="matchedElements.length" items-per-page="pageSize" ng-model="page" ng-change="changePagination()" direction-links="false" boundary-links="true" max-size="5" rotate="true"></uib-pagination>'}}))},78:function(e,t){angular.module("graphdb.workbench.utils.filetypes",[]).value("FileTypes",[{name:"JSON",type:"application/rdf+json",extension:".json"},{name:"JSON-LD",type:"application/ld+json",extension:".jsonld"},{name:"RDF-XML",type:"application/rdf+xml",extension:".rdf"},{name:"N3",type:"text/rdf+n3",extension:".n3"},{name:"N-Triples",type:"text/plain",extension:".nt"},{name:"N-Quads",type:"text/x-nquads",extension:".nq"},{name:"Turtle",type:"text/turtle",extension:".ttl"},{name:"Turtle*",type:"application/x-turtlestar",extension:".ttls"},{name:"TriX",type:"application/trix",extension:".trix"},{name:"TriG",type:"application/x-trig",extension:".trig"},{name:"TriG*",type:"application/x-trigstar",extension:".trigs"},{name:"Binary RDF",type:"application/x-binary-rdf",extension:".brf"}])},95:function(e,t,n){"use strict";n.r(t);n(6),n(21),n(23),n(78);var o=n(0),r=n(82);angular.module("graphdb.framework.impex.export.controllers",["ngCookies","ui.bootstrap","toastr","graphdb.framework.core.services.repositories","graphdb.framework.core.services.jwtauth","graphdb.workbench.utils.filetypes"]).controller("ExportCtrl",["$scope","$http","$location","$timeout","ModalService","filterFilter","$repositories","toastr","RDF4JRepositoriesRestService","FileTypes","$translate","AuthTokenService",function(e,t,n,i,a,s,p,l,c,u,g,d){e.getActiveRepository=function(){return p.getActiveRepository()},e.exportFormats=u,e.deleting={},e.showExportDDTooltip=!0,e.page=1,e.pageSize=10,e.pageSizeOptions=[10,20,50,100],e.displayGraphs=[],e.exportFilter="",e.export=!0,e.exportMultipleGraphs=!1,e.repoExportFormat={name:"TriG",type:"application/x-trig",extension:".trig"},e.selectedGraphs={exportGraphs:{}},e.$watch((function(){return p.getActiveRepository()}),(function(){e.exportFilter="",e.getGraphs(),e.selectedAll=!1,i((function(){e.changePageSize(10)}),100)})),e.isShacl=function(e){return"http%3A%2F%2Frdf4j.org%2Fschema%2Frdf4j%23SHACLShapeGraph"===e},e.getGraphs=function(){e.getActiveRepository()?(e.loader=!0,c.getGraphs(e.getActiveRepository()).success((function(t){t.results.bindings.unshift({contextID:{type:"default",value:"import.default.graph"}}),e.graphsByValue={},Object.keys(t.results.bindings).forEach((function(n){const o=t.results.bindings[n];"bnode"===o.contextID.type?o.contextID.value="_:"+o.contextID.value:"default"===o.contextID.type?(o.contextID.uri=encodeURIComponent("http://www.openrdf.org/schema/sesame#nil"),o.contextID.clearUri="DEFAULT",o.contextID.exportUri="null",o.contextID.longName="default graph"):(o.contextID.uri=encodeURIComponent(o.contextID.value),o.contextID.clearUri="GRAPH <"+o.contextID.value+">",o.contextID.exportUri=encodeURIComponent("<"+o.contextID.value+">"),o.contextID.longName="named graph "+o.contextID.value),e.graphsByValue[o.contextID.value]=o.contextID})),e.graphs=t.results.bindings,e.filteredGraphs=Object(r.cloneDeep)(e.graphs),e.displayGraphs=e.filteredGraphs.slice(e.pageSize*(e.page-1),e.pageSize*e.page),e.loader=!1,e.selectedGraphs.exportGraphs={},e.matchedElements=e.graphs})).error((function(t,n){const o=getError(t,n);"There is no active location!"===o&&(p.setRepository(""),l.error(o,g.instant("common.error"))),e.loader=!1}))):e.loader=!1},e.onGraphSearch=function(){e.matchedElements=[],e.deselectAll(),e.filterResults()},e.filterResults=function(){angular.forEach(e.graphs,(function(t){-1!==t.contextID.value.indexOf(e.exportFilter)&&e.matchedElements.push(t)}))},e.downloadExport=function(e,t){let n=e+"&Accept="+encodeURIComponent(t.type);const o=d.getAuthToken();o&&(n=n+"&authToken="+encodeURIComponent(o));let r=window.open(n);i((function(){"about:blank"!==r.document.location.href&&(r.close(),l.error("Could not export graph. Check GraphDB logs for detailed reason."))}),100)},e.openExportDDTooltip=function(){e.showExportDDTooltip&&(i((function(){$("#tooltipTarget").trigger("showExportDDTooltip")}),0),i((function(){$("#tooltipTarget").trigger("showExportDDTooltip")}),3e3),e.showExportDDTooltip=!1)},e.exportRepo=function(t,n){"application/rdf+xml"===t.type||"text/plain"===t.type||"text/turtle"===t.type||"application/x-turtlestar"===t.type||"text/rdf+n3"===t.type?a.openSimpleModal({title:g.instant("common.warning"),message:Object(o.decodeHTML)(g.instant("export.format.warning.msg")),warning:!0}).result.then((function(){e.startDownload(t,n)})):e.startDownload(t,n)},e.startDownload=function(t,n){let o;const r=p.getActiveRepositoryObject();o=n?`repositories/${r.id}/statements?infer=false&context=${e.graphsByValue[n.value].exportUri}&location=${encodeURIComponent(r.location)}`:`repositories/${r.id}/statements?infer=false&location=${encodeURIComponent(r.location)}`,e.downloadExport(o,t)},e.hasMultipleSelected=function(){if(_.isEmpty(e.selectedGraphs.exportGraphs))return!_.isEmpty(e.selectedGraphs.exportGraphs);for(const t in e.selectedGraphs.exportGraphs)if(!0===e.selectedGraphs.exportGraphs[t])return!0;return!1},e.exportSelectedGraphs=function(t){let n="";for(const t in e.selectedGraphs.exportGraphs)e.selectedGraphs.exportGraphs[t]&&(n+="context="+e.graphsByValue[t].exportUri+"&");if(n){const r=function(){n=n.substring(0,n.length-1);const o="repositories/"+e.getActiveRepository()+"/statements?infer=false&"+n;e.downloadExport(o,t)};"application/rdf+xml"===t.type||"text/plain"===t.type||"text/turtle"===t.type||"application/x-turtlestar"===t.type||"text/rdf+n3"===t.type?a.openSimpleModal({title:g.instant("common.warning"),message:Object(o.decodeHTML)(g.instant("export.format.warning.msg")),warning:!0}).result.then((function(){r()})):r()}else a.openSimpleModal({title:g.instant("export.multiple.graph"),message:g.instant("export.check.graphs.msg"),warning:!0})},e.$watch("exportFilter",(function(){if(e.filteredGraphs=s(e.graphs,e.exportFilter),e.getActiveRepository()&&angular.element(document).find(".btn.btn-secondary.btn-sm.dropdown-toggle span").length){const t=angular.element(document).find(".btn.btn-secondary.btn-sm.dropdown-toggle span")[0].innerHTML.trim();let n;"All"===t&&(n=e.filteredGraphs.length),e.filteredGraphs&&e.filteredGraphs.length>e.pageSize&&"All"!==t&&(n=e.pageSize),e.changePageSize(n),e.changePagination()}})),e.changePagination=function(){e.selectedAll=!1,angular.isDefined(e.filteredGraphs)&&(e.displayGraphs=e.filteredGraphs.slice(e.pageSize*(e.page-1),e.pageSize*e.page))},e.changePageSize=function(t){$(".ot-graph-page-size").removeClass("active"),e.page=1,t&&(e.pageSize=t,e.changePagination()),e.filteredGraphs&&""!==e.exportFilter&&(e.displayGraphs=e.filteredGraphs)},e.checkAll=function(){e.selectedAll=e.selectedAll||!1,angular.forEach(e.displayGraphs,(function(t){t.contextID.uri&&(e.selectedGraphs.exportGraphs[t.contextID.value]=e.selectedAll)}))},e.deselectAll=function(){e.selectedAll=!1,angular.forEach(e.displayGraphs,(function(t){t.contextID.uri&&(e.selectedGraphs.exportGraphs[t.contextID.value]=!1)}))},e.dropRepository=function(){e.canWriteActiveRepo()&&(e.deleting["*"]=!0,a.openSimpleModal({title:g.instant("export.confirm.clear.msg"),message:g.instant("export.warning.clear.repo.msg",{repo:p.getActiveRepository()}),warning:!0}).result.then((function(){i((function(){c.addStatements(p.getActiveRepository(),"update=CLEAR ALL").then((function(){e.deleting["*"]=!1,l.success(g.instant("export.cleared.repo",{repo:p.getActiveRepository()})),e.getGraphs()}),(function(t){e.deleting["*"]=!1;const n=t.data;"string"==typeof n&&n.indexOf("Clearing all statements in the repository is incompatible with collecting history")>-1?l.error(g.instant("export.clearing.statements.warning")):l.error(g.instant("export.cleared.repo.failed.msg",{repo:p.getActiveRepository()}),t)}))}),100)})))},e.dropContext=function(t){e.canWriteActiveRepo()&&(angular.isDefined(t)?function(t){const n=t.contextID.longName;e.deleting[t]=!0,a.openSimpleModal({title:g.instant("export.confirm.clear.graph"),message:g.instant("export.clear.graph.warning",{longName:n}),warning:!0}).result.then((function(){i((function(){const o="update=CLEAR "+t.contextID.clearUri;c.addStatements(p.getActiveRepository(),o).then((function(){e.deleting[t]=!1,l.success(g.instant("export.cleared.graph",{longName:n})),e.getGraphs(),e.exportFilter="",e.filteredGraphs.length=0,e.updateResults(),e.changePageSize(e.pageSize)}),(function(o){e.deleting[t]=!1,l.error(g.instant("export.clear.graph.msg",{longName:n}),getError(o,o.status))}))}),100)}),(function(){e.deleting[t]=!1}))}(t):function(t){const n=[];angular.forEach(e.selectedGraphs.exportGraphs,(function(e,t){e&&n.push(t)})),n.length>0&&(e.deleting[t]=!0,a.openSimpleModal({title:g.instant("export.confirm.clear.graph"),message:g.instant("export.warning.clear.graph.msg"),warning:!0}).result.then((function(){i((function(){let t=0;angular.forEach(n,(function(o){const r="update=CLEAR "+e.graphsByValue[o].clearUri;c.addStatements(p.getActiveRepository(),r).then((function(){e.loader=!0,e.selectedGraphs.exportGraphs[o]=!1,delete e.selectedGraphs.exportGraphs[o],t++,n.length===t&&(e.selectedAll=!1,e.exportFilter="",e.filteredGraphs.length=0,e.getGraphs(),e.updateResults(),e.changePageSize(e.pageSize),l.success(g.instant("export.cleared.graph.msg")),e.loader=!1)}),(function(t){const n=e.graphsByValue[o].longName;l.error(g.instant("export.clear.graph.msg",{longName:n}),getError(t,t.status)),e.selectedAll=!1}))}))}),100)}),(function(){e.deleting[t]=!1})))}(t))}}])}}]);
@@ -1 +1 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[198],{280:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<script type="text/ng-template" id="popover-content-user.html">\n\t<h5>{{\'security.user.may\' | translate}}</h5>\n\t<ul>\n <li>{{\'security.use.gdb\' | translate}}</li>\n\t <li>{{\'security.grant.read.access\' | translate}}</li>\n\t\t<li>{{\'security.grant.read.write.access\' | translate}}</li>\n </ul>\n<\/script>\n\n<script type="text/ng-template" id="popover-content-repo-manager.html">\n\t<h5>{{\'security.repo.manager.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t</ul>\n<\/script>\n\n<script type="text/ng-template" id="popover-content-admin.html">\n\t<h5>{{\'security.admin.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t\t<li>{{\'security.attach.remote.locations\' | translate}}</li>\n\t\t<li>{{\'security.manage.users.access\' | translate}}</li>\n\t\t<li>{{\'security.manage.cluster\' | translate}}</li>\n\t\t<li>{{\'security.view.sys.info\' | translate}}</li>\n\t</ul>\n<\/script>\n\n<link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=2.4.0-RC1" rel="stylesheet"/>\n\n<h1>{{pageTitle}}</h1>\n\n<div id="wb-user" ng-hide="loader">\n\t<form name="form" class="form newUserForm userForm editUserContainer" ng-submit="submit()" novalidate>\n\t\t<div class="row">\n\t\t\t<div class="col-md-6 us-left-col">\n\t\t\t\t<div class="card login-credentials" ng-hide="isOverrideAuth() || !isLocalAuthentication()">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'view.login.title\' | translate}}</h3>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': usernameError}">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" gdb-tooltip="{{\'security.table.username\' | translate}}"><em class="icon-user icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-username" placeholder="{{\'security.table.username\' | translate}}" name="username" class="form-control form-control-lg" type="text" ng-model="user.username" ng-readonly="mode !== \'add\'">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="usernameError" class="form-control-feedback">{{usernameError}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': passwordError}">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" gdb-tooltip="{{\'security.password.placeholder\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-password" placeholder="{{passwordPlaceholder | translate}}" name="password" class="form-control form-control-lg" type="password"\tng-model="user.password" ng-hide="user.external || hasExternalAuthUser()" ng-readonly="noPassword">\n\t\t\t\t\t\t\t\t<span ng-show="user.external || hasExternalAuthUser()">{{\'security.auth.from.external.module\' | translate}}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="passwordError" class="form-control-feedback">{{passwordError}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': confirmPasswordError}" ng-hide="user.external || hasExternalAuthUser()">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" gdb-tooltip="{{\'security.password.confirm\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-confirmpassword" placeholder="{{\'security.password.confirm\' | translate}}" name="password_confirm" class="form-control form-control-lg" type="password" ng-model="user.confirmpassword" ng-readonly="noPassword">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="confirmPasswordError" class="form-control-feedback">{{confirmPasswordError}}</div>\n\t\t\t\t\t\t</div>\n <div>\n <label class="d-block">\n <input type="checkbox" id="noPassword" ng-model="noPassword" ng-change="setNoPassword()">\n <span ng-show="mode === \'add\'">{{\'security.dont.set.password\' | translate}} </span>\n <span ng-show="mode !== \'add\'">{{\'security.unset.password\' | translate}} </span>\n </label>\n </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="card sparql-editor-settings" id="user-settings">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.user.settings\' | translate}}</h3>\n\n\t\t\t\t\t\t<div id="sameas-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="sameas-label">\n\t\t\t\t\t\t\t\t{{\'security.expand.sameAs.is\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_SAMEAS ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_SAMEAS ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span gdb-tooltip="{{shouldDisableSameAs() ? \'core.require.inferred\' : \'security.tooltip.click.me\' | translate}}" tooltip-placement="top"\n\t\t\t\t\t\t\t\t ng-click="user.appSettings.DEFAULT_SAMEAS = !user.appSettings.DEFAULT_SAMEAS"\n\t\t\t\t\t\t\t\t class="switch mr-0">\n\t\t\t\t\t\t\t\t<input id="sameAsCheck" type="checkbox" class="switch"\n ng-checked="user.appSettings.DEFAULT_SAMEAS"\n ng-disabled="shouldDisableSameAs()"/>\n\t\t\t\t\t\t\t\t<label for="sameas-on"></label>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{{\'security.default.editor.graph\' | translate}}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div id="inference-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="inference-label">\n\t\t\t\t\t\t\t\t{{\'security.inference.is\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_INFERENCE ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_INFERENCE ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top"\n\t\t\t\t\t\t\t\t ng-click="user.appSettings.DEFAULT_INFERENCE = !user.appSettings.DEFAULT_INFERENCE"\n\t\t\t\t\t\t\t\t class="switch mr-0">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_INFERENCE"/>\n\t\t\t\t\t\t\t\t<label for="inference-on"></label>\n\t\t\t\t\t\t\t</span>\n {{\'security.default.editor.graph\' | translate}}\n\t\t\t\t\t\t</div>\n\n <div id="schema-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="schema-label">\n\t\t\t\t\t\t\t\t{{\'security.show.schema\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n <span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top"\n ng-click="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA = !user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"\n class="switch mr-0">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"/>\n\t\t\t\t\t\t\t\t<label for="schema-on"></label>\n\t\t\t\t\t\t\t</span>\n {{\'security.default.visual.graph\' | translate}}\n\t\t\t\t\t\t\t</span>\n </div>\n\n\t\t\t\t\t\t<label class="d-block">\n\t\t\t\t\t\t\t<input type="checkbox" ng-model="user.appSettings.EXECUTE_COUNT" id="defaultCount" checked="appSettings.EXECUTE_COUNT">\n\t\t\t\t\t\t\t{{\'security.count.total.results\' | translate}}\n\t\t\t\t\t\t</label>\n\n\t\t\t\t\t\t<label class="d-block">\n\t\t\t\t\t\t\t<input type="checkbox" ng-model="user.appSettings.IGNORE_SHARED_QUERIES" id="ignore-shared" checked="appSettings.IGNORE_SHARED_QUERIES">\n\t\t\t\t\t\t\t{{\'security.ignore.shared.queries\' | translate}}\n\t\t\t\t\t\t</label>\n\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="card" id="workbench-settings" ng-if="showWorkbenchSettings">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.workbench.settings.title\' | translate}}\n\t\t\t\t\t\t\t<em class="icon-info text-tertiary small" gdb-tooltip="{{\'security.workbench.settings.theme.tooltip\' | translate}}"></em></h3>\n\t\t\t\t\t\t<div>\n <div class="form-group">\n <label class="col-lg-2">{{\'security.workbench.settings.theme.label\' | translate}}</label>\n <div class="btn-group theme-selector-dropdown" uib-dropdown>\n <button type="button" class="btn btn-sm btn-secondary dropdown-toggle theme-selector-dropdown-btn" uib-dropdown-toggle>\n {{selectedTheme.label}}\n </button>\n <ul class="dropdown-menu" role="menu">\n <li ng-repeat="theme in themes">\n <a ng-click="setTheme(theme)" class="dropdown-item">{{theme.label}}</a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class="form-group">\n <label class="col-lg-2">{{\'security.workbench.settings.theme.mode.label\' | translate}}</label>\n <div class="radio">\n <label class="px-1">\n <input type="radio" value="light" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/>\n {{\'security.workbench.settings.theme.mode.light\' | translate}}\n </label>\n <label class="px-1">\n <input type="radio" value="dark" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/>\n {{\'security.workbench.settings.theme.mode.dark\' | translate}}\n </label>\n </div>\n </div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="col-md-6 us-right-col" ng-hide="!isLocalAuthentication()">\n\t\t\t\t<div class="card user-role" id="user-roles">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.user.role\' | translate}}</h3>\n\t\t\t\t\t\t<label class="mr-1"\n\t\t\t\t\t\t\t uib-popover-template="\'popover-content-user.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleUser" value="user" ng-disabled="hasEditRestrictions()" >\n\t\t\t\t\t\t\t{{\'security.user.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<label class="mr-1"\n\t\t\t\t\t\t\t uib-popover-template="\'popover-content-repo-manager.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleRepoAdmin" value="repoManager" ng-disabled="hasEditRestrictions()">\n\t\t\t\t\t\t\t{{\'security.repo.manager.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<label uib-popover-template="\'popover-content-admin.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleAdmin" value="admin" ng-disabled="hasEditRestrictions()">\n\t\t\t\t\t\t\t{{\'security.admin.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n <div class="card user-custom-roles" id="user-custom-roles">\n <div class="card-block">\n <h3>{{\'security.user.custom_role\' | translate}}</h3>\n <div class="input-group">\n <tags-input class="wb-tags-input" ng-model="customRoles" min-length="2"\n ng-disabled="!isUser()"\n use-strings="true"\n add-on-space="true"\n add-on-comma="true"\n on-tag-added="addCustomRole($tag)"\n placeholder="{{\'security.user.add.custom_role.msg\' | translate}}"></tags-input>\n </div>\n </div>\n </div>\n\n\t\t\t\t<div id="user-repos" class="card user-repositories">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.repo.rights\' | translate}}</h3>\n\t\t\t\t\t\t<div class="has-danger">\n\t\t\t\t\t\t\t<p ng-show="repositoryCheckError" class="form-control-feedback">\n\t\t\t\t\t\t\t\t{{\'security.user.rights\' | translate}}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n <div class="scrollable-table">\n <table class="table table-hover table-sm" aria-describedby="User rights table">\n <thead>\n <tr>\n <th id="repositoryIdColumn">{{\'security.repository.title\' | translate}}</th>\n <th id="readRightsColumn" class="text-xs-center"><em class="icon-eye icon-lg" gdb-tooltip="{{\'security.tooltip.read\' | translate}}"></em></th>\n <th id="writeRightColumn" class="text-xs-center"><em class="icon-edit icon-lg" gdb-tooltip="{{\'security.tooltip.write\' | translate}}"></em></th>\n </tr>\n <tr>\n <th>{{\'security.any.data.repo\' | translate}}\n <em class="icon-info text-tertiary" gdb-tooltip="{{\'security.data.repos\' | translate}}"></em>\n </th>\n <th class="text-xs-center">\n <input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[\'*\']" ng-checked="hasReadPermission(\'*\')" ng-disabled="readCheckDisabled(\'*\')" ng-click="setGrantedAuthorities()">\n </th>\n <th class="text-xs-center">\n <input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[\'*\']" ng-checked="hasWritePermission(\'*\')" ng-disabled="writeCheckDisabled(\'*\')" ng-click="setGrantedAuthorities()">\n </th>\n </tr>\n </thead>\n <tbody>\n <div>\n <tr ng-repeat="repository in getReadableRepositories() | orderBy: [\'location\', \'id\']">\n <td class="repository-name">{{repository.id}}<small> &middot; {{repository.location ? repository.location : \'Local\'}}</small></td>\n <td class="text-xs-center read-rights"><input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[createUniqueKey(repository)]" ng-checked="hasReadPermission(repository)" ng-disabled="readCheckDisabled(repository)" ng-click="setGrantedAuthorities()"></td>\n <td class="text-xs-center write-rights"><input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]" ng-checked="hasWritePermission(repository)" ng-disabled="writeCheckDisabled(repository)" ng-click="setGrantedAuthorities()"></td>\n </tr>\n </div>\n </tbody>\n </table>\n </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n </div>\n\t\t</div>\n\n\t\t<div class="text-right">\n <button id="wb-user-goBack" class="btn btn-secondary" type="button" ng-click="goBack()">{{\'common.cancel.btn\' | translate}}</button>\n <button id="wb-user-submit" class="btn btn-primary" type="submit">{{saveButtonText}}</button>\n\t\t</div>\n\t</form>\n</div>\n<div class="ot-loader ot-main-loader" onto-loader size="50" ng-show="loader"></div>\n\n\n\n';return __p}}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[198],{280:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<script type="text/ng-template" id="popover-content-user.html">\n\t<h5>{{\'security.user.may\' | translate}}</h5>\n\t<ul>\n <li>{{\'security.use.gdb\' | translate}}</li>\n\t <li>{{\'security.grant.read.access\' | translate}}</li>\n\t\t<li>{{\'security.grant.read.write.access\' | translate}}</li>\n </ul>\n<\/script>\n\n<script type="text/ng-template" id="popover-content-repo-manager.html">\n\t<h5>{{\'security.repo.manager.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t</ul>\n<\/script>\n\n<script type="text/ng-template" id="popover-content-admin.html">\n\t<h5>{{\'security.admin.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t\t<li>{{\'security.attach.remote.locations\' | translate}}</li>\n\t\t<li>{{\'security.manage.users.access\' | translate}}</li>\n\t\t<li>{{\'security.manage.cluster\' | translate}}</li>\n\t\t<li>{{\'security.view.sys.info\' | translate}}</li>\n\t</ul>\n<\/script>\n\n<link href="css/lib/ng-tags-input/ng-tags-input.min.css?v=2.4.0-RC3" rel="stylesheet"/>\n\n<h1>{{pageTitle}}</h1>\n\n<div id="wb-user" ng-hide="loader">\n\t<form name="form" class="form newUserForm userForm editUserContainer" ng-submit="submit()" novalidate>\n\t\t<div class="row">\n\t\t\t<div class="col-md-6 us-left-col">\n\t\t\t\t<div class="card login-credentials" ng-hide="isOverrideAuth() || !isLocalAuthentication()">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'view.login.title\' | translate}}</h3>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': usernameError}">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" gdb-tooltip="{{\'security.table.username\' | translate}}"><em class="icon-user icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-username" placeholder="{{\'security.table.username\' | translate}}" name="username" class="form-control form-control-lg" type="text" ng-model="user.username" ng-readonly="mode !== \'add\'">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="usernameError" class="form-control-feedback">{{usernameError}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': passwordError}">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" gdb-tooltip="{{\'security.password.placeholder\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-password" placeholder="{{passwordPlaceholder | translate}}" name="password" class="form-control form-control-lg" type="password"\tng-model="user.password" ng-hide="user.external || hasExternalAuthUser()" ng-readonly="noPassword">\n\t\t\t\t\t\t\t\t<span ng-show="user.external || hasExternalAuthUser()">{{\'security.auth.from.external.module\' | translate}}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="passwordError" class="form-control-feedback">{{passwordError}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': confirmPasswordError}" ng-hide="user.external || hasExternalAuthUser()">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" gdb-tooltip="{{\'security.password.confirm\' | translate}}"><em class="icon-lock icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-confirmpassword" placeholder="{{\'security.password.confirm\' | translate}}" name="password_confirm" class="form-control form-control-lg" type="password" ng-model="user.confirmpassword" ng-readonly="noPassword">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="confirmPasswordError" class="form-control-feedback">{{confirmPasswordError}}</div>\n\t\t\t\t\t\t</div>\n <div>\n <label class="d-block">\n <input type="checkbox" id="noPassword" ng-model="noPassword" ng-change="setNoPassword()">\n <span ng-show="mode === \'add\'">{{\'security.dont.set.password\' | translate}} </span>\n <span ng-show="mode !== \'add\'">{{\'security.unset.password\' | translate}} </span>\n </label>\n </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="card sparql-editor-settings" id="user-settings">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.user.settings\' | translate}}</h3>\n\n\t\t\t\t\t\t<div id="sameas-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="sameas-label">\n\t\t\t\t\t\t\t\t{{\'security.expand.sameAs.is\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_SAMEAS ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_SAMEAS ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span gdb-tooltip="{{shouldDisableSameAs() ? \'core.require.inferred\' : \'security.tooltip.click.me\' | translate}}" tooltip-placement="top"\n\t\t\t\t\t\t\t\t ng-click="user.appSettings.DEFAULT_SAMEAS = !user.appSettings.DEFAULT_SAMEAS"\n\t\t\t\t\t\t\t\t class="switch mr-0">\n\t\t\t\t\t\t\t\t<input id="sameAsCheck" type="checkbox" class="switch"\n ng-checked="user.appSettings.DEFAULT_SAMEAS"\n ng-disabled="shouldDisableSameAs()"/>\n\t\t\t\t\t\t\t\t<label for="sameas-on"></label>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{{\'security.default.editor.graph\' | translate}}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div id="inference-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="inference-label">\n\t\t\t\t\t\t\t\t{{\'security.inference.is\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_INFERENCE ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_INFERENCE ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top"\n\t\t\t\t\t\t\t\t ng-click="user.appSettings.DEFAULT_INFERENCE = !user.appSettings.DEFAULT_INFERENCE"\n\t\t\t\t\t\t\t\t class="switch mr-0">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_INFERENCE"/>\n\t\t\t\t\t\t\t\t<label for="inference-on"></label>\n\t\t\t\t\t\t\t</span>\n {{\'security.default.editor.graph\' | translate}}\n\t\t\t\t\t\t</div>\n\n <div id="schema-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="schema-label">\n\t\t\t\t\t\t\t\t{{\'security.show.schema\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n <span gdb-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top"\n ng-click="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA = !user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"\n class="switch mr-0">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"/>\n\t\t\t\t\t\t\t\t<label for="schema-on"></label>\n\t\t\t\t\t\t\t</span>\n {{\'security.default.visual.graph\' | translate}}\n\t\t\t\t\t\t\t</span>\n </div>\n\n\t\t\t\t\t\t<label class="d-block">\n\t\t\t\t\t\t\t<input type="checkbox" ng-model="user.appSettings.EXECUTE_COUNT" id="defaultCount" checked="appSettings.EXECUTE_COUNT">\n\t\t\t\t\t\t\t{{\'security.count.total.results\' | translate}}\n\t\t\t\t\t\t</label>\n\n\t\t\t\t\t\t<label class="d-block">\n\t\t\t\t\t\t\t<input type="checkbox" ng-model="user.appSettings.IGNORE_SHARED_QUERIES" id="ignore-shared" checked="appSettings.IGNORE_SHARED_QUERIES">\n\t\t\t\t\t\t\t{{\'security.ignore.shared.queries\' | translate}}\n\t\t\t\t\t\t</label>\n\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="card" id="workbench-settings" ng-if="showWorkbenchSettings">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.workbench.settings.title\' | translate}}\n\t\t\t\t\t\t\t<em class="icon-info text-tertiary small" gdb-tooltip="{{\'security.workbench.settings.theme.tooltip\' | translate}}"></em></h3>\n\t\t\t\t\t\t<div>\n <div class="form-group">\n <label class="col-lg-2">{{\'security.workbench.settings.theme.label\' | translate}}</label>\n <div class="btn-group theme-selector-dropdown" uib-dropdown>\n <button type="button" class="btn btn-sm btn-secondary dropdown-toggle theme-selector-dropdown-btn" uib-dropdown-toggle>\n {{selectedTheme.label}}\n </button>\n <ul class="dropdown-menu" role="menu">\n <li ng-repeat="theme in themes">\n <a ng-click="setTheme(theme)" class="dropdown-item">{{theme.label}}</a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class="form-group">\n <label class="col-lg-2">{{\'security.workbench.settings.theme.mode.label\' | translate}}</label>\n <div class="radio">\n <label class="px-1">\n <input type="radio" value="light" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/>\n {{\'security.workbench.settings.theme.mode.light\' | translate}}\n </label>\n <label class="px-1">\n <input type="radio" value="dark" ng-model="workbenchSettings.mode" ng-change="setThemeMode()"/>\n {{\'security.workbench.settings.theme.mode.dark\' | translate}}\n </label>\n </div>\n </div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="col-md-6 us-right-col" ng-hide="!isLocalAuthentication()">\n\t\t\t\t<div class="card user-role" id="user-roles">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.user.role\' | translate}}</h3>\n\t\t\t\t\t\t<label class="mr-1"\n\t\t\t\t\t\t\t uib-popover-template="\'popover-content-user.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleUser" value="user" ng-disabled="hasEditRestrictions()" >\n\t\t\t\t\t\t\t{{\'security.user.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<label class="mr-1"\n\t\t\t\t\t\t\t uib-popover-template="\'popover-content-repo-manager.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleRepoAdmin" value="repoManager" ng-disabled="hasEditRestrictions()">\n\t\t\t\t\t\t\t{{\'security.repo.manager.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<label uib-popover-template="\'popover-content-admin.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleAdmin" value="admin" ng-disabled="hasEditRestrictions()">\n\t\t\t\t\t\t\t{{\'security.admin.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n <div class="card user-custom-roles" id="user-custom-roles">\n <div class="card-block">\n <h3>{{\'security.user.custom_role\' | translate}}</h3>\n <div class="input-group">\n <tags-input class="wb-tags-input" ng-model="customRoles" min-length="2"\n ng-disabled="!isUser()"\n use-strings="true"\n add-on-space="true"\n add-on-comma="true"\n on-tag-added="addCustomRole($tag)"\n placeholder="{{\'security.user.add.custom_role.msg\' | translate}}"></tags-input>\n </div>\n </div>\n </div>\n\n\t\t\t\t<div id="user-repos" class="card user-repositories">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.repo.rights\' | translate}}</h3>\n\t\t\t\t\t\t<div class="has-danger">\n\t\t\t\t\t\t\t<p ng-show="repositoryCheckError" class="form-control-feedback">\n\t\t\t\t\t\t\t\t{{\'security.user.rights\' | translate}}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n <div class="scrollable-table">\n <table class="table table-hover table-sm" aria-describedby="User rights table">\n <thead>\n <tr>\n <th id="repositoryIdColumn">{{\'security.repository.title\' | translate}}</th>\n <th id="readRightsColumn" class="text-xs-center"><em class="icon-eye icon-lg" gdb-tooltip="{{\'security.tooltip.read\' | translate}}"></em></th>\n <th id="writeRightColumn" class="text-xs-center"><em class="icon-edit icon-lg" gdb-tooltip="{{\'security.tooltip.write\' | translate}}"></em></th>\n </tr>\n <tr>\n <th>{{\'security.any.data.repo\' | translate}}\n <em class="icon-info text-tertiary" gdb-tooltip="{{\'security.data.repos\' | translate}}"></em>\n </th>\n <th class="text-xs-center">\n <input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[\'*\']" ng-checked="hasReadPermission(\'*\')" ng-disabled="readCheckDisabled(\'*\')" ng-click="setGrantedAuthorities()">\n </th>\n <th class="text-xs-center">\n <input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[\'*\']" ng-checked="hasWritePermission(\'*\')" ng-disabled="writeCheckDisabled(\'*\')" ng-click="setGrantedAuthorities()">\n </th>\n </tr>\n </thead>\n <tbody>\n <div>\n <tr ng-repeat="repository in getReadableRepositories() | orderBy: [\'location\', \'id\']">\n <td class="repository-name">{{repository.id}}<small> &middot; {{repository.location ? repository.location : \'Local\'}}</small></td>\n <td class="text-xs-center read-rights"><input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[createUniqueKey(repository)]" ng-checked="hasReadPermission(repository)" ng-disabled="readCheckDisabled(repository)" ng-click="setGrantedAuthorities()"></td>\n <td class="text-xs-center write-rights"><input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]" ng-checked="hasWritePermission(repository)" ng-disabled="writeCheckDisabled(repository)" ng-click="setGrantedAuthorities()"></td>\n </tr>\n </div>\n </tbody>\n </table>\n </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n </div>\n\t\t</div>\n\n\t\t<div class="text-right">\n <button id="wb-user-goBack" class="btn btn-secondary" type="button" ng-click="goBack()">{{\'common.cancel.btn\' | translate}}</button>\n <button id="wb-user-submit" class="btn btn-primary" type="submit">{{saveButtonText}}</button>\n\t\t</div>\n\t</form>\n</div>\n<div class="ot-loader ot-main-loader" onto-loader size="50" ng-show="loader"></div>\n\n\n\n';return __p}}}]);