tailbone/tailbone/templates/importing/configure.mako
Lance Edgar 2eaeb1891d Add initial support for Vue 3 + Oruga, via "butterball" theme
just a savepoint, still have lots to do and test before this really works
2024-04-27 21:06:20 -05:00

209 lines
6.2 KiB
Mako

## -*- coding: utf-8; -*-
<%inherit file="/configure.mako" />
<%def name="form_content()">
${h.hidden('handlers', **{':value': 'JSON.stringify(handlersData)'})}
<h3 class="is-size-3">Designated Handlers</h3>
<${b}-table :data="handlersData"
narrowed
icon-pack="fas"
:default-sort="['host_title', 'asc']">
<${b}-table-column field="host_title"
label="Data Source"
v-slot="props"
sortable>
{{ props.row.host_title }}
</${b}-table-column>
<${b}-table-column field="local_title"
label="Data Target"
v-slot="props"
sortable>
{{ props.row.local_title }}
</${b}-table-column>
<${b}-table-column field="direction"
label="Direction"
v-slot="props"
sortable>
{{ props.row.direction_display }}
</${b}-table-column>
<${b}-table-column field="handler_spec"
label="Handler Spec"
v-slot="props"
sortable>
{{ props.row.handler_spec }}
</${b}-table-column>
<${b}-table-column field="cmd"
label="Command"
v-slot="props"
sortable>
{{ props.row.command }} {{ props.row.subcommand }}
</${b}-table-column>
<${b}-table-column field="runas"
label="Default Runas"
v-slot="props"
sortable>
{{ props.row.default_runas }}
</${b}-table-column>
<${b}-table-column label="Actions"
v-slot="props">
<a href="#" class="grid-action"
@click.prevent="editHandler(props.row)">
% if request.use_oruga:
<o-icon icon="edit" />
% else:
<i class="fas fa-edit"></i>
% endif
Edit
</a>
</${b}-table-column>
<template slot="empty">
<section class="section">
<div class="content has-text-grey has-text-centered">
<p>
<b-icon
pack="fas"
icon="fas fa-sad-tear"
size="is-large">
</b-icon>
</p>
<p>Nothing here.</p>
</div>
</section>
</template>
</${b}-table>
<b-modal :active.sync="editHandlerShowDialog">
<div class="card">
<div class="card-content">
<b-field :label="editingHandlerDirection" horizontal expanded>
{{ editingHandlerHostTitle }} -> {{ editingHandlerLocalTitle }}
</b-field>
<b-field label="Handler Spec"
:type="editingHandlerSpec ? null : 'is-danger'">
<b-select v-model="editingHandlerSpec">
<option v-for="option in editingHandlerSpecOptions"
:key="option"
:value="option">
{{ option }}
</option>
</b-select>
</b-field>
<b-field grouped>
<b-field label="Command"
:type="editingHandlerCommand ? null : 'is-danger'">
<div class="level">
<div class="level-left">
<div class="level-item" style="margin-right: 0;">
bin/
</div>
<div class="level-item" style="margin-left: 0;">
<b-input v-model="editingHandlerCommand">
</b-input>
</div>
</div>
</div>
</b-field>
<b-field label="Subcommand"
:type="editingHandlerSubcommand ? null : 'is-danger'">
<b-input v-model="editingHandlerSubcommand">
</b-input>
</b-field>
<b-field label="Default Runas">
<b-input v-model="editingHandlerRunas">
</b-input>
</b-field>
</b-field>
<b-field grouped>
<b-button @click="editHandlerShowDialog = false"
class="control">
Cancel
</b-button>
<b-button type="is-primary"
class="control"
@click="updateHandler()"
:disabled="updateHandlerDisabled">
Update Handler
</b-button>
</b-field>
</div>
</div>
</b-modal>
</%def>
<%def name="modify_this_page_vars()">
${parent.modify_this_page_vars()}
<script type="text/javascript">
ThisPageData.handlersData = ${json.dumps(handlers_data)|n}
ThisPageData.editHandlerShowDialog = false
ThisPageData.editingHandler = null
ThisPageData.editingHandlerHostTitle = null
ThisPageData.editingHandlerLocalTitle = null
ThisPageData.editingHandlerDirection = 'import'
ThisPageData.editingHandlerSpec = null
ThisPageData.editingHandlerSpecOptions = []
ThisPageData.editingHandlerCommand = null
ThisPageData.editingHandlerSubcommand = null
ThisPageData.editingHandlerRunas = null
ThisPage.computed.updateHandlerDisabled = function() {
if (!this.editingHandlerSpec) {
return true
}
if (!this.editingHandlerCommand) {
return true
}
if (!this.editingHandlerSubcommand) {
return true
}
return false
}
ThisPage.methods.editHandler = function(row) {
this.editingHandler = row
this.editingHandlerHostTitle = row.host_title
this.editingHandlerLocalTitle = row.local_title
this.editingHandlerDirection = row.direction_display
this.editingHandlerSpec = row.handler_spec
this.editingHandlerSpecOptions = row.spec_options
this.editingHandlerCommand = row.command
this.editingHandlerSubcommand = row.subcommand
this.editingHandlerRunas = row.default_runas
this.editHandlerShowDialog = true
}
ThisPage.methods.updateHandler = function() {
let row = this.editingHandler
row.handler_spec = this.editingHandlerSpec
row.command = this.editingHandlerCommand
row.subcommand = this.editingHandlerSubcommand
row.default_runas = this.editingHandlerRunas
this.settingsNeedSaved = true
this.editHandlerShowDialog = false
}
</script>
</%def>
${parent.body()}