{"version":3,"sources":["Apfco.js","IFormFile.js","ViewHomeEntryForm.js","ViewSharedLayoutPrimary.js"],"names":["Apfco","[object Object]","key","value","url","window","location","href","hash","re","RegExp","test","replace","split","separator","indexOf","milliseconds","Promise","resolve","setTimeout","inputString","findString","replaceString","IFormFile","target","thisObj","this","el","$","elTable","document","getElementById","id","elType","getAttribute","elMaximum","elProgress","change","e","getElementsByTagName","querySelectorAll","length","file","files","data","FormData","append","Action_uploadimage","click","val","css","i","on","event","Action_deleteimage","HTML_updatebutton","prop","token","ajax","xhr","XMLHttpRequest","addClass","upload","addEventListener","evt","lengthComputable","percentComplete","loaded","total","type","GLOBALROOTURL","processData","contentType","success","response","HTML_addimagetotable","removeClass","error","ajaxOptions","thrownError","alert","responseText","tableRow","table","deleteRow","rows","insertRow","outerHTML","HTML_updaterows","cells","innerHTML","trim","get","name","firstChild","toString","off","IFormFileList","elementsByClass","getElementsByClassName","push","item","ViewHomeEntryForm","console","log","sleep","ViewHomeEntryFormList","body","classList","contains","ViewSharedLayoutPrimary","disableFormButtonsOnSubmit","wrapTrademarkSymbolsWithSuperscriptTag","find","each","submit","attr","currentForm","insertBefore","children","first","regexp","contents","filter","nodeType","nodeValue","replaceWith","ViewSharedLayoutPrimaryList"],"mappings":"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","file":"site.min.js","sourcesContent":["\r\n\r\n//NOTE: The layout should have the constant GLOBALROOTURL defined - Used for transferring data from server-side to client side via APIs\r\n\r\n\r\nclass Apfco {\r\n\r\n static updateQueryString(key, value, url) { //Update query string parameters - Taken from here: https://stackoverflow.com/questions/5999118/add-or-update-query-string-parameter\r\n if (!url) url = window.location.href;\r\n var re = new RegExp(\"([?&])\" + key + \"=.*?(&|#|$)(.*)\", \"gi\"),\r\n hash;\r\n\r\n if (re.test(url)) {\r\n if (typeof value !== 'undefined' && value !== null)\r\n return url.replace(re, '$1' + key + \"=\" + value + '$2$3');\r\n else {\r\n hash = url.split('#');\r\n url = hash[0].replace(re, '$1$3').replace(/(&|\\?)$/, '');\r\n if (typeof hash[1] !== 'undefined' && hash[1] !== null)\r\n url += '#' + hash[1];\r\n return url;\r\n }\r\n }\r\n else {\r\n if (typeof value !== 'undefined' && value !== null) {\r\n var separator = url.indexOf('?') !== -1 ? '&' : '?';\r\n hash = url.split('#');\r\n url = hash[0] + separator + key + '=' + value;\r\n if (typeof hash[1] !== 'undefined' && hash[1] !== null)\r\n url += '#' + hash[1];\r\n return url;\r\n }\r\n else\r\n return url;\r\n }\r\n }\r\n\r\n static stripQueryStringAndHashFromUrl(url) { //Example, changes http://localhost:61222/?test=123#NavContent to http://localhost:61222/ - From https://stackoverflow.com/questions/2540969/remove-querystring-from-url\r\n return url.split(/[?#]/)[0];\r\n }\r\n\r\n static sleep(milliseconds) { //Use in async functions to insert a delay before continuing processing. Example: await Apfco.Sleep(2000);\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, milliseconds);\r\n });\r\n }\r\n\r\n static replaceAll(inputString, findString, replaceString) { //Replace all instances of a value in a string - native string.replace() only works on first instance\r\n let inputStringRegEscaped = inputString.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\r\n return inputString.replace(new RegExp(findString, 'g'), replaceString);\r\n }\r\n\r\n}","class IFormFile {\r\n\r\n //Variables\r\n el;\r\n elTable;\r\n elType;\r\n elMaximum;\r\n elProgress;\r\n\r\n //Methods\r\n constructor(target) {\r\n let thisObj = this;\r\n\r\n //Assign elements\r\n this.el = $(target);\r\n this.elTable = document.getElementById(target.id + \"Table\");\r\n this.elType = document.getElementById(target.id).getAttribute(\"filetype\");\r\n this.elMaximum = document.getElementById(target.id).getAttribute(\"maximum\");\r\n this.elProgress = document.getElementById(target.id + \"Progress\");\r\n\r\n //Assign events\r\n $(target).change(function (e) {\r\n var count = thisObj.elTable.getElementsByTagName('tbody')[0].querySelectorAll('.table-item').length;\r\n if (count < thisObj.elMaximum) {\r\n var file = document.getElementById(e.target.id).files[0];\r\n var data = new FormData();\r\n data.append('image', file);\r\n data.append('type', thisObj.elType);\r\n thisObj.Action_uploadimage(data);\r\n }\r\n }).click(function () {\r\n $(this).val(\"\");\r\n $(this.elProgress).css(\"width\", \"0%\");\r\n });\r\n for (let i = 0; i < $('.customfile-action').length; i++) {\r\n let id = $('.customfile-action')[i].id;\r\n $('#' + id).on('click', function (event) {\r\n thisObj.Action_deleteimage(i + 1, id);\r\n });\r\n }\r\n thisObj.HTML_updatebutton();\r\n }\r\n\r\n Action_uploadimage(data) {\r\n let thisObj = this;\r\n let el = this.el;\r\n let elProgress = this.elProgress;\r\n\r\n el.prop('disabled', true);\r\n\r\n //Append AntiForgeryToken to payload\r\n var token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n data.append('__RequestVerificationToken', token);\r\n\r\n //HTTP request to controller\r\n $.ajax({\r\n xhr: function () {\r\n var xhr = new XMLHttpRequest();\r\n $(elProgress).addClass(\"progress-bar-animated\");\r\n xhr.upload.addEventListener(\"progress\", function (evt) {\r\n if (evt.lengthComputable) {\r\n var percentComplete = (evt.loaded / evt.total * 100) / 1.5;\r\n $(elProgress).css(\"width\", percentComplete + \"%\");\r\n }\r\n }, false);\r\n xhr.addEventListener(\"progress\", function (evt) {\r\n if (evt.lengthComputable) {\r\n var percentComplete = (evt.loaded / evt.total * 100);\r\n $(elProgress).css(\"width\", percentComplete + \"%\");\r\n }\r\n }, false);\r\n return xhr;\r\n },\r\n type: 'POST',\r\n url: GLOBALROOTURL + '/ClientRequest/SaveFileUpload',\r\n data: data,\r\n processData: false,\r\n contentType: false,\r\n success: function (response) {\r\n //Add image to Table\r\n data.append('uniqueid', response);\r\n thisObj.HTML_addimagetotable(data);\r\n $(elProgress).css(\"width\", \"100%\");\r\n window.setTimeout(function () {\r\n $(elProgress).css(\"width\", \"0%\");\r\n $(elProgress).removeClass(\"progress-bar-animated\");\r\n el.prop('disabled', false);\r\n thisObj.HTML_updatebutton();\r\n }, 500);\r\n\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n $(elProgress).css(\"width\", \"100%\");\r\n window.setTimeout(function () {\r\n $(elProgress).css(\"width\", \"0%\");\r\n $(elProgress).removeClass(\"progress-bar-animated\");\r\n el.prop('disabled', false);\r\n alert(xhr.responseText);\r\n }, 500);\r\n }\r\n });\r\n }\r\n\r\n Action_deleteimage(tableRow, id) {\r\n let thisObj = this;\r\n\r\n //Fetch the body of the table\r\n let table = this.elTable.getElementsByTagName('tbody')[0];\r\n\r\n //Initially delete the row\r\n table.deleteRow((tableRow - 1));\r\n\r\n //If there are no more rows insert default row\r\n if (table.rows.length === 0) {\r\n var newRow = table.insertRow(table.rows.length);\r\n newRow.outerHTML = '';\r\n } else {\r\n //Update existing rows with correct ids and attributes\r\n thisObj.HTML_updaterows();\r\n }\r\n\r\n //Instantiate payload to send to controller\r\n var data = new FormData();\r\n data.append('id', id);\r\n\r\n //Append AntiForgeryToken to payload\r\n var token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n data.append('__RequestVerificationToken', token);\r\n\r\n //Send a request to remove that image from image uploads\r\n $.ajax({\r\n type: 'POST',\r\n url: GLOBALROOTURL + '/ClientRequest/DeleteFileUpload',\r\n contentType: \"application/json; charset=utf-8\",\r\n data: data,\r\n processData: false,\r\n contentType: false,\r\n success: function () {\r\n //Image was removed\r\n thisObj.HTML_updatebutton();\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n //Image was not found\r\n alert(thrownError);\r\n }\r\n });\r\n }\r\n\r\n HTML_addimagetotable(data) {\r\n let thisObj = this;\r\n\r\n //Fetch the body of the table\r\n var table = this.elTable.getElementsByTagName('tbody')[0];\r\n\r\n //Delete table row if its the starting row\r\n if (table.rows[0].cells[1].innerHTML.trim() === '') {\r\n table.deleteRow(0);\r\n }\r\n\r\n table = this.elTable.getElementsByTagName('tbody')[0];\r\n var newRow = table.insertRow(table.rows.length);\r\n newRow.outerHTML = '' + table.rows.length + '' + data.get('image').name + '';\r\n let tableRow = table.rows.length;\r\n let id = data.get('uniqueid');\r\n $('#' + id).on('click', function (event) {\r\n thisObj.Action_deleteimage(tableRow, id);\r\n });\r\n }\r\n\r\n HTML_updaterows() {\r\n let thisObj = this;\r\n\r\n //Fetch the body of the table\r\n var table = this.elTable.getElementsByTagName('tbody')[0];\r\n\r\n //Loops through existing rows and changes Id and onlick function attributes\r\n for (let i = 0; i < table.rows.length; i++) {\r\n\r\n //Replace table Id with correct number\r\n table.rows[i].cells[0].innerHTML = i + 1;\r\n\r\n //Grab the image Id that was an attribute in the delete method.\r\n let id = table.rows[i].cells[2].firstChild.getAttribute('id').toString();\r\n\r\n //Assign the fetched image Id to the inner HTML\r\n table.rows[i].cells[2].innerHTML = '';\r\n $('#' + id).off('click');\r\n $('#' + id).on('click', function (event) {\r\n thisObj.Action_deleteimage(i + 1, id);\r\n });\r\n }\r\n }\r\n\r\n HTML_updatebutton() {\r\n let thisObj = this;\r\n var count = thisObj.elTable.getElementsByTagName('tbody')[0].querySelectorAll('.table-item').length;\r\n if (count >= thisObj.elMaximum) {\r\n thisObj.el.prop('disabled', true);\r\n }\r\n else {\r\n thisObj.el.prop('disabled', false);\r\n }\r\n }\r\n}\r\n\r\n//Instantiate on page load if matching HTML is found\r\nlet IFormFileList = [];\r\n$(function () {\r\n let elementsByClass = document.getElementsByClassName(\"IFormFile\");\r\n for (let i = 0; i < elementsByClass.length; i++) {\r\n IFormFileList.push(new IFormFile(elementsByClass.item(i)));\r\n };\r\n});","class ViewHomeEntryForm {\r\n\r\n //Methods\r\n constructor(target) {\r\n this.target = target;\r\n console.log('GLOBALROOTURL: ' + GLOBALROOTURL);\r\n console.log('View initialized');\r\n //this.sleepTest();\r\n }\r\n\r\n async sleepTest() {\r\n console.log('Sleep test A');\r\n await Apfco.sleep(2000);\r\n console.log('Sleep test B');\r\n await Apfco.sleep(2000);\r\n console.log('Sleep test C');\r\n }\r\n}\r\n\r\n//Instantiate on page load if matching HTML is found\r\nlet ViewHomeEntryFormList = [];\r\n$(function () {\r\n if (document.body.classList.contains('cHome') && document.body.classList.contains('aEntryForm')) {\r\n let elementsByClass = document.getElementsByClassName(\"viewWrapper\");\r\n for (let i = 0; i < elementsByClass.length; i++) {\r\n ViewHomeEntryFormList.push(new ViewHomeEntryForm(elementsByClass.item(i)));\r\n };\r\n }\r\n});","class ViewSharedLayoutPrimary {\r\n\r\n //Variables\r\n target;\r\n\r\n\r\n //Methods\r\n constructor(target) {\r\n let thisObj = this;\r\n this.target = target;\r\n this.disableFormButtonsOnSubmit();\r\n this.wrapTrademarkSymbolsWithSuperscriptTag();\r\n console.log('LayoutPrimary initialized');\r\n }\r\n\r\n disableFormButtonsOnSubmit() {\r\n //Make it so every submit button found in every form on the site is diabled when the form is submitted (solves numerous issues)\r\n //Fixes include the \"The provided anti-forgery token was meant for user \"\", but the current user is \"ACT-2JFD6AMVSN7C\".\" which is caused by users double-clicking on the login button\r\n //Note that this is NOT for security, as users can diable JS. This is only for avoiding user-unfriendly or confusing error messages\r\n $(this.target).find('form').each(function () {\r\n $(this).submit(function (event) {\r\n $(this).find(':input[type=submit]').each(function () {\r\n if (!$(this).attr('apfDontDisableOnSubmit')) { //Don't disable if the apfDontDisableOnSubmit=\"true\" attribute exists on the button\r\n $(this).prop('disabled', true);\r\n }\r\n });\r\n });\r\n });\r\n $(this.target).find('form').each(function () {\r\n let currentForm = this; //Get the current form\r\n $(this).find(':input[type=submit]').each(function () {\r\n if (!$(this).attr('apfDontDisableOnSubmit')) { //Don't disable if the apfDontDisableOnSubmit=\"true\" attribute exists on the button\r\n $(this).click(function (event) {\r\n $('').attr({ //Create a hidden property for the clicked button to submit along with the form. Solves the issue with disabled buttons not getting submitted. This way you can find which button was clicked\r\n type: 'hidden',\r\n name: $(this).attr('name'),\r\n value: $(this).val()\r\n }).insertBefore($(currentForm).children().first()); //Append to the start of the current form, instead of next to the button itself or the end of the form. Otherwise it may mess with any last-child CSS selectors\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n wrapTrademarkSymbolsWithSuperscriptTag() {\r\n //Wrap all registered trademark symbols with , as it applies to almost every design mockup we receive - see here https://stackoverflow.com/questions/19364581/adding-superscript-sup-tags-around-all-trademark-and-registered-trademark-symb\r\n let regexp = /[\\xAE]/;\r\n $('body :not(script,sup)').contents().filter(function () {\r\n return this.nodeType === 3 && (regexp.test(this.nodeValue));\r\n }).replaceWith(function () {\r\n return this.nodeValue.replace(regexp, '$&');\r\n });\r\n $('body :not(script,sup)').contents().filter(function () {\r\n return this.nodeType === 3;\r\n }).replaceWith(function () {\r\n return this.nodeValue.replace(/[™®©]/g, '$&');\r\n });\r\n }\r\n}\r\n\r\n//On page load, take all found elements with the classname and create objects for them to initialize\r\nlet ViewSharedLayoutPrimaryList = [];\r\n$(function () {\r\n let elementsByClass = document.getElementsByClassName(\"LayoutPrimary\");\r\n for (let i = 0; i < elementsByClass.length; i++) {\r\n ViewSharedLayoutPrimaryList.push(new ViewSharedLayoutPrimary(elementsByClass.item(i)));\r\n };\r\n});"]}