search.html 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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 class="search-results-container" ng-if="ctrl.tagsMode">
  37. <div ng-repeat="tag in ctrl.results" class="pointer" style="width: 180px; float: left;"
  38. ng-class="{'selected': $index === ctrl.selectedIndex }"
  39. ng-click="ctrl.filterByTag(tag.term, $event)">
  40. <a class="search-result-tag label label-tag" tag-color-from-name="tag.term">
  41. <i class="fa fa-tag"></i>
  42. <span>{{tag.term}} &nbsp;({{tag.count}})</span>
  43. </a>
  44. </div>
  45. </div>
  46. <div class="search-results-container" ng-if="!ctrl.tagsMode" grafana-scrollbar>
  47. <h6 ng-hide="ctrl.results.length">No dashboards matching your query were found.</h6>
  48. <div ng-repeat="section in ctrl.results" class="search-section">
  49. <a class="search-section__header pointer" ng-hide="section.hideHeader" ng-click="ctrl.toggleFolder(section)">
  50. <i class="search-section__header__icon" ng-class="section.icon"></i>
  51. <span class="search-section__header__text">{{::section.title}}</span>
  52. <i class="fa fa-minus search-section__header__toggle" ng-show="section.expanded"></i>
  53. <i class="fa fa-plus search-section__header__toggle" ng-hide="section.expanded"></i>
  54. </a>
  55. <div ng-if="section.expanded">
  56. <a ng-repeat="item in section.items" class="search-item" ng-class="{'selected': item.selected}" ng-href="{{::item.url}}">
  57. <span class="search-item__icon">
  58. <i class="fa fa-th-large"></i>
  59. </span>
  60. <span class="search-item__body">
  61. <div class="search-item__body-title">{{::item.title}}</div>
  62. <div class="search-item__body-sub-title" ng-show="item.folderTitle && section.hideHeader">
  63. <i class="fa fa-folder-o"></i>
  64. {{::item.folderTitle}}
  65. </div>
  66. </span>
  67. <span class="search-item__tags">
  68. <span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in item.tags" tag-color-from-name="tag" class="label label-tag">
  69. {{tag}}
  70. </span>
  71. </span>
  72. <span class="search-item__actions">
  73. <i class="fa" ng-class="{'fa-star': item.isStarred, 'fa-star-o': !item.isStarred}"></i>
  74. </span>
  75. </a>
  76. </div>
  77. </div>
  78. </div>
  79. <div class="search-button-row">
  80. <a class="search-button-row-explore-link" target="_blank" href="https://grafana.com/dashboards?utm_source=grafana_search">
  81. Find <img src="public/img/icn-dashboard-tiny.svg" width="14" /> dashboards on Grafana.com
  82. </a>
  83. </div>
  84. </div>
  85. </div>