fix automation manager UI. Modify agent/check/task table alert checkboxes to show if it is managed by an alert template

This commit is contained in:
sadnub
2021-02-17 13:25:01 -05:00
parent bdc39ad4ec
commit e8b95362af
13 changed files with 438 additions and 197 deletions

View File

@@ -56,6 +56,20 @@ class AgentTableSerializer(serializers.ModelSerializer):
logged_username = serializers.SerializerMethodField()
italic = serializers.SerializerMethodField()
policy = serializers.ReadOnlyField(source="policy.id")
alert_template = serializers.SerializerMethodField()
def get_alert_template(self, obj):
alert_template = obj.get_alert_template()
if not alert_template:
return None
else:
return {
"name": alert_template.name,
"always_email": alert_template.agent_always_email,
"always_text": alert_template.agent_always_text,
"always_alert": alert_template.agent_always_alert,
}
def get_pending_actions(self, obj):
return obj.pendingactions.filter(status="pending").count()
@@ -83,6 +97,7 @@ class AgentTableSerializer(serializers.ModelSerializer):
model = Agent
fields = [
"id",
"alert_template",
"hostname",
"agent_id",
"site_name",

View File

@@ -0,0 +1,72 @@
# Generated by Django 3.1.6 on 2021-02-17 17:36
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('alerts', '0005_auto_20210212_1745'),
]
operations = [
migrations.RemoveField(
model_name='alerttemplate',
name='agent_include_desktops',
),
migrations.AddField(
model_name='alerttemplate',
name='exclude_servers',
field=models.BooleanField(blank=True, default=False, null=True),
),
migrations.AddField(
model_name='alerttemplate',
name='exclude_workstations',
field=models.BooleanField(blank=True, default=False, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='agent_always_alert',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='agent_always_email',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='agent_always_text',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='check_always_alert',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='check_always_email',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='check_always_text',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='task_always_alert',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='task_always_email',
field=models.BooleanField(blank=True, default=None, null=True),
),
migrations.AlterField(
model_name='alerttemplate',
name='task_always_text',
field=models.BooleanField(blank=True, default=None, null=True),
),
]

View File

@@ -170,10 +170,9 @@ class AlertTemplate(models.Model):
# agent alert settings
agent_email_on_resolved = BooleanField(null=True, blank=True, default=False)
agent_text_on_resolved = BooleanField(null=True, blank=True, default=False)
agent_include_desktops = BooleanField(null=True, blank=True, default=False)
agent_always_email = BooleanField(null=True, blank=True, default=False)
agent_always_text = BooleanField(null=True, blank=True, default=False)
agent_always_alert = BooleanField(null=True, blank=True, default=False)
agent_always_email = BooleanField(null=True, blank=True, default=None)
agent_always_text = BooleanField(null=True, blank=True, default=None)
agent_always_alert = BooleanField(null=True, blank=True, default=None)
agent_periodic_alert_days = PositiveIntegerField(blank=True, null=True, default=0)
# check alert settings
@@ -194,9 +193,9 @@ class AlertTemplate(models.Model):
)
check_email_on_resolved = BooleanField(null=True, blank=True, default=False)
check_text_on_resolved = BooleanField(null=True, blank=True, default=False)
check_always_email = BooleanField(null=True, blank=True, default=False)
check_always_text = BooleanField(null=True, blank=True, default=False)
check_always_alert = BooleanField(null=True, blank=True, default=False)
check_always_email = BooleanField(null=True, blank=True, default=None)
check_always_text = BooleanField(null=True, blank=True, default=None)
check_always_alert = BooleanField(null=True, blank=True, default=None)
check_periodic_alert_days = PositiveIntegerField(blank=True, null=True, default=0)
# task alert settings
@@ -217,11 +216,15 @@ class AlertTemplate(models.Model):
)
task_email_on_resolved = BooleanField(null=True, blank=True, default=False)
task_text_on_resolved = BooleanField(null=True, blank=True, default=False)
task_always_email = BooleanField(null=True, blank=True, default=False)
task_always_text = BooleanField(null=True, blank=True, default=False)
task_always_alert = BooleanField(null=True, blank=True, default=False)
task_always_email = BooleanField(null=True, blank=True, default=None)
task_always_text = BooleanField(null=True, blank=True, default=None)
task_always_alert = BooleanField(null=True, blank=True, default=None)
task_periodic_alert_days = PositiveIntegerField(blank=True, null=True, default=0)
# exclusion settings
exclude_workstations = BooleanField(null=True, blank=True, default=False)
exclude_servers = BooleanField(null=True, blank=True, default=False)
excluded_sites = models.ManyToManyField(
"clients.Site", related_name="alert_exclusions", blank=True
)

