search.html 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <div class="search-backdrop" ng-if="ctrl.isOpen"></div>
  2. <div class="search-container" ng-if="ctrl.isOpen">
  3. <div class="search-field-wrapper">
  4. <div class="search-field-icon pointer" ng-click="ctrl.closeSearch()"><i class="fa fa-search"></i></div>
  5. <input type="text" placeholder="Find dashboards by name" give-focus="ctrl.giveSearchFocus" tabindex="1"
  6. ng-keydown="ctrl.keyDown($event)"
  7. ng-model="ctrl.query.query"
  8. ng-model-options="{ debounce: 500 }"
  9. spellcheck='false'
  10. ng-change="ctrl.search()"
  11. ng-blur="ctrl.searchInputBlur()"
  12. />
  13. <div class="search-switches">
  14. <i class="fa fa-filter"></i>
  15. <a class="pointer" href="javascript:void 0;" ng-click="ctrl.showStarred()" tabindex="2">
  16. <i class="fa fa-remove" ng-show="ctrl.query.starred"></i>
  17. starred
  18. </a> |
  19. <a class="pointer" href="javascript:void 0;" ng-click="ctrl.getTags()" tabindex="3">
  20. <i class="fa fa-remove" ng-show="ctrl.tagsMode"></i>
  21. tags
  22. </a>
  23. <span ng-if="ctrl.query.tag.length">
  24. |
  25. <span ng-repeat="tagName in ctrl.query.tag">
  26. <a ng-click="ctrl.removeTag(tagName, $event)" tag-color-from-name="tagName" class="label label-tag">
  27. <i class="fa fa-remove"></i>
  28. {{tagName}}
  29. </a>
  30. </span>
  31. </span>
  32. </div>
  33. <div class="search-field-spacer"></div>
  34. </div>
  35. <div class="search-dropdown" ng-class="{'search-dropdown--fade-in': ctrl.openCompleted}">
  36. <div gemini-scrollbar>
  37. <div class="search-results-container" ng-if="ctrl.tagsMode">
  38. <div ng-repeat="tag in ctrl.results" class="pointer" style="width: 180px; float: left;"
  39. ng-class="{'selected': $index === ctrl.selectedIndex }"
  40. ng-click="ctrl.filterByTag(tag.term, $event)">
  41. <a class="search-result-tag label label-tag" tag-color-from-name="tag.term">
  42. <i class="fa fa-tag"></i>
  43. <span>{{tag.term}} &nbsp;({{tag.count}})</span>
  44. </a>
  45. </div>
  46. </div>
  47. <div class="search-results-container" ng-if="!ctrl.tagsMode">
  48. <h6 ng-hide="ctrl.results.length">No dashboards matching your query were found.</h6>
  49. <div ng-repeat="section in ctrl.results" class="search-section">
  50. <a class="search-section__header pointer" ng-show="::section.title" ng-click="section.collapsed = !section.collapsed">
  51. <i class="search-section__header__icon" ng-class="section.icon"></i>
  52. <span class="search-section__header__text">{{::section.title}}</span>
  53. <i class="fa fa-minus search-section__header__toggle" ng-hide="section.collapsed"></i>
  54. <i class="fa fa-plus search-section__header__toggle" ng-show="section.collapsed"></i>
  55. </a>
  56. <div ng-if="!section.collapsed">
  57. <a ng-repeat="item in section.items" class="search-item" ng-class="{'selected': item.selected}" ng-href="{{::item.url}}">
  58. <span class="search-item__icon">
  59. <i class="fa fa-th-large"></i>
  60. </span>
  61. <span class="search-item__title">
  62. {{::item.title}}
  63. </span>
  64. <span class="search-item__tags">
  65. <span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in item.tags" tag-color-from-name="tag" class="label label-tag">
  66. {{tag}}
  67. </span>
  68. </span>
  69. <span class="search-item__actions">
  70. <i class="fa" ng-class="{'fa-star': item.isStarred, 'fa-star-o': !item.isStarred}"></i>
  71. </span>
  72. </a>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="search-button-row">
  78. <a class="search-button-row-explore-link" target="_blank" href="https://grafana.com/dashboards?utm_source=grafana_search">
  79. Find <img src="public/img/icn-dashboard-tiny.svg" width="14" /> dashboards on Grafana.com
  80. </a>
  81. </div>
  82. </div>