search.html 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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-field-spacer"></div>
  14. </div>
  15. <div class="search-dropdown">
  16. <div class="search-dropdown__col_1">
  17. <div class="search-results-container" grafana-scrollbar>
  18. <h6 ng-show="!ctrl.isLoading && results.length">No dashboards matching your query were found.</h6>
  19. <div ng-repeat="section in ctrl.results" class="search-section">
  20. <a class="search-section__header pointer" ng-hide="section.hideHeader" ng-click="ctrl.toggleFolder(section)">
  21. <i class="search-section__header__icon" ng-class="section.icon"></i>
  22. <span class="search-section__header__text">{{::section.title}}</span>
  23. <i class="fa fa-minus search-section__header__toggle" ng-show="section.expanded"></i>
  24. <i class="fa fa-plus search-section__header__toggle" ng-hide="section.expanded"></i>
  25. </a>
  26. <div ng-if="section.expanded">
  27. <a ng-repeat="item in section.items" class="search-item" ng-class="{'selected': item.selected}" ng-href="{{::item.url}}">
  28. <span class="search-item__icon">
  29. <i class="fa fa-th-large"></i>
  30. </span>
  31. <span class="search-item__body">
  32. <div class="search-item__body-title">{{::item.title}}</div>
  33. <div class="search-item__body-sub-title" ng-show="item.folderTitle && section.hideHeader">
  34. {{::item.folderTitle}}
  35. </div>
  36. </span>
  37. <span class="search-item__tags">
  38. <span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in item.tags" tag-color-from-name="tag" class="label label-tag">
  39. {{tag}}
  40. </span>
  41. </span>
  42. </a>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="search-dropdown__col_2">
  48. <div class="search-filter-box">
  49. <div class="search-filter-box__header">
  50. <i class="fa fa-filter"></i>
  51. Filter by:
  52. <a class="pointer pull-right small">
  53. <i class="fa fa-remove"></i> Clear
  54. </a>
  55. </div>
  56. <div class="gf-form">
  57. <folder-picker initial-title="ctrl.initialFolderFilterTitle"
  58. on-change="ctrl.onFolderChange($folder)"
  59. label-class="width-4">
  60. </folder-picker>
  61. </div>
  62. <div class="gf-form">
  63. <label class="gf-form-label width-4">Tags</label>
  64. <bootstrap-tagsinput ng-model="ctrl.dashboard.tags" tagclass="label label-tag" placeholder="add tags">
  65. </bootstrap-tagsinput>
  66. </div>
  67. </div>
  68. <div class="search-filter-box">
  69. <a class="search-button-row-explore-link" target="_blank" href="https://grafana.com/dashboards?utm_source=grafana_search">
  70. <img src="public/img/icn-dashboard-tiny.svg" width="20" /> Find dashboards on Grafana.com
  71. </a>
  72. </div>
  73. </div>
  74. </div>
  75. </div>