graphdb-workbench
Version:
The web application for GraphDB APIs
187 lines (179 loc) • 13.6 kB
HTML
<div class="connectorsPage" data-test="connectors-page">
<h1>
{{title}}
<page-info-tooltip></page-info-tooltip>
</h1>
<div core-errors write ontop fedx license></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()"
data-test="reload-all-connectors"
gdb-tooltip="{{'reload.all.connector.info' | translate}}" 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"
ng-init="keyForDom = connector.key.replace(' ', '-')">
<h3>{{connector.key}}</h3>
<section class="mb-1">
<div id="accordion-{{keyForDom}}" role="tablist" aria-multiselectable="true">
<div class="card" ng-repeat="exist in existing[connector.key]">
<div class="card-header" role="tab" id="heading-{{keyForDom}}{{$index}}">
<div class="pull-right">
<button class="btn btn-link p-0" type="button"
ng-click="copyConnector(connector, exist)"
gdb-tooltip="{{'copy.connector' | translate}} {{exist.name}}">
<em class="icon-copy"></em>
</button>
<button class="btn btn-link p-0" type="button"
ng-click="repair(exist, connector)"
gdb-tooltip="{{'repair.connector' | translate}} {{exist.name}}">
<em class="icon-reload"></em>
</button>
<button class="btn btn-link secondary p-0" type="button"
ng-click="delete(exist, connector)"
gdb-tooltip="{{'delete.connector' | translate}} {{exist.name}}">
<em class="icon-trash"></em>
</button>
</div>
<h5 class="mb-0">
<a class="collapsed" data-toggle="collapse" data-parent="#accordion-{{keyForDom}}"
href="#collapse-{{keyForDom}}{{$index}}" aria-expanded="false"
aria-controls="collapse-{{keyForDom}}{{$index}}">
{{exist.name}}
</a>
</h5>
</div>
<div id="collapse-{{keyForDom}}{{$index}}" class="collapse" role="tabpanel"
aria-labelledby="heading-{{keyForDom}}{{$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' | translate}}</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.sentence.beginning' | translate}} {{option.__label}} {{'added.label' | translate}}</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>
<textarea class="form-control"
ng-if="child.__type == 'BigString'"
ng-model="field[child.__name]" readonly>
</textarea>
<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' && child.__type != 'BigString'"
class="col-form-label">
<label ng-show="!field[child.__name]"><em>{{'no.value.set' | translate}}</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' | translate}}
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div ng-hide="existing[connector.key].length">{{'no.connector.instances' | translate}}</div>
</section>
<section>
<button class="btn btn-primary new-connector-btn"
ng-click="newConnector(connector)"
data-test="connector-{{connector.key.replace(' ', '-') | lowercase}}"><em class="icon-plus"></em>
{{'new.sentence.start' | translate}} {{connector.key}} {{'connector.label' | translate}}
</button>
</section>
</div>
</div>
<div class="alert alert-info" ng-if="isActiveRepoFedXType() || !connectors.length">
<h4>{{'no.connectors.available' | translate}}</h4>
<p>{{'current.repo.no.connector.support' | translate}}</p>
</div>
</div>
</div>