search.html 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <style>
  2. #grafana-search {
  3. position: fixed;
  4. right: 0;
  5. left: 0;
  6. top: 39px;
  7. margin-right: auto;
  8. margin-left: auto;
  9. /* give it dimensions */
  10. min-height: 10em;
  11. width: 90%;
  12. }
  13. </style>
  14. <a href="#" bs-tooltip="'Search'" data-placement="bottom" ng-click="openSearch()" class="dropdown-toggle" data-toggle="dropdown">
  15. <i class='icon-folder-open'></i>
  16. </a>
  17. <ul class="dropdown-menu" id="grafana-search">
  18. <li ng-if="!showImport">
  19. <div class="grafana-search-panel">
  20. <div class="search-field-wrapper">
  21. <button class="btn btn-success pull-right" config-modal="app/partials/playlist.html">
  22. <i class="icon-play"></i>
  23. Playlist
  24. </button>
  25. <button class="btn btn-success pull-right" ng-click="toggleImport($event)">
  26. <i class="icon-download-alt"></i>
  27. Import
  28. </button>
  29. <button class="btn btn-success pull-right" ng-click="newDashboard()">
  30. <i class="icon-th-large"></i>
  31. New
  32. </button>
  33. <span class="position: relative;">
  34. <input type="text"
  35. placeholder="search dashboards, metrics, or graphs"
  36. xng-focus="giveSearchFocus"
  37. ng-keydown="keyDown($event)"
  38. ng-model="query.query" spellcheck='false'
  39. ng-change="search()" />
  40. <a class="search-tagview-switch" href="javascript:void(0);"
  41. ng-class="{'active': tagsOnly}"
  42. ng-click="showTags($event)">tags</a>
  43. </span>
  44. </div>
  45. <h6 ng-hide="results.dashboards.length || results.metrics.length">No dashboards or metrics matching your query found</h6>
  46. <table class="table table-condensed table-striped" ng-if="tagsOnly">
  47. <tr ng-repeat="tag in results.tags" ng-class="{'selected-tag': $index === selectedIndex }">
  48. <td>
  49. <a ng-click="filterByTag(tag.term, $event)" class="label label-tag">
  50. {{tag.term}} &nbsp;({{tag.count}})
  51. </a>
  52. </td>
  53. <td style="width:100%;padding-left: 10px;font-weight: bold;">
  54. </td>
  55. </tr>
  56. </table>
  57. <table class="table table-condensed table-striped" ng-if="!tagsOnly">
  58. <tr bindonce ng-repeat="row in results.metrics"
  59. class="grafana-search-metric-result"
  60. ng-class="{'selected': $index === selectedIndex }">
  61. <td><span class="label label-info">metric</span></td>
  62. <td class="grafana-search-metric-name">
  63. {{row._id}}
  64. </td>
  65. <td style="width:100%;">
  66. <div class="grafana-search-metric-actions">
  67. <a ng-click="addMetricToCurrentDashboard(row._id)"><i class="icon-plus-sign"></i> Add to dashboard</a>
  68. </div>
  69. </td>
  70. </tr>
  71. <tr bindonce
  72. ng-repeat="row in results.dashboards"
  73. ng-class="{'selected': $index === selectedIndex }">
  74. <td><a confirm-click="deleteDashboard(row._id)" confirmation="Are you sure you want to delete the {{row._id}} dashboard"><i class="icon-remove"></i></a></td>
  75. <td style="width:100%">
  76. <a href="#/dashboard/elasticsearch/{{row._id}}" bo-text="row._id"></a>
  77. </td>
  78. <td style="white-space: nowrap; text-align: right;">
  79. <a ng-click="filterByTag(tag, $event)" ng-repeat="tag in row._source.tags" style="margin-right: 5px;" class="label label-tag">
  80. {{tag}}
  81. </a>
  82. </td>
  83. <td><a><i class="icon-share" ng-click="shareDashboard(row._id, row._id)" config-modal="app/partials/dashLoaderShare.html"></i></a></td>
  84. </tr>
  85. </table>
  86. </div>
  87. </li>
  88. <!-- ng-show="dashboard.loader.load_gist || dashboard.loader.load_local" -->
  89. <li ng-if="showImport" style="margin: 20px;">
  90. <div class="editor-row">
  91. <div class="section">
  92. <div class="editor-option">
  93. <h5>Local File <tip>Load dashboard JSON layout from file</tip></h5>
  94. <form>
  95. <input type="file" id="dashupload" dash-upload /><br>
  96. </form>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="editor-row" ng-show='dashboard.loader.load_gist'>
  101. <h5>Gist <tip>Enter a gist number or url</tip></h5>
  102. <form>
  103. <input type="text" ng-model="gist.url" placeholder="Gist number or URL"><br>
  104. <button class="btn" ng-click="gist_dblist(dashboard.gist_id(gist.url))" ng-show="dashboard.is_gist(gist.url)"><i class="icon-github-alt"></i> Get gist:{{gist.url | gistid}}</button>
  105. <h6 ng-show="gist.files.length">Dashboards in gist:{{gist.url | gistid}} <small>click to load</small></h6>
  106. <h6 ng-hide="gist.files.length || !gist.url.length">No gist dashboards found</h6>
  107. <table class="table table-condensed table-striped">
  108. <tr ng-repeat="file in gist.files">
  109. <td><a ng-click="dashboard.dash_load(file)">{{file.title}}</a></td>
  110. </tr>
  111. </table>
  112. </form>
  113. </div>
  114. </li>
  115. </ul>