View File

@@ -14,6 +14,24 @@ class TaskSerializer(serializers.ModelSerializer):
assigned_check = CheckSerializer(read_only=True)
schedule = serializers.ReadOnlyField()
last_run = serializers.ReadOnlyField(source="last_run_as_timezone")
alert_template = serializers.SerializerMethodField()
def get_alert_template(self, obj):
if obj.agent:
alert_template = obj.agent.get_alert_template()
else:
alert_template = None
if not alert_template:
return None
else:
return {
"name": alert_template.name,
"always_email": alert_template.task_always_email,
"always_text": alert_template.task_always_text,
"always_alert": alert_template.task_always_alert,
}
class Meta:
model = AutomatedTask

View File

@@ -20,6 +20,23 @@ class CheckSerializer(serializers.ModelSerializer):
assigned_task = serializers.SerializerMethodField()
last_run = serializers.ReadOnlyField(source="last_run_as_timezone")
history_info = serializers.ReadOnlyField()
alert_template = serializers.SerializerMethodField()
def get_alert_template(self, obj):
if obj.agent:
alert_template = obj.agent.get_alert_template()
else:
alert_template = None
if not alert_template:
return None
else:
return {
"name": alert_template.name,
"always_email": alert_template.check_always_email,
"always_text": alert_template.check_always_text,
"always_alert": alert_template.check_always_alert,
}
## Change to return only array of tasks after 9/25/2020
def get_assigned_task(self, obj):

View File

@@ -253,6 +253,16 @@
</q-menu>
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_text !== null"
:value="props.row.alert_template.always_text"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="overdueAlert('text', props.row.id, props.row.overdue_text_alert)"
v-model="props.row.overdue_text_alert"
@@ -260,6 +270,16 @@
</q-td>
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_email !== null"
:value="props.row.alert_template.always_email"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="overdueAlert('email', props.row.id, props.row.overdue_email_alert)"
v-model="props.row.overdue_email_alert"
@@ -267,6 +287,16 @@
</q-td>
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_alert !== null"
:value="props.row.alert_template.always_alert"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="overdueAlert('dashboard', props.row.id, props.row.overdue_dashboard_alert)"
v-model="props.row.overdue_dashboard_alert"
@@ -369,7 +399,6 @@
</template>
<script>
import axios from "axios";
import { notifySuccessConfig, notifyErrorConfig } from "@/mixins/mixins";
import mixins from "@/mixins/mixins";
import { mapGetters } from "vuex";

View File

@@ -109,6 +109,16 @@
<!-- text alert -->
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_text !== null"
:value="props.row.alert_template.always_text"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="taskAlert(props.row.id, 'Text', props.row.text_alert, props.row.managed_by_policy)"
v-model="props.row.text_alert"
@@ -118,6 +128,16 @@
<!-- email alert -->
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_email !== null"
:value="props.row.alert_template.always_email"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="taskAlert(props.row.id, 'Email', props.row.email_alert, props.row.managed_by_policy)"
v-model="props.row.email_alert"
@@ -127,6 +147,16 @@
<!-- dashboard alert -->
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_alert !== null"
:value="props.row.alert_template.always_alert"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="taskAlert(props.row.id, 'Dashboard', props.row.dashboard_alert, props.row.managed_by_policy)"
v-model="props.row.dashboard_alert"

View File

@@ -133,6 +133,16 @@
<!-- text alert -->
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_text !== null"
:value="props.row.alert_template.always_text"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="checkAlert(props.row.id, 'Text', props.row.text_alert, props.row.managed_by_policy)"
v-model="props.row.text_alert"
@@ -142,6 +152,16 @@
<!-- email alert -->
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_email !== null"
:value="props.row.alert_template.always_email"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="checkAlert(props.row.id, 'Email', props.row.email_alert, props.row.managed_by_policy)"
v-model="props.row.email_alert"
@@ -151,6 +171,16 @@
<!-- dashboard alert -->
<q-td>
<q-checkbox
v-if="props.row.alert_template && props.row.alert_template.always_alert !== null"
:value="props.row.alert_template.always_alert"
disable
dense
>
<q-tooltip> Setting is overidden by alert template: {{ props.row.alert_template.name }} </q-tooltip>
</q-checkbox>
<q-checkbox
v-else
dense
@input="checkAlert(props.row.id, 'Dashboard', props.row.dashboard_alert, props.row.managed_by_policy)"
v-model="props.row.dashboard_alert"

