// ==UserScript==
// @name WME SlackNotifier
// @description Posts lock, unlock and closure requests to waze slack. Based on original by davidakachaos
// @namespace https://gf.qytechs.cn/users/374267-abel-vieira
// @author AbelOVieira ([email protected])
// @grant none
// @grant GM_info
// @version 2024.01.23
// @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor.*$/
// @exclude https://www.waze.com/user/*editor/*
// @exclude https://www.waze.com/*/user/*editor/*
// @license Creative Commons Attribution-ShareAlike 4.0 International License
// ==/UserScript==
var WME_SN_Version = GM_info.script.version,
WME_SN_Name = GM_info.script.name,
WME_SN_UA = [],
WME_SN_user=null,
WME_SN_country=null,
WME_SN_PromptDates=false,
WME_SN_CS={
PO: {
SlackURL:"https://wazept.slack.com/messages/C3NMDCP34",
LockURL:"https://hooks.slack.com/services/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", //#mapa
UnLockURL:"https://hooks.slack.com/services/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", //#mapa
ClosureURL:"https://hooks.slack.com/services/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", //#cortes-eventos-alertas
1:":one_1:",
2:":two_1:",
3:":three_1:",
4:":four_1:",
5:":five_1:",
6:":six_1:",
7:":seven:",
8:":eight:",
9:":nine:",
0:":zero:",
SNDivlabel:'<i class=\"fa fa-slack\"></i> Slack do WazePT',
BTNLock:String.fromCodePoint(0x1F510)+' Solicitar bloqueio',
BTNUnLock:String.fromCodePoint(0x1F510)+' Solicitar desbloqueio',
BTNClosure:String.fromCodePoint(0x1F6A7)+' Comunicar corte de estrada',
btnSend: "Enviar",
OptToLock: "... para nível: ",
UnlockReasonMessage: "Para melhor avaliarmos o teu pedido de desbloqueio, por favor, indica-nos o(s) motivo(s): ",
UnlockReasons: {
'join_segments': "Ligar segmento(s)",
'fix_address': "Corrigir endereço",
'fix_arrows': "Corrigir setas / direcções",
'fix_speed': "Corrigir velocidade",
'geometry': "Ajustar a geometria da via",
'fix_segment_type': "Alterar o tipo de via",
'fix_segment_level': "Alterar elevação da via",
'restrictions': "Criar / Alterar restrições",
'other': "Outros (especifico abaixo)",
},
ClosureReasonMessage: "Para melhor avaliarmos o teu pedido de corte de estrada, por favor, indica-nos o(s) motivo(s), e se possível a duração: ",
ClosureReasons: {
'construction': "Obras na via",
'event': "Evento",
'fire': "Incêndio",
'accident': "Acidente",
'other': "Outros (especifico abaixo)",
},
PTitleLock:":closed_lock_with_key:",
PTitleUnLock:":unlock:",
PTitleClosure:":construction:",
PTitleSeparator:"→",
PFallbackLock:"Bloqueio solicitado no mapa: ",
PFallbackUnLock:"Desloqueio solicitado no mapa: ",
PFallbackClosure:"Corte de estrada solicitado no mapa: ",
PColorLock:"#404e70",
PColorUnLock:"#2a65fa",
PColorClosure:"#f55702",
OkSentLock:"<p><b>O pedido de bloqueio foi enviado com sucesso para a nossa comunidade,</b><br>e o mesmo vai agora ser avaliado pelos editores</p><p>Para saberes mais, convidamos-te a juntar ao nosso slack em <a href=\"https://wazept.slack.com\" target=\"_black\">https://wazept.slack.com</a>",
OkSentUnLock:"<p><b>O pedido de desbloqueio foi enviado com sucesso para a nossa comunidade,</b><br>e o mesmo vai agora ser avaliado pelos editores, pelo que terás de aguardar pela revisão...</p><p>Para saberes mais, convidamos-te a juntar ao nosso slack em <a href=\"https://wazept.slack.com\" target=\"_black\">https://wazept.slack.com</a>",
OkSentClosure:"<p><b>O pedido de corte de estrada foi enviado com sucesso para a nossa comunidade,</b><br>e o mesmo vai agora ser avaliado pelos editores</p><p>Para saberes mais, convidamos-te a juntar ao nosso slack em <a href=\"https://wazept.slack.com\" target=\"_black\">https://wazept.slack.com</a>",
CancelSent:"<p>O pedido foi cancelado!</p>",
StartDate:"<i class=\"fa fa-calendar\"></i> Data de início",
EndDate:"<i class=\"fa fa-calendar\"></i> Data de Fim",
}
};
function initUnlock(e) {
log('initUnlock()');
if (typeof W === 'undefined' ||
typeof W.loginManager === 'undefined') {
setTimeout(initUnlock, 100);
return;
}
if (typeof I18n === 'undefined') {
log('No internationalisation object found yet, snoozing');
setTimeout(initUnlock, 300);
return;
}
if (!W.loginManager.user) {
log('Not logedIn '+W.loginManager);
setTimeout(initUnlock, 3000);
return;
}
if (typeof W.loginManager.user === 'undefined' ||
typeof W.loginManager.user.attributes.areas === 'undefined') {
log('Waiting for user areas....');
setTimeout(initUnlock, 300);
return;
}
log('Initalizing settings...');
initSettings();
}
function initSettings() {
log('initSettings()');
WME_SN_user=W.loginManager.user.attributes.userName;
var prefsTab = document.querySelector('#sidepanel-prefs');
if (!prefsTab) {
log('No settings tab found yet, snoozing');
setTimeout(initSettings, 400);
return;
}
if(W.loginManager.user.attributes.areas) {
log('registering selection changed handler');
W.selectionManager.events.register('selectionchanged', null, selectedFeature);
//getUserAreas();
}
}
function postLockToSlack(locked_to){
let place = $('.location-info').text();
let perma = getPermalink();
let locked = getLockedAt();
let user_level = 1 + W.loginManager.getUserRank();
let reason = '';
let payloadnew = {
"attachments": [
{
"color": WME_SN_CS[WME_SN_country].PColorLock,
"fallback": "Novo pedido de bloqueio de " + locked + " para " + locked_to,
"blocks": [
{
"type": "section",
"text":
{
"type": "mrkdwn",
"text": WME_SN_CS[WME_SN_country].PTitleLock + " " + WME_SN_CS[WME_SN_country][locked]+" "+WME_SN_CS[WME_SN_country].PTitleSeparator+" "+WME_SN_CS[WME_SN_country][locked_to] + " | " + place + " | <"+perma+"|PL> - <https://www.waze.com/pt-PT/user/editor/"+WME_SN_user+"|"+WME_SN_user+" ("+user_level+")>"
}
}
]
}
]
}
let posting = $.post(WME_SN_CS[WME_SN_country].LockURL, JSON.stringify(payloadnew) );
posting.done(function(data){
showMessage('success',WME_SN_CS[WME_SN_country].OkSentLock);
});
}
function postUnlockToSlack(reason){
let place = $('.location-info').text();
let perma = getPermalink();
let locked = getLockedAt();
let user_level = 1 + W.loginManager.getUserRank();
let payloadnew = {
"attachments": [
{
"color": WME_SN_CS[WME_SN_country].PColorUnLock,
"fallback": "Novo pedido de desbloqueio de " + locked + " para " + user_level,
"blocks": [
{
"type": "section",
"text":
{
"type": "mrkdwn",
"text": WME_SN_CS[WME_SN_country].PTitleLock + " " + WME_SN_CS[WME_SN_country][locked]+" "+WME_SN_CS[WME_SN_country].PTitleSeparator+" "+WME_SN_CS[WME_SN_country][user_level] + " | " + place + " | <"+perma+"|PL> - <https://www.waze.com/pt-PT/user/editor/"+WME_SN_user+"|"+WME_SN_user+" ("+user_level+")>"
}
},
{
"type": "section",
"text":
{
"type": "mrkdwn",
"text": "```" + reason + "```"
}
}
]
}
]
}
let posting = $.post(WME_SN_CS[WME_SN_country].UnLockURL, JSON.stringify(payloadnew) );
posting.done(function(data){
showMessage('success',WME_SN_CS[WME_SN_country].OkSentUnLock);
});
}
function postClosureToSlack(data){
let place = $('.location-info').text();
let perma = getPermalink();
let locked = getLockedAt();
locked = locked < 4 ? 4 : locked;
let user_level = 1 + W.loginManager.getUserRank();
let dataFormatada_inicio = "ND";
let dataFormatada_fim = "ND";
if(data[1] != "")
{
let data_inicio = new Date(data[1]);
dataFormatada_inicio = data_inicio.getDate() + "/" + (data_inicio.getMonth() + 1) + "/" + data_inicio.getFullYear();
}
if(data[2] != "")
{
let data_fim = new Date(data[2]);
dataFormatada_fim = data_fim.getDate() + "/" + (data_fim.getMonth() + 1) + "/" + data_fim.getFullYear();
}
let payloadnew = {
"attachments": [
{
"color": WME_SN_CS[WME_SN_country].PColorClosure,
"fallback": "Novo corte pedido pelo SlackNotifier",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": WME_SN_CS[WME_SN_country][locked] + " " + WME_SN_CS[WME_SN_country].PTitleClosure + " SlackNotifier " + WME_SN_CS[WME_SN_country].PTitleClosure
}
},
{
"type": "section",
"text":
{
"type": "mrkdwn",
"text": place + " (" + data[0] + ") | :no_entry: " + dataFormatada_inicio + " :arrow_right: " + dataFormatada_fim + " | <"+perma+"|PL> - <https://www.waze.com/pt-PT/user/editor/"+WME_SN_user+"|"+WME_SN_user+" ("+user_level+")>"
}
}
]
}
]
}
let posting = $.post(WME_SN_CS[WME_SN_country].ClosureURL, JSON.stringify(payloadnew) );
posting.done(function(data){
showMessage('success',WME_SN_CS[WME_SN_country].OkSentClosure);
});
}
function hasClosures(){
// check if a selected segment contains a closure
let closures = [];
$.each(W.model.roadClosures.objects, function(indx, closure){
closures.push(closure.segID);
});
if (closures === []){
return false;
}
$.each(W.selectionManager.getSelectedFeatures(), function(indx, section){
let segID = section._wmeObject.attributes.id;
if (closures.includes(segID)){
return true;
}
});
return false;
}
function getLockedAt(){
var max_level = 0;
$.each(W.selectionManager.getSelectedFeatures(), function(indx, section){
var seg_rank = 1 + section._wmeObject.attributes.lockRank;
if (seg_rank > max_level){
max_level = seg_rank;
}
});
return max_level;
}
function isAllSelectedType(what) {
if (what=="segment") {
let allOk=true;
$.each(W.selectionManager.getSelectedFeatures(), function(indx, section){
if (section._wmeObject.type!=what){
allOk=false;
}
});
return allOk;
}
if(what=="venue")
if(W.selectionManager.getSelectedFeatures().length == 1)
if(W.selectionManager.getSelectedFeatures()[0]._wmeObject.type=="venue")
return true
return false;
}
function getSelectedIds(segments){
let ids = [];
$.each(segments, function(indx, section){
ids.push(section._wmeObject.attributes.id);
});
return ids.join(",");
}
function getLonLat(segment){
let bounds = segment._wmeObject.geometry.bounds;
return new OL.LonLat(bounds.left, bounds.bottom)
.transform(W.map.projection, W.map.displayProjection)
}
function getLonLatSeg(segment){
let bounds = segment._wmeObject.geometry.bounds;
let geoXY=new OL.LonLat(bounds.left, bounds.bottom).transform('EPSG:3857', 'EPSG:4326');
let XY = geoXY.transform(W.map.projection, W.map.displayProjection);
return XY;
}
// returns permalink
function getPermalink() {
let PL = "";
let selectedSegments = W.selectionManager.getSelectedFeatures();
let selectedLength = selectedSegments.length;
let middleSegment = selectedSegments[Math.round((selectedLength - 1) / 2)];
let latlon = getLonLatSeg(middleSegment);
let z = 5;
if (50 > selectedLength) {
z = 6;
} else if (500 > selectedLength) {
if (6 > z) z += 1;
} else {
z = 4;
}
PL += window.location.origin;
PL += window.location.pathname;
PL += '?zoom=';
PL += z;
PL += '&lat=';
PL += latlon.lat;
PL += '&lon=';
PL += latlon.lon;
PL += '&env=';
PL += W.app.getAppRegionCode();
if (isAllSelectedType("segment")==true)
PL += '&segments=';
if (isAllSelectedType("venue")==true)
PL += '&venues=';
PL += getSelectedIds(selectedSegments);
return PL;
}
function getUserAreas(){
log('Loading editable areas for user');
for (var a = 0; a < W.loginManager.user.attributes.areas.length; a++) {
for (var c = 0; c < W.loginManager.user.attributes.areas[a].geometry.components.length; c++) {
W.loginManager.user.attributes.areas[a].geometry.components[c].calculateBounds();
WME_SN_UA.push(W.loginManager.user.attributes.areas[a].geometry.components[c]);
}
}
}
function determinCountry(){
let selectedSegments = W.selectionManager.getSelectedFeatures();
let middleSegment = selectedSegments[Math.round((selectedSegments.length - 1) / 2)];
let country = middleSegment._wmeObject.getAddress().attributes.country.attributes.abbr;
if(!WME_SN_CS[country]){
log("There is no hook set for " + country + "!");
return;
}
return country;
}
function isInsideEdiableArea(lon, lat) {
let xy = new OL.Geometry.Point(lon, lat);
let inside = false;
for (var a = 0; a < WME_SN_UA.length; a++) {
if (xy.x >= WME_SN_UA[a].bounds.left
&& xy.x <= WME_SN_UA[a].bounds.right
&& xy.y >= WME_SN_UA[a].bounds.bottom
&& xy.y <= WME_SN_UA[a].bounds.top
&& WME_SN_UA[a].containsPoint(xy)) {
return true;
}
}
return false;
};
function checkEditableArea(){
let editable = false;
let selectedSegments = W.selectionManager.getSelectedFeatures();
for (var i = selectedSegments.length - 1; i >= 0; i--) {
let segment = selectedSegments[i];
let lonlat = getLonLat(segment);
editable = isInsideEdiableArea(lonlat.lon, lonlat.lat);
}
return editable;
}
function selectedFeature(){
setTimeout(() => {
if (isAllSelectedType("segment")==true)
checkLock();
if (isAllSelectedType("venue")==true)
checkLockVenues();
}, 500)
}
function checkLock(){
if ($("#unlockDiv").length) {
$('#unlockDiv').remove();
}
/*if (!checkEditableArea()) {
return;
}*/
var max_level = getLockedAt();
var user_level = 1 + W.loginManager.getUserRank();
if (user_level >= 6) {
return;
}
WME_SN_country = determinCountry();
if (!WME_SN_country || !WME_SN_CS[WME_SN_country]) { return; }
let unlockDiv = document.createElement("div");
unlockDiv.id = 'unlockDiv';
unlockDiv.className = 'form-group';
$('.lock-edit').append(unlockDiv);
let unlockDiv_label=document.createElement("label");
unlockDiv_label.innerHTML = WME_SN_CS[WME_SN_country].SNDivlabel+" <a href=\""+WME_SN_CS[WME_SN_country].SlackURL+"\" target=\"_black\"><i class=\"fa fa-external-link\"></i></a>" ;
unlockDiv_label.className = "control-label";
$('#unlockDiv').append(unlockDiv_label);
let unlockDiv_fc=document.createElement("div");
unlockDiv_fc.id = 'unlockDiv_fc';
//unlockDiv_fc.className = 'btn-group';
$('#unlockDiv').append(unlockDiv_fc);
if (user_level < max_level) {
log('User level lower then the locks, adding unlock/closure.');
createUnlockBtn()
createClosureRequestBtn();
}
if (user_level >= max_level){
log('User level higher then the locks, adding lock request.');
createLockRequestForm();
}
if (user_level < 4 && user_level >= max_level){
log('Level < 4 editor, add closure request.')
// Reason field is already added above.
createClosureRequestBtn();
}
if (hasClosures()){
// TODO: Add closure removal request
}
}
function checkLockVenues(){
if ($("#unlockDiv").length) {
$('#unlockDiv').remove();
}
/*if (!checkEditableArea()) {
return;
}*/
var max_level = getLockedAt();
var user_level = 1 + W.loginManager.getUserRank();
if (user_level >= 6 || user_level < max_level) {
return;
}
WME_SN_country = determinCountry();
if (!WME_SN_country || !WME_SN_CS[WME_SN_country]) { return; }
let unlockDiv = document.createElement("div");
unlockDiv.id = 'unlockDiv';
unlockDiv.className = 'form-group';
$('.lock-edit').append(unlockDiv);
let unlockDiv_label=document.createElement("label");
unlockDiv_label.innerHTML = WME_SN_CS[WME_SN_country].SNDivlabel+" <a href=\""+WME_SN_CS[WME_SN_country].SlackURL+"\" target=\"_black\"><i class=\"fa fa-external-link\"></i></a>" ;
unlockDiv_label.className = "control-label";
$('#unlockDiv').append(unlockDiv_label);
let unlockDiv_fc=document.createElement("div");
unlockDiv_fc.id = 'unlockDiv_fc';
//unlockDiv_fc.className = 'btn-group';
$('#unlockDiv').append(unlockDiv_fc);
createLockRequestForm();
}
function createUnlockBtn () {
let btnPostRequest = document.createElement("button");
btnPostRequest.innerHTML = WME_SN_CS[WME_SN_country].BTNUnLock;
btnPostRequest.id = "clickUnlockToSlack";
btnPostRequest.className = 'action-button waze-btn waze-btn-small waze-btn-white';
$('#unlockDiv_fc').append(btnPostRequest);
$("#clickUnlockToSlack").click(function() {
let message = '<p>'+WME_SN_CS[WME_SN_country].UnlockReasonMessage+'</p><div class="controls-container form-group">';
$.each(WME_SN_CS[WME_SN_country].UnlockReasons, function(indx, value){
message += '<div class="service-checkbox"><input id="WME_SN_CS_Reasons_Unlock_'+indx+'" type="checkbox" class="WME_SN_CS_Reasons_Unlock" value="'+value+'"><label for="WME_SN_CS_Reasons_Unlock_'+indx+'">'+value+'</label></div>';
});
message += '</div>';
WME_SN_PromptDates=false;
ezBSAlert({
type: 'prompt',
headerText: WME_SN_CS[WME_SN_country].BTNUnLock,
messageText: message,
okButtonText: WME_SN_CS[WME_SN_country].btnSend,
}).done(function (e) {
if (e) {
postUnlockToSlack(e[0]);
} else {
ezBSAlert({
alertType: 'danger',
headerText: WME_SN_CS[WME_SN_country].BTNUnLock,
messageText: WME_SN_CS[WME_SN_country].CancelSent,
});
}
});;
});
}
function createLockRequestForm(){
let user_level = 1 + W.loginManager.getUserRank();
let divLock = document.createElement("div");
divLock.className = 'btn-group btn-block';
let btnPostRequest = document.createElement("button");
btnPostRequest.innerHTML = WME_SN_CS[WME_SN_country].BTNLock+" <span class=\"caret\"></span>";
btnPostRequest.className = 'action-button waze-btn waze-btn-small waze-btn-white dropdown-toggle';
btnPostRequest.dataset.toggle = 'dropdown';
divLock.appendChild(btnPostRequest);
let divLockOptions = document.createElement("ul");
divLockOptions.className = "dropdown-menu";
for (var i = user_level + 1; i < 7; i++) {
let liopt = document.createElement("li");
liopt.className = "postLockToSlack";
let opt = document.createElement("a");
opt.innerHTML = WME_SN_CS[WME_SN_country].OptToLock+" ";
opt.href = "#";
opt.dataset.level = i;
let bold = document.createElement("b");
bold.innerHTML = i;
bold.dataset.level = i;
opt.appendChild(bold);
liopt.appendChild(opt);
divLockOptions.appendChild(liopt);
}
divLock.appendChild(divLockOptions)
$('#unlockDiv_fc').append(divLock);
$("#unlockDiv").on('click','.postLockToSlack',function(e){
let level = e.target.dataset.level;
postLockToSlack(level);
});
}
function createClosureRequestBtn(){
let btnPostRequest = document.createElement("button");
btnPostRequest.innerHTML = WME_SN_CS[WME_SN_country].BTNClosure;
btnPostRequest.id = "clickClosureToSlack";
btnPostRequest.className = 'action-button waze-btn waze-btn-small waze-btn-white';
btnPostRequest.style.cssText = 'margin-top:4px;'
$('#unlockDiv_fc').append(btnPostRequest);
$("#clickClosureToSlack").click(function() {
let message = '<p>'+WME_SN_CS[WME_SN_country].ClosureReasonMessage+'</p><div class="controls-container form-group"><div class="col-sm-6">';
$.each(WME_SN_CS[WME_SN_country].ClosureReasons, function(indx, value){
message += '<div class="service-checkbox"><input id="WME_SN_CS_Reasons_'+indx+'" type="radio" name="WME_SN_CS_Reasons" class="WME_SN_CS_Reasons" value="'+value+'"><label for="WME_SN_CS_Reasons_'+indx+'">'+value+'</label></div>';
});
message += '</div>';
message += '<div class="col-sm-6"><div class="form-group"><label>'+WME_SN_CS[WME_SN_country].StartDate+'</label><input type="date" id="WME_SN_CS_StartDate" class="form-control"></div><div class="form-group"><label>'+WME_SN_CS[WME_SN_country].EndDate+'</label><input type="date" id="WME_SN_CS_EndDate" class="form-control"></div></div></div>';
WME_SN_PromptDates=true;
ezBSAlert({
type: 'prompt',
headerText: WME_SN_CS[WME_SN_country].BTNClosure,
messageText: message,
okButtonText: WME_SN_CS[WME_SN_country].btnSend,
}).done(function (e) {
if (e!="") {
postClosureToSlack(e);
} else {
ezBSAlert({
alertType: 'danger',
headerText: WME_SN_CS[WME_SN_country].BTNClosure,
messageText: WME_SN_CS[WME_SN_country].CancelSent,
});
}
});;
});
}
function ezBSAlert (options) {
var deferredObject = $.Deferred();
var defaults = {
type: "alert", //alert, prompt,confirm
modalSize: 'modal-sm', //modal-sm, modal-lg
okButtonText: 'Ok',
cancelButtonText: 'Cancel',
yesButtonText: 'Yes',
noButtonText: 'No',
headerText: 'WME SlackNotifier',
messageText: 'Message',
alertType: 'default', //default, primary, success, info, warning, danger
inputFieldType: 'text', //could ask for number,email,etc
}
$.extend(defaults, options);
var _show = function(){
var headClass = "navbar-default";
switch (defaults.alertType) {
case "primary":
headClass = "alert-primary";
break;
case "success":
headClass = "alert-success";
break;
case "info":
headClass = "alert-info";
break;
case "warning":
headClass = "alert-warning";
break;
case "danger":
headClass = "alert-danger";
break;
}
$('BODY').append(
'<div id="ezAlerts" class="modal fade">' +
'<div class="modal-dialog" class="' + defaults.modalSize + '">' +
'<div class="modal-content">' +
'<div id="ezAlerts-header" class="modal-header ' + headClass + '">' +
'<button id="close-button" type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>' +
'<h4 id="ezAlerts-title" class="modal-title">Modal title</h4>' +
'</div>' +
'<div id="ezAlerts-body" class="modal-body">' +
'<div id="ezAlerts-message" ></div>' +
'</div>' +
'<div id="ezAlerts-footer" class="modal-footer">' +
'</div>' +
'</div>' +
'</div>' +
'</div>'
);
$('.modal-header').css({
'padding': '15px 15px',
'-webkit-border-top-left-radius': '5px',
'-webkit-border-top-right-radius': '5px',
'-moz-border-radius-topleft': '5px',
'-moz-border-radius-topright': '5px',
'border-top-left-radius': '5px',
'border-top-right-radius': '5px'
});
$('#ezAlerts-title').html(defaults.headerText);
$('#ezAlerts-message').html(defaults.messageText);
var keyb = "false", backd = "static";
var calbackParam = "";
switch (defaults.type) {
case 'alert':
keyb = "true";
backd = "true";
$('#ezAlerts-footer').html('<button class="btn btn-' + defaults.alertType + '">' + defaults.okButtonText + '</button>').on('click', ".btn", function () {
calbackParam = true;
$('#ezAlerts').modal('hide');
});
break;
case 'confirm':
var btnhtml = '<button id="ezok-btn" class="btn btn-primary">' + defaults.yesButtonText + '</button>';
if (defaults.noButtonText && defaults.noButtonText.length > 0) {
btnhtml += '<button id="ezclose-btn" class="btn btn-default">' + defaults.noButtonText + '</button>';
}
$('#ezAlerts-footer').html(btnhtml).on('click', 'button', function (e) {
if (e.target.id === 'ezok-btn') {
calbackParam = true;
$('#ezAlerts').modal('hide');
} else if (e.target.id === 'ezclose-btn') {
calbackParam = false;
$('#ezAlerts').modal('hide');
}
});
break;
case 'prompt':
$('#ezAlerts-message').html(defaults.messageText + '<br /><br /><div class="form-group"><input type="' + defaults.inputFieldType + '" class="form-control" id="prompt" /></div>');
$('#ezAlerts-footer').html('<button class="btn btn-primary">' + defaults.okButtonText + '</button>').on('click', ".btn", function () {
calbackParam = [$('#prompt').val(), $("#WME_SN_CS_StartDate").val(), $("#WME_SN_CS_EndDate").val()];
$('#ezAlerts').modal('hide');
});
break;
}
$('#ezAlerts').modal({
show: false,
backdrop: backd,
keyboard: keyb
}).on('hidden.bs.modal', function (e) {
$('#ezAlerts').remove();
deferredObject.resolve(calbackParam);
}).on('shown.bs.modal', function (e) {
if ($('#prompt').length > 0) {
$('#prompt').focus();
}
}).modal('show');
}
_show();
return deferredObject.promise();
}
$("body").on('change','.WME_SN_CS_Reasons_Unlock',function(e){
update_SN_CSPromptUnlock(e);
});
function update_SN_CSPromptUnlock(e) {
let checked_Reasons=[];
$('.WME_SN_CS_Reasons_Unlock:checkbox:checked').each(function () {
checked_Reasons.push(this.value);
if (this.id == "WME_SN_CS_Reasons_Unlock_other") {
$("#prompt").show();
} else {
$("#prompt").hide();
}
});
$("#prompt").val(checked_Reasons.join(", "));
}
$("body").on('change','.WME_SN_CS_Reasons',function(e){
update_SN_CSPrompt(e);
});
function update_SN_CSPrompt(e) {
$("#prompt").val(e.target.value);
if (e.target.id == "WME_SN_CS_Reasons_other") {
$("#prompt").show();
$("#prompt").val("");
} else {
$("#prompt").hide();
}
}
function openSlack(){
window.open(WME_SN_CS[WME_SN_country].SlackURL, "_blank");
}
function showMessage(severity,message) {
ezBSAlert({
messageText: message,
alertType: severity
})
}
function log(message) {
if (console.log) {
console.log('%c '+WME_SN_Name+': %c' + message, 'color:black', 'color:#d97e00');
}
}
log(WME_SN_Name+' - version ' + WME_SN_Version);
initUnlock();