graphdb-workbench
Version:
The web application for GraphDB APIs
184 lines (176 loc) • 12.9 kB
HTML
<div class="connectorsPage">
<h1>
{{title}}
<span 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"></span></span>
</h1>
<div core-errors write ontop fedx></div>
<div onto-loader-new
ng-show="loader"
style="height: 60vh;"
size="75"
message="getLoaderMessage"
timeout="[1]"></div>
<div ng-show="canWriteActiveRepo() && !loader && !isRestricted">
<div class="pull-right">
<button class="btn btn-lg btn-link p-0" type="button"
ng-click="getConnectors()"
uib-tooltip="Reload all connector information" tooltip-placement="left">
<em class="icon-reload"></em>
</button>
</div>
<div create-progress ng-show="beingBuiltConnector.inline && beingBuiltConnector.percentDone > 0"></div>
<div ng-show="!isActiveRepoFedXType() && connectors.length">
<div id="connectorManagement" class="mb-3" ng-repeat="connector in connectors">
<h3>{{connector.key}}</h3>
<section class="mb-1">
<div id="accordion-{{connector.key}}" role="tablist" aria-multiselectable="true">
<div class="card" ng-repeat="exist in existing[connector.key]">
<div class="card-header" role="tab" id="heading-{{connector.key}}{{$index}}">
<div class="pull-right">
<button class="btn btn-link p-0" type="button"
ng-click="copyConnector(connector, exist)"
uib-tooltip="Copy connector {{exist.name}}" tooltip-append-to-body="true">
<em class="icon-copy"></em>
</button>
<button class="btn btn-link p-0" type="button"
ng-click="repair(exist, connector)"
uib-tooltip="Repair connector {{exist.name}}" tooltip-append-to-body="true">
<em class="icon-reload"></em>
</button>
<button class="btn btn-link secondary p-0" type="button"
ng-click="delete(exist, connector)"
uib-tooltip="Delete connector {{exist.name}}" tooltip-append-to-body="true">
<em class="icon-trash"></em>
</button>
</div>
<h5 class="mb-0">
<a class="collapsed" data-toggle="collapse" data-parent="#accordion-{{connector.key}}"
href="#collapse-{{connector.key}}{{$index}}" aria-expanded="false"
aria-controls="collapse-{{connector.key}}{{$index}}">
{{exist.name}}
</a>
</h5>
</div>
<div id="collapse-{{connector.key}}{{$index}}" class="collapse" role="tabpanel"
aria-labelledby="heading-{{connector.key}}{{$index}}">
<div class="card-block">
<div class="form-horizontal">
<div class="row form-group" ng-repeat="option in getOptions(connector)"
ng-init="key = option.__name; value = exist.values[key] != null ? exist.values[key] : option.__defaultValue">
<label class="col-xs-2 col-form-label">{{option.__label}}</label>
<div ng-if="value == null" class="col-xs-10">
<div class="form-control"><em>No value set</em></div>
</div>
<div ng-if="value != null" class="col-xs-10">
<div ng-if="option.__type == 'String'">
<input class="form-control" type="text" readonly value="{{value}}"/>
</div>
<div ng-if="option.__type == 'BigString'">
<textarea class="form-control" ng-model="value" readonly>
</textarea>
</div>
<div ng-if="option.__type == 'JsonString'">
<pre class="form-control" ng-bind="toPrettyJson(value)"></pre>
</div>
<div>
<input class="form-control" type="text" readonly value="{{value}}"
ng-if="option.__type == 'Long'"/>
</div>
<div>
<input type="checkbox" disabled ng-checked="value"
ng-if="option.__type == 'Boolean'"/>
</div>
<div ng-if="option.__type == 'StringArray'"
ng-repeat="val in value track by $index" class="mb-1">
<input type="text" class="form-control" value="{{val}}" readonly>
</div>
<div ng-if="option.__type == 'Map'">
<div ng-repeat="(mapKey, mapValue) in value">
<div class="input-group mb-1">
<div class="row">
<div class="col-xs-6">
<input type="text" class="form-control" ng-model="mapKey" readonly>
</div>
<div class="col-xs-6">
<input type="text" class="form-control" ng-model="mapValue" readonly>
</div>
</div>
</div>
</div>
<div class="col-form-label mb-1" ng-show="isEmpty(value)">
<label><em>No {{option.__label}} added</em></label>
</div>
</div>
<div ng-if="option.__type == 'OptionArray'">
<fieldset class="form-group mb-1"
ng-repeat="field in value track by $index"
ng-init="fieldIndex = $index">
<div class="alert alert-info no-icon">
<div class="form-group row"
ng-repeat="child in option.__childOptions | filter: { __type: '!Boolean' }: true">
<label class="col-xs-2 col-form-label">{{child.__label}}</label>
<div class="col-xs-10">
<input type="text" class="form-control"
ng-if="child.__type == 'String'"
ng-model="field[child.__name]" readonly>
<div ng-if="child.__type == 'StringArray'"
ng-repeat="value in field[child.__name] track by $index">
<input type="text" class="form-control"
ng-model="field[child.__name][$index]"
readonly/>
</div>
<!-- Handles other types, e.g. OptionArray -->
<div ng-if="child.__type != 'String' && child.__type != 'StringArray'"
class="col-form-label">
<label ng-show="!field[child.__name]"><em>No value set</em></label>
<pre class="form-control" ng-show="field[child.__name]">{{toPrettyJson(field[child.__name])}}</pre>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-xs-2"></div>
<div class="col-xs-10">
<label class="form-check-inline" ng-repeat="child in option.__childOptions | filter: { __type: 'Boolean' }: true">
<input type="checkbox"
class="form-check-input"
ng-checked="field[child.__name] != null ? field[child.__name] : child.__defaultValue"
disabled>
{{child.__label}}
</label>
</div>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<div class="form-group">
<button class="btn btn-secondary pull-right"
ng-click="viewQuery(connector, exist)">View SPARQL Query
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div ng-hide="existing[connector.key].length">No connector instances.</div>
</section>
<section>
<button class="btn btn-primary new-connector-btn" ng-click="newConnector(connector)"><em class="icon-plus"></em>
New {{connector.key}} connector
</button>
</section>
</div>
</div>
<div class="alert alert-info" ng-if="isActiveRepoFedXType() || !connectors.length">
<h4>No connectors available</h4>
<p>The current repository does not support any connectors. Please check the type of the repository or select
another one.</p>
</div>
</div>
</div>