View File

@@ -9,7 +9,7 @@
<q-tooltip content-class="bg-white text-primary">Close</q-tooltip>
</q-btn>
</q-bar>
<q-card-section style="min-height: 35vh; max-height: 35vh">
<q-card-section>
<div class="q-gutter-sm">
<q-btn label="New" dense flat push unelevated no-caps icon="add" @click="showAddPolicyForm" />
<q-btn
@@ -45,154 +45,156 @@
@click="showPolicyOverview"
/>
</div>
<q-table
:table-class="{ 'table-bgcolor': !$q.dark.isActive, 'table-bgcolor-dark': $q.dark.isActive }"
class="tabs-tbl-sticky"
:data="policies"
:columns="columns"
:pagination.sync="pagination"
:rows-per-page-options="[0]"
dense
row-key="id"
binary-state-sort
hide-pagination
virtual-scroll
no-data-label="No Policies"
>
<!-- header slots -->
<template v-slot:header-cell-active="props">
<q-th :props="props" auto-width>
<q-icon name="power_settings_new" size="1.5em">
<q-tooltip>Enable Policy</q-tooltip>
</q-icon>
</q-th>
</template>
<template v-slot:header-cell-enforced="props">
<q-th :props="props" auto-width>
<q-icon name="security" size="1.5em">
<q-tooltip>Enforce Policy (Will override Agent tasks/checks)</q-tooltip>
</q-icon>
</q-th>
</template>
<!-- body slots -->
<template v-slot:body="props">
<q-tr
:props="props"
class="cursor-pointer"
:class="rowSelectedClass(props.row.id, selectedPolicy)"
@click="selectedPolicy = props.row"
@contextmenu="selectedPolicy = props.row"
@dblclick="showEditPolicyForm(props.row)"
>
<!-- context menu -->
<q-menu context-menu>
<q-list dense style="min-width: 200px">
<q-item clickable v-close-popup @click="showEditPolicyForm(props.row)">
<q-item-section side>
<q-icon name="edit" />
</q-item-section>
<q-item-section>Edit</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="showCopyPolicyForm(props.row)">
<q-item-section side>
<q-icon name="content_copy" />
</q-item-section>
<q-item-section>Copy</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="deletePolicy(props.row)">
<q-item-section side>
<q-icon name="delete" />
</q-item-section>
<q-item-section>Delete</q-item-section>
</q-item>
<q-separator></q-separator>
<q-item clickable v-close-popup @click="showRelations(props.row)">
<q-item-section side>
<q-icon name="account_tree" />
</q-item-section>
<q-item-section>Show Relations</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="showPatchPolicyForm(props.row)">
<q-item-section side>
<q-icon name="system_update" />
</q-item-section>
<q-item-section>{{ patchPolicyText(props.row) }}</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="showAlertTemplateAdd(props.row)">
<q-item-section side>
<q-icon name="warning" />
</q-item-section>
<q-item-section>{{ alertTemplateText(props.row) }}</q-item-section>
</q-item>
<q-separator></q-separator>
<q-item clickable v-close-popup>
<q-item-section>Close</q-item-section>
</q-item>
</q-list>
</q-menu>
<!-- enabled checkbox -->
<q-td>
<q-checkbox dense @input="toggleCheckbox(props.row, 'Active')" v-model="props.row.active" />
</q-td>
<!-- enforced checkbox -->
<q-td>
<q-checkbox dense @input="toggleCheckbox(props.row, 'Enforced')" v-model="props.row.enforced" />
</q-td>
<q-td>
{{ props.row.name }}
<q-chip v-if="props.row.default_server_policy" color="primary" text-color="white" size="sm"
>Default Server</q-chip
>
<q-chip v-if="props.row.default_workstation_policy" color="primary" text-color="white" size="sm"
>Default Workstation</q-chip
>
</q-td>
<q-td>{{ props.row.desc }}</q-td>
<q-td>
<span
style="cursor: pointer; text-decoration: underline"
class="text-primary"
@click="showRelations(props.row)"
>{{ `Show Relations (${props.row.agents_count})` }}</span
>
</q-td>
<q-td>
<span
style="cursor: pointer; text-decoration: underline"
class="text-primary"
@click="showPatchPolicyForm(props.row)"
>{{ patchPolicyText(props.row) }}</span
>
</q-td>
<q-td>
<span
style="cursor: pointer; text-decoration: underline"
class="text-primary"
@click="showAlertTemplateAdd(props.row)"
>{{ alertTemplateText(props.row) }}</span
>
</q-td>
<q-td>
<q-icon name="content_copy" size="1.5em" @click="showCopyPolicyForm(props.row)">
<q-tooltip>Create a copy of this policy</q-tooltip>
<div class="scroll" style="min-height: 35vh; max-height: 35vh">
<q-table
:table-class="{ 'table-bgcolor': !$q.dark.isActive, 'table-bgcolor-dark': $q.dark.isActive }"
class="tabs-tbl-sticky"
:data="policies"
:columns="columns"
:pagination.sync="pagination"
:rows-per-page-options="[0]"
dense
row-key="id"
binary-state-sort
hide-pagination
virtual-scroll
no-data-label="No Policies"
>
<!-- header slots -->
<template v-slot:header-cell-active="props">
<q-th :props="props" auto-width>
<q-icon name="power_settings_new" size="1.5em">
<q-tooltip>Enable Policy</q-tooltip>
</q-icon>
</q-td>
</q-tr>
</template>
</q-table>
</q-th>
</template>
<template v-slot:header-cell-enforced="props">
<q-th :props="props" auto-width>
<q-icon name="security" size="1.5em">
<q-tooltip>Enforce Policy (Will override Agent tasks/checks)</q-tooltip>
</q-icon>
</q-th>
</template>
<!-- body slots -->
<template v-slot:body="props">
<q-tr
:props="props"
class="cursor-pointer"
:class="rowSelectedClass(props.row.id, selectedPolicy)"
@click="selectedPolicy = props.row"
@contextmenu="selectedPolicy = props.row"
@dblclick="showEditPolicyForm(props.row)"
>
<!-- context menu -->
<q-menu context-menu>
<q-list dense style="min-width: 200px">
<q-item clickable v-close-popup @click="showEditPolicyForm(props.row)">
<q-item-section side>
<q-icon name="edit" />
</q-item-section>
<q-item-section>Edit</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="showCopyPolicyForm(props.row)">
<q-item-section side>
<q-icon name="content_copy" />
</q-item-section>
<q-item-section>Copy</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="deletePolicy(props.row)">
<q-item-section side>
<q-icon name="delete" />
</q-item-section>
<q-item-section>Delete</q-item-section>
</q-item>
<q-separator></q-separator>
<q-item clickable v-close-popup @click="showRelations(props.row)">
<q-item-section side>
<q-icon name="account_tree" />
</q-item-section>
<q-item-section>Show Relations</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="showPatchPolicyForm(props.row)">
<q-item-section side>
<q-icon name="system_update" />
</q-item-section>
<q-item-section>{{ patchPolicyText(props.row) }}</q-item-section>
</q-item>
<q-item clickable v-close-popup @click="showAlertTemplateAdd(props.row)">
<q-item-section side>
<q-icon name="warning" />
</q-item-section>
<q-item-section>{{ alertTemplateText(props.row) }}</q-item-section>
</q-item>
<q-separator></q-separator>
<q-item clickable v-close-popup>
<q-item-section>Close</q-item-section>
</q-item>
</q-list>
</q-menu>
<!-- enabled checkbox -->
<q-td>
<q-checkbox dense @input="toggleCheckbox(props.row, 'Active')" v-model="props.row.active" />
</q-td>
<!-- enforced checkbox -->
<q-td>
<q-checkbox dense @input="toggleCheckbox(props.row, 'Enforced')" v-model="props.row.enforced" />
</q-td>
<q-td>
{{ props.row.name }}
<q-chip v-if="props.row.default_server_policy" color="primary" text-color="white" size="sm"
>Default Server</q-chip
>
<q-chip v-if="props.row.default_workstation_policy" color="primary" text-color="white" size="sm"
>Default Workstation</q-chip
>
</q-td>
<q-td>{{ props.row.desc }}</q-td>
<q-td>
<span
style="cursor: pointer; text-decoration: underline"
class="text-primary"
@click="showRelations(props.row)"
>{{ `Show Relations (${props.row.agents_count})` }}</span
>
</q-td>
<q-td>
<span
style="cursor: pointer; text-decoration: underline"
class="text-primary"
@click="showPatchPolicyForm(props.row)"
>{{ patchPolicyText(props.row) }}</span
>
</q-td>
<q-td>
<span
style="cursor: pointer; text-decoration: underline"
class="text-primary"
@click="showAlertTemplateAdd(props.row)"
>{{ alertTemplateText(props.row) }}</span
>
</q-td>
<q-td>
<q-icon name="content_copy" size="1.5em" @click="showCopyPolicyForm(props.row)">
<q-tooltip>Create a copy of this policy</q-tooltip>
</q-icon>
</q-td>
</q-tr>
</template>
</q-table>
</div>
</q-card-section>
<q-card-section style="min-height: 35vh; max-height: 35vh">
<q-card-section>
<q-tabs
v-model="subtab"
dense
@@ -210,10 +212,14 @@
<q-separator />
<q-tab-panels v-model="subtab" :animated="false">
<q-tab-panel name="checks">
<PolicyChecksTab v-if="!!selectedPolicy" :selectedPolicy="selectedPolicy.id" />
<div class="scroll" style="min-height: 25vh; max-height: 25vh">
<PolicyChecksTab v-if="!!selectedPolicy" :selectedPolicy="selectedPolicy.id" />
</div>
</q-tab-panel>
<q-tab-panel name="tasks">
<PolicyAutomatedTasksTab v-if="!!selectedPolicy" :selectedPolicy="selectedPolicy.id" />
<div class="scroll" style="min-height: 25vh; max-height: 25vh">
<PolicyAutomatedTasksTab v-if="!!selectedPolicy" :selectedPolicy="selectedPolicy.id" />
</div>
</q-tab-panel>
</q-tab-panels>
</q-card-section>

