EVOLUTION-MANAGER
Edit File: dashboard_import.html
<page-header model="ctrl.navModel"></page-header> <div class="page-container page-body" ng-cloak> <div ng-if="ctrl.step === 1"> <form class="page-action-bar"> <div class="page-action-bar__spacer"></div> <dash-upload on-upload="ctrl.onUpload(dash)"></dash-upload> </form> <h5 class="section-heading">Grafana.com Dashboard</h5> <div class="gf-form-group"> <div class="gf-form gf-form--grow"> <input type="text" class="gf-form-input max-width-30" ng-model="ctrl.gnetUrl" placeholder="Paste Grafana.com dashboard url or id" ng-blur="ctrl.checkGnetDashboard()"></textarea> </div> <div class="gf-form" ng-if="ctrl.gnetError"> <label class="gf-form-label text-warning"> <i class="fa fa-warning"></i> {{ctrl.gnetError}} </label> </div> </div> <h5 class="section-heading">Or paste JSON</h5> <div class="gf-form-group"> <div class="gf-form"> <textarea rows="10" data-share-panel-url="" class="gf-form-input" ng-model="ctrl.jsonText"></textarea> </div> <button type="button" class="btn btn-secondary" ng-click="ctrl.loadJsonText()"> <i class="fa fa-paste"></i> Load </button> <span ng-if="ctrl.parseError" class="text-error p-l-1"> <i class="fa fa-warning"></i> {{ctrl.parseError}} </span> </div> </div> <div ng-if="ctrl.step === 2"> <div class="gf-form-group" ng-if="ctrl.dash.gnetId"> <h3 class="section-heading"> Importing Dashboard from <a href="https://grafana.com/dashboards/{{ctrl.dash.gnetId}}" class="external-link" target="_blank">Grafana.com</a> </h3> <div class="gf-form"> <label class="gf-form-label width-15">Published by</label> <label class="gf-form-label width-15">{{ctrl.gnetInfo.orgName}}</label> </div> <div class="gf-form"> <label class="gf-form-label width-15">Updated on</label> <label class="gf-form-label width-15">{{ctrl.gnetInfo.updatedAt | date : 'yyyy-MM-dd HH:mm:ss'}}</label> </div> </div> <h3 class="section-heading"> Options </h3> <div class="gf-form-group"> <div class="gf-form-inline"> <div class="gf-form gf-form--grow"> <label class="gf-form-label width-15">Name</label> <input type="text" class="gf-form-input" ng-model="ctrl.dash.title" give-focus="true" ng-change="ctrl.titleChanged()" ng-class="{'validation-error': ctrl.nameExists || !ctrl.dash.title}"> <label class="gf-form-label text-success" ng-if="ctrl.titleTouched && !ctrl.hasNameValidationError"> <i class="fa fa-check"></i> </label> </div> </div> <div class="gf-form-inline" ng-if="ctrl.hasNameValidationError"> <div class="gf-form offset-width-15 gf-form--grow"> <label class="gf-form-label text-warning gf-form-label--grow"> <i class="fa fa-warning"></i> {{ctrl.nameValidationError}} </label> </div> </div> <div class="gf-form-inline"> <div class="gf-form gf-form--grow"> <folder-picker label-class="width-15" initial-folder-id="ctrl.folderId" initial-title="ctrl.initialFolderTitle" on-change="ctrl.onFolderChange($folder)" on-load="ctrl.onFolderChange($folder)" enter-folder-creation="ctrl.onEnterFolderCreation()" exit-folder-creation="ctrl.onExitFolderCreation()" enable-create-new="true"> </folder-picker> </div> </div> <div class="gf-form-inline"> <div class="gf-form gf-form--grow"> <span class="gf-form-label width-15"> Unique identifier (uid) <info-popover mode="right-normal"> The unique identifier (uid) of a dashboard can be used for uniquely identify a dashboard between multiple Grafana installs. The uid allows having consistent URL’s for accessing dashboards so changing the title of a dashboard will not break any bookmarked links to that dashboard. </info-popover> </span> <input type="text" class="gf-form-input" disabled="disabled" ng-model="ctrl.autoGenerateUidValue" ng-if="ctrl.autoGenerateUid"> <a class="btn btn-secondary gf-form-btn" href="#" ng-click="ctrl.autoGenerateUid = false" ng-if="ctrl.autoGenerateUid">change</a> <input type="text" class="gf-form-input" maxlength="40" placeholder="optional, will be auto-generated if empty" ng-model="ctrl.dash.uid" ng-change="ctrl.uidChanged()" ng-if="!ctrl.autoGenerateUid"> <label class="gf-form-label text-success" ng-if="!ctrl.autoGenerateUid && !ctrl.hasUidValidationError"> <i class="fa fa-check"></i> </label> </div> </div> <div class="gf-form-inline" ng-if="ctrl.hasUidValidationError"> <div class="gf-form offset-width-15 gf-form--grow"> <label class="gf-form-label text-warning gf-form-label--grow"> <i class="fa fa-warning"></i> {{ctrl.uidValidationError}} </label> </div> </div> <div ng-repeat="input in ctrl.inputs"> <div class="gf-form"> <label class="gf-form-label width-15"> {{input.label}} <info-popover mode="right-normal"> {{input.info}} </info-popover> </label> <!-- Data source input --> <div class="gf-form-select-wrapper" style="width: 100%" ng-if="input.type === 'datasource'"> <select class="gf-form-input" ng-model="input.value" ng-options="v.value as v.text for v in input.options" ng-change="ctrl.inputValueChanged()"> <option value="" ng-hide="input.value">{{input.info}}</option> </select> </div> <!-- Constant input --> <input ng-if="input.type === 'constant'" type="text" class="gf-form-input" ng-model="input.value" placeholder="{{input.default}}" ng-change="ctrl.inputValueChanged()"> <label class="gf-form-label text-success" ng-show="input.value"> <i class="fa fa-check"></i> </label> </div> </div> </div> <div class="gf-form-button-row"> <button type="button" class="btn btn-primary width-12" ng-click="ctrl.saveDashboard()" ng-hide="ctrl.nameExists || ctrl.uidExists" ng-disabled="!ctrl.isValid()"> Import </button> <button type="button" class="btn btn-danger width-12" ng-click="ctrl.saveDashboard()" ng-show="ctrl.nameExists || ctrl.uidExists" ng-disabled="!ctrl.isValid()"> Import (Overwrite) </button> <a class="btn btn-link" ng-click="ctrl.back()">Cancel</a> </div> </div> </div> <footer />