graphdb-workbench 2.0.0-TR4 → 2.0.0-TR8
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/{0.21974a2453b9a92dec33.bundle.js → 0.965871b861f4dddbba56.bundle.js} +3 -3
- package/dist/0.965871b861f4dddbba56.bundle.js.map +1 -0
- package/dist/{112.b871480dd961ac3c18b6.bundle.js → 112.0c1bdd906ac321ffbf5f.bundle.js} +2 -2
- package/dist/{112.b871480dd961ac3c18b6.bundle.js.map → 112.0c1bdd906ac321ffbf5f.bundle.js.map} +1 -1
- package/dist/114.282a327015f8ae87918b.bundle.js +1 -1
- package/dist/114.282a327015f8ae87918b.bundle.js.map +1 -1
- package/dist/{12.449fb5148a68a44ba324.bundle.js → 12.60db051e76264d3f95b2.bundle.js} +2 -2
- package/dist/12.60db051e76264d3f95b2.bundle.js.map +1 -0
- package/dist/13.1419a81a33174950a34c.bundle.js +4 -0
- package/dist/13.1419a81a33174950a34c.bundle.js.map +1 -0
- package/dist/14.7e9059b5c9c57d952e47.bundle.js +2 -0
- package/dist/14.7e9059b5c9c57d952e47.bundle.js.map +1 -0
- package/dist/15.02ad5872995df6d6692a.bundle.js +2 -0
- package/dist/15.02ad5872995df6d6692a.bundle.js.map +1 -0
- package/dist/{17.4b048ae019a8d2fd5b46.bundle.js → 17.8bfbe7d08efa149bdb00.bundle.js} +2 -2
- package/dist/17.8bfbe7d08efa149bdb00.bundle.js.map +1 -0
- package/dist/21.e75213686a349ae7df89.bundle.js +1 -1
- package/dist/21.e75213686a349ae7df89.bundle.js.map +1 -1
- package/dist/25.cbe8e59c80330ff6e706.bundle.js +2 -0
- package/dist/25.cbe8e59c80330ff6e706.bundle.js.map +1 -0
- package/dist/26.67154910989ca1f563ec.bundle.js +2 -0
- package/dist/26.67154910989ca1f563ec.bundle.js.map +1 -0
- package/dist/27.61bd08d0e926fe471a91.bundle.js +2 -0
- package/dist/27.61bd08d0e926fe471a91.bundle.js.map +1 -0
- package/dist/29.66259b8a21bbb5431a06.bundle.js +1 -1
- package/dist/29.66259b8a21bbb5431a06.bundle.js.map +1 -1
- package/dist/{30.4d469715c2f2d1028b4b.bundle.js → 30.3592aaa1063719853218.bundle.js} +2 -2
- package/dist/30.3592aaa1063719853218.bundle.js.map +1 -0
- package/dist/{33.ea3b66016bbeff928fc3.bundle.js → 33.c670eeb3a325251e141f.bundle.js} +2 -2
- package/dist/33.c670eeb3a325251e141f.bundle.js.map +1 -0
- package/dist/34.22a096bd891109c927f5.bundle.js +2 -0
- package/dist/34.22a096bd891109c927f5.bundle.js.map +1 -0
- package/dist/36.d444f7ad7724d126da1c.bundle.js +1 -1
- package/dist/36.d444f7ad7724d126da1c.bundle.js.map +1 -1
- package/dist/37.e82ed70c9f1ccac1fa36.bundle.js +1 -1
- package/dist/37.e82ed70c9f1ccac1fa36.bundle.js.map +1 -1
- package/dist/49.80591a5efda019de6e4a.bundle.js +2 -0
- package/dist/49.80591a5efda019de6e4a.bundle.js.map +1 -0
- package/dist/7.0d2811d01a379d8b75fb.bundle.js +3 -0
- package/dist/7.0d2811d01a379d8b75fb.bundle.js.map +1 -0
- package/dist/8.66013fc0c58811b51903.bundle.js +2 -0
- package/dist/8.66013fc0c58811b51903.bundle.js.map +1 -0
- package/dist/{bundle.9245d22c0fae1701aa84.bundle.js → bundle.e787556c9b592367c35c.bundle.js} +4 -4
- package/dist/bundle.e787556c9b592367c35c.bundle.js.map +1 -0
- package/dist/css/graphs-vizualizations.css +9 -1
- package/dist/css/lib/yasr.css +1 -0
- package/dist/css/yasr.custom.css +9 -0
- package/dist/index.html +4 -4
- package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +1 -0
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/{main.ea86ac1b6d636ab25dc7.css → main.db108895fbac32ad7e7b.css} +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/clusterInfo.html +1 -1
- package/dist/pages/create-index.html +4 -4
- 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 +11 -11
- package/dist/pages/graphs-visualizations.html +13 -9
- package/dist/pages/import.html +1 -1
- package/dist/pages/jdbc-create.html +5 -5
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +2 -2
- package/dist/pages/namespaces.html +2 -2
- 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 +2 -2
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-template-create.html +5 -5
- package/dist/pages/sparql.html +3 -3
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger/index.html +25 -25
- package/package.json +1 -1
- package/dist/0.21974a2453b9a92dec33.bundle.js.map +0 -1
- package/dist/12.449fb5148a68a44ba324.bundle.js.map +0 -1
- package/dist/13.a1f1742be19b26f1959e.bundle.js +0 -4
- package/dist/13.a1f1742be19b26f1959e.bundle.js.map +0 -1
- package/dist/14.a1d84445382b665e13e0.bundle.js +0 -2
- package/dist/14.a1d84445382b665e13e0.bundle.js.map +0 -1
- package/dist/15.73ffeb044255abbac7bf.bundle.js +0 -2
- package/dist/15.73ffeb044255abbac7bf.bundle.js.map +0 -1
- package/dist/17.4b048ae019a8d2fd5b46.bundle.js.map +0 -1
- package/dist/25.34da4f496fc62f2dae9b.bundle.js +0 -2
- package/dist/25.34da4f496fc62f2dae9b.bundle.js.map +0 -1
- package/dist/26.02814d2ed726f5a71d4e.bundle.js +0 -2
- package/dist/26.02814d2ed726f5a71d4e.bundle.js.map +0 -1
- package/dist/27.5a64597ee4a947af77fa.bundle.js +0 -2
- package/dist/27.5a64597ee4a947af77fa.bundle.js.map +0 -1
- package/dist/30.4d469715c2f2d1028b4b.bundle.js.map +0 -1
- package/dist/33.ea3b66016bbeff928fc3.bundle.js.map +0 -1
- package/dist/34.620159c2b04af0a88d1b.bundle.js +0 -2
- package/dist/34.620159c2b04af0a88d1b.bundle.js.map +0 -1
- package/dist/49.71f6e0f6f3284bf63cab.bundle.js +0 -2
- package/dist/49.71f6e0f6f3284bf63cab.bundle.js.map +0 -1
- package/dist/7.036cd4322fa473fb187a.bundle.js +0 -3
- package/dist/7.036cd4322fa473fb187a.bundle.js.map +0 -1
- package/dist/8.46db359ed59a04d3799b.bundle.js +0 -2
- package/dist/8.46db359ed59a04d3799b.bundle.js.map +0 -1
- package/dist/bundle.9245d22c0fae1701aa84.bundle.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[34,85],{29:function(n,e){angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",o),o.$inject=["$http"];const t="rest/connectors";function o(n){return{getConnectors:function(){return n.get(t)},initConnector:function(e){return n.get(`${t}/options?prefix=${e}`)},hasConnector:function(e){return n.get(`${t}/existing?prefix=${e}`)},checkConnector:function(e){return n.post(`${t}/check`,e,{headers:{"Content-Type":"text/plain"}})}}}},32:function(n,e,t){"use strict";t.r(e);t(10),t(29);function o(n){const e=[];return Object.keys(n).forEach((function(t){e.push(encodeURIComponent(t)+"="+encodeURIComponent(n[t]))})),e.join("&")}function r(n,e){for(let o=0;o<e.length;o++){const r=e[o];if("StringArray"===r.__type)n[r.__name]||(n[r.__name]=[""]);else if("OptionArray"===r.__type)if(n[r.__name])for(let e=0;e<r.__childOptions.length;e++){const t=r.__childOptions[e];if("Boolean"===t.__type)for(let e=0;e<n[r.__name].length;e++){const o=n[r.__name][e];!o.hasOwnProperty([t.__name])&&angular.isDefined(t.__defaultValue)&&(o[t.__name]=t.__defaultValue)}}else{n[r.__name]=[];const e={};for(let n=0;n<r.__childOptions.length;n++){const t=r.__childOptions[n];"StringArray"===t.__type?e[t.__name]=[""]:e[t.__name]=angular.isUndefined(t.__defaultValue)?"":t.__defaultValue}n[r.__name].push(e)}else"Map"===r.__type?n[r.__name]?n[r.__name]=(t=n[r.__name],_.map(t,(function(n,e){return{key:e,value:n}}))):n[r.__name]=[]:"JsonString"===r.__type?n[r.__name]&&(n[r.__name]=angular.toJson(n[r.__name],2)):angular.isUndefined(n[r.__name])&&(n[r.__name]=angular.isUndefined(r.__defaultValue)?"":r.__defaultValue)}var t;return n}function i(n,e,t){return n.post("repositories/"+e,o({query:t}),{headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/sparql-results+json","X-GraphDB-Local-Consistency":"updating"}})}function c(n){return n.substring(0,n.length-1)+"/instance#"}function a(n,e,t,o,r){const i=function n(e,t){const o={};return _.each(t,(function(t){angular.isDefined(e[t.__name])&&("OptionArray"===t.__type?(o[t.__name]=[],_.each(e[t.__name],(function(e){o[t.__name].push(n(e,t.__childOptions))}))):o[t.__name]=angular.copy(e[t.__name]))})),o}(t,o);for(let n=0;n<o.length;n++)try{"Map"===o[n].__type?i[o[n].__name]=(a=i[o[n].__name],_.reduce(a,(function(n,e){if(""===e.key&&""===e.value);else{if(""===e.key)throw new Error('Key may not be empty with value "'+e.value+'"');if(n.hasOwnProperty(e.key))throw new Error("Duplicate key "+e.key);n[e.key]=e.value}return n}),{})):"JsonString"===o[n].__type&&(i[o[n].__name]=angular.fromJson(i[o[n].__name]))}catch(e){return r(o[n].__label,e.message),null}var a;!function n(e){Array.isArray(e)&&(e=_.filter(e,(function(n){return null!==n&&(!n.trim||""!==n.trim())})));return Object.keys(e).forEach((function(t){""!==e[t]&&null!=e[t]||!1===e[t]?"object"==typeof e[t]&&(e[t]=n(e[t])):delete e[t]})),e}(i);let s="";return s+="PREFIX :<"+e+">\n",s+="PREFIX inst:<"+c(e)+">\n",s+="INSERT DATA {\n",s+="\tinst:"+n+" :createConnector '''\n",s+=angular.toJson(i,2),s+="\n''' .\n}\n",s=s.replace(/\\/g,"\\\\\\"),s}function s(n,e,t,s,l,u,f,p,d){function g(e){n.beingBuiltConnector={percentDone:0,status:{processedEntities:0,estimatedEntities:0,indexedEntities:0,entitiesPerSecond:0},actionName:e?"Repairing":"Creating",waitOnRepairStartOnce:!!e,eta:"-",inline:!1,iri:null}}function m(e,t,o){return g(o),$.extend(n.beingBuiltConnector,{iri:c(e)+t,name:t,inline:!1,doneCallback:function(){n.beingBuiltConnector.modalInstance.dismiss("cancel")}}),n.beingBuiltConnector.modalInstance=s.open({templateUrl:"pages/connectorProgress.html",controller:"CreateProgressCtrl",size:"lg",backdrop:"static",scope:n}),n.beingBuiltConnector.modalInstance}function C(e,r,i){const c=m(e.value,r.name,!1);p.addStatements(t.getActiveRepository(),o({update:r.query})).then((function(){d.getConnectors().then((function(){d.hasConnector(encodeURIComponent(e.value)).then((function(t){n.existing[e.key]=t.data}))})),l.success("Created connector "+r.name)}),(function(n){l.error(getError(n)),i()})).finally((function(){c.dismiss("cancel")}))}n.loader=!1,n.controllers=[],n.existing={},n.definitions={},n.getLoaderMessage=function(){const e=(Date.now()-n.loaderStartTime)/1e3,t=n.getHumanReadableSeconds(e);let o="";return o=n.progressMessage?n.progressMessage+"... "+t:"Running operation..."+t,n.extraMessage&&e>10&&(o+="\n"+n.extraMessage),o},n.setLoader=function(e,t,o){e?(n.loader=!0,n.loaderStartTime=Date.now(),n.progressMessage=t,n.extraMessage=o):(n.loader=!1,n.progressMessage="",n.extraMessage="")},n.initConnector=function(e){return d.initConnector(encodeURIComponent(e.value)).then((function(t){return n.definitions[e.key]=t.data,d.hasConnector(encodeURIComponent(e.value)).then((function(t){n.existing[e.key]=t.data}))}))},n.getConnectors=function(){n.isLicenseValid()&&n.canWriteActiveRepo()&&(n.setLoader(!0,"Fetching connectors","Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first."),d.getConnectors().then((function(o){n.connectors=Object.keys(o.data).map((function(n){return{key:n,value:o.data[n]}})),f.all(_.map(n.connectors,(function(e){return n.initConnector(e)}))).finally((function(){g();const o=function(n){const e=_.map(n,(function(n){return"<"+n.value+"connectorStatus>"})).join("|");return e?"SELECT ?connector ?status { ?connector "+e+" ?status }":null}(n.connectors);o?function(n){return i(e,t.getActiveRepository(),n)}(o).then((function(e){const t=function(n){if(n.bindings)for(let e=0;e<n.bindings.length;e++)try{const t=JSON.parse(n.bindings[e].status.value);if("BUILDING"===t.status)return{connector:n.bindings[e].connector.value,status:t}}catch(n){console.error(n)}return{}}(e.data.results);if(t.connector){const e=t.connector.split(/#/);e[0]=e[0].replace(/\/instance$/,"#"),o=e[0],r=e[1],g(),$.extend(n.beingBuiltConnector,{iri:c(o)+r,name:r,inline:!0,doneCallback:function(){n.beingBuiltConnector.inline=!1}})}var o,r})).finally((function(){n.setLoader(!1)})):n.setLoader(!1)}))})).catch((function(e){n.setLoader(!1),l.error(getError(e),"Could not get connectors")})),n.existing={})},n.getOptions=function(e){return n.definitions[e.key]},n.isEmpty=function(n){return angular.isObject(n)&&0===Object.keys(n).length},n.toPrettyJson=function(n){return angular.toJson(n,2)},n.$watch((function(){return t.getActiveRepository()}),n.getConnectors),n.$watch((function(){return t.getActiveLocation()}),n.getConnectors),n.copyConnector=function(e,t){let o;angular.isUndefined(t)||(o=angular.copy(t),o.name=o.name+"-copy"),s.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(o)?{name:"",values:{}}:o},options:function(){return n.getOptions(e)}}}).result.then((function(t){C(e,t,(function(){t.skipConversion=!0,n.newConnector(e,t)}))}))},n.newConnector=function(e,t){s.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(t)?{name:"",values:{}}:t},options:function(){return n.getOptions(e)}}}).result.then((function(t){C(e,t,(function(){t.skipConversion=!0,n.newConnector(e,t)}))}))},n.repair=function(e,r){u.openSimpleModal({title:"Confirm repair",message:"Are you sure you want to repair this connector?<br>Note that repair means delete + recreate with the same settings.",warning:!0}).result.then((function(){const i=m(r.value,e.name,!0),a=(s=e.name,"PREFIX prefix:<"+(u=r.value)+">\nINSERT DATA {\n\t<"+c(u)+s+'> prefix:repairConnector ""\n}');var s,u;p.addStatements(t.getActiveRepository(),o({update:a})).then((function(){d.getConnectors().then((function(){d.hasConnector(encodeURIComponent(r.value)).then((function(e){n.existing[r.key]=e.data}))})),l.success("Repaired connector "+e.name)}),(function(n){l.error(getError(n))})).finally((function(){i.dismiss("cancel")}))}))},n.delete=function(e,r){const i=r.key.indexOf("Elastic")>=0||r.key.indexOf("Solr")>=0;s.open({templateUrl:"js/angular/externalsync/templates/deleteConnector.html",controller:"DeleteConnectorCtrl",resolve:{type:function(){return r.key},isExternal:function(){return i}}}).result.then((function(c){n.setLoader(!0,"Deleting connector "+e.name,"This is usually a fast operation but it might take a while.");const a=function(n,e,t){const o=e.substring(0,e.length-1)+"/instance#";return"PREFIX prefix:<"+e+">\nINSERT DATA {\n\t<"+o+n+'> prefix:dropConnector "'+(t?"force":"")+'"\n}'}(e.name,r.value,c);p.addStatements(t.getActiveRepository(),o({update:a})).then((function(){d.getConnectors().then((function(){d.hasConnector(encodeURIComponent(r.value)).then((function(e){n.existing[r.key]=e.data}))})),c?(l.success("Deleted (with force) connector "+e.name),i&&l.warning("You may have to remove the index manually from "+r.key)):l.success("Deleted connector "+e.name)}),(function(n){l.error(getError(n))})).finally((function(){n.setLoader(!1)}))}))},n.viewQuery=function(e,t){s.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){const o=n.getOptions(e);return a(t.name,e.value,r(t.values,o),o)}}})}}function l(n,e,t,o){n.force=!1,n.type=t,n.isExternal=o,n.ok=function(){e.close(n.force)},n.cancel=function(){e.dismiss()}}function u(n,e,t,o,r){function i(){return a(n.name,t.value,n.values,n.options,(function(n,e){r.error(e,n)}))}n.connector=t,n.addField=function(e,t){const o=angular.copy(n.defaultValues[t][0]);n.values[t].splice(e+1,0,o)},n.addOption=function(n,e){e.splice(n+1,0,"")},n.deleteOption=function(n,e){e.splice(n,1)},n.addMapOption=function(n,e){e.splice(n+1,0,{key:"",value:""})},n.deleteMapOption=function(n,e){e.splice(n,1)},n.ok=function(){if(n.form.$valid){const t=i();t&&e.close({name:n.name,values:n.values,options:n.options,query:t})}},n.viewQuery=function(){const n=i();n&&o.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return n}}})},n.cancel=function(){e.dismiss("cancel")}}function f(n,e,t,o,i,c,a,s){angular.extend(this,e("ExtendNewConnectorCtrl",{$scope:n,$modalInstance:o,connector:i,$modal:c})),n.values=a.values,n.options=s,n.name=a.name,a.skipConversion||(n.values=r(n.values,n.options)),n.defaultValues=angular.copy(n.values)}function p(n,e,t,o){function r(){const r=function(n){const e=n.replace(/\/instance#.+$/,"#connectorStatus");let t="";return t+="SELECT ?status {\n",t+="\t<"+n+"> <"+e+"> ?status",t+="\n}",t}(n.beingBuiltConnector.iri);n.beingBuiltConnector.iri=null,n.progressInterval=e((function(){(function(n){return i(t,o.getActiveRepository(),n)})(r).then((function(t){const o=function(n){if(n.bindings&&n.bindings.length>0)try{return JSON.parse(n.bindings[0].status.value)}catch(n){console.error(n)}return{}}(t.data.results);"BUILDING"===o.status?(n.beingBuiltConnector.status=o,n.beingBuiltConnector.percentDone=(100*o.processedEntities/o.estimatedEntities).toFixed(0),n.beingBuiltConnector.eta=n.getHumanReadableSeconds(o.etaSeconds),n.beingBuiltConnector.actionName=o.repair?"Repairing":"Creating",n.beingBuiltConnector.waitOnRepairStartOnce=!1):"BUILT"!==o.status||n.beingBuiltConnector.waitOnRepairStartOnce||(e.cancel(n.progressInterval),n.beingBuiltConnector.doneCallback&&n.beingBuiltConnector.doneCallback())}))}),1e3),n.$on("$destroy",(function(){e.cancel(n.progressInterval)}))}n.beingBuiltConnector=n.beingBuiltConnector||{},!n.beingBuiltConnector.inline&&n.beingBuiltConnector.iri&&r(),n.$watch("beingBuiltConnector.iri",(function(e){n.beingBuiltConnector.inline&&e&&r()}))}angular.module("graphdb.framework.externalsync.controllers",["graphdb.framework.rest.rdf4j.repositories.service","graphdb.framework.rest.connectors.service"]).controller("ConnectorsCtrl",s).controller("ExtendNewConnectorCtrl",u).controller("CreateConnectorCtrl",f).controller("CreateProgressCtrl",p).controller("DeleteConnectorCtrl",l).filter("ceil",(function(){return function(n){return Math.ceil(n)}})),s.$inject=["$scope","$http","$repositories","$modal","toastr","ModalService","$q","RDF4JRepositoriesRestService","ConnectorsRestService"],l.$inject=["$scope","$modalInstance","type","isExternal"],u.$inject=["$scope","$modalInstance","connector","$modal","toastr"],f.$inject=["$scope","$controller","$http","$modalInstance","connector","$modal","values","options"],p.$inject=["$scope","$interval","$http","$repositories"]}}]);
|
|
2
|
-
//# sourceMappingURL=34.620159c2b04af0a88d1b.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/rest/connectors.rest.service.js","webpack:///./src/js/angular/externalsync/controllers.js"],"names":["angular","module","factory","ConnectorsRestService","$inject","CONNECTORS_ENDPOINT","$http","getConnectors","get","initConnector","prefix","hasConnector","checkConnector","data","post","headers","jsonToFormData","str","Object","keys","forEach","key","push","encodeURIComponent","join","mapCreateValuesToUiValues","values","options","i","length","option","__type","__name","j","__childOptions","child","k","valueK","hasOwnProperty","isDefined","__defaultValue","optionEl","isUndefined","map","_","value","toJson","_evaluateSparqlQuery","http","repository","query","buildNamePrefix","substring","createConnectorQuery","name","fields","reportError","fcopy","sortObject","obj","newObject","each","childOption","copy","arrayMap","reduce","acc","Error","fromJson","e","__label","message","removeEmptyValues","Array","isArray","filter","item","trim","finalString","replace","ConnectorsCtrl","$scope","$repositories","$modal","toastr","ModalService","$q","RDF4JRepositoriesRestService","resetProgress","repair","beingBuiltConnector","percentDone","status","processedEntities","estimatedEntities","indexedEntities","entitiesPerSecond","actionName","waitOnRepairStartOnce","eta","inline","iri","openProgressModal","$","extend","doneCallback","modalInstance","dismiss","open","templateUrl","controller","size","backdrop","scope","executeCreate","connector","errorCallback","modal","addStatements","getActiveRepository","update","then","res","existing","success","err","error","getError","finally","loader","controllers","definitions","getLoaderMessage","timeSeconds","Date","now","loaderStartTime","timeHuman","getHumanReadableSeconds","progressMessage","extraMessage","setLoader","isRunning","isLicenseValid","canWriteActiveRepo","connectors","all","connectorIris","createStatusQueryForAny","evaluateSparqlQuery","results","bindings","statusObject","JSON","parse","console","parseFirstBuildingResult","d","split","catch","getOptions","isEmpty","isObject","toPrettyJson","$watch","getActiveLocation","copyConnector","newValues","resolve","result","skipConversion","newConnector","inst","type","openSimpleModal","title","warning","delete","isExternal","indexOf","force","namePrefix","deleteConnectorQuery","viewQuery","DeleteConnectorCtrl","$modalInstance","ok","close","cancel","ExtendNewConnectorCtrl","toQuery","label","addField","index","optionName","newField","defaultValues","splice","addOption","array","deleteOption","addMapOption","deleteMapOption","form","$valid","CreateConnectorCtrl","$controller","this","CreateProgressCtrl","$interval","initProgress","statusIri","createStatusQueryForIri","progressInterval","getFirstStatusFromResult","toFixed","etaSeconds","$on","input","Math","ceil"],"mappings":"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","file":"34.620159c2b04af0a88d1b.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.rest.connectors.service', [])\n .factory('ConnectorsRestService', ConnectorsRestService);\n\nConnectorsRestService.$inject = ['$http'];\n\nconst CONNECTORS_ENDPOINT = 'rest/connectors';\n\nfunction ConnectorsRestService($http) {\n\n return {\n getConnectors,\n initConnector,\n hasConnector,\n checkConnector\n };\n\n function getConnectors() {\n return $http.get(CONNECTORS_ENDPOINT);\n }\n\n function initConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/options?prefix=${prefix}`);\n }\n\n function hasConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`);\n }\n\n function checkConnector(data) {\n return $http.post(`${CONNECTORS_ENDPOINT}/check`, data, {\n headers: {\n 'Content-Type': 'text/plain'\n }\n });\n }\n}\n","import 'angular/rest/rdf4j.repositories.rest.service';\nimport 'angular/rest/connectors.rest.service';\n\nconst modules = [\n 'graphdb.framework.rest.rdf4j.repositories.service',\n 'graphdb.framework.rest.connectors.service'\n];\n\nangular\n .module('graphdb.framework.externalsync.controllers', modules)\n .controller('ConnectorsCtrl', ConnectorsCtrl)\n .controller('ExtendNewConnectorCtrl', ExtendNewConnectorCtrl)\n .controller('CreateConnectorCtrl', CreateConnectorCtrl)\n .controller('CreateProgressCtrl', CreateProgressCtrl)\n .controller('DeleteConnectorCtrl', DeleteConnectorCtrl)\n .filter('ceil', ceil);\n\nfunction jsonToFormData(data) {\n const str = [];\n Object.keys(data).forEach(function (key) {\n str.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));\n });\n return str.join('&');\n}\n\nfunction toArrayMap(map) {\n return _.map(map, function (value, key) {\n return {key: key, value: value};\n });\n}\n\nfunction fromArrayMap(arrayMap) {\n return _.reduce(arrayMap, function (acc, value) {\n if (value.key === '' && value.value === '') {\n // empty pair, skip it\n } else if (value.key === '') {\n throw new Error('Key may not be empty with value \"' + value.value + '\"');\n } else if (acc.hasOwnProperty(value.key)) {\n throw new Error('Duplicate key ' + value.key);\n } else {\n acc[value.key] = value.value;\n }\n return acc;\n }, {});\n}\n\nfunction mapCreateValuesToUiValues(values, options) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n if (option.__type === 'StringArray') {\n if (!values[option.__name]) {\n values[option.__name] = [''];\n }\n } else if (option.__type === 'OptionArray') {\n if (!values[option.__name]) { // values has no entry for this option\n values[option.__name] = [];\n const optionEl = {};\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'StringArray') {\n optionEl[child.__name] = [''];\n } else {\n optionEl[child.__name] = (!angular.isUndefined(child.__defaultValue) ? child.__defaultValue : '');\n }\n }\n values[option.__name].push(optionEl);\n } else { // values already has en entry for this option\n // Copies the default value for Boolean child options if no explicit value is set\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'Boolean') {\n for (let k = 0; k < values[option.__name].length; k++) {\n const valueK = values[option.__name][k];\n if (!valueK.hasOwnProperty([child.__name]) && angular.isDefined(child.__defaultValue)) {\n valueK[child.__name] = child.__defaultValue;\n }\n }\n }\n }\n }\n } else if (option.__type === 'Map') {\n if (!values[option.__name]) {\n values[option.__name] = [];\n } else {\n values[option.__name] = toArrayMap(values[option.__name]);\n }\n } else if (option.__type === 'JsonString') {\n if (values[option.__name]) {\n values[option.__name] = angular.toJson(values[option.__name], 2);\n }\n } else {\n if (angular.isUndefined(values[option.__name])) {\n values[option.__name] = (!angular.isUndefined(option.__defaultValue) ? option.__defaultValue : '');\n }\n }\n }\n\n return values;\n}\n\nfunction _evaluateSparqlQuery(http, repository, query) {\n return http.post('repositories/' + repository, jsonToFormData({query: query}),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/sparql-results+json',\n 'X-GraphDB-Local-Consistency': 'updating'\n }\n });\n}\n\nfunction buildNamePrefix(prefix) {\n return prefix.substring(0, prefix.length - 1) + '/instance#';\n}\n\nfunction createConnectorQuery(name, prefix, fields, options, reportError) {\n // Returns a copy of the parameter obj sorted according to the order in options\n function sortObject(obj, options) {\n const newObject = {};\n _.each(options, function (option) {\n if (angular.isDefined(obj[option.__name])) {\n if (option.__type === 'OptionArray') {\n newObject[option.__name] = [];\n _.each(obj[option.__name], function (childOption) {\n newObject[option.__name].push(sortObject(childOption, option.__childOptions));\n });\n } else {\n newObject[option.__name] = angular.copy(obj[option.__name]);\n }\n }\n });\n return newObject;\n }\n\n const fcopy = sortObject(fields, options);\n\n for (let i = 0; i < options.length; i++) {\n try {\n if (options[i].__type === 'Map') {\n fcopy[options[i].__name] = fromArrayMap(fcopy[options[i].__name]);\n } else if (options[i].__type === 'JsonString') {\n fcopy[options[i].__name] = angular.fromJson(fcopy[options[i].__name]);\n }\n } catch (e) {\n reportError(options[i].__label, e.message);\n return null;\n }\n }\n\n removeEmptyValues(fcopy);\n //escapeValues(fields);\n let finalString = '';\n finalString += 'PREFIX :<' + prefix + '>\\n';\n const namePrefix = buildNamePrefix(prefix);\n finalString += 'PREFIX inst:<' + namePrefix + '>\\n';\n finalString += 'INSERT DATA {\\n';\n finalString += \"\\tinst:\" + name + \" :createConnector '''\\n\"; // eslint-disable-line quotes\n finalString += angular.toJson(fcopy, 2);\n finalString += \"\\n''' .\\n}\\n\"; // eslint-disable-line quotes\n finalString = finalString.replace(/\\\\/g, '\\\\\\\\\\\\');\n return finalString;\n}\n\nfunction createStatusQueryForIri(iri) {\n const statusIri = iri.replace(/\\/instance#.+$/, '#connectorStatus');\n let finalString = '';\n finalString += 'SELECT ?status {\\n';\n finalString += '\\t<' + iri + '> <' + statusIri + '> ?status';\n finalString += '\\n}';\n return finalString;\n}\n\nfunction createStatusQueryForAny(connectors) {\n const connectorIris = _.map(connectors,\n function (k) {\n return '<' + k.value + 'connectorStatus' + '>';\n }).join('|');\n\n if (connectorIris) {\n return 'SELECT ?connector ?status { ?connector ' + connectorIris + ' ?status }';\n }\n\n return null;\n}\n\nfunction repairConnectorQuery(name, prefix) {\n const namePrefix = buildNamePrefix(prefix);\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:repairConnector \"\"\\n' +\n '}';\n}\n\nfunction deleteConnectorQuery(name, prefix, force) {\n const namePrefix = prefix.substring(0, prefix.length - 1) + \"/instance#\";\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:dropConnector \"' + (force ? \"force\" : \"\") + '\"\\n' +\n '}';\n}\n\nfunction removeEmptyValues(data) {\n // remove empty values from array\n if (Array.isArray(data)) {\n data = _.filter(data, function (item) {\n return item !== null && (!item.trim || item.trim() !== '');\n });\n }\n // remove empty values from object values\n Object.keys(data).forEach(function (key) {\n if ((data[key] === '' || data[key] == null) && data[key] !== false) {\n delete data[key];\n } else if (typeof data[key] === 'object') {\n data[key] = removeEmptyValues(data[key]);\n }\n });\n return data;\n}\n\nfunction parseFirstBuildingResult(results) {\n if (results.bindings) {\n for (let i = 0; i < results.bindings.length; i++) {\n try {\n const statusObject = JSON.parse(results.bindings[i].status.value);\n if (statusObject.status === 'BUILDING') {\n return {\n connector: results.bindings[i].connector.value,\n status: statusObject\n };\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n}\n\nConnectorsCtrl.$inject = ['$scope', '$http', '$repositories', '$modal', 'toastr', 'ModalService', '$q', 'RDF4JRepositoriesRestService', 'ConnectorsRestService'];\n\nfunction ConnectorsCtrl($scope, $http, $repositories, $modal, toastr, ModalService, $q, RDF4JRepositoriesRestService, ConnectorsRestService) {\n $scope.loader = false;\n\n $scope.controllers = [];\n\n $scope.existing = {};\n\n $scope.definitions = {};\n\n $scope.getLoaderMessage = function () {\n const timeSeconds = (Date.now() - $scope.loaderStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = 'Running operation...' + timeHuman;\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n };\n\n $scope.setLoader = function (isRunning, progressMessage, extraMessage) {\n if (isRunning) {\n $scope.loader = true;\n $scope.loaderStartTime = Date.now();\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n } else {\n $scope.loader = false;\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n }\n };\n\n $scope.initConnector = function (connector) {\n return ConnectorsRestService.initConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.definitions[connector.key] = res.data;\n\n return ConnectorsRestService.hasConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.existing[connector.key] = res.data;\n\n });\n });\n };\n\n $scope.getConnectors = function () {\n if (!$scope.isLicenseValid()) {\n return;\n }\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $scope.setLoader(true, 'Fetching connectors', 'Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first.');\n\n ConnectorsRestService.getConnectors()\n .then(function (res) {\n $scope.connectors = Object.keys(res.data).map(function (key) {\n return {key: key, value: res.data[key]};\n });\n\n $q.all(_.map($scope.connectors, function (connector) {\n return $scope.initConnector(connector);\n })).finally(function () {\n resetProgress();\n\n const query = createStatusQueryForAny($scope.connectors);\n\n if (query) {\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = parseFirstBuildingResult(res.data.results);\n if (status.connector) {\n // has a building connector, open progress indicator\n const d = status.connector.split(/#/);\n d[0] = d[0].replace(/\\/instance$/, '#');\n showProgress(d[0], d[1]);\n }\n })\n .finally(function () {\n $scope.setLoader(false);\n });\n } else {\n $scope.setLoader(false);\n }\n });\n }).catch(function (e) {\n $scope.setLoader(false);\n toastr.error(getError(e), 'Could not get connectors');\n });\n\n $scope.existing = {};\n };\n\n $scope.getOptions = function (connector) {\n return $scope.definitions[connector.key];\n };\n\n $scope.isEmpty = function (value) {\n return angular.isObject(value) && Object.keys(value).length === 0;\n };\n\n $scope.toPrettyJson = function (value) {\n return angular.toJson(value, 2);\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, $scope.getConnectors);\n\n $scope.$watch(function () {\n return $repositories.getActiveLocation();\n }, $scope.getConnectors);\n\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function resetProgress(repair) {\n $scope.beingBuiltConnector = {\n percentDone: 0,\n status: {\n processedEntities: 0,\n estimatedEntities: 0,\n indexedEntities: 0,\n entitiesPerSecond: 0\n },\n actionName: repair ? 'Repairing' : 'Creating',\n waitOnRepairStartOnce: !!repair,\n eta: '-',\n inline: false,\n iri: null\n };\n }\n\n function openProgressModal(prefix, name, repair) {\n resetProgress(repair);\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: false,\n doneCallback: function () {\n $scope.beingBuiltConnector.modalInstance.dismiss('cancel');\n }\n });\n\n $scope.beingBuiltConnector.modalInstance = $modal.open({\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n size: 'lg',\n backdrop: 'static',\n scope: $scope\n });\n\n return $scope.beingBuiltConnector.modalInstance;\n }\n\n function showProgress(prefix, name) {\n resetProgress();\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: true,\n doneCallback: function () {\n $scope.beingBuiltConnector.inline = false;\n }\n });\n }\n\n function executeCreate(connector, obj, errorCallback) {\n const modal = openProgressModal(connector.value, obj.name, false);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: obj.query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(connector.value)).then(function (res) {\n $scope.existing[connector.key] = res.data;\n });\n });\n toastr.success('Created connector ' + obj.name);\n }, function (err) {\n toastr.error(getError(err));\n errorCallback();\n }).finally(function () {\n modal.dismiss('cancel');\n });\n }\n\n $scope.copyConnector = function (connector, values) {\n let newValues;\n if (!angular.isUndefined(values)) {\n newValues = angular.copy(values);\n newValues.name = newValues.name + '-copy';\n }\n const modal = $modal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(newValues) ? {name: '', values: {}} : newValues;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.newConnector = function (connector, values) {\n const modal = $modal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(values) ? {name: '', values: {}} : values;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.repair = function (inst, type) {\n ModalService.openSimpleModal({\n title: 'Confirm repair',\n message: 'Are you sure you want to repair this connector?<br>Note that repair means delete + recreate with the same settings.',\n warning: true\n }).result\n .then(function () {\n const modal = openProgressModal(type.value, inst.name, true);\n\n const query = repairConnectorQuery(inst.name, type.value);\n\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n toastr.success('Repaired connector ' + inst.name);\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function () {\n modal.dismiss('cancel');\n });\n });\n };\n\n $scope.delete = function (inst, type) {\n const isExternal = type.key.indexOf(\"Elastic\") >= 0 || type.key.indexOf(\"Solr\") >= 0;\n\n $modal.open({\n templateUrl: 'js/angular/externalsync/templates/deleteConnector.html',\n controller: 'DeleteConnectorCtrl',\n resolve: {\n type: function () {\n return type.key;\n },\n isExternal: function () {\n return isExternal;\n }\n }\n }).result\n .then(function(force) {\n $scope.setLoader(true, 'Deleting connector ' + inst.name, 'This is usually a fast operation but it might take a while.');\n\n const query = deleteConnectorQuery(inst.name, type.value, force);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n if (force) {\n toastr.success(\"Deleted (with force) connector \" + inst.name);\n if (isExternal) {\n toastr.warning(\"You may have to remove the index manually from \" + type.key);\n }\n } else {\n toastr.success(\"Deleted connector \" + inst.name);\n }\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function() {\n $scope.setLoader(false);\n });\n });\n };\n\n $scope.viewQuery = function (connector, inst) {\n $modal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n const options = $scope.getOptions(connector);\n return createConnectorQuery(inst.name, connector.value,\n mapCreateValuesToUiValues(inst.values, options), options);\n }\n }\n });\n };\n}\n\nDeleteConnectorCtrl.$inject = ['$scope', '$modalInstance', 'type', 'isExternal'];\nfunction DeleteConnectorCtrl($scope, $modalInstance, type, isExternal) {\n $scope.force = false;\n $scope.type = type;\n $scope.isExternal = isExternal;\n\n $scope.ok = function () {\n $modalInstance.close($scope.force);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss();\n };\n}\n\nExtendNewConnectorCtrl.$inject = ['$scope', '$modalInstance', 'connector', '$modal', 'toastr'];\nfunction ExtendNewConnectorCtrl($scope, $modalInstance, connector, $modal, toastr) {\n\n $scope.connector = connector;\n\n $scope.addField = function (index, optionName) {\n const newField = angular.copy($scope.defaultValues[optionName][0]);\n $scope.values[optionName].splice(index + 1, 0, newField);\n };\n\n $scope.addOption = function (index, array) {\n array.splice(index + 1, 0, '');\n };\n\n $scope.deleteOption = function (index, array) {\n array.splice(index, 1);\n };\n\n $scope.addMapOption = function (index, array) {\n array.splice(index + 1, 0, {key: '', value: ''});\n };\n\n $scope.deleteMapOption = function (index, array) {\n array.splice(index, 1);\n };\n\n function toQuery() {\n return createConnectorQuery($scope.name, connector.value, $scope.values, $scope.options,\n function (label, error) {\n toastr.error(error, label);\n });\n }\n\n $scope.ok = function () {\n if ($scope.form.$valid) {\n const query = toQuery();\n\n if (query) {\n $modalInstance.close({name: $scope.name, values: $scope.values, options: $scope.options, query: query});\n }\n }\n };\n\n $scope.viewQuery = function () {\n const query = toQuery();\n\n if (query) {\n $modal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nCreateConnectorCtrl.$inject = ['$scope', '$controller', '$http', '$modalInstance', 'connector', '$modal', 'values', 'options'];\n\nfunction CreateConnectorCtrl($scope, $controller, $http, $modalInstance, connector, $modal, values, options) {\n angular.extend(this, $controller('ExtendNewConnectorCtrl', {\n $scope: $scope,\n $modalInstance: $modalInstance,\n connector: connector,\n $modal: $modal\n }));\n $scope.values = values.values;\n $scope.options = options;\n $scope.name = values.name;\n if (!values.skipConversion) {\n $scope.values = mapCreateValuesToUiValues($scope.values, $scope.options);\n }\n $scope.defaultValues = angular.copy($scope.values);\n}\n\n// Note that this is a fancy controller: it's used both for a modal and for a directive.\n// This means you can't rely on custom injection through resolve in the modal and the scope\n// must be shared with the main connectors controller.\nCreateProgressCtrl.$inject = ['$scope', '$interval', '$http', '$repositories'];\n\nfunction CreateProgressCtrl($scope, $interval, $http, $repositories) {\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function initProgress() {\n const query = createStatusQueryForIri($scope.beingBuiltConnector.iri);\n\n // reset iri value so that watch will fire again when we do something with the same connector\n $scope.beingBuiltConnector.iri = null;\n\n $scope.progressInterval = $interval(function () {\n function getFirstStatusFromResult(results) {\n if (results.bindings) {\n if (results.bindings.length > 0) {\n try {\n return JSON.parse(results.bindings[0].status.value);\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n }\n\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = getFirstStatusFromResult(res.data.results);\n if (status.status === 'BUILDING') {\n $scope.beingBuiltConnector.status = status;\n $scope.beingBuiltConnector.percentDone = (100 * status.processedEntities / status.estimatedEntities).toFixed(0);\n $scope.beingBuiltConnector.eta = $scope.getHumanReadableSeconds(status.etaSeconds);\n $scope.beingBuiltConnector.actionName = status.repair ? 'Repairing' : 'Creating';\n $scope.beingBuiltConnector.waitOnRepairStartOnce = false;\n } else if (status.status === 'BUILT' && !$scope.beingBuiltConnector.waitOnRepairStartOnce) {\n // done\n $interval.cancel($scope.progressInterval);\n if ($scope.beingBuiltConnector.doneCallback) {\n $scope.beingBuiltConnector.doneCallback();\n }\n }\n });\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel($scope.progressInterval);\n });\n }\n\n $scope.beingBuiltConnector = $scope.beingBuiltConnector || {};\n\n // for modal instance we get the iri before hand and can start progress now\n if (!$scope.beingBuiltConnector.inline && $scope.beingBuiltConnector.iri) {\n initProgress();\n }\n\n // for inline progress we need to watch for the iri value\n $scope.$watch('beingBuiltConnector.iri', function (value) {\n if ($scope.beingBuiltConnector.inline && value) {\n initProgress();\n }\n });\n}\n\nfunction ceil() {\n return function (input) {\n return Math.ceil(input);\n };\n}\n"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{33:function(e,t,n){"use strict";n.r(t);n(4),n(12);function r(e,t,n,r,o,i,a,s,u,c,l,d,g,f){const p={id:"1",name:"",query:"select * where { \n\t?s ?p ?o .\n} limit 100 \n",inference:!0,sameAs:!0};let y,m=c.getPrincipal();function h(e,t){p.inference=t.appSettings.DEFAULT_INFERENCE,p.sameAs=t.appSettings.DEFAULT_SAMEAS,e.skipCountQuery=!t.appSettings.EXECUTE_COUNT,e.ignoreSharedQueries=t.appSettings.IGNORE_SHARED_QUERIES,e.tabsData=e.tabs=g.get(f.TABS_STATE)||[p],e.$watchCollection("[currentQuery.inference, currentQuery.sameAs]",(function(e,t,n){T(n.currentQuery)})),e.$on("repositoryIsSet",S)}function T(t){e.tabs.forEach((function(n,r){n.id===t.id&&(e.tabs[r].query=t.query,e.tabs[r].inference=t.inference,e.tabs[r].sameAs=t.sameAs)})),g.set(f.TABS_STATE,e.tabs)}function w(t,n,r,o){const i=angular.element(document.getElementById("yasr-inner"));e.queryIsRunning=t,t?(e.queryStartTime=Date.now(),e.countTimeouted=!1,e.progressMessage=n,e.extraMessage=r,e.noLoaderTimer=o,i.addClass("hide")):(e.progressMessage="",e.extraMessage="",e.noLoaderTimer=!1,e.currentTrackAlias=null,e.abortRequested=!1,i.removeClass("hide")),null===e.$$phase&&e.$apply()}function b(n){function r(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}if(e.orientationViewMode){if("yasr"===e.viewMode){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px"}else e.noPadding={},document.querySelector(".CodeMirror-wrap").style.height="";document.getElementById("yasr").style.minHeight=""}else if(e.noPadding={paddingRight:15,paddingLeft:0},window.editor&&document.querySelector(".CodeMirror-wrap")){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px",document.getElementById("yasr").style.minHeight=e+"px"}else{let r;r=t(n?function(){e.fixSizesOnHorizontalViewModeSwitch(n)}:e.fixSizesOnHorizontalViewModeSwitch,100),e.$on("$destroy",(function(){t.cancel(r)}))}window.yasr&&window.yasr.container&&t((function(){window.yasr.container.resize()}),100)}function C(){b(!0)}function S(t,n){n.newRepo&&(e.tabsData=g.get(f.TABS_STATE),e.tabsData.forEach((function(e){e.yasrData=void 0,e.queryType=void 0,e.resultsCount=0,e.allResultsCount=0,e.sizeDelta=void 0})),g.set(f.TABS_STATE,e.tabsData),e.tabs=e.tabsData,e.currentQuery={},e.errorMessage=null,e.repositoryError=null)}function E(e){t((function(){$('a[data-id = "'+e+'"]').tab("show")}),0)}function v(o,i){if(e.executedQueryTab=e.currentQuery,i){if("SELECT"!==window.editor.getQueryType()&&"CONSTRUCT"!==window.editor.getQueryType())return void n.warning("Explain only works with SELECT or CONSTRUCT queries.");if(r.isActiveRepoOntopType())return void n.warning("Explain not supported for Virtual repositories.")}if(e.explainRequested=i,!e.queryIsRunning){if(o?e.currentTabConfig.resultsCount=0:e.resetCurrentTabConfig(),e.lastRunQueryMode=window.editor.getQueryMode(),"update"===e.lastRunQueryMode&&r.isActiveRepoOntopType())return void n.warning("Updates are not supported for Virtual repositories.");if(w(!0,"update"===e.lastRunQueryMode?"Executing update":"Evaluating query"),"none"!==e.viewMode){e.viewMode="none",e.orientationViewMode&&e.fixSizesOnHorizontalViewModeSwitch();const n=t(window.editor.query,500);e.$on("$destroy",(function(){t.cancel(n)}))}else window.editor.query()}}function Q(){e.showSampleQueries=!e.showSampleQueries,e.showSampleQueries?a.getSavedQueries().success((function(t){e.sampleQueries=t,$("#sampleQueriesCollapse").collapse("show").width("300px")})).error((function(e){const t=getError(e);n.error(t,"Error! Could not get saved queries")})):$("#sampleQueriesCollapse").collapse("hide")}function M(t){let n=void 0;return e.tabsData.forEach((function(e){if(e.name===t.name&&e.query===t.body)return n=e.id,e})),n}function A(t){return function(n,r,o){e.savedQuery={name:n,query:r||window.editor.getValue(),shared:o},$(t).modal("show")}}function q(t){for(let n=0;n<e.tabsData.length;n++){if(e.tabsData[n].id===t)return n}}m?h(e,m):e.$on("securityInit",(function(e){m=c.getPrincipal(),h(e.currentScope,m)})),this.hint=document.createElement("span"),this.hint.innerHTML='Hint: "abC" matches "abC*", "ab c*" and "ab-c*"',this.hint.style.fontSize="12px",this.hint.style.color="gray",this.hint.style.backgroundColor="white",this.hint.style.position="absolute",this.hint.style.zIndex="3",this.hint.style.paddingLeft="12px",e.$watch((function(){return angular.element(".CodeMirror-hints").length}),e=>{if(e){const e=angular.element(".CodeMirror-hints")[0].getBoundingClientRect();document.body.appendChild(this.hint),this.hint.style.top=e.top-20+"px",this.hint.style.left=e.right-this.hint.offsetWidth-12+"px"}else this.hint&&this.hint.parentNode&&this.hint.parentNode.removeChild(this.hint)}),e.resetCurrentTabConfig=function(){e.currentTabConfig={pageSize:1e3,page:1,allResultsCount:0,resultsCount:0}},e.queryExists=!1,e.resetCurrentTabConfig(),e.saveTab=function(t){const n=q(t);if(void 0===n)return{};const r=e.tabsData[n];return e.saveQueryToLocal(r),r},e.loadTab=function(n){e.tabsData=g.get(f.TABS_STATE)||[p];const o=q(n),i=e.tabsData[o];i.yasrData&&w(!0,"Rendering results",null,!0);t((function(){""===e.currentQuery.query&&(e.currentQuery.query=" "),t((function(){window.editor.setValue(e.currentQuery.query),e.yasr.updateDownloadDropdown(),e.$broadcast("tabLoaded",e.currentQuery.id),e.yasr.options.output=i.outputType,i.yasrData&&(i.yasrData.customError?(e.yasr.results={getException:function(){return i.yasrData.customError}},w(!1)):t((function(){e.setYasrResponse(i.yasrData,i.textStatus,i.jqXhrOrErrorString),w(!1),$(".yasr_btnGroup li:nth-child(2)").hasClass("active")&&t((function(){$(".yasr_btnGroup li:nth-child(2) a").get(0).click()}),0)}),0))}),0)}),0),g.set(f.TABS_STATE_CURRENT_ID,n),e.currentQuery=i,t((function(){e.currentTabConfig={},e.currentTabConfig.queryType=i.queryType,e.currentTabConfig.resultsCount=i.resultsCount,e.currentTabConfig.offset=i.offset,e.currentTabConfig.allResultsCount=i.allResultsCount,e.currentTabConfig.allResultsCountExact=i.allResultsCountExact,e.currentTabConfig.page=i.page,e.currentTabConfig.pageSize=i.pageSize,e.currentTabConfig.timeFinished=i.timeFinished,e.currentTabConfig.timeTook=i.timeTook,e.currentTabConfig.sizeDelta=i.sizeDelta,e.currentTabConfig.customUpdateMessage=i.customUpdateMessage,e.currentTabConfig.errorMessage=i.errorMessage,e.currentTabConfig.warningMessage=i.warningMessage,e.$apply()}),0),$("#yasr").css("padding","0"),y||(y=setInterval(x,200));!function(){const t=r.isActiveRepoOntopType(),n=r.isActiveRepoFedXType();(function(e){const t=document.getElementById("sameAs"),n=document.getElementById("inference");t.disabled=!(!t||!e),n.disabled=!(!n||!e)})(t),e.nocount=!(!t&&!n)||!m.appSettings.EXECUTE_COUNT,e.currentQuery.inference=!!t||m.appSettings.DEFAULT_INFERENCE,e.currentQuery.sameAs=!!t||m.appSettings.DEFAULT_SAMEAS}()},e.addNewTab=function(n,r,o){if(!N(!0))return;let i;i=r||o?{id:"1",name:r,query:o,inference:m.appSettings.DEFAULT_INFERENCE,sameAs:m.appSettings.DEFAULT_SAMEAS}:{id:"1",name:"",query:"select * where { \n\t?s ?p ?o .\n} limit 100 \n",inference:m.appSettings.DEFAULT_INFERENCE,sameAs:m.appSettings.DEFAULT_SAMEAS};D++;const a=""+D;e.tabsData=e.tabs;const s=i;s.id=a,e.tabsData.push(s),g.set(f.TABS_STATE_MAXID,D),g.set(f.TABS_STATE,e.tabsData);const u=Array.prototype.slice.call(arguments,1);t((function(){e.$apply(),E(a),n&&n.apply(this,u)}),0),e.tabs=e.tabsData},e.isTabChangeOk=N,e.runQuery=v,e.abortCurrentQuery=function(){d.abortQueryByAlias(e.currentTrackAlias).success((function(){e.abortRequested=!0}))},e.editQuery=function(t){o.open({templateUrl:"js/angular/core/directives/queryeditor/templates/query-sample.html",controller:"QuerySampleModalCtrl",resolve:{data:function(){return{title:'Edit Saved Query: "'+t.name+'"',query:t,edit:!0,okButtonText:"Save"}}}}).result.then((function(r){const o={name:r.name,body:r.body,shared:r.shared};t.name!==r.name?a.addNewSavedQuery(o).success((function(){e.deleteQueryHttp(t.name,!0)})).error((function(e){const t=getError(e);n.error(t,"Error! Cannot edit saved query")})):a.editSavedQuery(o).success((function(){$("#editQueryContainer").modal("hide"),e.toggleSampleQueries(),n.success("Saved query "+t.name+" was edited.")})).error((function(e){const t=getError(e);n.error(t,"Error! Cannot edit Saved query")}))}))},e.getNamespaces=function(){w(!0,"Refreshing namespaces","Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first."),e.namespacesLoading=!0,l.getRepositoryNamespaces().success((function(t){const n={};t.results.bindings.forEach((function(e){n[e.prefix.value]=e.namespace.value})),e.namespaces=n})).error((function(t){e.repositoryError=getError(t)})).finally((function(){w(!1),e.namespacesLoading=!1}))},e.changePagination=function(){v(!0,e.explainRequested)},e.toggleSampleQueries=Q,e.addKnownPrefixes=function(){a.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(e){angular.isDefined(window.editor)&&angular.isDefined(e)&&e!==window.editor.getValue()&&window.editor.setValue(e)})).error((function(e){const t=getError(e);return n.error(t,"Error! Could not add known prefixes"),!0}))},e.getExistingTabId=M,e.querySelected=function(t){const n=M(t);e.toggleSampleQueries(),e.isTabChangeOk(!1)&&(e.highlightNextTabChange=!0,angular.isDefined(n)?E(n):e.addNewTab(null,t.name,t.body))},e.deleteQuery=function(t){i.openSimpleModal({title:"Confirm",message:"Are you sure you want to delete the saved query '"+t+"'?",warning:!0}).result.then((function(){e.deleteQueryHttp(t)}))},e.deleteQueryHttp=function(t,r){a.deleteSavedQuery(t).success((function(){e.toggleSampleQueries(),r||n.success("Saved query: "+t+" was deleted.")})).error((function(e){const t=getError(e);n.error(t,"Error! Cannot delete saved query")}))},e.saveQuery=function(t,n){o.open({templateUrl:"js/angular/core/directives/queryeditor/templates/query-sample.html",controller:"QuerySampleModalCtrl",resolve:{data:function(){return{title:"Create New Saved Query",query:{name:t.name,body:t.query,shared:t.shared},edit:!1,okButtonText:"Create",queryExists:n}}}}).result.then((function(t){e.saveQueryHttp(t)}),(function(){}))},e.saveQueryHttp=function(t){a.addNewSavedQuery(t).success((function(){n.success("Saved query "+t.name+" was saved.")})).error((function(r){let o=getError(r);if(n.error(o,"Error! Cannot create saved query"),o="Query '"+t.name+"' already exists!"){t.query=t.body;const n=!0;e.saveQuery(t,n)}}))},e.saveQueryToLocal=T,e.setLoader=w,e.getLoaderMessage=function(){const t=(Date.now()-e.queryStartTime)/1e3;let n="",r="";e.noLoaderTimer||(n=e.getHumanReadableSeconds(t));r=e.progressMessage?e.progressMessage+"... "+n:"Running operation... "+n;e.extraMessage&&t>10&&(r+="\n"+e.extraMessage);return r},e.fixSizesOnHorizontalViewModeSwitch=b,e.changeViewMode=function(){e.viewMode="none",e.orientationViewMode=!e.orientationViewMode,g.set(f.VIEW_MODE,e.orientationViewMode),b()},e.showHideEditor=C,e.focusQueryEditor=function(){angular.element(document).find(".editable-input").is(":focus")||angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.orientationViewMode=!g.get(f.VIEW_MODE)||"true"===g.get(f.VIEW_MODE),e.viewMode="none",e.getActiveRepository=function(){return r.getActiveRepository()},e.getActiveRepositoryNoError=function(){if(!e.repositoryError)return r.getActiveRepository()},e.orientationViewMode||C(),window.onbeforeunload=function(){e.currentQuery&&e.saveTab(e.currentQuery.id),g.set(f.TABS_STATE,e.tabs)},e.$on("$destroy",(function(){e.currentQuery&&e.saveTab(e.currentQuery.id),g.set(f.TABS_STATE,e.tabs),clearInterval(y)})),e.$on("$destroy",(function(){clearInterval(y),window.editor=null,window.yasr=null})),$(document).mouseup((function(t){const n=$("#sampleQueriesCollapse");!n.is(t.target)&&0===n.has(t.target).length&&e.showSampleQueries&&Q()}));let D=g.get(f.TABS_STATE_MAXID)||1;function R(e){return $(e).attr("data-id")}function x(){if(e.currentTabConfig.resultsCount>=0){const e=$(".saveAsDropDown");e.length>0&&!window.editor.queryValid?yasr.header.find(".saveAsDropDown").remove():0===e.length&&window.editor.queryValid&&yasr.updateDownloadDropdown()}}function N(t){return!(e.queryIsRunning&&!e.namespacesLoading)||(t?n.info("New tabs may not be opened while query or update is running."):n.info("Tabs may not be switched while query or update is running."),!1)}e.highlightNextTabChange=!1,e.$on("tabAction",(function(n,r){r.relatedTarget&&(t.cancel(r.relatedTarget.timer),$(r.relatedTarget).css("color",""),e.saveTab(R(r.relatedTarget))),e.loadTab(R(r.target));const o=["#ED4F2F","","#ED4F2F"],i=[400,400,400];if(e.highlightNextTabChange){e.highlightNextTabChange=!1;let n=0;$(r.target).css("color",o[n]);const a=function(){n++,n<o.length?($(r.target).css("color",o[n]),r.target.timer=t(a,i[n])):$(r.target).css("color","")};t(a,i[n])}})),e.$on("deleteAllexeptSelected",(function(t,n){e.tabsData=n,e.tabs=n})),e.currentQuery={},e.showSampleQueries=!1,e.savedQuery={},e.sampleQueries={},e.editQueryModal=A("#editQueryContainer"),e.deleteQueryModal=A("#confirmDeleteContainer"),e.saveQueryModal=A("#saveQueryContainer"),e.getResultsDescription=function(){let t;if(0===e.currentTabConfig.resultsCount)t="No results.";else{const n=(e.currentTabConfig.page-1)*e.currentTabConfig.pageSize+Math.min(e.currentTabConfig.resultsCount,e.currentTabConfig.pageSize);t="Showing results from "+s("currency")(e.currentTabConfig.offset,"",0)+" to "+s("currency")(n,"",0),e.currentTabConfig.allResultsCount>0&&(t+=e.currentTabConfig.allResultsCountExact?" of ":" of at least ",t+=s("currency")(e.currentTabConfig.allResultsCount,"",0)),t+="."}return t},e.getUpdateDescription=function(){return e.currentTabConfig.customUpdateMessage?e.currentTabConfig.customUpdateMessage:void 0===e.currentTabConfig.sizeDelta?"":e.currentTabConfig.sizeDelta<0?"Removed "+Math.abs(e.currentTabConfig.sizeDelta)+" statements.":e.currentTabConfig.sizeDelta>0?"Added "+e.currentTabConfig.sizeDelta+" statements.":"The number of statements did not change."},e.getStaleWarningMessage=function(){const t=60*Math.round((Date.now()-e.currentTabConfig.timeFinished)/6e4);if(t>=3600)return"Possibly stale result (obtained "+e.getHumanReadableSeconds(t)+" ago)."};const _=function(){};angular.element(u).bind("resize",_),e.$on("$destroy",(function(){angular.element(u).unbind("resize",_)}))}function o(e,t,n){n.queryExists&&(e.queryExists=!0),e.query=angular.copy(n.query),e.title=n.title,e.edit=n.edit,e.okButtonText=n.okButtonText,e.ok=function(){e.form.$valid&&t.close(e.query)},e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.core.directives.queryeditor.controllers",["graphdb.framework.utils.localstorageadapter","graphdb.framework.rest.sparql.service"]).controller("QueryEditorCtrl",r).controller("QuerySampleModalCtrl",o),r.$inject=["$scope","$timeout","toastr","$repositories","$modal","ModalService","SparqlRestService","$filter","$window","$jwtAuth","RDF4JRepositoriesRestService","MonitoringRestService","LocalStorageAdapter","LSKeys"],o.$inject=["$scope","$modalInstance","data"]}}]);
|
|
2
|
-
//# sourceMappingURL=49.71f6e0f6f3284bf63cab.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/core/directives/queryeditor/query-editor.controller.js"],"names":["QueryEditorCtrl","$scope","$timeout","toastr","$repositories","$modal","ModalService","SparqlRestService","$filter","$window","$jwtAuth","RDF4JRepositoriesRestService","MonitoringRestService","LocalStorageAdapter","LSKeys","defaultTabConfig","id","name","query","inference","sameAs","checkQueryIntervalId","principal","getPrincipal","initTabs","scope","appSettings","DEFAULT_INFERENCE","DEFAULT_SAMEAS","skipCountQuery","EXECUTE_COUNT","ignoreSharedQueries","IGNORE_SHARED_QUERIES","tabsData","tabs","get","TABS_STATE","$watchCollection","newVal","oldVal","saveQueryToLocal","currentQuery","$on","deleteCachedSparqlResults","currentQueryTab","forEach","tab","index","set","setLoader","isRunning","progressMessage","extraMessage","noTimer","yasrInnerContainer","angular","element","document","getElementById","queryIsRunning","queryStartTime","Date","now","countTimeouted","noLoaderTimer","addClass","currentTrackAlias","abortRequested","removeClass","$$phase","$apply","fixSizesOnHorizontalViewModeSwitch","verticalView","visibleWindowHeight","window","innerHeight","documentElement","clientHeight","body","orientationViewMode","viewMode","newHeight","querySelector","getBoundingClientRect","style","height","noPadding","minHeight","paddingRight","paddingLeft","editor","timer","cancel","yasr","container","resize","showHideEditor","foo","params","newRepo","item","yasrData","undefined","queryType","resultsCount","allResultsCount","sizeDelta","errorMessage","repositoryError","selectTab","$","runQuery","changePage","explain","executedQueryTab","getQueryType","warning","isActiveRepoOntopType","explainRequested","currentTabConfig","resetCurrentTabConfig","lastRunQueryMode","getQueryMode","toggleSampleQueries","showSampleQueries","getSavedQueries","success","data","sampleQueries","collapse","width","error","msg","getError","getExistingTabId","existingTabId","showModal","modalSelector","shared","savedQuery","getValue","modal","findTabIndexByID","i","length","currentScope","this","hint","createElement","innerHTML","fontSize","color","backgroundColor","position","zIndex","$watch","newValue","elRect","appendChild","top","left","right","offsetWidth","parentNode","removeChild","pageSize","page","queryExists","saveTab","idx","loadTab","setValue","updateDownloadDropdown","$broadcast","options","output","outputType","customError","results","getException","setYasrResponse","textStatus","jqXhrOrErrorString","hasClass","click","TABS_STATE_CURRENT_ID","offset","allResultsCountExact","timeFinished","timeTook","customUpdateMessage","warningMessage","css","setInterval","showOrHideSaveAsDropDown","isOntop","isFedX","isActiveRepoFedXType","sameAsBtn","inferenceBtn","disabled","handleSameAsAndInferenceBtns","nocount","overrideSameAsInferenceAndNoCountIfNeeded","addNewTab","callback","tabName","isTabChangeOk","maxID","newID","newTab","push","TABS_STATE_MAXID","callbackArgs","Array","prototype","slice","call","arguments","apply","abortCurrentQuery","abortQueryByAlias","editQuery","open","templateUrl","controller","resolve","title","edit","okButtonText","result","then","queryModal","addNewSavedQuery","deleteQueryHttp","editSavedQuery","getNamespaces","namespacesLoading","getRepositoryNamespaces","usedPrefixes","bindings","e","prefix","value","namespace","namespaces","finally","changePagination","addKnownPrefixes","JSON","stringify","isDefined","querySelected","tabId","highlightNextTabChange","deleteQuery","savedQueryName","openSimpleModal","message","deleteSavedQuery","saveQuery","saveQueryHttp","getLoaderMessage","timeSeconds","timeHuman","getHumanReadableSeconds","changeViewMode","VIEW_MODE","focusQueryEditor","find","is","focus","getActiveRepository","getActiveRepositoryNoError","onbeforeunload","clearInterval","mouseup","event","target","has","getQueryID","attr","$saveAsDropDown","queryValid","header","remove","isNew","info","tabEvent","relatedTarget","colors","times","highlightFun","editQueryModal","deleteQueryModal","saveQueryModal","getResultsDescription","desc","currentPageEnd","Math","min","getUpdateDescription","abs","getStaleWarningMessage","secondsAgo","round","bind","unbind","QuerySampleModalCtrl","$modalInstance","copy","ok","form","$valid","close","dismiss","module","$inject"],"mappings":"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","file":"49.71f6e0f6f3284bf63cab.bundle.js","sourcesContent":["import 'angular/utils/local-storage-adapter';\nimport 'angular/rest/sparql.rest.service';\n\nangular\n .module('graphdb.framework.core.directives.queryeditor.controllers', [\n 'graphdb.framework.utils.localstorageadapter',\n 'graphdb.framework.rest.sparql.service'\n ])\n .controller('QueryEditorCtrl', QueryEditorCtrl)\n .controller('QuerySampleModalCtrl', QuerySampleModalCtrl);\n\nQueryEditorCtrl.$inject = ['$scope', '$timeout', 'toastr', '$repositories', '$modal', 'ModalService', 'SparqlRestService', '$filter', '$window', '$jwtAuth', 'RDF4JRepositoriesRestService', 'MonitoringRestService', 'LocalStorageAdapter', 'LSKeys'];\n\nfunction QueryEditorCtrl($scope, $timeout, toastr, $repositories, $modal, ModalService, SparqlRestService, $filter, $window, $jwtAuth, RDF4JRepositoriesRestService, MonitoringRestService, LocalStorageAdapter, LSKeys) {\n const defaultTabConfig = {\n id: \"1\",\n name: '',\n query: 'select * where { \\n' +\n '\\t?s ?p ?o .\\n' +\n '} limit 100 \\n',\n inference: true,\n sameAs: true\n };\n\n let principal = $jwtAuth.getPrincipal();\n let checkQueryIntervalId;\n if (principal) {\n initTabs($scope, principal);\n // principal is not yet set, wait for its initialization\n } else {\n $scope.$on('securityInit', function (scope) {\n principal = $jwtAuth.getPrincipal();\n initTabs(scope.currentScope, principal);\n });\n }\n\n function initTabs(scope, principal) {\n defaultTabConfig.inference = principal.appSettings.DEFAULT_INFERENCE;\n defaultTabConfig.sameAs = principal.appSettings.DEFAULT_SAMEAS;\n\n scope.skipCountQuery = !principal.appSettings.EXECUTE_COUNT;\n scope.ignoreSharedQueries = principal.appSettings.IGNORE_SHARED_QUERIES;\n scope.tabsData = scope.tabs = LocalStorageAdapter.get(LSKeys.TABS_STATE) || [defaultTabConfig];\n\n scope.$watchCollection('[currentQuery.inference, currentQuery.sameAs]', function (newVal, oldVal, scope) {\n saveQueryToLocal(scope.currentQuery);\n });\n\n scope.$on('repositoryIsSet', deleteCachedSparqlResults);\n }\n\n this.hint = document.createElement(\"span\");\n this.hint.innerHTML = \"Hint: \\\"abC\\\" matches \\\"abC*\\\", \\\"ab c*\\\" and \\\"ab-c*\\\"\";\n this.hint.style.fontSize = \"12px\";\n this.hint.style.color = \"gray\";\n this.hint.style.backgroundColor = \"white\";\n this.hint.style.position = \"absolute\";\n this.hint.style.zIndex = \"3\";\n this.hint.style.paddingLeft = 12 + \"px\";\n\n $scope.$watch(function() {\n return angular.element('.CodeMirror-hints').length;\n }, (newValue) => {\n if (newValue) {\n const elRect = angular.element('.CodeMirror-hints')[0].getBoundingClientRect();\n document.body.appendChild(this.hint);\n this.hint.style.top = elRect.top - 20 + \"px\";\n this.hint.style.left = elRect.right - this.hint.offsetWidth - 12 + \"px\";\n } else {\n this.hint && this.hint.parentNode && this.hint.parentNode.removeChild(this.hint);\n }\n });\n\n $scope.resetCurrentTabConfig = function () {\n $scope.currentTabConfig = {\n pageSize: 1000,\n page: 1,\n allResultsCount: 0,\n resultsCount: 0\n };\n };\n\n $scope.queryExists = false;\n\n $scope.resetCurrentTabConfig();\n\n // query tab operations\n $scope.saveTab = saveTab;\n $scope.loadTab = loadTab;\n $scope.addNewTab = addNewTab;\n $scope.isTabChangeOk = isTabChangeOk;\n\n // query operations\n $scope.runQuery = runQuery;\n $scope.abortCurrentQuery = abortCurrentQuery;\n $scope.editQuery = editQuery;\n $scope.getNamespaces = getNamespaces;\n $scope.changePagination = changePagination;\n $scope.toggleSampleQueries = toggleSampleQueries;\n $scope.addKnownPrefixes = addKnownPrefixes;\n $scope.getExistingTabId = getExistingTabId;\n $scope.querySelected = querySelected;\n $scope.deleteQuery = deleteQuery;\n $scope.deleteQueryHttp = deleteQueryHttp;\n $scope.saveQuery = saveQuery;\n $scope.saveQueryHttp = saveQueryHttp;\n $scope.saveQueryToLocal = saveQueryToLocal;\n\n $scope.setLoader = setLoader;\n $scope.getLoaderMessage = getLoaderMessage;\n\n // query editor and results orientation\n $scope.fixSizesOnHorizontalViewModeSwitch = fixSizesOnHorizontalViewModeSwitch;\n $scope.changeViewMode = changeViewMode;\n $scope.showHideEditor = showHideEditor;\n $scope.focusQueryEditor = focusQueryEditor;\n $scope.orientationViewMode = LocalStorageAdapter.get(LSKeys.VIEW_MODE) ? LocalStorageAdapter.get(LSKeys.VIEW_MODE) === \"true\" : true;\n $scope.viewMode = 'none';\n\n // start of repository actions\n // FIXME: do we need this??\n // $scope.getActiveRepository();\n $scope.getActiveRepository = function () {\n // same as getActiveRepository() but takes into account repo errors\n return $repositories.getActiveRepository();\n };\n\n $scope.getActiveRepositoryNoError = function () {\n if (!$scope.repositoryError) {\n return $repositories.getActiveRepository();\n }\n };\n\n function saveQueryToLocal(currentQueryTab) {\n $scope.tabs.forEach(function (tab, index) {\n if (tab.id === currentQueryTab.id) {\n $scope.tabs[index].query = currentQueryTab.query;\n $scope.tabs[index].inference = currentQueryTab.inference;\n $scope.tabs[index].sameAs = currentQueryTab.sameAs;\n }\n });\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n }\n\n function setLoader(isRunning, progressMessage, extraMessage, noTimer) {\n const yasrInnerContainer = angular.element(document.getElementById(\"yasr-inner\"));\n $scope.queryIsRunning = isRunning;\n if (isRunning) {\n $scope.queryStartTime = Date.now();\n $scope.countTimeouted = false;\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n $scope.noLoaderTimer = noTimer;\n yasrInnerContainer.addClass(\"hide\");\n } else {\n $scope.progressMessage = \"\";\n $scope.extraMessage = \"\";\n $scope.noLoaderTimer = false;\n $scope.currentTrackAlias = null;\n $scope.abortRequested = false;\n yasrInnerContainer.removeClass(\"hide\");\n }\n // We might call this from angular or outside angular so take care of applying the scope.\n if ($scope.$$phase === null) {\n $scope.$apply();\n }\n }\n\n function getLoaderMessage() {\n const timeSeconds = (Date.now() - $scope.queryStartTime) / 1000;\n let timeHuman = \"\";\n let message = \"\";\n\n if (!$scope.noLoaderTimer) {\n timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n }\n\n if ($scope.progressMessage) {\n message = $scope.progressMessage + \"... \" + timeHuman;\n } else {\n message = \"Running operation... \" + timeHuman;\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += \"\\n\" + $scope.extraMessage;\n }\n\n return message;\n }\n\n // start of query editor results orientation operations\n function fixSizesOnHorizontalViewModeSwitch(verticalView) {\n function visibleWindowHeight() {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;\n }\n\n if (!$scope.orientationViewMode) {\n $scope.noPadding = {paddingRight: 15, paddingLeft: 0};\n\n // window.editor is undefined if no repo is selected\n if (window.editor && document.querySelector('.CodeMirror-wrap')) {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n document.getElementById('yasr').style.minHeight = newHeight + 'px';\n //window.editor.refresh();\n } else {\n let timer;\n if (verticalView) {\n timer = $timeout(function () {\n $scope.fixSizesOnHorizontalViewModeSwitch(verticalView);\n }, 100);\n } else {\n timer = $timeout($scope.fixSizesOnHorizontalViewModeSwitch, 100);\n }\n\n $scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }\n } else {\n if ($scope.viewMode === 'yasr') {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n //window.editor.refresh();\n } else {\n $scope.noPadding = {};\n document.querySelector('.CodeMirror-wrap').style.height = '';\n //window.editor.refresh();\n }\n document.getElementById('yasr').style.minHeight = '';\n }\n if (window.yasr && window.yasr.container) {\n $timeout(function () {\n window.yasr.container.resize();\n }, 100);\n }\n }\n\n if (!$scope.orientationViewMode) {\n showHideEditor();\n }\n\n function changeViewMode() {\n $scope.viewMode = 'none';\n $scope.orientationViewMode = !$scope.orientationViewMode;\n LocalStorageAdapter.set(LSKeys.VIEW_MODE, $scope.orientationViewMode);\n fixSizesOnHorizontalViewModeSwitch();\n }\n\n function showHideEditor() {\n fixSizesOnHorizontalViewModeSwitch(true);\n }\n\n function focusQueryEditor() {\n if (!angular.element(document).find('.editable-input').is(\":focus\")) {\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }\n }\n\n // end of query editor results orientation operations\n\n function deleteCachedSparqlResults(foo, params) {\n if (params.newRepo) {\n $scope.tabsData = LocalStorageAdapter.get(LSKeys.TABS_STATE);\n $scope.tabsData.forEach(function (item) {\n item.yasrData = undefined;\n item.queryType = undefined;\n item.resultsCount = 0;\n item.allResultsCount = 0;\n item.sizeDelta = undefined;\n });\n\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabsData);\n $scope.tabs = $scope.tabsData;\n\n // The repository is changed. Remove error messages as well, if any\n $scope.currentQuery = {};\n $scope.errorMessage = null;\n $scope.repositoryError = null;\n }\n }\n\n function selectTab(id) {\n $timeout(function () {\n $('a[data-id = \"' + id + '\"]').tab('show');\n }, 0);\n }\n\n window.onbeforeunload = function () {\n if ($scope.currentQuery) {\n $scope.saveTab($scope.currentQuery.id);\n }\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n };\n\n $scope.$on('$destroy', function () {\n if ($scope.currentQuery) {\n $scope.saveTab($scope.currentQuery.id);\n }\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n clearInterval(checkQueryIntervalId);\n });\n\n // start of query operations\n function runQuery(changePage, explain) {\n $scope.executedQueryTab = $scope.currentQuery;\n if (explain) {\n if (!(window.editor.getQueryType() === 'SELECT' || window.editor.getQueryType() === 'CONSTRUCT')) {\n toastr.warning('Explain only works with SELECT or CONSTRUCT queries.');\n return;\n }\n\n if ($repositories.isActiveRepoOntopType()) {\n toastr.warning('Explain not supported for Virtual repositories.');\n return;\n }\n }\n\n $scope.explainRequested = explain;\n if (!$scope.queryIsRunning) {\n if (changePage) {\n $scope.currentTabConfig.resultsCount = 0;\n } else {\n $scope.resetCurrentTabConfig();\n }\n\n $scope.lastRunQueryMode = window.editor.getQueryMode();\n\n if ($scope.lastRunQueryMode === 'update' && $repositories.isActiveRepoOntopType()) {\n toastr.warning('Updates are not supported for Virtual repositories.');\n return;\n }\n\n setLoader(true, $scope.lastRunQueryMode === 'update' ? 'Executing update' : 'Evaluating query');\n if ($scope.viewMode !== 'none') {\n $scope.viewMode = 'none';\n if ($scope.orientationViewMode) {\n $scope.fixSizesOnHorizontalViewModeSwitch();\n }\n const timer = $timeout(window.editor.query, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n } else {\n window.editor.query();\n }\n }\n }\n\n function abortCurrentQuery() {\n MonitoringRestService.abortQueryByAlias($scope.currentTrackAlias)\n .success(function () {\n $scope.abortRequested = true;\n });\n }\n\n function getNamespaces() {\n // Signals the namespaces are to be fetched => loader will be shown\n setLoader(true, 'Refreshing namespaces', 'Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first.');\n $scope.namespacesLoading = true;\n\n RDF4JRepositoriesRestService.getRepositoryNamespaces()\n .success(function (data) {\n const usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.namespaces = usedPrefixes;\n })\n .error(function (data) {\n $scope.repositoryError = getError(data);\n })\n .finally(function () {\n // Signals namespaces were fetched => loader will be hidden\n setLoader(false);\n $scope.namespacesLoading = false;\n });\n }\n\n function changePagination() {\n runQuery(true, $scope.explainRequested);\n }\n\n $scope.$on(\"$destroy\", function () {\n clearInterval(checkQueryIntervalId);\n window.editor = null;\n window.yasr = null;\n });\n\n function toggleSampleQueries() {\n $scope.showSampleQueries = !$scope.showSampleQueries;\n if ($scope.showSampleQueries) {\n SparqlRestService.getSavedQueries()\n .success(function (data) {\n $scope.sampleQueries = data;\n $('#sampleQueriesCollapse').collapse('show').width('300px');\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error! Could not get saved queries');\n });\n } else {\n $('#sampleQueriesCollapse').collapse('hide');\n }\n }\n\n // Hide the sample queries when the user clicks somewhere else in the UI.\n $(document).mouseup(function (event) {\n const container = $('#sampleQueriesCollapse');\n if (!container.is(event.target) // if the target of the click isn't the container..\n && container.has(event.target).length === 0 //... nor a descendant of the container\n && $scope.showSampleQueries) {\n toggleSampleQueries();\n }\n });\n\n // Add known prefixes\n function addKnownPrefixes() {\n SparqlRestService.addKnownPrefixes(JSON.stringify(window.editor.getValue()))\n .success(function (data) {\n if (angular.isDefined(window.editor) && angular.isDefined(data) && data !== window.editor.getValue()) {\n window.editor.setValue(data);\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error! Could not add known prefixes');\n return true;\n });\n }\n\n function querySelected(query) {\n const tabId = getExistingTabId(query);\n $scope.toggleSampleQueries();\n\n if ($scope.isTabChangeOk(false)) {\n $scope.highlightNextTabChange = true;\n if (!angular.isDefined(tabId)) {\n $scope.addNewTab(null, query.name, query.body);\n } else {\n selectTab(tabId);\n }\n }\n }\n\n function getExistingTabId(query) {\n let existingTabId = undefined;\n $scope.tabsData.forEach(function (item) {\n if (item.name === query.name && item.query === query.body) {\n existingTabId = item.id;\n return item;\n }\n });\n return existingTabId;\n }\n\n function editQuery(query) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/core/directives/queryeditor/templates/query-sample.html',\n controller: 'QuerySampleModalCtrl',\n resolve: {\n data: function () {\n return {\n title: 'Edit Saved Query: \"' + query.name + '\"',\n query: query,\n edit: true,\n okButtonText: 'Save'\n };\n }\n }\n });\n\n modalInstance.result.then(function (queryModal) {\n const data = {\n name: queryModal.name,\n body: queryModal.body,\n shared: queryModal.shared\n };\n if (query.name !== queryModal.name) {\n SparqlRestService.addNewSavedQuery(data)\n .success(function () {\n $scope.deleteQueryHttp(query.name, true);\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error! Cannot edit saved query');\n });\n } else {\n SparqlRestService.editSavedQuery(data)\n .success(function () {\n $('#editQueryContainer').modal('hide');\n $scope.toggleSampleQueries();\n toastr.success('Saved query ' + query.name + ' was edited.');\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error! Cannot edit Saved query');\n });\n }\n });\n }\n\n function deleteQueryHttp(savedQueryName, edit) {\n SparqlRestService.deleteSavedQuery(savedQueryName)\n .success(function () {\n $scope.toggleSampleQueries();\n if (!edit) {\n toastr.success('Saved query: ' + savedQueryName + ' was deleted.');\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error! Cannot delete saved query');\n });\n }\n\n function deleteQuery(savedQueryName) {\n ModalService.openSimpleModal({\n title: 'Confirm',\n message: 'Are you sure you want to delete the saved query ' + '\\'' + savedQueryName + '\\'?',\n warning: true\n }).result\n .then(function () {\n $scope.deleteQueryHttp(savedQueryName);\n });\n }\n\n function saveQueryHttp(query) {\n SparqlRestService.addNewSavedQuery(query)\n .success(function () {\n toastr.success('Saved query ' + query.name + ' was saved.');\n })\n .error(function (data) {\n let msg = getError(data);\n toastr.error(msg, 'Error! Cannot create saved query');\n // TODO: This condition will always be true\n if (msg = \"Query '\" + query.name + \"' already exists!\") {\n query.query = query.body;\n const queryExists = true;\n $scope.saveQuery(query, queryExists);\n }\n });\n }\n\n function saveQuery(query, queryExists) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/core/directives/queryeditor/templates/query-sample.html',\n controller: 'QuerySampleModalCtrl',\n resolve: {\n data: function () {\n return {\n title: 'Create New Saved Query',\n query: {name: query.name, body: query.query, shared: query.shared},\n edit: false,\n okButtonText: 'Create',\n queryExists: queryExists\n };\n }\n }\n });\n\n modalInstance.result.then(function (query) {\n $scope.saveQueryHttp(query);\n }, function () {\n });\n }\n\n // end of query operations\n\n function showModal(modalSelector) {\n return function (name, query, shared) {\n $scope.savedQuery = {\n name: name,\n query: query || window.editor.getValue(),\n shared: shared\n };\n $(modalSelector).modal('show');\n };\n }\n\n\n // start of query tab operations\n function findTabIndexByID(id) {\n for (let i = 0; i < $scope.tabsData.length; i++) {\n const tab = $scope.tabsData[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n function saveTab(id) {\n const idx = findTabIndexByID(id);\n // Tab was deleted, don't try to save it's state\n if (idx === undefined) {\n return {};\n }\n const tab = $scope.tabsData[idx];\n //tab.query = window.editor.getValue();\n $scope.saveQueryToLocal(tab);\n return tab;\n }\n\n let maxID = LocalStorageAdapter.get(LSKeys.TABS_STATE_MAXID) || 1;\n\n function addNewTab(callback, tabName, savedQuery) { // optional callback to call after tab has been added\n if (!isTabChangeOk(true)) {\n return;\n }\n let defaultTabConfig;\n if (tabName || savedQuery) {\n defaultTabConfig = {\n id: \"1\",\n name: tabName,\n query: savedQuery,\n inference: principal.appSettings.DEFAULT_INFERENCE,\n sameAs: principal.appSettings.DEFAULT_SAMEAS\n };\n } else {\n defaultTabConfig = {\n id: \"1\",\n name: '',\n query: 'select * where { \\n' +\n '\\t?s ?p ?o .\\n' +\n '} limit 100 \\n',\n inference: principal.appSettings.DEFAULT_INFERENCE,\n sameAs: principal.appSettings.DEFAULT_SAMEAS\n };\n }\n\n maxID++;\n const newID = '' + maxID;\n $scope.tabsData = $scope.tabs;\n\n const newTab = defaultTabConfig;\n newTab.id = newID;\n\n $scope.tabsData.push(newTab);\n\n LocalStorageAdapter.set(LSKeys.TABS_STATE_MAXID, maxID);\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabsData);\n const callbackArgs = Array.prototype.slice.call(arguments, 1); // skip one argument, i.e. the callback itself\n $timeout(function () {\n $scope.$apply();\n selectTab(newID);\n if (callback) {\n callback.apply(this, callbackArgs);\n }\n }, 0);\n $scope.tabs = $scope.tabsData;\n }\n\n function loadTab(id) {\n $scope.tabsData = LocalStorageAdapter.get(LSKeys.TABS_STATE) || [defaultTabConfig];\n\n // find available tab\n const idx = findTabIndexByID(id);\n const tab = $scope.tabsData[idx];\n\n if (tab.yasrData) {\n setLoader(true, 'Rendering results', null, true);\n }\n\n // set query in editor available on the current tab\n $timeout(function () {\n if ($scope.currentQuery.query === '') {\n $scope.currentQuery.query = \" \";\n }\n $timeout(function () {\n window.editor.setValue($scope.currentQuery.query);\n $scope.yasr.updateDownloadDropdown();\n $scope.$broadcast('tabLoaded', $scope.currentQuery.id);\n\n // set query results in query results sections after\n // previous query execution. Yasr response rendering depends on the\n // query type of window.editor!\n $scope.yasr.options.output = tab.outputType; // this may be undefined, that's fine!\n if (tab.yasrData) {\n if (tab.yasrData.customError) {\n // Our injected custom (not real HTTP) error\n $scope.yasr.results = {\n getException: function () {\n return tab.yasrData.customError;\n }\n };\n setLoader(false);\n } else {\n // Real YASR result\n $timeout(function () {\n $scope.setYasrResponse(tab.yasrData, tab.textStatus, tab.jqXhrOrErrorString);\n setLoader(false);\n if ($('.yasr_btnGroup li:nth-child(2)').hasClass(\"active\")) {\n $timeout(function () {\n $('.yasr_btnGroup li:nth-child(2) a').get(0).click();\n }, 0);\n }\n }, 0);\n }\n }\n }, 0);\n }, 0);\n\n\n // persist current tab id in local storage\n LocalStorageAdapter.set(LSKeys.TABS_STATE_CURRENT_ID, id);\n\n $scope.currentQuery = tab;\n\n $timeout(function () {\n $scope.currentTabConfig = {};\n $scope.currentTabConfig.queryType = tab.queryType;\n $scope.currentTabConfig.resultsCount = tab.resultsCount;\n\n $scope.currentTabConfig.offset = tab.offset;\n $scope.currentTabConfig.allResultsCount = tab.allResultsCount;\n $scope.currentTabConfig.allResultsCountExact = tab.allResultsCountExact;\n $scope.currentTabConfig.page = tab.page;\n $scope.currentTabConfig.pageSize = tab.pageSize;\n\n $scope.currentTabConfig.timeFinished = tab.timeFinished;\n $scope.currentTabConfig.timeTook = tab.timeTook;\n $scope.currentTabConfig.sizeDelta = tab.sizeDelta;\n $scope.currentTabConfig.customUpdateMessage = tab.customUpdateMessage;\n $scope.currentTabConfig.errorMessage = tab.errorMessage;\n $scope.currentTabConfig.warningMessage = tab.warningMessage;\n\n $scope.$apply();\n }, 0);\n\n //Remove paddign of yasr so it will be aligned with sparql editor\n $('#yasr').css('padding', '0');\n\n if (!checkQueryIntervalId) {\n checkQueryIntervalId = setInterval(showOrHideSaveAsDropDown, 200);\n }\n overrideSameAsInferenceAndNoCountIfNeeded();\n }\n\n function getQueryID(element) {\n return $(element).attr('data-id');\n }\n\n function showOrHideSaveAsDropDown() {\n // If selected tab has results and query in editor controller is invalid save as\n // dropdown menu will be removed and on fixing query latter will be added\n if ($scope.currentTabConfig.resultsCount >= 0) {\n const $saveAsDropDown = $('.saveAsDropDown');\n if ($saveAsDropDown.length > 0 && !window.editor.queryValid) {\n yasr.header.find('.saveAsDropDown').remove();\n } else if ($saveAsDropDown.length === 0 && window.editor.queryValid) {\n yasr.updateDownloadDropdown();\n }\n }\n }\n\n function isTabChangeOk(isNew) {\n if ($scope.queryIsRunning && !$scope.namespacesLoading) {\n if (isNew) {\n toastr.info('New tabs may not be opened while query or update is running.');\n } else {\n toastr.info('Tabs may not be switched while query or update is running.');\n }\n\n return false;\n }\n\n return true;\n }\n\n // Raise this flag to provide visual feedback to the user the next time a tab changes\n // (either manually or by the system). See GDB-1983.\n $scope.highlightNextTabChange = false;\n $scope.$on('tabAction', function (e, tabEvent) {\n if (tabEvent.relatedTarget) {\n // Cancel any highlight timer that might have been left by the last highlight\n $timeout.cancel(tabEvent.relatedTarget.timer);\n $(tabEvent.relatedTarget).css('color', '');\n\n $scope.saveTab(getQueryID(tabEvent.relatedTarget));\n }\n\n $scope.loadTab(getQueryID(tabEvent.target));\n\n // These arrays define how the tab change will be visually enhanced.\n // colors contains the colors to set to the tab name,\n // while times defines the times in milliseconds to keep each color.\n // Once we cycle through the arrays we restore the default color.\n const colors = ['#ED4F2F', '', '#ED4F2F'];\n const times = [400, 400, 400];\n if ($scope.highlightNextTabChange) {\n $scope.highlightNextTabChange = false;\n let index = 0;\n $(tabEvent.target).css('color', colors[index]);\n const highlightFun = function () {\n index++;\n if (index < colors.length) {\n $(tabEvent.target).css('color', colors[index]);\n tabEvent.target.timer = $timeout(highlightFun, times[index]);\n } else {\n $(tabEvent.target).css('color', '');\n }\n };\n $timeout(highlightFun, times[index]);\n }\n });\n\n $scope.$on('deleteAllexeptSelected', function (e, tabs) {\n $scope.tabsData = tabs;\n $scope.tabs = tabs;\n });\n // end of query tab operations\n\n $scope.currentQuery = {};\n // $scope.state = {};\n $scope.showSampleQueries = false;\n $scope.savedQuery = {};\n $scope.sampleQueries = {};\n $scope.editQueryModal = showModal('#editQueryContainer');\n $scope.deleteQueryModal = showModal('#confirmDeleteContainer');\n $scope.saveQueryModal = showModal('#saveQueryContainer');\n\n $scope.getResultsDescription = function () {\n let desc;\n if ($scope.currentTabConfig.resultsCount === 0) {\n desc = \"No results.\";\n } else {\n const currentPageEnd = ($scope.currentTabConfig.page - 1) * $scope.currentTabConfig.pageSize\n + Math.min($scope.currentTabConfig.resultsCount, $scope.currentTabConfig.pageSize);\n desc = \"Showing results from \" + $filter('currency')($scope.currentTabConfig.offset, '', 0)\n + \" to \" + $filter('currency')(currentPageEnd, '', 0);\n if ($scope.currentTabConfig.allResultsCount > 0) {\n // Unsure total results count \"of at least\" happens if counting timed out or\n // counting was disabled and we got at least $pageSize + 1 results for the current page.\n // It may reset become exact when we navigate and reach the end of results.\n desc += $scope.currentTabConfig.allResultsCountExact\n ? \" of \" : \" of at least \";\n desc += $filter('currency')($scope.currentTabConfig.allResultsCount, '', 0);\n }\n desc += \".\";\n }\n\n return desc;\n };\n\n $scope.getUpdateDescription = function () {\n if ($scope.currentTabConfig.customUpdateMessage) {\n return $scope.currentTabConfig.customUpdateMessage;\n } else if ($scope.currentTabConfig.sizeDelta === undefined) {\n return '';\n } else if ($scope.currentTabConfig.sizeDelta < 0) {\n return 'Removed ' + Math.abs($scope.currentTabConfig.sizeDelta) + ' statements.';\n } else if ($scope.currentTabConfig.sizeDelta > 0) {\n return 'Added ' + $scope.currentTabConfig.sizeDelta + ' statements.';\n } else {\n return 'The number of statements did not change.';\n }\n };\n\n $scope.getStaleWarningMessage = function () {\n const secondsAgo = Math.round((Date.now() - $scope.currentTabConfig.timeFinished) / 60000) * 60;\n if (secondsAgo >= 3600) { // must be at least an hour\n return \"Possibly stale result (obtained \" + $scope.getHumanReadableSeconds(secondsAgo) + \" ago).\";\n }\n };\n\n const resize = function () {\n // $scope.fixSizesOnHorizontalViewModeSwitch();\n };\n\n angular.element($window).bind('resize', resize);\n\n $scope.$on('$destroy', function () {\n angular.element($window).unbind('resize', resize);\n });\n\n /**\n * In case of Ontop repository, sameAs, inference and nocount are\n * overridden to true and #sameAs and #inference buttons is disabled, In case of FedX repo nocount is overriden\n */\n function overrideSameAsInferenceAndNoCountIfNeeded() {\n const isOntop = $repositories.isActiveRepoOntopType();\n const isFedX = $repositories.isActiveRepoFedXType();\n handleSameAsAndInferenceBtns(isOntop);\n\n $scope.nocount = (isOntop || isFedX) ? true : !principal.appSettings.EXECUTE_COUNT;\n $scope.currentQuery.inference = isOntop ? true : principal.appSettings.DEFAULT_INFERENCE;\n $scope.currentQuery.sameAs = isOntop ? true : principal.appSettings.DEFAULT_SAMEAS;\n }\n\n function handleSameAsAndInferenceBtns(isOntop) {\n const sameAsBtn = document.getElementById('sameAs');\n const inferenceBtn = document.getElementById('inference');\n\n sameAsBtn.disabled = !!(sameAsBtn && isOntop);\n inferenceBtn.disabled = !!(inferenceBtn && isOntop);\n }\n}\n\nQuerySampleModalCtrl.$inject = ['$scope', '$modalInstance', 'data'];\n\nfunction QuerySampleModalCtrl($scope, $modalInstance, data) {\n if (data.queryExists) {\n $scope.queryExists = true;\n }\n $scope.query = angular.copy(data.query);\n $scope.title = data.title;\n $scope.edit = data.edit;\n $scope.okButtonText = data.okButtonText;\n $scope.ok = function () {\n if ($scope.form.$valid) {\n $modalInstance.close($scope.query);\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[7,104],{213:function(e,t,n){var r,o=o||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},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o=e.webkitRequestFileSystem,i=e.requestFileSystem||o||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},s=0,c=function(t){var r=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?r():setTimeout(r,500)},l=function(e,t,n){for(var r=(t=[].concat(t)).length;r--;){var o=e["on"+t[r]];if("function"==typeof o)try{o.call(e,n||e)}catch(e){a(e)}}},u=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},p=function(t,a){t=u(t);var p,d,f,m=this,g=t.type,h=!1,x=function(){l(m,"writestart progress write writeend".split(" "))},w=function(){(!h&&p||(p=n().createObjectURL(t)),d)?d.location.href=p:null==e.open(p,"_blank")&&"undefined"!=typeof safari&&(e.location.href=p);m.readyState=m.DONE,x(),c(p)},y=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},v={create:!0,exclusive:!1};if(m.readyState=m.INIT,a||(a="download"),r)return p=n().createObjectURL(t),r.href=p,r.download=a,void setTimeout((function(){var e,t;e=r,t=new MouseEvent("click"),e.dispatchEvent(t),x(),c(p),m.readyState=m.DONE}));e.chrome&&g&&"application/octet-stream"!==g&&(f=t.slice||t.webkitSlice,t=f.call(t,0,t.size,"application/octet-stream"),h=!0),o&&"download"!==a&&(a+=".download"),("application/octet-stream"===g||o)&&(d=e),i?(s+=t.size,i(e.TEMPORARY,s,y((function(e){e.root.getDirectory("saved",v,y((function(e){var n=function(){e.getFile(a,v,y((function(e){e.createWriter(y((function(n){n.onwriteend=function(t){d.location.href=e.toURL(),m.readyState=m.DONE,l(m,"writeend",t),c(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&w()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=m["on"+e]})),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING})),w)})),w)};e.getFile(a,{create:!1},y((function(e){e.remove(),n()})),y((function(e){e.code===e.NOT_FOUND_ERR?n():w()})))})),w)})),w)):w()},d=p.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(u(e),t)}:(d.abort=function(){this.readyState=this.DONE,l(this,"abort")},d.readyState=d.INIT=0,d.WRITING=1,d.DONE=2,d.error=d.onwritestart=d.onprogress=d.onwrite=d.onabort=d.onerror=d.onwriteend=null,function(e,t){return new p(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=o:null!==n(214)&&null!=n(215)&&(void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r))},214:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},215:function(e,t){(function(t){e.exports=t}).call(this,{})},36: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"}])},83:function(e,t,n){"use strict";n.r(t);n(36);var r=n(210),o=n.n(r),i=n(213);function a(e,t,n,r,a,s,c,l,u,p){let d;e.loading=!1,e.getActiveRepository=function(){return s.getActiveRepository()},e.isTripleResource=function(){return!!e.tripleParam},e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getRdfStarLocalNames=function(e){let t=e.slice();return e.replace(/[<>]+/g,"").split(" ").forEach(e=>{t=t.replace(e,c.getLocalName(e))}),t},e.role=n.search().role?n.search().role:"subject",e.inference="explicit",e.inferenceNamed="explicit",e.inferences=[{id:"all",title:"Explicit and Implicit"},{id:"explicit",title:"Explicit only"},{id:"implicit",title:"Implicit only"}],e.context="",e.getLocalName=function(e){return c.getLocalName(e)},e.blanks=!0,e.sameAs=!0,e.formats=p,window.editor={},window.editor.getQueryType=function(){return"RESOURCE"},e.$watch((function(){return s.getActiveRepository()}),(function(){e.getActiveRepository()&&(e.usedPrefixes?e.loadResource():u.getNamespaces(e.getActiveRepository()).success((function(t){e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),d=o()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0}),e.loadResource()})).error((function(e){r.error("Cannot get namespaces for repository. View will not work properly; "+getError(e))})))})),e.loadResource=function(){a.prefix&&a.localName&&e.usedPrefixes[a.prefix]?e.uriParam=e.usedPrefixes[a.prefix]+a.localName:n.search().uri?e.uriParam=n.search().uri+(n.hash()?"#"+n.hash():""):n.search().triple?e.tripleParam=n.search().triple+(n.hash()?"#"+n.hash():""):e.uriParam=n.absUrl(),null!=a.context&&(e.context=a.context),e.uriParam=e.uriParam&&e.uriParam.replace(/<|>/g,""),t({url:"rest/explore/details",method:"GET",params:{uri:e.uriParam,triple:e.tripleParam,context:e.context},headers:{Accept:"application/json"}}).success((function(t){e.details=t,e.context=e.details.context,"object"!==e.details.uri&&(e.details.encodeURI=encodeURIComponent(e.details.uri))})).error((function(e){r.error("Cannot get resource details; "+getError(e))})),e.exploreResource()},e.isContextAvailable=function(){return null!==e.context&&"http://rdf4j.org/schema/rdf4j#SHACLShapeGraph"===e.context},e.goToGraphsViz=function(){n.path("graphs-visualizations").search("uri",e.uriParam)};const f=function(t){const n=angular.element(document.getElementById("yasr-inner")),r=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,n.addClass("opacity-hide"),r.removeClass("opacity-hide")):(e.loading=!1,n.removeClass("opacity-hide"),r.addClass("opacity-hide"))};e.exploreResource=function(){f(!0),null!=a.context&&(e.context=a.context);$.ajax({method:"GET",url:"rest/explore/graph",data:{uri:e.uriParam,triple:e.tripleParam,inference:e.inference,role:e.role,bnodes:e.blanks,sameAs:e.sameAs,context:e.context},headers:{Accept:"application/x-graphdb-table-results+json"}}).done((function(e,t,n){f(!1),d.setResponse(n,t)})).fail((function(e){r.error("Could not get resource; "+getError(e)),f(!1)}))},e.downloadExport=function(n){let o,a;e.uriParam?(o="uri=",a=encodeURIComponent(e.uriParam)):(o="triple=",a=encodeURIComponent(e.tripleParam)),t({method:"GET",url:"rest/explore/graph?"+o+a+"&role="+e.role+"&inference="+e.inference+"&bnodes="+e.blanks+"&sameAs="+e.sameAs+(e.context?"&context="+encodeURIComponent(e.context):""),headers:{Accept:n.type}}).success((function(e){let t=e;n.type.indexOf("json")>-1&&(t=JSON.stringify(t));const r=navigator.userAgent.toLowerCase();if(-1!==r.indexOf("safari")&&-1===r.indexOf("chrome"))window.open('data:attachment/csv;filename="statements.'+n.extension+'",'+encodeURIComponent(t),"statements."+n.extension);else{const e=new Blob([t],{type:n.type});Object(i.saveAs)(e,"statements"+n.extension)}})).error((function(e){const t=getError(e);r.error(t,"Error")}))},e.changeRole=function(t){e.role=t,e.exploreResource()},e.changeInference=function(t){e.inference=t,e.exploreResource()},e.copyToClipboardResult=function(e){l.openCopyToClipboardModal(e)}}function s(e,t,n,r,o,i,a,s,c,l,u){function p(){s.checkAutocompleteStatus().success((function(t){t||a.warning("",'<div class="autocomplete-toast"><a href="autocomplete">Autocomplete is OFF<br>Go to Setup -> Autocomplete</a></div>',{allowHtml:!0}),e.autocompleteEnabled=t})).error((function(){a.error("Error attempting to check autocomplete capability!")}))}function d(){u.getNamespaces(r.getActiveRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);a.error(n,"Error"),e.loader=!1}))}function f(e){const t=e.indexOf("<")>=0&&e.lastIndexOf(">")===e.length-1,n=-1===e.indexOf("<")&&-1===e.lastIndexOf(">"),r=/^<?[http|urn].*>?$/.test(e)&&(t||n);let o=!1;if(r)if(e.indexOf("http")>=0){const t=e.indexOf("//");o=t>4&&e.substring(t+2).length>0}else e.indexOf("urn")>=0&&(o=e.substring(4).length>0);return r&&o}let m,g;function h(t){function r(t){i((function(){e.form&&(e.form.$dirty=t)}))}t||(t=document.getElementById("resources_finder_value").value),t&&f(t)?(r(!1),n.path("resource").search("uri",t)):(r(!0),t&&a.error("Invalid input!"))}e.submit=h,e.getAutocompleteSuggestions=function(t){if(!/<|>/.test(t)&&":"===t.slice(-1)){const n=c.getNamespaceUriForPrefix(e.namespaces,t.slice(0,-1));g=n!==g?n:g,g&&$("#resources_finder_value").val(g)}let n;if(e.autocompleteEnabled){const e=t.replace(g,g+";");n=s.getAutocompleteSuggestions(e)}else n=o.when(e.autocompleteEnabled);return n},e.inputChangedFn=function(){m=document.getElementById("resources_finder_value").value,e.form.$dirty=!(m&&f(m))},e.selectedUriCallback=function(t){e.selectedUri={name:t.title},h(e.selectedUri.name)},e.selectedUri={name:""},e.autocompleteEnabled=!1,angular.isDefined(l.search)&&i((function(){$("#resources_finder_value").val(l.search),$(".search-button").click()}),500),e.getActiveRepository()&&(p(),d()),e.$on("repositoryIsSet",(function(){p(),d()}))}function c(e,t,n,r,o,i,a,s,c,l){e.uriParam=n.search().uri,e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newResource=!1,e.datatypeOptions=c.getDatatypeOptions(),e.activeRepository=function(){return o.getActiveRepository()},e.getClassInstancesDetails=function(){l.getNamespaces(e.activeRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);r.error(n,"Error"),e.loader=!1})),s.getDetails(e.uriParam).success((function(t){e.details=t,e.details.encodeURI=encodeURIComponent(e.details.uri)})).error((function(e){r.error("Cannot get resource details; "+getError(e))})),s.getGraph(e.uriParam).then((function(t){const n=c.buildStatements(t,e.uriParam);e.statements=n,e.newResource=!n.length}))},e.addStatement=function(){e.newRowPredicate.$setSubmitted(),e.newRowObject.$setSubmitted(),e.newRowContext.$setSubmitted(),e.newRowPredicate.$valid&&e.newRowObject.$valid&&e.newRowContext.$valid&&(e.statements.push(angular.copy(e.newRow)),e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newRowPredicate.$setPristine(),e.newRowPredicate.$setUntouched(),e.newRowObject.$setPristine(),e.newRowObject.$setUntouched(),e.newRowContext.$setPristine(),e.newRowContext.$setUntouched())},e.removeStatement=function(t){e.statements.splice(t,1)},e.getLocalName=function(e){return s.getLocalName(e)},e.checkValid=function(e){if(!angular.isUndefined(e))return!0;return"Please enter a valid value."},e.validEditRow=function(){return e.rowform.$valid},e.viewTrig=function(){i.open({templateUrl:"js/angular/explore/templates/viewTrig.html",controller:"ViewTrigCtrl",size:"lg",resolve:{data:function(){return c.transformToTrig(e.statements)}}})},e.save=function(){const o=e.newResource?"POST":"PUT";t({method:o,url:"rest/resource?uri="+encodeURIComponent(e.uriParam),headers:{"Content-Type":"application/x-trig"},data:c.transformToTrig(e.statements)}).success((function(){r.success("Resource saved.");const t=a((function(){n.path("resource").search("uri",e.uriParam)}),500);e.$on("$destroy",(function(){a.cancel(t)}))})).error((function(e){r.error(getError(e))}))},e.$watch((function(){return o.getActiveRepository()}),(function(){e.activeRepository()&&e.getClassInstancesDetails()})),e.validateUri=function(t){let n=!0;const r=t||"";if(-1===r.indexOf(":"))n=!1;else{const t=r.substring(0,r.indexOf(":"));if(""===s.getNamespaceUriForPrefix(e.namespaces,t)){!1===/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/.test(r)&&(n=!1);const e=r.match(/\//g);(void 0===e||e.length<3)&&(n=!1)}else{r.substring(r.indexOf(":")+1).trim().length<1&&(n=!1)}}return n}}function l(e,t,n){e.trig=n,e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.explore.controllers",["ngCookies","ngRoute","ui.bootstrap","toastr","graphdb.framework.core","graphdb.framework.core.services.repositories","graphdb.framework.explore.services","graphdb.workbench.utils.filetypes"]).controller("FindResourceCtrl",s).controller("ExploreCtrl",a).controller("EditResourceCtrl",c).controller("ViewTrigCtrl",l),a.$inject=["$scope","$http","$location","toastr","$routeParams","$repositories","ClassInstanceDetailsService","ModalService","RDF4JRepositoriesRestService","FileTypes"],s.$inject=["$scope","$http","$location","$repositories","$q","$timeout","toastr","AutocompleteRestService","ClassInstanceDetailsService","$routeParams","RDF4JRepositoriesRestService"],c.$inject=["$scope","$http","$location","toastr","$repositories","$modal","$timeout","ClassInstanceDetailsService","StatementsService","RDF4JRepositoriesRestService"],l.$inject=["$scope","$modalInstance","data"]}}]);
|
|
3
|
-
//# sourceMappingURL=7.036cd4322fa473fb187a.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/lib/FileSaver-patch.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/angular/utils/file-types.js","webpack:///./src/js/angular/explore/controllers.js"],"names":["saveAs","view","navigator","test","userAgent","doc","document","get_URL","URL","webkitURL","save_link","createElementNS","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","ex","setImmediate","setTimeout","fs_min_size","revoke","file","revoker","revokeObjectURL","remove","chrome","dispatch","filesaver","event_types","event","i","concat","length","listener","call","auto_bom","blob","type","Blob","FileSaver","name","object_url","target_view","slice","this","blob_changed","dispatch_all","split","fs_error","createObjectURL","location","href","undefined","open","safari","readyState","DONE","abortable","func","apply","arguments","create_if_not_found","create","exclusive","INIT","download","node","MouseEvent","dispatchEvent","webkitSlice","size","TEMPORARY","fs","root","getDirectory","dir","save","getFile","createWriter","writer","onwriteend","toURL","onerror","error","code","ABORT_ERR","forEach","write","abort","WRITING","NOT_FOUND_ERR","FS_proto","prototype","msSaveOrOpenBlob","onwritestart","onprogress","onwrite","onabort","self","window","content","module","exports","Error","__webpack_amd_options__","angular","value","extension","ExploreCtrl","$scope","$http","$location","toastr","$routeParams","$repositories","ClassInstanceDetailsService","ModalService","RDF4JRepositoriesRestService","FileTypes","yasr","loading","getActiveRepository","isTripleResource","tripleParam","encodeURIComponent","param","getRdfStarLocalNames","triple","localNames","replace","uri","getLocalName","role","search","inference","inferenceNamed","inferences","id","title","context","blanks","sameAs","formats","editor","getQueryType","$watch","usedPrefixes","loadResource","getNamespaces","success","data","results","bindings","e","prefix","namespace","getElementById","getUsedPrefixes","persistency","hideHeader","getError","localName","uriParam","hash","absUrl","url","method","params","headers","details","encodeURI","exploreResource","isContextAvailable","goToGraphsViz","path","toggleOntoLoader","showLoader","yasrInnerContainer","element","resultsLoader","addClass","removeClass","$","ajax","bnodes","Accept","done","textStatus","jqXhr","setResponse","fail","downloadExport","format","encodedURI","response","indexOf","JSON","stringify","ua","toLowerCase","msg","changeRole","roleVar","changeInference","copyToClipboardResult","openCopyToClipboardModal","FindResourceCtrl","$q","$timeout","AutocompleteRestService","checkAutocompleteStatus","warning","allowHtml","autocompleteEnabled","getAllNamespacesForActiveRepository","namespaces","map","loader","validateRdfUri","hasAngleBrackets","lastIndexOf","noAngleBrackets","validProtocol","validPath","schemaSlashesIdx","substring","expandedUri","submit","setFormInvalid","isDirty","form","$dirty","getAutocompleteSuggestions","str","newExpandedUri","getNamespaceUriForPrefix","val","promise","query","when","inputChangedFn","selectedUriCallback","selected","selectedUri","isDefined","click","$on","EditResourceCtrl","$modal","StatementsService","newRow","subject","object","datatype","newResource","datatypeOptions","getDatatypeOptions","activeRepository","getClassInstancesDetails","getDetails","getGraph","then","res","statements","buildStatements","addStatement","newRowPredicate","$setSubmitted","newRowObject","newRowContext","$valid","push","copy","$setPristine","$setUntouched","removeStatement","idx","splice","checkValid","isUndefined","validEditRow","rowform","viewTrig","templateUrl","controller","resolve","transformToTrig","timer","cancel","validateUri","check","text","count","match","trim","ViewTrigCtrl","$modalInstance","trig","dismiss","$inject"],"mappings":"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","file":"7.036cd4322fa473fb187a.bundle.js","sourcesContent":["/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 2015-05-07.2\n *\n * By Eli Grey, http://eligrey.com\n * License: X11/MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t, fs_min_size = 0\n\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and\n\t\t// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047\n\t\t// for the reasoning behind the timeout and revocation flow\n\t\t, arbitrary_revoke_timeout = 500 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (view.chrome) {\n\t\t\t\trevoker();\n\t\t\t} else {\n\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t}\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([\"\\ufeff\", blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name) {\n\t\t\tblob = auto_bom(blob);\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, blob_changed = false\n\t\t\t\t, object_url\n\t\t\t\t, target_view\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t\t, abortable = function(func) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t, slice\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\tif (!name) {\n\t\t\t\tname = \"download\";\n\t\t\t}\n\t\t\tif (save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t//window.open('data:attachment/csv;charset=utf-8,' + object_url);\n\t\t\t\tsave_link.href = object_url;\n\t\t\t\tsave_link.download = name;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\tblob_changed = true;\n\t\t\t}\n\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\tname += \".download\";\n\t\t\t}\n\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\ttarget_view = view;\n\t\t\t}\n\t\t\tif (!req_fs) {\n\t\t\t\tfs_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfs_min_size += blob.size;\n\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t};\n\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\tsave();\n\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}), fs_error);\n\t\t\t}), fs_error);\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name) {\n\t\t\treturn new FileSaver(blob, name);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name) {\n\t\t\treturn navigator.msSaveOrOpenBlob(auto_bom(blob), name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function() {\n\t\tvar filesaver = this;\n\t\tfilesaver.readyState = filesaver.DONE;\n\t\tdispatch(filesaver, \"abort\");\n\t};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd != null)) {\n define([], function() {\n return saveAs;\n });\n}","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","angular.module('graphdb.workbench.utils.filetypes', [])\n .value('FileTypes', [\n {name: 'JSON', type: 'application/rdf+json', extension: '.json'},\n {name: 'JSON-LD', type: 'application/ld+json', extension: '.jsonld'},\n {name: 'RDF-XML', type: 'application/rdf+xml', extension: '.rdf'},\n {name: 'N3', type: 'text/rdf+n3', extension: '.n3'},\n {name: 'N-Triples', type: 'text/plain', extension: '.nt'},\n {name: 'N-Quads', type: 'text/x-nquads', extension: '.nq'},\n {name: 'Turtle', type: 'text/turtle', extension: '.ttl'},\n {name: 'Turtle*', type: 'application/x-turtlestar', extension: '.ttls'},\n {name: 'TriX', type: 'application/trix', extension: '.trix'},\n {name: 'TriG', type: 'application/x-trig', extension: '.trig'},\n {name: 'TriG*', type: 'application/x-trigstar', extension: '.trigs'},\n {name: 'Binary RDF', type: 'application/x-binary-rdf', extension: '.brf'}\n ]);\n","import 'angular/utils/file-types';\nimport YASR from 'lib/yasr.bundled';\nimport {saveAs} from 'lib/FileSaver-patch';\n\nconst modules = [\n 'ngCookies',\n 'ngRoute',\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.core',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.explore.services',\n 'graphdb.workbench.utils.filetypes'\n];\n\nangular\n .module('graphdb.framework.explore.controllers', modules)\n .controller('FindResourceCtrl', FindResourceCtrl)\n .controller('ExploreCtrl', ExploreCtrl)\n .controller('EditResourceCtrl', EditResourceCtrl)\n .controller('ViewTrigCtrl', ViewTrigCtrl);\n\nExploreCtrl.$inject = ['$scope', '$http', '$location', 'toastr', '$routeParams', '$repositories', 'ClassInstanceDetailsService', 'ModalService', 'RDF4JRepositoriesRestService', 'FileTypes'];\n\nfunction ExploreCtrl($scope, $http, $location, toastr, $routeParams, $repositories, ClassInstanceDetailsService, ModalService, RDF4JRepositoriesRestService, FileTypes) {\n\n $scope.loading = false;\n\n $scope.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n $scope.isTripleResource = function () {\n return !!$scope.tripleParam;\n };\n\n // TODO move this to core\n $scope.encodeURIComponent = function (param) {\n return encodeURIComponent(param);\n };\n\n $scope.getRdfStarLocalNames = function(triple) {\n let localNames = triple.slice();\n const trimmed = triple.replace(/[<>]+/g, '');\n trimmed.split(' ').forEach(uri => {\n localNames = localNames.replace(uri, ClassInstanceDetailsService.getLocalName(uri));\n });\n return localNames;\n };\n\n // Defaults\n $scope.role = $location.search().role ? $location.search().role : 'subject';\n $scope.inference = 'explicit';\n // Fixed inference when we're showing the context tab and a named graph\n $scope.inferenceNamed = 'explicit';\n $scope.inferences = [\n {id: 'all', title: 'Explicit and Implicit'},\n {id: 'explicit', title: 'Explicit only'},\n {id: 'implicit', title: 'Implicit only'}\n ];\n $scope.context = '';\n\n $scope.getLocalName = function (uri) {\n return ClassInstanceDetailsService.getLocalName(uri);\n };\n\n $scope.blanks = true;\n $scope.sameAs = true;\n\n $scope.formats = FileTypes;\n\n let yasr;\n\n window.editor = {};\n window.editor.getQueryType = function () {\n return 'RESOURCE';\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n if ($scope.getActiveRepository()) {\n if ($scope.usedPrefixes) {\n $scope.loadResource();\n } else {\n RDF4JRepositoriesRestService.getNamespaces($scope.getActiveRepository())\n .success(function (data) {\n $scope.usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n $scope.usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n yasr = YASR(document.getElementById('yasr'), { // eslint-disable-line new-cap\n //this way, the URLs in the results are prettified using the defined prefixes\n getUsedPrefixes: $scope.usedPrefixes,\n persistency: false,\n hideHeader: true\n });\n $scope.loadResource();\n }).error(function (data) {\n toastr.error('Cannot get namespaces for repository. View will not work properly; ' + getError(data));\n });\n }\n }\n });\n\n $scope.loadResource = function () {\n if ($routeParams.prefix && $routeParams.localName && $scope.usedPrefixes[$routeParams.prefix]) {\n // /resource/PREFIX/LOCAL -> URI = expanded PREFIX + LOCAL\n $scope.uriParam = $scope.usedPrefixes[$routeParams.prefix] + $routeParams.localName;\n } else if ($location.search().uri) {\n // uri parameter -> URI\n $scope.uriParam = $location.search().uri + ($location.hash() ? '#' + $location.hash() : '');\n } else if ($location.search().triple) {\n // uri parameter -> URI\n $scope.tripleParam = $location.search().triple + ($location.hash() ? '#' + $location.hash() : '');\n } else {\n // absolute URI -> URI\n $scope.uriParam = $location.absUrl();\n }\n if ($routeParams.context != null) {\n $scope.context = $routeParams.context;\n }\n // remove angle brackets which were allowed when filling out the search input field\n // but are forbidden when passing the uri as a query parameter\n $scope.uriParam = $scope.uriParam && $scope.uriParam.replace(/<|>/g, \"\");\n\n // Get resource details\n $http({\n url: 'rest/explore/details',\n method: 'GET',\n params: {\n uri: $scope.uriParam,\n triple: $scope.tripleParam,\n context: $scope.context\n },\n headers: {\n 'Accept': 'application/json'\n }\n }).success(function (data) {\n $scope.details = data;\n $scope.context = $scope.details.context;\n if ($scope.details.uri !== 'object') {\n $scope.details.encodeURI = encodeURIComponent($scope.details.uri);\n }\n }).error(function (data) {\n toastr.error('Cannot get resource details; ' + getError(data));\n });\n\n $scope.exploreResource();\n };\n\n $scope.isContextAvailable = function () {\n return $scope.context !== null && $scope.context === \"http://rdf4j.org/schema/rdf4j#SHACLShapeGraph\";\n };\n\n $scope.goToGraphsViz = function () {\n $location.path('graphs-visualizations').search('uri', $scope.uriParam);\n };\n\n const toggleOntoLoader = function (showLoader) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n const resultsLoader = angular.element(document.getElementById('results-loader'));\n const opacityHideClass = 'opacity-hide';\n /* Angular b**it. For some reason the loader behaved strangely with ng-show not always showing */\n if (showLoader) {\n $scope.loading = true;\n yasrInnerContainer.addClass(opacityHideClass);\n resultsLoader.removeClass(opacityHideClass);\n } else {\n $scope.loading = false;\n yasrInnerContainer.removeClass(opacityHideClass);\n resultsLoader.addClass(opacityHideClass);\n }\n };\n\n // Get resource table\n $scope.exploreResource = function () {\n toggleOntoLoader(true);\n if ($routeParams.context != null) {\n $scope.context = $routeParams.context;\n }\n const headers = {Accept: 'application/x-graphdb-table-results+json'};\n $.ajax({\n method: 'GET',\n url: 'rest/explore/graph',\n data: {\n uri: $scope.uriParam,\n triple: $scope.tripleParam,\n inference: $scope.inference,\n role: $scope.role,\n bnodes: $scope.blanks,\n sameAs: $scope.sameAs,\n context: $scope.context\n },\n headers: headers\n }).done(function (data, textStatus, jqXhr) {\n toggleOntoLoader(false);\n // Pass the xhr argument first as the yasr expects it that way. See https://ontotext.atlassian.net/browse/GDB-3939\n yasr.setResponse(jqXhr, textStatus);\n }).fail(function (data) {\n toastr.error('Could not get resource; ' + getError(data));\n toggleOntoLoader(false);\n });\n };\n\n $scope.downloadExport = function (format) {\n let param;\n let encodedURI;\n if ($scope.uriParam) {\n param = 'uri=';\n encodedURI = encodeURIComponent($scope.uriParam);\n } else {\n param = 'triple=';\n encodedURI = encodeURIComponent($scope.tripleParam);\n }\n\n $http({\n method: 'GET',\n url: 'rest/explore/graph?' + param + encodedURI +\n \"&role=\" + $scope.role +\n \"&inference=\" + $scope.inference +\n \"&bnodes=\" + $scope.blanks +\n \"&sameAs=\" + $scope.sameAs +\n ($scope.context ? \"&context=\" + encodeURIComponent($scope.context) : \"\"),\n headers: {\n 'Accept': format.type\n }\n }).success(function (response) {\n let data = response;\n if (format.type.indexOf('json') > -1) {\n data = JSON.stringify(data);\n }\n // TODO: Use bowser library to get the browser type\n const ua = navigator.userAgent.toLowerCase();\n if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) {\n window.open('data:attachment/csv;filename=\"statements.' + format.extension + '\",' + encodeURIComponent(data), 'statements.' + format.extension);\n } else {\n const file = new Blob([data], {type: format.type});\n saveAs(file, 'statements' + format.extension);\n }\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.changeRole = function (roleVar) {\n $scope.role = roleVar;\n $scope.exploreResource();\n };\n\n $scope.changeInference = function (inference) {\n $scope.inference = inference;\n $scope.exploreResource();\n };\n\n $scope.copyToClipboardResult = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n}\n\nFindResourceCtrl.$inject = ['$scope', '$http', '$location', '$repositories', '$q', '$timeout', 'toastr', 'AutocompleteRestService', 'ClassInstanceDetailsService', '$routeParams', 'RDF4JRepositoriesRestService'];\n\nfunction FindResourceCtrl($scope, $http, $location, $repositories, $q, $timeout, toastr, AutocompleteRestService, ClassInstanceDetailsService, $routeParams, RDF4JRepositoriesRestService) {\n $scope.submit = submit;\n $scope.getAutocompleteSuggestions = getAutocompleteSuggestions;\n $scope.inputChangedFn = inputChangedFn;\n $scope.selectedUriCallback = selectedUriCallback;\n\n $scope.selectedUri = {name: \"\"};\n\n $scope.autocompleteEnabled = false;\n\n if (angular.isDefined($routeParams.search)) {\n $timeout(function () {\n $('#resources_finder_value').val($routeParams.search);\n $('.search-button').click();\n }, 500);\n }\n\n function checkAutocompleteStatus() {\n AutocompleteRestService.checkAutocompleteStatus()\n .success(function (response) {\n if (!response) {\n toastr.warning('', '<div class=\"autocomplete-toast\"><a href=\"autocomplete\">Autocomplete is OFF<br>Go to Setup -> Autocomplete</a></div>',\n {allowHtml: true});\n }\n $scope.autocompleteEnabled = response;\n })\n .error(function () {\n toastr.error(\"Error attempting to check autocomplete capability!\");\n });\n }\n\n function getAllNamespacesForActiveRepository() {\n RDF4JRepositoriesRestService.getNamespaces($repositories.getActiveRepository())\n .success(function (data) {\n $scope.namespaces = data.results.bindings.map(function (e) {\n return {\n prefix: e.prefix.value,\n uri: e.namespace.value\n };\n });\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n }\n\n function validateRdfUri(value) {\n // has a pair of angle brackets and the closing one is the last char of the string\n const hasAngleBrackets = value.indexOf(\"<\") >= 0 && value.lastIndexOf(\">\") === value.length - 1;\n\n // does not have a pair of angle bracket - if only one of the is available that is incorrect\n const noAngleBrackets = value.indexOf(\"<\") === -1 && value.lastIndexOf(\">\") === -1;\n\n const validProtocol = /^<?[http|urn].*>?$/.test(value) && (hasAngleBrackets || noAngleBrackets);\n let validPath = false;\n if (validProtocol) {\n if (value.indexOf(\"http\") >= 0) {\n const schemaSlashesIdx = value.indexOf('//');\n validPath = schemaSlashesIdx > 4\n && value.substring(schemaSlashesIdx + 2).length > 0;\n } else if (value.indexOf(\"urn\") >= 0) {\n validPath = value.substring(4).length > 0;\n }\n }\n return validProtocol && validPath;\n }\n\n let uri;\n\n function submit(uri) {\n function setFormInvalid(isDirty) {\n // does not work yet\n $timeout(function () {\n if ($scope.form) {\n $scope.form.$dirty = isDirty;\n }\n });\n }\n\n if (!uri) {\n uri = document.getElementById(\"resources_finder_value\").value;\n }\n if (uri && validateRdfUri(uri)) {\n setFormInvalid(false);\n $location\n .path('resource')\n .search('uri', uri);\n } else {\n setFormInvalid(true);\n if (uri) {\n toastr.error(\"Invalid input!\");\n }\n }\n }\n\n if ($scope.getActiveRepository()) {\n checkAutocompleteStatus();\n getAllNamespacesForActiveRepository();\n }\n\n // use a global var to keep old uri in order to change it when a new one appears\n let expandedUri;\n\n function getAutocompleteSuggestions(str) {\n // expand prefix to uri only if the last character of the input is a colon and\n // there are no angle brackets because they are allowed only for absolute uris\n const ANGLE_BRACKETS_REGEX = /<|>/;\n if (!ANGLE_BRACKETS_REGEX.test(str) && str.slice(-1) === ':') {\n const newExpandedUri = ClassInstanceDetailsService.getNamespaceUriForPrefix($scope.namespaces, str.slice(0, -1));\n expandedUri = (newExpandedUri !== expandedUri) ? newExpandedUri : expandedUri;\n if (expandedUri) {\n $(\"#resources_finder_value\").val(expandedUri);\n }\n }\n\n let promise;\n if ($scope.autocompleteEnabled) {\n // add semicolon after the expanded uri in order to filter only by local names for this uri\n const query = str.replace(expandedUri, expandedUri + ';');\n promise = AutocompleteRestService.getAutocompleteSuggestions(query);\n } else {\n // return empty promise\n promise = $q.when($scope.autocompleteEnabled);\n }\n return promise;\n }\n\n $scope.$on('repositoryIsSet', function () {\n checkAutocompleteStatus();\n getAllNamespacesForActiveRepository();\n });\n\n function inputChangedFn() {\n uri = document.getElementById(\"resources_finder_value\").value;\n $scope.form.$dirty = !(uri && validateRdfUri(uri));\n }\n\n function selectedUriCallback(selected) {\n $scope.selectedUri = {name: selected.title};\n submit($scope.selectedUri.name);\n }\n}\n\nEditResourceCtrl.$inject = ['$scope', '$http', '$location', 'toastr', '$repositories', '$modal', '$timeout', 'ClassInstanceDetailsService', 'StatementsService', 'RDF4JRepositoriesRestService'];\n\nfunction EditResourceCtrl($scope, $http, $location, toastr, $repositories, $modal, $timeout, ClassInstanceDetailsService, StatementsService, RDF4JRepositoriesRestService) {\n $scope.uriParam = $location.search().uri;\n $scope.newRow = {\n subject: $scope.uriParam,\n object: {\n type: 'uri',\n datatype: ''\n }\n };\n $scope.newResource = false;\n $scope.datatypeOptions = StatementsService.getDatatypeOptions();\n\n $scope.activeRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n $scope.getClassInstancesDetails = getClassInstancesDetails;\n $scope.addStatement = addStatement;\n $scope.removeStatement = removeStatement;\n $scope.getLocalName = getLocalName;\n $scope.checkValid = checkValid;\n $scope.validEditRow = validEditRow;\n $scope.viewTrig = viewTrig;\n $scope.save = save;\n\n function getClassInstancesDetails() {\n RDF4JRepositoriesRestService.getNamespaces($scope.activeRepository())\n .success(function (data) {\n $scope.namespaces = data.results.bindings.map(function (e) {\n return {\n prefix: e.prefix.value,\n uri: e.namespace.value\n };\n });\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n\n ClassInstanceDetailsService.getDetails($scope.uriParam)\n .success(function (data) {\n $scope.details = data;\n $scope.details.encodeURI = encodeURIComponent($scope.details.uri);\n }).error(function (data) {\n toastr.error('Cannot get resource details; ' + getError(data));\n });\n\n ClassInstanceDetailsService.getGraph($scope.uriParam)\n .then(function (res) {\n const statements = StatementsService.buildStatements(res, $scope.uriParam);\n $scope.statements = statements;\n $scope.newResource = !statements.length;\n });\n }\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n if ($scope.activeRepository()) {\n $scope.getClassInstancesDetails();\n }\n });\n\n $scope.validateUri = function (val) {\n let check = true;\n const text = val ? val : '';\n\n if (text.indexOf(':') === -1) {\n check = false;\n } else {\n const prefix = text.substring(0, text.indexOf(':'));\n const uriForPrefixNotAvailable = ClassInstanceDetailsService.getNamespaceUriForPrefix($scope.namespaces, prefix) === '';\n if (uriForPrefixNotAvailable) {\n // TODO: There's this reported useless escape character for this regex, but I'm not sure if and can I fix it.\n if (/^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/.test(text) === false) {\n check = false;\n }\n\n const count = text.match(/\\//g);\n\n if (count === undefined || count.length < 3) {\n check = false;\n }\n } else {\n const restText = text.substring(text.indexOf(':') + 1).trim();\n if (restText.length < 1) {\n check = false;\n }\n }\n }\n\n return check;\n };\n\n function addStatement() {\n $scope.newRowPredicate.$setSubmitted();\n $scope.newRowObject.$setSubmitted();\n $scope.newRowContext.$setSubmitted();\n if ($scope.newRowPredicate.$valid && $scope.newRowObject.$valid && $scope.newRowContext.$valid) {\n $scope.statements.push(angular.copy($scope.newRow));\n $scope.newRow = {\n subject: $scope.uriParam,\n object: {\n type: 'uri',\n datatype: ''\n }\n };\n $scope.newRowPredicate.$setPristine();\n $scope.newRowPredicate.$setUntouched();\n $scope.newRowObject.$setPristine();\n $scope.newRowObject.$setUntouched();\n $scope.newRowContext.$setPristine();\n $scope.newRowContext.$setUntouched();\n }\n }\n\n function checkValid(data) {\n if (!angular.isUndefined(data)) {\n return true;\n }\n return \"Please enter a valid value.\";\n }\n\n function validEditRow() {\n return $scope.rowform.$valid;\n }\n\n function removeStatement(idx) {\n $scope.statements.splice(idx, 1);\n }\n\n function getLocalName(uri) {\n return ClassInstanceDetailsService.getLocalName(uri);\n }\n\n function viewTrig() {\n $modal.open({\n templateUrl: 'js/angular/explore/templates/viewTrig.html',\n controller: 'ViewTrigCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return StatementsService.transformToTrig($scope.statements);\n }\n }\n });\n }\n\n function save() {\n const method = $scope.newResource ? 'POST' : 'PUT';\n $http({\n method: method,\n url: 'rest/resource?uri=' + encodeURIComponent($scope.uriParam),\n headers: {\n 'Content-Type': 'application/x-trig'\n },\n data: StatementsService.transformToTrig($scope.statements)\n }).success(function () {\n toastr.success(\"Resource saved.\");\n const timer = $timeout(function () {\n $location.path('resource').search('uri', $scope.uriParam);\n }, 500);\n $scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n toastr.error(getError(data));\n });\n }\n}\n\nViewTrigCtrl.$inject = ['$scope', '$modalInstance', 'data'];\n\nfunction ViewTrigCtrl($scope, $modalInstance, data) {\n $scope.trig = data;\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}
|