{% extends "admin/change_form.html" %}
{% load static %}
{# Minimal compatibility template. Prefer the admin/silque_notifications/... one.#}
{% block extrahead %}
{{ block.super }}
{% endblock %}
}
}
} else {
Swal.fire({
icon: 'error',
title: 'Invalid Trigger Event!',
text: "A valid option must be selected for the 'Send Alert On' field."
})
}
} else {
Swal.fire({
icon: 'error',
title: 'No model selected!',
text: 'A model must be selected before saving a notification.'
})
}
} else {
Swal.fire({
icon: 'error',
title: 'Title field empty!',
text: 'You need to populate the title field before saving a notification.'
})
}
} else {
Swal.fire({
icon: 'error',
title: 'Invalid Channel!',
text: 'You have selected an invalid channel. Must be one of "Email", "SMS" or "Whatsapp".'
})
}
if (Object.keys(valid_recipients).length > 0) {
_this.is_loading = true
$.ajax('{% url "silque_notifications:save_notification" %}', {
type: "POST",
data: {
"csrfmiddlewaretoken": _this.csrfmiddlewaretoken,
"is_active": _this.is_active,
"doc_id": _this.doc_id,
"title": _this.title,
"message": _this.message,
"channel": _this.channel,
"valid_recipients": JSON.stringify(valid_recipients),
"model": _this.model,
"send_alert_on": _this.send_alert_on,
"value_change_field": _this.value_change_field,
"date_field": _this.date_field,
"alert_days": _this.alert_days,
"conditions": _this.conditions,
},
success: function(response) {
_this.is_loading = false
if (response.status == "S") {
if (_this.channel == 'E') {
_this.email_recipients = response.valid_recipients;
} else {
_this.number_recipients = response.valid_recipients;
}
_this.doc_id = response.doc_id
_this.is_active = response.is_active
Swal.fire({
icon: 'success',
title: 'Notification has been created/updated.'
})
} else {
Swal.fire({
icon: 'error',
title: response.error,
text: response.message
})
}
},
error: function(err) {
_this.is_loading = false
Swal.fire({
icon: 'error',
title: 'An unknown error has occured!',
text: 'Check console for debugging or contact support.'
})
console.log(err)
}
})
}
},
removeRecipient(_type, recipient_id) {
let _this = this;
if (_type == 'E') {
delete _this.email_recipients[recipient_id]
} else {
delete _this.number_recipients[recipient_id]
}
},
updateFields() {
let _this = this;
if (_this.send_alert_on == 'V') {
_this.is_loading = true
$.ajax('{% url "silque_notifications:get_model_fields" %}', {
type: "POST",
data: {
"csrfmiddlewaretoken": _this.csrfmiddlewaretoken,
"model": _this.model
},
success: function(response) {
_this.is_loading = false
if (response.status == "S") {
_this.available_fields = response.fields
_this.value_change_field = ""
} else {
_this.available_fields = []
Swal.fire({
icon: 'error',
title: response.error,
text: response.message
})
}
},
error: function(err) {
_this.is_loading = false
Swal.fire({
icon: 'error',
title: 'An unknown error has occured!',
text: 'Check console for debugging or contact support.'
})
console.log(err)
}
})
} else if(_this.send_alert_on == "B" || _this.send_alert_on == "A") {
_this.is_loading = true
$.ajax('{% url "silque_notifications:get_model_date_fields" %}', {
type: "POST",
data: {
"csrfmiddlewaretoken": _this.csrfmiddlewaretoken,
"model": _this.model
},
success: function(response) {
_this.is_loading = false
if (response.status == "S") {
_this.available_date_fields = response.fields
_this.date_field = ""
} else {
_this.available_date_fields = []
Swal.fire({
icon: 'error',
title: response.error,
text: response.message
})
}
},
error: function(err) {
_this.is_loading = false
Swal.fire({
icon: 'error',
title: 'An unknown error has occured!',
text: 'Check console for debugging or contact support.'
})
console.log(err)
}
})
}
},
updateRelationalRecipients(for_email) {
let _this = this;
_this.is_loading = true
$.ajax('{% url "silque_notifications:get_model_relational_recipients" %}', {
type: "POST",
data: {
"csrfmiddlewaretoken": _this.csrfmiddlewaretoken,
"model": _this.model,
"for_email": for_email
},
success: function(response) {
_this.is_loading = false
if (response.status == "S") {
if (for_email) {
_this.relational_email_recipients = response.fields
} else {
_this.relational_number_recipients = response.fields
}
} else {
if (for_email) {
_this.relational_email_recipients = []
} else {
_this.relational_number_recipients = []
}
if (!response.empty) {
Swal.fire({
icon: 'error',
title: response.error,
text: response.message
})
}
}
},
error: function(err) {
_this.is_loading = false
Swal.fire({
icon: 'error',
title: 'An unknown error has occured!',
text: 'Check console for debugging or contact support.'
})
console.log(err)
}
})
}
}
}
const form_app = Vue.createApp(form_manager);
form_app.directive('selectit', (el, binding, vnode) => {
$(el).select2({
placeholder: 'Select an option',
tags: binding.value
}).on('select2:select', function (e) {
$(el)[0].dispatchEvent(new Event('change'));
});
})
form_app.directive('conditions', (el) => {
var textareas = $(el).find('textarea')
if (textareas.length == 2) {
var countarea = $(textareas[0])
var inputarea = $(textareas[1])
new ResizeObserver(() => {
countarea[0].style.height = inputarea[0].style.height;
}).observe(inputarea[0])
inputarea.on('input', function() {
var line_count = inputarea.val().split("\n").length;
countarea.val([...Array(line_count).keys()].map(i => i + 1).join('.\n'))
inputarea[0].style.height = inputarea[0].scrollHeight + 'px';
})
}
})
form_app.mount("#{{ opts.model_name }}_form")
})
{% endblock %}