graphdb-workbench
Version:
The web application for GraphDB APIs
363 lines (357 loc) • 26.7 kB
HTML
<link href="css/repositories.css?v=1.11.3-TR1" rel="stylesheet">
<link href="css/lib/bootstrap-switch/bootstrap-switch.min.css?v=1.11.3-TR1" rel="stylesheet">
<div id="wb-repository">
<h1>{{pageTitle}}</h1>
<p class="alert alert-danger" ng-hide="hasActiveLocation()">
No active location! Please <a ng-href="repository" href="repository">select a location first</a>.
</p>
<div ng-show="hasActiveLocation()">
<div class="ot-loader ot-main-loader" onto-loader size="50" ng-show="loader"></div>
<div ng-hide="loader">
<form id="newRepoForm" class="form-horizontal" novalidate="novalidate">
<fieldset>
<!-- Simply to satisfy the HTML specs, because it's reported as bug from SonarCloud -->
<legend style="display: none">Repository properties</legend>
<div class="form-group row">
<label for="id" class="col-md-3 col-lg-2 col-form-label">Repository ID*</label>
<div class="col-md-7 col-lg-6 col-xl-5" uib-tooltip="{{repoTooltips.id}}">
<a class="btn btn-link ot-edit-input" ng-click="editRepositoryId()"
ng-if="!canEditRepoId && editRepoPage" tooltip-trigger="mouseenter"
uib-tooltip="Edit repository id" tooltip-placement="right"><span class="icon-edit"></span></a>
<input name="id" id="id" class="form-control" ng-disabled="!canEditRepoId && editRepoPage"
placeholder="This field is required" type="text" ng-model="repositoryInfo.id"
required ng-attr-autofocus="{{ autofocusId }}">
<div style="margin-top: 5px" ng-show="isInvalidRepoName" class="idError alert alert-danger">
Repository name can contain only letters (a-z, A-Z), numbers (0-9), "-" and "_"
</div>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-lg-2 col-form-label">Repository description</label>
<div class="col-md-7 col-lg-6 col-xl-5" uib-tooltip="{{repoTooltips.title}}">
<input class="form-control" type="text" name="title" id="title"
ng-model="repositoryInfo.title">
</div>
</div>
<div class="form-group row"
ng-if="repositoryInfo.type != 'master' && repositoryInfo.type != 'ontop' && repositoryInfo.type != 'fedx'">
<div class="checkbox offset-md-3 offset-lg-2">
<label class="padding-label" uib-tooltip="{{repoTooltips.readOnly}}">
<input id="readOnly" type="checkbox" ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.readOnly.value"/>
{{repositoryInfo.params.readOnly.label}}
</label>
</div>
</div>
<!-- Ontop repository related directive -->
<ontop-repo ng-if="repositoryInfo.type === 'ontop'"></ontop-repo>
<!-- FedX repository related directive -->
<fedx-repo ng-if="repositoryInfo.type === 'fedx'"></fedx-repo>
<div id="additionalParams" class="pt-1"
ng-if="repositoryInfo.type != 'master' && repositoryInfo.type != 'ontop' && repositoryInfo.type != 'fedx'">
<h5>Inference and Validation</h5>
<div class="form-group row indented-div">
<label for="ruleset" class="col-xs-12 col-md-3 col-lg-2 col-form-label">
{{repositoryInfo.params.ruleset.label}}
<div class="ruleset-warning icon-warning icon-2x"
ng-if="rulesetWarning()"
tooltip-html-unsafe="{{rulesetWarning()}}"
tooltip-placement="top"></div>
</label>
<div class="col-xs-6 col-md-4 col-lg-3 wrapper-div" uib-tooltip="{{repoTooltips.ruleset}}" tooltip-trigger="mouseenter">
<select ng-disabled="editRepoPage" class="form-control" id="ruleset"
ng-model="repositoryInfo.params.ruleset.value"
ng-change="repositoryInfo.params.disableSameAs.value = repositoryInfo.params.ruleset.value.indexOf('owl') === 0 ? 'false' : 'true'"
ng-options="r.id as r.name for r in rulesets">
</select>
</div>
<div class="form-group col-xs-4 col-md-4 col-lg-3" ng-if="!editRepoPage">
<div class="btn btn-outline-primary btn-sm">
<div ngf-select ngf-change="uploadRuleset($files)" ngf-multiple="false"
class="selectFiles pointer clearfix"
accept=".pie"
uib-tooltip="Upload a custom ruleset file."
tooltip-trigger="mouseenter">
<em ng-hide="uploadFileLoader" class="fa fa-upload fa-2x"></em>
<div ng-show="uploadFileLoader" onto-loader size="24"
class="spinner-container ot-loader"></div>
<span class="pageInfo" style="vertical-align: super; color: #8a8a8a;">Custom ruleset...</span>
</div>
</div>
<input class="form-control" id="customRuleSet" type="file" name="ruleset"
style="display: none;"/>
</div>
</div>
<div class="form-group row indented-div">
<div class="checkbox offset-md-3 offset-lg-2">
<label class="padding-label"
uib-tooltip="{{repoTooltips.disableSameAs}}">
<input id="disableSameAs"
ng-disabled="editRepoPage || repositoryInfo.params.ruleset.value === 'empty'"
type="checkbox" ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.disableSameAs.value"/>
{{repositoryInfo.params.disableSameAs.label}}
</label>
</div>
</div>
<div class="form-group row indented-div">
<div class="checkbox offset-md-3 offset-lg-2">
<label class="padding-label" uib-tooltip="{{repoTooltips.checkForInconsistencies}}">
<input id="checkForInconsistencies" type="checkbox" ng-true-value="'true'"
ng-false-value="'false'"
ng-model="repositoryInfo.params.checkForInconsistencies.value"/>
{{repositoryInfo.params.checkForInconsistencies.label}}
</label>
</div>
</div>
<div class="form-group row indented-div">
<div class="checkbox offset-md-3 offset-lg-2">
<label class="padding-label"
uib-tooltip="{{repoTooltips.isShacl}}">
<input id="isShacl" ng-disabled="editRepoPage" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.isShacl.value"/>
{{repositoryInfo.params.isShacl.label}}
</label>
<label class="padding-label wrapper-div"
uib-tooltip="Shows additional SHACL options when SHACL is enabled.">
<i class="{{getShaclOptionsClass()}}"
aria-hidden="true"></i>
<button class="text-btn"
data-toggle="collapse" style="text-align: left"
ng-disabled="repositoryInfo.params.isShacl.value !== 'true'"
data-target="#shaclOptions">
SHACL options
</button>
</label>
</div>
</div>
<div ng-if="repositoryInfo.params.isShacl.value === 'true'" id="shaclOptions" class="collapse pb-1">
<div class="row">
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="col-lg-4" uib-tooltip="{{repoTooltips.shaclOptions.cacheSelectNodes}}">
<input id="cacheSelectNodes" name="cacheSelectNodes" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.cacheSelectNodes.value"/>
{{repositoryInfo.params.cacheSelectNodes.label}}
</label>
</div>
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="padding-label"
uib-tooltip="{{repoTooltips.shaclOptions.undefinedTargetValidatesAllSubjects}}">
<input id="undefinedTargetValidatesAllSubjects"
name="undefinedTargetValidatesAllSubjects" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.undefinedTargetValidatesAllSubjects.value"/>
{{repositoryInfo.params.undefinedTargetValidatesAllSubjects.label}}
</label>
</div>
</div>
<div class="row">
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="col-lg-4"
uib-tooltip="{{repoTooltips.shaclOptions.logValidationPlans}}">
<input id="logValidationPlans" name="logValidationPlans" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.logValidationPlans.value"/>
{{repositoryInfo.params.logValidationPlans.label}}
</label>
</div>
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="padding-label"
uib-tooltip="{{repoTooltips.shaclOptions.logValidationViolations}}">
<input id="logValidationViolations" name="logValidationViolations"
type="checkbox" ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.logValidationViolations.value"/>
{{repositoryInfo.params.logValidationViolations.label}}
</label>
</div>
</div>
<div class="row">
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="col-lg-4" uib-tooltip="{{repoTooltips.shaclOptions.parallelValidation}}">
<input id="parallelValidation" name="parallelValidation" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.parallelValidation.value"/>
{{repositoryInfo.params.parallelValidation.label}}
</label>
</div>
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="padding-label"
uib-tooltip="{{repoTooltips.shaclOptions.globalLogValidationExecution}}">
<input id="globalLogValidationExecution" name="globalLogValidationExecution"
type="checkbox" ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.globalLogValidationExecution.value"/>
{{repositoryInfo.params.globalLogValidationExecution.label}}
</label>
</div>
</div>
<div class="row">
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="col-lg-4"
uib-tooltip="{{repoTooltips.shaclOptions.performanceLogging}}">
<input id="performanceLogging" name="performanceLogging" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.performanceLogging.value"/>
{{repositoryInfo.params.performanceLogging.label}}
</label>
</div>
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="padding-label"
uib-tooltip="{{repoTooltips.shaclOptions.eclipseRdf4jShaclExtensions}}">
<input id="eclipseRdf4jShaclExtensions" name="eclipseRdf4jShaclExtensions"
type="checkbox" ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.eclipseRdf4jShaclExtensions.value"/>
{{repositoryInfo.params.eclipseRdf4jShaclExtensions.label}}
</label>
</div>
</div>
<div>
<div class="row">
<div class="checkbox offset-xs-1 offset-md-4 offset-lg-3">
<label class="col-lg-4"
uib-tooltip="{{repoTooltips.shaclOptions.dashDataShapes}}">
<input id="dashDataShapes" name="dashDataShapes" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.dashDataShapes.value"/>
{{repositoryInfo.params.dashDataShapes.label}}
</label>
</div>
</div>
</div>
<div>
<div class="row">
<div class="offset-xs-1 offset-md-4 offset-lg-3">
<label class="col-lg-2">
{{repositoryInfo.params.validationResultsLimitTotal.label}}
</label>
<div class="col-lg-2">
<input id="validationResultsLimitTotal"
name="validationResultsLimitTotal"
type="number" step="1"
ng-model="repositoryInfo.params.validationResultsLimitTotal.value"
class="form-control"/>
</div>
</div>
<div class="offset-xs-1 offset-md-4 offset-lg-3">
<label class="col-lg-2">
{{repositoryInfo.params.validationResultsLimitPerConstraint.label}}
</label>
<div class="col-lg-2">
<input id="validationResultsLimitPerConstraint"
name="validationResultsLimitPerConstraint"
type="number" step="1"
ng-model="repositoryInfo.params.validationResultsLimitPerConstraint.value"
class="form-control"/>
</div>
</div>
</div>
</div>
</div>
<h5>Indexing</h5>
<div class="form-group row indented-div">
<label
class="col-md-3 col-lg-2">{{repositoryInfo.params.entityIdSize.label}}</label>
<div class="radio">
<label class="padding-label" tooltip-html-unsafe="{{repoTooltips.entityIdSize}}">
<input id="entityIdSize32" type="radio" value="32" ng-disabled="editRepoPage"
ng-model="repositoryInfo.params.entityIdSize.value"/>
32-bit
</label>
<label class="padding-label" tooltip-html-unsafe="{{repoTooltips.entityIdSize}}">
<input id="entityIdSize40" type="radio" value="40" ng-disabled="editRepoPage"
ng-model="repositoryInfo.params.entityIdSize.value"/>
40-bit
</label>
</div>
</div>
<div class="form-group row indented-div">
<div class="checkbox offset-md-3 offset-lg-2">
<label class="padding-label" uib-tooltip="{{repoTooltips.enableContextIndex}}">
<input id="enableContextIndex" name="enableContextIndex" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.enableContextIndex.value"/>
{{repositoryInfo.params.enableContextIndex.label}}
</label>
</div>
</div>
<div class="form-group row indented-div">
<div class="checkbox offset-md-3 offset-lg-2">
<label class="padding-label" uib-tooltip="{{repoTooltips.enablePredicateList}}">
<input id="enablePredicateList" name="enablePredicateList" ng-true-value="'true'"
ng-false-value="'false'" type="checkbox"
ng-model="repositoryInfo.params.enablePredicateList.value"
ng-change="resetIndexMemory()"/>
{{repositoryInfo.params.enablePredicateList.label}}
</label>
</div>
</div>
<h5>Queries and Updates</h5>
<div class="form-group row indented-div">
<label
class="col-xs-12 col-md-3 col-lg-2 col-form-label">{{repositoryInfo.params.queryTimeout.label}}</label>
<div class="col-xs-3 col-md-2" uib-tooltip="{{repoTooltips.queryTimeout}}">
<input class="form-control" id="queryTimeout" type="number" step="1"
ng-model="repositoryInfo.params.queryTimeout.value"
ng-change="validateNumberInput()"/>
</div>
<div class="checkbox offset-xs-3 offset-md-2">
<label class="padding-label col-form-label" uib-tooltip="{{repoTooltips.throwQueryEvaluationExceptionOnTimeout}}">
<input id="throwQueryEvaluationExceptionOnTimeout" type="checkbox"
ng-true-value="'true'" ng-false-value="'false'"
ng-model="repositoryInfo.params.throwQueryEvaluationExceptionOnTimeout.value"/>
{{repositoryInfo.params.throwQueryEvaluationExceptionOnTimeout.label}}
</label>
</div>
</div>
<div class="form-group row indented-div">
<label
class="col-xs-12 col-md-3 col-lg-2 col-form-label">{{repositoryInfo.params.queryLimitResults.label}}</label>
<div class="col-xs-3 col-md-2" uib-tooltip="{{repoTooltips.queryLimitResults}}">
<input class="form-control" id="queryLimitResults" type="number" step="1"
ng-model="repositoryInfo.params.queryLimitResults.value"
ng-change="validateNumberInput()"/>
</div>
</div>
<div class="form-group row indented-div" ng-if="repositoryInfo.type == 'worker'">
<label
class="col-md-3 col-lg-2 col-form-label">{{repositoryInfo.params.nonInterpretablePredicates.label}}</label>
<div class="col-md-7 col-lg-6 col-xl-5" uib-tooltip="{{repoTooltips.nonInterpretablePredicates}}">
<textarea class="form-control" id="nonInterpretablePredicates"
name="nonInterpretablePredicates"
ng-model="repositoryInfo.params.nonInterpretablePredicates.value"
rows="4"></textarea>
</div>
</div>
</div>
<!-- Restart checkbox and buttons, when creating repo of type
'ontop' are provided in ontop-repo.html template -->
<div ng-if="repositoryInfo.type !== 'ontop'" class="pt-1"></div>
<div class="form-group row" ng-if="repositoryInfo.type !== 'ontop' && editRepoPage">
<div class="checkbox col-xs-12">
<label uib-tooltip="Check to restart the repository and apply the changes.">
<input id="restartRepo" name="restartRepo"
type="checkbox"
ng-model="repositoryInfo.restartRequested"
ng-checked="repositoryInfo.restartRequested || repositoryInfo.saveId !== repositoryInfo.id"
ng-disabled="repositoryInfo.saveId !== repositoryInfo.id"/>
Restart repository
</label>
</div>
</div>
<div class="form-group row pb-3" ng-if="repositoryInfo.type !== 'ontop'">
<div class="col-xs-12">
<button id="addSaveRepository" ng-click="createRepo()" ng-if="!editRepoPage" type="submit"
class="btn btn-primary">Create
</button>
<button id="addSaveRepository" ng-click="editRepository()" ng-if="editRepoPage"
type="submit" class="btn btn-primary">Save
</button>
<a ng-click="goBackToPreviousLocation()" class="btn btn-secondary">Cancel</a>
</div>
</div>
</fieldset>
</form>
</div>
</div>
</div>