open-nomad/ui/app/components/variable-paths.hbs
hc-github-team-nomad-core e9b6be87e2
[ui] Job Variables page (#17964) (#18106)
* Bones of a component that has job variable awareness

* Got vars listed woo

* Variables as its own subnav and some pathLinkedVariable perf fixes

* Automatic Access to Variables alerter

* Helper and component to conditionally render the right link

* A bit of cleanup post-template stuff

* testfix for looping right-arrow keynav bc we have a new subnav section

* A very roundabout way of ensuring that, if a job exists when saving a variable with a pathLinkedEntity of that job, its saved right through to the job itself

* hacky but an async version of pathLinkedVariable

* model-driven and async fetcher driven with cleanup

* Only run the update-job func if jobname is detected in var path

* Test cases begun

* Management token for variables to appear in tests

* Its a management token so it gets to see the clients tab under system jobs

* Pre-review cleanup

* More tests

* Number of requests test and small fix to groups-by-way-or-resource-arrays elsewhere

* Variable intro text tests

* Variable name re-use

* Simplifying our wording a bit

* parse json vs plainId

* Addressed PR feedback, including de-waterfalling

Co-authored-by: Phil Renaud <phil.renaud@hashicorp.com>
2023-08-01 09:59:39 -04:00

74 lines
2.1 KiB
Handlebars

{{!
Copyright (c) HashiCorp, Inc.
SPDX-License-Identifier: MPL-2.0
~}}
<ListTable class="path-tree" @source={{@branch}} as |t|>
<t.head>
<th>
Path
</th>
<th>
Namespace
</th>
<th>
Last Modified
</th>
</t.head>
<tbody>
{{#each this.folders as |folder|}}
<tr data-test-folder-row {{on "click" (fn this.handleFolderClick folder.data.absolutePath)}}>
<td colspan="3"
{{keyboard-shortcut
enumerated=true
action=(fn this.handleFolderClick folder.data.absolutePath)
}}
>
<span>
<FlightIcon @name="folder" />
<LinkTo @route="variables.path" @model={{folder.data.absolutePath}} @query={{hash namespace="*"}}>
{{trim-path folder.name}}
</LinkTo>
</span>
</td>
</tr>
{{/each}}
{{#each this.files as |file|}}
<tr
data-test-file-row="{{file.name}}"
{{on "click" (fn this.handleFileClick file)}}
class={{if (can "read variable" path=file.absoluteFilePath namespace=file.variable.namespace) "" "inaccessible"}}
{{keyboard-shortcut
enumerated=true
action=(fn this.handleFileClick file)
}}
>
<td>
<FlightIcon @name="file-text" />
{{#if (can "read variable" path=file.absoluteFilePath namespace=file.variable.namespace)}}
<LinkTo
@route="variables.variable"
@model={{file.variable.id}}
@query={{hash namespace="*"}}
>
{{file.name}}
</LinkTo>
{{else}}
<span title="Your access policy does not allow you to view the contents of {{file.name}}">{{file.name}}</span>
{{/if}}
</td>
<td>
{{file.variable.namespace}}
</td>
<td>
<span class="tooltip" aria-label="{{format-ts file.variable.modifyTime}}">
{{moment-from-now file.variable.modifyTime}}
</span>
</td>
</tr>
{{/each}}
</tbody>
</ListTable>