graphdb-workbench
Version:
The web application for GraphDB APIs
296 lines (271 loc) • 17.7 kB
HTML
<link href="css/create-similarity-index.css?v=3.1.0-RC3" rel="stylesheet">
<div class="container-fluid">
<h1>
{{isEditViewMode() ? (similarityIndexInfo.isSearchQueryTypeSelected() ? 'edit.search.query' : (similarityIndexInfo.isAnalogicalQueryTypeSelected() ? 'edit.analogical.query' : 'edit.select.query')) : title | translate}}
<span ng-hide="editSearchQuery" class="btn btn-link"
uib-popover-template="'js/angular/templates/titlePopoverTemplate.html'"
popover-trigger="mouseenter"
popover-placement="bottom-right"
popover-append-to-body="true"><span class="icon-info text-tertiary"></span></span>
</h1>
<div core-errors></div>
<div system-repo-warning></div>
<div class="alert alert-danger" ng-if="repositoryError">
<p>{{'current.repo.error' | translate}}</p>
<p>{{repositoryError}}</p>
</div>
<div ng-if="similarityIndexInfo">
<ul ng-if="!isEditViewMode()" class="nav nav-tabs mb-2">
<li class="nav-item" id="create-text-index">
<a class="nav-link" ng-class="similarityIndexInfo.isTextType() || similarityIndexInfo.isTextLiteralType() ? 'active' : ''" href ng-click="changeSimilarityIndexType(SimilarityIndexType.TEXT)" data-toggle="tab">
{{'text.similarity.index' | translate}}
</a>
</li>
<li class="nav-item" id="create-predication-index">
<a class="nav-link" ng-class="similarityIndexInfo.isPredicationType() ? 'active' : ''" href ng-click="changeSimilarityIndexType(SimilarityIndexType.PREDICATION)"
data-toggle="tab">
{{'predication.index' | translate}}
</a>
</li>
</ul>
<div class="card mb-2">
<div class="card-block pt-1">
<p class="lead">{{'index.name' | translate}}</p>
<div class="input-group input-group-lg">
<input required
class="form-control similarity-index-name"
type="text"
placeholder="{{'my.index.name.required' | translate}}"
ng-model="similarityIndexInfo.similarityIndex.name"
ng-disabled="isEditViewMode()"
ng-change="similarityIndexNameChanged()"
guide-selector="similarity-index-name">
</div>
<div ng-if="saveOrUpdateExecuted">
<div ng-if="!similarityIndexInfo.hasName()" class="idError alert alert-danger mt-1" guide-selector="error">
{{'similarity.empty.index.name.error' | translate}}
</div>
<div ng-if="similarityIndexInfo.hasName() && !similarityIndexInfo.isNameValid()" class="idError alert alert-danger mt-1" guide-selector="error">
{{'similarity.index.name.constraint' | translate}}
</div>
<div ng-if="similarityIndexInfo.isNameExist" class="idError alert alert-danger mt-1" guide-selector="error">
{{'similarity.existing.index.name.error' | translate}}
</div>
</div>
<button ng-if="!isEditViewMode()"
class="btn btn-link btn-sm mt-1 px-0 collapsed more-options-btn"
data-toggle="collapse"
data-target="#more-options">
{{'more.options.label' | translate}} <span class="icon-caret-up"></span>
</button>
<div id="more-options" class="collapse mt-1">
<div class="form-group row">
<label for="indexParameters" class="col-md-4 col-form-label">{{'semantic.vectors.index.params' | translate}}</label>
<div class="col-md-8">
<input class="form-control"
type="text"
ng-model="similarityIndexInfo.similarityIndex.options"
id="indexParameters"
ng-change="setDirty()"
placeholder="-vectortype binary">
<div class="small text-muted mt-1">
{{'see.full.label' | translate}}
<a href="http://graphdb.ontotext.com/documentation/{{productInfo.productShortVersion}}/semantic-similarity-searches.html#create-index-parameters"
rel="noopener" target="_blank">
{{'list.of.supported.params' | translate}}
</a>
</div>
</div>
</div>
<div class="form-group row" ng-if="similarityIndexInfo.isTextType() || similarityIndexInfo.isTextLiteralType()">
<label class="col-md-4 col-form-label">{{'stop.words' | translate}}</label>
<div class="col-md-8">
<input class="form-control stop-words"
type="text"
placeholder="{{'default.lucene.stop.list' | translate}}"
ng-model="similarityIndexInfo.similarityIndex.stopList"
ng-change="setDirty()">
</div>
</div>
<div class="form-group row" ng-if="similarityIndexInfo.isTextType() || similarityIndexInfo.isTextLiteralType()">
<label class="col-md-4 col-form-label">{{'analyzer.class' | translate}}</label>
<div class="col-md-8">
<input class="form-control analyzer-class"
type="text"
ng-model="similarityIndexInfo.similarityIndex.analyzer"
ng-change="setDirty()">
</div>
</div>
<div class="checkbox offset-xs-3 offset-md-4" ng-show="similarityIndexInfo.isTextType() || similarityIndexInfo.isTextLiteralType()">
<label class="col-xs-6 col-md-6" gdb-tooltip="{{'literal.index.input' | translate}}" tooltip-placement="bottom">
<input type="checkbox"
class="literal-index"
ng-true-value="'true'"
ng-false-value="'false'"
ng-model="similarityIndexInfo.similarityIndex.isLiteralIndex"
ng-change="setDirty()"/>
{{'literal.index.label' | translate}}
</label>
</div>
<div class="form-group row" ng-show="similarityIndexInfo.isPredicationType()">
<label class="col-md-4 col-form-label">{{'input.literal.index.label' | translate}}</label>
<div class="col-md-8">
<select class="form-control"
ng-options="idx for idx in literalIndexes"
ng-model="similarityIndexInfo.similarityIndex.inputIndex"
ng-change="setDirty()"></select>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-block">
<button type="button" class="btn btn-link pull-right" ng-click="toggleHelp()">
<span class="icon-help" uib-popover="{{'toggle.help' | translate}}" popover-placement="top"
popover-trigger="mouseenter"></span>
<span class="hidden-lg-down">{{'menu.help.label' | translate}}</span>
</button>
<ul class="nav nav-tabs">
<li ng-if="!isEditViewMode()" class="nav-item select-query-tab">
<a ng-class="similarityIndexInfo.isDataQueryTypeSelected() ? 'active' : ''" ng-click="changeQueryTab(SimilarityQueryType.DATA)" class="nav-link" href>
<div>{{'data.query.label' | translate}}
<sup ng-if="saveOrUpdateExecuted && hasSelectQueryError()"
class="tab-error text-danger"
uib-popover="{{getQueryErrorMessage()}}"
popover-placement="top"
popover-trigger="mouseenter">
</sup>
</div>
</a>
</li>
<li class="nav-item search-query-tab">
<a ng-class="similarityIndexInfo.isSearchQueryTypeSelected() ? 'active' : ''" ng-click="changeQueryTab(SimilarityQueryType.SEARCH)" class="nav-link" href>
{{'search.query.label' | translate}}
<sup ng-if="saveOrUpdateExecuted && hasSearchQueryError()"
class="tab-error text-danger"
uib-popover="{{getQueryErrorMessage()}}"
popover-placement="top"
popover-trigger="mouseenter">
</sup>
</a>
</li>
<li class="nav-item analogical-query-tab" ng-if="similarityIndexInfo.isPredicationType()">
<a ng-class="similarityIndexInfo.isAnalogicalQueryTypeSelected() ? 'active' : ''" ng-click="changeQueryTab(SimilarityQueryType.ANALOGICAL)" class="nav-link" href>
{{'analogical.query.label' | translate}}
<sup ng-if="saveOrUpdateExecuted && hasAnalogicalQueryError()"
class="tab-error text-danger"
uib-popover="{{getQueryErrorMessage()}}"
popover-placement="top"
popover-trigger="mouseenter">
</sup>
</a>
</li>
</ul>
<div>
<div class="alert alert-help mb-2" id="query-help" uib-collapse="helpHidden">
<button class="close absolute" ng-click="toggleHelp(0)"></button>
<div ng-if="similarityIndexInfo.isDataQueryTypeSelected()">
<p class="lead">
{{'this.sentence.start' | translate}} <span class="small-caps">SELECT</span>
{{'query.determines.data.index' | translate}}
</p>
<p>{{'query.must' | translate}} <span class="small-caps">SELECT</span> {{'the.following.bindings' | translate}}</p>
<ul ng-show="similarityIndexInfo.isTextType() || similarityIndexInfo.isTextLiteralType()">
<li><code>?documentID</code> {{'determines.id.indexed.doc' | translate}}</li>
<li><code>?documentText</code> {{'determines.doc.content' | translate}}</li>
</ul>
<ul ng-show="similarityIndexInfo.isPredicationType()">
<li><code>?subject</code></li>
<li><code>?predicate</code></li>
<li><code>?object</code></li>
</ul>
{{'query.execution.info' | translate}}
</div>
<div ng-if="similarityIndexInfo.isSearchQueryTypeSelected()">
<p class="lead">
{{'this.sentence.start' | translate}} <span class="small-caps">SELECT</span> {{'query.fetch.on.search' | translate}}
</p>
{{'query.execution.on.search' | translate}}
</div>
<div ng-if="similarityIndexInfo.isAnalogicalQueryTypeSelected()">
<p class="lead">
{{'this.sentence.start' | translate}} <span class="small-caps">SELECT</span>
{{'query.fetch.analogical.search' | translate}}
</p>
{{'analogical.search.info' | translate}}
</div>
</div>
<div class="row">
<div class="col-md-9">
<yasgui-component id="query-editor" yasgui-config="yasguiConfig" query-changed="queryChanged()"></yasgui-component>
<div ng-if="saveOrUpdateExecuted && hasQueryError()"
class="idError alert alert-danger mt-1">
{{ getQueryErrorMessage() }}
</div>
</div>
<div class="col-md-3" ng-if="similarityIndexInfo.isDataQueryTypeSelected()">
<p>{{'sample.queries' | translate}} </p>
<div class="list-group">
<div ng-repeat="(sampleKey, sampleValue) in samples">
<a href="#" ng-click="setEditorQuery(sampleValue)" class="list-group-item list-group-item-action">
<strong ng-bind="sampleKey"></strong>
<samp class="text-muted small">{{sampleValue}}</samp>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="clearfix">
<div class="pull-right">
<a ng-href="similarity" class="btn btn-lg btn-secondary cancel-similarity-index-btn"
uib-popover="{{getCloseBtnMsg()}}"
popover-placement="top"
popover-trigger="mouseenter">
{{'common.cancel.btn' | translate}}
</a>
<button ng-if="!isEditViewMode()" class="btn btn-lg btn-primary create-similarity-index-btn"
ng-disabled="savingIndex" guide-selector="create-similarity-index-btn"
ng-click="createSimilarityIndex()"
uib-popover="{{'create.index.label' | translate}}"
popover-placement="top"
popover-trigger="mouseenter">
<span>{{'common.create.btn' | translate}}</span>
<span class="saving-index-loader" ng-if="savingIndex" onto-loader-fancy hide-message="true"
size="18"></span>
</button>
<button ng-if="isEditViewMode()" class="btn btn-lg btn-primary save-query-btn"
ng-disabled="savingIndex"
ng-click="saveSearchQuery()"
uib-popover="{{'core.edit.query' | translate}}"
popover-placement="top"
popover-trigger="mouseenter">
<span>{{'common.save.btn' | translate}}</span>
<span class="saving-index-loader" ng-if="savingIndex" onto-loader-fancy hide-message="true"
size="18"></span>
</button>
</div>
<div class="pull-left">
<button ng-if="!isEditViewMode()" type="button" class="btn btn-link pull-left" ng-click="viewQuery()">
{{'view.index.query' | translate}}
</button>
<button class="btn btn-link test-query-btn" ng-click="preview()" ng-if="similarityIndexInfo.isDataQueryTypeSelected() && !isEditViewMode() && isYasqeShown()"
uib-popover="{{'preview.results' | translate}}"
popover-placement="top"
popover-trigger="mouseenter">
{{'test.query.btn' | translate}}
</button>
<button class="btn btn-link" ng-click="showEditor()" ng-if="isYasrShown() && similarityIndexInfo.isDataQueryTypeSelected()"
uib-popover="{{'closes.preview' | translate}}"
popover-placement="top"
popover-trigger="mouseenter">
{{'core.edit.query' | translate}}
</button>
</div>
</div>
</div>
</div>
</div>
<loader-component ng-if="loadingControllerResources" message="{{ ('common.refreshing.namespaces' | translate) + '.' +('common.extra.message' | translate) }}"></loader-component>
</div>