entity-browser-frontend/app/templates/form-view.html (254 lines of code) (raw):

<div> <div data-ng-controller="FormViewController as formViewCtrl"> <div class="row entity-actions"> <button class="btn btn-primary pull-left" data-ng-click="cancel()">Back to search</button> <div class="pull-right" data-ng-show="editMode && !formViewCtrl.fullDatabase.readonly"> <button class="btn btn-primary action-button" data-ng-click="formViewCtrl.save()">Save</button> <button class="btn btn-danger action-button" data-ng-click="formViewCtrl.revert()">Revert</button> </div> <div class="pull-right" data-ng-hide="editMode || formViewCtrl.fullDatabase.readonly"> <button class="btn btn-primary action-button" data-ng-click="toggleView()">Edit</button> </div> </div> <div ng-if="state"> <div> <div class="panel panel-default" data-ng-controller="PropertiesController as propertiesCtrl"> <div class="panel-heading clearfix"> <h4 class="panel-title pull-left">Properties</h4> </div> <div class="panel-body"> <div ng-show="propertiesCtrl.properties.length === 0"> <div ng-show="!editMode"> No properties </div> <div ng-show="editMode && !formViewCtrl.fullDatabase.readonly"> Add property <a class="btn btn-primary" data-ng-click="propertiesCtrl.newProperty()"> <i class="fa fa-plus"></i> </a> </div> </div> <form class="form-horizontal" name="propsForm" novalidate> <div class="row" style="font-weight: bold" data-ng-show="propertiesCtrl.properties.length"> <div class="col-md-3"> Name </div> <div class="col-md-2"> Type </div> <div class="col-md-7"> Value </div> </div> <div class="row" data-ng-repeat="property in propertiesCtrl.properties"> <div class="col-md-3"> <div data-ng-class="{'has-error': hasError('propsForm', $index + 'name' )}"> <input name="{{$index + 'name'}}" data-ng-type="text" class="form-control" data-ng-required="true" data-ng-model="property.name" data-ng-disabled="!editMode || formViewCtrl.fullDatabase.readonly" data-ng-change="propertiesCtrl.checkDuplicates(property)" placeholder="Enter name" data-uib-tooltip="{{getMessage('propsForm', $index + 'name')}}" data-uib-tooltip-trigger="mouseenter"> </div> </div> <div class="col-md-2"> <ui-select data-ng-model="property.type" data-theme="bootstrap" data-ng-disabled="!editMode || formViewCtrl.fullDatabase.readonly" data-ng-change="propertiesCtrl.removeValue(property)"> <ui-select-match placeholder="Select property type"> {{$select.selected.displayName}} </ui-select-match> <ui-select-choices repeat="type in propertiesCtrl.allPropertyTypes track by type.displayName"> <small data-ng-bind="type.displayName"></small> </ui-select-choices> </ui-select> </div> <div class="col-md-7"> <div class="form-group col-md-10" data-ng-class="{'has-error': hasError('propsForm', $index + 'value' )}"> <div> <input name="{{$index + 'value'}}" class="form-control" data-ng-pattern="property.type.validation.pattern" data-ng-model="property.value" data-ng-required="true" placeholder="Enter value" data-ng-change="propertiesCtrl.validateType(property)" data-ng-disabled="!editMode || property.type.readonly || formViewCtrl.fullDatabase.readonly" data-uib-tooltip="{{getMessage('propsForm', $index + 'value')}}" data-uib-tooltip-trigger="mouseenter"> </div> </div> <div class="col-md-2" data-ng-show="editMode && !formViewCtrl.fullDatabase.readonly"> <div data-ng-show="$index + 1 !== propertiesCtrl.properties.length"> <a class="btn btn-danger" data-ng-click="propertiesCtrl.removeProperty(property)"> <i class="fa fa-trash"></i> </a> </div> <div class="btn-group" data-ng-show="$index + 1 === propertiesCtrl.properties.length"> <a class="btn btn-danger" data-ng-click="propertiesCtrl.removeProperty(property)"> <i class="fa fa-trash"></i> </a> <a class="btn btn-primary" data-ng-click="propertiesCtrl.newProperty()"> <i class="fa fa-plus"></i> </a> </div> </div> </div> </div> </form> </div> </div> </div> <div> <div class="panel panel-default" data-ng-controller="LinksController as linksCtrl"> <div class="panel-heading clearfix"> <h4 class="panel-title pull-left">Links</h4> </div> <div class="panel-body"> <div class="row" style="font-weight: bold" ng-show="(editMode || linksCtrl.currentLinks().length) && !formViewCtrl.fullDatabase.readonly"> <div class="col-md-3"> Name </div> <div class="col-md-9"> Value </div> </div> <div class="row add-link-section" ng-show="editMode && !formViewCtrl.fullDatabase.readonly"> <form class="form-horizontal" name="linksForm" novalidate> <div class="col-md-3"> <div data-ng-class="{'has-error': hasError('linksForm', 'name' )}"> <input name="name" data-ng-type="text" class="form-control" placeholder="Enter name" data-ng-required="true" data-ng-model="linksCtrl.newLink.name" data-uib-tooltip="{{getMessage('linksForm', 'name')}}" data-uib-tooltip-trigger="mouseenter"> </div> </div> <div class="col-md-2"> <ui-select data-ng-model="linksCtrl.newLink.type" data-theme="bootstrap" data-ng-change="linksCtrl.resetNewEntityType()"> <ui-select-match placeholder="Select type"> {{$select.selected.name}} </ui-select-match> <ui-select-choices repeat="type in linksCtrl.allEntityTypes | filter: $select.search track by type.id" class="ui-select-choices-form-view"> <small data-ng-bind="type.name"></small> </ui-select-choices> </ui-select> </div> <div class="col-md-7"> <div class="form-group col-md-10" data-ng-class="{'has-error': hasError('linksForm', 'value' )}"> <div> <ui-select data-ng-model="linksCtrl.newLink.value" data-theme="bootstrap" data-ng-required="true" name="value"> <ui-select-match placeholder="Search entity"> {{$select.selected.label}} </ui-select-match> <ui-select-choices repeat="entity in linksCtrl.entities" refresh="linksCtrl.searchEntities($select.search)" refresh-delay="500"> <small data-ng-bind="entity.label"></small> </ui-select-choices> </ui-select> </div> </div> <div class="col-md-2" data-ng-show="editMode"> <a class="btn btn-primary" data-ng-click="linksCtrl.addNewLink(linksCtrl.newLink, formViewCtrl.linkChanges)"> Add link </a> </div> </div> </form> <hr> </div> <div data-ng-show="linksCtrl.currentLinks().length === 0"> <div data-ng-class="{'no-link-text' : editMode}"> No links </div> </div> <div class="row form-view-link-row" data-ng-repeat="link in linksCtrl.currentLinks()"> <div class="col-md-3"> {{link.name}} </div> <div class="col-md-9"> <div class="col-md-10" style="padding: 0; margin-right: -30px;"> <linked-entities-view links-pager="link" entity="entity()" on-remove="linksCtrl.onRemoveLink(formViewCtrl.linkChanges)" is-edit-mode="editMode" ></linked-entities-view> </div> <div class="col-md-2 pull-right" data-ng-show="editMode && !formViewCtrl.fullDatabase.readonly"> <a class="btn btn-danger" data-ng-click="linksCtrl.totallyRemoveLink(link.name, formViewCtrl.linkChanges)"> <i class="fa fa-trash"></i> </a> </div> </div> </div> </div> </div> </div> <div> <div class="panel panel-default" data-ng-controller="BlobsController as blobs"> <div class="panel-heading clearfix"> <h4 class="panel-title pull-left">Blobs</h4> </div> <div class="panel-body"> <div data-ng-show="uiBlobs.length === 0"> No blobs </div> <div class="row" style="font-weight: bold" data-ng-show="uiBlobs.length"> <div class="col-md-3"> Name </div> <div class="col-md-2"> Size </div> <div class="col-md-7"> Action </div> </div> <div class="row form-view-link-row" data-ng-repeat="blob in uiBlobs"> <div class="col-md-3"> {{blob.name}} </div> <div class="col-md-2"> {{blob.blobSize}} </div> <div class="col-md-7"> <a class="btn btn-default" target="_self" data-ng-click="blobs.downloadBlob(blob)"> Binary <i class="fas fa-arrow-circle-down"></i> </a> <a class="btn btn-default" target="_self" data-ng-click="blobs.downloadBlobString(blob)"> UTF <i class="fas fa-arrow-circle-down"></i> </a> </div> </div> </div> </div> </div> </div> </div> </div>