View File

@@ -13,7 +13,6 @@
<q-btn v-if="!!selectedPolicy" dense flat push @click="getTasks" icon="refresh" />
<template>
<q-table
style="max-height: 35vh"
:table-class="{ 'table-bgcolor': !$q.dark.isActive, 'table-bgcolor-dark': $q.dark.isActive }"
class="tabs-tbl-sticky"
:data="tasks"

View File

@@ -52,7 +52,6 @@
<q-btn v-if="!!selectedPolicy" dense flat push @click="getChecks" icon="refresh" />
<template>
<q-table
style="max-height: 35vh"
:table-class="{ 'table-bgcolor': !$q.dark.isActive, 'table-bgcolor-dark': $q.dark.isActive }"
class="tabs-tbl-sticky"
:data="checks"

View File

@@ -63,6 +63,11 @@
/>
</q-card-section>
<q-card-section>
<q-checkbox v-model="localTemplate.exclude_workstations" label="Exclude Workstations" />
<q-checkbox v-model="localTemplate.exclude_servers" label="Exclude Servers" />
</q-card-section>
<q-card-actions align="right">
<q-btn dense flat label="Cancel" v-close-popup />
<q-btn dense flat label="Save" color="primary" type="submit" />
@@ -84,6 +89,8 @@ export default {
excluded_clients: [],
excluded_sites: [],
excluded_agents: [],
exclude_servers: false,
exclude_workstations: false,
},
clientOptions: [],
siteOptions: [],

