bulk generation refactoring

This commit is contained in:
Gary Sharp committed 2023-04-27 14:54:32 +10:00
1 parent b55b77de9f
commit 0c690cff5a
8 files changed
+519 -502

No files matched your search

@@ -75,6 +75,20 @@ $(() => {
}
}
function excludeOtherUsers(r) {
let changeCount = 0;
for (var i = 0; i < users.length; i++) {
const user = users[i];
if (!r.find(u => u.Id === user.Id)) {
user.checkbox.checked = false;
changeCount++;
}
}
if (changeCount) {
redrawTable();
}
}
$table.on('change', 'input[type="checkbox"]', e => {
redrawTable();
});
@@ -97,59 +111,49 @@ $(() => {
$('#AddUsers').click(e => {
e.preventDefault();
if (!dialogAddUsers) {
dialogAddUsers = $('#DocumentTemplate_BulkGenerate_Dialog_AddUsers').dialog({
let dialog = dialogAddUsers;
if (!dialog) {
const action = function (applier) {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
applier(r);
dialog.find('textarea').html('').val('');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate users: ' + reason);
});
}
dialog.dialog("disable");
}
dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddUsers').dialog({
resizable: false,
modal: true,
autoOpen: false,
width: 460,
buttons: {
"Exclude Other Users": function () {
action(excludeOtherUsers);
},
"Exclude Users": function () {
const form = dialogAddUsers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
excludeUsers(r);
dialogAddUsers.find('textarea').html('').val('');
dialogAddUsers.dialog("close");
dialogAddUsers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate users: ' + reason);
});
}
dialogAddUsers.dialog("disable");
action(excludeUsers);
},
"Add Users": function () {
const form = dialogAddUsers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
addUsers(r);
dialogAddUsers.find('textarea').html('').val('');
dialogAddUsers.dialog("close");
dialogAddUsers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate users: ' + reason);
});
}
dialogAddUsers.dialog("disable");
action(addUsers);
}
}
});
dialogAddUsers = dialog;
}
dialogAddUsers.dialog('open');
dialog.dialog('open');
return false;
});
@@ -157,73 +161,63 @@ $(() => {
$('#AddGroupMembers').click(e => {
e.preventDefault();
if (!dialogAddGroupMembers) {
dialogAddGroupMembers = $('#DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers').dialog({
let dialog = dialogAddGroupMembers;
if (!dialog) {
const action = function (applier) {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
applier(r);
dialog.find('input[type="text"]').val('');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate group: ' + reason);
});
}
dialog.dialog("disable");
}
dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers').dialog({
resizable: false,
modal: true,
autoOpen: false,
width: 460,
buttons: {
"Exclude Non-Group Members": function () {
action(excludeOtherUsers);
},
"Exclude Group Members": function () {
const form = dialogAddGroupMembers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
excludeUsers(r);
dialogAddGroupMembers.find('input[type="text"]').val('');
dialogAddGroupMembers.dialog("close");
dialogAddGroupMembers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate group: ' + reason);
});
}
dialogAddGroupMembers.dialog("disable");
action(excludeUsers);
},
"Add Group Members": function () {
const form = dialogAddGroupMembers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
addUsers(r);
dialogAddGroupMembers.find('input[type="text"]').val('');
dialogAddGroupMembers.dialog("close");
dialogAddGroupMembers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate group: ' + reason);
});
}
dialogAddGroupMembers.dialog("disable");
action(addUsers);
}
}
});
const $input = dialog.find('input[type="text"]');
$input.autocomplete({
source: $input.attr('data-autocomplete-src'),
minLength: 2,
select: function (e, ui) {
$input.val(ui.item.Id);
return false;
}
}).data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.Name + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul);
};
dialogAddGroupMembers = dialog;
}
const $input = dialogAddGroupMembers.find('input[type="text"]');
$input.autocomplete({
source: $input.attr('data-autocomplete-src'),
minLength: 2,
select: function (e, ui) {
$input.val(ui.item.Id);
return false;
}
}).data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.Name + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul);
};
dialogAddGroupMembers.dialog('open');
dialog.dialog('open');
return false;
});
@@ -231,71 +225,59 @@ $(() => {
$('#AddUserFlag').click(e => {
e.preventDefault();
if (!dialogAddUserFlag) {
const dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddUserFlag').dialog({
let dialog = dialogAddUserFlag;
if (!dialog) {
const action = function (applier) {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
applier(r);
dialog.find('input[name="flagId"]').val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate user flag: ' + reason);
});
}
dialog.dialog("disable");
}
dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddUserFlag').dialog({
resizable: false,
modal: true,
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
excludeUsers(r);
dialog.find('input[name="flagId"]').val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate user flag: ' + reason);
});
}
dialog.dialog("disable");
action(excludeUsers);
},
"Add Assigned Users": function () {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
addUsers(r);
dialog.find('input[name="flagId"]').val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate user flag: ' + reason);
});
}
dialog.dialog("disable");
action(addUsers);
}
}
});
const $input = dialog.find('input[name="flagId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-userflagid'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddUserFlag = dialog;
}
const $input = dialogAddUserFlag.find('input[name="flagId"]');
dialogAddUserFlag.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-userflagid'));
dialogAddUserFlag.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddUserFlag.dialog('open');
dialog.dialog('open');
return false;
});
@@ -304,7 +286,7 @@ $(() => {
e.preventDefault();
let dialog = dialogAddDeviceProfile;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const input = dialog.find('input[name="deviceProfileId"]');
if (input.val()) {
@@ -316,7 +298,7 @@ $(() => {
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
input.val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
@@ -335,6 +317,9 @@ $(() => {
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
action(excludeUsers);
},
@@ -343,17 +328,17 @@ $(() => {
}
}
});
const $input = dialog.find('input[name="deviceProfileId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddDeviceProfile = dialog;
}
const $input = dialog.find('input[name="deviceProfileId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialog.dialog('open');
return false;
});
@@ -363,7 +348,7 @@ $(() => {
e.preventDefault();
let dialog = dialogAddDeviceBatch;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const input = dialog.find('input[name="deviceBatchId"]');
if (input.val()) {
@@ -375,7 +360,7 @@ $(() => {
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
input.val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
@@ -394,6 +379,9 @@ $(() => {
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
action(excludeUsers);
},
@@ -402,17 +390,17 @@ $(() => {
}
}
});
const $input = dialog.find('input[name="deviceBatchId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddDeviceBatch = dialog;
}
const $input = dialog.find('input[name="deviceBatchId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialog.dialog('open');
return false;
});
@@ -422,7 +410,7 @@ $(() => {
e.preventDefault();
let dialog = dialogAddDocumentAttachment;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const input = dialog.find('input[name="documentTemplateId"]');
if (input.val()) {
@@ -434,7 +422,7 @@ $(() => {
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
input.val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
@@ -453,6 +441,9 @@ $(() => {
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
action(excludeUsers);
},
@@ -461,17 +452,17 @@ $(() => {
}
}
});
const $input = dialog.find('input[name="documentTemplateId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddDocumentAttachment = dialog;
}
const $input = dialog.find('input[name="documentTemplateId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialog.dialog('open');
return false;
});
@@ -481,7 +472,7 @@ $(() => {
e.preventDefault();
let dialog = dialogAddUserDetail;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const key = $(form).find('input[name="key"]');
if (key.val()) {
@@ -493,7 +484,7 @@ $(() => {
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
key.val('');
$(form).find('input[name="value"]').val('');
$('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value').empty();
@@ -514,6 +505,9 @@ $(() => {
autoOpen: false,
width: 690,
buttons: {
"Exclude Unmatched Users": function () {
action(excludeOtherUsers);
},
"Exclude Matched Users": function () {
action(excludeUsers);
},
@@ -522,59 +516,59 @@ $(() => {
}
}
});
const $key = dialog.find('input[name="key"]');
const $value = dialog.find('input[name="value"]');
const $keys = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Key');
const $values = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value');
$keys.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
const keyValue = $target.attr('data-id');
$key.val(keyValue);
$keys.find('div.item').removeClass('selected');
$target.addClass('selected');
$values.empty();
$values.append($('<i class="ajaxLoading" title="Loading"></i>'));
const form = dialog.find('form')[1];
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
$values.empty();
const allValues = $('<div class="item selected" data-id=""><i class="fa fa-info fa-fw fa-lg"></i><em>All Matched Users</em></div>');
allValues.appendTo($values);
$value.val('');
r.map(v => {
const container = $('<div class="item"><i class="fa fa-info fa-fw fa-lg"></i ></div>');
container.attr('data-id', v);
const span = $('<span>').text(v);
span.appendTo(container);
container.appendTo($values);
})
})
.catch(reason => {
alert('Failed to validate user detail: ' + reason);
});
dialog.dialog("disable");
return false;
});
$values.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$value.val($target.attr('data-id'));
$values.find('div.item').removeClass('selected');
$target.addClass('selected');
});
dialogAddUserDetail = dialog;
}
const $key = dialog.find('input[name="key"]');
const $value = dialog.find('input[name="value"]');
const $keys = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Key');
const $values = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value');
$keys.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
const keyValue = $target.attr('data-id');
$key.val(keyValue);
$keys.find('div.item').removeClass('selected');
$target.addClass('selected');
$values.empty();
$values.append($('<i class="ajaxLoading" title="Loading"></i>'));
const form = dialog.find('form')[1];
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
$values.empty();
const allValues = $('<div class="item selected" data-id=""><i class="fa fa-info fa-fw fa-lg"></i><em>All Matched Users</em></div>');
allValues.appendTo($values);
$value.val('');
r.map(v => {
const container = $('<div class="item"><i class="fa fa-info fa-fw fa-lg"></i ></div>');
container.attr('data-id', v);
const span = $('<span>').text(v);
span.appendTo(container);
container.appendTo($values);
})
})
.catch(reason => {
alert('Failed to validate user detail: ' + reason);
});
dialog.dialog("disable");
return false;
});
$values.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$value.val($target.attr('data-id'));
$values.find('div.item').removeClass('selected');
$target.addClass('selected');
});
dialog.dialog('open');
return false;
});
@@ -1 +1 @@
$(()=>{function o(){var t,n;i.length>0&&e.find("tbody tr:first-child").hide();const u=e.find("tbody");let r=0;for(t=0;t<i.length;t++)if(n=i[t],n.checkbox===undefined){const i=$('<tr><td><input id="BulkGenerate_User_'+t.toString()+'" type="checkbox" /><\/td><td><label for="BulkGenerate_User_'+t.toString()+'"><\/label><\/td><td><span class="name"><\/span><\/td><td><span class="scope"><\/span><\/td><\/tr>'),f=i.find("input")[0],e=i.find("label"),o=i.find("span.name"),s=i.find("span.scope");e.text(n.Id);s.text(n.Scope);n.IsError?(i.addClass("error"),f.checked=!1,f.disabled=!0):(f.checked=!0,o.text(n.DisplayName),r++);n.checkbox=f;u.append(i)}else!n.IsError&&n.checkbox.checked&&r++;r>0?$("#BulkGenerate").attr("disabled",null):$("#BulkGenerate").attr("disabled","disabled")}function r(n){let t=0;for(var r=0;r<n.length;r++){const f=n[r],u=i.find(n=>n.Id===f.Id);u===undefined||f.IsError?(i.push(f),t++):u.checkbox===undefined||u.checkbox.checked||u.IsError||(u.checkbox.checked=!0,t++)}t&&o()}function u(n){let r=0;for(var t=0;t<n.length;t++){const f=n[t],u=i.find(n=>n.Id===f.Id);u!==undefined&&u.checkbox!==undefined&&(u.checkbox.checked=!1,r++)}r&&o()}const i=[],e=$("#DocumentTemplate_BulkGenerate table");e.on("change",'input[type="checkbox"]',()=>{o()});$("#BulkGenerate").click(()=>{var t,n;let r=[];for(t=0;t<i.length;t++)n=i[t],!n.IsError&&n.checkbox!==undefined&&n.checkbox.checked&&r.push(n.Id);r.length>0&&($("#DocumentTemplate_BulkGenerate_DataIds").val(r.join("\r\n")),$("#BulkGenerate").closest("form").submit())});let t=null;$("#AddUsers").click(n=>(n.preventDefault(),t||(t=$("#DocumentTemplate_BulkGenerate_Dialog_AddUsers").dialog({resizable:!1,modal:!0,autoOpen:!1,width:460,buttons:{"Exclude Users":function(){const n=t.find("form")[0];if(n.reportValidity()){const i=new FormData(n);fetch(n.action,{method:"POST",body:i}).then(n=>n.json()).then(n=>{u(n),t.find("textarea").html("").val(""),t.dialog("close"),t.dialog("enable")}).catch(n=>{alert("Failed to validate users: "+n)})}t.dialog("disable")},"Add Users":function(){const n=t.find("form")[0];if(n.reportValidity()){const i=new FormData(n);fetch(n.action,{method:"POST",body:i}).then(n=>n.json()).then(n=>{r(n),t.find("textarea").html("").val(""),t.dialog("close"),t.dialog("enable")}).catch(n=>{alert("Failed to validate users: "+n)})}t.dialog("disable")}}})),t.dialog("open"),!1));let n=null;$("#AddGroupMembers").click(t=>{t.preventDefault();n||(n=$("#DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers").dialog({resizable:!1,modal:!0,autoOpen:!1,width:460,buttons:{"Exclude Group Members":function(){const t=n.find("form")[0];if(t.reportValidity()){const i=new FormData(t);fetch(t.action,{method:"POST",body:i}).then(n=>n.json()).then(t=>{u(t),n.find('input[type="text"]').val(""),n.dialog("close"),n.dialog("enable")}).catch(n=>{alert("Failed to validate group: "+n)})}n.dialog("disable")},"Add Group Members":function(){const t=n.find("form")[0];if(t.reportValidity()){const i=new FormData(t);fetch(t.action,{method:"POST",body:i}).then(n=>n.json()).then(t=>{r(t),n.find('input[type="text"]').val(""),n.dialog("close"),n.dialog("enable")}).catch(n=>{alert("Failed to validate group: "+n)})}n.dialog("disable")}}}));const i=n.find('input[type="text"]');return i.autocomplete({source:i.attr("data-autocomplete-src"),minLength:2,select:function(n,t){return i.val(t.item.Id),!1}}).data("ui-autocomplete")._renderItem=function(n,t){return $("<li>").data("item.autocomplete",t).append("<a><strong>"+t.Name+"<\/strong><br>"+t.Id+" ("+t.Type+")<\/a>").appendTo(n)},n.dialog("open"),!1});let f=null;$("#AddUserFlag").click(n=>{if(n.preventDefault(),!f){const n=$("#DocumentTemplate_BulkGenerate_Dialog_AddUserFlag").dialog({resizable:!1,modal:!0,autoOpen:!1,width:460,buttons:{"Exclude Assigned Users":function(){const t=n.find("form")[0];if(t.reportValidity()){const i=new FormData(t);fetch(t.action,{method:"POST",body:i}).then(n=>n.json()).then(t=>{u(t),n.find('input[name="flagId"]').val(""),n.find("div.item").removeClass("selected"),n.dialog("close"),n.dialog("enable")}).catch(n=>{alert("Failed to validate user flag: "+n)})}n.dialog("disable")},"Add Assigned Users":function(){const t=n.find("form")[0];if(t.reportValidity()){const i=new FormData(t);fetch(t.action,{method:"POST",body:i}).then(n=>n.json()).then(t=>{r(t),n.find('input[name="flagId"]').val(""),n.find("div.item").removeClass("selected"),n.dialog("close"),n.dialog("enable")}).catch(n=>{alert("Failed to validate user flag: "+n)})}n.dialog("disable")}}});f=n}const t=f.find('input[name="flagId"]');f.on("click","div.item:not(.disabled)",n=>{n.preventDefault();const i=$(n.currentTarget);return t.val(i.attr("data-userflagid")),f.find("div.item").removeClass("selected"),i.addClass("selected"),!1});return f.dialog("open"),!1});let s=null;$("#AddDeviceProfile").click(n=>{n.preventDefault();let t=s;if(!t){const n=n=>{const i=t.find("form")[0],r=t.find('input[name="deviceProfileId"]');if(r.val()&&i.reportValidity()){const u=new FormData(i);fetchLine truncated
$(()=>{function u(){var i,t;n.length>0&&f.find("tbody tr:first-child").hide();const u=f.find("tbody");let r=0;for(i=0;i<n.length;i++)if(t=n[i],t.checkbox===undefined){const n=$('<tr><td><input id="BulkGenerate_User_'+i.toString()+'" type="checkbox" /><\/td><td><label for="BulkGenerate_User_'+i.toString()+'"><\/label><\/td><td><span class="name"><\/span><\/td><td><span class="scope"><\/span><\/td><\/tr>'),f=n.find("input")[0],e=n.find("label"),o=n.find("span.name"),s=n.find("span.scope");e.text(t.Id);s.text(t.Scope);t.IsError?(n.addClass("error"),f.checked=!1,f.disabled=!0):(f.checked=!0,o.text(t.DisplayName),r++);t.checkbox=f;u.append(n)}else!t.IsError&&t.checkbox.checked&&r++;r>0?$("#BulkGenerate").attr("disabled",null):$("#BulkGenerate").attr("disabled","disabled")}function t(t){let i=0;for(var r=0;r<t.length;r++){const f=t[r],u=n.find(n=>n.Id===f.Id);u===undefined||f.IsError?(n.push(f),i++):u.checkbox===undefined||u.checkbox.checked||u.IsError||(u.checkbox.checked=!0,i++)}i&&u()}function i(t){let r=0;for(var i=0;i<t.length;i++){const f=t[i],u=n.find(n=>n.Id===f.Id);u!==undefined&&u.checkbox!==undefined&&(u.checkbox.checked=!1,r++)}r&&u()}function r(t){let r=0;for(var i=0;i<n.length;i++){const u=n[i];t.find(n=>n.Id===u.Id)||(u.checkbox.checked=!1,r++)}r&&u()}const n=[],f=$("#DocumentTemplate_BulkGenerate table");f.on("change",'input[type="checkbox"]',()=>{u()});$("#BulkGenerate").click(()=>{var i,t;let r=[];for(i=0;i<n.length;i++)t=n[i],!t.IsError&&t.checkbox!==undefined&&t.checkbox.checked&&r.push(t.Id);r.length>0&&($("#DocumentTemplate_BulkGenerate_DataIds").val(r.join("\r\n")),$("#BulkGenerate").closest("form").submit())});let e=null;$("#AddUsers").click(n=>{n.preventDefault();let u=e;if(!u){const n=function(n){const t=u.find("form")[0];if(t.reportValidity()){const i=new FormData(t);fetch(t.action,{method:"POST",body:i}).then(n=>n.json()).then(t=>{n(t),u.find("textarea").html("").val(""),u.dialog("close"),u.dialog("enable")}).catch(n=>{alert("Failed to validate users: "+n)})}u.dialog("disable")};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddUsers").dialog({resizable:!1,modal:!0,autoOpen:!1,width:460,buttons:{"Exclude Other Users":function(){n(r)},"Exclude Users":function(){n(i)},"Add Users":function(){n(t)}}});e=u}return u.dialog("open"),!1});let o=null;$("#AddGroupMembers").click(n=>{n.preventDefault();let u=o;if(!u){const n=function(n){const t=u.find("form")[0];if(t.reportValidity()){const i=new FormData(t);fetch(t.action,{method:"POST",body:i}).then(n=>n.json()).then(t=>{n(t),u.find('input[type="text"]').val(""),u.dialog("close"),u.dialog("enable")}).catch(n=>{alert("Failed to validate group: "+n)})}u.dialog("disable")};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers").dialog({resizable:!1,modal:!0,autoOpen:!1,width:460,buttons:{"Exclude Non-Group Members":function(){n(r)},"Exclude Group Members":function(){n(i)},"Add Group Members":function(){n(t)}}});const f=u.find('input[type="text"]');f.autocomplete({source:f.attr("data-autocomplete-src"),minLength:2,select:function(n,t){return f.val(t.item.Id),!1}}).data("ui-autocomplete")._renderItem=function(n,t){return $("<li>").data("item.autocomplete",t).append("<a><strong>"+t.Name+"<\/strong><br>"+t.Id+" ("+t.Type+")<\/a>").appendTo(n)};o=u}return u.dialog("open"),!1});let s=null;$("#AddUserFlag").click(n=>{n.preventDefault();let u=s;if(!u){const n=function(n){const t=u.find("form")[0];if(t.reportValidity()){const i=new FormData(t);fetch(t.action,{method:"POST",body:i}).then(n=>n.json()).then(t=>{n(t),u.find('input[name="flagId"]').val(""),u.find("div.item").removeClass("selected"),u.dialog("close"),u.dialog("enable")}).catch(n=>{alert("Failed to validate user flag: "+n)})}u.dialog("disable")};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddUserFlag").dialog({resizable:!1,modal:!0,autoOpen:!1,width:460,buttons:{"Exclude Unassigned Users":function(){n(r)},"Exclude Assigned Users":function(){n(i)},"Add Assigned Users":function(){n(t)}}});const f=u.find('input[name="flagId"]');u.on("click","div.item:not(.disabled)",n=>{n.preventDefault();const t=$(n.currentTarget);return f.val(t.attr("data-userflagid")),u.find("div.item").removeClass("selected"),t.addClass("selected"),!1});s=u}return u.dialog("open"),!1});let h=null;$("#AddDeviceProfile").click(n=>{n.preventDefault();let u=h;if(!u){const n=function(n){const t=u.find("form")[0],i=u.find('input[name="deviceProfileId"]');if(i.val()&&t.reportValidity()){const r=new FormData(t);fetch(t.action,{method:"POST",body:r}).then(n=>n.json()).then(t=>{n(t),i.val(""),u.find("div.item").removeClass("selected"),u.dialog("close"),u.dialog("enable")}).catch(n=>{alert("Failed to validate device profile: "+n)});u.dialog("disable")}};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddDeviceProfile").dialog({resizable:!1,modal:!0,autoOpen:!1,width:460,buttons:{"Exclude Unassigned Users":function(){n(r)},"Exclude Assigned Users":function(){n(i)},"Add Assigned Users":function(){n(t)}}});const f=u.find('input[name="deviceProfileLine truncated
@@ -75,6 +75,20 @@
}
}
function excludeOtherUsers(r) {
let changeCount = 0;
for (var i = 0; i < users.length; i++) {
const user = users[i];
if (!r.find(u => u.Id === user.Id)) {
user.checkbox.checked = false;
changeCount++;
}
}
if (changeCount) {
redrawTable();
}
}
$table.on('change', 'input[type="checkbox"]', e => {
redrawTable();
});
@@ -97,59 +111,49 @@
$('#AddUsers').click(e => {
e.preventDefault();
if (!dialogAddUsers) {
dialogAddUsers = $('#DocumentTemplate_BulkGenerate_Dialog_AddUsers').dialog({
let dialog = dialogAddUsers;
if (!dialog) {
const action = function (applier) {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
applier(r);
dialog.find('textarea').html('').val('');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate users: ' + reason);
});
}
dialog.dialog("disable");
}
dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddUsers').dialog({
resizable: false,
modal: true,
autoOpen: false,
width: 460,
buttons: {
"Exclude Other Users": function () {
action(excludeOtherUsers);
},
"Exclude Users": function () {
const form = dialogAddUsers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
excludeUsers(r);
dialogAddUsers.find('textarea').html('').val('');
dialogAddUsers.dialog("close");
dialogAddUsers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate users: ' + reason);
});
}
dialogAddUsers.dialog("disable");
action(excludeUsers);
},
"Add Users": function () {
const form = dialogAddUsers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
addUsers(r);
dialogAddUsers.find('textarea').html('').val('');
dialogAddUsers.dialog("close");
dialogAddUsers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate users: ' + reason);
});
}
dialogAddUsers.dialog("disable");
action(addUsers);
}
}
});
dialogAddUsers = dialog;
}
dialogAddUsers.dialog('open');
dialog.dialog('open');
return false;
});
@@ -157,73 +161,63 @@
$('#AddGroupMembers').click(e => {
e.preventDefault();
if (!dialogAddGroupMembers) {
dialogAddGroupMembers = $('#DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers').dialog({
let dialog = dialogAddGroupMembers;
if (!dialog) {
const action = function (applier) {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
applier(r);
dialog.find('input[type="text"]').val('');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate group: ' + reason);
});
}
dialog.dialog("disable");
}
dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers').dialog({
resizable: false,
modal: true,
autoOpen: false,
width: 460,
buttons: {
"Exclude Non-Group Members": function () {
action(excludeOtherUsers);
},
"Exclude Group Members": function () {
const form = dialogAddGroupMembers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
excludeUsers(r);
dialogAddGroupMembers.find('input[type="text"]').val('');
dialogAddGroupMembers.dialog("close");
dialogAddGroupMembers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate group: ' + reason);
});
}
dialogAddGroupMembers.dialog("disable");
action(excludeUsers);
},
"Add Group Members": function () {
const form = dialogAddGroupMembers.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
addUsers(r);
dialogAddGroupMembers.find('input[type="text"]').val('');
dialogAddGroupMembers.dialog("close");
dialogAddGroupMembers.dialog("enable");
})
.catch(reason => {
alert('Failed to validate group: ' + reason);
});
}
dialogAddGroupMembers.dialog("disable");
action(addUsers);
}
}
});
const $input = dialog.find('input[type="text"]');
$input.autocomplete({
source: $input.attr('data-autocomplete-src'),
minLength: 2,
select: function (e, ui) {
$input.val(ui.item.Id);
return false;
}
}).data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.Name + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul);
};
dialogAddGroupMembers = dialog;
}
const $input = dialogAddGroupMembers.find('input[type="text"]');
$input.autocomplete({
source: $input.attr('data-autocomplete-src'),
minLength: 2,
select: function (e, ui) {
$input.val(ui.item.Id);
return false;
}
}).data('ui-autocomplete')._renderItem = function (ul, item) {
return $("<li>")
.data("item.autocomplete", item)
.append("<a><strong>" + item.Name + "</strong><br>" + item.Id + " (" + item.Type + ")</a>")
.appendTo(ul);
};
dialogAddGroupMembers.dialog('open');
dialog.dialog('open');
return false;
});
@@ -231,71 +225,59 @@
$('#AddUserFlag').click(e => {
e.preventDefault();
if (!dialogAddUserFlag) {
const dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddUserFlag').dialog({
let dialog = dialogAddUserFlag;
if (!dialog) {
const action = function (applier) {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
applier(r);
dialog.find('input[name="flagId"]').val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate user flag: ' + reason);
});
}
dialog.dialog("disable");
}
dialog = $('#DocumentTemplate_BulkGenerate_Dialog_AddUserFlag').dialog({
resizable: false,
modal: true,
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
excludeUsers(r);
dialog.find('input[name="flagId"]').val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate user flag: ' + reason);
});
}
dialog.dialog("disable");
action(excludeUsers);
},
"Add Assigned Users": function () {
const form = dialog.find('form')[0];
if (form.reportValidity()) {
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
addUsers(r);
dialog.find('input[name="flagId"]').val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
dialog.dialog("enable");
})
.catch(reason => {
alert('Failed to validate user flag: ' + reason);
});
}
dialog.dialog("disable");
action(addUsers);
}
}
});
const $input = dialog.find('input[name="flagId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-userflagid'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddUserFlag = dialog;
}
const $input = dialogAddUserFlag.find('input[name="flagId"]');
dialogAddUserFlag.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-userflagid'));
dialogAddUserFlag.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddUserFlag.dialog('open');
dialog.dialog('open');
return false;
});
@@ -304,7 +286,7 @@
e.preventDefault();
let dialog = dialogAddDeviceProfile;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const input = dialog.find('input[name="deviceProfileId"]');
if (input.val()) {
@@ -316,7 +298,7 @@
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
input.val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
@@ -335,6 +317,9 @@
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
action(excludeUsers);
},
@@ -343,17 +328,17 @@
}
}
});
const $input = dialog.find('input[name="deviceProfileId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddDeviceProfile = dialog;
}
const $input = dialog.find('input[name="deviceProfileId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialog.dialog('open');
return false;
});
@@ -363,7 +348,7 @@
e.preventDefault();
let dialog = dialogAddDeviceBatch;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const input = dialog.find('input[name="deviceBatchId"]');
if (input.val()) {
@@ -375,7 +360,7 @@
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
input.val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
@@ -394,6 +379,9 @@
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
action(excludeUsers);
},
@@ -402,17 +390,17 @@
}
}
});
const $input = dialog.find('input[name="deviceBatchId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddDeviceBatch = dialog;
}
const $input = dialog.find('input[name="deviceBatchId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialog.dialog('open');
return false;
});
@@ -422,7 +410,7 @@
e.preventDefault();
let dialog = dialogAddDocumentAttachment;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const input = dialog.find('input[name="documentTemplateId"]');
if (input.val()) {
@@ -434,7 +422,7 @@
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
input.val('');
dialog.find('div.item').removeClass('selected');
dialog.dialog("close");
@@ -453,6 +441,9 @@
autoOpen: false,
width: 460,
buttons: {
"Exclude Unassigned Users": function () {
action(excludeOtherUsers);
},
"Exclude Assigned Users": function () {
action(excludeUsers);
},
@@ -461,17 +452,17 @@
}
}
});
const $input = dialog.find('input[name="documentTemplateId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialogAddDocumentAttachment = dialog;
}
const $input = dialog.find('input[name="documentTemplateId"]');
dialog.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$input.val($target.attr('data-id'));
dialog.find('div.item').removeClass('selected');
$target.addClass('selected');
return false;
});
dialog.dialog('open');
return false;
});
@@ -481,7 +472,7 @@
e.preventDefault();
let dialog = dialogAddUserDetail;
if (!dialog) {
const action = delegate => {
const action = function (applier) {
const form = dialog.find('form')[0];
const key = $(form).find('input[name="key"]');
if (key.val()) {
@@ -493,7 +484,7 @@
})
.then(r => r.json())
.then(r => {
delegate(r);
applier(r);
key.val('');
$(form).find('input[name="value"]').val('');
$('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value').empty();
@@ -514,6 +505,9 @@
autoOpen: false,
width: 690,
buttons: {
"Exclude Unmatched Users": function () {
action(excludeOtherUsers);
},
"Exclude Matched Users": function () {
action(excludeUsers);
},
@@ -522,59 +516,59 @@
}
}
});
const $key = dialog.find('input[name="key"]');
const $value = dialog.find('input[name="value"]');
const $keys = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Key');
const $values = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value');
$keys.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
const keyValue = $target.attr('data-id');
$key.val(keyValue);
$keys.find('div.item').removeClass('selected');
$target.addClass('selected');
$values.empty();
$values.append($('<i class="ajaxLoading" title="Loading"></i>'));
const form = dialog.find('form')[1];
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
$values.empty();
const allValues = $('<div class="item selected" data-id=""><i class="fa fa-info fa-fw fa-lg"></i><em>All Matched Users</em></div>');
allValues.appendTo($values);
$value.val('');
r.map(v => {
const container = $('<div class="item"><i class="fa fa-info fa-fw fa-lg"></i ></div>');
container.attr('data-id', v);
const span = $('<span>').text(v);
span.appendTo(container);
container.appendTo($values);
})
})
.catch(reason => {
alert('Failed to validate user detail: ' + reason);
});
dialog.dialog("disable");
return false;
});
$values.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$value.val($target.attr('data-id'));
$values.find('div.item').removeClass('selected');
$target.addClass('selected');
});
dialogAddUserDetail = dialog;
}
const $key = dialog.find('input[name="key"]');
const $value = dialog.find('input[name="value"]');
const $keys = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Key');
const $values = dialog.find('#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value');
$keys.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
const keyValue = $target.attr('data-id');
$key.val(keyValue);
$keys.find('div.item').removeClass('selected');
$target.addClass('selected');
$values.empty();
$values.append($('<i class="ajaxLoading" title="Loading"></i>'));
const form = dialog.find('form')[1];
const body = new FormData(form);
fetch(form.action, {
method: 'POST',
body: body
})
.then(r => r.json())
.then(r => {
$values.empty();
const allValues = $('<div class="item selected" data-id=""><i class="fa fa-info fa-fw fa-lg"></i><em>All Matched Users</em></div>');
allValues.appendTo($values);
$value.val('');
r.map(v => {
const container = $('<div class="item"><i class="fa fa-info fa-fw fa-lg"></i ></div>');
container.attr('data-id', v);
const span = $('<span>').text(v);
span.appendTo(container);
container.appendTo($values);
})
})
.catch(reason => {
alert('Failed to validate user detail: ' + reason);
});
dialog.dialog("disable");
return false;
});
$values.on('click', 'div.item:not(.disabled)', e => {
e.preventDefault();
const $target = $(e.currentTarget);
$value.val($target.attr('data-id'));
$values.find('div.item').removeClass('selected');
$target.addClass('selected');
});
dialog.dialog('open');
return false;
});