Files
Disco/Disco.Web/ClientSource/Scripts/Modules/Disco-DocumentBulkGenerate.min.js
2025-08-17 18:56:56 +10:00

1 line
11 KiB
JavaScript

$(()=>{function e(){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 class="name"><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.UserDisplayName),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&&e()}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&&e()}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&&e()}const n=[],f=$("#DocumentTemplate_BulkGenerate_Records"),u=f.attr("data-scope");f.on("change",'input[type="checkbox"]',()=>{e()});$("#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 o=null;$("#AddUsers").click(n=>{n.preventDefault();let f=o;if(!f){const e=async function(n){const t=f.find("form")[0];if(t.reportValidity()){const i=new FormData(t);try{const r=await fetch(t.action,{method:"POST",body:i}),u=await r.json();n(u);f.find("textarea").html("").val("");f.dialog("close")}catch(i){alert("Failed to validate users: "+i)}}},s=u==="user"?"Users":"Assigned Devices",n={};n[`Exclude Other ${s}`]=function(){e(r)};n[`Exclude ${s}`]=function(){e(i)};n[`Add ${s}`]=function(){e(t)};f=$("#DocumentTemplate_BulkGenerate_Dialog_AddUsers").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,buttons:n});o=f}return f.dialog("open"),!1});let s=null;$("#AddDevices").click(n=>{n.preventDefault();let u=s;if(!u){const n=async function(n){const t=u.find("form")[0];if(t.reportValidity()){const i=new FormData(t);try{const r=await fetch(t.action,{method:"POST",body:i}),f=await r.json();n(f);u.find("textarea").html("").val("");u.dialog("close")}catch(i){alert("Failed to validate devices: "+i)}}};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddDevices").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,buttons:{"Exclude Unmatched Devices":function(){n(r)},"Exclude Devices":function(){n(i)},"Add Devices":function(){n(t)}}});s=u}return u.dialog("open"),!1});let h=null;$("#AddGroupMembers").click(n=>{n.preventDefault();let u=h;if(!u){const n=async function(n){const t=u.find("form")[0];if(t.reportValidity()){const i=new FormData(t);try{const r=await fetch(t.action,{method:"POST",body:i}),f=await r.json();n(f);u.find('input[type="text"]').val("");u.dialog("close")}catch(i){alert("Failed to validate group: "+i)}}};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,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)};h=u}return u.dialog("open"),!1});let c=null;$("#AddUserFlag").click(n=>{n.preventDefault();let u=c;if(!u){const n=async function(n){const t=u.find("form")[0];if(t.reportValidity()){const i=new FormData(t);try{const r=await fetch(t.action,{method:"POST",body:i}),f=await r.json();n(f);u.find('input[name="flagId"]').val("");u.find("div.item").removeClass("selected");u.dialog("close")}catch(i){alert("Failed to validate user flag: "+i)}}};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddUserFlag").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,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});c=u}return u.dialog("open"),!1});let l=null;$("#AddDeviceFlag").click(n=>{n.preventDefault();let u=l;if(!u){const n=async function(n){const t=u.find("form")[0];if(t.reportValidity()){const i=new FormData(t);try{const r=await fetch(t.action,{method:"POST",body:i}),f=await r.json();n(f);u.find('input[name="flagId"]').val("");u.find("div.item").removeClass("selected");u.dialog("close")}catch(i){alert("Failed to validate device flag: "+i)}}};u=$("#DocumentTemplate_BulkGenerate_Dialog_AddDeviceFlag").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,buttons:{"Exclude Unassigned Devices":function(){n(r)},"Exclude Assigned Devices":function(){n(i)},"Add Assigned Devices":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});l=u}return u.dialog("open"),!1});let a=null;$("#AddDeviceProfile").click(n=>{n.preventDefault();let f=a;if(!f){const e=async function(n){const t=f.find("form")[0],i=f.find('input[name="deviceProfileId"]');if(i.val()&&t.reportValidity()){const r=new FormData(t);try{const u=await fetch(t.action,{method:"POST",body:r}),e=await u.json();n(e);i.val("");f.find("div.item").removeClass("selected");f.dialog("close")}catch(r){alert("Failed to validate device profile: "+r)}}},o=u==="user"?"Assigned Users":"Devices",n={};n[`Exclude Other ${o}`]=function(){e(r)};n[`Exclude ${o}`]=function(){e(i)};n[`Add ${o}`]=function(){e(t)};f=$("#DocumentTemplate_BulkGenerate_Dialog_AddDeviceProfile").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,buttons:n});const s=f.find('input[name="deviceProfileId"]');f.on("click","div.item:not(.disabled)",n=>{n.preventDefault();const t=$(n.currentTarget);return s.val(t.attr("data-id")),f.find("div.item").removeClass("selected"),t.addClass("selected"),!1});a=f}return f.dialog("open"),!1});let v=null;$("#AddDeviceBatch").click(n=>{n.preventDefault();let f=v;if(!f){const e=async function(n){const t=f.find("form")[0],i=f.find('input[name="deviceBatchId"]');if(i.val()&&t.reportValidity()){const r=new FormData(t);try{const u=await fetch(t.action,{method:"POST",body:r}),e=await u.json();n(e);i.val("");f.find("div.item").removeClass("selected");f.dialog("close")}catch(r){alert("Failed to validate device batch: "+r)}}},o=u==="user"?"Assigned Users":"Devices",n={};n[`Exclude Other ${o}`]=function(){e(r)};n[`Exclude ${o}`]=function(){e(i)};n[`Add ${o}`]=function(){e(t)};f=$("#DocumentTemplate_BulkGenerate_Dialog_AddDeviceBatch").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,buttons:n});const s=f.find('input[name="deviceBatchId"]');f.on("click","div.item:not(.disabled)",n=>{n.preventDefault();const t=$(n.currentTarget);return s.val(t.attr("data-id")),f.find("div.item").removeClass("selected"),t.addClass("selected"),!1});v=f}return f.dialog("open"),!1});let y=null;$("#AddDocumentAttachment").click(n=>{n.preventDefault();let f=y;if(!f){const e=async function(n){const t=f.find("form")[0],i=f.find('input[name="documentTemplateId"]');if(i.val()&&t.reportValidity()){const r=new FormData(t);try{const u=await fetch(t.action,{method:"POST",body:r}),e=await u.json();n(e);i.val("");f.find("div.item").removeClass("selected");f.dialog("close")}catch(r){alert("Failed to validate device batch: "+r)}}},o=u==="user"?"Users":"Devices",n={};n[`Exclude Unassigned ${o}`]=function(){e(r)};n[`Exclude Assigned ${o}`]=function(){e(i)};n[`Add Assigned ${o}`]=function(){e(t)};f=$("#DocumentTemplate_BulkGenerate_Dialog_AddDocumentAttachment").dialog({resizable:!1,modal:!0,autoOpen:!1,width:550,buttons:n});const s=f.find('input[name="documentTemplateId"]');f.on("click","div.item:not(.disabled)",n=>{n.preventDefault();const t=$(n.currentTarget);return s.val(t.attr("data-id")),f.find("div.item").removeClass("selected"),t.addClass("selected"),!1});y=f}return f.dialog("open"),!1});let p=null;$("#AddUserDetail").click(n=>{n.preventDefault();let f=p;if(!f){const o=async function(n){const t=f.find("form")[0],i=$(t).find('input[name="key"]');if(i.val()&&t.reportValidity()){const r=new FormData(t);try{const u=await fetch(t.action,{method:"POST",body:r}),e=await u.json();n(e);i.val("");$(t).find('input[name="value"]').val("");$("#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value").empty();f.find("div.item").removeClass("selected");f.dialog("close")}catch(r){alert("Failed to validate user detail: "+r)}}},s=u==="user"?"Users":"Devices",e={};e[`Exclude Unmatched ${s}`]=function(){o(r)};e[`Exclude Matched ${s}`]=function(){o(i)};e[`Add Matched ${s}`]=function(){o(t)};f=$("#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail").dialog({resizable:!1,modal:!0,autoOpen:!1,width:690,buttons:e});const l=f.find('input[name="key"]'),h=f.find('input[name="value"]'),c=f.find("#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Key"),n=f.find("#DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value");c.on("click","div.item:not(.disabled)",t=>{t.preventDefault();const i=$(t.currentTarget),u=i.attr("data-id");l.val(u);c.find("div.item").removeClass("selected");i.addClass("selected");n.empty();n.append($('<i class="ajaxLoading" title="Loading"><\/i>'));const r=f.find("form")[1],e=new FormData(r);return fetch(r.action,{method:"POST",body:e}).then(n=>n.json()).then(t=>{n.empty();const i=$('<div class="item selected" data-id=""><i class="fa fa-info fa-fw fa-lg"><\/i><em>All Matched Users<\/em><\/div>');i.appendTo(n);h.val("");t.map(t=>{const i=$('<div class="item"><i class="fa fa-info fa-fw fa-lg"><\/i ><\/div>');i.attr("data-id",t);const r=$("<span>").text(t);r.appendTo(i);i.appendTo(n)})}).catch(n=>{alert("Failed to validate user detail: "+n)}),f.dialog("disable"),!1});n.on("click","div.item:not(.disabled)",t=>{t.preventDefault();const i=$(t.currentTarget);h.val(i.attr("data-id"));n.find("div.item").removeClass("selected");i.addClass("selected")});p=f}return f.dialog("open"),!1})});