View File

@@ -214,33 +214,32 @@
<div class="col-4"></div>
<div class="col-4">
<q-toggle v-model="template.agent_always_email" color="green" left-label>
<q-toggle v-model="template.agent_always_email" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always email<q-tooltip>Overrides the email alert option on the agent</q-tooltip></span
>Always email<q-tooltip
>Overrides the email alert option on the agent if configured. Default: Not Configured</q-tooltip
></span
>
</q-toggle>
</div>
<div class="col-4">
<q-toggle v-model="template.agent_always_text" color="green" left-label>
<q-toggle v-model="template.agent_always_text" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always sms<q-tooltip>Overrides the sms alert option on the agent</q-tooltip></span
>Always sms<q-tooltip
>Overrides the sms alert option on the agent if configured. Default: Not Configured</q-tooltip
></span
>
</q-toggle>
</div>
<div class="col-4">
<q-toggle v-model="template.agent_always_alert" color="green" left-label>
<q-toggle v-model="template.agent_always_alert" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always dashboard alert<q-tooltip>Overrides the dashboard alert option on the agents</q-tooltip></span
>
</q-toggle>
</div>
<div class="col-12">
<q-toggle v-model="template.agent_include_desktops" color="green" left-label>
<span style="text-decoration: underline; cursor: help"
>Include desktops<q-tooltip>Includes desktop agent's offline alerts</q-tooltip></span
>Always dashboard alert<q-tooltip
>Overrides the dashboard alert option on the agents if configured. Default: Not
Configured</q-tooltip
></span
>
</q-toggle>
</div>
@@ -337,26 +336,35 @@
<div class="col-4"></div>
<div class="col-4">
<q-toggle v-model="template.check_always_email" color="green" left-label>
<q-toggle v-model="template.check_always_email" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always email <q-tooltip>Overrides the email alert setting on checks</q-tooltip></span
>Always email
<q-tooltip
>Overrides the email alert setting on checks if configured. Default: Not Configured</q-tooltip
></span
>
</q-toggle>
</div>
<div class="col-4">
<q-toggle v-model="template.check_always_text" color="green" left-label>
<q-toggle v-model="template.check_always_text" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always sms <q-tooltip>Overrides the SMS alert setting on checks</q-tooltip></span
>Always sms
<q-tooltip
>Overrides the SMS alert setting on checks if configured. Default: Not Configured</q-tooltip
></span
>
</q-toggle>
</div>
<div class="col-4">
<q-toggle v-model="template.check_always_alert" color="green" left-label>
<q-toggle v-model="template.check_always_alert" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always dashboard alert
<q-tooltip>Overrides the dashboard alert option on the agents</q-tooltip></span
<q-tooltip
>Overrides the dashboard alert option on the agents if configured. Default: Not
Configured</q-tooltip
></span
>
</q-toggle>
</div>
@@ -453,25 +461,34 @@
<div class="col-4"></div>
<div class="col-4">
<q-toggle v-model="template.task_always_email" color="green" left-label>
<q-toggle v-model="template.task_always_email" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always email <q-tooltip>Overrides the email alert option on the task</q-tooltip></span
>Always email
<q-tooltip
>Overrides the email alert option on the task if configured. Default: Not Configured</q-tooltip
></span
>
</q-toggle>
</div>
<div class="col-4">
<q-toggle v-model="template.task_always_text" color="green" left-label>
<q-toggle v-model="template.task_always_text" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always sms <q-tooltip>Overrides the SMS alert option on the task</q-tooltip></span
>Always sms
<q-tooltip
>Overrides the SMS alert option on the task if configured. Default: Not Configured</q-tooltip
></span
>
</q-toggle>
</div>
<div class="col-4">
<q-toggle v-model="template.task_always_alert" color="green" left-label>
<q-toggle v-model="template.task_always_alert" color="green" left-label toggle-indeterminate>
<span style="text-decoration: underline; cursor: help"
>Always dashboard alert <q-tooltip>Overrides the dashboard alert option on the task</q-tooltip></span
>Always dashboard alert
<q-tooltip
>Overrides the dashboard alert option on the task if configured. Default: Not Configured</q-tooltip
></span
>
</q-toggle>
</div>
@@ -519,30 +536,29 @@ export default {
email_recipients: [],
email_from: "",
text_recipients: [],
agent_include_desktops: false,
agent_email_on_resolved: false,
agent_text_on_resolved: false,
agent_always_email: false,
agent_always_text: false,
agent_always_alert: false,
agent_always_email: null,
agent_always_text: null,
agent_always_alert: null,
agent_periodic_alert_days: 0,
check_email_alert_severity: [],
check_text_alert_severity: [],
check_dashboard_alert_severity: [],
check_email_on_resolved: false,
check_text_on_resolved: false,
check_always_email: false,
check_always_text: false,
check_always_alert: false,
check_always_email: null,
check_always_text: null,
check_always_alert: null,
check_periodic_alert_days: 0,
task_email_alert_severity: [],
task_text_alert_severity: [],
task_dashboard_alert_severity: [],
task_email_on_resolved: false,
task_text_on_resolved: false,
task_always_email: false,
task_always_text: false,
task_always_alert: false,
task_always_email: null,
task_always_text: null,
task_always_alert: null,
task_periodic_alert_days: 0,
},
scriptOptions: [],