github.com/hernad/nomad@v1.6.112/ui/app/components/das/recommendation-card.hbs (about) 1 {{! 2 Copyright (c) HashiCorp, Inc. 3 SPDX-License-Identifier: MPL-2.0 4 ~}} 5 6 {{! template-lint-disable no-duplicate-landmark-elements}} 7 {{#if this.interstitialComponent}} 8 <section class="das-interstitial" style={{this.interstitialStyle}}> 9 {{component 10 (concat "das/" this.interstitialComponent) 11 proceed=this.proceedPromiseResolve 12 error=this.error 13 }} 14 </section> 15 {{else if @summary.taskGroup}} 16 <section 17 ...attributes 18 data-test-task-group-recommendations 19 class="recommendation-card" 20 {{did-insert this.cardInserted}} 21 > 22 23 <h2 class="top overview inner-container">Resource Recommendation</h2> 24 25 <header class="overview inner-container"> 26 <h3 class="slug"> 27 <span 28 class="job" 29 data-test-job-name 30 >{{@summary.taskGroup.job.name}}</span> 31 <span 32 class="group" 33 data-test-task-group-name 34 >{{@summary.taskGroup.name}}</span> 35 </h3> 36 <h4 class="namespace"> 37 <span class="namespace-label">Namespace:</span> 38 <span data-test-namespace>{{@summary.jobNamespace}}</span> 39 </h4> 40 </header> 41 42 <section class="diffs overview inner-container"> 43 <Das::DiffsTable 44 data-test-group-totals 45 @model={{@summary.taskGroup}} 46 @recommendations={{@summary.recommendations}} 47 @excludedRecommendations={{@summary.excludedRecommendations}} 48 /> 49 </section> 50 51 <section class="narrative overview inner-container"> 52 <p data-test-narrative>{{this.narrative}}</p> 53 </section> 54 55 <section class="main overview inner-container task-toggles"> 56 <table data-test-toggles-table> 57 <thead data-test-tasks-head> 58 <tr> 59 {{#if this.showToggleAllToggles}} 60 <th>Task</th> 61 <th class="toggle-all">Toggle All</th> 62 <th class="toggle-cell"> 63 <Toggle 64 data-test-cpu-toggle 65 @isActive={{and 66 this.allCpuToggleActive 67 (not this.allCpuToggleDisabled) 68 }} 69 @isDisabled={{this.allCpuToggleDisabled}} 70 @onToggle={{action 71 this.toggleAllRecommendationsForResource 72 "CPU" 73 }} 74 title="Toggle CPU recommendations for all tasks" 75 > 76 <div class="label-wrapper">CPU</div> 77 </Toggle> 78 </th> 79 <th class="toggle-cell"> 80 <Toggle 81 data-test-memory-toggle 82 @isActive={{and 83 this.allMemoryToggleActive 84 (not this.allMemoryToggleDisabled) 85 }} 86 @isDisabled={{this.allMemoryToggleDisabled}} 87 @onToggle={{action 88 this.toggleAllRecommendationsForResource 89 "MemoryMB" 90 }} 91 title="Toggle memory recommendations for all tasks" 92 > 93 <div class="label-wrapper">Mem</div> 94 </Toggle> 95 </th> 96 {{else}} 97 <th colspan="2">Task</th> 98 <th class="toggle-cell">CPU</th> 99 <th class="toggle-cell">Mem</th> 100 {{/if}} 101 </tr> 102 </thead> 103 <tbody> 104 {{#each this.taskToggleRows key="task.name" as |taskToggleRow index|}} 105 <Das::TaskRow 106 @task={{taskToggleRow.task}} 107 @active={{eq this.activeTaskToggleRowIndex index}} 108 @cpu={{taskToggleRow.cpu}} 109 @memory={{taskToggleRow.memory}} 110 @onClick={{action (mut this.activeTaskToggleRowIndex) index}} 111 @toggleRecommendation={{@summary.toggleRecommendation}} 112 /> 113 {{/each}} 114 </tbody> 115 </table> 116 </section> 117 118 <section class="actions overview inner-container"> 119 <button 120 class="button is-primary" 121 type="button" 122 disabled={{this.cannotAccept}} 123 data-test-accept 124 {{on "click" this.accept}} 125 >Accept</button> 126 <button 127 class="button is-light" 128 type="button" 129 data-test-dismiss 130 {{on "click" this.dismiss}} 131 >Dismiss</button> 132 </section> 133 134 <section class="active-task-group" data-test-active-task> 135 <section class="top active-task inner-container"> 136 <CopyButton 137 data-test-copy-button 138 @clipboardText={{this.copyButtonLink}} 139 > 140 {{@summary.taskGroup.job.name}} 141 / 142 {{@summary.taskGroup.name}} 143 </CopyButton> 144 145 {{#if @onCollapse}} 146 <button 147 data-test-accordion-toggle 148 class="button is-light is-compact pull-right accordion-toggle" 149 {{on "click" @onCollapse}} 150 type="button" 151 > 152 Collapse 153 </button> 154 {{/if}} 155 </section> 156 157 <header class="active-task inner-container"> 158 <h3 data-test-task-name>{{this.activeTask.name}} task</h3> 159 </header> 160 161 <section class="diffs active-task inner-container"> 162 <Das::DiffsTable 163 @model={{this.activeTask}} 164 @recommendations={{this.activeTaskToggleRow.recommendations}} 165 @excludedRecommendations={{@summary.excludedRecommendations}} 166 /> 167 </section> 168 169 <ul class="main active-task inner-container"> 170 {{#each this.activeTaskToggleRow.recommendations as |recommendation|}} 171 <li data-test-recommendation> 172 <Das::RecommendationChart 173 data-test-chart-for={{recommendation.resource}} 174 @resource={{recommendation.resource}} 175 @currentValue={{recommendation.currentValue}} 176 @recommendedValue={{recommendation.value}} 177 @stats={{recommendation.stats}} 178 @disabled={{includes 179 recommendation 180 @summary.excludedRecommendations 181 }} 182 /> 183 </li> 184 {{/each}} 185 </ul> 186 </section> 187 188 </section> 189 {{/if}}