search.html 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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-hide="section.hideHeader" ng-click="ctrl.toggleFolder(section)">
  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-show="section.expanded"></i>
  54. <i class="fa fa-plus search-section__header__toggle" ng-hide="section.expanded"></i>
  55. </a>
  56. <div ng-if="section.expanded">
  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__body">
  62. <div class="search-item__body-title">{{::item.title}}</div>
  63. <div class="search-item__body-sub-title" ng-show="item.folderTitle && section.hideHeader">
  64. <i class="fa fa-folder-o"></i>
  65. {{::item.folderTitle}}
  66. </div>
  67. </span>
  68. <span class="search-item__tags">
  69. <span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in item.tags" tag-color-from-name="tag" class="label label-tag">
  70. {{tag}}
  71. </span>
  72. </span>
  73. <span class="search-item__actions">
  74. <i class="fa" ng-class="{'fa-star': item.isStarred, 'fa-star-o': !item.isStarred}"></i>
  75. </span>
  76. </a>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. <div class="search-button-row">
  82. <a class="search-button-row-explore-link" target="_blank" href="https://grafana.com/dashboards?utm_source=grafana_search">
  83. Find <img src="public/img/icn-dashboard-tiny.svg" width="14" /> dashboards on Grafana.com
  84. </a>
  85. </div>
  86. </div>