PageSourceSearch

https://proyectocr.com/dist/js/compiled-app.3.9.8.min.js

js proyectocr.com collected 2026-10-07 01:05:33 UTC 146,039 bytes, 1 lines download raw bytes

1var leantime=leantime||{},themeColor=jQuery("meta[name=theme-color]").attr("content");leantime.companyColor=themeColor;var colorScheme=jQuery("meta[name=color-scheme]").attr("content");leantime.colorScheme=colorScheme;var theme=jQuery("meta[name=theme]").attr("content");leantime.theme=theme;var appURL=jQuery("meta[name=identifier-URL]").attr("content");leantime.appUrl=appURL;var leantimeVersion=jQuery("meta[name=leantime-version]").attr("content");leantime.version=leantimeVersion,leantime.replaceSVGColors=function(){jQuery(document).ready((function(){"#1b75bb"!=leantime.companyColor&&jQuery("svg").children().each((function(){"#1b75bb"==jQuery(this).attr("fill")&&jQuery(this).attr("fill",leantime.companyColor)}))}))},leantime.handleAsyncResponse=function(e){if(void 0!==e&&void 0!==e.result&&void 0!==e.result.html){var t=jQuery(e.result.html);jQuery("body").append(t)}},jQuery.noConflict(),leantime.applyTouchDragGuards=function(){("ontouchstart"in window||navigator.maxTouchPoints>0)&&jQuery.ui&&(jQuery.ui.sortable&&jQuery.extend(jQuery.ui.sortable.prototype.options,{delay:200,distance:8}),jQuery.ui.draggable&&jQuery.extend(jQuery.ui.draggable.prototype.options,{delay:200,distance:8}))},leantime.initTooltips=function(e){window.innerWidth<1200||"ontouchstart"in window||navigator.maxTouchPoints>0?document.querySelectorAll("[data-tippy-content]").forEach((function(e){e._tippy&&e._tippy.destroy()})):(window.tippy&&tippy.setDefaultProps&&tippy.setDefaultProps({delay:[300,0]}),(e&&e.querySelectorAll?e:document).querySelectorAll("[data-tippy-content]").forEach((function(e){e._tippy||tippy(e,{delay:[300,0]})})))},jQuery(document).ready((function(){leantime.applyTouchDragGuards(),leantime.replaceSVGColors(),jQuery(".confetti").click((function(){confetti.start()})),leantime.initTooltips(),""!==jQuery(".login-alert .alert").text()&&jQuery(".login-alert").fadeIn(),document.addEventListener("scroll",(()=>{document.documentElement.dataset.scroll=window.scrollY}))})),htmx.onLoad((function(e){leantime.initTooltips(e),leantime.applyTouchDragGuards&&leantime.applyTouchDragGuards()})),leantime.htmxProgress=function(){var e=0,t=null,n=null;return{start:function(){e++,n&&(clearTimeout(n),n=null),(t||((t=document.getElementById("lt-htmx-progress"))||((t=document.createElement("div")).id="lt-htmx-progress",t.setAttribute("aria-hidden","true"),t.innerHTML='<div class="bar"></div>',(document.body||document.documentElement).appendChild(t)),t)).classList.add("active")},done:function(){0===(e=Math.max(0,e-1))&&(n=setTimeout((function(){0===e&&t&&t.classList.remove("active")}),150))}}}(),document.addEventListener("htmx:beforeRequest",(function(){leantime.htmxProgress.start()})),document.addEventListener("htmx:afterRequest",(function(){leantime.htmxProgress.done()})),leantime.showNotification=function(e){jQuery.get(leantime.appUrl+"/notifications/getLatestGrowl",(function(e){let t=JSON.parse(e);t.notification&&"undefined"!==t.notification&&jQuery.growl({message:t.notification,style:t.notificationType})}))},window.addEventListener("lt:ui:notify",leantime.showNotification),window.addEventListener("HTMX.ShowNotification",leantime.showNotification),leantime.snippets={copyUrl:function(e){var t=document.getElementById(e);t.select(),t.setSelectionRange(0,99999),navigator.clipboard.writeText(t.value),jQuery.growl({message:leantime.i18n.__("short_notifications.url_copied"),style:"success"})},copyToClipboard:function(e){navigator.clipboard.writeText(e),jQuery.growl({message:leantime.i18n.__("short_notifications.url_copied"),style:"success"})},initConfettiClick:function(){jQuery(".confetti").click((function(){confetti.start()}))},accordionToggle:function(e){var t=jQuery("#accordion_toggle_"+e).find("i.fa").first(),n="accordion_content-"+e,a="closed";t.hasClass("fa-angle-right")?(t.removeClass("fa-angle-right"),t.addClass("fa-angle-down"),jQuery("#accordion_content-"+e).slideDown("fast"),a="open"):(t.removeClass("fa-angle-down"),t.addClass("fa-angle-right"),jQuery("#accordion_content-"+e).slideUp("fast"),a="closed"),leantime.rpc("Api.Api.setSubmenuState",{submenu:n,state:a}).catch((function(e){console.error("Could not persist accordion state",e)}))},toggleTheme:function(e){var t=jQuery("#themeStyleSheet").attr("href");"light"==e?(t=t.replace("dark.css","light.css"),jQuery("#themeStyleSheet").attr("href",t)):"dark"==e&&(t=t.replace("light.css","dark.css"),jQuery("#themeStyleSheet").attr("href",t))},toggleFont:function(e){jQuery("#fontStyleSetter").html(":root { --primary-font-family: '"+e+"', 'Helvetica Neue', Helvetica, sans-serif; }")},toggleColors:function(e,t){jQuery("#colorSchemeSetter").html(":root { --accent1: "+e+"; --accent2: "+t+"}")},toggleBg:function(e){var t=jQuery("#themeStyleSheet").attr("href");"minimal"==e?(t=t.replace("default","minimal"),jQuery("#themeStyleSheet").attr("href",t)):"default"==e&&(t=t.replace("minimal","default"),jQuery("#themeStyleSheet").attr("href",t))}},leantime.modals=function(){var e=null;return{openModal:function(){var t={sizes:{minW:500,minH:200},resizable:!0,autoSizable:!0,callbacks:{beforePostSubmit:function(){if(jQuery(".showDialogO
1nLoad").show(),window.leantime?.tiptapController?.registry){var e=window.leantime.tiptapController.registry.destroyAll();e>0&&console.log("[Modal] Destroyed",e,"Tiptap editor(s)")}},beforeShowCont:function(){jQuery(".showDialogOnLoad").show(),window.leantime?.tiptapController?.registry&&window.leantime.tiptapController.registry.destroyAll()},afterShowCont:function(){window.htmx.process(".nyroModalCont"),jQuery(".formModal, .modal").nyroModal(t),window.leantime?.initTooltips?.(document.querySelector(".nyroModalCont")),setTimeout((function(){if(window.leantime?.tiptapController?.initEditors){var e=document.querySelector(".nyroModalCont");e&&window.leantime.tiptapController.initEditors(e)}}),100)},beforeClose:function(){e=null;try{history.pushState("",document.title,window.location.pathname+window.location.search)}catch(e){console.log("Issue pushing history")}"function"==typeof window.globalModalCallback?window.globalModalCallback():location.reload()}},titleFromIframe:!0},n=window.location.hash.substring(1);(n.includes("showTicket")||n.includes("ideaDialog")||n.includes("articleDialog"))&&window.innerWidth>=1200&&(t.sizes.minW=1800,t.sizes.minH=1800),window.innerWidth<1200&&(t.sizes.minW=Math.min(t.sizes.minW,window.innerWidth-20));var a=leantime.appUrl.replace(/\/$/,""),o=n.split("/");if(o.length>2&&"tab"!==o[1]){var i=a+""+n;if(i===e&&jQuery.nmTop())return;if(e=i,"function"!=typeof jQuery.nmManual)return console.warn("[Modal] jQuery.nmManual not available, retrying..."),void setTimeout((function(){"function"==typeof jQuery.nmManual?jQuery.nmManual(i,t):console.error("[Modal] jQuery.nmManual unavailable after retry — nyroModal may not be loaded.")}),100);jQuery.nmManual(i,t)}},setCustomModalCallback:function(e){"function"==typeof e&&(window.globalModalCallback=e)},closeModal:function(){jQuery.nmTop()&&jQuery.nmTop().close()}}}(),jQuery(document).ready((function(){leantime.modals.openModal()})),window.addEventListener("hashchange",(function(){leantime.modals.openModal()}));var onCloseModalEvent=function(e){leantime.modals.closeModal()};window.addEventListener("lt:ui:modal.close",onCloseModalEvent),window.addEventListener("closeModal",onCloseModalEvent),window.addEventListener("HTMX.closemodal",onCloseModalEvent),window.addEventListener("Htmx.CloseModal",onCloseModalEvent),leantime.dateController=function(){function e(e){return{numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),monthNamesShort:leantime.i18n.__("language.monthNamesShort").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek"),onSelect:e}}function t(e){var t,n=leantime.dateHelper.getFormatFromSettings("dateformat","jquery");try{t=jQuery.datepicker.parseDate(n,e.value)}catch(e){t=null,console.log(e)}return t}return{initDateRangePicker:function(n,a,o){Date.prototype.addDays=function(e){return this.setDate(this.getDate()+e),this},jQuery.datepicker.setDefaults({beforeShow:function(e){if(jQuery(e).attr("readonly"))return!1}});var i=jQuery(n).datepicker(e()).on("change",(function(e){r.datepicker("option","minDate",t(this)),""==jQuery(a).val()&&jQuery(a).val(jQuery(n).val())})),r=jQuery(a).datepicker(e()).on("change",(function(){i.datepicker("option","maxDate",t(this))}))},initDatePicker:function(t,n){jQuery(t).datepicker(e(n))}}}(),leantime.dateHelper=function(){var e={jquery:({},{d:"dd",D:"D",j:"d",l:"DD",N:"",S:"",w:"",z:"o",W:"",F:"MM",m:"mm",M:"M",n:"m",t:"",L:"",o:"yy",Y:"yy",y:"y",a:"",A:"",B:"",g:"",G:"",h:"",H:"",i:"",s:"",u:"",e:"",I:"",O:"",P:"",T:"",Z:"",c:"",r:"",U:"@"}),luxon:({},{d:"dd",D:"ccc",j:"d",l:"cccc",N:"c",S:"",w:"c",z:"o",W:"WW",F:"MMMM",m:"LL",M:"LLL",n:"L",t:"",L:"",o:"kk",Y:"yyyy",y:"yy",a:"a",A:"a",B:"",g:"h",G:"H",h:"hh",H:"HH",i:"mm",s:"ss",u:"SSS",v:"SSS",e:"z",I:"",O:"ZZ",P:"ZZ",T:"ZZZ",Z:"",c:"",r:"",U:"X"})},t=function(t,n){let a=e[n],o="";return t.split("").forEach((function(e){o=void 0!==a[e]?o+""+a[e]:o+""+e})),o};return{mapFormat:t,getFormatFromSettings:function(e,n){let a=leantime.i18n.__("language."+e);return t(a,n)}}}(),leantime.accessibilityController=function(){var e=function(){jQuery(".chosen-container").each((function(){var e=jQuery(this);if(!e.data("a11y-enhanced")){var t=null,n=e.attr("id");if(n&&n.indexOf("_chosen")>-1){var a=n.replace("_chosen","");t=jQuery("#"+a)}if(t&&t.length||(t=e.prev("select[data-placeholder]")),t&&t.length||(t=e.siblings("select").first()),t&&t.length){var o="";if(a=t.attr("id")){var i=jQuery('label[for="'+a+'"]');i.length&&(o=i.text().trim())}var r=e.find(".chosen-single"),l=e.find(".chosen-choices");r.length&&r.attr({role:"combobox","aria-haspopup":"listbox","aria-expanded":"false","aria-label":o||t.attr("data-placeholder")||"Select option",tabindex:"0"}),l.length&&l.attr({role:"combobox","aria-haspopup":"listbox","aria-expanded":"false","aria-label":o||t.attr("data-placeholder")||"Select options","aria-multiselectable":"true",tabindex:"0"}),e.on("chosen:showing_dropdown",(function(){r.add(l).attr("aria-expanded","true")})),e.on("chosen:hiding_dropdown",(function(){r.add(l).attr("aria-expanded","fal
1se")})),e.find(".chosen-drop").attr("role","listbox"),e.find(".chosen-results li").attr("role","option"),e.data("a11y-enhanced",!0)}}}))},t=function(){jQuery(".ss-main").each((function(){var e=jQuery(this),t=e.prev("select");if(t.length){var n=jQuery('label[for="'+t.attr("id")+'"]'),a=n.length?n.text().trim():"";e.attr({role:"combobox","aria-haspopup":"listbox","aria-label":a||t.attr("data-placeholder")||"Select option","aria-multiselectable":t.attr("multiple")?"true":"false"})}}))},n=function(){jQuery("div.tagsinput").each((function(){var e=jQuery(this),t=e.next('input[type="text"]');if(t.length){var n=t.attr("id"),a=jQuery('label[for="'+n+'"]'),o=a.length?a.text().trim():"Enter tags";e.attr({role:"list","aria-label":o}),e.find("span.tag").each((function(){jQuery(this).attr("role","listitem")})),e.find("input").attr({"aria-label":"Add new tag","aria-describedby":n+"-help"}),n&&!jQuery("#"+n+"-help").length&&e.after('<span id="'+n+'-help" class="sr-only">Type and press enter to add tags. Press backspace to remove the last tag.</span>')}}))},a=function(){jQuery("input.hasDatepicker").each((function(){var e=jQuery(this),t=e.attr("id"),n=jQuery('label[for="'+t+'"]'),a=n.length?n.text().trim():"";e.attr({role:"textbox","aria-label":a||"Select date","aria-describedby":t+"-help"}),t&&!jQuery("#"+t+"-help").length&&e.after('<span id="'+t+'-help" class="sr-only">Date input. Use arrow keys to navigate calendar. Press enter to select date.</span>')})),jQuery(document).on("focus","input.hasDatepicker",(function(){setTimeout((function(){var e=jQuery("#ui-datepicker-div");e.is(":visible")&&e.attr({role:"dialog","aria-label":"Choose date","aria-modal":"true"})}),100)}))},o=function(){jQuery('input[type="time"]').each((function(){var e=jQuery(this),t=e.attr("id");if(t&&!jQuery('label[for="'+t+'"]').length){var n="Time",a=e.closest(".form-group").find("label").first();a.length&&(n=a.text().trim()+" time"),e.attr("aria-label",n)}}))},i=function(){jQuery(".ticketBox").each((function(){var e=jQuery(this);e.attr("tabindex")||e.attr("tabindex","0");var t=e.find(".ticketHeadline").text().trim();t&&e.attr({role:"article","aria-label":"Task: "+t}),e.data("keyboard-bound")||(e.on("keydown",(function(t){var n=jQuery(t.target),a=n.is('a, button, input, select, textarea, [role="button"], [tabindex]')||n.closest(".dropdown-toggle, .ticketDropdown, .inlineDropDownContainer").length>0;if(("Enter"===t.key||" "===t.key)&&!a&&t.target===this){t.preventDefault();var o=e.find("a").first();o.length&&o[0].click()}})),e.data("keyboard-bound",!0))}))};return{init:function(){e(),t(),n(),a(),o(),i(),jQuery(document).on("htmx:afterSwap shown.bs.modal",(function(){setTimeout((function(){e(),t(),n(),a(),o(),i()}),100)})),jQuery(document).on("chosen:ready",(function(){setTimeout(e,100)})),setTimeout(e,1e3)},enhanceChosenAccessibility:e,enhanceSlimSelectAccessibility:t,enhanceTagsInputAccessibility:n,enhanceDatepickerAccessibility:a,fixTimepickerLabels:o,enhanceKanbanCardAccessibility:i}}(),jQuery(document).ready((function(){leantime.accessibilityController.init()})),leantime.wikiController={initTree:function(e,t){jQuery(e).jstree({core:{expand_selected_onload:!0,themes:{dots:!1}},state:{key:"tree_state"},types:{default:{icon:"far fa-file-alt"}},plugins:["wholerow","types","state"]}),jQuery(e).on("ready.jstree",(function(e,n){jQuery(this).jstree("deselect_all"),jQuery(this).jstree("select_node","treenode_"+t,!0),jQuery(this).jstree("save_state")})),jQuery(e).on("activate_node.jstree",(function(e,t){jQuery(this).jstree("save_state"),null!=t&&null!=t.node&&null!=t.node.id&&(window.location.href=t.node.a_attr.href)}))}},leantime.widgetController=function(){var e=[];GridStack.renderCB=function(e,t){t.content&&"undefined"!=typeof DOMPurify&&(e.innerHTML=DOMPurify.sanitize(t.content))};var t=function(){let t=e.save();t.sort(((e,t)=>e.y===t.y?e.x-t.x:e.y-t.y));let n=null;arguments.length>0&&"toggleWidget"===arguments[0].action&&(n={widgetId:arguments[0].widgetId,visible:arguments[0].visible}),t.forEach((function(e){let t=jQuery(e.content).find("[hx-get]").first();e.id=t.attr("id"),e.widgetUrl=t.attr("hx-get"),e.widgetTrigger=t.attr("hx-trigger"),null==e.x&&(e.x=0),e.gridX=e.x,null==e.y&&(e.y=0),e.gridY=e.y,null==e.w&&(e.w=1),e.gridWidth=e.w,null==e.h&&(e.h=1),e.gridHeight=e.h,e.content=""})),jQuery.post(leantime.appUrl+"/widgets/widgetManager",{action:"saveGrid",data:t,visibilityData:n},(function(e,t){}))},n=function(n){n.remove(),e.removeWidget(n,!0),t()},a=function(e){document.querySelector(".grid-stack").gridstack.resizeToContent(e,!1),t()},o=function(e){return'<div class="widgetInner">
1        <div class="'+("default"==e.widgetBackground?"tw-pb-l":"")+'">\n            <div class="stickyHeader" style="padding:15px; height:50px;  width:100%;">\n               <div class="grid-handler-top tw-h-[40px] tw-cursor-grab tw-float-left tw-mr-sm">\n                    <i class="fa-solid fa-grip-vertical"></i>\n                </div>\n           '+(""!=e.name?'<h5 class="subtitle tw-pb-m tw-float-left tw-mr-sm">'+e.name+"</h5>":"")+'\n            <div class="inlineDropDownContainer tw-float-right">\n                <a href="javascript:void(0);" class="dropdown-toggle ticketDropDown editHeadline" data-toggle="dropdown">\n                    <i class="fa fa-ellipsis-v" aria-hidden="true"></i>\n                </a>\n                <ul class="dropdown-menu">\n                    <li><a href="javascript:void(0)" class="fitContent"><i class="fa-solid fa-up-right-and-down-left-from-center"></i> Resize to fit content</a></li>\n                        <li><a href="javascript:void(0)" class="removeWidget"><i class="fa fa-eye-slash"></i> Hide</a></li>\n                </ul>\n            </div>\n\n        </div>\n <div class="widgetContent tw-px-l">\n             <div hx-get="'+e.widgetUrl+'" hx-trigger="'+e.widgetTrigger+'" id="'+e.id+'"></div>\n        </div>\n       </div>\n        <div class="clear"></div>\n    </div>\n'};return{resizeWidget:a,removeWidget:n,saveGrid:t,initGrid:function(){(e=GridStack.init({margin:"0px 15px 15px 0px",handle:".grid-handler-top",minRow:2,cellHeight:"30px",float:!0,draggable:{handle:".grid-handler-top",appendTo:"body"},lazyLoad:!1,columnOpts:{breakpointForWindow:!0,breakpoints:[{w:1199,c:1}]}})).on("dragstop",(function(e,n){t()})),e.on("resizestop",(function(e,n){t()}));var o,i=!1,r=function(){if(e){var t=window.innerWidth<1200;if(e.setStatic(t),e.margin(t?"0px 5px 5px 0px":"0px 15px 15px 0px"),t&&!i){var n=document.getElementById("widget_wrapper_welcome");if(n){try{e.removeWidget(n,!1),e.compact()}catch(e){}i=!0}}}};r(),window.addEventListener("resize",(function(){clearTimeout(o),o=setTimeout(r,200)})),jQuery(".grid-stack-item").each((function(){jQuery(this).find(".removeWidget").click((function(){n(jQuery(this).closest(".grid-stack-item")[0])})),jQuery(this).find(".fitContent").click((function(){a(jQuery(this).closest(".grid-stack-item")[0])}))})),jQuery(document).ready((function(){jQuery("#gridBoard").css("opacity",1)}))},toggleWidgetVisibility:function(e,a,i){let r=document.querySelector(".grid-stack").gridstack,l=jQuery(a).is(":checked");!function(e,t){let n=e.gridX||0,a=e.gridY||0,o=e.gridWidth||2,i=e.gridHeight||2;if(t.willItFit({x:n,y:a,width:o,height:i}))return{x:n,y:a};let r=Math.max(...t.engine.nodes.map((e=>e.y+e.h)),0);for(let e=0;e<=r+1;e++)for(let n=0;n<=12-o;n++)if(t.willItFit({newX:n,newY:e,width:o,height:i}))return{x:n,y:e}}(i,r);if(l){const n=document.createElement("div");n.className="grid-stack-item";const a=document.createElement("div");a.className=`grid-stack-item-content tw-p-none ${"default"==i.widgetBackground?"maincontentinner":i.background}`,a.innerHTML=o(i),n.appendChild(a),r.el.appendChild(n),r.makeWidget(n,{x:i.gridX||0,y:i.gridY||50,w:i.gridWidth||2,h:i.gridHeight||2}),htmx.process(n),t({action:"toggleWidget",widgetId:e,visible:l})}else n(jQuery("#"+e).closest(".grid-stack-item")[0])}}}(),leantime.usersService={saveUserPhoto:function(e){leantime.usersRepository.saveUserPhoto(e)}},leantime.usersRepository={saveUserPhoto:function(e){var t=new FormData;t.append("file",e),jQuery.ajax({type:"POST",url:leantime.appUrl+"/users/profileImage",data:t,processData:!1,contentType:!1,success:function(e){jQuery("#save-picture").removeClass("running"),location.reload()},error:function(e){console.log(e)}})},updateUserViewSettings:function(e,t){leantime.rpc("Users.Users.updateUserSettings",{category:"views",setting:e,value:t}).catch((function(e){console.error("Could not save view setting",e)}))}},leantime.usersController=function(){var e=function(){jQuery("#profileImg").croppie("destroy"),jQuery("#previousImage").show()};return{readURL:function(t){if(e(),t.files&&t.files[0]){var n=new FileReader,a=jQuery("#profileImg");n.onload=function(e){_uploadResult=a.croppie({enableExif:!0,viewport:{width:175,height:175,type:"circle"},boundary:{width:200,height:200}}),_uploadResult.croppie("bind",{url:e.currentTarget.result}),jQuery("#previousImage").hide()},n.readAsDataURL(t.files[0])}},clearCroppie:e,saveCroppie:function(){jQuery("#save-picture").addClass("running"),jQuery("#profileImg").attr("src",leantime.appUrl+"/images/loaders/loader28.gif"),_uploadResult.croppie("result",{type:"blob",circle:!0}).then((function(e){leantime.usersService.saveUserPhoto(e)}))},initUserTable:function(){jQuery(document).ready((function(){jQuery("#allUsersTable").DataTable({language:{decimal:leantime.i18n.__("datatables.decimal"),emptyTable:leantime.i18n.__("datatables.emptyTable"),info:leantime.i18n.__("datatables.info"),infoEmpty:leantime.i18n.__("datatables.infoEmpty"),infoFiltered:leantime.i18n.__("datatables.infoFiltered"),infoPostFix:leantime.i18n.__("datatables.infoPostFix"),thousands:leantime.i18n.__("datatables.thousands"),lengthMenu:leantime.i18n.__("datatables.lengthMenu"),loadingRecords:leantime.i18n.__("datatables.loadingRecords"),processing:leantime.i18n.__("datatables.processing"),search:leantime.i18n.__("datatables.search"),zeroRecords:leantime.i18n.__("datatables.zeroRecords"),paginate:{first:leantime.i18n.__("datatables.first"),last:leantime.i18n.__("datatables.last"),next:leantime.i18n.__("datatables.next"),previous:leantime.i18n.__("datatables.previous")},aria:{sortAscending:leantime.i18n.__("datatables.sortAscending"),sortDe
1scending:leantime.i18n.__("datatables.sortDescending")}},dom:'<"top">rt<"bottom"ilp><"clear">',searching:!1,displayLength:100})}))},_initModals:function(){var e={sizes:{minW:400,minH:350},resizable:!0,autoSizable:!0,callbacks:{afterShowCont:function(){jQuery(".showDialogOnLoad").show(),jQuery(".userImportModal").nyroModal(e)}}};jQuery(".userImportModal").nyroModal(e)},checkPWStrength:function(e){let t,n=document.getElementById(e),a=document.getElementById("pwStrength"),o=new RegExp("(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])(?=.{8,})"),i=new RegExp("((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])(?=.{6,}))|((?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])(?=.{8,}))");n.addEventListener("input",(()=>{a.style.display="block",clearTimeout(t),t=setTimeout((()=>{return e=n.value,void(o.test(e)?(a.style.backgroundColor="#107530",a.textContent=leantime.i18n.__("label.strong")):i.test(e)?(a.style.backgroundColor="#C5850D",a.textContent=leantime.i18n.__("label.medium")):(a.style.backgroundColor="#CC6B6B",a.textContent=leantime.i18n.__("label.weak")));var e}),500),0!==n.value.length?a.style.display:a.style.display="none"}))},initUserEditModal:function(){var e={sizes:{minW:900,minH:250},resizable:!0,autoSizable:!0,callbacks:{afterShowCont:function(){jQuery(".showDialogOnLoad").show(),jQuery(".userEditModal").nyroModal(e)},beforeClose:function(){location.reload()}}};jQuery(".userEditModal").nyroModal(e)}}}(),leantime.timesheetsController=function(){var e=!1;return{initTimesheetsTable:function(e){jQuery(document).ready((function(){var e=jQuery("#allTimesheetsTable").DataTable({language:{decimal:leantime.i18n.__("datatables.decimal"),emptyTable:leantime.i18n.__("datatables.emptyTable"),info:leantime.i18n.__("datatables.info"),infoEmpty:leantime.i18n.__("datatables.infoEmpty"),infoFiltered:leantime.i18n.__("datatables.infoFiltered"),infoPostFix:leantime.i18n.__("datatables.infoPostFix"),thousands:leantime.i18n.__("datatables.thousands"),lengthMenu:leantime.i18n.__("datatables.lengthMenu"),loadingRecords:leantime.i18n.__("datatables.loadingRecords"),processing:leantime.i18n.__("datatables.processing"),search:leantime.i18n.__("datatables.search"),zeroRecords:leantime.i18n.__("datatables.zeroRecords"),paginate:{first:leantime.i18n.__("datatables.first"),last:leantime.i18n.__("datatables.last"),next:leantime.i18n.__("datatables.next"),previous:leantime.i18n.__("datatables.previous")},aria:{sortAscending:leantime.i18n.__("datatables.sortAscending"),sortDescending:leantime.i18n.__("datatables.sortDescending")},buttons:{colvis:leantime.i18n.__("datatables.buttons.colvis"),csv:leantime.i18n.__("datatables.buttons.download")}},dom:'<"top">rt<"bottom"ilp><"clear">',searching:!1,stateSave:!0,displayLength:100});new jQuery.fn.dataTable.Buttons(e,{buttons:[{extend:"csvHtml5",title:leantime.i18n.__("label.filename_fileexport"),charset:"utf-8",bom:!0,exportOptions:{format:{body:function(e,t,n,a){return void 0!==jQuery(a).data("order")&&(e=jQuery(a).data("order")),e}}}},{extend:"colvis",columns:":not(.noVis)"}]}).container().appendTo(jQuery("#tableButtons"));jQuery("#allTimesheetsTable").on("column-visibility.dt",(function(t,n,a,o){e.draw(!1)}))}))},initEditTimeModal:function(){var t={sizes:{minW:700,minH:1e3},resizable:!0,autoSizable:!0,callbacks:{beforeShowCont:function(){jQuery(".showDialogOnLoad").show(),!0===e&&(e=!1,location.reload())},afterShowCont:function(){jQuery(".editTimeModal").nyroModal(t)},beforeClose:function(){location.reload()}},titleFromIframe:!0};jQuery(".editTimeModal").nyroModal(t)}}}(),(leantime=leantime||{}).ticketsRepository=function(){function e(e,t){return leantime.rpc("Tickets.Tickets.patchTicket",{id:e,values:t})}function t(e){return function(t){jQuery.growl({message:t&&t.message?t.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+e,t)}}return{updateMilestoneDates:function(n,a,o,i){let r=leantime.dateHelper.getFormatFromSettings("dateformat","luxon"),l=leantime.dateHelper.getFormatFromSettings("timeformat","luxon"),s=luxon.DateTime.fromSQL(a).toFormat(r),d=luxon.DateTime.fromSQL(a).toFormat(l);e(n,{editFrom:s,editTo:luxon.DateTime.fromSQL(o).toFormat(r),timeFrom:d,timeTo:luxon.DateTime.fromSQL(o).toFormat(l),sortIndex:i}).catch(t(n))},updateRemainingHours:function(n,a,o){e(n,{hourRemaining:a}).then((function(){o()})).catch(t(n))},updatePlannedHours:function(n,a,o){e(n,{planHours:a}).then((function(){o()})).catch(t(n))},updateDueDates:function(n,a,o){e(n,{dateToFinish:a}).then((function(){o()})).catch(t(n))},updateEditFromDates:function(n,a,o){e(n,{editFrom:a}).then((function(){o()})).catch(t(n))},updateEditToDates:function(n,a,o){e(n,{editTo:a}).then((function(){o()})).catch(t(n))}}}(),leantime.ticketsController=function(){function e(){let e=[];jQuery(".sortableTicketList").each((function(t){jQuery(this).find(".column").each((function(t){void 0===e[t]&&(e[t]=0);var n=jQuery(this).find(".moveable").length;e[t]+=n}))})),jQuery(".widgettitle .count").each((function(t){jQuery(this).text(e[t])}))}function t(){jQuery(".kanban-swimlane-row").each((function(){var e=jQuery(this),t=e.attr("id");if(t){t.replace("swimlane-row-","");var n=e.find(".kanban-swimlane-content").find(".moveable").length,a=e.find(".kanban-swimlane-sidebar");a.find(".kanban-lane-count").text(n);var o=(a.attr("aria-label")||"").replace(/\d+ tasks/,n+" tasks");a.attr("aria-label",o)}})),jQuery(".kanban-swimlane-row").each((function(){var e=jQuery(this),t=e.find(".kanban-swimlane-content"),n=e.find(".micro-progress-bar .progress-segments");if(n.length){var a={},o=0;t.find(".contentInner").each((function(){var e=jQuery(this),t=(e.attr("class")||"").match(/status_(-?\d+)/);if(t){var n=t[1],i=e.find(".moveable").length;i>0&&(a[n]=i,o+=i)}}));var i=n.find(".status-segment");
1if(0===o)return i.css("flex","0 1 0%").find(".segment-count").text(""),void i.attr("data-tippy-content","");i.each((function(){var e=jQuery(this),t=e.attr("class");if(t){var n=t.match(/status-(-?\d+)/);if(n){var i=n[1],r=a[i]||0,l=r/o*100;e.css("flex",l+" 1 0%");var s=e.find(".segment-count");s.length&&s.text(r>0?r:"");var d=(e.attr("data-tippy-content")||"").match(/^([^:]+):/),u=d?d[1]:"Status "+i;e.attr("data-tippy-content",r>0?u+": "+r:"")}}}))}}))}var n=function(n,a){var o=jQuery("#ticket_"+n);if(o.length){var i=o.closest(".contentInner"),r=(i.attr("class")||"").match(/status_(\d+)/);if(!r)return console.warn("Could not determine status for ticket:",n),void location.reload();var l=r[1],s=jQuery("#kanboard-"+a+" .contentInner.status_"+l);if(!s.length)return console.warn("Target swimlane not found:",a,l),void location.reload();i[0]!==s[0]&&(o.addClass("card-moving-out"),setTimeout((function(){o.detach().appendTo(s),o.removeClass("card-moving-out").addClass("card-moving-in"),e(),t(),s.sortable&&s.sortable("refresh"),setTimeout((function(){o.removeClass("card-moving-in")}),300)}),200))}else console.warn("Card not found for ticket ID:",n)};return{toggleFilterBar:function(){jQuery(".filterBar").toggle()},initGanttChart:function(e,t,n){function a(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}jQuery(document).ready((function(){var o=!0;if(!1===n)var i=new Gantt("#gantt",e,{header_height:55,column_width:20,step:24,view_modes:["Day","Week","Month"],bar_height:40,static_progress_indicator:!0,bar_corner_radius:10,arrow_curve:10,padding:20,view_mode:t,date_format:leantime.i18n.__("language.momentJSDate"),language:leantime.i18n.__("language.code").slice(0,2),additional_rows:5,custom_popup_html:function(e){var t=e._end,n=(new Date(t),jQuery.datepicker.formatDate(leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),new Date(t))),o='<div class="details-container" style="min-width:600px;"> ';return void 0!==e.projectName&&(o+="<h3><b>"+e.projectName+"</b></h3>"),o+="<small>"+e.type+" #"+e.id+" </small>","milestone"===e.type?o+='<h4><a href="#/tickets/editMilestone/'+e.id+'" >'+a(e.name)+"</a></h4><br /> <p>"+leantime.i18n.__("text.expected_to_finish_by")+" <strong>"+n+"</strong><br /> "+Math.round(e.progress)+'%</p> <a href="#/tickets/editMilestone/'+e.id+'" ><span class="fa fa-map"></span> '+leantime.i18n.__("links.edit_milestone")+'</a> | <a href="'+leantime.appUrl+"/tickets/showKanban?milestone="+e.id+'"><span class="fa-pushpin"></span> '+leantime.i18n.__("links.view_todos")+"</a> ":o+='<h4><a href="#/tickets/showTicket/'+e.id+'">'+a(e.name)+'</a></h4><br /> <a href="#/tickets/showTicket/'+e.id+'"><span class="fa fa-thumb-tack"></span> '+leantime.i18n.__("links.edit_todo")+"</a> ",o+="</div>"},on_click:function(e){},on_date_change:function(e,t,n){leantime.ticketsRepository.updateMilestoneDates(e.id,t,n,e._index+1)},on_sort_change:function(e){for(var t={},n=0;n<e.length;n++)t[e[n].id]=e[n]._index+1;leantime.rpc("Tickets.Tickets.sortTickets",{params:t}).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not sort tickets",e)}))},on_progress_change:function(e,t){},on_view_change:function(e){o||leantime.usersRepository.updateUserViewSettings("roadmap",e)},on_popup_show:function(e){}});else i=new Gantt("#gantt",e,{readonlyGantt:!0,resizing:!1,progress:!1,is_draggable:!1,view_modes:["Day","Week","Month"],view_mode:t,custom_popup_html:function(e){var t=e._end,n=(new Date(t),jQuery.datepicker.formatDate(leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),new Date(t))),o='<div class="details-container" style="min-width:600px;"> ';return void 0!==e.projectName&&(o+="<h3><b>"+e.projectName+"</b></h3>"),o+="<small>"+e.type+" #"+e.id+" </small>","milestone"===e.type?o+="<h4>"+a(e.name)+"</h4><br /> <p>"+leantime.i18n.__("text.expected_to_finish_by")+" <strong>"+n+"</strong><br /> "+Math.round(e.progress)+'%</p> <a href="'+leantime.appUrl+"/tickets/showKanban?milestone="+e.id+'"><span class="fa-pushpin"></span> '+leantime.i18n.__("links.view_todos")+"</a> ":o+='<h4><a href="#/tickets/showTicket/'+e.id+'">'+a(e.name)+'</a></h4><br /> <a href="#/tickets/showTicket/'+e.id+'"><span class="fa fa-thumb-tack"></span> '+leantime.i18n.__("links.edit_todo")+"</a> ",o+="</div>"},on_click:function(e){},on_date_change:function(e,t,n){},on_progress_change:function(e,t){},on_view_change:function(e){o||leantime.usersRepository.updateUserViewSettings("roadmap",e)}});jQuery("#ganttTimeControl").on("click","a",(function(){var e=jQuery(this),t=e.attr("data-value");i.change_view_mode(t),e.parent().parent().find("a").removeClass("active"),e.addClass("active");var n=e.text();jQuery(".viewText").text(n)})),o=!1}))},updateRemainingHours:function(e,t){var n=jQuery(e).val();leantime.ticketsRepository.updateRemainingHours(t,n,(function(){jQuery.growl({message:leantime.i18n.__("short_notifications.remaining_hours_updated"),style:"success"})}))},updatePlannedHours:function(e,t){var n=jQuery(e).val();leantime.ticketsRepository.updatePlannedHours(t,n,(function(){jQuery.growl({message:leantime.i18n.__("short_notifications.planned_hours_updated"),style:"success"})}))},initTimeSheetChart:function(e,t,n,a){var o=document.getElementById(a).getContext("2d");new Chart(o,{type:"line",data:{labels:e,datasets:[{label:leantime.i18n.__("label.booked_hours"),backgroundColor:"rgba(201,48,44, 0.5)",borderColor:"rgb(201,48,44)",data:t},{label:leantime.i18n.__("label.planned_hours"),backgroundColor:"rgba(54, 162, 235, 0.5)",borderColor:"rgb(54, 162, 235)",data:n}]},options:{scales:{x:{display:!0,title:{display:!0,text:leantime.i18n.__("label.booked_hours")},type:"time",time:{unit:"day"}},y:{display:!0,title:{display:!0,text:leantime.i18n.__("label.planned_hours")},ticks:{beginAtZero:!0}}}}})},initTicketTabs:function(){jQuery(document).ready((function(){let e=new URL(window.location.href),t=e.searchParams.get("tab"),n=0;t&&(n=jQuery(".ticketTabs").find('a[href="#'+t+'"]').parent().index()),jQuery(".ticketTabs").tabs({create:function(e,t){jQuery(".ticketTabs").css("visibility","visible")},activate:function(t,n){e=new URL(window.location.href),e.searchParams.set("tab",n.newPanel[0].id),window.history.replaceState(null,null,e)},load:function(){},enable:function(){},active:n})}))},initTicketSearchSubmit:function(e){jQuery("#ticketSearch").on("submit",(function(t){t.preventDefault();var n=jQuery("#projectIdInput").val(),a=jQuery("#userSelect").val(),o=jQuery("#milestoneSelect").val(),i=jQuery("#termInput").val(),r=jQuery("#sprintSelect").val(),l=jQuery("#typeSelect").val(),s=jQuery("#prioritySelect").val(),d=jQuery("#statusSelect").val(),u=jQuery("#projectsSelect").val(),c=jQuery("#sortBySelect").val(),m=jQuery("input[name='groupBy']:checked").val(),p=jQuery("input[name='showTasks']:checked").val(),g="?search=true";""!=n&&null!=n&&(g=g+"&projectId="+encodeURIComponent(n)),""!=a&&null!=a&&(g=g+"&users="+encodeURIComponent(a)),""!=o&&null!=o&&(g=g+"&milestone="+encodeURIComponent(o)),""!=i&&null!=i&&(g=g+"&term="+encodeURIComponent(i)),""!=r&&null!=r&&(g=g+"&sprint="+encodeURIComponent(r)),""!=l&&null!=l&&(g=g+"&type="+encodeURIComponent(l)),""!=s&&null!=s&&(g=g+"&priority="+encodeURIComponent(s)),""!=d&&null!=d&&(g=g+"&status="+encodeURIComponent(d)),""!=u&&null!=u&&(g=g+"&projects="+encodeURIComponent(u)),""!=c&&null!=c&&(g=g+"&sort="+encodeURIComponent(c)),""!=m&&null!=m&&(g=g+"&groupBy="+encodeURIComponent(m)),""!=p&&null!=p&&(g=g+"&showTasks="+encodeURIComponent(p));var y=e+g;window.location.href=y}))},initTicketKanban:function(n){var a=n;jQuery(".sortableTicketList.kanbanBoard .ticketBox").hover((function(){jQuery(this).css("background","var(--kanban-card-hover)")}),(function(){jQuery(this).css("background","var(--kanban-card-bg)")}));jQuery(".sortableTicketList").each((function(){jQuery(this).find(".contentInner").sortable({connectWith:".contentInner",items:"> .moveable",tolerance:"intersect",placeholder:"ui-state-highlight",forcePlaceholderSize:!0,cancel:".portlet-toggle,:input,a,input",distance:10,start:function(e,t){var n,a,o;t.item.addClass("tilt"),n=t.item,a=n.position().left,o=function(e){e.pageX+5>a?(n.addClass("right"),n.removeClass("left")):e.pageX<a+5?(n.addClass("left"),n.removeClass("right")):(n.removeClass("left"),n.removeClass("right")),a=e.pageX},jQuery("html").bind("mousemove",o),n.data("move_handler",o);var i=t.item.closest(".sortableTicketList.kanbanBoard");t.item.data("originalSwimlaneId",i.attr("id"))},stop:function(n,o){o.item.removeClass("tilt"),jQuery("html").unbind("mousemove",o.item.data("move_handler")),o.item.removeData("move_handler"),e(),t(),jQuery(".sortableTicketList").find(".contentInner").each((function(){var e=jQuery(this);if(e.find(".moveable").length>0){e.removeClass("empty-column"),e.attr("data-empty-text","");var t=e.attr("aria-label")||"";e.attr("aria-label",t.replace("Empty column","")+" column items")}else e.addClass("empty-column"),e.attr("data-empty-text","Empty"),e.attr("aria-label","Empty column")}));var i=o.item.closest(".sortableTicketList.kanbanBoard").attr("id"),r=o.item.data("originalSwimlaneId");if(r&&i&&r!==i){var l=o.item[0].id.replace("ticket_",""),s=i.replace("kanboard-",""),d=leantime.kanbanGroupBy,u={milestoneid:"milestoneid",editorId:"editorId",priority:"priority",storypoints:"storypoints",sprint:"sprint",dueDate:"dateToFinish"}[d];if("dueDate"===d){var c=new Date;switch(c.setHours(12,0,0,0),s){case"0":var m=new Date(c);m.setDate(m.getDate()-1),s=m.toISOString().split("T")[0];break;case"1":var p=new Date(c),g=6-p.getDay();g<0&&(g=0),p.setDate(p.getDate()+g),s=p.toISOString().split("T")[0];break;case"2":var y=new Date(c),h=6-y.getDay()+7;y.setDate(y.getDate()+h),s=y.toISOString().split("T")[0];break;case"3":var f=new Date(c);f.setDate(f.getDate()+21),s=f.toISOString().split("T")[0];break;case"4":s=""}}if(u&&l){var b=jQuery("#ticket_"+l);if("milestoneid"===d){var v=jQuery("#swimlane-row-"+s+" .swimlane-header-label").text()||leantime.i18n.__("label.no_milestone"),_=b.find(".milestoneDropdown .dropdown-toggle .text");_.length&&_.text(v);var j=b.find('.milestoneDropdown .dropdown-menu a[data-value^="'+l+"_"+s+'_"]'),w="#b0b0b0";if(j.length&&"0"!==s&&""!==s){var k=j.attr("data-value");if(k){var Q=k.split("_");Q.length>=3&&(w=Q.slice(2).join("_"))}if(!w||"#b0b0b0"===w){var C=j.attr("style");if(C){var x=C.match(/background-color:\s*([^;]+)/i);x&&(w=x[1].trim())}}}
1b.find(".milestoneDropdown .dropdown-toggle").css("background-color",w)}else if("priority"===d){b.removeClass((function(e,t){return(t.match(/(^|\s)priority-border-\S+/g)||[]).join(" ")})).addClass("priority-border-"+s);var T=jQuery("#priorityDropdownMenuLink"+l);T.length&&(T.find("span.text").text({1:"Critical",2:"High",3:"Medium",4:"Low",5:"Lowest"}[s]||s),T.removeClass("priority-bg-1 priority-bg-2 priority-bg-3 priority-bg-4 priority-bg-5"),T.addClass("priority-bg-"+s))}else if("editorId"===d){var S=jQuery("#userDropdownMenuLink"+l);if(S.length){S.find("span.text span img").attr("src",leantime.appUrl+"/users/profileImage/"+s);var D=jQuery("#swimlane-row-"+s+" .swimlane-header-label").text()||leantime.i18n.__("label.not_assigned");S.find("span.text span#user"+l).text(D)}}else if("storypoints"===d){var M=jQuery("#effortDropdownMenuLink"+l);M.length&&M.find("span.text").text({.5:"< 2min",1:"XS",2:"S",3:"M",5:"L",8:"XL",13:"XXL"}[s]||s)}else if("sprint"===d){var L=jQuery("#sprintDropdownMenuLink"+l);if(L.length){var F=jQuery("#swimlane-row-"+s+" .swimlane-header-label").text()||leantime.i18n.__("label.backlog");L.find("span.text").text(F)}}else if("dueDate"===d){var H=b.find(".dues .fa-calendar").parent();if(H.length&&s){var B=s.split("-"),N=B[1]+"/"+B[2]+"/"+B[0];H.contents().filter((function(){return 3===this.nodeType})).first().replaceWith(" "+N)}else H.length&&!s&&H.contents().filter((function(){return 3===this.nodeType})).first().replaceWith(" No due date")}jQuery.growl({message:"To-Do Updated",style:"success"});var E={};E[u]=s,leantime.rpc("Tickets.Tickets.patchTicket",{id:l,values:E}).catch((function(){jQuery.growl({message:leantime.i18n.__("short_notifications.not_saved")||"Error updating ticket",style:"error"}),location.reload()}))}}o.item.removeData("originalSwimlaneId");for(var I=o.item.closest(".sortableTicketList"),R={},P=o.item[0].id,A=0;A<a.length;A++)I.find(".contentInner.status_"+a[A]).length&&(R[a[A]]=I.find(".contentInner.status_"+a[A]).sortable("serialize"));leantime.rpc("Tickets.Tickets.updateTicketStatusAndSorting",{params:R,handler:P}).catch((function(e){console.error("Could not update ticket status and sorting",e)}))}})})),jQuery(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all").find(".portlet-header").addClass("ui-widget-header ui-corner-all").prepend("<span class='ui-icon ui-icon-minusthick portlet-toggle'></span>"),jQuery(".portlet-toggle").click((function(){var e=jQuery(this);e.toggleClass("ui-icon-minusthick ui-icon-plusthick"),e.closest(".portlet").find(".portlet-content").toggle()}))},initTicketsTable:function(e){function t(e){return!isNaN(parseFloat(e))&&isFinite(e)}jQuery(document).ready((function(){var e=jQuery(".ticketTable").DataTable({language:{decimal:leantime.i18n.__("datatables.decimal"),emptyTable:leantime.i18n.__("datatables.emptyTable"),info:leantime.i18n.__("datatables.info"),infoEmpty:leantime.i18n.__("datatables.infoEmpty"),infoFiltered:leantime.i18n.__("datatables.infoFiltered"),infoPostFix:leantime.i18n.__("datatables.infoPostFix"),thousands:leantime.i18n.__("datatables.thousands"),lengthMenu:leantime.i18n.__("datatables.lengthMenu"),loadingRecords:leantime.i18n.__("datatables.loadingRecords"),processing:leantime.i18n.__("datatables.processing"),search:leantime.i18n.__("datatables.search"),zeroRecords:leantime.i18n.__("datatables.zeroRecords"),paginate:{first:leantime.i18n.__("datatables.first"),last:leantime.i18n.__("datatables.last"),next:leantime.i18n.__("datatables.next"),previous:leantime.i18n.__("datatables.previous")},aria:{sortAscending:leantime.i18n.__("datatables.sortAscending"),sortDescending:leantime.i18n.__("datatables.sortDescending")},buttons:{colvis:leantime.i18n.__("datatables.buttons.colvis"),csv:leantime.i18n.__("datatables.buttons.download")}},dom:'<"top">rt<"bottom">p<"clear">',searching:!1,stateSave:!0,displayLength:100,order:[],columnDefs:[{visible:!1,targets:10},{visible:!1,targets:11},{target:"no-sort",orderable:!1}],footerCallback:function(e,n,a,o,i){var r=this.api(),l=r.column(10).data().reduce((function(e,n){return!1===t(e)&&(e=jQuery(e).val()),!1===t(n)&&(n=jQuery(n).val()),isNaN(e)&&(e=0),isNaN(n)&&(n=0),parseFloat(e)+parseFloat(n)}),0),s=r.column(11).data().reduce((function(e,n){return!1===t(e)&&(e=jQuery(e).val()),!1===t(n)&&(n=jQuery(n).val()),isNaN(e)&&(e=0),isNaN(n)&&(n=0),parseFloat(e)+parseFloat(n)}),0),d=r.column(12).data().reduce((function(e,t){return parseFloat(e)+parseFloat(t)}),0);jQuery(r.column(9).footer()).html("Total"),jQuery(r.column(10).footer()).html(l),jQuery(r.column(11).footer()).html(s),jQuery(r.column(12).footer()).html(d)}});new jQuery.fn.dataTable.Buttons(e.table(0),{buttons:[{extend:"csvHtml5",title:leantime.i18n.__("label.filename_fileexport"),charset:"utf-8",bom:!0,exportOptions:{format:{body:function(e,t,n,a){return void 0!==jQuery(a).data("order")&&(e=jQuery(a).data("order")),e}}}},{extend:"colvis",columns:":not(.noVis)"}]}).container().appendTo(jQuery("#tableButtons"));e.table(0).on("column-visibility",(function(t,n,a,o){for(var i=1;i<e.tables().context.length;i++)e.tables(i).column(a).visible(o);e.draw()})),jQuery(".ticketTable input").on("change",(function(t,n,a,o){jQuery(this).parent().attr("data-order",jQuery(this).val()),e.draw()}))}))},initEffortDropdown:function(){var e={.5:"< 2min",1:"XS",2:"S",3:"M",5:"L",8:"XL",13:"XXL"};jQuery(".effortDropdown .dropdown-menu a").unbind().on("click",(function(){var t=jQuery(this).attr("data-value").split("_");if(2===t.length){var a=t[0],o=t[1];leantime.rpc("Tickets.Tickets.patchTicket",{id:a,values:{storypoints:o}}).then((function(){jQuery("#effortDropdownMenuLink"+a+" span.text").text(e[o]),jQuery.growl({message:leantime.i18n.__("short_notifications.effort_updated"),style:"success"}),"storypoints"===leantime.kanbanGroupBy&&n(a,o)})).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+a,e)}))}else console.log("Ticket Controller: Effort data value not set correctly")}))},initPriorityDropdown:function(){var e={1:"Critical",2:"High",3:"Medium",4:"Low",5:"Lowest"};jQuery(".priorityDropdown .dropdown-menu a").unbind().on("click",(function(){var t=jQuery(this).attr("data-value").split("_");if(2===t.length){var a=t[0],o=t[1];leantime.rpc("Tickets.Tickets.patchTicket",{id:a,values:{priority:o}}).then((function(){jQuery("#priorityDropdownMenuLink"+a+" span.text").text(e[o]),jQuery("#priorityDropdownMenuLink"+a).removeClass("priority-bg-1 priority-bg-2 priority-bg-3 priority-bg-4 priority-bg-5"),jQuery("#priorityDropdownMenuLink"+a).addClass("priority-bg-"+o),jQuery("#priorityDropdownMenuLink"+a).parents(".ticketBox").removeClass("priority-border-1 priority-border-2 priority-border-3 priority-border-4 priority-border-5"),jQuery("#priorityDropdownMenuLink"+a).parents(".ticketBox").addClass("priority-border-"+o),jQuery.growl({message:leantime.i18n.__("short_notifications.priority_updated"),style:"success"}),"priority"===leantime.kanbanGroupBy&&n(a,o)})).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+a,e)}))}else console.log("Ticket Controller: Priority data value not set correctly")}))},initMilestoneDropdown:function(){jQuery(".milestoneDropdown .dropdown-menu a").unbind().on("click",(function(){var e=jQuery(this).attr("data-value").split("_"),t=jQuery(this).attr("data-label");if(3===e.length){var a=e[0],o=e[1],i=e[2];jQuery("#milestoneDropdownMenuLink"+a+" span.text").append(" ..."),leantime.rpc("Tickets.Tickets.patchTicket",{id:a,values:{milestoneid:o}}).then((function(){jQuery("#milestoneDropdownMenuLink"+a+" span.text").text(t),jQuery("#milestoneDropdownMenuLink"+a).css("backgroundColor",i),jQuery.growl({message:leantime.i18n.__("short_notifications.milestone_updated"),style:"success"}),"milestoneid"===leantime.kanbanGroupBy&&n(a,o)})).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+a,e)}))}}))},initStatusDropdown:function(){jQuery(".statusDropdown .dropdown-menu a").unbind().on("click",(function(){var e=jQuery(this).attr("data-value").split("_"),t=jQuery(this).attr("data-label");if(3==e.length){var n=e[0],a=e[1],o=e[2];leantime.rpc("Tickets.Tickets.patchTicket",{id:n,values:{status:a}}).then((function(){jQuery("#statusDropdownMenuLink"+n+" span.text").text(t),jQuery("#statusDropdownMenuLink"+n).removeClass().addClass(o+" dropdown-toggle f-left status "),jQuery.growl({message:leantime.i18n.__("short_notifications.status_updated"),style:"success"})})).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+n,e)}))}}))},initUserDropdown:function(){jQuery(".userDropdown .dropdown-menu a").unbind().on("click",(function(){var e=jQuery(this).attr("data-value").split("_"),t=jQuery(this).attr("data-label");if(3===e.length){var a=e[0],o=e[1];e[2];leantime.rpc("Tickets.Tickets.patchTicket",{id:a,values:{editorId:o}}).then((function(){jQuery("#userDropdownMenuLink"+a+" span.text span#userImage"+a+" img").attr("src",leantime.appUrl+"/users/profileImage/"+encodeURIComponent(o)),jQuery("#userDropdownMenuLink"+a+" span.text span#user"+a).text(t),jQuery.growl({message:leantime.i18n.__("short_notifications.user_updated"),style:"success"}),"editorId"===leantime.kanbanGroupBy&&n(a,o)})).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+a,e)}))}}))},initSprintDropdown:function(){jQuery(".sprintDropdown .dropdown-menu a").unbind().on("click",(function(){var e=jQuery(this).attr("data-value").split("_"),t=jQuery(this).attr("data-label");if(2==e.length){var a=e[0],o=e[1];leantime.rpc("Tickets.Tickets.patchTicket",{id:a,values:{sprint:o}}).then((function(){jQuery("#sprintDropdownMenuLink"+a+" span.text").text(t),jQuery.growl({message:leantime.i18n.__("short_notifications.sprint_updated"),style:"success"}),"sprint"===leantime.kanbanGroupBy&&n(a,o)})).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+a,e)}))}}))},initToolTips:function(){jQuery('[data-toggle="tooltip"]').tooltip()}
1,initTagsInput:function(){jQuery("#tags").tagsInput({autocomplete_url:!0,autocomplete:{source:function(e,t){leantime.rpc("Tags.Tags.getTags",{projectId:leantime.currentProject,term:e.term}).then((function(e){t(e||[])})).catch((function(e){console.error("Could not load tags",e),t([])}))}}}),jQuery("#tags_tag").on("focusout",(function(){let e=jQuery(this).val();""!=e&&jQuery("#tags").addTag(e)}))},initMilestoneDatesAsyncUpdate:function(){var e=leantime.dateHelper.getFormatFromSettings("dateformat","jquery");jQuery(".milestoneEditFromAsync").datepicker({numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(){var e=jQuery(this).val(),n=jQuery(this).attr("data-id");jQuery(".toDateTicket-"+n).datepicker("option","minDate",t(this));jQuery(".toDateTicket-"+n).val();leantime.ticketsRepository.updateEditFromDates(n,e,(function(){jQuery.growl({message:leantime.i18n.__("short_notifications.date_updated"),style:"success"})}))})),jQuery(".milestoneEditToAsync").datepicker({defaultDate:"+1w",numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(){var e=jQuery(this).attr("data-id");jQuery(".fromDateTicket-"+e).datepicker("option","maxDate",t(this));var n=jQuery(this).val();jQuery(".fromDateTicket-"+e).val();leantime.ticketsRepository.updateEditToDates(e,n,(function(){jQuery.growl({message:leantime.i18n.__("short_notifications.date_updated"),style:"success"})}))}));function t(t){var n;try{n=jQuery.datepicker.parseDate(e,t.value)}catch(e){n=null,console.log(e)}return n}},initAsyncInputChange:function(){jQuery(".asyncInputUpdate").on("change",(function(){var e=jQuery(this).attr("data-label").split("-");if(2==e.length){var t=e[0],n=e[1],a=jQuery(this).val();leantime.rpc("Tickets.Tickets.patchTicket",{id:n,values:{[t]:a}}).then((function(){jQuery.growl({message:leantime.i18n.__("notifications.subtask_saved"),style:"success"})})).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update ticket "+n,e)}))}}))},initDueDateTimePickers:function(){jQuery(".date-picker-form-control .reset-button").on("click",(function(){const e=jQuery(this).attr("data-id");jQuery("#due-date-picker-"+e).val(leantime.i18n.__("text.anytime")),leantime.ticketsRepository.updateDueDates(e,null,(function(){jQuery.growl({message:leantime.i18n.__("short_notifications.duedate_updated"),style:"success"})}))})),leantime.dateController.initDatePicker(".quickDueDates, .duedates",(function(e,t){var n=t.currentDay,a=t.currentMonth,o=t.currentYear,i=new Date(o,a,n),r
1=jQuery.datepicker.formatDate(leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),i),l=jQuery(this).attr("data-id");leantime.ticketsRepository.updateDueDates(l,r,(function(){jQuery.growl({message:leantime.i18n.__("short_notifications.duedate_updated"),style:"success"})}))}))},setUpKanbanColumns:function(){jQuery(document).ready((function(){e(),t(),jQuery(".filterBar .row-fluid").css("opacity","1"),jQuery(".sortableTicketList").each((function(){let e=jQuery(this).attr("id");var t=jQuery(this).closest(".kanban-swimlane-row");if(t.length&&"false"===t.attr("data-expanded"))return;let n=250;jQuery(this).find(".column .contentInner").each((function(){jQuery(this).height()>n&&(n=jQuery(this).height())})),jQuery("#"+e+" .column .contentInner").css("height",n)}))}))},addCommentTimesheetContent:function(e,t){var n="Discussion on To-Do #"+t+":\n\r"+jQuery("#commentText-"+e).text();jQuery('li a[href*="timesheet"]').click(),jQuery("#timesheet #description").val(n)},initMilestoneTable:function(e){jQuery(document).ready((function(){var e=jQuery(".ticketTable").DataTable({language:{decimal:leantime.i18n.__("datatables.decimal"),emptyTable:leantime.i18n.__("datatables.emptyTable"),info:leantime.i18n.__("datatables.info"),infoEmpty:leantime.i18n.__("datatables.infoEmpty"),infoFiltered:leantime.i18n.__("datatables.infoFiltered"),infoPostFix:leantime.i18n.__("datatables.infoPostFix"),thousands:leantime.i18n.__("datatables.thousands"),lengthMenu:leantime.i18n.__("datatables.lengthMenu"),loadingRecords:leantime.i18n.__("datatables.loadingRecords"),processing:leantime.i18n.__("datatables.processing"),search:leantime.i18n.__("datatables.search"),zeroRecords:leantime.i18n.__("datatables.zeroRecords"),paginate:{first:leantime.i18n.__("datatables.first"),last:leantime.i18n.__("datatables.last"),next:leantime.i18n.__("datatables.next"),previous:leantime.i18n.__("datatables.previous")},aria:{sortAscending:leantime.i18n.__("datatables.sortAscending"),sortDescending:leantime.i18n.__("datatables.sortDescending")},buttons:{colvis:leantime.i18n.__("datatables.buttons.colvis"),csv:leantime.i18n.__("datatables.buttons.download")}},dom:'<"top">rt<"bottom"><"clear">',searching:!1,stateSave:!0,displayLength:100,order:[],columnDefs:[{visible:!1,targets:7},{visible:!1,targets:8},{target:"no-sort",orderable:!1}]});new jQuery.fn.dataTable.Buttons(e.table(0),{buttons:[{extend:"csvHtml5",title:leantime.i18n.__("label.filename_fileexport"),charset:"utf-8",bom:!0,exportOptions:{format:{body:function(e,t,n,a){return void 0!==jQuery(a).data("order")&&(e=jQuery(a).data("order")),e}}}},{extend:"colvis",columns:":not(.noVis)"}]}).container().appendTo(jQuery("#tableButtons"));e.table(0).on("column-visibility",(function(t,n,a,o){for(var i=1;i<e.tables().context.length;i++)e.tables(i).column(a).visible(o);e.draw()})),jQuery(".ticketTable input").on("change",(function(t,n,a,o){jQuery(this).parent().attr("data-order",jQuery(this).val()),e.draw()}))}))},initMilestoneDates:function(){var e=leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),t=jQuery("#milestoneEditFrom").datepicker({numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(){n.datepicker("option","minDate",a(this))})),n=jQuery("#milestoneEditTo").datepicker({defaultDate:"+1w",numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(){t.datepicker("option","maxDate",a(this))}));function a(t){var n;try{n=jQuery.datepicker.parseDate(e,t.value)}catch(e){n=null,console.log(e)}return n}},initTicketsList:function(e){jQuery(document).ready((function(){jQuery(".listStyleTable").DataTable({language:{decimal:leantime.i18n.__("datatables.decimal"),emptyTable:leantime.i18n.__("datatables.emptyTable"),info:leantime.i18n.__("datatables.info"),infoEmpty:leantime.i18n.__("datatables.infoEmpty"),infoFiltered:leantime.i18n.__("datatables.infoFiltered"),infoPostFix:leantime.i18n.__("datatables.infoPostFix"),thousands:leantime.i18n.__("datatables.thousands"),lengthMenu:leantime.i18n.__("datatables.lengthMenu"),loadingRecords:leantime.i18n.__("datatables.loadingRecords"),processing:leantime.i18n.__("datatables.processing"),search:leantime.i18n.__("datatables.search"),zeroRecords:leantime.i18n.__("datatables.zeroRecords"),paginate:{first:leantime.i18n.__("datatables.first"),last:leantime.i18n.__("datatables.last"),next:leantime.i18n.__("datatables.next"),previous:leantime.i18n.__("datatables.previous")},aria:{sortAscending:leantime.i18n.__("datatables.sortAscending"),sortDe
1scending:leantime.i18n.__("datatables.sortDescending")},buttons:{colvis:leantime.i18n.__("datatables.buttons.colvis"),csv:leantime.i18n.__("datatables.buttons.download")}},dom:'<"top">rt<"bottom"<"center"p>><"clear">',searching:!1,stateSave:!0,displayLength:25,order:[],fnDrawCallback:function(e){e._iDisplayLength>e.fnRecordsDisplay()?jQuery(e.nTableWrapper).find(".dataTables_paginate").hide():jQuery(e.nTableWrapper).find(".dataTables_paginate").show()}})}))},loadTicketToContainer:function(e,t){function n(e){jQuery(e).find("form").each((function(){jQuery(this).on("submit",(function(t){t.preventDefault(),window.leantime&&window.leantime.tiptapController&&window.leantime.tiptapController.registry&&leantime.tiptapController.registry.destroyAll(),jQuery(e).html("<div class='center'><img src='"+leantime.appUrl+"/dist/images/svg/loading-animation.svg' width='100px'/></div>");var a=jQuery(this).serialize();jQuery.ajax({url:jQuery(this).attr("action"),data:a,type:"post",success:function(t){jQuery(e).html(t),n(e)},error:function(){}})}))}))}window.leantime&&window.leantime.tiptapController&&window.leantime.tiptapController.registry&&leantime.tiptapController.registry.destroyAll(),jQuery(".ticketRows").removeClass("active"),jQuery("#row-"+e).addClass("active"),jQuery(t).html("<div class='center'><img src='"+leantime.appUrl+"/dist/images/svg/loading-animation.svg' width='100px' /></div>"),jQuery.get(leantime.appUrl+"/tickets/showTicket/"+e,(function(e){jQuery(t).html(e),n(t)}))},initTicketSearchUrlBuilder:function(e){var t=jQuery("#projectIdInput").val(),n=jQuery("#userSelect").val(),a=jQuery("#milestoneSelect").val(),o=jQuery("#termInput").val(),i=jQuery("#sprintSelect").val(),r=jQuery("#typeSelect").val(),l=jQuery("#prioritySelect").val(),s=jQuery("#statusSelect").val(),d=jQuery("#projectsSelect").val(),u=jQuery("#sortBySelect").val(),c=jQuery("input[name='groupBy']:checked").val(),m="?search=true";""!=t&&null!=t&&(m=m+"&projectId="+encodeURIComponent(t)),""!=n&&null!=n&&(m=m+"&users="+encodeURIComponent(n)),""!=a&&null!=a&&(m=m+"&milestone="+encodeURIComponent(a)),""!=o&&null!=o&&(m=m+"&term="+encodeURIComponent(o)),""!=i&&null!=i&&(m=m+"&sprint="+encodeURIComponent(i)),""!=r&&null!=r&&(m=m+"&type="+encodeURIComponent(r)),""!=l&&null!=l&&(m=m+"&priority="+encodeURIComponent(l)),""!=s&&null!=s&&(m=m+"&status="+encodeURIComponent(s)),""!=d&&null!=d&&(m=m+"&projects="+encodeURIComponent(d)),""!=u&&null!=u&&(m=m+"&sort="+encodeURIComponent(u)),""!=c&&null!=c&&(m=m+"&groupBy="+encodeURIComponent(c));var p=e+m;window.location.href=p},initSprintDates:function(){Date.prototype.addDays=function(e){return this.setDate(this.getDate()+e),this},jQuery.datepicker.setDefaults({beforeShow:function(e){if(jQuery(e).attr("readonly"))return!1}});var e=leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),t=jQuery("#sprintStart").datepicker({numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(){n.datepicker("option","minDate",a(this));var e=a(this).addDays(13);n.datepicker("setDate",e)})),n=jQuery("#sprintEnd").datepicker({defaultDate:"+1w",numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(){t.datepicker("option","maxDate",a(this))}));function a(t){var n;try{n=jQuery.datepicker.parseDate(e,t.value)}catch(e){n=null,console.log(e)}return n}},initSimpleColorPicker:function(){jQuery("input.simpleColorPicker").simpleColorPicker({colors:["#821219","#BB1B25","#75BB1B","#4B7811","#fdab3d","#1bbbb1","#006d9f","#124F7D","#082236","#5F0F40","#bb1b75","#F26CA7","#BB611B","#aaaaaa","#4c4c4c"],onChangeColor:function(e){jQuery(this).css("background",e),jQuery(this).css("color","#fff")}});var e=jQuery("input.simpleColorPicker").val();""!=e&&jQuery("input.simpleColorPicker").css("background",e)},openMilestoneModalManually:function(e){jQuery.nmManual(e,{stack:!0,sizes:{minW:500,minH:500}})},openTicketModalManually:function(e){jQuery.nmManual(e,{sizes:{minW:1800,minH:1800},resizable:!0,autoSizable:!0})}}}(),leantime.kanbanController=function(){var e=function(e){var t=e.closest(".quickaddContainer"),n=t.querySelector("[data-quickadd-form]"),a=n.querySelector("[data-quickadd-input]"),o=t.querySelector(".quickAddLink");n.classList.contains("active")?(n.classList.remove("active"),n.style.display="none",n.dataset.submitting="false",o.style.display="",o.setAttribute("aria-expanded","fal
1se")):(n.classList.add("active"),n.style.display="block",n.dataset.submitting="false",o.style.display="none",o.setAttribute("aria-expanded","true"),a.focus())},t=function(){document.addEventListener("keydown",(function(t){var n=t.target;if(n.matches("[data-quickadd-input]")){var a=n.closest("[data-quickadd-form]");if("true"!==a.dataset.submitting){var o=a.querySelector("[data-stay-open-input]");if("Enter"!==t.key||t.shiftKey||(t.preventDefault(),a.dataset.submitting="true",o.value="0",a.submit()),"Enter"===t.key&&t.shiftKey&&(t.preventDefault(),a.dataset.submitting="true",o.value="1",a.submit()),"Escape"===t.key){t.preventDefault();var i=a.closest(".quickaddContainer").querySelector(".quickAddLink");e(i),n.value=""}}else t.preventDefault()}}))},n=function(){document.addEventListener("click",(function(t){document.querySelectorAll("[data-quickadd-form].active").forEach((function(n){var a=n.closest(".quickaddContainer").querySelector(".quickAddLink"),o=n.querySelector("[data-quickadd-input]"),i=n.contains(t.target)||a.contains(t.target);"true"!==n.dataset.submitting&&(i||""===o.value.trim()?i||e(a):(n.querySelector("[data-stay-open-input]").value="0",n.dataset.submitting="true",n.submit()))}))}))},a=function(e){var t=e.querySelectorAll(".column .contentInner");if(0!==t.length){t.forEach((function(e){e.style.minHeight="",e.style.height=""}));var n=0;t.forEach((function(e){var t=e.offsetHeight;t>n&&(n=t)})),n>0&&t.forEach((function(e){e.style.minHeight=n+"px"}))}},o=function(){requestAnimationFrame((function(){requestAnimationFrame((function(){document.querySelectorAll(".kanban-swimlane-content:not(.collapsed)").forEach((function(e){a(e)}))}))}))},i=function(e){var t=document.getElementById("swimlane-row-"+e),n=document.querySelector('.kanban-swimlane-sidebar[data-swimlane-id="'+e+'"]'),o=document.getElementById("swimlane-content-"+e);if(t&&n&&o){var i=!("true"===n.getAttribute("aria-expanded"));n.setAttribute("aria-expanded",i.toString());var r=n.querySelector(".kanban-lane-chevron i");r&&(r.className=i?"fa fa-chevron-down":"fa fa-chevron-right"),t.setAttribute("data-expanded",i.toString()),i?(o.classList.remove("collapsed"),a(o)):(o.classList.add("collapsed"),a(o)),leantime.rpc("Api.Api.setSubmenuState",{submenu:"swimlane_"+e,state:i?"open":"closed"}).catch((function(e){console.error("Could not persist swimlane state",e)}))}else console.error("Swimlane elements not found for ID:",e)},r=function(){document.addEventListener("keydown",(function(e){var t=e.target.closest("[data-swimlane-id]");if(t){var n=t.getAttribute("data-swimlane-id");if("Enter"!==e.key&&" "!==e.key||(e.preventDefault(),i(n)),"ArrowDown"===e.key||"ArrowUp"===e.key){e.preventDefault();var a=Array.from(document.querySelectorAll("[data-swimlane-id]")),o=a.indexOf(t);"ArrowDown"===e.key&&o<a.length-1?a[o+1].focus():"ArrowUp"===e.key&&o>0&&a[o-1].focus()}}}))},l=function(){if("undefined"!=typeof tippy){var e={allowHTML:!0,placement:"top",arrow:!0,theme:"light-border",trigger:"mouseenter focus",delay:[500,0]};[".status-segment[data-tippy-content]",".time-indicator[data-tippy-content]",".kanban-lane-count[data-tippy-content]",".tshirt-icon[data-tippy-content]",".thermometer-icon[data-tippy-content]",".user-avatar[data-tippy-content]",".type-icon[data-tippy-content]",".sprint-icon[data-tippy-content]",".milestone-icon[data-tippy-content]",".swimlane-header-label[data-tippy-content]"].forEach((function(t){var n=document.querySelectorAll(t);n.length>0&&tippy(n,e)}))}},s=function(){"ontouchstart"in window&&document.querySelectorAll(".widgettitle").forEach((function(e){e.addEventListener("click",(function(e){e.target.closest(".dropdown-toggle, .dropdown-menu")||this.classList.toggle("count-visible")}))}))},d=function(){document.querySelectorAll(".kanban-swimlane-content.collapsed").forEach((function(e){a(e)}))},u=function(){var e=document.querySelectorAll(".kanban-swimlane-row");if(0!==e.length&&!(window.innerWidth<=768)){var t=function(){e.forEach((function(e){var t=e.querySelector(".kanban-swimlane-sidebar"),n=e.querySelector(".kanban-swimlane-sidebar-inner"),a=e.querySelector(".kanban-swimlane-sentinel");
1if(t&&n&&a){var o=a.getBoundingClientRect(),i=t.getBoundingClientRect();if(o.top<120&&i.bottom>220){var r=120-i.top,l=i.height-n.offsetHeight-12;r=Math.min(r,Math.max(0,l)),t.classList.add("is-sticky"),n.style.transform="translateY("+r+"px)"}else t.classList.remove("is-sticky"),n.style.transform=""}}))};window.addEventListener("scroll",t,{passive:!0}),t()}};return"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(function(){t(),n(),r(),l(),u(),s(),d(),o()})):(t(),n(),r(),l(),u(),s(),d(),o()),{toggleQuickAdd:e,initQuickAddKeyboard:t,initClickOutsideSave:n,toggleSwimlane:i,initSwimlaneKeyboard:r,initProgressBarTooltips:l,equalizeColumnHeights:a,resetColumnHeights:function(e){e.querySelectorAll(".column .contentInner").forEach((function(e){e.style.minHeight="",e.style.height=""}))},initCollapsedColumnHeights:d,initExpandedColumnHeights:o,initStickySwimlaneSidebars:u,initMobileColumnCountToggle:s}}(),leantime.settingService={saveLogo:function(e){leantime.settingRepository.saveLogo(e)}},leantime.settingRepository={saveLogo:function(e){var t=new FormData;t.append("file",e),jQuery.ajax({type:"POST",url:leantime.appUrl+"/setting/logo",data:t,processData:!1,contentType:!1,success:function(e){jQuery("#save-logo").removeClass("running"),location.reload()},error:function(e){console.log(e)}})}},leantime.settingController=function(){var e,t=function(){jQuery("#logoImg").croppie("destroy"),jQuery("#previousImage").show()};return{readURL:function(n){if(t(),n.files&&n.files[0]){var a=new FileReader,o=jQuery("#logoImg");a.onload=function(t){(e=o.croppie({enableExif:!0,enforceBoundary:!1,viewport:{width:220,height:40,type:"square"},boundary:{width:400,height:200}})).croppie("bind",{url:t.currentTarget.result}),jQuery("#previousImage").hide()},a.readAsDataURL(n.files[0])}},clearCroppie:t,saveCroppie:function(){jQuery("#save-logo").addClass("running"),jQuery("#logoImg").attr("src",leantime.appUrl+"/images/loaders/loader28.gif"),e.croppie("result",{type:"blob",circle:!1,size:"original",quality:1}).then((function(e){leantime.settingService.saveLogo(e)}))}}}(),leantime.reactionsController={addReactions:function(e,t,n,a){leantime.rpc("Reactions.Reactions.react",{module:e,moduleId:t,reaction:n}).then((function(e){e&&a()})).catch((function(e){console.error("Could not add reaction",e)}))},removeReaction:function(e,t,n,a){leantime.rpc("Reactions.Reactions.unreact",{module:e,moduleId:t,reaction:n}).then((function(e){e&&a()})).catch((function(e){console.error("Could not remove reaction",e)}))}},leantime.projectsController=function(){function e(){jQuery("#sortableTicketKanban .column").each((function(){var e=jQuery(this).find(".moveable").length;jQuery(this).find(" .count").text(e)}))}var t=function(){jQuery(".projectDateFrom, .projectDateTo").datepicker({dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader")})},n=function(){jQuery("#profileImg").croppie("destroy"),jQuery("#previousImage").show()};return{initDates:t,initProjectTabs:function(){jQuery(".projectTabs").tabs()},initProgressBar:function(e){jQuery("#progressbar").progressbar({value:e})},initProjectTable:function(){jQuery(document).ready((function(){jQuery("#allProjectsTable").DataTable({language:{decimal:leantime.i18n.__("datatables.decimal"),emptyTable:leantime.i18n.__("datatables.emptyTable"),info:leantime.i18n.__("datatables.info"),infoEmpty:leantime.i18n.__("datatables.infoEmpty"),infoFiltered:leantime.i18n.__("datatables.infoFiltered"),infoPostFix:leantime.i18n.__("datatables.infoPostFix"),thousands:leantime.i18n.__("datatables.thousands"),lengthMenu:leantime.i18n.__("datatables.lengthMenu"),loadingRecords:leantime.i18n.__("datatables.loadingRecords"),processing:leantime.i18n.__("datatables.processing"),search:leantime.i18n.__("datatables.search"),zeroRecords:leantime.i18n.__("datatables.zeroRecords"),paginate:{first:leantime.i18n.__("datatables.first"),last:leantime.i18n.__("datatables.last"),next:leantime.i18n.__("datatables.next"),previous:leantime.i18n.__("datatables.previous")},aria:{sortAscending:leantime.i18n.__("datatables.sortAscending"),sortDe
1scending:leantime.i18n.__("datatables.sortDescending")}},dom:'<"top">rt<"bottom"ilp><"clear">',searching:!1,displayLength:100})}))},initDuplicateProjectModal:function(){var e={sizes:{minW:450,minH:350},resizable:!0,autoSizable:!0,callbacks:{afterShowCont:function(){jQuery(".showDialogOnLoad").show(),t(),jQuery(".duplicateProjectModal, .formModal").nyroModal(e)},beforeClose:function(){location.reload()}}};jQuery(".duplicateProjectModal").nyroModal(e)},initTodoStatusSortable:function(e){var t=1;jQuery(e).find("input.sorter").each((function(e){jQuery(this).val(t),t++})),jQuery(e).sortable({stop:function(n,a){t=1,jQuery(e).find("input.sorter").each((function(e){jQuery(this).val(t),t++}))}})},initSelectFields:function(){jQuery(document).ready((function(){jQuery("#todosettings select.colorChosen").on("chosen:ready",(function(e,t){var n=jQuery(this).attr("id").replace("-","_");jQuery("#"+n+"_chosen a span").removeClass(),jQuery("#"+n+"_chosen a span").addClass(t.selected)})).chosen({disable_search_threshold:10}),jQuery("#todosettings select.colorChosen").on("change",(function(e,t){var n=jQuery(this).attr("id").replace("-","_");jQuery("#"+n+"_chosen a span").removeClass(),jQuery("#"+n+"_chosen a span").addClass(t.selected)}))}))},removeStatus:function(e){jQuery("#todostatus-"+e).parent().remove()},addToDoStatus:function(e){var t=-1;jQuery("#todosettings ul .statusList").each((function(){var e=jQuery(this).find(".labelKey").val();parseInt(e)>=parseInt(t)&&(t=e)}));var n=parseInt(t)+1,a=jQuery(".newStatusTpl").clone();a.html((function(e,t){return updatedContent=t.replaceAll("XXNEWKEYXX",n)})),jQuery("#todoStatusList").append("<li>"+a.html()+"</li>"),jQuery("#todosettings select.colorChosen").chosen("destroy"),leantime.projectsController.initSelectFields(),jQuery("#todoStatusList").sortable("destroy"),leantime.projectsController.initTodoStatusSortable("#todoStatusList")},saveCroppie:function(){jQuery("#save-picture").addClass("running"),jQuery("#profileImg").attr("src",leantime.appUrl+"/images/loaders/loader28.gif"),_uploadResult.croppie("result",{type:"blob",circle:!1}).then((function(e){var t=new FormData;t.append("file",e),jQuery.ajax({type:"POST",url:leantime.appUrl+"/projects/projectImage",data:t,processData:!1,contentType:!1,success:function(e){jQuery("#save-picture").removeClass("running"),location.reload()},error:function(e){console.log(e)}})}))},clearCroppie:n,readURL:function(e){if(n(),e.files&&e.files[0]){var t=new FileReader,a=jQuery("#projectAvatar");t.onload=function(e){_uploadResult=a.croppie({enableExif:!0,viewport:{width:200,height:200,type:"rectangle"},boundary:{width:250,height:250}}),_uploadResult.croppie("bind",{url:e.currentTarget.result}),jQuery("#previousImage").hide()},t.readAsDataURL(e.files[0])}},initGanttChart:function(e,t,n){function a(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}jQuery(document).ready((function(){var o=!0;if(!1===n)var i=new Gantt("#gantt",e,{header_height:55,column_width:20,step:24,view_modes:["Day","Week","Month"],bar_height:40,static_progress_indicator:!0,bar_corner_radius:10,arrow_curve:10,padding:20,view_mode:t,date_format:leantime.i18n.__("language.momentJSDate"),language:"en",additional_rows:5,custom_popup_html:function(e){e._end;var t='<div class="details-container" style="min-width:600px;"> ';return void 0!==e.projectName&&(t+="<h3><b>"+e.name+"</b></h3>"),t+="<h4>"+a(e.name)+"</a></h4><br /> ",t+="</div>"},on_click:function(e){},on_date_change:function(e,t,n){var a=e.id.split("-");let o=0,i="";a.length>1?"ticket"==a[0]?(o=a[1],i="ticket"):"pgm"==a[0]&&(o=a[1],i="project"):o=a,"ticket"==i?leantime.ticketsRepository.updateMilestoneDates(o,t,n,e._index+1):leantime.rpc("Projects.Projects.patchProject",{id:o,values:{start:t,end:n,sortIndex:e._index+1}}).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update project dates",e)}))},on_sort_change:function(e){for(var t={},n=0;n<e.length;n++)t[e[n].id]=e[n]._index+1;leantime.rpc("Projects.Projects.sortProjects",{params:t}).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not sort projects",e)}))},on_progress_change:function(e,t){},on_view_change:function(e){o||leantime.usersRepository.updateUserViewSettings("projectGantt",e)},on_popup_show:function(e){}});else i=new Gantt("#gantt",e,{readonlyGantt:!0,resizing:!1,progress:!1,is_draggable:!1,view_modes:["Day","Week","Month"],view_mode:t,custom_popup_html:function(e){var t='<div class="details-container" style="min-width:600px;"> ';return void 0!==e.projectName&&(t+="<h3><b>"+e.name+"</b></h3>"),t+="<h4>
1"+a(e.name)+"</a></h4><br /> ",t+="</div>"},on_click:function(e){},on_date_change:function(e,t,n){},on_progress_change:function(e,t){},on_view_change:function(e){o||leantime.usersRepository.updateUserViewSettings("projectGantt",e)}});jQuery("#ganttTimeControl").on("click","a",(function(){var e=jQuery(this),t=e.attr("data-value");i.change_view_mode(t),e.parent().parent().find("a").removeClass("active"),e.addClass("active");var n=e.text();jQuery(".viewText").text(n)})),o=!1}))},setUpKanbanColumns:function(){jQuery(document).ready((function(){e(),jQuery(".filterBar .row-fluid").css("opacity","1");var t=jQuery("html").height()-250;jQuery("#sortableProjectKanban .column .contentInner").each((function(){jQuery(this).height()>t&&(t=jQuery(this).height())})),t+=50,jQuery("#sortableProjectKanban .column .contentInner").css("min-height",t)}))},initProjectsKanban:function(t){jQuery("#sortableProjectKanban .projectBox").hover((function(){jQuery(this).css("background","var(--kanban-card-hover)")}),(function(){jQuery(this).css("background","var(--kanban-card-bg)")}));jQuery("#sortableProjectKanban .contentInner").sortable({connectWith:".contentInner",items:"> .moveable",tolerance:"intersect",placeholder:"ui-state-highlight",forcePlaceholderSize:!0,cancel:".portlet-toggle,:input,a,input",distance:25,start:function(e,t){var n,a,o;t.item.addClass("tilt"),n=t.item,a=n.position().left,o=function(e){e.pageX>=a?(n.addClass("right"),n.removeClass("left")):(n.addClass("left"),n.removeClass("right")),a=e.pageX},jQuery("html").bind("mousemove",o),n.data("move_handler",o)},stop:function(n,a){a.item.removeClass("tilt"),jQuery("html").unbind("mousemove",a.item.data("move_handler")),a.item.removeData("move_handler"),e();for(var o={},i=a.item[0].id,r=0;r<t.length;r++)jQuery(".contentInner.status_"+t[r]).length&&(o[t[r]]=jQuery(".contentInner.status_"+t[r]).sortable("serialize"));leantime.rpc("Projects.Projects.patchProjectStatusAndSorting",{params:o,handler:i}).catch((function(e){jQuery.growl({message:e&&e.message?e.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),console.error("Could not update project sorting",e)}))}}),jQuery(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all").find(".portlet-header").addClass("ui-widget-header ui-corner-all").prepend("<span class='ui-icon ui-icon-minusthick portlet-toggle'></span>"),jQuery(".portlet-toggle").click((function(){var e=jQuery(this);e.toggleClass("ui-icon-minusthick ui-icon-plusthick"),e.closest(".portlet").find(".portlet-content").toggle()}))},favoriteProject:function(e,t){jQuery(t).addClass("go"),jQuery(t).hasClass("isFavorite")?leantime.reactionsController.removeReaction("project",e,"favorite",(function(){jQuery(t).find("i").removeClass("fa-solid").addClass("fa-regular"),jQuery(t).removeClass("isFavorite")})):leantime.reactionsController.addReactions("project",e,"favorite",(function(){jQuery(t).find("i").removeClass("fa-regular").addClass("fa-solid"),jQuery(t).addClass("isFavorite")}))}}}(),(leantime=leantime||{}).menuRepository={updateUserMenuSettings:function(e){leantime.rpc("Api.Api.setMainMenuState",{state:e}).catch((function(e){console.error("Could not update menu state",e)}))}},leantime.menuController=function(){var e=function(){return window.innerWidth<1200};let t=function(e,t,n){leantime.rpc("Api.Api.setSubmenuState",{submenu:n+"-projectSelectorlist-group-"+e,state:t}).catch((function(e){console.error("Could not update submenu state",e)}))};return{toggleSubmenu:function(e){if(""!==e){var t="";"none"==jQuery("#submenu-"+e).css("display")?(jQuery("#submenu-"+e).css("display","block"),jQuery("#submenu-icon-"+e).removeClass("fa-angle-right"),jQuery("#submenu-icon-"+e).addClass("fa-angle-down"),t="open"):(jQuery("#submenu-"+e).css("display","none"),jQuery("#submenu-icon-"+e).removeClass("fa-angle-down"),jQuery("#submenu-icon-"+e).addClass("fa-angle-right"),t="closed"),leantime.rpc("Api.Api.setSubmenuState",{submenu:e,state:t}).catch((function(e){console.error("Could not update submenu state",e)}))}},initProjectSelector:function(){jQuery(".project-select").chosen(),jQuery(document).on("click",".projectselector.dropdown-menu",(function(e){e.stopPropagation()}));let e=localStorage.getItem("currentMenuTab");activeTabIndex=void 0===e?0:jQuery(".projectSelectorTabs").find('a[href="#'+e+'"]').parent().index(),jQuery(".projectSelectorTabs").tabs({create:function(e,t){},activate:function(e,t){localStorage.setItem("currentMenuTab",t.newPanel[0].id)},load:function(){},enable:function(){},active:activeTabIndex})},initLeftMenuHamburgerButton:function(){e()&&(jQuery(".mainwrapper").removeClass("menuopen"),jQuery(".mainwrapper").addClass("menuclosed")),jQuery(".barmenu").click((function(t){t.stopPropagation();var n=!e();jQuery(".mainwrapper").hasClass("menuopen")?(jQuery(".mainwrapper").removeClass("menuopen"),jQuery(".mainwrapper").addClass("menuclosed"),n&&leantime.menuRepository.updateUserMenuSettings("closed")):(jQuery(".mainwrapper").removeClass("menuclosed"),jQuery(".mainwrapper").addClass("menuopen"),n&&leantime.menuRepository.updateUserMenuSettings("open"))})),jQuery(".menu-backdrop").on("click",(function(){jQuery(".mainwrapper").removeClass("menuopen").addClass("menuclosed")}));var t=e();jQuery(window).on("resize",(function(){var n=e();n&&!t&&jQuery(".mainwrapper").removeClass("menuopen").addClass("menuclosed"),t=n}))},updateGroupDropdownSetting:t,toggleProjectDropDownList:function(e,n="",a){"closed"===n?(jQuery("#"+a+"-toggler-"+e).removeClass("closed"),jQuery("#"+a+"-toggler-"+e).removeClass("open"),jQuery("#"+a+"-toggler-"+e).addClass("open")):"open"===n&&(jQuery("#"+a+"-toggler-"+e).removeClass("open"),jQuery("#"+a+"-toggler-"+e).removeClass("closed"),jQuery("#"+a+"-toggler-"+e).addClass("closed")),jQuery("#"+a+"-toggler-"+e).hasClass("open")?(jQuery("#"+a+"-toggler-"+e).removeClass("open"),jQuery("#"+a+"-toggler-"+e).addClass("closed"),jQuery("#"+a+"-toggler-"+e).find("i").removeClass("fa-angle-down"),jQuery("#"+a+"-toggler-"+e).find("i").addClass("fa-angle-right"),jQuery("#"+a+"-projectSelectorlist-group-"+e).addClass("closed"),jQuery("#"+a+"-projectSelectorlist-group-"+e).removeClass("open"),t(e,"closed",a)):(jQuery("#"+a+"-toggler-"+e).removeClass("closed"),jQuery("#"+a+"-toggler-"+e).addClass("open"),jQuery("#"+a+"-toggler-"+e).find("i").removeClass("fa-angle-right"),jQuery("#"+a+"-toggler-"+e).find("i").addClass("fa-angle-down"),jQuery("#"+a+"-projectSelectorlist-group-"+e).addClass("open"),jQuery("#"+a+"-projectSelectorlist-group-"+e).removeClass("closed"),t(e,"o
1pen",a))}}}(),leantime.logicmodelCanvasController={},leantime.ideasController=function(){var e=!1,t=function(){return{sizes:{minW:700,minH:1e3},resizable:!0,autoSizable:!0,callbacks:{beforeShowCont:function(){jQuery(".showDialogOnLoad").show(),1==e&&(e=!1,location.reload())},afterShowCont:function(){jQuery(".ideaModal, #commentForm, #commentForm .deleteComment, .leanCanvasMilestone .deleteMilestone").nyroModal(t())}}}},n=function(){jQuery(".ideaModal, #commentForm, #commentForm .deleteComment, .leanCanvasMilestone .deleteMilestone").nyroModal(t())};return{setCloseModal:function(){e=!0},toggleMilestoneSelectors:function(e){"existing"==e&&(jQuery("#newMilestone, #milestoneSelectors").hide("fast"),jQuery("#existingMilestone").show(),n()),"new"==e&&(jQuery("#newMilestone").show(),jQuery("#existingMilestone, #milestoneSelectors").hide("fast"),n()),"hide"==e&&(jQuery("#newMilestone, #existingMilestone").hide("fast"),jQuery("#milestoneSelectors").show("fast"))},openModalManually:function(e){jQuery.nmManual(e,t)},initMasonryWall:function(){var e=jQuery("#ideaMason").packery({itemSelector:".ticketBox",columnWidth:260,isResizable:!0});e.imagesLoaded().progress((function(){e.packery("layout")}));var t=e.find(".ticketBox").draggable({start:function(e,t){var n,a,o;t.helper.addClass("tilt"),n=t.helper,a=n.position().left,o=function(e){e.pageX>=a?(n.addClass("right"),n.removeClass("left")):(n.addClass("left"),n.removeClass("right")),a=e.pageX},jQuery("html").bind("mousemove",o),n.data("move_handler",o)},stop:function(e,t){t.helper.removeClass("tilt"),jQuery("html").unbind("mousemove",t.helper.data("move_handler")),t.helper.removeData("move_handler")}});e.packery("bindUIDraggableEvents",t),e.on("dragItemPositioned",(function(){var t=[],n=e.packery("getItemElements");jQuery(n).each((function(e,n){var a=e+1,o=jQuery(n).attr("data-value");t.push({id:o,sortIndex:a})})),leantime.rpc("Ideas.Ideas.reorderIdeas",{payload:t}).catch((function(e){console.error("Could not reorder ideas",e)}))}))},initBoardControlModal:function(){},initWallImageModals:function(){jQuery(".mainIdeaContent img").each((function(){jQuery(this).wrap("<a href='"+jQuery(this).attr("src")+"' class='imageModal'></a>")})),jQuery(".imageModal").nyroModal()},initUserDropdown:function(){jQuery("body").on("click",".userDropdown .dropdown-menu a",(function(){var e=jQuery(this).attr("data-value").split("_");jQuery(this).attr("data-label");if(3==e.length){var t=e[0],n=e[1];e[2];leantime.rpc("Ideas.Ideas.patchIdeaItem",{id:t,params:{author:n}}).then((function(e){e&&(jQuery("#userDropdownMenuLink"+t+" span.text span#userImage"+t+" img").attr("src",leantime.appUrl+"/users/profileImage/"+encodeURIComponent(n)),jQuery.growl({message:leantime.i18n.__("short_notifications.user_updated")}))})).catch((function(e){console.error("Could not update idea author",e)}))}}))},initStatusDropdown:function(){jQuery("body").on("click",".statusDropdown .dropdown-menu a",(function(){var e=jQuery(this).attr("data-value").split("_"),t=jQuery(this).attr("data-label");if(3==e.length){var n=e[0],a=e[1],o=e[2];leantime.rpc("Ideas.Ideas.patchIdeaItem",{id:n,params:{box:a}}).then((function(e){e&&(jQuery("#statusDropdownMenuLink"+n+" span.text").text(t),jQuery("#statusDropdownMenuLink"+n).removeClass().addClass(o+" dropdown-toggle f-left status "),jQuery.growl({message:leantime.i18n.__("short_notifications.status_updated")}))})).catch((function(e){console.error("Could not update idea status",e)}))}}))},setKanbanHeights:function(){var e=jQuery("html").height()-320;jQuery("#sortableIdeaKanban .column .contentInner").css("height",e)},initIdeaKanban:function(e){jQuery("#sortableIdeaKanban").disableSelection(),jQuery("#sortableIdeaKanban .ticketBox").hover((function(){jQuery(this).css("background","var(--kanban-card-hover)")}),(function(){jQuery(this).css("background","var(--kanban-card-bg)")})),jQuery("#sortableIdeaKanban .contentInner").sortable({connectWith:".contentInner",items:"> .moveable",tolerance:"pointer",placeholder:"ui-state-highlight",forcePlaceholderSize:!0,cancel:".portlet-toggle",start:function(e,t){var n,a,o;t.item.addClass("tilt"),n=t.item,a=n.position().left,o=function(e){e.pageX>=a?(n.addClass("right"),n.removeClass("left")):(n.addClass("left"),n.removeClass("right")),a=e.pageX},jQuery("html").bind("mousemove",o),n.data("move_handler",o)},stop:function(e,t){t.item.removeClass("tilt"),jQuery("html").unbind("mousemove",t.item.data("move_handler")),t.item.removeData("move_handler")},update:function(t,n){for(var a={action:"statusUpdate",payload:{}},o=0;o<e.length;o++)jQuery(".contentInner.status_"+e[o]).length&&(a.payload[e[o]]=jQuery(".contentInner.status_"+e[o]).sortable("serialize"));leantime.rpc("Ideas.Ideas.bulkUpdateStatus",{payload:a.payload}).catch((function(e){console.error("Could not update idea statuses",e)}))}}),jQuery(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all").find(".portlet-header").addClass("ui-widget-header ui-corner-all").prepend("<span class='ui-icon ui-icon-minusthick portlet-toggle'></span>
1"),jQuery(".portlet-toggle").click((function(){var e=jQuery(this);e.toggleClass("ui-icon-minusthick ui-icon-plusthick"),e.closest(".portlet").find(".portlet-content").toggle()}))}}}(),leantime.tourFactory=function(){var e=function(e){return new Shepherd.Tour({useModalOverlay:!0,defaultStepOptions:{classes:"shepherd-theme-arrows",scrollTo:!1,cancelIcon:{enabled:!0}},tourName:e})},t=function(e){leantime.helperRepository.updateUserModalSettings(e),"undefined"!=typeof _paq&&_paq.push(["trackEvent","Tour","Completed",e])},n=function(e){return{myWorkDashboard:[{id:"welcome-step",title:"👋 Welcome to the Dashboard Tour",text:"Let's start with a few basics to get you up to speed on the navigation and different elements inside Leantime."},{id:"top-nav-step",title:"Work Modes",text:"The top navigation shows you the current 'work mode' you're in. You can be inside a project, your personal work area, or in the company mode.",attachTo:{element:".work-modes",on:"bottom"}},{id:"menu-step",title:"Left Navigation",text:"The left navigation breaks down the current work mode and g
1ives you access to different areas. Everything presented here is part of the currently selected work mode above.",attachTo:{element:".leftpanel",on:"right"}},{id:"my-menu",title:"My Profile Bar",text:"Here you'll find links to your account as well as notifications and latest news about Leantime.",attachTo:{element:".headmenu.pull-right",on:"bottom"}},{id:"dashboard-widgets",title:"Your Dashboard Widgets",text:"Your dashboard is broken up into various widgets showing you focused information about your work.",attachTo:{element:".primaryContent",on:"top"}},{id:"dashboard-widgets-dandd",title:"Customize Your Dashboard",text:"Widgets can be resized and moved around using the drag and drop functionality.",attachTo:{element:"#widget_wrapper_todos .grid-handler-top",on:"bottom"}},{id:"my-todo-widget",title:"My To-Dos",text:"The My To-Do widget shows you all the tasks that are currently assigned to you.",attachTo:{element:"#widget_wrapper_todos",on:"top"}},{id:"my-todo-widget2",title:"Group To-Dos",text:"You can use the dropdowns here to filter your tasks by project or group them by priority, status, project, or dates.",attachTo:{element:"#yourToDoContainer > .clear",on:"bottom"}},{id:"my-todo-widget4",title:"Sort To-Dos",text:"Each To-Do can be dragged and dropped to change its order. You can also drag and drop a task to the calendar to schedule it.",attachTo:{element:"#yourToDoContainer .sortable-item:first-child",on:"bottom"}},{id:"my-todo-widget-timer",title:"Start the Timer",text:"When you're ready to start working on a task, just click the start timer button.",attachTo:{element:"#yourToDoContainer .sortable-item:first-child .timerContainer",on:"bottom"}},{id:"my-todo-widget-complete",title:"Complete a Task",text:"Once a task is complete, you can mark it as done by clicking the status dropdown.",attachTo:{element:"#yourToDoContainer .sortable-item:first-child .statusDropdown",on:"bottom"}},{id:"my-todo-widget-add",title:"Add More Tasks",text:"You can add more tasks by clicking the plus button in each section, or by using the 3-dot menu next to each task.",attachTo:{element:"#yourToDoContainer .fa-circle-plus",on:"bottom"}},{id:"finish",title:"Congratulations!",text:"You've completed the My Work dashboard tour. Head to <a href='"+leantime.appUrl+"/dashboard/show'>your project</a> to learn more about project management in Leantime."}],projectDashboard:[{id:"left-nav",title:"Project Menu",text:"The project menu organizes your project into different sections: <strong>Data Room</strong> - to host all your files and information, <strong>Think</strong> - to strategize, ideate and define, <strong>Make</strong> - to manage goals, milestones and tasks.",attachTo:{element:".leftmenu ul",on:"left"}},{id:"project-selector",title:"Project Selector",text:"Use the project selector to jump between projects. The left menu shows everything related to your current project.",attachTo:{element:".bigProjectSelector",on:"bottom"}},{id:"project-checklist",title:"Checklist",text:"The project checklist is a quick reference to see if your project contains all the necessary information for successful execution.",attachTo:{element:"#progressForm",on:"bottom"}},{id:"project-status",title:"Quick Status Updates",text:"You can use status updates to quickly share the progress of your project with your team using red, yellow and green colors. The status will be visible across the application.",attachTo:{element:".project-updates",on:"left"}},{id:"project-progress",title:"Progress",text:"The project progress indicator shows you how much work you have completed. It accounts for various task sizes, team velocity, and project milestones.",attachTo:{element:".project-progress",on:"left"}},{id:"latest-tasks",title:"Latest Tasks",text:"The list of latest tasks shows you the most recent tasks added to your project and can be used as a project inbox.",attachTo:{element:".latest-todos",on:"left"}},{id:"teams",title:"Team",text:"The team box shows you the members of this project.",attachTo:{element:".team-container",on:"top"}},{id:"finished",title:"Congratulations!",text:"You've completed the project dashboard tour. Head to the <a href='"+leantime.appUrl+"/tickets/showKanban'>To-Dos</a> to learn more about the various ways to manage your tasks in Leantime."}],kanbanBoard:[{id:"kanban-overview",title:"Your Kanban Board",text:"This is your Kanban board. It helps you visualize your work and limit work-in-progress.",attachTo:{element:".kanban-board-wrapper",on:"top"}},{id:"kanban-columns",title:"Work Flow",text:"Tasks move from left to right as they progress. Drag and drop cards to update their status.",attachTo:{element:".column",on:"right"}},{id:"kanban-columns2",title:"Flexible Columns",text:"Using the 3-dot menu, you can add or remove columns and rename them.",attachTo:{element:".column .widgettitle .inlineDropDownContainer",on:"right"}},{id:"kanban-filter",title:"Filter Tasks",text:"You can filter your tasks by various fields like priority, status, project, or dates.",attachTo:{element:".filterWrapper > .btn",on:"bottom"}},{id:"kanban-group",title:"Swimlanes",text:"Additionally, you can group your tasks to create Kanban swimlanes. This helps you visualize your work by team members, priority, or milestones.",attachTo:{element:".filterWrapper > .btn-group",on:"bottom"}},{id:"kanban-sprints",title:"Sprints",text:"If you manage your work in sprints, you can use the dropdown here to select, create, and update sprints.",attachTo:{element:".pageheader .dropdown",on:"bottom"}},{id:"kanban-congrats",title:"Congratulations!",text:"This concludes the Kanban tour. Head to the <a href='"+leantime.appUrl+"/tickets/showKanban'>Milestones</a> to learn how to create and manage milestones in Leantime."}],milestoneView:[{id:"milestone-overview",title:"Milestones",text:"Milestones help you track major outcomes and project phases.",attachTo:{element:".gantt-wrapper",on:"top"}},{id:"milestone-drag",title:"Drag & Sort",text:"Each bar represents one milestone. You can drag them along the timeline, reorder, and resize them. Everything you do on this screen updates the timing of your milestones.",attachTo:{element:".gantt-wrapper",on:"top"}},{id:"milestone-filter",title:"Filter",text:"You can filter your milestones and also view tasks that are part of them.",attachTo:{element:".filterWrapper > .btn",on:"bottom"}},{id:"milestone-timeframes",title:"Timeframes",text:"You can change the timeframe of the timeline view to see more of the year or dive deep into a daily breakdown.",attachTo:{element:".col-md-4 .pull-right",on:"bottom"}},{id:"milestone-congrats",title:"Congratulations!",text:"This concludes the milestone tour. Head to the <a href='"+leantime.appUrl+"/goalcanvas/dashboard'>Goals</a> to learn how to create and manage goals in Leantime."}],goalsView:[{id:"goals-overview",title:"Goals",text:"Goals help you track measurable impact on your projects."},{id:"goal-parts",title:"Objectives & Metrics",text:"Each goal is made up of an Objective (what you're trying to accomplish) and a Metric (how you'll measure it).",attachTo:{element:".ticketBox",on:"top"}},{id:"goal-progress",title:"Goal Progress",text:"As you update your goal metrics, the progress bar will show you how far along you are.",attachTo:{element:".ticketBox > .row > .col-md-12 .progress",on:"bottom"}},{id:"milestone-connection",title:"Milestones & Goals",text:"You can connect goals to milestones to track the task-level progress of your goals. This helps identify gaps in your project plan.",attachTo:{element:".ticketBox.fixed",on:"bottom"}},{id:"milestone-congrats",title:"Congratulations!",text:"This concludes the goals tour. Milestones, Goals, and To-Dos are the basic building blocks in Leantime. Use them to break down your work into manageable chunks. Head to the <a href='"+leantime.appUrl+"/tickets/showKanban'>Kanban Board</a> to review your tasks."}]}[e]||[]},a=function(a){const o=e(a),i=n(a);
1return i.forEach(((e,n)=>{const r=0===n,l=n===i.length-1,s=[];r||s.push({text:leantime.i18n.__("tour.back"),classes:"shepherd-button-secondary",action:o.back}),l?s.push({text:leantime.i18n.__("tour.finish"),action:function(){t(a),confetti(),o.complete()}}):s.push({text:leantime.i18n.__("tour.next"),action:o.next}),l||s.unshift({text:leantime.i18n.__("tour.cancel"),classes:"shepherd-button-secondary",action:o.cancel}),o.addStep({...e,buttons:s})})),o.on("complete",(function(){t(a)})),o};return{createTour:e,buildTour:a,startTour:function(e){const t=a(e);return t.start(),t},getTourDefinition:n}}(),(leantime=leantime||{}).helperRepository={updateUserModalSettings:function(e,t=!1){leantime.rpc("Users.Users.saveModalDismissal",{modalKey:e,permanent:!!t}).catch((function(e){console.error("Could not save modal setting",e)}))},startingTour:function(){leantime.rpc("Api.Api.setTourActive",{tourActive:1}).catch((function(e){console.error("Could not start tour",e)}))},stopTour:function(){leantime.rpc("Api.Api.setTourActive",{tourActive:0}).catch((function(e){console.error("Could not stop tour",e)}))}},leantime.helperController={showHelperModal:function(e,t,n){jQuery(document).ready((function(){jQuery.nmManual(leantime.appUrl+"/help/showOnboardingDialog?module="+e,{sizes:{minW:t||200,minH:n||500},resizable:!0,autoSizable:!0,callbacks:{beforeShowCont:function(){leantime.replaceSVGColors()},afterShowCont:function(){htmx.process(".nyroModalCont")}}})}))},hideAndKeepHidden:function(e){leantime.helperRepository.updateUserModalSettings(e),leantime.modals.setCustomModalCallback((function(){})),leantime.modals.closeModal()},setDontShowAgain:function(e,t){t?leantime.helperRepository.updateUserModalSettings(e,!0):leantime.helperRepository.updateUserModalSettings(e,!1)},closeModal:function(){leantime.modals.setCustomModalCallback((function(){})),leantime.modals.closeModal()},startMyWorkDashboardTour:function(){return leantime.modals.setCustomModalCallback((function(){})),leantime.modals.closeModal(),leantime.tourFactory.startTour("myWorkDashboard")},startProjectDashboardTour:function(){return leantime.modals.setCustomModalCallback((function(){})),leantime.modals.closeModal(),leantime.helperRepository.updateUserModalSettings("projectDashboard"),leantime.tourFactory.startTour("projectDashboard")},startKanbanTour:function(){return jQuery.nmTop()&&jQuery.nmTop().close(),leantime.helperRepository.updateUserModalSettings("kanbanBoard"),leantime.tourFactory.startTour("kanbanBoard")},startMilestoneTour:function(){return jQuery.nmTop()&&jQuery.nmTop().close(),leantime.helperRepository.updateUserModalSettings("milestoneView"),leantime.tourFactory.startTour("milestoneView")},startGoalTour:function(){return leantime.modals.setCustomModalCallback((function(){})),leantime.modals.closeModal(),leantime.helperRepository.updateUserModalSettings("goals"),leantime.tourFactory.startTour("goalsView")},firstLoginModal:function(){jQuery(document).ready((function(){var e={sizes:{minW:700,minH:250},resizable:!0,autoSizable:!0,callbacks:{afterShowCont:function(){jQuery(".showDialogOnLoad").show(),jQuery(".onboardingModal").nyroModal(e)},beforeClose:function(){location.reload()}}};jQuery(".onboardingModal").nyroModal(e),jQuery.nmManual(leantime.appUrl+"/help/firstLogin",e)}))}},leantime.firstTaskController={initFirstTaskForm:function(){jQuery(document).ready((function(){const e=jQuery("#firstTaskOnboarding");e.length>0&&(e.on("submit",(function(t){t.preventDefault();const n=jQuery("#firstTask");if(""===n.val().trim())return n.addClass("error"),!1;n.removeClass("error"),leantime.confettiHelper.celebrateSuccess(),setTimeout((function(){e[0].submit()}),1500)})),jQuery("#firstTask").on("input",(function(){jQuery(this).removeClass("error")})))}))}},jQuery(document).ready((function(){leantime.firstTaskController.initFirstTaskForm()})),leantime.confettiHelper=function(){var e=function(e){const t={particleCount:100,spread:70,origin:{y:.6},disableForReducedMotion:!0,...e};"function"==typeof confetti?confetti(t):console.error("Confetti library not loaded")};return{triggerConfetti:e,celebrateSuccess:function(){e({particleCount:150,spread:90,origin:{y:.8},colors:["#26a69a","#00bcd4","#4caf50","#8bc34a","#cddc39"]}),setTimeout((function(){e({particleCount:80,spread:120,origin:{y:.7},colors:["#ff9800","#ff5722","#f44336","#e91e63","#9c27b0"]})}),500)}}}(),leantime.goalCanvasController=function(){var e="goal",t=!1,n=function(){return{sizes:{minW:700,minH:1e3},resizable:!0,autoSizable:!0,callbacks:{beforeShowCont:function(){jQuery(".showDialogO
1nLoad").show(),1==t&&(t=!1,location.reload())},afterShowCont:function(){window.htmx.process(".nyroModalCont"),jQuery(".goalCanvasModal, #commentForm, #commentForm .deleteComment, .goalCanvasMilestone .deleteMilestone").nyroModal(n())},beforeClose:function(){location.reload()}},titleFromIframe:!0}},a=function(){jQuery(".goalCanvasModal, #commentForm, #commentForm .deleteComment, .goalCanvasMilestone .deleteMilestone").nyroModal(n())};return{setCloseModal:function(){t=!0},toggleMilestoneSelectors:function(e){"existing"==e&&(jQuery("#newMilestone, #milestoneSelectors").hide("fast"),jQuery("#existingMilestone").show(),a()),"new"==e&&(jQuery("#newMilestone").show(),jQuery("#existingMilestone, #milestoneSelectors").hide("fast"),a()),"hide"==e&&(jQuery("#newMilestone, #existingMilestone").hide("fast"),jQuery("#milestoneSelectors").show("fast"))},openModalManually:function(e){jQuery.nmManual(e,n)},initUserDropdown:function(){jQuery("body").on("click",".userDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("_");jQuery(this).attr("data-label");if(3==t.length){var n=t[0],a=t[1];t[2];jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/"+e+"canvas",data:{id:n,author:a}}).done((function(){jQuery("#userDropdownMenuLink"+n+" span.text span#userImage"+n+" img").attr("src",leantime.appUrl+"/users/profileImage/"+encodeURIComponent(a)),jQuery.growl({message:leantime.i18n.__("short_notifications.user_updated"),style:"success"})}))}}))},initStatusDropdown:function(){jQuery("body").on("click",".statusDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("/"),n=jQuery(this).attr("data-label");if(2==t.length){var a=t[0],o=t[1],i=jQuery(this).attr("class");jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/"+e+"canvas",data:{id:a,status:o}}).done((function(){jQuery("#statusDropdownMenuLink"+a+" span.text").text(n),jQuery("#statusDropdownMenuLink"+a).removeClass().addClass(i+" dropdown-toggle f-left status "),jQuery.growl({message:leantime.i18n.__("short_notifications.status_updated")})}))}}))},initRelatesDropdown:function(){jQuery("body").on("click",".relatesDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("/"),n=jQuery(this).attr("data-label");if(2==t.length){var a=t[0],o=t[1],i=jQuery(this).attr("class");jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/"+e+"canvas",data:{id:a,relates:o}}).done((function(){jQuery("#relatesDropdownMenuLink"+a+" span.text").text(n),jQuery("#relatesDropdownMenuLink"+a).removeClass().addClass(i+" dropdown-toggle f-left relates "),jQuery.growl({message:leantime.i18n.__("short_notifications.relates_updated")})}))}}))},setRowHeights:function(){jQuery("html").height()},initProgressChart:function(e,t,n){var a={type:"doughnut",data:{datasets:[{data:[t,n],backgroundColor:[leantime.dashboardController.chartColors.green,leantime.dashboardController.chartColors.grey],label:leantime.i18n.__("label.project_done")}],labels:[t+"%"]},options:{maintainAspectRatio:!0,responsive:!0,plugins:{legend:{position:"none"},title:{display:!1,text:"Complete"}},animation:{animateScale:!0,animateRotate:!0}}},o=document.getElementById(e).getContext("2d");_progressChart=new Chart(o,a)}}}();var SNAKE=SNAKE||{};window.SNAKE=SNAKE,SNAKE.addEventListener=window.addEventListener?function(e,t,n,a){e.addEventListener(t,n,a)}:window.attachEvent?function(e,t,n){e.attachEvent("on"+t,n)}:void 0,SNAKE.removeEventListener=window.removeEventListener?function(e,t,n,a){e.removeEventListener(t,n,a)}:window.detachEvent?function(e,t,n){e.detachEvent("on"+t,n)}:void 0,SNAKE.Snake=SNAKE.Snake||function(){var e=[],t=function(){this.elm=null,this.elmStyle=null,this.row=-1,this.col=-1,this.xPos=-1e3,this.yPos=-1e3,this.next=null,this.prev=null};return function(n){if(n&&n.playingBoard){void 0===localStorage.jsSnakeHighScore&&localStorage.setItem("jsSnakeHighScore",0);var a=this,o=n.playingBoard,i=1,r=-1,l=!0,s=!0,d=-1,u=[0,1,0,-1],c=[-1,0,1,0],m=[],p=[],g=80,y=!1,h=!1,f=document.getElementById("selectMode");f&&f.addEventListener("change",(function(e){var t=(e=e||{}).target?parseInt(e.target.value):75;(isNaN(t)||t<25)&&(t=75),g=t,setTimeout((function(){document.getElementById("game-area").focus()}),10)})),a.snakeBody={},a.snakeBody.b0=new t,a.snakeBody.b0.row=n.startRow||1,a.snakeBody.b0.c
1ol=n.startCol||1,a.snakeBody.b0.xPos=a.snakeBody.b0.row*o.getBlockWidth(),a.snakeBody.b0.yPos=a.snakeBody.b0.col*o.getBlockHeight(),a.snakeBody.b0.elm=b(),a.snakeBody.b0.elmStyle=a.snakeBody.b0.elm.style,o.getBoardContainer().appendChild(a.snakeBody.b0.elm),a.snakeBody.b0.elm.style.left=a.snakeBody.b0.xPos+"px",a.snakeBody.b0.elm.style.top=a.snakeBody.b0.yPos+"px",a.snakeBody.b0.next=a.snakeBody.b0,a.snakeBody.b0.prev=a.snakeBody.b0,a.snakeLength=1,a.snakeHead=a.snakeBody.b0,a.snakeTail=a.snakeBody.b0,a.snakeHead.elm.className=a.snakeHead.elm.className.replace(/\bsnake-snakebody-dead\b/,""),a.snakeHead.elm.id="snake-snakehead-alive",a.snakeHead.elm.className+=" snake-snakebody-alive",a.setPaused=function(e){h=e},a.getPaused=function(){return h},a.handleArrowKeys=function(e){if(y||h&&!n.premoveOnPause)return;a.snakeLength;let t=-1;switch(e){case 37:case 65:t=3;break;case 38:case 87:t=0;break;case 39:case 68:t=1;break;case 40:case 83:t=2}d!==i&&(r=t),(2!==Math.abs(t-i)&&(l||h)||s)&&(d=t,l=!1,s=!1)},a.go=function(){var e=a.snakeHead,t=a.snakeTail,n=o.grid;if(!0!==h){if(a.snakeTail=t.prev,a.snakeHead=t,n[t.row]&&n[t.row][t.col]&&(n[t.row][t.col]=0),-1!==d&&(i=d,-1!==r&&(d=r,r=-1)),l=!0,t.col=e.col+u[i],t.row=e.row+c[i],t.xPos=e.xPos+m[i],t.yPos=e.yPos+p[i],t.elmStyle||(t.elmStyle=t.elm.style),t.elmStyle.left=t.xPos+"px",t.elmStyle.top=t.yPos+"px",a.snakeLength>1&&(t.elm.id="snake-snakehead-alive",e.elm.id=""),0===n[t.row][t.col])n[t.row][t.col]=1,setTimeout((function(){a.go()}),g);else if(n[t.row][t.col]>0)a.handleDeath();else if(n[t.row][t.col]===o.getGridFoodValue()){if(n[t.row][t.col]=1,!a.eatFood())return void a.handleWin();setTimeout((function(){a.go()}),g)}}else setTimeout((function(){a.go()}),g)},a.eatFood=function(){e.length<=5&&v(10);for(var t,n=e.splice(0,5),i=n.length,r=a.snakeTail;i--;)t="b"+a.snakeLength++,a.snakeBody[t]=n[i],a.snakeBody[t].prev=r,a.snakeBody[t].elm.className=a.snakeHead.elm.className.replace(/\bsnake-snakebody-dead\b/,""),a.snakeBody[t].elm.className+=" snake-snakebody-alive",r.next=a.snakeBody[t],r=a.snakeBody[t];if(a.snakeTail=a.snakeBody[t],a.snakeTail.next=a.snakeHead,a.snakeHead.prev=a.snakeTail,!o.foodEaten())return!1;var l=document.getElementById("selectMode");return 0==l.options[l.selectedIndex].text.localeCompare("Rush")&&(g>30?g-=5:g=30),!0},a.handleDeath=function(){var e=document.getElementById("selectMode").value;g=parseInt(e),_(o.handleDeath)},a.handleWin=function(){_(o.handleWin)},a.rebirth=function(){y=!1,l=!0,s=!0,r=-1},a.reset=function(){if(!1!==y){for(var t,i=[],r=a.snakeHead.next;r!==a.snakeHead;)t=r.next,r.prev=null,r.next=null,i.push(r),r=t;a.snakeHead.next=a.snakeHead,a.snakeHead.prev=a.snakeHead,a.snakeTail=a.snakeHead,a.snakeLength=1;for(var l=0;l<i.length;l++)i[l].elm.style.left="-1000px",i[l].elm.style.top="-1000px",i[l].elm.className=a.snakeHead.elm.className.replace(/\bsnake-snakebody-dead\b/,""),i[l].elm.className+=" snake-snakebody-alive";e.concat(i),a.snakeHead.elm.className=a.snakeHead.elm.className.replace(/\bsnake-snakebody-dead\b/,""),a.snakeHead.elm.className+=" snake-snakebody-alive",a.snakeHead.elm.id="snake-snakehead-alive",a.snakeHead.row=n.startRow||1,a.snakeHead.col=n.startCol||1,a.snakeHead.xPos=a.snakeHead.row*o.getBlockWidth(),a.snakeHead.yPos=a.snakeHead.col*o.getBlockHeight(),a.snakeHead.elm.style.left=a.snakeHead.xPos+"px",a.snakeHead.elm.style.top=a.snakeHead.yPos+"px"}},v(10),m[0]=0,m[1]=o.getBlockWidth(),m[2]=0,m[3]=-1*o.getBlockWidth(),p[0]=-1*o.getBlockHeight(),p[1]=0,p[2]=o.getBlockHeight(),p[3]=0}function b(){var e=document.createElement("div");return e.className="snake-snakebody-block",e.style.left="-1000px",e.style.top="-1000px",e.style.width=o.getBlockWidth()+"px",e.style.height=o.getBlockHeight()+"px",e}function v(n){for(var a,i=b(),r=1;r<n;r++)(a=new t).elm=i.cloneNode(!0),a.elmStyle=a.elm.style,o.getBoardContainer().appendChild(a.elm),e[e.length]=a;(a=new t).elm=i,o.getBoardContainer().appendChild(a.elm),e[e.length]=a}function _(e){var t;t=localStorage.jsSnakeHighScore,a.snakeLength>t&&(alert("Congratulations! You have beaten your previous high score, which was "+t+"."),localStorage.setItem("jsSnakeHighScore",a.snakeLength)),a.snakeHead.elm.style.zIndex=function(e){var t,n=0,a=0;for(t in e)e[t].elm.currentStyle?a=parseFloat(e[t].elm.style["z-index"],10):window.getComputedStyle&&(a=parseFloat(document.defaultView.getComputedStyle(e[t].elm,null).getPropertyValue("z-index"),10)),!isNaN(a)&&a>n&&(n=a);return n+1}(a.snakeBody),a.snakeHead.elm.className=a.snakeHead.elm.className.replace(/\bsnake-snakebody-alive\b/,""),a.snakeHead.elm.className+=" snake-snakebody-dead",y=!0,e(
1)}}}(),SNAKE.Food=SNAKE.Food||function(){var e=0;function t(e,t){return Math.floor(Math.random()*(t+1-e))+e}return function(n){if(n&&n.playingBoard){var a,o,i=n.playingBoard,r=e++,l=document.createElement("div");l.setAttribute("id","snake-food-"+r),l.className="snake-food-block",l.style.width=i.getBlockWidth()+"px",l.style.height=i.getBlockHeight()+"px",l.style.left="-1000px",l.style.top="-1000px",i.getBoardContainer().appendChild(l),this.getFoodElement=function(){return l},this.randomlyPlaceFood=function(){i.grid[a]&&i.grid[a][o]===i.getGridFoodValue()&&(i.grid[a][o]=0);for(var e=0,n=0,r=0,s=i.grid.length-1,d=i.grid[0].length-1;0!==i.grid[e][n];)if(e=t(1,s),n=t(1,d),++r>2e4)return!1;return i.grid[e][n]=i.getGridFoodValue(),a=e,o=n,l.style.top=e*i.getBlockHeight()+"px",l.style.left=n*i.getBlockWidth()+"px",!0}}}}(),SNAKE.Board=SNAKE.Board||function(){var e=0;function t(e){var t,n=0,a=0;for(t in e)e[t].elm.currentStyle?a=parseFloat(e[t].elm.style["z-index"],10):window.getComputedStyle&&(a=parseFloat(document.defaultView.getComputedStyle(e[t].elm,null).getPropertyValue("z-index"),10)),!isNaN(a)&&a>n&&(n=a);return n+1}return function(n){var a,o,i,r,l,s,d,u,c,m,p,g,y=this,h=e++,f=n||{},b=1,v=!1;function _(){(l=document.createElement("div")).setAttribute("id","playingField"),l.className="snake-playing-field",SNAKE.addEventListener(l,"click",(function(){r.focus()}),!1),(g=document.createElement("div")).className="snake-pause-screen",g.innerHTML="<div style='padding:10px;'>[Paused]<p/>Press [space] to unpause.</div>",(s=document.createElement("div")).className="snake-panel-component",s.innerHTML="<a href='http://patorjk.com/blog/software/' class='snake-link'>more patorjk.com apps</a> - <a href='https://github.com/patorjk/JavaScript-Snake' class='snake-link'>source code</a> - <a href='https://www.youtube.com/channel/UCpcCLm9y6CsjHUrCvJHYHUA' class='snake-link'>pat's youtube</a>",(d=document.createElement("div")).className="snake-panel-component",d.innerHTML="Length: 1",(u=document.createElement("div")).className="snake-panel-component",u.innerHTML="Highscore: "+(localStorage.jsSnakeHighScore||0),c=function(){var e=document.createElement("div");e.id="sbWelcome"+h,e.className="snake-welcome-dialog";var t=document.createElement("div"),n="";f.fullScreen&&(n="On Windows, press F11 to play in Full Screen mode.");t.innerHTML="JavaScript Snake<p></p>Use the <strong>arrow keys</strong> on your keyboard to play the game. "+n+"<p></p>";var a=document.createElement("button");a.appendChild(document.createTextNode("Play Game"));var o=function(){SNAKE.removeEventListener(window,"keyup",i,!1),e.style.display="none",y.setBoardState(1),y.getBoardContainer().focus()},i=function(e){if(!e)e=window.event;var t=e.which?e.which:e.keyCode;32!==t&&13!==t||o()};return SNAKE.addEventListener(window,"keyup",i,!1),SNAKE.addEventListener(a,"click",o,!1),e.appendChild(t),e.appendChild(a),e}(),m=j("You died :(","sbTryAgain","snake-try-again-dialog"),p=j("You win! :D","sbWin","snake-win-dialog"),SNAKE.addEventListener(r,"keyup",(function(e){if(!e)e=window.event;return e.cancelBubble=!0,e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),!1}),!1),r.className="snake-game-container",g.style.zIndex=1e4,r.appendChild(g),r.appendChild(l),r.appendChild(s),r.appendChild(d),r.appendChild(u),r.appendChild(c),r.appendChild(m),r.appendChild(p),o=new SNAKE.Snake({playingBoard:y,startRow:2,startCol:2,premoveOnPause:f.premoveOnPause}),a=new SNAKE.Food({playingBoard:y}),c.style.zIndex=1e3}function j(e,t,n){var a=document.createElement("div");a.id=t+h,a.className=n;var o=document.createElement("div");o.innerHTML="JavaScript Snake<p></p>"+e+"<p></p>";var i=document.createElement("button");i.appendChild(document.createTextNode("Play Again?"));var r=function(){a.style.display="none",y.resetBoard(),y.setBoardState(1),y.getBoardContainer().focus()};return SNAKE.addEventListener(window,"keyup",(function(e){if(0===b&&"block"===a.style.display){if(!e)e=window.event;var t=e.which?e.which:e.keyCode;32!==t&&13!==t||r()}}),!0),SNAKE.addEventListener(i,"click",r,!1),a.appendChild(o),a.appendChild(i),a}function w(e){var n=Math.max(t(o.snakeBody),t({tmp:{elm:a.getFoodElement()}}));r.removeChild(e),r.appendChild(e),e.style.zIndex=n,e.style.display="block",y.setBoardState(0)}y.grid=[],y.setPaused=function(e){v=e,o.setPaused(e),g.style.display=v?"block":"none"},y.getPaused=function(){return v},y.resetBoard=function(){SNAKE.removeEventListener(r,"keydown",i,!1),o.reset(),d.innerHTML="Length: 1",y.setupPlayingField()},y.getBoardState=function(){return b},y.setBoardState=function(e){b=e},y.getGridFoodValue=function(){return-1},y.getPlayingFieldElement=function(){return l},y.setBoardContainer=function(e){"string"==typeof e&&(e=document.getElementById(e)),e!==r&&(r=e,l=null,y.setupPlayingField())},y.getBoardContainer=function(){return r},y.getBlockWidth=function(){return 20},y.getBlockHeight=function(){return 20},y.setupPlayingField=function(){var e,t,n,c,m,p;l||_(),!0===f.fullScreen?(n=0,c=0,p=0,"number"==typeof window.innerWidth?p=window.innerWidth:document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?p=document.documentElement.clientWidth:document.body&&(document.body.clientWidth||document.body.clientHeight)&&(p=document.body.clientWidth),e=p-20,m=0,"number"==typeof window.innerHeight?m=window.innerHeight:document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)?m=document.documentElement.clientHeight:document.body&&(document.body.clientWidth||document.body.clientHeight)&&(m=document.body.clientHeight),t=m-20):(n=f.top,c=f.left,e=f.width,t=f.height);var g=2*y.getBlockWidth()+e%y.getBlockWidth(),h=Math.min(250*y.getBlockWidth()-g,e-g),b=3*y.getBlockHeight()+t%y.getBlockHeight(),v=Math.min(250*y.getBlockHeight()-b,t-b);r.style.left=c+"px",r.style.top=n+"px",r.style.width=e+"px",r.style.height=t+"px",l.
1style.left=y.getBlockWidth()+"px",l.style.top=y.getBlockHeight()+"px",l.style.width=h+"px",l.style.height=v+"px";var j=b-y.getBlockHeight(),w=y.getBlockHeight()+v+Math.round((j-30)/2)+"px";s.style.top=w,s.style.width="450px",s.style.left=Math.round(e/2)-Math.round(225)+"px",d.style.top=w,d.style.left="30px",u.style.top=w,u.style.left=e-140+"px",s.style.display=e<700?"none":"block",y.grid=[];for(var k=h/y.getBlockWidth()+2,Q=v/y.getBlockHeight()+2,C=0;C<Q;C++){y.grid[C]=[];for(var x=0;x<k;x++)y.grid[C][x]=0===x||0===C||x===k-1||C===Q-1?1:0}a.randomlyPlaceFood(),i=function(e){if(!e)e=window.event;var t=e.which?e.which:e.keyCode;if(1===y.getBoardState()){if(!(t>=37&&t<=40)&&87!==t&&65!==t&&83!==t&&68!==t)return;SNAKE.removeEventListener(r,"keydown",i,!1),i=function(e){if(!e)e=window.event;var t=e.which?e.which:e.keyCode;return 32===t&&0!=y.getBoardState()&&y.setPaused(!y.getPaused()),o.handleArrowKeys(t),e.cancelBubble=!0,e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),!1},SNAKE.addEventListener(r,"keydown",i,!1),o.rebirth(),o.handleArrowKeys(t),y.setBoardState(2),o.go()}return e.cancelBubble=!0,e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault(),!1},SNAKE.addEventListener(r,"keydown",i,!1)},y.foodEaten=function(){return d.innerHTML="Length: "+o.snakeLength,o.snakeLength>localStorage.jsSnakeHighScore&&(localStorage.setItem("jsSnakeHighScore",o.snakeLength),u.innerHTML="Highscore: "+localStorage.jsSnakeHighScore),!!a.randomlyPlaceFood()},y.handleDeath=function(){w(m)},y.handleWin=function(){w(p)},f.fullScreen=void 0!==f.fullScreen&&f.fullScreen,f.top=void 0===f.top?0:f.top,f.left=void 0===f.left?0:f.left,f.width=void 0===f.width?400:f.width,f.height=void 0===f.height?400:f.height,f.premoveOnPause=void 0!==f.premoveOnPause&&f.premoveOnPause,f.fullScreen&&SNAKE.addEventListener(window,"resize",(function(){y.setupPlayingField()}),!1),y.setBoardState(0),f.boardContainer&&y.setBoardContainer(f.boardContainer)}}(),leantime.dashboardController=function(){var e={};e="dark"==leantime.theme?{red:"rgb(201,48,44)",orange:"rgb(255, 159, 64)",yellow:"rgb(255, 205, 86)",green:"rgb(90,182,90)",blue:"rgb(54, 162, 235)",purple:"rgb(153, 102, 255)",grey:"rgb(56, 56, 56)"}:{red:"rgb(201,48,44)",orange:"rgb(255, 159, 64)",yellow:"rgb(255, 205, 86)",green:"rgb(90,182,90)",blue:"rgb(54, 162, 235)",purple:"rgb(153, 102, 255)",grey:"rgb(201, 203, 207)"};return{chartColors:e,initBurndown:function(e,t,n){moment.locale(leantime.i18n.__("language.code"));var a={type:"line",data:{labels:e,datasets:[{label:leantime.i18n.__("label.ideal"),backgroundColor:leantime.dashboardController.chartColors.blue,borderColor:leantime.dashboardController.chartColors.blue,data:t,fill:!1,lineTension:0},{label:"Actual",backgroundColor:leantime.dashboardController.chartColors.red,borderColor:leantime.dashboardController.chartColors.red,data:n,fill:!1,lineTension:0}]},options:{responsive:!0,maintainAspectRatio:!1,hover:{mode:"nearest",intersect:!0},plugins:{legend:{position:"bottom"},title:{display:!1,text:"Line Chart"},tooltips:{mode:"index",intersect:!1}},scales:{x:{display:!0,title:{display:!0,text:leantime.i18n.__("label.date")},type:"time",time:{unit:"day"}},y:{display:!0,title:{display:!0,text:leantime.i18n.__("label.num_tickets")},ticks:{beginAtZero:!0}}}}},o=document.getElementById("sprintBurndown").getContext("2d");return _burndownChart=new Chart(o,a),_burndownChart},initChartButtonClick:function(e,t,n,a,o){jQuery("#"+e).click((function(e){o.data.datasets[0].data=n,o.data.datasets[1].data=a,o.options.scales.y.title.text=t,jQuery(".chartButtons").removeClass("active"),jQuery(this).addClass("active"),o.update()}))},initBacklogBurndown:function(e,t){moment.locale(leantime.i18n.__("language.code"));var n={type:"line",data:{labels:e,datasets:[{label:leantime.i18n.__("label.done_todos"),backgroundColor:leantime.dashboardController.chartColors.green,borderColor:leantime.dashboardController.chartColors.green,data:t.done.data,fill:!0,lineTension:0,pointRadius:0},{label:leantime.i18n.__("label.progress_todos"),backgroundColor:leantime.dashboardController.chartColors.yellow,borderColor:leantime.dashboardController.chartColors.yellow,data:t.progress.data,fill:!0,lineTension:0,pointRadius:0},{label:leantime.i18n.__("label.new_todos"),backgroundColor:leantime.dashboardController.chartColors.red,borderColor:leantime.dashboardController.chartColors.red,data:t.open.data,fill:!0,lineTension:0,pointRadius:0}]},options:{responsive:!0,maintainAspectRatio:!1,hover:{mode:"nearest",intersect:!0}
1,elements:{point:{pointStyle:"line",radius:"0"}},plugins:{tooltips:{mode:"index",intersect:!1},legend:{position:"bottom"},title:{display:!1,text:"Line Chart"}},scales:{x:{display:!0,title:{display:!0,text:leantime.i18n.__("label.date")},type:"time",time:{unit:"day"}},y:{display:!0,title:{display:!0,text:leantime.i18n.__("label.num_tickets")},ticks:{beginAtZero:!0},stacked:!0}}}},a=document.getElementById("backlogBurndown").getContext("2d");return _burndownChart=new Chart(a,n),_burndownChart},initBacklogChartButtonClick:function(e,t,n,a){jQuery("#"+e).click((function(e){a.data.datasets[0].data=t.done.data,a.data.datasets[1].data=t.progress.data,a.data.datasets[2].data=t.open.data,a.options.scales.y.title.text=n,jQuery(".backlogChartButtons").removeClass("active"),jQuery(this).addClass("active"),a.update()}))},initProgressChart:function(e,t,n){var a={type:"doughnut",data:{datasets:[{data:[t,n],backgroundColor:[leantime.dashboardController.chartColors.green,leantime.dashboardController.chartColors.grey],label:leantime.i18n.__("label.project_done")}],labels:[t+"% Done",n+"% Open"]},options:{maintainAspectRatio:!1,responsive:!0,plugins:{legend:{position:"bottom"},title:{display:!1,text:""}},animation:{animateScale:!0,animateRotate:!0}}},o=document.getElementById(e).getContext("2d");new Chart(o,a)},prepareHiddenDueDate:function(){var e=moment().startOf("week").add(5,"days");jQuery("#dateToFinish").val(e.format("YYYY-MM-DD"))},initDueDateTimePickers:function(){jQuery(document).ready((function(){jQuery(".duedates").datepicker({dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),onClose:function(e){var t;""==e&&jQuery(this).val(leantime.i18n.__("text.anytime"));var n=moment(e,leantime.i18n.__("language.momentJSDate")).format("YYYY-MM-DD HH:mm:ss"),a=jQuery(this).attr("data-id");t=n,leantime.ticketsRepository.updateDueDates(a,t,(function(){jQuery.growl({message:leantime.i18n.__("short_notifications.duedate_updated")})}))}})}))}}}(),leantime.commentsController={enableCommenterForms:function(){jQuery("[class^='mainToggler']").show(),jQuery(".commentBox").hide(),jQuery(".deleteComment, .replyButton").show(),jQuery(".commentReply .tiptap-wrapper").each((function(){var e=jQuery(this).find(".tiptap-editor")[0];if(e&&window.leantime&&window.leantime.tiptapController){var t=leantime.tiptapController.registry.get(e);t&&t.setEditable(!0)}})),jQuery(".commentReply .tiptap-toolbar").show(),jQuery(".commenterFields, .commentBox, [class*='commentBox-']").find("input, textarea, button, select").prop("readonly",!1).prop("disabled",!1)},toggleCommentBoxes:function(e){0==e?jQuery("#mainToggler").hide():jQuery("#mainToggler").show(),window.leantime&&window.leantime.tiptapController&&window.leantime.tiptapController.registry&&jQuery(".commentBox .tiptap-editor").each((function(){leantime.tiptapController.registry.destroy(this)})),jQuery(".commentBox .tiptap-wrapper").remove(),jQuery(".commentBox textarea").remove(),jQuery(".commentBox").hide("fast",(function(){})),jQuery("#comment"+e+" .commentReply").prepend('<textarea rows="5" cols="75" name="text" class="tiptapSimple"></textarea>'),window.leantime&&window.leantime.tiptapController&&leantime.tiptapController.initSimpleEditor(),jQuery("#comment"+e).show("fast"),jQuery("#father").val(e)}},leantime.clientsController={initDates:function(){jQuery(".projectDateFrom, .projectDateTo").datepicker({dateFormat:leantime.i18n.__("language.dateformat"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader")})}
1,initClientTabs:function(){jQuery(".clientTabs").tabs()},initClientTable:function(){jQuery(document).ready((function(){jQuery("#allClientsTable").DataTable({language:{decimal:leantime.i18n.__("datatables.decimal"),emptyTable:leantime.i18n.__("datatables.emptyTable"),info:leantime.i18n.__("datatables.info"),infoEmpty:leantime.i18n.__("datatables.infoEmpty"),infoFiltered:leantime.i18n.__("datatables.infoFiltered"),infoPostFix:leantime.i18n.__("datatables.infoPostFix"),thousands:leantime.i18n.__("datatables.thousands"),lengthMenu:leantime.i18n.__("datatables.lengthMenu"),loadingRecords:leantime.i18n.__("datatables.loadingRecords"),processing:leantime.i18n.__("datatables.processing"),search:leantime.i18n.__("datatables.search"),zeroRecords:leantime.i18n.__("datatables.zeroRecords"),paginate:{first:leantime.i18n.__("datatables.first"),last:leantime.i18n.__("datatables.last"),next:leantime.i18n.__("datatables.next"),previous:leantime.i18n.__("datatables.previous")},aria:{sortAscending:leantime.i18n.__("datatables.sortAscending"),sortDescending:leantime.i18n.__("datatables.sortDescending")}},dom:'<"top">rt<"bottom"ilp><"clear">',searching:!1,displayLength:100})}))}},leantime.canvasController=function(){var e="",t=!1,n={sizes:{minW:700,minH:1e3},resizable:!0,autoSizable:!0,callbacks:{beforeShowCont:function(){jQuery(".showDialogOnLoad").show(),1==t&&(t=!1,location.reload())},afterShowCont:function(){window.htmx.process(".nyroModalCont"),jQuery("."+e+"CanvasModal, #commentForm, #commentForm .deleteComment, ."+e+"CanvasMilestone .deleteMilestone").nyroModal(n)},beforeClose:function(){location.reload()}},titleFromIframe:!0},a=function(){jQuery("."+e+"CanvasModal, #commentForm, #commentForm .deleteComment, ."+e+"CanvasMilestone .deleteMilestone").nyroModal(n)};return{setCanvasName:function(t){e=t},initFilterBar:function(){jQuery(window).bind("load",(function(){jQuery(".loading").fadeOut(),jQuery(".filterBar .row-fluid").css("opacity","1")}))},initCanvasLinks:function(){jQuery(".addCanvasLink").nyroModal(),jQuery(".editCanvasLink").click((function(){jQuery("#editCanvas").modal("show")})),jQuery(".cloneCanvasLink").click((function(){jQuery("#cloneCanvas").modal("show")})),jQuery(".mergeCanvasLink").click((function(){jQuery("#mergeCanvas").modal("show")})),jQuery(".importCanvasLink").click((function(){jQuery("#importCanvas").modal("show")}))},initUserDropdown:function(){jQuery("body").on("click",".userDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("_");jQuery(this).attr("data-label");if(3==t.length){var n=t[0],a=t[1];t[2];jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/"+e+"canvas",data:{id:n,author:a}}).done((function(){jQuery("#userDropdownMenuLink"+n+" span.text span#userImage"+n+" img").attr("src",leantime.appUrl+"/users/profileImage/"+encodeURIComponent(a)),jQuery.growl({message:leantime.i18n.__("short_notifications.user_updated"),style:"success"})}))}}))},initStatusDropdown:function(){jQuery("body").on("click",".statusDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("/"),n=jQuery(this).attr("data-label");if(2==t.length){var a=t[0],o=t[1],i=jQuery(this).attr("class");jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/"+e+"canvas",data:{id:a,status:o}}).done((function(){jQuery("#statusDropdownMenuLink"+a+" span.text").text(n),jQuery("#statusDropdownMenuLink"+a).removeClass().addClass(i+" dropdown-toggle f-left status "),jQuery.growl({message:leantime.i18n.__("short_notifications.status_updated")})}))}}))},initRelatesDropdown:function(){jQuery("body").on("click",".relatesDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("/"),n=jQuery(this).attr("data-label");if(2==t.length){var a=t[0],o=t[1],i=jQuery(this).attr("class");jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/"+e+"canvas",data:{id:a,relates:o}}).done((function(){jQuery("#relatesDropdownMenuLink"+a+" span.text").text(n),jQuery("#relatesDropdownMenuLink"+a).removeClass().addClass(i+" dropdown-toggle f-left relates "),jQuery.growl({message:leantime.i18n.__("short_notifications.relates_updated")})}
1))}}))},setCloseModal:function(){t=!0},toggleMilestoneSelectors:function(e){"existing"==e&&(jQuery("#newMilestone, #milestoneSelectors").hide("fast"),jQuery("#existingMilestone").show(),a()),"new"==e&&(jQuery("#newMilestone").show(),jQuery("#existingMilestone, #milestoneSelectors").hide("fast"),a()),"hide"==e&&(jQuery("#newMilestone, #existingMilestone").hide("fast"),jQuery("#milestoneSelectors").show("fast"))},openModalManually:function(e){jQuery.nmManual(e,n)}}}(),leantime.calendarController=function(){var e=null;return{initCalendar:function(e){var t=new Date,n=(t.getDate(),t.getMonth(),t.getFullYear(),jQuery("body").height()-260),a=jQuery("#calendar").fullCalendar({timeZone:leantime.i18n.__("usersettings.timezone"),height:n,header:{left:"prev,next today",center:"title",right:"month,agendaWeek,agendaDay,listDay"},titleFormat:{month:"MMMM yyyy",week:"MMM d[ yyyy]{ '&#8212;'[ MMM] d yyyy}",day:"dddd, MMM d, yyyy"},columnFormat:{month:leantime.i18n.__("language.columnFormatMonth"),week:leantime.i18n.__("language.columnFormatWeek"),day:leantime.i18n.__("language.columnFormatday")},timeFormat:{"":leantime.dateHelper.getFormatFromSettings("timeformat","luxon")},isRTL:"false"==leantime.i18n.__("language.isRTL")?0:1,firstDay:leantime.i18n.__("language.firstDayOfWeek"),monthNames:leantime.i18n.__("language.monthNames").split(","),monthNamesShort:leantime.i18n.__("language.monthNamesShort").split(","),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),buttonText:{prev:"&laquo;",next:"&raquo;",prevYear:"&nbsp;&lt;&lt;&nbsp;",nextYear:"&nbsp;&gt;&gt;&nbsp;",today:leantime.i18n.__("buttons.today"),month:leantime.i18n.__("buttons.month"),week:leantime.i18n.__("buttons.week"),day:leantime.i18n.__("buttons.day")},select:function(e,t,n){var o=prompt(leantime.i18n.__("label.event_title"));o&&a.fullCalendar("renderEvent",{title:o,start:e,end:t,allDay:n},!0),a.fullCalendar("unselect")},events:e,eventColor:"#0866c6"})},initEventDatepickers:function(){jQuery(document).ready((function(){Date.prototype.addDays=function(e){return this.setDate(this.getDate()+e),this},jQuery.datepicker.setDefaults({beforeShow:function(e){if(jQuery(e).attr("readonly"))return!1}});var e=leantime.dateHelper.getFormatFromSettings("dateformat","jquery");function t(t){var n;try{n=jQuery.datepicker.parseDate(e,t.value)}catch(e){n=null,console.log(e)}return n}from=jQuery("#event_date_from").datepicker({numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(e){to.datepicker("option","minDate",t(this)),""==jQuery("#event_date_to").val()&&jQuery("#event_date_to").val(jQuery("#event_date_from").val())})),to=jQuery("#event_date_to").datepicker({numberOfMonths:1,dateFormat:leantime.dateHelper.getFormatFromSettings("dateformat","jquery"),dayNames:leantime.i18n.__("language.dayNames").split(","),dayNamesMin:leantime.i18n.__("language.dayNamesMin").split(","),dayNamesShort:leantime.i18n.__("language.dayNamesShort").split(","),monthNames:leantime.i18n.__("language.monthNames").split(","),currentText:leantime.i18n.__("language.currentText"),closeText:leantime.i18n.__("language.closeText"),buttonText:leantime.i18n.__("language.buttonText"),isRTL:"true"===leantime.i18n.__("language.isRTL")?1:0,nextText:leantime.i18n.__("language.nextText"),prevText:leantime.i18n.__("language.prevText"),weekHeader:leantime.i18n.__("language.weekHeader"),firstDay:leantime.i18n.__("language.firstDayOfWeek")}).on("change",(function(){from.datepicker("option","maxDate",t(this))}))}))},initExportModal:function(){var e={sizes:{minW:400,minH:350},resizable:!0,autoSizable:!0,callbacks:{afterShowCont:function(){jQuery(".formModal").nyroModal(e)},beforeClose:function(){location.reload()}},titleFromIframe:!0};jQuery(".exportModal").nyroModal(e)},initWidgetCalendar:function(t,n){let a=document.querySelector(t),o=leantime.dateHelper.getFormatFromSettings("dateformat","luxon"),i=leantime.dateHelper.getFormatFromSettings("timeformat","luxon");const r=new FullCalendar.Calendar(a,{timeZone:leantime.i18n.__("usersettings.timezone"),height:"calc(100% - 65px)",stickyHeaderDates:!0,initialView:n,eventStartEditable:!0,dayHeaderFormat:o,eventTimeFormat:i,slotLabelFormat:i,firstDay:leantime.i18n.__("language.firstDayOfWeek"),views:{multiMonthOneMonth:{type:"multiMonth",duration:{months:1},multiMonthTitleFormat:{month:"long",year:"numeric"},dayHeaderFormat:{weekday:"short"}},timeGridDay:{dayHeaders:!1},listWeek:{listDayFormat:{weekday:"long"},listDaySideFormat:leantime.dateHelper.getFormatFromSettings("dateformat","luxon")}},droppable:!0,eventSources:eventSources,editable:!0,headerToolbar:!1,nowIndicator:!0,bootstrapFontAwesome:{close:"fa-times",prev:"fa-chevron-left",next:"fa-chevron-right",prevYear:"fa-angle-double-left",nextYear:"fa-angle-double-right"},eventDrop:function(e){"ticket"==e.event.extendedProps.enitityType?leantime.rpc("Tickets.Tickets.patchTicket",{id:e.event.extendedProps.enitityId,values:{editFrom:luxon.DateTime.fromJSDate(e.event.start).toFormat(o),timeFrom:luxon.DateTime.fromJSDate(e.event.start).toFormat(i),editTo:luxon.DateTime.fromJSDate(e.event.end
1).toFormat(o),timeTo:luxon.DateTime.fromJSDate(e.event.end).toFormat(i)}}).catch((function(t){jQuery.growl({message:t&&t.message?t.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),e.revert(),console.error("Could not update ticket dates",t)})):"event"==e.event.extendedProps.enitityType&&leantime.rpc("Calendar.Calendar.patch",{id:e.event.extendedProps.enitityId,params:{dateFrom:e.event.startStr,dateTo:e.event.endStr}}).then((function(t){t||e.revert()})).catch((function(t){console.error("Could not update event dates",t),e.revert()}))},eventResize:function(e){"ticket"==e.event.extendedProps.enitityType?leantime.rpc("Tickets.Tickets.patchTicket",{id:e.event.extendedProps.enitityId,values:{editFrom:luxon.DateTime.fromJSDate(e.event.start).toFormat(o),timeFrom:luxon.DateTime.fromJSDate(e.event.start).toFormat(i),editTo:luxon.DateTime.fromJSDate(e.event.end).toFormat(o),timeTo:luxon.DateTime.fromJSDate(e.event.end).toFormat(i)}}).catch((function(t){jQuery.growl({message:t&&t.message?t.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),e.revert(),console.error("Could not update ticket dates",t)})):"event"==e.event.extendedProps.enitityType&&leantime.rpc("Calendar.Calendar.patch",{id:e.event.extendedProps.enitityId,params:{dateFrom:e.event.startStr,dateTo:e.event.endStr}}).then((function(t){t||e.revert()})).catch((function(t){console.error("Could not update event dates",t),e.revert()}))},eventReceive:function(e){leantime.rpc("Tickets.Tickets.patchTicket",{id:e.event.id,values:{editFrom:luxon.DateTime.fromJSDate(e.event.start).toFormat(o),timeFrom:luxon.DateTime.fromJSDate(e.event.start).toFormat(i),editTo:luxon.DateTime.fromJSDate(e.event.end).toFormat(o),timeTo:luxon.DateTime.fromJSDate(e.event.end).toFormat(i)}}).catch((function(t){jQuery.growl({message:t&&t.message?t.message:leantime.i18n.__("short_notifications.not_saved"),style:"error"}),e.revert(),console.error("Could not update ticket dates",t)}))},eventDragStart:function(e){},eventDidMount:function(e){!1===e.isDraggable&&jQuery(e.el).addClass("locked"),null!=e.event.extendedProps.location&&""!=e.event.extendedProps.location&&0==e.event.extendedProps.location.indexOf("http")&&(jQuery(e.el).attr("href",e.event.extendedProps.location),jQuery(e.el).attr("target","_blank"))}});function l(e){var t=e;t&&new FullCalendar.ThirdPartyDraggable(t,{itemSelector:".draggable-todo",mirrorClass:"dragging-mirror",eventDragMinDistance:10,mirrorSelector:function(e){return e.closest(".ticketBox")},eventData:function(e){let t=jQuery(e).data("event");return{id:t.id,title:t.title,color:t.color,enitityType:"ticket",duration:"01:00",url:t.url}}}),r.scrollToTime(Date.now())}jQuery(document).ready((function(){jQuery("#yourToDoContainer").length>0&&l(jQuery("#yourToDoContainer")[0]),r.setOption("locale",leantime.i18n.__("language.code")),r.render(),r.scrollToTime(Date.now()),jQuery(".minCalendar .fc-prev-button").click((function(){r.prev(),r.getCurrentData()})),jQuery(".minCalendar .fc-next-button").click((function(){r.next()})),jQuery(".minCalendar .fc-today-button").click((function(){r.today()})),jQuery(".minCalendar .calendarViewSelect").on("click",(function(e){var t=jQuery(this).data("value");r.changeView(t),"timeGridDay"===t?jQuery(".day-selector").show():jQuery(".day-selector").hide(),leantime.rpc("Api.Api.setSubmenuState",{submenu:"dashboardCalendarView",state:t}).catch((function(e){console.error("Could not update submenu state",e)}))})),jQuery(".day-button").on("click",(function(){var e=jQuery(this).data("date");r.gotoDate(e),jQuery(".day-button").removeClass("active"),jQuery(this).addClass("active")})),r.scrollToTime(Date.now())})),e=l,window.leantime._calendarTodoOnLoadRegistered||(window.leantime._calendarTodoOnLoadRegistered=!0,htmx.onLoad((function(t){"yourToDoContainer"==t.id&&e&&e(t)})))}}}(),leantime.blueprintsController=function(){var e="",t=!1,n=function(){return{sizes:{minW:700,minH:1e3},resizable:!0,autoSizable:!0,callbacks:{beforeShowCont:function(){jQuery(".showDialogOnLoad").show(),1==t&&(t=!1,location.reload())},afterShowCont:function(){window.htmx.process(".nyroModalCont"),jQuery(".blueprintsCanvasModal, #commentForm, #commentForm .deleteComment, .blueprintsCanvasMilestone .deleteMilestone").nyroModal(n())},beforeClose:function(){location.reload()}},titleFromIframe:!0}},a=function(){jQuery(".blueprintsCanvasModal, #commentForm, #commentForm .deleteComment, .blueprintsCanvasMilestone .deleteMilestone").nyroModal(n())};return{setCanvasName:function(t){e=t},setRowHeights:function(){var e=[];
1if(jQuery(".canvas-row[id]").each((function(){var t=jQuery(this).attr("id");t&&-1===e.indexOf(t)&&e.push(t)})),0!==e.length)for(var t=e.length,n=(jQuery("html").height()-320-20*t-25)/t,a=0;a<e.length;a++){var o="#"+e[a],i=n;jQuery(o+" div.contentInner").each((function(){jQuery(this).height()>i&&(i=jQuery(this).height()+50)})),jQuery(o+" .column .contentInner").css("height",i)}},initFilterBar:function(){jQuery(window).bind("load",(function(){jQuery(".loading").fadeOut(),jQuery(".filterBar .row-fluid").css("opacity","1")}))},initCanvasLinks:function(){jQuery(".addCanvasLink").nyroModal(),jQuery(".editCanvasLink").click((function(){jQuery("#editCanvas").modal("show")})),jQuery(".cloneCanvasLink").click((function(){jQuery("#cloneCanvas").modal("show")})),jQuery(".mergeCanvasLink").click((function(){jQuery("#mergeCanvas").modal("show")})),jQuery(".importCanvasLink").click((function(){jQuery("#importCanvas").modal("show")}))},initUserDropdown:function(){jQuery("body").on("click",".userDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("_");jQuery(this).attr("data-label");if(3==t.length){var n=t[0],a=t[1];t[2];jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/blueprints/"+e,data:{id:n,author:a}}).done((function(){jQuery("#userDropdownMenuLink"+n+" span.text span#userImage"+n+" img").attr("src",leantime.appUrl+"/users/profileImage/"+encodeURIComponent(a)),jQuery.growl({message:leantime.i18n.__("short_notifications.user_updated"),style:"success"})}))}}))},initStatusDropdown:function(){jQuery("body").on("click",".statusDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("/"),n=jQuery(this).attr("data-label");if(2==t.length){var a=t[0],o=t[1],i=jQuery(this).attr("class");jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/blueprints/"+e,data:{id:a,status:o}}).done((function(){jQuery("#statusDropdownMenuLink"+a+" span.text").text(n),jQuery("#statusDropdownMenuLink"+a).removeClass().addClass(i+" dropdown-toggle f-left status "),jQuery.growl({message:leantime.i18n.__("short_notifications.status_updated")})}))}}))},initRelatesDropdown:function(){jQuery("body").on("click",".relatesDropdown .dropdown-menu a",(function(){var t=jQuery(this).attr("data-value").split("/"),n=jQuery(this).attr("data-label");if(2==t.length){var a=t[0],o=t[1],i=jQuery(this).attr("class");jQuery.ajax({type:"PATCH",url:leantime.appUrl+"/api/blueprints/"+e,data:{id:a,relates:o}}).done((function(){jQuery("#relatesDropdownMenuLink"+a+" span.text").text(n),jQuery("#relatesDropdownMenuLink"+a).removeClass().addClass(i+" dropdown-toggle f-left relates "),jQuery.growl({message:leantime.i18n.__("short_notifications.relates_updated")})}))}}))},setCloseModal:function(){t=!0},toggleMilestoneSelectors:function(e){"existing"==e&&(jQuery("#newMilestone, #milestoneSelectors").hide("fast"),jQuery("#existingMilestone").show(),a()),"new"==e&&(jQuery("#newMilestone").show(),jQuery("#existingMilestone, #milestoneSelectors").hide("fast"),a()),"hide"==e&&(jQuery("#newMilestone, #existingMilestone").hide("fast"),jQuery("#milestoneSelectors").show("fast"))},openModalManually:function(e){jQuery.nmManual(e,n())}}}(),leantime.authController={makeInputReadonly:function(e){void 0===typeof e&&(e="body"),jQuery(e).find("input").not(".filterBar input").prop("readonly",!0),jQuery(e).find("input").not(".filterBar input").prop("disabled",!0),jQuery(e).find("select").not(".filterBar select, .mainSprintSelector").prop("readonly",!0),jQuery(e).find("select").not(".filterBar select, .mainSprintSelector").prop("disabled",!0),jQuery(e).find("textarea").not(".filterBar textarea").prop("disabled",!0),jQuery(e).find("a.delete").remove(),jQuery(e).find(".quickAddLink").hide(),jQuery(e).find(".tiptap-editor").length&&window.leantime&&window.leantime.tiptapController&&jQuery(e).find(".tiptap-editor").each((function(){var e=leantime.tiptapController.registry.get(this);e&&e.setEditable(!1)})),jQuery(e).find(".tiptap-toolbar").hide(),jQuery(e).find(".ticketDropdown a").removeAttr("data-toggle"),jQuery("#mainToggler").hide(),jQuery(".commentBox").hide(),jQuery(".deleteComment, .replyButton").hide(),jQuery(e).find(".dropdown i").removeClass("fa-caret-down")}},(leantime=leantime||{}).jsonrpc={call:async function(e,t,n){t=t||{},n=n||{};const a=await fetch(leantime.appUrl+"/api/jsonrpc",{method:"POST",credentials:"include",signal:n.signal,headers:{"Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify({jsonrpc:"2.0",method:"leantime.rpc."+e,params:t,id:void 0!==n.id?n.id:1})});if(!a.ok){const e=new Error("JSON-RPC request failed with HTTP "+a.status);throw e.code=a.status,e}const o=await a.json();if(o&&o.error){const e=new Error(o.error.message||"JSON-RPC error");throw e.code=o.error.code,e.data=o.error.data,e}return o?o.result:void 0}},leantime.rpc=function(e,t,n){return leantime.jsonrpc.call(e,t,n)};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.