var App=new function(){var a=this;a.keyEscape=27;a.keyEnter=13;a.ready=function(b){$(document).ready(b)};a.escapeId=function(b){return b.replace(/(:)/g,"\\$1")};a.escapeHTML=function(b){return $("
").text(b).html()};a.applyDatepicker=function(b){$("input.datepicker",b||$(document)).datepicker({duration:0,showAnim:""})};a.applyFancyBox=function(b){if($.fn.fancybox){$("a.fancy",b||$(document)).fancybox({zoomOpacity:false,overlayShow:false,centerOnScroll:false})}};a.applyTextAreaResizer=function(){var b=$("textarea.form-control:not(.processed)");if(b.length>0){b.textarearesizer()}};a.applyPopups=function(){var d=$(window).height();var b=Math.max(600,d*0.7);var c="location=0,menubar=1,height="+b+",width=700,toolbar=0,scrollbars=1,status=0,resizable=1";$(document).on({click:function(){window.open(this.href,"popup",c).focus();return false}},"a.popupLink")};a.applyKeepGet=function(){$(document).on({click:function(d){$.publish("page.set_get",{link:this});var c=App.Page.getQuery();if(c){var b=$(this);b.attr("href",b.attr("href")+"&"+c)}}},'a[rel="keep-get"]')};a.applyNotificationBar=function(){var e=$("#notificationbar"),d=$("#content"),c=new Date,f="nb"+c.getMonth()+c.getFullYear(),b=Cookies.get("notificationbar");if(f!==b){e.removeClass("notificationbar-hidden");d.addClass("notificationbar-visible");e.find(".notificationbar-content-dismiss").on("click",function(g){Cookies.set("notificationbar",f,{expires:32});e.addClass("notificationbar-hidden");d.removeClass("notificationbar-visible");g.stopPropagation();g.preventDefault();return false})}};if($.blockUI){$.blockUI.defaults.message="";$.blockUI.defaults.fadeOut=0;$.blockUI.defaults.fadeIn=0;$.blockUI.defaults.baseZ=10000;$.blockUI.defaults.overlayCSS={}}a.ready(function(){a.applyTextAreaResizer();a.applyFancyBox();a.applyPopups();a.applyKeepGet();a.applyNotificationBar()})};App.callFunction=function(c,a,d){if(c){var b=c[a]}else{var b=window[a]}if(typeof b==="function"){return b(d)}else{return false}};App.getCount=function(b){var a=0;$.each(b,function(c,d){a++});return a};App.Env=new function(){var a=this;a.vendor=null;a.platform=null;if("navigator" in window){a.vendor="vendor" in navigator?navigator.vendor.toLowerCase():"";a.platform="platform" in navigator?navigator.platform.toLowerCase():""}a.isChrome=function(){return a._isVendor("google")};a._isVendor=function(b){return a.vendor?a.vendor.indexOf(b.toLowerCase())>=0:false};a._isPlatform=function(b){return a.platform?a.platform.indexOf(b.toLowerCase())>=0:false};a.isMac=function(){return a._isPlatform("mac")};a.isWindows=function(){return a._isPlatform("win")}};App.Filters=new function(){var a=this;a.addLine=function(d){var b=$("#filterLine-"+d);var c={};$("select option",b).each(function(g,h){var i=$(this);c[i.val()]=i.text()});var f=$(".add",b);var e=$(".addBusy",b);e.show();f.hide();App.Ajax.call({target:"/filters/ajax_render_row",arguments:{operations:JSON.stringify(c),datepicker:$("input",b).hasClass("datepicker")},success:function(h){f.show();e.hide();$(h).insertAfter(b);var g=b.siblings().andSelf();$(".deleteEnabled",g).show();$(".deleteDisabled",g).hide();App.applyDatepicker(g)},error:function(g){f.show();e.hide();App.Ajax.handleError(g)}})};a.removeLine=function(c){var b=$("#filterLine-"+c);var d=b.siblings();if(d.length==1){$(".deleteDisabled",d).show();$(".deleteEnabled",d).hide()}b.remove()};a.toggle=function(d){var b=$(App.escapeId("#filter-"+d));var c=$("div.filterContent",b);if(c.is(":visible")){$("a.filterExpand",b).show();$("a.filterCollapse",b).hide();c.hide()}else{$("a.filterCollapse",b).show();$("a.filterExpand",b).hide();c.show()}if(d=="logs:date",typeof $(".custom_from.form-control.datepicker.hasDatepicker").data("events")!=="undefined"&&typeof $(".custom_from.form-control.datepicker.hasDatepicker").data("events").change=="undefined"&&typeof $(".custom_from.form-control.datepicker.hasDatepicker").datepicker("getDate")!="undefined"){$(".custom_from.form-control.datepicker.hasDatepicker").on("change",function(){$(".custom_to.form-control.datepicker.hasDatepicker").datepicker("option","minDate",$(".custom_from.form-control.datepicker.hasDatepicker").datepicker("getDate"))})}};a.getAll=function(b){var c={};$("div.filter",b).each(function(f,g){var h=$(this);if(!$(".filterContent",h).is(":visible")){return}var i={};var j=$(".filterContent",h).attr("rel");switch(j){case"date":case"int":case"string":case"timespan":i.mode=$("input[type=radio]:checked",h).attr("rel");i.filters=[];$("table.filter-list tr",h).each(function(k,l){var n=$(this);var m=$.trim($("input",n).val());if(m){i.filters.push({op:$("select",n).val(),value:m})}});break;case"daterange":i.type=$("select",h).val();i.custom_from=$("input.custom_from",h).val();i.custom_to=$("input.custom_to",h).val();break;case"bool":i.value=$("select",h).val();break;case"checkbox":i.value=$("select",h).val();break;case"dropdown":i.values=$("select",h).val();break;case"multiselect":i.mode=$("input[type=radio]:checked",h).attr("rel");i.values=$("select",h).val();break}c[h.attr("rel")]=i});var e="1";var d=$("input[name=filterMode]:checked",b);if(d.length>0){e=$("input[name=filterMode]:checked",b).attr("rel")}return{mode:e,filters:c}}};App.Users=new function(){var a=this;a.email=null;a.fields=null;a.field_type_previous=null;a.tokens=null;a.current_token=null;a.selectDialog=function(b){if(b.user_id){$("#selectUser").val(b.user_id)}else{$("#selectUser").val("")}$("#selectUserForm").unbind("submit");$("#selectUserForm").bind("submit",function(){b.submit({id:$("#selectUser").val(),name:$("#selectUser option:selected").text()});return false});App.Dialogs.open({focusedControl:"#selectUser",selectedControl:"#selectUser",selector:"#selectUserDialog"})};a.hasField=function(b){return a.fields&&a.fields.hasOwnProperty(b)};a.addField=function(){a._fieldDialog({submit:function(b){a._loadConfig({label:b.label,description:b.description,name:b.name,type_id:b.type_id,fallback:b.fallback,success:function(c){App.Dialogs.closeTop();$("#userFields").append(c);a._addFieldToArray(b)}})}})};a.addFieldNoDialog=function(b){a._loadConfig({label:b.label,description:b.description,name:b.name,type_id:b.type_id,fallback:b.fallback,success:function(c){$("#userFields").append(c);a._addFieldToArray(b)}})};a._addFieldToArray=function(b){a.fields[b.name]={label:b.label,description:b.description,name:b.name,type_id:b.type_id,fallback:b.fallback}};a._fieldDialog=function(b){if(b.field){field=a.fields[b.field];$("#userFieldLabel").val(field.label);$("#userFieldDesc").val(field.description);$("#userFieldName").val(field.name);$("#userFieldName").attr("disabled","disabled");$("#userFieldType").attr("disabled","disabled");$("#userFieldType").val(field.type_id);$("#userFieldFallback").val(field.fallback);$("#userFieldPassword").val(field.fallback)}else{$("#userFieldLabel").val("");$("#userFieldDesc").val("");$("#userFieldName").val("");$("#userFieldName").removeAttr("disabled");$("#userFieldType").removeAttr("disabled");$("#userFieldType").val("");$("#userFieldFallback").val("");$("#userFieldPassword").val("")}a._fieldTypeInit();App.Validation.hideErrors();$("#userFieldErrors").empty();$("#userFieldForm").unbind("submit");$("#userFieldForm").submit(function(c){App.Validation.hideErrors();$("#userFieldErrors").empty();var f=$("#userFieldType").val();var d=f==2?$.trim($("#userFieldPassword").val()):$.trim($("#userFieldFallback").val());b.submit({label:$.trim($("#userFieldLabel").val()),description:$.trim($("#userFieldDesc").val()),name:$.trim($("#userFieldName").val()),type_id:f,fallback:d});return false});App.Dialogs.open({selector:"#userFieldDialog"})};a._fieldTypeInit=function(){var b=$("#userFieldType").val();if(b==2){$("#userFieldPassword").val($("#userFieldFallback").val());$("#userFieldFallback").hide();$("#userFieldPassword").show();$("#userFieldFallback").val("")}else{if(a.field_type_previous==2){$("#userFieldFallback").val($("#userFieldPassword").val())}$("#userFieldPassword").hide();$("#userFieldFallback").show("");$("#userFieldPassword").val("")}a.field_type_previous=b};a.fieldTypeChanged=function(){a._fieldTypeInit()};a._loadConfig=function(b){$("#userFieldSubmit").addClass("button-busy");App.Ajax.call({target:"/admin/integration/ajax_render_user_field",arguments:{label:b.label,description:b.description,name:b.name,type_id:b.type_id,fallback:b.fallback},success:function(c){$("#userFieldSubmit").removeClass("button-busy");b.success(c)},error:function(c){$("#userFieldSubmit").removeClass("button-busy");App.Ajax.handleError(c,"#userFieldErrors")}})};a.editField=function(b){a._fieldDialog({field:b,submit:function(c){a._loadConfig({label:c.label,description:c.description,name:c.name,type_id:c.type_id,fallback:c.fallback,success:function(d){App.Dialogs.closeTop();$("#userField-"+b).replaceWith(d);a._addFieldToArray(c)}})}})};a.removeField=function(b){$("#userField-"+b).remove();App.Users._removeFieldFromArray(b)};a._removeFieldFromArray=function(b){delete a.fields[b]};a.fieldsToString=function(){var b=[];$.each(a.fields,function(c,d){b.push(d)});return JSON.stringify(b)};a.editFieldNoDialog=function(c){if(!a.hasField(c.name)){return}var b=a.fields[c.name];b.fallback=c.fallback;a._loadConfig({label:b.label,description:b.description,name:b.name,type_id:b.type_id,fallback:b.fallback,success:function(d){$("#userField-"+c.name).replaceWith(d);a._addFieldToArray(b)}})};a.addToken=function(){a.current_token=null;a._tokenDialog({submit:function(b){if(!a.current_token){a._getToken(b)}else{a._addToken(b)}}})};a._getToken=function(b){$("#userTokenGenerate").addClass("button-busy");App.Ajax.call({target:"/mysettings/ajax_get_api_token",arguments:{name:b.name},success:function(c){$("#userTokenGenerate").removeClass("button-busy");$("#userTokenCode").html(c.html).show();$("#userTokenGenerate").hide();$("#userTokenAdd").show();$("#userTokenName").prop("disabled",true);a.current_token=c.token},error:function(c){$("#userTokenGenerate").removeClass("button-busy");App.Ajax.handleError(c,"#userTokenErrors")}})};a._addToken=function(b){$("#userTokenAdd").addClass("button-busy");App.Ajax.call({target:"/mysettings/ajax_render_api_token",arguments:{name:b.name},success:function(c){$("#userTokenAdd").removeClass("button-busy");$("#tokensGrid").append(c.html);$("#noTokens").hide();App.Dialogs.closeTop();a._addTokenToArray({token:a.current_token,name:c.token.name,id:c.token.id})},error:function(c){$("#userTokenAdd").removeClass("button-busy");App.Ajax.handleError(c,"#userTokenErrors")}})};a._addTokenToArray=function(b){a.tokens[b.id]={name:b.name,token:b.token}};a._tokenDialog=function(b){App.Validation.hideErrors();$("#userTokenName").prop("disabled",false);$("#userTokenName").val("");$("#userTokenCode").hide();$("#userTokenAdd").hide();$("#userTokenGenerate").show();$("#userTokenForm").unbind("submit");$("#userTokenForm").submit(function(c){App.Validation.hideErrors();b.submit({name:$.trim($("#userTokenName").val())});return false});App.Dialogs.open({selector:"#userTokenDialog"})};a.removeToken=function(b){$("#userToken-"+b).remove();a._removeTokenFromArray(b);if($("#tokensGrid tr.token").length==0){$("#noTokens").show()}};a._removeTokenFromArray=function(b){delete a.tokens[b]};a.tokensToString=function(){var b=[];$.each(a.tokens,function(c,d){b.push({id:c,name:d.name,token:d.token})});return JSON.stringify(b)};a.verifyPassword=function(){a._passwordDialog({submit:function(b){a._verifyPassword(b)}})};a._verifyPassword=function(b){$("#userPasswordSubmit").addClass("button-busy");App.Ajax.call({target:"/mysettings/ajax_verify_password",arguments:{login:b.login,password:b.password},success:function(c){$("#userPasswordSubmit").removeClass("button-busy");$("#verify_login").val(b.login);$("#verify_password").val(b.password);App.Dialogs.closeTop();$("#form").submit()},error:function(c){$("#userPasswordSubmit").removeClass("button-busy");App.Ajax.handleError(c,"#userPasswordErrors")}})};a._passwordDialog=function(b){App.Validation.hideErrors();$("#userPassword").val("");$("#userPasswordForm").unbind("submit");$("#userPasswordForm").submit(function(f){App.Validation.hideErrors();var c=null;var d=$("#userPasswordName");if(d.length){c=d.val()}else{c=a.email}b.submit({login:c,password:$.trim($("#userPassword").val())});return false});App.Dialogs.open({selector:"#userPasswordDialog"})};a.hasGoals=function(){return $("#goals").length>0};a.reloadGoals=function(){App.Ajax.call({target:"/mysettings/ajax_render_goals",blockUI:false,success:function(b){$("#goals").replaceWith(b)},error:function(b){}})};a.setGoal=function(c,b){App.Ajax.call({target:"/mysettings/ajax_set_goal",arguments:{step:c,checked:b},success:function(d){$("#goals").replaceWith(d)},error:function(d){App.Ajax.handleError(d)}})};a.hideGoals=function(b){App.Ajax.call({target:"/mysettings/ajax_hide_goals",blockUI:false,success:function(c){$("#goals-start").remove();$("#goals-finish").remove();$("#goals-banner").slideUp(250,function(){$(this).remove();App.Page.reflow();if(b){$("#goals-next").show()}else{$("#goals").remove()}})},error:function(c){}})};a.hideGoalsNext=function(){$("#goals").remove()}};App.Page=new function(){var a=this;a._formatUri=function(c){var b=c[0];for(i=1;i=0?c.substring(b+1):""};a.getQueryOptions=function(){var c=a.getQuery();var d=c.split("&");var b={};$.each(d,function(g,f){var e=f.indexOf("=");if(e>=0){b[f.substring(0,e)]=f.substring(e+1)}});return b};a.formatQueryOptions=function(b){var d="";for(var c in b){if(d){d+="&"}d+=c;d+="=";d+=b[c]}return d};a.replaceState=function(c,d){if(!window.history||!window.history.replaceState){return}var b=Consts.ajaxBaseUrl+c;if(d){b+="&"+d}window.history.replaceState({},"",b)};a.updateMinWidth=function(c){if(c==0){return}var b=parseInt($("body").css("min-width"));b=Math.max(Consts.minWidth,b+c);$("body").css("min-width",b+"px")};a.getMinContent=function(){var b=parseInt($("body").css("min-width"));if(App.Sidebar.isVisible()){b-=App.Sidebar.getWidth()+10}if(App.QPane.isVisible()){b-=App.QPane.getWidth()+10}return Math.max(b,Consts.minWidth)};a.reflow=function(){$.publish("body.changed");$(window).resize()}};App.Controls={};App.Controls.setComboboxIndex=function(a,b){$(a).each(function(c){this.selectedIndex=b})};App.Controls.resetCombobox=function(a){App.Controls.setComboboxIndex(a,0)};App.Controls.disableCombobox=function(a){$(a).prop("disabled",true)};App.Controls.enableCombobox=function(a){$(a).prop("disabled",false)};App.Controls.clearCombobox=function(a){$("option",$(a)).remove()};App.Controls.fillCombobox=function(a,b,g){var f=$(a);if(!g){f.append(' ')}for(var c=0;c");d.val(e.value);d.text(e.name);d.appendTo(f)}};App.Controls.Checkboxes=new function(){var a=this;a._check=function(b,c){var d=$("input",$("#"+b+"_control"));$.each(d,function(e,f){if(!$(f).attr("disabled")){$(f).attr("checked",c)}})};a.checkAll=function(b){a._check(b,true)};a.checkOne=function(c,b){var d=$("#"+c+"_checkbox-"+b);$("input",d).prop("checked",true)};a.checkNone=function(b){a._check(b,false)};a.getValues=function(c){var d=$("input:checked",$("#"+c+"_control"));var b=[];$.each(d,function(e,f){if(!$(f).attr("disabled")){b.push(parseInt($(f).val()))}});return b};a.getValuesAsString=function(c){var d=$("input:checked",$("#"+c+"_control"));var b=[];$.each(d,function(e,f){if(!$(f).attr("disabled")){b.push($(f).val())}});return b};a.disableAll=function(b){a._disable($("#"+b+"_control"))};a.disableById=function(b,c){a._disable($("#"+b+"_checkbox-"+c))};a._disable=function(b){$($("input",b)).attr("disabled",true);$($("label",b)).addClass("checkbox-disabled")};a.enableAll=function(b){a._enable($("#"+b+"_control"))};a.enableById=function(b,c){a._enable($("#"+b+"_checkbox-"+c))};a._enable=function(b){$($("input",b)).removeAttr("disabled");$($("label",b)).removeClass("checkbox-disabled")};a.checkById=function(e,d){var b={};for(i=0;i=35&&b<=40){return !d.shiftKey}var g=$.trim($(f).val());if(g==""){if(!c){if(b==48){return false}}}else{if(g=="0"){return false}}if(b>47&&b<58){if(d.shiftKey){return false}if(a){var h=parseInt(g+String.fromCharCode(b));if(h>a){return false}}return true}return false};App.Effects=new function(){var a=this;a.replace=function(c,b){$(c).hide();$(b).show()};a.remove=function(b,c){$(b).remove();if(c){c()}};a.add=function(b,d){var c=$(b);c.css("opacity",0);c.css("background-color","rgba(252,194,0,0.2)");c.show();c.fadeTo("fast",1,function(){if($.browser.msie){this.style.removeAttribute("filter")}c.css("background-color","");if(d){d()}})};a.show=function(b,c){$(b).show();if(c){c()}};a.hide=function(b,c){$(b).hide();if(c){c()}};a.setVisible=function(b,c){if(c){a.show(b)}else{a.hide(b)}}};App.Validation=new function(){var a=this;a.hideErrors=function(){$("div.validationError, span.validationError").hide()};a.setError=function(b,c){$(b).text(c).show()}};App.Sections=new function(){var a=this;a.drop_data=null;a.drop=function(b,c){if(a.drop_data){a.dropCancel()}a.drop_data=c;var d=false;if(b.shiftKey){a.dropCopy()}else{if(b.ctrlKey||b.metaKey){if(a._dropCanMove(a.drop_data)){a.dropMove()}else{d=true}}else{d=true}}if(d){a._dropShowHighlight(c.section_id,c.droppable_id);a._dropShowMenu(b,c)}};a._dropShowMenu=function(b,c){if(a._dropCanMove(c)){$("#sectionsDndMoveDisabled").hide();$("#sectionsDndMove").show()}else{$("#sectionsDndMove").hide();$("#sectionsDndMoveDisabled").show()}App.Dropdowns.show("#sectionsDndDropdown",b.pageX,b.pageY)};a._dropIsChild=function(c,d){var b=$("#node-"+c);return b.find("#node-"+d).length>0};a._dropCanMove=function(b){if(b.section_id==b.parent_id){return false}if(b.section_id==b.after_id){return false}if(b.parent_id){if(a._dropIsChild(b.section_id,b.parent_id)){return false}}return true};a._dropHideMenu=function(){App.Dropdowns.hide("#sectionsDndDropdown")};a._dropAddClass=function(c,b){$("> a",$("#node-"+c)).addClass(b)};a._dropRemoveClass=function(c,b){$("> a",$("#node-"+c)).removeClass(b)};a._dropShowProgress=function(b){a._dropAddClass(b,"jstree-loading")};a._dropHideProgress=function(b){a._dropRemoveClass(b,"jstree-loading")};a._dropShowHighlight=function(c,b){a._dropAddClass(c,"jstree-dragging");a._dropAddClass(b,"jstree-highlighted")};a._dropHideHighlight=function(c,b){a._dropRemoveClass(c,"jstree-dragging");a._dropRemoveClass(b,"jstree-highlighted")};a.dropCancel=function(){a._dropStop(a.drop_data)};a._dropStop=function(b){a._dropHideMenu();a._dropHideHighlight(b.section_id,b.droppable_id);a._dropHideProgress(b.droppable_id);a.drop_data=null};a.dropCopy=function(){a._dropCopy(a.drop_data)};a._dropCopy=function(b){a._dropShowProgress(b.droppable_id);App.Ajax.call({target:"/sections/ajax_copy",arguments:{section_id:b.section_id,parent_id:b.parent_id,after_id:b.after_id,columns:App.Tables.columns_for_user,filters:App.Suites.filters},success:function(g){a._dropStop(b);if(App.Suites.display=="tree"){var d=$(g.grid);if(b.after_id){d.insertAfter("#section-"+b.after_id)}else{if(b.parent_id){var f=$("#subsections-"+b.parent_id);d.prependTo(f);f.show()}else{d.prependTo($("#groups"))}}}var c=$("#groupTree");var e=null;if(b.parent_id){e=$("#node-"+b.parent_id)}if(b.after_id){var h=$("#node-"+b.after_id);h.after(g.node)}else{if(e){if(e.children("ul").length==0){e.append("")}e.children("ul").prepend(g.node)}else{c.children("ul").prepend(g.node)}}if(e){a._open(e)}a._fixTree();App.Suites.onCasesAdded()},error:function(c){a._dropStop(b);App.Ajax.handleError(c)}})};a.dropMove=function(){a._dropMove(a.drop_data)};a._dropMove=function(c){a._dropShowProgress(c.droppable_id);var b=$("#node-"+c.section_id);App.Ajax.call({target:"/sections/ajax_move",arguments:{section_id:c.section_id,parent_id:c.parent_id,after_id:c.after_id},success:function(g){a._dropStop(c);var f=null;if(c.parent_id){f=$("#node-"+c.parent_id)}if(c.after_id){var i=$("#node-"+c.after_id);b.insertAfter(i)}else{var d=f||$("#groupTree");if(f){if(!f.children("ul").length){f.append("")}}b.prependTo(d.children("ul"))}if(f){a._open(f)}a._fixTree();if(App.Suites.display=="tree"){var e=$("#section-"+c.section_id);if(c.after_id){e.insertAfter("#section-"+c.after_id)}else{if(c.parent_id){var h=$("#subsections-"+c.parent_id);e.prependTo(h);h.show()}else{e.prependTo($("#groups"))}}}},error:function(d){a._dropStop(c);App.Ajax.handleError(d)}})};a._fixTree=function(){$("#groupTree li").each(function(){var b=$(this);var c=b.hasClass("jstree-open");b.removeClass("jstree-open jstree-closed jstree-leaf jstree-last");if(!b.next().length){b.addClass("jstree-last")}if(!b.find("> ul > li").length){b.addClass("jstree-closed");b.addClass("jstree-leaf")}else{if(c){b.addClass("jstree-open")}else{b.addClass("jstree-closed")}}})};a.remove=function(b){var c=$("#sectionBusy-"+b);c.show();App.Ajax.call({target:"/sections/ajax_delete",arguments:{section_id:b},success:function(g){$("#section-"+b).remove();var d=$("#groupTree");var f=$("#node-"+b);var e=f.prev();if(!e.length){e=f.parent("ul").parent("li");if(!e.length){e=f.next()}}d.jstree("delete_node",f);if(d.find("> ul > li").length==0){if(!$("#loadCases").is(":visible")){App.Suites.filterCasesReset()}}else{if(App.Suites.display!="tree"){if(b==App.Suites.group_id&&e.length){d.jstree("select_node",e)}}}App.Suites.onCasesDeleted();c.hide()},error:function(d){c.hide();App.Ajax.handleError(d)}})};a.removeInit=function(b){App.Ajax.call({target:"/sections/ajax_render_delete_extra",arguments:{section_id:b},success:function(c){App.Dialogs.removeLoaded(c)},error:function(c){App.Ajax.handleError(c)}})};a._editDialog=function(b){App.Validation.hideErrors();$("#editSectionName").val(b.name);$("#editSectionDescription").val(b.description);$("#editSectionForm").unbind("submit");$("#editSectionForm").submit(function(c){App.Validation.hideErrors();b.submit($.trim($("#editSectionName").val()),$.trim($("#editSectionDescription").val()));return false});App.Dialogs.open({selector:"#editSectionDialog",focusedControl:"#editSectionName",selectedControl:"#editSectionName",titleSelector:b.titleSelector})};a.edit=function(b){a._load({section_id:b,success:function(c){$(".editSectionEdit").show();$(".editSectionAdd").hide();a._editDialog({name:c.name,description:c.description,titleSelector:".dialogTitleEdit",submit:function(d,e){a._edit({section_id:b,name:d,description:e})}})}})};a._load=function(c){var b=$("#sectionBusy-"+c.section_id);b.show();App.Ajax.call({target:"/sections/ajax_get",arguments:{section_id:c.section_id},stop:function(){b.hide()},success:function(d){c.success(d)},error:function(d){App.Ajax.handleError(d)}})};a._edit=function(b){$("#editSectionSubmit").addClass("button-busy");App.Ajax.call({target:"/sections/ajax_update",arguments:{section_id:b.section_id,name:b.name,description:b.description},stop:function(){$("#editSectionSubmit").removeClass("button-busy")},success:function(c){App.Dialogs.closeTop();if(c){$("#sectionDesc-"+b.section_id).children("div").html(c);$("#sectionDesc-"+b.section_id).show()}else{$("#sectionDesc-"+b.section_id).hide()}$("#sectionName-"+b.section_id).text(b.name);$("#sectionNameAlt-"+b.section_id).text(b.name);App.Effects.add("#sectionName-"+b.section_id)},error:function(c){App.Ajax.handleError(c,"#editSectionErrors")}})};a.addSub=function(c,b){a.add(c,b)};a.add=function(c,b){$(".editSectionEdit").hide();$(".editSectionAdd").show();a._editDialog({name:"",description:"",titleSelector:".dialogTitleAdd",submit:function(d,e){a._add({suite_id:c,name:d,description:e,parent_id:b})}})};a._add=function(b){$("#editSectionSubmit").addClass("button-busy");App.Ajax.call({target:"/sections/ajax_add",arguments:{suite_id:b.suite_id,parent_id:b.parent_id,name:b.name,description:b.description,columns:App.Tables.columns_for_user},stop:function(){$("#editSectionSubmit").removeClass("button-busy")},success:function(h){$("#editSectionDialog").dialog("close");$("#noSectionContainer").hide();$("#noSectionContainerSidebar").hide();$("#contentToolbar").show();$("#sidebarToolbar").show();$("#groupsEmpty").remove();var c=$("#groupTree");var g=$(h.node);if(b.parent_id){var f=$("#node-"+b.parent_id);if(f.children("ul").length==0){f.append("")}g.appendTo(f.children("ul"));a._open(f)}else{g.appendTo(c.children("ul"))}if($("#groups").children().length==0){if(App.Suites.display=="tree"){App.Suites.applyTree()}else{App.Suites.applyTree(h.id)}}if(App.Suites.display=="tree"||(App.Suites.display=="subtree"&&b.parent_id)){var d=$(h.grid);if(b.parent_id){var e=$("#subsections-"+b.parent_id);d.appendTo(e);e.show()}else{d.appendTo($("#groups"))}}a._fixTree();App.Suites.onCasesAdded()},error:function(c){App.Ajax.handleError(c,"#editSectionErrors")}})};a._open=function(b){$(b).addClass("jstree-open");$("#groupTree").jstree("open_node",b)};a.next=function(e,f){var d=$("#node-"+e);var c=$();if(f!="subtree"){c=d.find("li:first")}if(!c.length){c=d.next();if(!c.length){var b=d.parent("ul").parent("li");while(b.length>0){c=b.next();if(c.length){break}b=b.parent("ul").parent("li")}}}return c.length?("#"+c.attr("id")):null};a.prev=function(d){var c=$("#node-"+d);var b=c.prev();if(b.length){var e=b.find("li:last");if(e.length){b=e}}if(!b.length){b=c.parent("ul").parent("li")}return b.length?("#"+b.attr("id")):null}};/*******************************************************************/
/* Standard Dialogs */
/* [Permissions checked!] */
App.Dialogs = {};
App.Dialogs.dialogs = new Array();
// Initializes a dialog. The dialog must be given as selector
// (e.g. '#confirmDialog'). Is automatically applied when calling
// open, so there's usually no need to call this function manually
// yourself.
App.Dialogs.init = function(dialog)
{
$(dialog).dialog(
{
autoOpen: false,
modal: true,
resizable: false,
draggable: true,
position: 'center',
dialogClass: 'dialog',
closeOnEscape: false,
height: 'auto',
minHeight: 0
});
}
App.ready(function()
{
// Bind the Enter and ESC keys for dialogs
// TODO: do not bind to the entire document, bind to the
// dialogs itself, if possible
$(document).bind('keydown.messageDialog', function(e)
{
if (App.Dialogs.dialogs.length == 0)
{
return;
}
if (App.Ajax.inAction)
{
return; // Do not process enter/esc during Ajax request
}
// Get the top dialog
var dialog = App.Dialogs.dialogs[App.Dialogs.dialogs.length - 1];
// Handle Enter key / default button
if (e.keyCode == App.keyEnter)
{
var focused = $('*:focus', dialog);
// We ignore the enter in case the focused element is a
// (non-readonly) textarea control.
if (focused.is('textarea'))
{
if (!focused.prop('readonly'))
{
return;
}
}
var enter = dialog.data('enter');
if (enter)
{
enter(dialog);
}
return false;
}
// Handle ESC key and close the dialog
if (e.keyCode == App.keyEscape)
{
App.Dialogs.close(dialog);
return false; // Prevent default action
}
});
// Add id attribute to wrapped dialog content
$('.dialog').on(
'dialogopen',
function() {
let $wrappedDialog = $(this).parent();
let idSelector = 'id';
if ($wrappedDialog.attr(idSelector) === undefined) {
$wrappedDialog.attr(idSelector, 'dialog-ident-' + $(this).attr(idSelector));
}
}
);
});
App.Dialogs.getActive = function()
{
if (App.Dialogs.dialogs.length == 0)
{
return null;
}
else
{
return App.Dialogs.dialogs[App.Dialogs.dialogs.length - 1];
}
}
App.Dialogs.isActive = function(id)
{
var dialog = App.Dialogs.getActive();
return dialog && dialog.attr('id') == id;
}
// Asks the user to confirm an action and executes the given
// callback in case the user confirms it. Note: allows and supports
// HTML.
App.Dialogs.confirm = function(message, success, cancel)
{
$('#confirmDialog .dialog-message').html(message);
$('#confirmDialog .dialog-action-default').unbind('click');
$('#confirmDialog .dialog-action-default').bind(
'click',
function()
{
if (success)
{
success();
}
App.Dialogs.closeTop();
}
);
$('#confirmDialog .dialog-action-close').unbind('click.confirm');
$('#confirmDialog .dialog-action-close').bind(
'click.confirm',
function()
{
if (cancel)
{
cancel();
}
}
);
App.Dialogs.open(
{
selector: '#confirmDialog'
});
}
// Asks the user to confirm a delete action and executes the given
// callback in case the user confirms it. Note: allows and supports
// HTML.
App.Dialogs.remove = function(message, confirm, extra, init, success,
cancel)
{
var d = $('#deleteDialog');
// Reset the OK button (disable) and register for the button/dialog
// events.
var ok = $('.dialog-action-default', d);
ok.addClass('button-ok-disabled button-disabled');
ok.unbind('click').bind(
'click',
function(e)
{
if ($(this).hasClass('button-disabled'))
{
return;
}
if (success)
{
success();
}
App.Dialogs.closeTop();
}
);
// Cancel button
$('.dialog-action-close', d).unbind('click.confirm').bind(
'click.confirm',
function()
{
if (cancel)
{
cancel();
}
}
);
// Reset checkbox (uncheck) and register for change events (to
// toggle the disabled state of OK).
var checkbox = $('.checkbox', d);
if (confirm)
{
var confirm_msg = '' + langc(confirm) + ' ';
checkbox.find('.dialog-confirm-busy').hide();
checkbox.find('.dialog-confirm').html(confirm_msg);
checkbox.find('input').prop('disabled', false);
checkbox.find('input').prop('checked', false);
checkbox.find('input').change(
function()
{
if ($(this).is(':checked'))
{
ok.removeClass('button-ok-disabled button-disabled');
}
else
{
ok.addClass('button-ok-disabled button-disabled');
}
}
);
$('.delete-confirm-container', d).show();
}
else
{
$('.delete-confirm-container', d).hide();
ok.removeClass('button-ok-disabled button-disabled');
}
$('.dialog-message', d).html(langc(message));
if (extra)
{
$('.dialog-extra', d).html(langc(extra)).show();
}
else
{
$('.dialog-extra', d).hide();
}
// Open the dialog and execute init callback from the caller, if any.
// Can be used to add an extra
App.Dialogs.open(
{
selector: '#deleteDialog',
titleColor: '#D04437',
init: function()
{
if (init)
{
checkbox.addClass('checkbox-disabled');
checkbox.find('input').prop('disabled', true)
checkbox.find('.dialog-confirm-busy').show();
init();
}
}
});
}
// Asks the user to accept the DPA agreement
App.Dialogs.dataProcessingAgreement = function(message, confirm, title)
{
var d = $('#dpaDialog');
// Reset the OK button (disable) and register for the button/dialog
// events.
var ok = $('.dialog-action-default', d);
ok.addClass('button-ok-disabled button-disabled');
ok.unbind('click').bind('click', function() {
if ($(this).hasClass('button-disabled'))
{
return;
}
$('#dpa_form').submit();
App.Dialogs.closeTop();
});
// Reset checkbox (uncheck) and register for change events (to
// toggle the disabled state of OK).
var checkbox = $('.checkbox', d);
if (confirm)
{
var confirm_msg = '' + langc(confirm) + ' ';
var country = $('#country');
var full_name = $('#full_name');
var checkbox_input = checkbox.find('input');
checkbox.find('.dialog-confirm-busy').hide();
checkbox.find('.dialog-confirm').html(confirm_msg);
checkbox_input.prop('disabled', false);
checkbox_input.prop('checked', false);
// Check all fields for validity to proceed
var changeFunction = function () {
if (full_name.val() != '' && checkbox_input.is(':checked') && country.val() != '')
{
ok.removeClass('button-ok-disabled button-disabled');
}
else
{
ok.addClass('button-ok-disabled button-disabled');
}
};
country.change(changeFunction);
full_name.keyup(changeFunction);
checkbox_input.change(changeFunction);
$('.delete-confirm-container', d).show();
}
else
{
$('.delete-confirm-container', d).hide();
ok.removeClass('button-ok-disabled button-disabled');
}
$('.dialog-message', d).html(langc(message));
// Open the dialog and execute init callback from the caller, if any.
App.Dialogs.open(
{
selector: '#dpaDialog',
title: title,
titleColor: '#D04437',
width: '750px',
init: function() {}
});
};
App.Dialogs.removeLoaded = function(extra)
{
var d = $('#deleteDialog');
var checkbox = $('.checkbox', d);
checkbox.removeClass('checkbox-disabled');
checkbox.find('input').prop('disabled', false);
checkbox.find('.dialog-confirm-busy').hide();
$('.dialog-extra', d).html(extra).show();
}
// Shows a message dialog to the user.
App.Dialogs.message = function(message, title, callback)
{
$('#messageDialog .dialog-message').text(message);
$('#messageDialog .dialog-action-default').unbind('click');
$('#messageDialog .dialog-action-default').bind(
'click',
function()
{
App.Dialogs.closeTop();
}
);
App.Dialogs.open(
{
selector: '#messageDialog',
title: title
});
}
// Shows an error dialog to the user (message dialog with error
// title).
App.Dialogs.error = function(message)
{
App.Dialogs.message(message, Consts.dialogTitleError);
}
// Closes a dialog.
App.Dialogs.close = function(selector)
{
$(selector).dialog('close');
}
App.Dialogs.closeTop = function()
{
if (App.Dialogs.dialogs.length == 0)
{
return;
}
var dialog = App.Dialogs.dialogs[App.Dialogs.dialogs.length - 1];
dialog.dialog('close');
}
// Opens and displays a dialog.
App.Dialogs.open = function(o)
{
var d = $(o.selector);
// Get the dialog width (and height with resizable)
var height = 0;
if (o.resizable)
{
var height = parseInt(d.css('height'));
}
else
{
var height = 0;
}
var resized = false; // Set in the resizeStop event
var width = parseInt(d.css('width'));
App.Dialogs.init(o.selector);
// Set the dialog width (and height with resizable). For
// resizable dialogs, we limit the height and width to the window
// size (minus some margin), so that the dialog is always fully
// visible. We also support min height and width parameters from
// the caller.
if (o.minHeight)
{
d.dialog('option', 'minHeight', o.minHeight);
}
if (o.minWidth)
{
d.dialog('option', 'minWidth', o.minWidth);
}
if (height)
{
if (o.resizable)
{
var max_height = $(window).height();
height = Math.min(height, Math.round(max_height * 0.9));
}
d.dialog('option', 'height', height);
d.data('height', height);
}
if (width)
{
if (o.resizable)
{
var max_width = $(window).width();
width = Math.min(width, Math.round(max_width * 0.9));
}
d.dialog('option', 'width', width);
d.data('width', width);
}
// Register for the click event on the close action and close
// the dialog in the event handler.
$('.dialog-action-close', d).unbind('click.dialog');
$('.dialog-action-close', d).bind('click.dialog',
function()
{
$(this).closest('.dialog').dialog('close');
}
);
// Set the dialog title
if (o.title)
{
d.dialog('option', 'title', o.title);
}
else if (o.titleSelector)
{
d.dialog('option', 'title',
$('.dialog-title ' + o.titleSelector, o.selector).text());
}
else
{
d.dialog('option', 'title',
$('.dialog-title', o.selector).text());
}
if (o.titleColor)
{
d.prev().css('background', o.titleColor);
}
// Setup open and close events
d.dialog('option', 'open', function(event, ui)
{
if (o.resizable)
{
var buttons = $('.dialog-buttons-pane-container', $(this));
if (buttons.length)
{
buttons.insertAfter($(this));
}
else
{
buttons = $(this).next('.dialog-buttons-pane-container');
}
$('.dialog-body', $(this)).css(
'height',
$(this).outerHeight() - buttons.outerHeight()
);
}
var target = $(event.target);
var autoFocus = o.autoFocus === undefined || o.autoFocus;
if (autoFocus)
{
if (o.focusedControl)
{
$(o.focusedControl).focus();
if (o.selectedControl)
{
$(o.selectedControl).select();
}
}
else
{
// Try to select the first control (i.e. input, select or
// textarea) in the dialog (not applicable when the content
// of the dialog is loaded dynamically in o.show(), e.g.).
$(':input:visible:first', target).focus();
}
}
App.Dialogs.dialogs.push(target);
if (o.show)
{
o.show();
}
});
d.dialog('option', 'close', function(event, ui)
{
if (o.close)
{
o.close();
}
App.Dialogs.dialogs.pop();
if (!resized)
{
// If we are not in resize mode, we simply restore the saved
// width/height so that the dialog has the correct size the
// next time we open it.
d.css('width', d.data('width'));
d.css('height', d.data('height'));
}
else
{
var parent = d.closest('.ui-dialog');
d.css('width', parent.css('width'));
d.css('height', parent.css('height'));
}
if (jQuery.browser.webkit)
{
if (document.activeElement)
{
$(document.activeElement).blur();
}
}
});
if (o.resizable)
{
d.dialog('option', 'resizable', true);
d.dialog('option', 'resize', function(event, ui)
{
var t = $(this);
// Resize the body of the dialog according to the size of
// the dialog.
var buttons = t.next('.dialog-buttons-pane-container');
$('.dialog-body', t).css(
'height',
t.outerHeight() - buttons.outerHeight()
);
});
d.dialog('option', 'resizeStop', function(event, ui)
{
resized = true;
if (o.resizeStop)
{
o.resizeStop(event, ui);
}
});
}
if (o.init)
{
o.init();
}
// Does the dialog has a custom enter/submit callback?
if (o.enter)
{
d.data('enter', o.enter);
}
else
{
d.data('enter', function(dialog)
{
// Trigger the default button / link of the dialog.
$('a.dialog-action-default', dialog).click();
$('button.dialog-action-default', dialog).submit();
});
}
d.dialog('open');
}
App.Dialogs.setOption = function(selector, name, value)
{
$(selector).dialog('option', name, value);
}
App.Dialogs.setWidth = function(selector, width)
{
$(selector).dialog('option', 'width', width).
dialog('option', 'position', 'center');
}
App.Dialogs.ranorexBannerConfirm = function(title)
{
App.Dialogs.open(
{
selector: '#ranorexDialog',
title: title,
titleColor: '#D04437',
init: function() {}
});
};
App.Ajax={};App.Ajax.inAction=false;App.Ajax.call=function(c){var b=$.extend({arguments:{},reflow:false,blockUI:true,start:function(){},stop:function(){},success:function(){},error:function(){}},c);b.arguments._token=Consts.ajaxCsrf;b.arguments._version=Consts.ajaxVersion;var a={};$.each(b.arguments,function(d,e){if(typeof e=="function"){return}if(e===null||e===undefined){return}if(e===false){e=0}else{if(e===true){e=1}else{if(e instanceof Array){e=e.join(",")}else{if(e instanceof Object){e=JSON.stringify(e)}}}}a[d]=e});if(b.blockUI){App.Ajax.start()}b.start();return $.ajax({cache:false,dataType:"text",type:"POST",data:a,url:Consts.ajaxBaseUrl+b.target,success:function(f,g,e){b.stop();var d=e.getResponseHeader("Content-Type");if(!d){b.error()}else{switch(d.replace(/(;.*)/,"")){case"application/json":f=$.parseJSON(f);if(f.result){b.success(f);if(b.reflow){App.Page.reflow()}}else{b.error(f)}break;case"text/html":b.success(f);if(b.reflow){App.Page.reflow()}break}}},error:function(d,f,e){if(f!="abort"){b.stop();b.error()}},complete:function(d,e){if(b.blockUI){App.Ajax.stop()}}})};App.Ajax.abort=function(a){a.abort()};App.Ajax.errorDialog=function(){App.Dialogs.error(Consts.ajaxErrorMessage)};App.Ajax.handleError=function(b,a){if(b&&b.error){if(b.inline&&a){App.Validation.setError(a,b.error)}else{App.Dialogs.error(b.error)}}else{App.Ajax.errorDialog()}};App.Ajax.activeCount=0;App.Ajax.start=function(){if(App.Ajax.activeCount==0){$.blockUI();App.Ajax.inAction=true}App.Ajax.activeCount++};App.Ajax.stop=function(){if(--App.Ajax.activeCount==0){App.Ajax.inAction=false;$.unblockUI()}};App.Ajax.isBusy=function(){return App.Ajax.inAction};App.Attachments=new function(){};/*******************************************************************/
/* Data Tables */
/* [Permissions checked!] */
App.Tables = new function()
{
var self = this;
// Fields for keeping the current column/grouping state.
self.columns = null;
self.columns_stack = null;
self.columns_for_user = null;
self.group_by = '';
self.group_order = '';
// Fields for keeping the drag/drop state.
self.dragged_row = null;
//---------------------------------------------------------------
// DRAG & DROP
//---------------------------------------------------------------
self.applyDragDrop = function(container)
{
var ctx = $(container);
$('tr.row img.draggable, tr.row div.draggable', ctx).draggable(
{
addClasses: false,
cursor: 'move',
containment: 'document',
cursorAt: { top: 10, left: 5 },
scroll: true,
scrollSensitivity: 50,
scrollSpeed: 40,
scope: 'rows',
start: self._dragStart,
stop: self._dragStop,
helper: self._dragHelper
});
$('tr.droppable', ctx).droppable(
{
addClasses: false,
tolerance: 'pointer',
scope: 'rows',
hoverClass: 'jstree-dropping',
over: self._dropEnter,
out: self._dropLeave,
drop: self._drop
});
}
self._dragStart = function(event, ui)
{
self.dragged_row = $(this).closest('tr').get(0);
App.DragDrop.start();
$(ui.helper).show(); // See _dragHelper
}
self._dragStop = function(event, ui)
{
App.DragDrop.stop();
}
self._dragHelper = function(event)
{
var helper = $('td.dragHelper', $(this).closest('tr'));
var html = '' + helper.html() +
'
';
return $(html).get(0);
}
self._dropEnter = function(event, ui)
{
self._dropShowBorder(this);
}
self._dropShowBorder = function(e)
{
var columns = $('td, th', $(e));
columns.addClass('row-dragged-show').removeClass('row-dragged-hide');
}
self._dropLeave = function(event, ui)
{
self._dropHideBorder(this);
}
self._dropHideBorder = function(e)
{
var row = $(e);
$('th', row).addClass('row-dragged-hide').removeClass('row-dragged-show');
$('td', row).addClass('row-dragged-hide').removeClass('row-dragged-show');
}
self._drop = function(event, ui)
{
var dragged = $(self.dragged_row);
var dropped = $(this);
self._dropHideBorder(this);
if ($(dragged).attr('id') != $(dropped).attr('id'))
{
dragged.insertAfter(dropped);
}
}
//---------------------------------------------------------------
// CHECKBOXES / SELECTION
//---------------------------------------------------------------
self.initializeToggleAll = function(selector)
{
// Iterate through all tables
var tables = $(selector);
$.each(tables, function(ix, t)
{
var table = $(t);
// Iterate through all rows and get the checked state
var checkboxes = $('tr.row input.selectionCheckbox', table);
var checked = checkboxes.length > 0;
$.each(checkboxes, function(ix, c)
{
if (!c.checked)
{
checked = false;
return;
}
});
// If all checkboxes have been checked, check the toggle all
// checkbox, too.
var toggleAll = $('tr.header input.selectionCheckbox', table);
if (toggleAll.length == 1)
{
toggleAll.get(0).checked = checked;
}
});
}
self.onRowClick = function(e)
{
$(e).blur();
var row = $(e).closest('.row');
// Change css
if (e.checked)
{
if (row.hasClass('odd'))
{
row.removeClass('odd');
row.addClass('oddSelected');
}
else
{
row.removeClass('even');
row.addClass('evenSelected');
}
}
else
{
if (row.hasClass('oddSelected'))
{
row.removeClass('oddSelected');
row.addClass('odd');
}
else
{
row.removeClass('evenSelected');
row.addClass('even');
}
}
}
self.onToggleAllClick = function(e)
{
// Find the table element parent of the checkbox
var table = $(e).closest('.grid-container');
if (table.length != 1)
{
return false;
}
self.setCheckboxes(table, e.checked);
}
self.setCheckboxes = function(context, checked)
{
var checkboxes = $('tr input.selectionCheckbox', context);
checkboxes.prop('checked', checked);
self._updateSelection(context);
}
self._updateSelection = function(context)
{
var rows = $('tr.row', context);
var i = 1;
$.each(rows, function(index, value)
{
var row = $(value);
var checked = false;
// Check if the row is selected
var checkbox = $('input.selectionCheckbox', row);
if (checkbox)
{
checked = checkbox.prop('checked');
}
// Calculate the correct css class
var css = '';
if ((i & 1) == 0)
{
if (checked)
{
css = 'evenSelected';
}
else
{
css = 'even';
}
}
else
{
if (checked)
{
css = 'oddSelected';
}
else
{
css = 'odd';
}
}
// Update the css class
row.removeClass('odd even oddSelected evenSelected');
row.addClass(css);
i++;
});
}
self.setCheckboxesById = function(context, ids)
{
self._updateCheckboxesById(
context,
ids,
function(found)
{
return found;
}
);
}
self._updateCheckboxesById = function(context, ids, callback)
{
var id_lookup = {};
for (i = 0; i < ids.length; i++)
{
id_lookup[ids[i]] = true;
}
$('tr input.selectionCheckbox', context).each(function(ix, v)
{
var checked = callback(id_lookup[v.value]);
if (checked !== null)
{
$(v).prop('checked', checked ? true : false);
}
});
self._updateSelection(context);
}
self.enableCheckboxesById = function(context, ids)
{
self._updateCheckboxesById(
context,
ids,
function(found)
{
return found ? true : null;
}
);
}
self.disableCheckboxesById = function(context, ids)
{
self._updateCheckboxesById(
context,
ids,
function(found)
{
return found ? false : null;
}
);
}
self.getSelected = function(context)
{
var checkboxes = $('tr.row input.selectionCheckbox:checked',
context);
var selected = new Array();
$.each(checkboxes, function(i, v)
{
selected.push(parseInt(v.value));
});
return selected;
}
//---------------------------------------------------------------
// COLUMNS
//---------------------------------------------------------------
self.onColumnWidthChanged = function(e, event, max, allow_0)
{
return App.Controls.onNumberChanged(e, event, max, allow_0);
}
self.setGrouping = function(column)
{
if (self.group_by == column)
{
self.group_order = self.group_order == 'asc' ? 'desc' : 'asc';
}
else
{
self.group_order = 'asc';
self.group_by = column;
}
}
self.pushColumns = function(columns_for_user)
{
if (!self.columns_stack)
{
self.columns_stack = [];
}
self.columns_stack.push(self.columns_for_user);
self.columns_for_user = columns_for_user;
}
self.popColumns = function()
{
if (!self.columns_stack || !self.columns_stack.length)
{
return null;
}
var columns_for_user = self.columns_for_user;
self.columns_for_user = self.columns_stack.pop();
return columns_for_user;
}
self.selectColumns = function(o)
{
var actions = $('#selectColumns-' + o.group_id);
var select = $('.select', actions);
var busy = $('.busy', actions);
select.hide();
busy.show();
App.Ajax.call(
{
target: '/columns/ajax_render_rows',
arguments: {
project_id: o.project_id,
area_id: o.area_id,
columns: self.columns_for_user,
group_by: self.group_by,
group_order: self.group_order
},
success: function(html)
{
let selectColumnsGridContainerSelector = '#selectColumnsGridContainer';
busy.hide();
select.show();
$(selectColumnsGridContainerSelector).html(html);
$(document).on(
'click',
selectColumnsGridContainerSelector
+ ' tr > td,'
+ selectColumnsGridContainerSelector
+ ' tr > td.action > a.hidden',
function(event) {
event.preventDefault();
event.stopPropagation();
}
);
self._selectColumnsDialog(
{
submit: function()
{
self._selectColumnsSubmit(o);
}
});
},
error: function(data)
{
busy.hide();
select.show();
App.Ajax.handleError(data);
}
});
}
self._selectColumnsDialog = function(o)
{
App.Validation.hideErrors();
// Initialize the dialog
$('#selectColumnsForm').unbind('submit');
$('#selectColumnsSubmit').removeClass('button-busy');
// Fill the dropdown of the Add Column dialog with those columns
// that are not selected by the user.
$('#addColumnItems').empty();
$.each(self.columns, function(key, name)
{
if (self.columns_for_user[key] === undefined)
{
self._addColumnToDropdown(key);
}
});
$('#selectColumnsForm').submit(function(e)
{
App.Validation.hideErrors();
$('#selectColumnsErrors').empty();
var valid = true;
$('#selectColumnsGrid tr.row').each(function(i, v)
{
var value = $('input[type=text]', $(this)).val();
if (value == '')
{
App.Validation.setError(
'#selectColumnsErrors',
selectColumnsDialogValidation['width_required']
);
valid = false;
}
else
{
var width = Number(value);
if (width < 25 || width > 1000)
{
App.Validation.setError(
'#selectColumnsErrors',
selectColumnsDialogValidation['width_min_max']
);
valid = false;
}
}
return valid;
});
if (valid)
{
o.submit();
}
return false;
});
App.Dialogs.open(
{
selector: '#selectColumnsDialog'
});
}
self._selectColumnsSubmit = function(o)
{
$('#selectColumnsSubmit').addClass('button-busy');
var columns = self._getColumnsForUser();
App.Ajax.call(
{
target: '/columns/ajax_save_for_user',
arguments: {
project_id: o.project_id,
area_id: o.area_id,
columns: columns,
group_by: self.group_by,
group_order: self.group_order
},
success: function(data)
{
$('#selectColumnsSubmit').removeClass('button-busy');
App.Dialogs.closeTop();
var old_columns = self.columns_for_user;
self.columns_for_user = columns;
if (o.submit)
{
self._selectColumnsRefresh(
{
group_id: o.group_id,
submit: o.submit,
container: o.container,
old_columns: old_columns,
new_columns: columns
});
}
},
error: function(data)
{
$('#selectColumnsSubmit').removeClass('button-busy');
App.Ajax.handleError(data);
}
});
}
self._getColumnsForUser = function()
{
var columns = {};
$('#selectColumnsGrid tr.row').each(function(i, v)
{
var key = $(this).attr('rel');
var id = '#columnWidth-' + App.escapeId(key);
columns[key] = $(id).val();
});
return columns;
}
self._selectColumnsRefresh = function(o)
{
var actions = $('#selectColumns-' + o.group_id);
var select = $('.select', actions);
var busy = $('.busy', actions);
var container = o.container || 'body';
// Before refreshing the grid content, we need to take into
// account the changed container/page width due to different
// column definitions. When the old definition is smaller
// than those of the new columns, we increase the container/
// page size before refreshing the content. Likewise, if the
// new definition is smaller, we decrease the width after
// refreshing the content.
var old_min_width = self._getColumnMinWidth(o.old_columns);
var new_min_width = self._getColumnMinWidth(o.new_columns);
if (old_min_width < new_min_width)
{
self._setColumnMinWidth(container, new_min_width);
}
select.hide();
busy.show();
o.submit(
{
success: function()
{
if (old_min_width > new_min_width)
{
self._setColumnMinWidth(container, new_min_width);
}
},
error: function(data)
{
select.show();
busy.hide();
}
});
}
self._getColumnMinWidth = function(columns)
{
return Consts.minWidthOffset + self._getColumnWidth(columns);
}
self._getColumnWidth = function(columns)
{
var width = 0;
$.each(columns, function(i, v)
{
width += v != 0 ? Number(v) : Consts.minWidthVariable;
});
return width;
}
self._setColumnMinWidth = function(container, min_width)
{
// There's a minimum width for the actual document (body). We
// also need to add the sidebar and qpane in this case (if
// visible).
if (container == 'body')
{
min_width = Math.max(min_width, Consts.minWidth);
if (App.Sidebar.isVisible())
{
min_width += App.Sidebar.getWidth() + 10;
}
if (App.QPane.isVisible())
{
min_width += App.QPane.getWidth() + 10;
}
}
$(container).css('min-width', min_width);
}
self.addColumn = function()
{
self._addColumnDialog(
{
submit: self._addColumnSubmit
});
}
self._addColumnSubmit = function(column)
{
$('#addColumnSubmit').addClass('button-busy');
App.Ajax.call(
{
target: '/columns/ajax_render_row',
arguments: {
key: column.key,
name: column.name
},
success: function(html)
{
$('#addColumnSubmit').removeClass('button-busy');
App.Dialogs.closeTop();
var row = $(html);
row.appendTo($('#selectColumnsGrid'));
$('.moveDown', row.prev()).show();
// Remove the option from the dropdown (add dialog)
// and disable the add link if there are no more
// columns to add.
$('#addColumn-' + App.escapeId(column.key)).remove();
if ($('#addColumnItems option').length == 0)
{
$('#selectColumnsAdd').hide();
}
},
error: function(data)
{
$('#addColumnSubmit').removeClass('button-busy');
App.Ajax.handleError(data);
}
});
}
self._addColumnDialog = function(o)
{
// Initialize the dialog
$('#addColumnForm').unbind('submit');
$('#addColumnAccept').show();
$('#addColumnBusy').hide();
$('#addColumnForm').submit(function(e)
{
var dropdown = $('#addColumnItems');
o.submit({
key: dropdown.val(),
name: $.trim($('option:selected', dropdown).text())
});
return false;
});
App.Dialogs.open(
{
selector: '#addColumnDialog'
});
}
self.removeColumn = function(key)
{
self._addColumnToDropdown(key);
var row = $('#column-' + App.escapeId(key));
if (row.next().length == 0)
{
$('.moveDown', row.prev()).hide();
}
row.remove();
$('#selectColumnsAdd').show();
}
self._addColumnToDropdown = function(key)
{
var option = $(' ');
option.attr('id', 'addColumn-' + key);
option.val(key);
option.text(self.columns[key]);
option.appendTo('#addColumnItems');
}
self.moveColumnUp = function(key)
{
var row = $('#column-' + App.escapeId(key));
var prev = row.prev();
row.insertBefore(prev);
self._syncColumnMoveButtons(row, prev);
}
self.moveColumnDown = function(key)
{
var row = $('#column-' + App.escapeId(key));
var next = row.next();
row.insertAfter(next);
self._syncColumnMoveButtons(row, next);
}
self._syncColumnMoveButtons = function(s, t)
{
var sUp = $('.moveUp', s).is(':visible');
var sDown = $('.moveDown', s).is(':visible');
var tUp = $('.moveUp', t).is(':visible');
var tDown = $('.moveDown', t).is(':visible');
App.Effects.setVisible($('.moveUp', s), tUp);
App.Effects.setVisible($('.moveDown', s), tDown);
App.Effects.setVisible($('.moveUp', t), sUp);
App.Effects.setVisible($('.moveDown', t), sDown);
}
self.getColumnName = function(key)
{
return self.columns[key];
}
self.matchesColumns = function(columns)
{
var keys_a = Object.keys(self.columns_for_user),
keys_b = Object.keys(columns);
if (keys_a.length != keys_b.length)
{
return false;
}
var i = 0;
$.each(self.columns_for_user, function(key, width)
{
if (keys_b[i] != key || columns[key] != width)
{
return false;
}
i++;
});
return true;
}
self.getColumnWidthDelta = function(columns)
{
var width_a = self._getColumnMinWidth(self.columns_for_user);
var width_b = self._getColumnMinWidth(columns);
return Math.max(width_a, Consts.minWidth) -
Math.max(width_b, Consts.minWidth);
}
//---------------------------------------------------------------
// ROW NAVIGATION
//---------------------------------------------------------------
self.nextRow = function(row)
{
// Check if there's another row right after the current one
// (in the same table).
var next = row.next('tr.row');
if (next.length)
{
return next;
}
// If not, we check the following tables (childs or siblings).
var group = row.closest('.group');
while (group.length > 0)
{
// We first try to find a matching row in the sub-groups.
next = group.find('.group tr.row:first');
if (next.length)
{
return next;
}
// If there's no group or row in these groups, we take a
// look at the next sibling. If there's no sibling, we go
// up in the tree to find a sibling for a direct/indirect
// parent.
var group_n = group.next();
if (!group_n.length)
{
var parent = group.parents('.group:first');
while (parent.length)
{
group_n = parent.next();
if (group_n.length)
{
break;
}
parent = parent.parents('.group:first');
}
}
group = group_n;
// Once we found a subsequent group, we try to return the
// first row (otherwise, we proceed with its sub-groups and
// direct/indirect siblings).
if (group.length)
{
next = group.find('tr.row:first');
if (next.length)
{
return next;
}
}
}
return null;
}
self.prevRow = function(row)
{
// Check if there's another row right before the current one
// (in the same table).
var prev = row.prev('tr.row');
if (prev.length)
{
return prev;
}
// If not, we check the previous tables (parents or siblings).
var group = row.closest('.group');
while (group.length > 0)
{
// We first check if there's a previous sibling.
var group_p = group.prev();
// If there's none, we go up the in tree and check the
// parents. We can either return the last direct row of
// a direct/indirect parent or continue with a previous
// sibling of a direct/indirect parent.
if (!group_p.length)
{
var parent = group.parents('.group:first');
while (parent.length)
{
prev = parent.find('> table tr.row:last');
if (prev.length)
{
return prev;
}
group_p = parent.prev();
if (group_p.length)
{
break;
}
parent = parent.parents('.group:first');
}
}
group = group_p;
// Once we found a direct/indirect previous table, we can
// simply return the last row in this group (this will
// also take into account possible sub-groups).
if (group.length)
{
prev = group.find('tr.row:last');
if (prev.length)
{
return prev;
}
}
}
return null;
}
//---------------------------------------------------------------
// EVENTS
//---------------------------------------------------------------
self.bindClick = function(callback)
{
$(document).on(
'click.table',
'tr.row',
function(e)
{
var t = $(e.target);
// Make sure to ignore clicked links, checkboxes, etc.
if (t.is('td') && !t.is('td.clickable'))
{
callback($(this));
}
}
);
}
self.unbindClick = function()
{
$(document).off('click.table');
}
}
App.Cases=new function(){var a=this;a.dragged_ids=null;a.droppables=null;a.drop_data=null;a.applyActions=function(){a._applyHover()};a._applyHover=function(){$(document).on({mouseenter:function(){if(!App.DragDrop.isDragging()){a._applyDraggable($(this))}}},"td.drag")};a.applyResponsive=function(){App.Responsive.register("#content",950,function(b){var c=$("#content-header .button-responsive");if(b){c.addClass("button-notext")}else{c.removeClass("button-notext")}})};a._applyDraggable=function(b){$(".caseDraggable",b).draggable({addClasses:false,cursor:"move",containment:"document",cursorAt:{top:10,left:5},scroll:true,scrollSensitivity:50,scrollSpeed:40,scope:"cases",start:a._dragStart,stop:a._dragStop,helper:a._dragHelper})};a._applyDroppable=function(){a.droppables=$("tr.caseDroppable, #groupTree a.caseDroppable");a.droppables.droppable({addClasses:false,tolerance:"pointer",scope:"cases",hoverClass:"jstree-dropping",over:a._dropEnter,out:a._dropLeave,drop:a._drop})};a._destroyDroppable=function(){if(a.droppables){a.droppables.droppable("destroy")}};a._dragHelper=function(b){a._dragInit(this,b);return a._getDragHelper(this,b)};a._dragInit=function(b,c){a.dragged_ids=a._getDragged(b)};a._getDragged=function(b){var d=$(b).closest("tr");var c=$("input.selectionCheckbox",d);if(!c.is(":checked")){return[d.attr("rel")]}else{return App.Tables.getSelected($("#groups"))}};a._getDragHelper=function(d,g){var h=$(d).closest("tr");var c=a.dragged_ids;if(c.length>1){var i=""+c.length+" test cases"}else{var i=$(".title",h).html()}var b=Consts.resourceBaseUrl+"images/icons/dragGray.png";var f=' '+i;var e=''+f+"
";return $(e).get(0)};a._dragStart=function(b,c){if(a.drop_data){a._dropCancel()}App.DragDrop.start();$(c.helper).show();a._applyDroppable()};a._dragStop=function(b,c){a._destroyDroppable();App.DragDrop.stop()};a._dropShowBorder=function(b){var c=$("td, th",$(b));c.addClass("row-dragged-show").removeClass("row-dragged-hide")};a._dropHideBorder=function(b){var c=$(b);$("th",c).addClass("row-dragged-hide").removeClass("row-dragged-show");$("td",c).addClass("row-dragged-hide").removeClass("row-dragged-show")};a._dropShowHighlight=function(b){var c=$("#node-"+b);$("> a",c).addClass("jstree-highlighted")};a._dropHideHighlight=function(b){var c=$("#node-"+b);$("> a",c).removeClass("jstree-highlighted")};a._dropEnter=function(b,c){a._dropShowBorder(this)};a._dropLeave=function(b,c){a._dropHideBorder(this)};a._drop=function(c,d){var g=$(this);if(this.tagName=="A"){var b=g.closest("li").attr("rel");a.drop_data={drop_to_tree:true,droppable:this,section_id:b,case_ids:a.dragged_ids};a._dropShowHighlight(b)}else{var i=g.attr("rel");var b=g.closest(".grid-container").attr("rel");a.drop_data={drop_to_tree:false,droppable:this,after_id:i,section_id:b,case_ids:a.dragged_ids}}var f=c.originalEvent;var h=false;if(f.shiftKey){a.dropCopy()}else{if(f.ctrlKey||f.metaKey){if(a._dropCanMove(a.drop_data)){a.dropMove()}else{h=true}}else{h=true}}if(h){a._dropShowMenu(f,a.drop_data)}};a._dropShowMenu=function(b,c){if(a._dropCanMove(c)){$("#casesDndMoveDisabled").hide();$("#casesDndMove").show()}else{$("#casesDndMove").hide();$("#casesDndMoveDisabled").show()}App.Dropdowns.show("#casesDndDropdown",b.pageX,b.pageY)};a._dropCanMove=function(g){var e=g.droppable;if(e.tagName=="A"){return true}var f=$(e);if(f.hasClass("header")){return true}var d={};var b=a.dragged_ids;for(var c=0;c ';$(b).after(d)};a._dropStop=function(b){a._dropHideBorder(b);a._dropClearCheckboxes();$(b).next().remove();a.drop_data=null};a._dropClearCheckboxes=function(){var b=$("#groups .grid-container");$.each(b,function(c,d){App.Tables.setCheckboxes($(d),false)});a._disableMassActions()};a.dropCancel=function(){a._dropCancel()};a._dropCancel=function(){a._dropHideMenu();if(a.drop_data.drop_to_tree){a._dropHideHighlight(a.drop_data.section_id)}else{a._dropHideBorder(a.drop_data.droppable)}a.drop_data=null};a.dropCopy=function(){a._dropHideMenu();if(a.drop_data.drop_to_tree){a._dropCopyToSection(a.drop_data)}else{a._dropCopy(a.drop_data)}};a._dropCopy=function(b){a._dropStart(b.droppable);App.Ajax.call({target:"/cases/ajax_copy",arguments:{case_ids:b.case_ids,section_id:b.section_id,after_id:b.after_id,columns:App.Tables.columns_for_user},success:function(d){a._dropStop(b.droppable);var c=$("#grid-"+b.section_id);if(b.after_id){$("#row-"+b.after_id).after(d)}else{$("tr.header",c).after(d)}App.Suites.onCasesAdded();App.Suites.refreshGroupCount(b.section_id)},error:function(c){a._dropStop(b.droppable);App.Ajax.handleError(c)}})};a._dropCopyToSection=function(d){var c=$("#node-"+d.section_id);var b=c.children("a");b.addClass("jstree-loading");App.Ajax.call({target:"/cases/ajax_copy_to_section_end",arguments:{case_ids:d.case_ids,section_id:d.section_id,columns:App.Tables.columns_for_user},success:function(f){b.removeClass("jstree-loading jstree-highlighted");var e=$("#grid-"+d.section_id);if(e.length){$(f).appendTo(e)}a._dropClearCheckboxes();App.Suites.onCasesAdded();App.Suites.refreshGroupCount(d.section_id)},error:function(e){b.removeClass("jstree-loading");App.Ajax.handleError(e)}})};a.dropMove=function(){a._dropHideMenu();if(a.drop_data.drop_to_tree){a._dropMoveToSection(a.drop_data)}else{a._dropMove(a.drop_data)}};a._dropMove=function(b){a._dropStart(b.droppable);App.Ajax.call({target:"/cases/ajax_move",arguments:{case_ids:b.case_ids,section_id:b.section_id,after_id:b.after_id},success:function(d){a._dropStop(b.droppable);var e="#grid-"+b.section_id;var c=a._dropGetRows(b.case_ids);if(b.after_id){c.insertAfter($("#row-"+b.after_id))}else{c.insertAfter($("tr.header",e))}App.Suites.refreshGroupCounts()},error:function(c){a._dropStop(b.droppable);App.Ajax.handleError(c)}})};a._dropMoveToSection=function(d){var c=$("#node-"+d.section_id);var b=c.children("a");b.addClass("jstree-loading");App.Ajax.call({target:"/cases/ajax_move_to_section_end",arguments:{case_ids:d.case_ids,section_id:d.section_id},success:function(g){b.removeClass("jstree-loading jstree-highlighted");var e=$("#grid-"+d.section_id);var f=a._dropGetRows(d.case_ids);if(e.length){f.appendTo(e)}else{f.remove()}a._dropClearCheckboxes();App.Suites.refreshGroupCounts()},error:function(e){b.removeClass("jstree-loading");App.Ajax.handleError(e)}})};a._dropGetRows=function(b){var d=false;for(var c=0;c=50){if(App.Dialogs.remove("l:cases_edit_many_diff_confirm_dialog",$("#confirmDiffSubmit").html(),null,null,function(){App.Dialogs.closeTop();c()})){}}else{App.Dialogs.closeTop();c()}return false});$("#accept").addClass("button-busy");App.Ajax.call({target:"/cases/ajax_render_edit_many_diff",arguments:$.extend({suite_id:d,scope:a.scope,case_ids:a.getCases(),display:a.display,group_only:a.group_only,group_by:a.group_by,group_id:a.group_id,filters:a.filters},a._getInput()),stop:function(){$("#accept").removeClass("button-busy")},success:function(e){b=e.case_count;if(e.show_diff){$("#diff").html(e.code);$("#confirmDiffSubmit").text(e.message);App.Dialogs.open({selector:"#confirmDiffDialog"})}else{c()}},error:function(e){App.Ajax.handleError(e)}})};a._getInput=function(){var b=$("#form .custom.steps");if(b.length){App.Cases.updateSteps(b.attr("id"))}values={};$("#form :input").each(function(){var c=$(this);if(c.attr("type")=="checkbox"){values[c.attr("name")]=c.prop("checked")}else{values[this.name]=$(this).val()}});return values};a.setCases=function(b){a.case_ids={};if(b){$.each(b,function(c,d){a.case_ids[d]=true})}};a.getCases=function(){return a.case_ids?Object.keys(a.case_ids):[]};a.removeCase=function(b){var c=$("#row-"+b);if(c.next().length==0){c.prev().find("th, td").addClass("noborder")}c.remove();delete a.case_ids[b]};a.loadCases=function(b){$("#paginationBusy").show();App.Ajax.call({target:"/cases/ajax_render_edit_many_cases",arguments:{suite_id:a.suite_id,case_ids:a.getCases(),columns:a.columns,offset:b},stop:function(){$("#paginationBusy").show()},success:function(c){$("#cases").html(c)},error:function(c){App.Ajax.handleError(c)}})}};App.Cases.showTests=function(){$("#activitiesLink").removeClass("text-active");$("#tests").show();$("#testsLink").addClass("text-active");$("#activities").hide()};App.Cases.loadTests=function(a){$("#showTests .showAll").hide();$("#showTests .busy").show();App.Ajax.call({target:"/cases/ajax_get_tests",arguments:{case_id:a},success:function(b){$("#showTests .busy").hide();$("#tests").html(b)},error:function(b){$("#showTests .busy").hide();App.Ajax.handleError(b)}})};App.Cases.showActivities=function(){$("#testsLink").removeClass("text-active");$("#activities").show();$("#activitiesLink").addClass("text-active");$("#tests").hide()};App.Cases.loadActivities=function(a){$("#showActivities .showAll").hide();$("#showActivities .busy").show();App.Ajax.call({target:"/cases/ajax_get_activities",arguments:{case_id:a},success:function(b){$("#showActivities .busy").hide();$("#activities").html(b)},error:function(b){$("#showActivities .busy").hide();App.Ajax.handleError(b)}})};App.Cases.showPrevious=function(a){$("#previous-"+a).show();$("#previousLink-"+a).hide()};App.Cases.loadHistory=function(a){$("#showHistory .showAll").hide();$("#showHistory .busy").show();App.Ajax.call({target:"/cases/ajax_get_history",arguments:{case_id:a},success:function(b){$("#showHistory .busy").hide();$("#history").html(b)},error:function(b){$("#showHistory .busy").hide();App.Ajax.handleError(b)}})};App.Cases.loadDefects=function(a){$("#showDefects .showAll").hide();$("#showDefects .busy").show();App.Ajax.call({target:"/cases/ajax_render_defects",arguments:{case_id:a},stop:function(){$("#showDefects .busy").hide()},success:function(b){$("#defects").html(b)},error:function(b){App.Ajax.handleError(b)}})};App.Cases.editTitleDialog=function(a){App.Validation.hideErrors();$("#editCaseTitle").val(a.title);$("#editCaseForm").unbind("submit");$("#editCaseSubmit").removeClass("button-busy");$("#editCaseForm").submit(function(b){App.Validation.hideErrors();var c=$.trim($("#editCaseTitle").val());$("#editCaseSubmit").addClass("button-busy");a.submit(c);return false});$("#editCaseTitle").unbind("keydown").bind("keydown",function(b){if(b.keyCode==App.keyEnter){$("#editCaseForm").submit();return false}});App.Dialogs.open({selector:"#editCaseDialog",focusedControl:"#editCaseTitle",selectedControl:"#editCaseTitle",titleSelector:a.titleSelector})};App.Cases.editTitle=function(b){var a="#row-"+b+" .title";var c=$(a).text();$(".editCaseEdit").show();$(".editCaseAdd").hide();App.Cases.editTitleDialog({title:c,titleSelector:".dialogTitleEdit",submit:function(d){App.Ajax.call({target:"/cases/ajax_edit_title",arguments:{case_id:b,title:d},success:function(e){$(a).text(d);App.Effects.add(a);App.Dialogs.close("#editCaseDialog")},error:function(e){$("#editCaseSubmit").removeClass("button-busy");App.Ajax.handleError(e,"#editCaseErrors")}})}})};App.Cases.add=function(c){App.Validation.hideErrors();$(".inlineSectionActions").show();$(".inlineSectionAddCase").hide();var a="#inlineSectionActions-"+c;var e="#inlineSectionAddCase-"+c;$(e+" .addForm").unbind("submit");$(e+" .cancel").unbind("click");$(e+" .title").unbind("keydown");$(e+" .title").val("");var f=function(){$(a).show();$(e).hide()};var b=function(g){if(g){$(e+" .buttons").hide();$(e+" .busy").show()}else{$(e+" .buttons").show();$(e+" .busy").hide()}};$(e+" .title").keydown(function(g){if(g.keyCode==App.keyEscape){f()}});$(e+" .cancel").click(f);var d=$(e+" .addForm");$(e+" .addForm").submit(function(){$(e+" .submit").blur();App.Validation.hideErrors();var g=$.trim($(e+" .title").val());if(!g){$(e+" .errorPanel").show();$(e+" .requiredMessage").show();return false}b(true);App.Ajax.call({target:"cases/ajax_add",arguments:{section_id:c,title:g,columns:App.Tables.columns_for_user},success:function(i){$(e+" .title").val("");$(e+" .title").focus();b(false);var h=$("#grid-"+c);var j=$(i);j.appendTo(h);App.Effects.add(j);App.Suites.onCasesAdded();App.Suites.refreshGroupCount(c);if(App.Users.hasGoals()){App.Users.reloadGoals()}},error:function(h){b(false);App.Ajax.handleError(h)}});return false});$(a).hide();$(e).show();$(e+" .title").focus()};App.Cases.remove=function(b){var c=$("#row-"+b);$(".deleteLink",c).hide();$(".deleteBusy",c).show();var a=c.closest(".grid-container").attr("rel");App.Ajax.call({target:"cases/ajax_delete",arguments:{case_id:b},stop:function(){$(".deleteBusy",c).hide();$(".deleteLink",c).show()},success:function(d){$("#row-"+b).remove();App.Suites.onCasesDeleted();App.Suites.refreshGroupCount(a);App.Cases._updateMassActions()},error:function(d){App.Ajax.handleError(d)}})};App.Cases.removeMany=function(b){var a=App.Tables.getSelected($("#groups"));$("#deleteCases").addClass("button-busy");App.Ajax.call({target:"cases/ajax_delete_many",arguments:{suite_id:b,case_ids:a},success:function(c){$("#deleteCases").removeClass("button-busy");App.Cases._removeMany(a);App.Suites.onCasesDeleted();App.Suites.refreshGroupCounts();App.Cases._disableMassActions()},error:function(c){$("#deleteCases").removeClass("button-busy");App.Ajax.handleError(c)}})};App.Cases._removeMany=function(a){$.each(a,function(b,c){$("#row-"+c).remove()})};App.Cases.onRowClick=function(a){App.Tables.onRowClick(a);App.Cases._updateMassActions()};App.Cases.onToggleAllClick=function(a){App.Tables.onToggleAllClick(a);App.Cases._updateMassActions()};App.Cases._updateMassActions=function(){var b=$("tr.row input.selectionCheckbox");var a=false;$.each(b,function(c,d){if(d.checked){a=true;return}});if(a){App.Cases._enableMassActions()}else{App.Cases._disableMassActions()}};App.Cases._enableMassActions=function(){$("#deleteCasesDisabled").hide();$("#deleteCases").show();$("#editCasesSelectedDisabled").hide();$("#editCasesSelected").show()};App.Cases._disableMassActions=function(){$("#deleteCases").hide();$("#deleteCasesDisabled").show();$("#editCasesSelected").hide();$("#editCasesSelectedDisabled").show()};App.Cases.editSelected=function(c){var b=Consts.ajaxBaseUrl+"/cases/edit_many/"+c+"/1&"+App.Suites.getStateOptions();var a=App.Tables.getSelected($("#groups"));$("#case_ids").val(a.join(","));$("#editCasesForm").attr("action",b).submit()};App.Cases.editView=function(a){App.Page.load("/cases/edit_all/{0}/1/{1}&{2}",a,App.Suites.display,App.Suites.getStateOptions())};App.Cases.stepsToString=function(b){var a=Array();$("tr",$("#"+b+"_table")).each(function(c,g){var f=$(g);var h={content:$("textarea.content",f).val()};var d=$("textarea.expected",f);if(d.length>0){h.expected=d.val()}a.push(h)});if(a.length>0){return JSON.stringify(a)}else{return""}};App.Cases.addStep=function(e,f,c){var a=$("#"+f+"_container");$(".addStepBusy",a).show();$(".addStep",a).hide();var b=$("#"+f+"_table");var d=$("tr",b).length+1;App.Ajax.call({target:"/cases/ajax_render_step",arguments:{index:d,project_id:e,field_name:f},success:function(g){$(".noSteps",a).hide();var i=$(g);if(c){var h=b.find("tr.step-"+c);i.insertAfter(h)}else{i.appendTo(b)}$(".addStepBusy",a).hide();$(".addStep",a).show();i.find("textarea:first").focus();App.Cases.indexSteps(f);App.Cases.changeSteps(f)},error:function(g){$(".addStepBusy",a).hide();$(".addStep",a).show();App.Ajax.handleError(g)}})};App.Cases.addStepToCurrent=function(b,c){var a=App.Cases.getCurrentStep(c);if(a){App.Cases.addStep(b,c,a)}};App.Cases.updateSteps=function(b){var a=$("#"+b);a.val(App.Cases.stepsToString(b))};App.Cases.changeSteps=function(a){App.Cases.updateSteps(a);$("#"+a).trigger("change")};App.Cases.indexSteps=function(b){var a=$("#"+b+"_table");var c=0;$("tr",a).each(function(d,f){++c;$(".step-no-inner",$(f)).html(c)})};App.Cases.removeStep=function(c,b){var a=$("#"+c+"_table");a.find("tr.step-"+b).remove();if($("tr",a).length==0){$("#"+c+"_container").find(".noSteps").show()}else{App.Cases.indexSteps(c)}App.Cases.changeSteps(c)};App.Cases.moveStepUp=function(c,a){var b=$("#"+c+"_table").find("tr.step-"+a);b.insertBefore(b.prevAll("tr").first());b.find("textarea").first().focus();App.Cases.indexSteps(c);App.Cases.changeSteps(c)};App.Cases.moveCurrentStepUp=function(b){var a=App.Cases.getCurrentStep(b);if(a){App.Cases.moveStepUp(b,a)}};App.Cases.getCurrentStep=function(b){var c=$(":focus");var a=c.closest("tr.step-container");return a.length>0?a.attr("rel"):null};App.Cases.moveStepDown=function(c,a){var b=$("#"+c+"_table").find("tr.step-"+a);b.insertAfter(b.nextAll("tr").first());b.find("textarea").first().focus();App.Cases.indexSteps(c);App.Cases.changeSteps(c)};App.Cases.moveCurrentStepDown=function(b){var a=App.Cases.getCurrentStep(b);if(a){App.Cases.moveStepDown(b,a)}};App.Cases.reloadForm=function(b,a){$("#templateBusy").show();App.Ajax.call({target:"/cases/ajax_render_form",arguments:$.extend({suite_id:b},App.Cases._getFormValues()),stop:function(){$("#templateBusy").hide()},success:function(c){$("#form-controls").html(c)},error:function(c){App.Ajax.handleError(c)}})};App.Cases.reloadFormMany=function(c,a,b){$("#templateBusy").show();App.Ajax.call({target:"/cases/ajax_render_form_many",arguments:$.extend({suite_id:c,various:b},App.Cases._getFormValues()),stop:function(){$("#templateBusy").hide()},success:function(d){$("#form-controls").html(d)},error:function(d){App.Ajax.handleError(d)}})};App.Cases._getFormValues=function(){var b={title:$("#title").val(),section_id:$("#section_id").val(),template_id:$("#template_id").val(),type_id:$("#type_id").val(),priority_id:$("#priority_id").val(),estimate:$("#estimate").val(),milestone_id:$("#milestone_id").val(),refs:$("#refs").val()};var a=$("#form .custom.steps");if(a.length){App.Cases.updateSteps(a.attr("id"))}$("#form .custom").each(function(c,g){var f=$(this);if(f.attr("type")=="checkbox"){b[f.attr("name")]=f.prop("checked")}else{var d=f.attr("name");b[d]=f.val()}});$.each(b,function(c,d){var e=c+"_included";var f=$("#"+e);if(f.is("input[type=checkbox]")){b[e]=f.is(":checked")}else{b[e]=f.val()}});b.template_id_included=true;return b};App.Cases.loadPrev=function(b,a){App.Ajax.call({target:"/cases/ajax_get_prev",arguments:{case_id:b},success:function(c){if(c.case_id){document.location=Consts.ajaxBaseUrl+"/cases/"+a+"/"+c.case_id}else{$("#directionPrev").hide();$("#directionPrevDisabled").show()}},error:function(c){App.Ajax.handleError(c)}})};App.Cases.loadNext=function(b,a){App.Ajax.call({target:"/cases/ajax_get_next",arguments:{case_id:b},success:function(c){if(c.case_id){document.location=Consts.ajaxBaseUrl+"/cases/"+a+"/"+c.case_id}else{$("#directionNext").hide();$("#directionNextDisabled").show()}},error:function(c){App.Ajax.handleError(c)}})};App.Cases.hideStepsHint=function(){App.Ajax.call({target:"/cases/ajax_hide_steps_hint",blockUI:false,success:function(a){App.Effects.hide("#stepsHint")},error:function(a){}})};App.Projects={};App.Projects.showHistory=function(a){$("#activitiesLink").removeClass("text-active");$("#history").show();$("#historyLink").addClass("text-active");$("#activities").hide()};App.Projects.loadHistory=function(a){$("#showHistory .showMore").hide();$("#showHistory .busy").show();App.Ajax.call({target:"/projects/ajax_get_history",arguments:{project_id:a},success:function(b){$("#showHistory .busy").hide();$("#history").html(b)},error:function(b){$("#showHistory .busy").hide();App.Ajax.handleError(b)}})};App.Projects.showedActivities=false;App.Projects.showActivities=function(b){var a=function(){$("#historyLink").removeClass("text-active");$("#activities").show();$("#activitiesLink").addClass("text-active");$("#history").hide()};if(!App.Projects.showedActivities){App.Projects.showedActivities=true;$("#activityBusy").show();App.Ajax.call({target:"/projects/ajax_get_activities",arguments:{project_id:b},success:function(c){$("#activityBusy").hide();a();if(c){$("#activities").html(c)}else{$("#noActivities").show()}},error:function(c){$("#activityBusy").hide();App.Ajax.handleError(c)}})}else{a()}};App.Projects.toggleDetails=function(b,a){var c=$(b).closest(".project");if($(".details",c).is(":visible")){App.Effects.hide($(".details",c));$(".expand",c).show();$(".collapse",c).hide()}else{if($(".details .table",c).length>0){App.Effects.show($(".details",c));$(".expand",c).hide();$(".collapse",c).show()}else{$(".buttons",c).hide();$(".busy",c).show();App.Ajax.call({target:"projects/ajax_get_details",arguments:{project_id:a},stop:function(){$(".busy",c).hide();$(".buttons",c).show()},success:function(d){$(".details",c).append(d);$(".expand",c).hide();$(".collapse",c).show();App.Effects.show($(".details",c))},error:function(d){App.Ajax.handleError(d)}})}}};App.Projects.hideUpdate=function(a){App.Ajax.call({target:"/projects/ajax_hide_update",arguments:{version:a},success:function(b){App.Effects.hide("#updateAvailable")},error:function(b){App.Ajax.handleError(b)}})};App.Projects.hideSupport=function(){App.Ajax.call({target:"/projects/ajax_hide_support",success:function(a){App.Effects.hide("#supportExpired")},error:function(a){App.Ajax.handleError(a)}})};App.Projects.onDefectPluginChange=function(a){var b=$("#defect_plugin").val();$("#defect_config").val("");if(b){$("#defectBusy").show();App.Ajax.call({target:"/admin/projects/ajax_get_defect_config",arguments:{project_id:a,plugin:b},stop:function(){$("#defectBusy").hide()},success:function(c){$("#defect_config").val(c.config);if(b=="Jira_REST"||b=="Jira"){$("#defectJiraBanner").show()}else{$("#defectJiraBanner").hide()}},error:function(c){App.Ajax.handleError(c)}})}else{$("#defectJiraBanner").hide()}};App.Projects.onReferencePluginChange=function(a){var b=$("#reference_plugin").val();$("#reference_config").val("");if(b){$("#referenceBusy").show();App.Ajax.call({target:"/admin/projects/ajax_get_reference_config",arguments:{project_id:a,plugin:b},stop:function(){$("#referenceBusy").hide()},success:function(c){$("#reference_config").val(c.config);if(b=="Jira_REST"||b=="Jira"){$("#referenceJiraBanner").show()}else{$("#referenceJiraBanner").hide()}},error:function(c){App.Ajax.handleError(c)}})}else{$("#referenceJiraBanner").hide()}};App.Projects.loadCompleted=function(){$("#showCompleted .showAll").hide();$("#showCompleted .busy").show();App.Ajax.call({target:"/projects/ajax_get_completed",arguments:{},success:function(a){$("#showCompleted .busy").hide();$("#completed").html(a)},error:function(a){$("#showCompleted .busy").hide();App.Ajax.handleError(a)}})};App.Projects.selectActivityDays=function(a){App.Charts.selectTimeframe({success:function(b){App.Ajax.call({target:"/projects/ajax_render_activity_chart",arguments:{project_id:a,days:b},success:function(c){App.Dialogs.closeTop();App.Charts.reload(App.Charts.activity,"#activityContainer",c)},error:function(c){App.Ajax.handleError(c)}})}})};App.Projects.loadTodos=function(a){App.Ajax.call({target:"/projects/ajax_render_todos",blockUI:false,arguments:{project_id:a},success:function(b){App.Projects._showTodos(b)},error:function(b){App.Projects._showTodos("")}})};App.Projects._showTodos=function(a){$("#todos").html(a);$("#todosBusy").hide();$("#todos").show()};App.Projects.star=function(c,a){var b=$(".fav-busy",$(c).closest(".project"));b.show();App.Ajax.call({target:"/projects/ajax_star",arguments:{project_id:a},stop:function(){b.hide()},success:function(d){$("#favs > .table").prepend(d);$("#favs").show();$("#activeHeader").show();$("#project-star-"+a).hide();$("#project-starred-"+a).show()},error:function(d){App.Ajax.handleError(d)}})};App.Projects.unstar=function(c,a){var b=$(".fav-busy",$(c).closest(".project"));b.show();App.Ajax.call({target:"/projects/ajax_unstar",arguments:{project_id:a},stop:function(){b.hide()},success:function(d){$("#fav-"+a).remove();$("#project-starred-"+a).hide();$("#project-star-"+a).show();if($("#favs > .table > .row").length==0){$("#favs").hide();$("#activeHeader").hide()}},error:function(d){App.Ajax.handleError(d)}})};App.Runs=new function(){var a=this;a.project_id=null;a.run_id=null;a.suite_id=null;a.group_id=null;a.display=null;a.filters=null;a.scroll_offset=0;a.user_ids=null;a.case_ids=null;a.columns_for_qpane=null;a.paginating=false;a.backwards=false;a.prev_id=null;a.can_pass=false;a.goto_next=false;a.initialized=false;a.applyActions=function(){a._applyLinkBind();a._applyTreeHeight()};a._applyLinkBind=function(){if(a.display!="tree"){return}$.subscribe("page.set_get","suites",function(c){var b=$(c.link);var d=b.closest(".group");if(d.length>0){a.group_id=d.attr("rel");a._setStateUrl()}})};a.applyResponsive=function(){App.Responsive.registerMany("#content",{600:a._applyResponsiveContentStage3,750:a._applyResponsiveContentStage2,900:a._applyResponsiveContentStage1});App.Responsive.registerMany("#qpane",{600:a._applyResponsiveQPaneStage2,750:a._applyResponsiveQPaneStage1})};a._applyResponsiveContentStage1=function(c){var b=$("#statsContainer .chart-pie");if(b.attr("rel")<=4){return}if(b.hasClass("chart-pie-tiny")){return}if(c){b.addClass("chart-pie-compact");b.width(690)}else{b.removeClass("chart-pie-compact");b.width(830)}};a._applyResponsiveContentStage2=function(c){var d=$("#contentToolbar, #content-header").find(".button-responsive");if(c){d.addClass("button-notext")}else{d.removeClass("button-notext")}var b=$("#statsContainer .chart-pie");var e=parseInt(b.attr("rel"));if(c){b.addClass("chart-pie-compact");if(e>4){b.addClass("chart-pie-tiny")}b.width(510)}else{b.width(e>4?690:650);b.removeClass("chart-pie-tiny");if(e<=4){b.removeClass("chart-pie-compact")}}};a._applyResponsiveContentStage3=function(b){if(b){$("#content .hidden-xs").hide();$("#content col.status").addClass("status-xs");$("#content .visible-xs").show()}else{$("#content .visible-xs").hide();$("#content col.status").removeClass("status-xs");$("#content .hidden-xs").show()}};a._applyResponsiveQPaneStage1=function(d){var b=$("#qpane table.steps");if(d){b.addClass("steps-vertical")}else{b.removeClass("steps-vertical")}var c=$("#changes");if(d){$(".change-column-properties",c).addClass("change-column-properties-compact")}else{$(".change-column-properties",c).removeClass("change-column-properties-compact")}var e=$("#qpane .chart-line");if(e.length){if(d){e.addClass("chart-line-compact")}else{e.removeClass("chart-line-compact")}Highcharts.charts.forEach(function(f){if(!f){return}f.reflow()})}if(d){$("#qpane .hidden-sm").addClass("hidden")}else{$("#qpane .hidden-sm").removeClass("hidden")}};a._applyResponsiveQPaneStage2=function(b){if(b){$("#qpane .hidden-xs").addClass("hidden")}else{$("#qpane .hidden-xs").removeClass("hidden")}};a.loadActive=function(b,d){var c=$(".busy",$(d).prev("label"));c.show();App.Ajax.call({target:"/runs/ajax_render_active",arguments:{project_id:b,group_by:$("#groupbySelection").val(),order_by:$("#orderbySelection").val()},success:function(e){$("#active").html(e);c.hide()},error:function(e){c.hide();App.Ajax.handleError(e)}})};a.loadCompleted=function(b,c){$("#completedPaginationBusy").show();App.Ajax.call({target:"/runs/ajax_render_completed",arguments:{project_id:b,offset:c},success:function(d){$("#completed").html(d.runs);$("#completedPagination").html(d.pagination);$("#completedPaginationBusy").hide()},error:function(d){$("#completedPaginationBusy").hide();App.Ajax.handleError(d)}})};a.loadActivities=function(b,c){$("#activitiesPaginationBusy").show();App.Ajax.call({target:"/runs/ajax_render_activities",arguments:{run_id:b,offset:c},success:function(d){$("#activities").html(d.activities);$("#activitiesPagination").html(d.pagination);$("#activitiesPaginationBusy").hide()},error:function(d){$("#activitiesPaginationBusy").hide();App.Ajax.handleError(d)}})};a.selectActivityDays=function(b){App.Charts.selectTimeframe({success:function(c){a._reloadActivityChart(b,c)}})};a._reloadActivityChart=function(b,c){App.Ajax.call({target:"/runs/ajax_render_activity_chart",arguments:{run_id:b,days:c},success:function(d){App.Dialogs.closeTop();App.Charts.reload(App.Charts.activity,"#activityContainer",d)},error:function(d){App.Ajax.handleError(d)}})};a.rerun=function(c,b){a.rerunDialog({submit:function(d){App.Page.load("/runs/rerun/{0}/{1}&status_ids={2}&{3}",c,b?b:"",d.join(","),a._getStateOptions())}})};a.rerunDialog=function(b){$("#rerunForm input.selectionCheckbox").prop("checked",true);$("#rerunForm").unbind("submit");$("#rerunForm").submit(function(d){var c=App.Controls.Checkboxes.getValues("rerunStatuses");b.submit(c);return false});App.Dialogs.open({selector:"#rerunDialog"})};a.chooseSuite=function(b){$("#chooseSuiteForm").unbind("submit");$("#chooseSuiteForm").submit(function(d){var c=$("#choose_suite_id").val();if(b){App.Page.load("/runs/add/{0}/{1}",c,b)}else{App.Page.load("/runs/add/{0}",c)}return false});App.Dialogs.open({selector:"#chooseSuiteDialog",focusedControl:"#choose_suite_id"})};a.reuseDescription=function(b){$("#description").val(b)};a.selectCases=function(c){var b=new App.Suites.Select({project_id:a.project_id,suite_id:c,case_ids:a.case_ids,columns_custom:false,column_area_id:3,filters:a.filters});$("#selectCasesSubmit").unbind("click");$("#selectCasesSubmit").bind("click",function(){var d=b.getSelection().case_ids;a._selectCasesSubmit({suite_id:c,case_ids:d,success:function(e){b.close();a.filters=b.filters;a._selectCases(d,e)}});return false});b.open()};a._selectCasesSubmit=function(b){$("#selectCasesSubmit").addClass("button-busy");App.Ajax.call({target:"/runs/ajax_render_cases_info",arguments:{suite_id:b.suite_id,case_ids:b.case_ids},stop:function(){$("#selectCasesSubmit").removeClass("button-busy")},success:function(c){b.success(c)},error:function(c){App.Ajax.handleError(c)}})};a._selectCases=function(b,c){$("#includeSpecificInfo").html(c);$("#include_all").val("0");$("#case_ids").val(b.join(","));a.case_ids=b};a.selectCasesAll=function(){$("#include_all").val("1")};a.assignAllTo=function(){App.Users.selectDialog({submit:function(b){a._assignTo(b.id,false)}})};a.assignViewTo=function(){App.Users.selectDialog({submit:function(b){a._assignTo(b.id,true)}})};a._assignTo=function(b,c){$("#selectUserSubmit").addClass("button-busy");App.Ajax.call({target:"/runs/ajax_assign",arguments:{run_id:a.run_id,user_id:b,display:a.display,group_only:c,group_by:App.Tables.group_by,group_id:a.group_id,filters:a.filters,qpane_id:App.QPane.isVisible()?App.QPane.getCurrentRowID():null},stop:function(){$("#selectUserSubmit").removeClass("button-busy")},success:function(d){App.Dialogs.closeTop();a._reloadTests();if(d.qpane){App.QPane.update(d.qpane)}},error:function(d){App.Ajax.handleError(d)}})};a.subscribe=function(b){$("#unsubscribed .subscribe").hide();$("#unsubscribed .busy").show();App.Ajax.call({target:"/runs/ajax_subscribe",arguments:{run_id:b},success:function(c){App.Effects.replace("#unsubscribed","#subscribed");$("#unsubscribed .subscribe").show();$("#unsubscribed .busy").hide()},error:function(c){$("#unsubscribed .subscribe").show();$("#unsubscribed .busy").hide();App.Ajax.handleError(c)}})};a.unsubscribe=function(b){$("#subscribed .unsubscribe").hide();$("#subscribed .busy").show();App.Ajax.call({target:"/runs/ajax_unsubscribe",arguments:{run_id:b},success:function(c){App.Effects.replace("#subscribed","#unsubscribed");$("#subscribed .unsubscribe").show();$("#subscribed .busy").hide()},error:function(c){$("#subscribed .unsubscribe").show();$("#subscribed .busy").hide();App.Ajax.handleError(c)}})};a.applyQPane=function(b){App.QPane.init("tests");App.QPane.bindRowEvents({hide:a._hideQPane,show:a._showQPane,change:a._changeQPane});if(b){App.QPane.show()}};a._hideQPane=function(){a.columns_for_qpane=App.Tables.popColumns();a._updateForQPane(a.columns_for_qpane)};a._updateForQPane=function(b){if(App.Tables.matchesColumns(b)){return}var c=App.Tables.getColumnWidthDelta(b);if(c){App.Page.updateMinWidth(c)}if(a.initialized){a._reloadTests(a.display!="tree"?a.group_id:null)}};a._showQPane=function(){var b=App.Tables.columns_for_user;App.Tables.pushColumns(a.columns_for_qpane);a._updateForQPane(b)};a._changeQPane=function(c,b){App.Ajax.call({target:"/tests/ajax_render_qpane",reflow:true,arguments:{test_id:c},success:function(d){b(d);a.prev_id=null},error:function(d){App.Ajax.handleError(d)}})};a._checkQPane=function(){var c=a.backwards;if(!a.paginating&&c){var d=$("#groupPagination .pagination-current ~ a:last");if(d.length){d.click();return}}a.backwards=false;var b=a.group_id?$("#group-"+a.group_id):$(document);App.QPane.checkRow(b,c)};a.nextRow=function(c){if(a.display=="tree"){App.QPane.nextRow()}else{var b=$("tr.row:last");if(b.attr("rel")==App.QPane.getCurrentRowID()){if(!App.Ajax.isBusy()||c){a._nextRowLoadGroup()}}else{App.QPane.nextRow()}}};a._nextRowLoadGroup=function(){var b=$("#groupPagination .pagination-current").next("a");if(b.length){b.click()}else{a._nextGroup()}};a.prevRow=function(){if(a.display=="tree"){App.QPane.prevRow()}else{var b=$("tr.row:first");if(b.attr("rel")==App.QPane.getCurrentRowID()){if(!App.Ajax.isBusy()){a.backwards=true;a._prevRowLoadGroup()}}else{App.QPane.prevRow()}}};a._prevRowLoadGroup=function(){var b=$("#groupPagination .pagination-current").prev("a");if(b.length){b.click()}else{a._prevGroup()}};a.passRowAndNext=function(b){if(!b){return}if(a.can_pass){if(a.prev_id==b){return}}a.prev_id=b;App.Tests.addResultAndNext(a.project_id,b,Consts.statusPassed,a.can_pass)};a.applyTree=function(b){if(b!==undefined){var c=["#node-"+b]}else{var c=[]}$("#groupTree").jstree({core:{animation:0},ui:{select_limit:1,selected_parent_close:false,select_prev_on_delete:false,initially_select:c},plugins:["themes","ui","html_data"]}).bind("select_node.jstree",function(f,d){a.selectGroup(a._getTreeNodeID(d))}).bind("open_node.jstree",function(g,f){var d=a._getTreeNodeID(f);a._setExpandStateForGroup(d,true)}).bind("close_node.jstree",function(g,f){var d=a._getTreeNodeID(f);a._setExpandStateForGroup(d,false)})};a._getTreeNodeID=function(d){var b=d.args;var c=d.inst._get_node(b[0]);return c.attr("rel")};a._setExpandStateForGroup=function(c,b){App.Storage.setObjectItem("runs.groups.expands",a.run_id,c,b?1:0)};a._getExpandState=function(){return App.Storage.getObject("runs.groups.expands",a.run_id)};a._applyTreeHeight=function(){var b=$(window);b.scroll(a._setTreeHeight);b.resize(a._setTreeHeight);$.subscribe("body.changed","runs",a._setTreeHeight)};a._setTreeHeight=function(){var c=$("#groupTreeContent");if(c.length==0){return}var f=$("#sidebarSticky");var b;if(f.hasClass("sidebar-sticky")){b=$(window).height()-30-$("#sidebarToolbar").outerHeight()}else{var e=c.offset().top;var d=$("#sidebar");b=Math.min($(window).height()-(e-$(document).scrollTop()),d.height()-(e-d.offset().top))}b-=$("#goals-banner").height();c.height(b-15)};a.selectGroup=function(c){var b=$("#node-"+c);if(a.display=="tree"){b.children("a").removeClass("jstree-clicked");var d=$("#group-"+c);if(d.length){d[0].scrollIntoView();window.scrollBy(0,-a.scroll_offset)}a.group_id=c;a._setStateUrl()}else{if(a.group_id!=c){a.showGroup(a.run_id,c)}}};a.exportTestsCsv=function(b){a._exportTests(b,"csv")};a.exportTestsExcel=function(b){a._exportTests(b,"excel")};a._exportTests=function(b,d){var c=new App.ExportCsv({format:d,init:function(){a._exportLoadSections(b)}});c.open()};a._exportLoadSections=function(b){$("#exportCsvSectionsSelectedBusy").show();App.Ajax.call({target:"runs/ajax_render_section_list",arguments:{run_id:b,show_empty:false},stop:function(){$("#exportCsvSectionsSelectedBusy").hide()},success:function(c){$("#exportCsvSectionsSelection").html(c)},error:function(c){App.Ajax.handleError(c)}})};a._showTests=function(d){var c={run_id:a.run_id,display:a.display,group_id:a.group_id,include_sidebar:false,save_columns:false};var b=$.extend(c,d);App.Ajax.call({target:"/runs/ajax_render_tests",arguments:a._getGridArguments(b),success:function(e){if(b.display=="tree"||b.include_sidebar){a._injectTests(e)}else{$("#groupContainer").html(e)}a._onTestsLoaded(b);if(d.success){d.success()}a._checkQPane()},error:function(e){if(d.error){d.error(e)}App.Ajax.handleError(e)}})};a._injectTests=function(b){$("#groupContent").remove();$("#groupTreeContent").remove();$("#ajaxResponse").html(b);$("#groupTreeContent").appendTo("#groupTreeContainer");$("#groupContent").appendTo("#groupContainer");a._setTreeHeight()};a._onTestsLoaded=function(d){a.group_id=d.group_id||null;var b=d.display=="tree"||d.include_sidebar;if(b){if(a.group_id!==null){if($("#node-"+a.group_id).length==0){a.group_id=null}}if(a.group_id===null){if(a.display!="tree"){var c=$("#groupTree ul li:first");if(c.length>0){a.group_id=c.attr("rel")}}}a.applyTree(a.group_id)}a._disableMassActions();$(window).trigger("scroll");$.publish({"body.changed":null,"tests.loaded":{project_id:a.project_id}});a._syncToolbar();a._setStateUrl()};a._syncToolbar=function(){$("#orderBy .busy").hide();$("#orderByChange").removeClass("link link-dashed nolink");$("#orderByName").show();if(App.Tables.group_by=="cases:section_id"){$("#orderByAsc").hide();$("#orderByDesc").hide();$("#orderByReset").hide();$("#orderByName").hide();$("#orderByChange").addClass("link link-dashed");$("#orderByEmpty").show()}else{if(App.Tables.group_order=="desc"){$("#orderByAsc").hide();$("#orderByDesc").show()}else{$("#orderByDesc").hide();$("#orderByAsc").show()}$("#orderByChange").addClass("nolink");if(App.Tables.group_by=="tests:status_id"){$("#orderByName").text(lang("tests_status"))}else{$("#orderByName").text(App.Tables.getColumnName(App.Tables.group_by))}$("#orderByEmpty").hide();$("#orderByName").show();$("#orderByReset").show()}$("#orderByChange").show()};a._getGridArguments=function(b){return $.extend({columns:App.Tables.columns_for_user,group_by:App.Tables.group_by,group_order:App.Tables.group_order,filters:a.filters,user_ids:a.user_ids?a.user_ids.join(","):null},b)};a.showGroup=function(b,e,f){var d=$("#node-"+e);var c=d.children("a");a.paginating=f!==undefined;if(a.paginating){$("#paginationBusy").show()}else{c.addClass("jstree-loading")}a._showTests({run_id:b,group_id:e,offset:f,success:function(){$("#paginationBusy").hide();c.removeClass("jstree-loading")},error:function(g){$("#paginationBusy").hide();c.removeClass("jstree-loading")}})};a._nextGroup=function(){var b=App.Sections.next(a.group_id,a.display);if(b){App.QPane.clearRow();$("#groupTree").jstree("select_node",b,true)}};a._prevGroup=function(){var b=App.Sections.prev(a.group_id);if(b){App.QPane.clearRow();$("#groupTree").jstree("select_node",b,true)}};a._disableMassActions=function(){$("#massAssignSelected").hide();$("#massAssignSelectedDisabled").show();$("#massAddResult").hide();$("#massAddResultDisabled").show()};a.showInitial=function(){var c=$("#contentToolbar");if(!c.length){return}var b=$(window).height()-c.offset().top;var d=Math.max(Math.round(b/2-125),50);$("#contentLoading").css("padding-top",d);$("#contentLoading").show();a._showTests({include_sidebar:true,group_expands:a._getExpandState(),success:function(e){$("#contentLoading").hide();if(a.display!="tree"&&a.group_id){a._openParents(a.group_id)}}})};a._openParents=function(d){var c=$("#node-"+d);var b=c.parent("ul").parent("li");while(b.length>0){b.addClass("jstree-open");$("#groupTree").jstree("open_node",b);b=b.parent("ul").parent("li")}};a._reloadTests=function(b){a.group_id=b||null;$("#groupContent").remove();$("#groupTreeContent").remove();a.showInitial()};a._setStateUrl=function(){App.Page.replaceState("/runs/view/"+a.run_id,a._getStateOptions())};a._getStateOptions=function(){var b=App.Page.getQueryOptions();b.group_by=App.Tables.group_by;b.group_order=App.Tables.group_order;if(a.group_id!==null){b.group_id=a.group_id}else{delete b.group_id}return App.Page.formatQueryOptions(b)};a.selectTestColumns=function(c,b){App.Tables.selectColumns({group_id:c,project_id:b,area_id:App.QPane.isVisible()?7:2,submit:function(d){a._showTests(d)}})};a.setTestGrouping=function(c,b){App.Tables.setGrouping(c);if(b){$("#orderByChange").hide();$("#orderBy .busy").show()}a._showTests({group_id:null,include_sidebar:true,group_expands:a._getExpandState(),save_columns:true,error:function(){$("#orderBy .busy").hide();$("#orderByChange").show()}})};a.filterTests=function(c){var b=$("#filterByChange").bubble({bubble:"#filterTestsBubble",toggleEvent:"null"});a._filterLoad({show:function(){a._filterBind({bubble:b});b.show(c)}})};a._filterLoad=function(c){var b=$("#filterBy .busy");App.Ajax.call({target:"/runs/ajax_render_test_filter",arguments:{run_id:a.run_id,filters:a.filters},start:function(){$("#filterByChange").hide();b.show()},stop:function(){b.hide();$("#filterByChange").show()},success:function(d){$("#filterTestsContent").html(d);c.show()},error:function(d){App.Ajax.handleError(d)}})};a._filterBind=function(b){$("#filterTestsApply").click(function(){a._filterApply(b)});$("#filterTestsCancel").click(function(){a._filterCancel(b)})};a._filterApply=function(c){var b=App.Filters.getAll($("#filterTestsContent"));App.Ajax.call({target:"/runs/ajax_render_test_filter_info",arguments:{run_id:a.run_id,filters:b},start:function(){$("#filterTestsApply").addClass("button-busy")},stop:function(){$("#filterTestsApply").removeClass("button-busy")},success:function(d){a._filterSync(b,d);a._reloadTests();c.bubble.hide()},error:function(d){App.Ajax.handleError(d)}})};a._filterSync=function(b,c){$("#filterByInfo").hide();$("#filterByEmpty").hide();$("#filterByChange").removeClass("link link-dashed nolink");c=$.trim(c);if(c){$("#filterByChange").addClass("nolink");$("#filterByInfo").html(c);$("#filterByInfo").show();$("#filterByReset").show();a.filters=b}else{$("#filterByReset").hide();$("#filterByChange").addClass("link link-dashed");$("#filterByEmpty").show();a.filters=null}};a._filterCancel=function(b){b.bubble.hide()};a.filterReset=function(b){App.Ajax.call({target:"/runs/ajax_render_test_filter_info",arguments:{run_id:a.run_id,filters:null},start:function(){$("#filterByChange").hide();$("#filterBy .busy").show()},stop:function(){$("#filterBy .busy").hide();$("#filterByChange").show()},success:function(c){a._filterSync(null,"");a._reloadTests()},error:function(c){App.Ajax.handleError(c)}})};a.updateStats=function(b){var c=$("#statusChart").length>0;if(!c){return}App.Ajax.call({target:"/runs/ajax_render_stats",arguments:{run_id:b},success:function(d){App.Charts.reload(App.Charts.status,"#statsContainer",d);App.Responsive.invalidate()},error:function(d){App.Ajax.handleError(d)}})};a.updateGroupStats=function(d){var b={};var c=null;if(d.hasOwnProperty("test_id")){c=$("#row-"+d.test_id).closest(".grid-container")}else{c=$(".grid-container")}c.each(function(){var f=$(this).attr("rel");var e=[];$(".js-status",$("#grid-"+f)).each(function(){e.push($(this).attr("rel"))});b[f]=e});a._updateGroupStats(b)};a._updateGroupStats=function(b){App.Ajax.call({target:"/runs/ajax_render_group_stats",blockUI:false,arguments:{stats:b},success:function(c){$(c).each(function(){var d=$(this);$("#"+d.attr("rel")).empty().append(d)})},error:function(c){}})};App.ready(function(){$.subscribe("tests.changed","runs",function(b){a.updateStats(b.run_id);a.updateGroupStats(b);a._checkQPane()});$.subscribe("body.drag_started","runs",function(){var b=App.Dialogs.getActive();if(b){return}if(App.QPane.isVisible()){App.Tests.addCommentNoDialogActivate(App.QPane.getCurrentRowID())}})});a.loadDefects=function(b){$("#showDefects .showAll").hide();$("#showDefects .busy").show();App.Ajax.call({target:"/runs/ajax_render_defects",arguments:{run_id:b},stop:function(){$("#showDefects .busy").hide()},success:function(c){$("#defects").html(c)},error:function(c){App.Ajax.handleError(c)}})}};App.Suites=new function(){var a=this;a.project_id=null;a.suite_id=null;a.allow_dnd=false;a.can_dnd=false;a.group_id=null;a.display=null;a.scroll_offset=0;a.filters=null;a.filters_for_copy=null;a.columns_for_copy=null;a.columns_for_qpane=null;a.paginating=false;a.backwards=false;a.initialized=false;a.applyActions=function(){a._applyLinkBind();a._applyTreeHeight()};a._applyLinkBind=function(){if(a.display!="tree"){return}$.subscribe("page.set_get","suites",function(c){var b=$(c.link);var d=b.closest(".group");if(d.length==0){d=a._findVisibleGroup();if(!d){return}else{if(!d.prev().length&&!d.parent().closest(".group").length){return}}}a.group_id=d.attr("rel");a._setStateUrl()})};a._findVisibleGroup=function(){var e=$(window).scrollTop();var b=$("div.group");var f=null,c=null,d=null;$.each(b,function(g,h){var i=$(h);var j=i.offset().top-e;if(j>=0){if(f!==null){if(Math.abs(f)0){n=i.attr("rel")}break;case"after":n=h.attr("rel");break;case"inside":var f=h.children("ul").children("li:last");if(f.length>0){n=f.attr("rel")}break}App.Sections.drop(g.e.originalEvent,{section_id:j,droppable_id:h.attr("rel"),parent_id:m,after_id:n})})};a._getTreeNodeID=function(d){var b=d.args;var c=d.inst._get_node(b[0]);return c.attr("rel")};a._setExpandStateForGroup=function(c,b){App.Storage.setObjectItem("suites.groups.expands",a.suite_id,c,b?1:0)};a._getExpandState=function(){return App.Storage.getObject("suites.groups.expands",a.suite_id)};a._applyTreeHeight=function(){var b=$(window);b.scroll(a._setTreeHeight);b.resize(a._setTreeHeight);$.subscribe("body.changed","suites",a._setTreeHeight)};a._setTreeHeight=function(){var c=$("#groupTreeContent");if(c.length==0){return}var f=$("#sidebarSticky");var b;if(f.hasClass("sidebar-sticky")){b=$(window).height()-30-$("#sidebarToolbar").outerHeight()}else{var e=c.offset().top;var d=$("#sidebar");b=Math.min($(window).height()-(e-$(document).scrollTop()),d.height()-(e-d.offset().top))}b-=$("#goals-banner").height();c.height(b-15)};a.selectGroup=function(d){var c=$("#node-"+d);if(a.display=="tree"){c.children("a").removeClass("jstree-clicked");var b=$("#section-"+d);if(b.length){b[0].scrollIntoView();window.scrollBy(0,-a.scroll_offset)}a.group_id=d;a._setStateUrl()}else{if(a.group_id!=d){a.showGroup(a.suite_id,d)}}};a._showCases=function(d){var c={suite_id:a.suite_id,display:a.display,group_id:a.group_id,include_sidebar:false,save_columns:false};var b=$.extend(c,d);App.Ajax.call({target:"/suites/ajax_render_cases",arguments:a._getGridArguments(b),success:function(e){if(b.display=="tree"||b.include_sidebar){a._injectCases(e)}else{$("#groupContainer").html(e)}a._onCasesLoaded(b);if(d.success){d.success()}a._checkQPane()},error:function(e){if(d.error){d.error()}App.Ajax.handleError(e)}})};a._getGridArguments=function(b){return $.extend({columns:App.Tables.columns_for_user,group_by:App.Tables.group_by,group_order:App.Tables.group_order,filters:a.filters},b)};a._injectCases=function(b){$("#groupContent").remove();$("#groupTreeContent").remove();$("#ajaxResponse").html(b);$("#groupTreeContent").appendTo("#groupTreeContainer");$("#groupContent").appendTo("#groupContainer");a._setTreeHeight()};a._onCasesLoaded=function(d){if(App.Tables.group_by=="cases:section_id"){a.can_dnd=true;$("#addSectionInline").show()}else{a.can_dnd=false;$("#addSectionInline").hide()}a.group_id=d.group_id||null;var b=d.display=="tree"||d.include_sidebar;if(b){if(a.group_id!==null){if($("#node-"+a.group_id).length==0){a.group_id=null}}if(a.group_id===null){if(a.display!="tree"){var c=$("#groupTree ul li:first");if(c.length>0){a.group_id=c.attr("rel")}}}a.applyTree(a.group_id)}$(window).trigger("scroll");$.publish({"body.changed":null,"cases.loaded":{project_id:a.project_id}});a._syncToolbar();a._setStateUrl()};a._syncToolbar=function(){if(App.Tables.group_by=="cases:section_id"){$("#addSectionDisabled").hide();$("#addSection").show()}else{$("#addSection").hide();$("#addSectionDisabled").show()}$("#orderBy .busy").hide();$("#orderByChange").removeClass("link link-dashed nolink");if(App.Tables.group_by=="cases:section_id"){$("#orderByAsc").hide();$("#orderByDesc").hide();$("#orderByReset").hide();$("#orderByName").hide();$("#orderByChange").addClass("link link-dashed");$("#orderByEmpty").show()}else{if(App.Tables.group_order=="desc"){$("#orderByAsc").hide();$("#orderByDesc").show()}else{$("#orderByDesc").hide();$("#orderByAsc").show()}$("#orderByChange").addClass("nolink");$("#orderByName").text(App.Tables.getColumnName(App.Tables.group_by));$("#orderByEmpty").hide();$("#orderByName").show();$("#orderByReset").show()}$("#orderByChange").show()};a.onCasesAdded=function(){$.publish({"body.changed":null,"cases.loaded":{project_id:a.project_id}});a.refreshSidebarStats();a._checkQPane()};a.onCasesDeleted=function(){$.publish("body.changed");a.refreshSidebarStats();a._checkQPane()};a.showGroup=function(f,d,e){var c=$("#node-"+d);var b=c.children("a");a.paginating=e!==undefined;if(a.paginating){$("#paginationBusy").show()}else{b.addClass("jstree-loading")}a._showCases({suite_id:f,group_id:d,offset:e,success:function(){$("#paginationBusy").hide();b.removeClass("jstree-loading");b.addClass("jstree-clicked")},error:function(g){$("#paginationBusy").hide();b.removeClass("jstree-loading")}})};a._nextGroup=function(){var b=App.Sections.next(a.group_id,a.display);if(b){App.QPane.clearRow();$("#groupTree").jstree("select_node",b,true)}};a._prevGroup=function(){var b=App.Sections.prev(a.group_id);if(b){App.QPane.clearRow();$("#groupTree").jstree("select_node",b,true)}};a.refreshSidebarStats=function(){App.Ajax.call({target:"suites/ajax_render_sidebar_stats",blockUI:false,arguments:{suite_id:a.suite_id},success:function(b){$("#sidebarInfo").html(b)},error:function(b){App.Ajax.handleError(b)}})};a.refreshGroupCount=function(c){var d=$("tr.caseRow",$("#grid-"+c)).length;var e=d;var b=$("#sectionCount-"+c);if(b.text()!=e){b.text(e)}};a.refreshGroupCounts=function(){$(".grid-container").each(function(){var b=$(this).attr("rel");a.refreshGroupCount(b)})};a.showInitial=function(){var b=$(window).height()-$("#contentToolbar").offset().top;var c=Math.max(Math.round(b/2-125),50);$("#contentLoading").css("padding-top",c);$("#contentLoading").show();a._showCases({include_sidebar:true,group_expands:a._getExpandState(),success:function(d){$("#contentLoading").hide();if(a.display!="tree"&&a.group_id){a._openParents(a.group_id)}}})};a._openParents=function(d){var c=$("#node-"+d);var b=c.parent("ul").parent("li");while(b.length>0){b.addClass("jstree-open");$("#groupTree").jstree("open_node",b);b=b.parent("ul").parent("li")}};a._reloadCases=function(b){a.group_id=b||null;$("#groupContent").remove();$("#groupTreeContent").remove();a.showInitial()};a._setStateUrl=function(){App.Page.replaceState("/suites/view/"+a.suite_id,a.getStateOptions())};a.getStateOptions=function(){var b=App.Page.getQueryOptions();b.group_by=App.Tables.group_by;b.group_order=App.Tables.group_order;if(a.group_id!==null){b.group_id=a.group_id}else{delete b.group_id}return App.Page.formatQueryOptions(b)};a.selectCaseColumns=function(c,b){App.Tables.selectColumns({group_id:c,project_id:b,area_id:App.QPane.isVisible()?6:1,submit:function(d){a._showCases(d)}})};a.setCaseGrouping=function(c,b){App.Tables.setGrouping(c);if(b){$("#orderByChange").hide();$("#orderBy .busy").show()}a._showCases({group_id:null,include_sidebar:true,group_expands:a._getExpandState(),save_columns:true,error:function(){$("#orderBy .busy").hide();$("#orderByChange").show()}})};a._createFilter=function(b){return new App.Suites.Filter({event:b,suite_id:a.suite_id,filters:a.filters,save_filters:true,changed:function(c){a.filters=c;a._reloadCases()}})};a.filterCases=function(c){var b=a._createFilter(c);b.open()};a.filterCasesReset=function(){var b=a._createFilter();b.reset()};a.applyEstimates=function(){$("#estimatesLink").bubble({bubble:"#estimatesBubble",inContainer:true})};a.importCases=function(b){a._importDialog({submit:function(){a._importSubmit(b)}})};a._importDialog=function(b){App.Validation.hideErrors();$("#import").val("");$("#importForm").unbind("submit");$("#importSubmit").removeClass("button-busy");$("#importForm").submit(function(c){App.Validation.hideErrors();b.submit();return false});App.Dialogs.open({selector:"#importDialog",focusedControl:"#import"})};a._importSubmit=function(b){$("#importSubmit").addClass("button-busy");App.Import.upload({target:"suites/ajax_import",data:{suite_id:b,is_update:$("#importUpdate").is(":checked")?1:0},fileElementId:"import",success:function(d,c){$("#importSubmit").removeClass("button-busy");if(d.result){App.Dialogs.close("#importDialog");App.Page.load("/suites/view/{0}",b)}else{App.Ajax.handleError(d,"#importErrors")}},error:function(d,c,f){$("#importSubmit").removeClass("button-busy");App.Ajax.handleError()}})};a.importCasesCsv=function(c){var b=new App.Suites.ImportCsv({suite_id:c});App.Ajax.call({target:"suites/ajax_render_section_list",arguments:{suite_id:c},success:function(d){$("#importCsvImportTo").html(d)},error:function(d){App.Ajax.handleError(d)}});b.open()};a.exportCasesCsv=function(b){a._exportCases(b,"csv")};a.exportCasesExcel=function(b){a._exportCases(b,"excel")};a._exportCases=function(d,c){var b=new App.ExportCsv({format:c,init:function(){a._exportLoadSections(d)}});b.open()};a._exportLoadSections=function(b){$("#exportCsvSectionsSelectedBusy").show();App.Ajax.call({target:"suites/ajax_render_section_list",arguments:{suite_id:b,show_empty:false},stop:function(){$("#exportCsvSectionsSelectedBusy").hide()},success:function(c){$("#exportCsvSectionsSelection").html(c)},error:function(c){App.Ajax.handleError(c)}})};a.copyCases=function(d){var b=new App.Suites.Select({project_id:a.project_id,suite_id:null,columns:a.columns_for_copy,columns_custom:true,column_area_id:5,filters:a.filters});a._copyCasesReset();$("#copyCasesSuite").unbind("change").change(function(){var e=$(this).val();a._copyCasesSuite(b,e)});var c=function(e,g){var f=b.getSelection();e.addClass("button-busy");a._copySubmit({target_suite_id:d,source_suite_id:$("#copyCasesSuite").val(),section_ids:f.section_ids,case_ids:f.case_ids,section_mode:$("#copyCasesSections").val(),section_id:$("#copyCasesAppendTo").val(),is_move:g})};$("#copyCasesButton, #moveCasesButton").unbind("click").click(function(){var e=$(this);var f=e.attr("rel")=="move";if(f){App.Dialogs.remove("l:suites_copycases_move_confirm","l:suites_copycases_move_confirm_checkbox",null,null,function(){c(e,true)})}else{c(e,false)}});App.Ajax.call({target:"suites/ajax_render_section_list",arguments:{suite_id:d},success:function(e){$("#copyCasesAppendTo").html(e)},error:function(e){App.Ajax.handleError(e)}});b.open()};a._copySubmit=function(b){App.Ajax.call({target:"suites/"+(b.is_move?"ajax_move_cases":"ajax_copy_cases"),arguments:{target_suite_id:b.target_suite_id,source_suite_id:b.source_suite_id,section_ids:b.section_ids,case_ids:b.case_ids,section_mode:b.section_mode,section_id:b.section_id},stop:function(){$("#copyCasesButton").removeClass("button-busy");$("#moveCasesButton").removeClass("button-busy")},success:function(c){App.Page.load("/suites/view/{0}",b.target_suite_id)},error:function(c){App.Ajax.handleError(c)}})};a._copyCasesReset=function(){$("#copyCasesSuite").val("");$("#copyCasesButton").hide();$("#copyCasesDisabledButton").show();$("#moveCasesButton").hide();$("#moveCasesDisabledButton").show();$("#copyCasesButton").removeClass("button-busy");$("#moveCasesButton").removeClass("button-busy");$("#copyCasesSections").val("2")};a._copyCasesSuite=function(b,c){$("#selectCasesDoc").hide();$("#selectCasesContent").hide();$("#selectCasesIntro").hide();$("#copyCasesButton").hide();$("#copyCasesDisabledButton").show();$("#moveCasesButton").hide();$("#moveCasesDisabledButton").show();if(!c){$("#selectCasesIntro").show();return}if(c==a.suite_id){App.Ajax.call({target:"suites/ajax_render_copy_doc",success:function(d){$("#selectCasesDoc").html(d);$("#selectCasesDoc").show()},error:function(d){App.Ajax.handleError(d)}})}else{b.load(c,{success:function(){$("#copyCasesDisabledButton").hide();$("#copyCasesButton").show();$("#moveCasesDisabledButton").hide();if($("#can_move").val()=="1"){$("#moveCasesButton").show()}}})}};a.editDescription=function(b){a._load({suite_id:b,success:function(c){App.Validation.hideErrors();$("#editSuiteDescription").val(c.description);$("#editSuiteForm").unbind("submit");$("#editSuiteForm").submit(function(d){App.Validation.hideErrors();a._editDescription({suite_id:b,description:$.trim($("#editSuiteDescription").val())});return false});App.Dialogs.open({selector:"#editSuiteDialog",focusedControl:"#editSuiteDescription",selectedControl:"#editSuiteDescription"})}})};a._editDescription=function(b){$("#editSuiteSubmit").addClass("button-busy");App.Ajax.call({target:"/suites/ajax_update",arguments:{suite_id:b.suite_id,description:b.description},stop:function(){$("#editSuiteSubmit").removeClass("button-busy")},success:function(){App.Dialogs.closeTop();App.Page.load("/suites/view/"+b.suite_id)},error:function(c){App.Ajax.handleError(c,"#editSuiteErrors")}})};a._load=function(b){$("#editDescriptionBusy").show();App.Ajax.call({target:"/suites/ajax_get",arguments:{suite_id:b.suite_id},stop:function(){$("#editDescriptionBusy").hide()},success:function(c){b.success(c)},error:function(c){App.Ajax.handleError(c)}})};a.toggleDetails=function(e){var b=$("#suite-"+e);var d=$(".details",b).is(":visible");if(d){a._hideDetails(b,e)}else{var c=$(".details .table",b).length>0;if(c){a._showDetails(b)}else{a._loadDetails(b,e)}}};a._showDetails=function(b){App.Effects.show($(".details",b));$(".expand",b).hide();$(".collapse",b).show()};a._hideDetails=function(b){App.Effects.hide($(".details",b));$(".collapse",b).hide();$(".expand",b).show()};a._loadDetails=function(b,c){App.Ajax.call({target:"suites/ajax_get_details",arguments:{suite_id:c},start:function(){$(".buttons",b).hide();$(".busy",b).show()},stop:function(){$(".busy",b).hide();$(".buttons",b).show()},success:function(d){$(".details",b).append(d);a._showDetails(b)},error:function(d){App.Ajax.handleError(d)}})};a.addBaseline=function(b){App.Validation.hideErrors();$("#addBaselineName").val("");$("#addBaselineForm").unbind("submit");$("#addBaselineForm").submit(function(c){App.Validation.hideErrors();a._addBaseline({project_id:b,name:$.trim($("#addBaselineName").val()),parent_id:$("#addBaselineParent").val()});return false});$("#addBaselineProject").unbind("change").change(function(){var c=$("#addBaselineProject").val();a._addBaselineLoad(c)});App.Dialogs.open({selector:"#addBaselineDialog",focusedControl:"#addBaselineName",selectedControl:"#addBaselineName"})};a._addBaseline=function(b){$("#addBaselineSubmit").addClass("button-busy");App.Ajax.call({target:"/suites/ajax_add_baseline",arguments:{project_id:b.project_id,name:b.name,parent:b.parent_id},stop:function(){$("#addBaselineSubmit").removeClass("button-busy")},success:function(){App.Dialogs.closeTop();App.Page.load("/suites/overview/"+b.project_id)},error:function(c){App.Ajax.handleError(c,"#addBaselineErrors")}})};a._addBaselineLoad=function(b){$("#addBaselineParentBusy").show();App.Ajax.call({target:"/suites/ajax_render_baselines",arguments:{project_id:b},stop:function(){$("#addBaselineParentBusy").hide()},success:function(c){$("#addBaselineParent").html(c);$("#addBaselineParent").val("")},error:function(c){App.Ajax.handleError(c)}})};a.loadCompletedRuns=function(b){$("#showCompleted .showAll").hide();$("#showCompleted .busy").show();App.Ajax.call({target:"/suites/ajax_get_completed_runs",arguments:{suite_id:b},stop:function(){$("#showCompleted .busy").hide()},success:function(c){$("#completed").html(c)},error:function(c){App.Ajax.handleError(c)}})}};App.Suites.ImportCsv=function(b){var a=this;a.suite_id=b.suite_id;a.step=1;a.step2_changed=false;a.step3_changed=false;a.csvfile_id=null;a.mapfile_id=null;a.skip_empty=null;a.layout_format=null;a.layout_break=null;a.columns=null;a.values=null;a.open=function(){App.Validation.hideErrors();a._reset();a._bindPagination();a._bindStep1();App.Dialogs.open({selector:"#importCsvDialog"})};a._reset=function(){$("#importCsvFile").val("");$("#importCsvFileSuccess").hide();$("#importCsvFileDesc").hide();$("#importCsvFile").show();$("#importCsvMappingFile").val("");$("#importCsvMappingCreate").prop("checked",true);$("#importCsvMappingFile").show();$("#importCsvMappingFileSuccess").hide();$("#importCsvMappingFileContainer").hide();a._hideImport();a._hideClose();a._hidePrev();a._showNext();a._showCancel();$("#importCsvStep4").remove();$("#importCsvStep3").remove();$("#importCsvStep2").remove();$("#importCsvStep1").show()};a._showNext=function(){$("#importCsvNext").prop("disabled",false).addClass("dialog-action-default").show()};a._hideNext=function(){$("#importCsvNext").prop("disabled",true).removeClass("dialog-action-default").hide()};a._showImport=function(){$("#importCsvImport").prop("disabled",false).addClass("dialog-action-default").show()};a._hideImport=function(){$("#importCsvImport").prop("disabled",true).removeClass("dialog-action-default").hide()};a._showClose=function(){$("#importCsvClose").prop("disabled",false).addClass("dialog-action-default").show()};a._hideClose=function(){$("#importCsvClose").prop("disabled",true).removeClass("dialog-action-default").hide()};a._showPrev=function(){$("#importCsvPrev").prop("disabled",false).show()};a._hidePrev=function(){$("#importCsvPrev").prop("disabled",true).hide()};a._showCancel=function(){$("#importCsvCancel").show()};a._hideCancel=function(){$("#importCsvCancel").hide()};a._bindPagination=function(){$("#importCsvNext, #importCsvPrev, #importCsvImport, #importCsvClose").unbind("click").click(function(){$("#importCsvForm").data("event",$(this).attr("rel"))});var c=$("#importCsvForm");c.data("event","");c.unbind("submit").submit(function(){App.Validation.hideErrors();switch($(this).data("event")){case"next":a._next();break;case"import":a._import();break;case"previous":a._previous();break;case"close":a._close();break;default:switch(a.step){case 3:a._import();break;case 4:a._close();break;default:a._next();break}break}$(this).data("event","");return false})};a._bindStep1=function(){$("#importCsvMappingCreate").unbind("click").click(function(){$("#importCsvMappingFileContainer").hide()});$("#importCsvMappingLoad").unbind("click").click(function(){$("#importCsvMappingFileContainer").show()});$("#importCsvFileDelete").unbind("click").click(function(){a.csvfile_id=null;$("#importCsvFileSuccess").hide();$("#importCsvFile").show();$("#importCsvFileDesc").show()});$("#importCsvMappingFileDelete").unbind("click").click(function(){a.mapfile_id=null;$("#importCsvMappingFileSuccess").hide();$("#importCsvMappingFile").show()});$("#importCsvDialog").off("change","#importCsvFile").on("change","#importCsvFile",function(){a._uploadFile({element:"importCsvFile",id:"csvfile_id",success:function(c){$("#importCsvFile").hide();$("#importCsvFileDesc").hide();$("#importCsvFileSuccess").show()}})});$("#importCsvDialog").off("change","#importCsvMappingFile").on("change","#importCsvMappingFile",function(){a._uploadFile({element:"importCsvMappingFile",id:"mapfile_id",success:function(c){a._loadOptions(c)}})})};a._loadOptions=function(c){$("#importCsvMappingFileBusy").show();App.Ajax.call({target:"/suites/ajax_get_import_csv_options",arguments:{mapfile_id:c},stop:function(){$("#importCsvMappingFileBusy").hide()},success:function(d){$("#importCsvMappingFile").hide();$("#importCsvMappingFileSuccess").show();$("#importCsvEncoding").val(d.encoding);if(d.delimiter=="\t"){d.delimiter="\\t"}$("#importCsvDelimiter").val(d.delimiter);$("#importCsvStartRow").val(d.start_row);$("#importCsvHasHeader").prop("checked",d.has_header);if(d.template_id){$("#importCsvTemplate").val(d.template_id)}},error:function(d){a.mapfile_id=null;App.Ajax.handleError(d,"#importCsvErrors")}})};a._bindStep2=function(){$("#importCsvLayoutSingle").unbind("click").click(function(){$("#importCsvLayoutMultiBreakContainer").hide()});$("#importCsvLayoutMulti").unbind("click").click(function(){$("#importCsvLayoutMultiBreakContainer").show()});$("#importCsvStep2 :input").change(function(){a.step2_changed=true})};a._bindStep3=function(){$("#importCsvStep3 :input").change(function(){a.step3_changed=true})};a._bindStep4=function(){$("#importCsvConfigLink").unbind("click").click(function(){var c=a._getStepArguments();$("#importCsvConfigEncoding").val(c.encoding);$("#importCsvConfigDelimiter").val(c.delimiter);$("#importCsvConfigStartRow").val(c.start_row);$("#importCsvConfigHasHeader").val(c.has_header?1:0);$("#importCsvConfigTemplate").val(c.template_id);$("#importCsvConfigSkipEmpty").val(c.skip_empty?1:0);$("#importCsvConfigLayoutFormat").val(c.layout_format);$("#importCsvConfigLayoutBreak").val(c.layout_break);$("#importCsvConfigColumns").val(JSON.stringify(c.columns));$("#importCsvConfigValues").val(JSON.stringify(c.values));$("#importCsvConfigForm").submit();return false})};a._uploadFile=function(d){a[d.id]=null;var c="#"+d.element;$(c+"Busy").show();App.Import.upload({target:"attachments/ajax_add_for_user",data:{element:d.element},fileElementId:d.element,success:function(f,e){$(c+"Busy").hide();if(f.result){a[d.id]=f.id;if(d.success){d.success(f.id)}}else{App.Ajax.handleError(f,"#importCsvErrors")}},error:function(g,f,h){$(c+"Busy").hide();App.Ajax.handleError()}})};a._getStepArguments=function(){var c=$.extend({suite_id:a.suite_id},a._getStep1());if(a.step>=2){$.extend(c,a._getStep2())}if(a.step>=3){$.extend(c,a._getStep3())}return c};a._getStep1=function(){return{csvfile_id:a.csvfile_id,mapfile_enabled:$("#importCsvMappingLoad").is(":checked"),mapfile_id:a.mapfile_id,section_id:$("#importCsvImportTo").val(),encoding:$("#importCsvEncoding").val(),delimiter:$("#importCsvDelimiter").val(),start_row:$("#importCsvStartRow").val(),has_header:$("#importCsvHasHeader").is(":checked"),template_id:$("#importCsvTemplate").val(),skip_empty:a.skip_empty,layout_format:a.layout_format,layout_break:a.layout_break,columns:a.columns}};a._getStep2=function(){var c={};$("#importCsvColumns tr.mapping").each(function(d,e){var f=$(e);c[f.attr("rel")]=f.find("select").val()});return{layout_format:$("#importCsvLayoutSingle").is(":checked")?"single":"multi",layout_break:$("#importCsvLayoutMultiBreak").val(),skip_empty:$("#importCsvSkipEmpty").is(":checked"),columns:c,values:a.values}};a._getStep3=function(){var c={};$("#importCsvValues h2.mapping").each(function(d,e){var i=$(e);var h=i.attr("rel");var k="#importCsvValue"+h;var j=parseInt(i.attr("type"));var g=null;switch(j){case 1:case 2:case 6:case 7:g={remove_html:$(k+"RemoveHtml").is(":checked")};break;case 3:case 4:case 8:var f={};$(k+"Mapping tr.mapping").each(function(l,m){var n=$(m);f[n.attr("rel")]=n.find("select").val()});g={mapping:f};break;case 5:g={date_format:$(k+"DateFormat").val()};break}if(g){c[i.attr("rel")]=g}});return{values:c}};a._next=function(){$("#importCsvNext").addClass("button-busy");App.Ajax.call({target:"/suites/ajax_render_import_csv_step"+(a.step+1),arguments:a._getStepArguments(),stop:function(){$("#importCsvNext").removeClass("button-busy")},success:function(c){$("#importCsvStep"+a.step).hide();$("#importCsvSteps").append(c);a.step++;a._showPrev();switch(a.step){case 2:a._bindStep2();break;case 3:a._bindStep3();break;case 4:a._hideNext();a._showImport();break}},error:function(c){App.Ajax.handleError(c,"#importCsvErrors")}})};a._previous=function(){$("#importCsvPrev").addClass("button-busy");if((a.step==2&&a.step2_changed)||(a.step==3&&a.step3_changed)){App.Ajax.call({target:"/suites/ajax_validate_import_csv_step"+a.step,arguments:a._getStepArguments(),stop:function(){$("#importCsvPrev").removeClass("button-busy")},success:function(d){switch(a.step){case 3:var c=a._getStep3();a.values=c.values;break;case 2:var c=a._getStep2();a.skip_empty=c.skip_empty;a.layout_format=c.layout_format;a.layout_break=c.layout_break;a.columns=c.columns;break}a._previousActivate()},error:function(c){App.Ajax.handleError(c,"#importCsvErrors")}})}else{a._previousActivate();$("#importCsvPrev").removeClass("button-busy")}};a._previousActivate=function(){$("#importCsvStep"+a.step).hide();$("#importCsvStep"+(a.step-1)).show();$("#importCsvStep"+a.step).remove();a.step--;if(a.step==1){a._hidePrev()}a._hideImport();a._showNext()};a._import=function(){$("#importCsvImport").addClass("button-busy");App.Ajax.call({target:"/suites/ajax_import_csv",arguments:a._getStepArguments(),stop:function(){$("#importCsvImport").removeClass("button-busy")},success:function(c){$("#importCsvStep"+a.step).hide();$("#importCsvSteps").append(c);App.Dialogs.setWidth("#importCsvDialog",525);a.step++;a._bindStep4();a._hidePrev();a._hideImport();a._hideCancel();a._showClose()},error:function(c){App.Ajax.handleError(c,"#importCsvErrors")}})};a._close=function(){App.Dialogs.closeTop();App.Page.load("/suites/view/{0}",a.suite_id)}};App.Suites.Filter=function(b){var a=this;a.suite_id=b.suite_id;a.filters=b.filters;a.save_filters=b.save_filters;a.changed=b.changed;a.event=b.event;a.open=function(d){var c=$("#filterByChange").bubble({bubble:"#filterCasesBubble",toggleEvent:"null"});a._load({show:function(){a._bind({bubble:c});c.show(a.event)}})};a._load=function(d){var c=$("#filterBy .busy");App.Ajax.call({target:"/suites/ajax_render_case_filter",arguments:{suite_id:a.suite_id,filters:a.filters},start:function(){$("#filterByChange").hide();c.show()},stop:function(){c.hide();$("#filterByChange").show()},success:function(e){$("#filterCasesContent").html(e);d.show()},error:function(e){App.Ajax.handleError(e)}})};a._bind=function(c){$("#filterCasesApply").click(function(){a._apply(c);return false});$("#filterCasesCancel").click(function(){a._cancel(c);return false})};a._apply=function(d){var c=App.Filters.getAll($("#filterCasesContent"));App.Ajax.call({target:"/suites/ajax_render_case_filter_info",arguments:{suite_id:a.suite_id,filters:c,save_filters:a.save_filters},start:function(){$("#filterCasesApply").addClass("button-busy")},stop:function(){$("#filterCasesApply").removeClass("button-busy")},success:function(e){a._sync(c,e);a._changed();d.bubble.hide()},error:function(e){App.Ajax.handleError(e)}})};a._sync=function(c,d){$("#filterByInfo").hide();$("#filterByEmpty").hide();$("#filterByChange").removeClass("link link-dashed nolink");d=$.trim(d);if(d){$("#filterByChange").addClass("nolink");$("#filterByInfo").html(d);$("#filterByInfo").show();$("#filterByReset").show();a.filters=c}else{$("#filterByReset").hide();$("#filterByChange").addClass("link link-dashed");$("#filterByEmpty").show();a.filters=null}};a._changed=function(){a.changed(a.filters)};a._cancel=function(c){c.bubble.hide()};a.reset=function(){App.Ajax.call({target:"/suites/ajax_render_case_filter_info",arguments:{suite_id:a.suite_id,filters:null,save_filters:a.save_filters},start:function(){$("#filterByChange").hide();$("#filterBy .busy").show()},stop:function(){$("#filterBy .busy").hide();$("#filterByChange").show()},success:function(c){a._sync(null,"");a._changed()},error:function(c){App.Ajax.handleError(c)}})}};App.Suites.Select=function(b){var a=this;a.project_id=b.project_id;a.suite_id=b.suite_id;a.section_id=null;a.columns=b.columns;a.columns_custom=b.columns_custom;a.column_area_id=b.column_area_id;a.filters=b.filters;a.splitter1=null;a.case_ids=b.case_ids;a.outline=[];a.selection=[];a.dialog=$("#selectCasesDialog");a.open=function(){if(a.columns_custom){App.Tables.pushColumns(a.columns)}$("#selectCasesContent").html("");$("#selectCasesContent").hide();$("#selectCasesProgress").hide();$("#selectCasesClose").unbind("click");$("#selectCasesClose").bind("click",function(c){a.close()});App.Dialogs.open({minWidth:750,minHeight:550,resizable:true,resizeStop:a._dialogResized,selector:"#selectCasesDialog"});if(a.suite_id){a._load()}};a.close=function(){if(a.columns_custom){App.Tables.popColumns()}App.Dialogs.closeTop()};a.load=function(d,c){a.suite_id=d;a.case_ids=[];a._load(c)};a.getSelection=function(){return{outline:a.selection,section_ids:a._getSelectedSections(),case_ids:a._getSelectedCases()}};a._getSelectedCases=function(c){var e=null;if(c){e=[c]}else{e=Object.keys(a.selection)}var d=[];$.each(e,function(f,g){if(a.selection[g]){d=d.concat(Object.keys(a.selection[g]))}});return d};a._getSelectedSections=function(){var c=[];$("#selectCasesTree li input").each(function(){if(this.checked||this.indeterminate){c.push($(this).attr("rel"))}});return c};a._load=function(f){var d=$("#selectCasesContent");var e=$("#selectCasesProgress");var c=a.dialog.find(".dialog-body").outerHeight();e.css("padding-top",Math.round((c/2)-60)+"px");e.show();d.hide();App.Ajax.call({target:"/suites/ajax_render_select",arguments:a._getGridArguments({suite_id:a.suite_id,case_ids:a.case_ids,filters:a.filters}),stop:function(){e.hide()},success:function(g){a._show(g);a.outline=outline;a.selection=selection;a._init();if(f){f.success()}},error:function(g){App.Ajax.handleError(g)}})};a._show=function(d){var c=$("#selectCasesContent");c.html(d);c.show()};a._init=function(){a._bind();a._applyTree();if(a.case_ids){a._applySelection()}a.splitter1=new App.Suites.Select.Splitter({splitter:"#selectCasesSplitter1",container:"#selectCasesTree",neighbor:"#selectCasesMain",orientation:"right",min:250,max:500,resized:a._splitterResized})};a._bind=function(){a._bindPagination();a._bindColumns();a._bindFilter();a._bindSelection()};a._bindPagination=function(){$("#selectCasesGroup").off(".pagination").on({"click.pagination":function(){var c=$(this).attr("rel");a._loadGroup(a.section_id,c)}},"a.pagination-link")};a._bindSelection=function(){$("#selectCasesSections input").unbind("change").change(function(){var d=$(this).parent();if(!this.indeterminate){d.find("input").prop({indeterminate:false,checked:this.checked});a._syncSelectionForSection(d,this.checked)}else{d.parents("li").children("input").prop({indeterminate:true,checked:false})}});$("#selectCasesSections input").unbind("click").click(function(){var d=this.checked;$("input",$(this).parent()).each(function(){var e=$(this).attr("rel");a._setSelectionForSection(e,d);a._syncSelectionCounter(e);if(e==a.section_id){a._checkGrid(d)}})});var c=$("#selectCasesGroup");c.off(".selection").on({"click.selection":function(){var e=this.checked;var d=$(this).attr("rel");if(d){a._checkGrid(this.checked);$("td.checkbox input",c).each(function(){a._setSelectionForCase(a.section_id,$(this).val(),e)})}else{App.Tables.onRowClick(this);a._setSelectionForCase(a.section_id,$(this).val(),e)}a._syncSelectionForCases(a.section_id,true)}},"th.checkbox input, td.checkbox input");$("#selectCasesGroupAll").unbind("click").click(function(){a._checkGroup(true)});$("#selectCasesGroupNone").unbind("click").click(function(){a._checkGroup(false)});$("#selectCasesTreeAll").unbind("click").click(function(){a._checkTree(true)});$("#selectCasesTreeNone").unbind("click").click(function(){a._checkTree(false)})};a._setSelectionForSection=function(c,d){delete a.selection[c];if(!d){return}if(a.outline[c]){a.selection[c]={};$.each(a.outline[c],function(e,f){a.selection[c][f]=true})}};a._setSelectionForCase=function(c,d,e){if(e){if(!a.selection[c]){a.selection[c]={}}a.selection[c][d]=true}else{if(a.selection[c]){delete a.selection[c][d];if($.isEmptyObject(a.selection[c])){delete a.selection[c]}}}};a._syncSelectionForSection=function(g,e){var d=g.parent().parent();if(!d.is("li.section")){return}var c=true;g.siblings().each(function(){var i=$(this).children("input").get(0);if(i.checked!==e||i.indeterminate){c=false;return false}});var h=false;var f=d.attr("rel");if(c&&e){if(a._hasAllSelected(f)){d.children("input").prop({indeterminate:false,checked:true});a._syncSelectionForSection(d,e)}else{h=true}}else{if(c&&!e){if(a._hasNoneSelected(f)){d.children("input").prop({checked:false,indeterminate:false});a._syncSelectionForSection(d,e)}else{h=true}}else{h=true}}if(h){g.parents("li").children("input").prop({indeterminate:true,checked:false})}};a._hasAllSelected=function(d){if(a.selection[d]&&a.outline[d]){var c=Object.keys(a.selection[d]);if(c.length==a.outline[d].length){return true}}return false};a._hasNoneSelected=function(c){return a.selection[c]?false:true};a._syncSelectionForCases=function(c,h){var g=$("#selectCasesNode-"+c);var e=a._hasAllSelected(c);if(e){$("ul input",g).each(function(){if(!this.checked){e=false;return false}})}var d=a._hasNoneSelected(c);if(d){$("ul input",g).each(function(){if(this.checked||this.indeterminate){d=false;return false}})}var f=g.children("input");if(e){f.prop({checked:true,indeterminate:false})}else{if(d){f.prop({checked:false,indeterminate:false})}else{f.prop({checked:false,indeterminate:true})}}a._syncSelectionCounter(c);if(h){f.trigger("change")}};a._syncSelectionCounter=function(c){var d=$("#selectCasesCount-"+c);if(a.selection[c]){d.text("("+Object.keys(a.selection[c]).length+")").show()}else{d.hide()}};a._bindColumns=function(){$("#selectCasesColumns").unbind("click").click(function(){a._selectColumns()})};a._bindFilter=function(){var c=$("#selectCasesFilterApply").add("#selectCasesFilterSet").add("#selectCasesFilterAdd").add("#selectCasesFilterRemove");c.unbind("click").click(function(){var d=parseInt($(this).attr("rel"));a._filter(d)})};a._filter=function(d){var c=App.Filters.getAll($("#selectCasesFilter"));App.Ajax.call({target:"/suites/ajax_filter_cases",arguments:{suite_id:a.suite_id,filters:c},start:function(){$("#selectCasesFilterApply").addClass("button-busy")},stop:function(){$("#selectCasesFilterApply").removeClass("button-busy")},success:function(e){a.filters=c;$("#selectCasesMatches").html(e.matches).show();a._filterApply(e.selection,d)},error:function(e){App.Ajax.handleError(e)}})};a._filterApply=function(c,d){switch(d){case 1:a.selection=c;break;case 2:a._filterMerge(c,true);break;case 3:a._filterMerge(c,false);break}if(a.selection[a.section_id]){App.Tables.setCheckboxesById($("#selectCasesGroup"),Object.keys(a.selection[a.section_id]))}else{a._checkGrid(false)}a._applySelection()};a._filterMerge=function(c,d){$.each(c,function(f,e){$.each(e,function(h,g){a._setSelectionForCase(f,h,d)})})};a._checkGrid=function(c){App.Tables.setCheckboxes($("#selectCasesGroup"),c)};a._checkGroup=function(c){a._checkGrid(c);a._setSelectionForSection(a.section_id,c);a._syncSelectionForCases(a.section_id,true)};a._checkTree=function(c){$("#selectCasesTree li").each(function(d,e){var f=$(this).attr("rel");$(this).children("input").prop({checked:c,indeterminate:false});a._setSelectionForSection(f,c);a._syncSelectionCounter(f)});a._checkGrid(c)};a._dialogResized=function(c,d){App.Ajax.call({target:"/suites/ajax_save_select_dialog_size",blockUI:false,arguments:{width:Math.round(d.size.width),height:Math.round(d.size.height)}})};a._splitterResized=function(d){var c=$("#selectCasesTree").width()+parseInt($("#selectCasesMain").attr("min-width"))+$("#selectCasesFilter").width()+10+24+2;c=Math.min(c,a.dialog.outerWidth());App.Dialogs.setOption("#selectCasesDialog","minWidth",c);App.Ajax.call({target:"/suites/ajax_save_select_splitter_width",blockUI:false,arguments:{name:d.splitter.attr("name"),width:Math.round(d.container.width())}})};a._getGridArguments=function(c){return $.extend({columns:App.Tables.columns_for_user},c)};a._applySelection=function(){$($("#selectCasesSections li").get().reverse()).each(function(){a._syncSelectionForCases($(this).attr("rel"),false)})};a._applyTree=function(){var d=[];var c=$("#selectCasesSections").find("li:first");if(c.length>0){a.section_id=$(c).attr("rel");d=["#"+c.attr("id")]}$("#selectCasesSections").jstree({core:{animation:0,html_titles:true},ui:{select_limit:1,selected_parent_close:false,select_prev_on_delete:false,initially_select:d},plugins:["themes","ui","html_data"]}).bind("select_node.jstree",function(g,f){a._selectGroup(a._getTreeNodeID(f))})};a._getTreeNodeID=function(e){var c=e.args;var d=e.inst._get_node(c[0]);return d.attr("rel")};a._selectGroup=function(c){if(c!=a.section_id){a._loadGroup(c,0)}};a._loadGroup=function(d,g,f){var e=$("#selectCasesNode-"+d);var c=e.children("a");c.addClass("jstree-loading");App.Ajax.call({target:"/suites/ajax_render_select_group",arguments:a._getGridArguments({suite_id:a.suite_id,section_id:d,case_ids:a._getSelectedCases(d),offset:g}),stop:function(){c.removeClass("jstree-loading")},success:function(h){a.section_id=d;$("#selectCasesGroup").html(h);a.outline=outline;if(selection[d]){a.selection[d]=selection[d]}else{delete a.selection[d]}a._syncSelectionForCases(d,true);if(f){f.success()}},error:function(h){App.Ajax.handleError(h)}})};a._selectColumns=function(){App.Tables.selectColumns({project_id:a.project_id,area_id:a.column_area_id,container:"#selectCasesGroupContainer",submit:function(c){a._loadGroup(a.section_id,0,c)}})}};App.Suites.Select.Splitter=function(b){var a=this;a.min=b.min;a.max=b.max;a.pos=null;a.offset=null;a.splitter=$(b.splitter);a.container=$(b.container);a.neighbor=$(b.neighbor);a.orientation=b.orientation;a.document=$(document);a.resized=b.resized;a._resizeStart=function(c){a.pos=a._getResizePosition(c);a.width=a.container.width();a.offset=a.width;a.document.bind("mousemove.select",a._resize);a.document.bind("mouseup.select",a._resizeStop);a._resizeShowProgress();return false};a._resizeShowProgress=function(){$("body").css("cursor","ew-resize");if(a.orientation=="left"){$(a.splitter).addClass("select-dialog-splitter-left-resizing")}else{$(a.splitter).addClass("select-dialog-splitter-right-resizing")}};a._resize=function(f){var d=a.pos-a._getResizePosition(f);if(a.orientation=="right"){d=-d}var c=a.offset+d;c=Math.min(Math.max(c,a.min),a.max);var h=true;if(c>a.width){var g=a.neighbor.width()-parseInt(a.neighbor.attr("min-width"));if(g>0){if(c>a.width+g){c=a.width+g}}else{h=false}}if(h){a.container.width(c);a.neighbor.css("margin-left",c+"px");a.width=c}return false};a._resizeStop=function(c){a.document.unbind(".select");a._resizeHideProgress();a.resized(a);return false};a._resizeHideProgress=function(){$("body").css("cursor","");a.splitter.removeClass("select-dialog-splitter-left-resizing");a.splitter.removeClass("select-dialog-splitter-right-resizing")};a._getResizePosition=function(c){return c.clientX};a.splitter.bind("mousedown.select",a._resizeStart)};App.SiteSettings=new function(){var a=this;a.filters=null;a._createFilter=function(b){return new App.SiteSettings.Filter({event:b,filters:a.filters,save_filters:true,changed:function(c){a.filters=c;App.SiteSettings.loadAuditLogs(c)}})};a.filterLogs=function(c){var b=a._createFilter(c);b.open()};a.filterLogsReset=function(){var b=a._createFilter();b.reset()}};App.SiteSettings.Filter=function(b){var a=this;a.filters=b.filters;a.save_filters=b.save_filters;a.changed=b.changed;a.event=b.event;a.open=function(d){var c=$("#filterByChange").bubble({bubble:"#filterLogsBubble",toggleEvent:"null"});a._load({show:function(){a._bind({bubble:c});c.show(a.event)}})};a._load=function(d){var c=$("#filterBy .busy");App.Ajax.call({target:"/admin/audit/ajax_render_log_filter",arguments:{filters:a.filters},start:function(){$("#filterByChange").hide();c.show()},stop:function(){c.hide();$("#filterByChange").show()},success:function(e){$("#filterLogsContent").html(e);d.show()},error:function(e){App.Ajax.handleError(e)}})};a._bind=function(c){$("#filterLogsApply").click(function(){a._apply(c);return false});$("#filterLogsCancel").click(function(){a._cancel(c);return false})};a._apply=function(d){var c=App.Filters.getAll($("#filterLogsContent"));App.Ajax.call({target:"/admin/audit/ajax_render_log_filter_info",arguments:{filters:c,save_filters:a.save_filters},start:function(){$("#filterLogsApply").addClass("button-busy")},stop:function(){$("#filterLogsApply").removeClass("button-busy")},success:function(e){a._sync(c,e);a._changed();d.bubble.hide()},error:function(e){App.Ajax.handleError(e)}})};a._sync=function(c,d){$("#filterByInfo").hide();$("#filterByEmpty").hide();$("#filterByChange").removeClass("link link-dashed nolink");d=$.trim(d);if(d){$("#filterByChange").addClass("nolink");$("#filterByInfo").html(d);$("#filterByInfo").show();$("#filterByReset").show();a.filters=c}else{$("#filterByReset").hide();$("#filterByChange").addClass("link link-dashed");$("#filterByEmpty").show();a.filters=null}};a._changed=function(){a.changed(a.filters)};a._cancel=function(c){c.bubble.hide()};a.reset=function(){App.Ajax.call({target:"/admin/audit/ajax_render_log_filter_info",arguments:{filters:null,save_filters:a.save_filters},start:function(){$("#filterByChange").hide();$("#filterBy .busy").show()},stop:function(){$("#filterBy .busy").hide();$("#filterByChange").show()},success:function(c){a._sync(null,"");a._changed()},error:function(c){App.Ajax.handleError(c)}})}};App.SiteSettings.loadAuditLogs=function(a,b){$("#auditlogsPaginationBusy").show();App.Ajax.call({target:"/admin/audit/ajax_render_auditlogs",arguments:{filters:a||[],offset:b||0,},blockUI:false,success:function(c){$("#auditlogs").html(c.auditlogs);$("#auditlogsPagination").html(c.pagination);$("#auditlogsPaginationBusy, #auditProgress").hide()},error:function(c){$("#auditlogsPaginationBusy, #auditProgress").hide();App.Ajax.handleError(c)}})};App.Milestones=new function(){var a=this;a.loadActivities=function(b,c){$("#activitiesPaginationBusy").show();App.Ajax.call({target:"/milestones/ajax_render_activities",arguments:{milestone_id:b,offset:c},success:function(d){$("#activities").html(d.activities);$("#activitiesPagination").html(d.pagination);$("#activitiesPaginationBusy").hide()},error:function(d){$("#activitiesPaginationBusy").hide();App.Ajax.handleError(d)}})};a.loadCompleted=function(b,c){$("#completedPaginationBusy").show();App.Ajax.call({target:"/milestones/ajax_render_completed",arguments:{project_id:b,offset:c},success:function(d){$("#completed").html(d.milestones);$("#completedPagination").html(d.pagination);$("#completedPaginationBusy").hide()},error:function(d){$("#completedPaginationBusy").hide();App.Ajax.handleError(d)}})};a.loadCompletedRuns=function(b){$("#showCompleted .showAll").hide();$("#showCompleted .busy").show();App.Ajax.call({target:"/milestones/ajax_render_completed_runs",arguments:{milestone_id:b},success:function(c){$("#showCompleted .busy").hide();$("#completed").html(c)},error:function(c){$("#showCompleted .busy").hide();App.Ajax.handleError(c)}})};a.selectActivityDays=function(b){App.Charts.selectTimeframe({success:function(c){App.Ajax.call({target:"/milestones/ajax_render_activity_chart",arguments:{milestone_id:b,days:c},success:function(d){App.Dialogs.closeTop();App.Charts.reload(App.Charts.activity,"#activityContainer",d)},error:function(d){App.Ajax.handleError(d)}})}})};a.toggleSubs=function(b){var d=$("#milestone-"+b);var c=$("#milestonesubs-"+b);if(c.hasClass("loaded")){App.Effects.hide(c);$(".expand",d).show();$(".collapse",d).hide();c.removeClass("loaded")}else{if($(".subs",c).length>0){$(".expand",d).hide();$(".collapse",d).show();App.Effects.show(c);c.addClass("loaded")}else{a._loadSubs({milestone_id:b,success:function(e){$(".expand",d).hide();$(".collapse",d).show();$(".details",c).html(e);App.Effects.show(c);c.addClass("loaded")}})}}};a._loadSubs=function(d){var c=$("#milestone-"+d.milestone_id);var b=function(e){if(e){}else{$(selector+" .buttons").show();$(selector+" .busy").hide()}};$(".buttons",c).hide();$(".busy",c).show();App.Ajax.call({target:"milestones/ajax_get_subs",arguments:{milestone_id:d.milestone_id},stop:function(){$(".busy",c).hide();$(".buttons",c).show()},success:function(e){d.success(e)},error:function(e){App.Ajax.handleError(e)}})};a.start=function(b){a._startInit({milestone_id:b,success:function(c){$("#startMilestoneControls").html(c);a._startDialog({submit:function(d,e){a._start({milestone_id:b,start_on:d,due_on:e})}})}})};a._startInit=function(d){var c=$("#startMilestone-"+d.milestone_id);var b=$("#startMilestoneBusy-"+d.milestone_id);c.hide();b.show();App.Ajax.call({target:"/milestones/ajax_render_start_dialog",arguments:{milestone_id:d.milestone_id},stop:function(){b.hide();c.show()},success:function(e){d.success(e)},error:function(e){App.Ajax.handleError(e)}})};a._startDialog=function(b){App.Validation.hideErrors();$("#startMilestoneForm").unbind("submit");$("#startMilestoneForm").submit(function(c){App.Validation.hideErrors();b.submit($("#startMilestoneStartOn").val(),$("#startMilestoneDueOn").val());return false});App.Dialogs.open({selector:"#startMilestoneDialog",autoFocus:false});$("#startMilestoneStartOn").blur();$("#startMilestoneStartOn").datepicker({duration:0,showAnim:""});$("#startMilestoneDueOn").datepicker({duration:0,showAnim:""})};a._start=function(b){$("#startMilestoneSubmit").addClass("button-busy");App.Ajax.call({target:"/milestones/ajax_start",arguments:{milestone_id:b.milestone_id,start_on:b.start_on,due_on:b.due_on},stop:function(){$("#startMilestoneSubmit").removeClass("button-busy")},success:function(){location.reload()},error:function(c){App.Ajax.handleError(c,"#startMilestoneErrors")}})};a.exportTestsCsv=function(b){a._exportTests(b,"csv")};a.exportTestsExcel=function(b){a._exportTests(b,"excel")};a._exportTests=function(b,d){var c=new App.ExportCsv({format:d});c.open()};a.loadDefects=function(b,c){$("#defectsPaginationBusy").show();App.Ajax.call({target:"/milestones/ajax_render_defects",arguments:{milestone_id:b,offset:c},stop:function(){$("#defectsPaginationBusy").hide()},success:function(d){$("#defects").html(d.defects);$("#defectsPagination").html(d.pagination);$("#defectsPaginationBusy").hide()},error:function(d){App.Ajax.handleError(d)}})}};App.Tests={};App.Tests.setDialogColor=function(c,b){var a=null;if(statuses!==undefined){a=statuses[b]["color_gradient_a"]}var d=$(c).prev();if(a){d.css("background","#"+a);d.css("color","#ffffff")}else{d.css("background","");d.css("color","")}};App.Tests.setDialogColorDefault=function(b){var a=Consts.statusPassed;if(status_default_id!==undefined){a=status_default_id}App.Tests.setDialogColor(b,a)};App.Tests.applyResponsive=function(){App.Responsive.register("#content",950,function(a){var b=$("#content-header .button-responsive");if(a){b.addClass("button-notext")}else{b.removeClass("button-notext")}})};App.Tests.showInProgress=function(){var a=function(){var d=$("#inProgressLink");if(d.length>0){var c=d[0];c.href="#inProgressDropdown";App.Dropdowns.open(c)}};var b=$("#inProgressDropdown");if(b.is(":visible")){return}if(b.length!=0){b.remove()}App.Ajax.call({target:"/tests/ajax_render_in_progress_dropdown",success:function(c){$("body").append(c);a()},error:function(c){App.Ajax.handleError(c)}})};App.Tests.showInProgressAll=function(){var a=function(){App.Dialogs.open({selector:"#inProgressDialog"})};var b=$("#inProgressDialog");if(b.length!=0){b.remove()}App.Ajax.call({target:"/tests/ajax_render_in_progress_dialog",success:function(c){$("body").append(c);a()},error:function(c){App.Ajax.handleError(c)}})};App.Tests.loadResultDialog=function(e){$("#addResultSubmit").hide();$("#addResultSubmitDisabled").show();var c=$("#addResultDialog");var d=c.find(".resultBusy");var b=c.find(".resultContainer");var a=c.find(".dialog-body").outerHeight();d.css("padding-top",Math.round((a/2)-25)+"px");d.show();b.hide();App.Ajax.call({target:"/tests/ajax_render_result_dialog",arguments:e,success:function(f){d.hide();b.html(f);b.show();$("#addResultSubmit").show();$("#addResultSubmitDisabled").hide();e.success();$.publish("result_dialog.loaded")},error:function(f){d.hide();App.Ajax.handleError(f)}})};App.Tests.resultDialog=function(a){$("#addResultSubmit").removeClass("button-busy");App.Dialogs.open({init:a.init,selector:"#addResultDialog",titleSelector:a.titleSelector?a.titleSelector:".addResult",minWidth:650,minHeight:425,resizable:true,resizeStop:App.Tests.resultDialogResized,autoFocus:false,enter:function(){$("#addResultSubmit").click()}});a.show()};App.Tests.resultDialogValues=function(){var b=App.Dropzone.getAttachments("#addResultDropzone");var a={status_id:$("#addResultStatus").val(),assignedto:$("#addResultAssignTo").val(),comment:$("#addResultComment").val(),version:$("#addResultVersion").val(),elapsed:$("#addResultElapsed").val(),defects:$("#addResultDefects").val(),attachments:b.join(",")};$("#addResultDialog .custom").each(function(c,g){var f=$(this);if(f.attr("type")=="checkbox"){a[f.attr("name")]=f.prop("checked")}else{var d=f.attr("name");a[d]=f.val();if(f.is("select")){a[d+"_string"]=$("option:selected",f).text()}}});return a};App.Tests.resultDialogBind=function(a){App.applyTextAreaResizer();$("#addResultStatus").unbind("change");$("#addResultStatus").change(function(){var b=Number($(this).val());App.Tests.setDialogColor("#addResultDialog",b)});$("#addResultSubmit").unbind("click");$("#addResultSubmit").bind("click",function(c){App.Validation.hideErrors();$("#addResultErrors").empty();var b=App.Tests.resultDialogValues();$.publish("result_dialog.validate",{event:c,values:b});if(c.isPropagationStopped()){return false}$("#addResultSubmit").addClass("button-busy");a.submit(b);return false});$("#addResultClose").unbind("click");$("#addResultClose").bind("click",function(b){App.Dialogs.close("#addResultDialog")})};App.Tests.resultDialogResized=function(a,b){App.Ajax.call({target:"/tests/ajax_save_result_dialog_size",blockUI:false,arguments:{width:Math.round(b.size.width),height:Math.round(b.size.height)}})};App.Tests.setResultType=function(a){if(a=="addResult"){$("#addResultDialog .addResult").show();$("#addResultDialog .editResult").hide();$("#addResultButtons .addResult").show();$("#addResultButtons .editResult").hide()}else{$("#addResultDialog .editResult").show();$("#addResultDialog .addResult").hide();$("#addResultButtons .editResult").show();$("#addResultButtons .addResult").hide()}};App.Tests.addResult=function(c,b,a){App.Tests.hideResultNext();App.Tests.setResultNext(false);App.Tests.setResultType("addResult");App.Tests.resultDialog({show:function(){App.Tests.loadResultDialog({type:"add",project_id:c,test_id:b,elapsed:a,success:function(){$("#addResultStatus").focus();App.Tests.resultDialogBind({submit:function(d){d.test_id=b;d.is_result=true;App.Tests.addChange(d,{success:App.Tests.resultSuccess,error:App.Tests.resultError})}})}})},init:function(){App.Tests.setDialogColorDefault("#addResultDialog")}})};App.Tests.setResultNext=function(a){if(a){$("#addResultNextNo").hide();$("#addResultNextYes").show();$("#addResultNext").attr("rel","1")}else{$("#addResultNext").attr("rel","0");$("#addResultNextYes").hide();$("#addResultNextNo").show()}};App.Tests.getResultNext=function(){return $("#addResultNext").attr("rel")=="1"};App.Tests.hideResultNext=function(){$("#addResultNext").hide()};App.Tests.showResultNext=function(){$("#addResultNext").show()};App.Tests.addResultInline=function(c,b){var a=App.Dropdowns.getTag("#statusDropdown");App.Tests.hideResultNext();App.Tests.setResultNext(false);App.Tests._addResultInline(c,a,b,false)};App.Tests._addResultInline=function(d,b,c,e,a){App.Tests.setResultType("addResult");App.Tests.resultDialog({show:function(){App.Tests.loadResultDialog({type:"add",project_id:d,test_id:b,elapsed:a,status_id:c,success:function(){$("#addResultStatus").focus();App.Tests.resultDialogBind({submit:function(f){f.test_id=b;f.is_result=true;f.set_next=e;f.next=App.Tests.getResultNext();App.Tests.addChangeInline(f,{success:function(){App.Tests.resultSuccess();if(App.Tests.getResultNext()){App.Runs.nextRow(true)}},error:App.Tests.resultError})}})}})},init:function(){App.Tests.setDialogColor("#addResultDialog",c)}})};App.Tests.addResultQPane=function(c,b,a){App.Tests.showResultNext();App.Tests.setResultNext(App.Runs.goto_next);App.Tests._addResultInline(c,b,Consts.statusPassed,true,a)};App.Tests.addResultAndNext=function(d,b,c,a){if(a){App.Tests._addResultAndNext(d,b,c)}else{App.Tests.showResultNext();App.Tests.setResultNext(true);App.Tests._addResultInline(d,b,c,true)}};App.Tests._addResultAndNext=function(c,a,b){$("#addResultAndNext").addClass("button-busy");App.Tests.addChangeInline({test_id:a,status_id:b,set_timer:true,is_result:true},{success:function(){$("#addResultAndNext").removeClass("button-busy");App.Runs.nextRow(true)},error:function(d){$("#addResultAndNext").removeClass("button-busy");App.Ajax.handleError(d)}})};App.Tests.stepsToString=function(c){var a=Array();var b=$("#"+c+"_table");b.find("tr.step-row").each(function(d,i){var h=$(i);var j={content:$("td.content input.step",h).val(),status_id:$("td.result select",h).val()};var g=$("td.content input.expected",h);if(g.length>0){j.expected=g.val()}var k=$("td.content textarea.actual",h);if(k.length>0){var f=$.trim(k.val());if(f){j.actual=f}}a.push(j)});if(a.length>0){return JSON.stringify(a)}else{return""}};App.Tests.showSteps=function(a){$("#steps-"+a).show();$("#results-"+a).hide()};App.Tests.showStepsActual=function(a){$("#actualLink-"+a).hide();$("#actualContainer-"+a).show();$("#actualContainer-"+a).find("textarea").focus()};App.Tests.editResult=function(c,b,a){App.Tests.hideResultNext();App.Tests.setResultNext(false);App.Tests.setResultType("editResult");App.Tests.resultDialog({titleSelector:".editResult",show:function(){App.Tests.loadResultDialog({type:"edit",project_id:c,test_change_id:b,success:function(){App.Tests.resultDialogBind({submit:function(d){d.test_change_id=b;d.is_result=true;App.Tests.editChange(d,{success:App.Tests.resultSuccess,error:App.Tests.resultError})}});$("#addResultComment").focus()}})},init:function(){App.Tests.setDialogColor("#addResultDialog",a)}})};App.Tests.massAddResult=function(a){var b=App.Tests.getSelected();if(b==""){return}App.Tests.hideResultNext();App.Tests.setResultNext(false);App.Tests.setResultType("addResult");App.Tests.resultDialog({show:function(){App.Tests.loadResultDialog({type:"massadd",project_id:a,test_ids:b,success:function(){$("#addResultStatus").focus();App.Tests.resultDialogBind({submit:function(c){c.test_ids=b;c.is_result=true;App.Tests.massAddChange(c,{success:App.Tests.resultSuccess,error:App.Tests.resultError})}})}})},init:function(){App.Tests.setDialogColorDefault("#addResultDialog")}})};App.Tests.resultSuccess=function(a){App.Dialogs.close("#addResultDialog")};App.Tests.resultError=function(a){$("#addResultSubmit").removeClass("button-busy");App.Ajax.handleError(a,"#addResultErrors")};App.Tests.setCommentType=function(a){$("#addCommentDialog .addComment").hide();$("#addCommentDialog .editComment").hide();$("#addCommentDialog .assignTo").hide();$("#addCommentDialog .editAssignTo").hide();$("#addCommentDialog ."+a).show()};App.Tests.commentDialogReset=function(b,a){App.Validation.hideErrors();$("#addCommentErrors").empty();if(a.hide_attachments){$("#addCommentAttachments").hide()}else{$("#addCommentAttachments").show()}if(a.disable_assignedto){App.Controls.disableCombobox("#addCommentAssignTo")}else{App.Controls.enableCombobox("#addCommentAssignTo")}if(!b.assignedto){App.Controls.resetCombobox("#addCommentAssignTo")}else{$("#addCommentAssignTo").val(b.assignedto)}$("#addCommentComment").val(b.comment?b.comment:"");$("#addCommentSubmit").removeClass("button-busy")};App.Tests.commentDialog=function(c,a,b){c=c||{};a=a||{};App.Tests.commentDialogReset(c,a);$("#addCommentForm").unbind("submit");$("#addCommentForm").submit(function(g){App.Validation.hideErrors();$("#addCommentErrors").empty();var f=App.Dropzone.getAttachments("#addCommentAttachments");var d={assignedto:$("#addCommentAssignTo").val(),comment:$.trim($("#addCommentComment").val()),attachments:f.join(",")};$("#addCommentSubmit").addClass("button-busy");b.submit(d);return false});App.Tests.Attachments.clear();App.Dialogs.open({selector:"#addCommentDialog",titleSelector:a.titleSelector?a.titleSelector:".addComment",focusedControl:"#addCommentComment"});if(b.show){b.show()}};App.Tests.commentSuccess=function(a){App.Dialogs.close("#addCommentDialog")};App.Tests.commentError=function(a){$("#addCommentSubmit").removeClass("button-busy");App.Ajax.handleError(a,"#addCommentErrors")};App.Tests.addComment=function(a){App.Tests.setCommentType("addComment");App.Tests.implAddComment({test_id:a,titleSelector:".addComment",show:function(){$("#addCommentComment").focus()}})};App.Tests.implAddComment=function(a){App.Tests.commentDialog(false,{titleSelector:a.titleSelector},{validate:a.validate,show:a.show,submit:function(b){b.test_id=a.test_id;App.Tests.addChange(b,{success:App.Tests.commentSuccess,error:App.Tests.commentError})}})};App.Tests.editComment=function(a){App.Tests.setCommentType("editComment");App.Tests.implEditComment({test_change_id:a,titleSelector:".editComment",show:function(){$("#addCommentComment").focus()}})};App.Tests.massAssignTo=function(){var a=App.Tests.getSelected();if(a==""){return}App.Tests.setCommentType("assignTo");App.Tests.commentDialog(false,{titleSelector:".assignTo"},{show:function(){$("#addCommentAssignTo").focus()},submit:function(b){b.test_ids=a;App.Tests.massAddChange(b,{success:App.Tests.commentSuccess,error:App.Tests.commentError})}})};App.Tests.assignTo=function(a){App.Tests.setCommentType("assignTo");App.Tests.implAddComment({test_id:a,titleSelector:".assignTo",show:function(){$("#addCommentAssignTo").focus()}})};App.Tests.assignToInline=function(a){App.Tests._assignToInline(a)};App.Tests._assignToInline=function(a){App.Tests.setCommentType("assignTo");App.Tests.commentDialog(false,{titleSelector:".assignTo"},{show:function(){$("#addCommentAssignTo").focus()},submit:function(b){b.test_id=a;App.Tests.addChangeInline(b,{success:App.Tests.commentSuccess,error:App.Tests.commentError})}})};App.Tests.assignToQPane=function(a){App.Tests._assignToInline(a)};App.Tests.addCommentNoDialogActivate=function(a){var b=$("#addCommentInline");b.height(80);b.unbind("keydown").bind("keydown",function(c){if((c.ctrlKey||c.metaKey)&&c.keyCode==App.keyEnter){App.Tests.addCommentNoDialog(a);return false}});if(!b.next().is(".textarea-grippie")){b.removeClass("processed");App.applyTextAreaResizer()}setTimeout(function(){b.focus();$("#addCommentInlineAttachments").show();$("#addCommentInlineButtons").show()},0)};App.Tests.addCommentNoDialog=function(a){var c=$.trim($("#addCommentInline").val());if(!c){$("#addCommentInlineEmpty").show();return}$("#addCommentInlineEmpty").hide();$("#addCommentInlineSubmit").addClass("button-busy");var b=App.Dropzone.getAttachments("#addCommentInlineDropzone");App.Ajax.call({target:"/tests/ajax_add_change",reflow:true,arguments:{test_id:a,comment:$("#addCommentInline").val(),attachments:b.join(","),direction_mode:"run"},stop:function(){$("#addCommentInlineSubmit").removeClass("button-busy")},success:function(d){$("#resultsContainer").html(d.changes);App.Effects.add("#testChange-"+d.change_id);App.Tests.addCommentNoDialogActivate(a)},error:function(d){App.Ajax.handleError(d)}})};App.Tests.editAssignTo=function(a){App.Tests.setCommentType("editAssignTo");App.Tests.implEditComment({test_change_id:a,titleSelector:".editAssignTo",show:function(){$("#addCommentComment").focus()}})};App.Tests.implEditComment=function(a){App.Tests.loadChange({test_change_id:a.test_change_id,error:App.Ajax.handleError,success:function(b){App.Tests.commentDialog(b.change,{disable_assignedto:true,hide_attachments:true,titleSelector:a.titleSelector},{show:a.show,validate:a.validate,submit:function(c){c.test_change_id=a.test_change_id;App.Tests.editChange(c,{success:App.Tests.commentSuccess,error:App.Tests.commentError})}})}})};App.Tests.addChange=function(c,b){var a=$("#directionNext").attr("rel");c.direction_mode=a;App.Ajax.call({target:"/tests/ajax_add_change",arguments:c,success:function(d){b.success(d);$("#content-header").replaceWith(d.headline);$("#sidebar").html(d.sidebar);$("#resultsContainer").html(d.changes);App.Effects.add("#testChange-"+d.change_id);App.Tabs.activate("#resultsTab");if(c.status_id){$.publish("results.added",{test_id:c.test_id,status_id:c.status_id});App.Tests.countTimerStop()}if(c.status_id){if(App.Users.hasGoals()){App.Users.reloadGoals()}}},error:function(d){b.error(d)}})};App.Tests.addChangeInline=function(b,a){b.columns=JSON.stringify(App.Tables.columns_for_user);b.group_by=App.Tables.group_by;b.group_order=App.Tables.group_order;if(App.QPane.isVisible()){b.qpane_id=App.QPane.getCurrentRowID()}App.Ajax.call({target:"/tests/ajax_add_change_inline",arguments:b,success:function(h){var c="#row-"+b.test_id;var i=$(c);var d;if(i.hasClass("odd")){d="odd"}else{if(i.hasClass("oddSelected")){d="oddSelected"}else{if(i.hasClass("evenSelected")){d="evenSelected"}else{d="even"}}}var g=$("input.selectionCheckbox",i);var f=g.length==1&&g.get(0).checked;i.replaceWith(h.row);i=$(c);i.removeClass("odd even").addClass(d);if(f){g=$("input.selectionCheckbox",i);if(g.length==1){g.get(0).checked=true}}if(b.status_id){App.Tests.countTimerStop()}App.Effects.add(c);if(h.qpane){App.QPane.update(h.qpane)}$.publish({"body.changed":null,"tests.changed":{project_id:h.project_id,run_id:h.run_id,test_id:b.test_id}});if(b.status_id){if(App.Users.hasGoals()){App.Users.reloadGoals()}}a.success(h)},error:function(c){a.error(c)}})};App.Tests.massAddChange=function(b,a){b.columns=JSON.stringify(App.Tables.columns_for_user);b.group_by=App.Tables.group_by;b.group_order=App.Tables.group_order;if(App.QPane.isVisible()){b.qpane_id=App.QPane.getCurrentRowID()}App.Ajax.call({target:"/tests/ajax_mass_add_change",arguments:b,success:function(j){a.success(j);var h=false;for(var f=0,d=j.rows.length;f=3600){e=parseInt(b/3600);b-=e*3600}if(b>=60){a=parseInt(b/60);b-=a*60}d=b;var c="";if(e>0){c+=e+lang("timespans_hour_short")+" "}if(a>0){c+=a+lang("timespans_minute_short")+" "}if(d>0){c+=d+lang("timespans_second_short")}return c};App.Tests.countTimerStop=function(){$("#addResultElapsed").prop("readonly",false);if(App.Tests.elapsed_timer){clearInterval(App.Tests.elapsed_timer);App.Tests.elapsed_timer=null}};App.Tests.reloadTimer=function(a){App.Tests.callTimer({target:"/tests/ajax_reload_timer",test_id:a,hideErrors:true,blockUI:false})};App.Tests.resumeTimer=function(a){App.Tests.callTimer({target:"/tests/ajax_resume_timer",test_id:a})};App.Tests.resumeTimerInline=function(a){App.Tests.callTimerInline({target:"/tests/ajax_resume_timer",test_id:a,success:function(){$("#addResultElapsedResume").hide();$("#addResultElapsedPause").show();$("#resumeTimer").hide();$("#pauseTimer").show();App.Tests.countTimerStart()}})};App.Tests.resumeTimerQPane=function(a){App.Tests.callTimerQPane({target:"/tests/ajax_resume_timer",button:"#resumeTimer",test_id:a,success:function(){$("#resumeTimer").hide();$("#pauseTimer").show();App.Tests.countTimerStart()}})};App.Tests.pauseTimer=function(a){App.Tests.callTimer({target:"/tests/ajax_pause_timer",test_id:a})};App.Tests.pauseTimerInline=function(a){App.Tests.callTimerInline({target:"/tests/ajax_pause_timer",test_id:a,success:function(){$("#addResultElapsedPause").hide();$("#addResultElapsedResume").show();$("#pauseTimer").hide();$("#resumeTimer").show();App.Tests.countTimerStop()}})};App.Tests.pauseTimerQPane=function(a){App.Tests.callTimerQPane({target:"/tests/ajax_pause_timer",button:"#pauseTimer",test_id:a,success:function(){$("#pauseTimer").hide();$("#resumeTimer").show();App.Tests.countTimerStop()}})};App.Tests.stopTimer=function(a){App.Tests.callTimer({target:"/tests/ajax_stop_timer",test_id:a,success:function(b){App.Tests.addResult(b.project_id,a,b.elapsed)}})};App.Tests.stopTimerInline=function(a){App.Tests.callTimerInline({target:"/tests/ajax_stop_timer",test_id:a,success:function(b){$("#addResultElapsedPause").hide();$("#addResultElapsedResume").hide();$("#addResultElapsedStop").hide();$("#addResultElapsedStart").show();$("#pauseTimer").hide();$("#resumeTimer").hide();$("#stopTimer").hide();$("#startTimer").show();$("#testTimerQPane").hide();App.Tests.countTimerStop()}})};App.Tests.stopTimerQPane=function(a){App.Tests.callTimerQPane({target:"/tests/ajax_stop_timer",button:"#stopTimer",test_id:a,success:function(b){$("#pauseTimer").hide();$("#resumeTimer").hide();$("#stopTimer").hide();$("#startTimer").show();$("#testTimerQPane").hide();App.Tests.countTimerStop();App.Tests.addResultQPane(b.project_id,a,App.Tests.elapsed)}})};App.Tests.subscribe=function(a){$("#unsubscribed .subscribe").hide();$("#unsubscribed .busy").show();App.Ajax.call({target:"/tests/ajax_subscribe",arguments:{test_id:a},success:function(b){App.Effects.replace("#unsubscribed","#subscribed");$("#unsubscribed .subscribe").show();$("#unsubscribed .busy").hide()},error:function(b){$("#unsubscribed .subscribe").show();$("#unsubscribed .busy").hide();App.Ajax.handleError(b)}})};App.Tests.unsubscribe=function(a){$("#subscribed .unsubscribe").hide();$("#subscribed .busy").show();App.Ajax.call({target:"/tests/ajax_unsubscribe",arguments:{test_id:a},success:function(b){App.Effects.replace("#subscribed","#unsubscribed");$("#subscribed .unsubscribe").show();$("#subscribed .busy").hide()},error:function(b){$("#subscribed .unsubscribe").show();$("#subscribed .busy").hide();App.Ajax.handleError(b)}})};App.Tests.loadPrev=function(a){var b=$("#directionPrev").attr("rel");App.Ajax.call({target:"/tests/ajax_get_prev",arguments:{test_id:a,direction_mode:b},success:function(d){if(d.test_id){var c=Consts.ajaxBaseUrl+"/tests/view/"+d.test_id;if(d.return_location){c+="/"+d.return_location}document.location=c}else{$("#directionPrev").hide();$("#directionPrevDisabled").show()}},error:function(c){App.Ajax.handleError(c)}})};App.Tests.loadNext=function(a){var b=$("#directionNext").attr("rel");App.Ajax.call({target:"/tests/ajax_get_next",arguments:{test_id:a,direction_mode:b},success:function(d){if(d.test_id){var c=Consts.ajaxBaseUrl+"/tests/view/"+d.test_id;if(d.return_location){c+="/"+d.return_location}document.location=c}else{$("#directionNext").hide();$("#directionNextDisabled").show()}},error:function(c){App.Ajax.handleError(c)}})};App.Tests.setDirectionMode=function(b){var a=$("#directionNext").attr("rel");if(a==b){return}if(b=="run"){$("#directionRun").show();$("#directionRunAssigned").hide();$("#directionTodo").hide()}else{if(b=="run_assigned"){$("#directionRun").hide();$("#directionRunAssigned").show();$("#directionTodo").hide()}else{$("#directionRun").hide();$("#directionRunAssigned").hide();$("#directionTodo").show()}}$("#directionNext").attr("rel",b);$("#directionNext").show();$("#directionNextDisabled").hide();$("#directionPrev").attr("rel",b);$("#directionPrev").show();$("#directionPrevDisabled").hide()};App.Tests.getSelected=function(){var b=$("tr.row input.selectionCheckbox");var a="";$.each(b,function(c,d){if(d.checked){if(a!=""){a=a+","}a=a+d.value}});return a};App.Tests.onRowClick=function(a){App.Tables.onRowClick(a);App.Tests.updateMassActions()};App.Tests.onToggleAllClick=function(a){App.Tables.onToggleAllClick(a);App.Tests.updateMassActions()};App.Tests.updateMassActions=function(){var b=$("tr.row input.selectionCheckbox");var a=false;$.each(b,function(c,d){if(d.checked){a=true;return}});if(a){$("#massAssignSelectedDisabled").hide();$("#massAssignSelected").show();$("#massAddResultDisabled").hide();$("#massAddResult").show()}else{$("#massAssignSelected").hide();$("#massAssignSelectedDisabled").show();$("#massAddResult").hide();$("#massAddResultDisabled").show()}};App.Tests.onResultsClick=function(b,a){if(!App.Tabs.isActive(b)){App.Tests._loadResults(b,a)}};App.Tests._loadResults=function(b,a){$("#resultsContainer").html("");$("#resultsBusy").show();App.Ajax.call({target:"/tests/ajax_render_results",reflow:true,arguments:{test_id:a},stop:function(){$("#resultsBusy").hide()},success:function(c){$("#resultsContainer").html(c);App.Tabs.activate(b)},error:function(c){App.Ajax.handleError(c)}})};App.Tests.onHistoryClick=function(b,a){if(!App.Tabs.isActive(b)){App.Tests._onHistoryClick(b,a)}};App.Tests._onHistoryClick=function(b,a){$("#historyContainer").html("");$("#historyBusy").show();App.Ajax.call({target:"/tests/ajax_render_history",reflow:true,arguments:{test_id:a,limit:25},stop:function(){$("#historyBusy").hide()},success:function(c){$("#historyContainer").html(c);App.Tabs.activate(b)},error:function(c){App.Ajax.handleError(c)}})};App.Tests.loadHistory=function(a){$("#showHistory .showAll").hide();$("#showHistory .busy").show();App.Ajax.call({target:"/tests/ajax_render_history",reflow:true,arguments:{test_id:a},success:function(b){$("#historyContainer").html(b)},error:function(b){$("#showHistory .busy").hide();App.Ajax.handleError(b)}})};App.Tests.onDefectsClick=function(b,a){if(!App.Tabs.isActive(b)){App.Tests._onDefectsClick(b,a)}};App.Tests._onDefectsClick=function(b,a){$("#defectsContainer").html("");$("#defectsBusy").show();App.Ajax.call({target:"/tests/ajax_render_defects",reflow:true,arguments:{test_id:a,limit:25},stop:function(){$("#defectsBusy").hide()},success:function(c){$("#defectsContainer").html(c);App.Tabs.activate(b)},error:function(c){App.Ajax.handleError(c)}})};App.Tests.loadDefects=function(a){$("#showDefects .showAll").hide();$("#showDefects .busy").show();App.Ajax.call({target:"/tests/ajax_render_defects",reflow:true,arguments:{test_id:a},success:function(b){$("#defectsContainer").html(b)},error:function(b){$("#showDefects .busy").hide();App.Ajax.handleError(b)}})};App.Editor=new function(){var a=this;a.dropzone=null;a.init=function(b){$(document.body).clipboard({paste:function(d,c){a._pasteImage(document.activeElement,b,c)}})};a._pasteImage=function(d,c,b){if(!App.Dialogs.isActive("attachmentDialog")){if(!d||d.tagName!="TEXTAREA"){return}a.addImage(d,c)}a.dropzone.addFile(b)};a.addImage=function(c,b){if(!a.dropzone){a.dropzone=a._createImageDialogDropzone(b)}a._addImageDialog({success:function(d){a._addAttachments(c,d)}})};a._formatAttachment=function(b){var c=App.Page.formatUri("![]({0}/attachments/get/{1})",Consts.ajaxBaseUrl,b);return c+"\r\n"};a._addAttachments=function(c,b){var d="";$.each(b,function(e,f){d+=a._formatAttachment(f)});$(c).insertAtCaret(d).trigger("change")};a._addAttachment=function(c,b){a._addAttachments(c,[b])};a._createImageDialogDropzone=function(b){return App.Dropzone.applyDrop("#attachmentDropzone",{files:"image/*",url:App.Page.formatUri("{0}/attachments/ajax_add_for_project/{1}",Consts.ajaxBaseUrl,b),dict:{drop:lang("attachments_drop_image"),notype:lang("attachments_drop_notype")},success:function(c,d){App.Dropzone.addAttachment(c,d.id)}})};a._addImageDialog=function(b){App.Validation.hideErrors();$("#attachmentForm").unbind("submit");$("#attachmentDialog .addAttachment").hide();$("#attachmentDialog .addImage").show();$("#attachmentForm").submit(function(c){App.Validation.hideErrors();App.Dialogs.closeTop();b.success(App.Dropzone.getAttachments("#attachmentDropzone"));return false});$("#attachmentScreenshotMac").hide();$("#attachmentScreenshotWin").hide();$("#attachmentButtons").addClass("dialog-buttons-highlighted");if(App.Env.isChrome()){if(App.Env.isMac()){$("#attachmentScreenshotMac").show()}else{if(App.Env.isWindows()){$("#attachmentScreenshotWin").show()}}}a.dropzone.removeAllFiles();App.Dialogs.open({titleSelector:".addImage",selector:"#attachmentDialog",focusedControl:"#attachment"})};a.addTable=function(c){var b=new App.Editor.Table({control:c});b.open()};a.applyDrop=function(b,f,e,d){var c=App.Dropzone.applyDrop(b,{files:"image/*",url:App.Page.formatUri("{0}/attachments/ajax_add_for_project/{1}",Consts.ajaxBaseUrl,e),dict:{drop:lang("attachments_drop_image_nobrowse"),notype:d?lang("attachments_drop_notype_canattach"):lang("attachments_drop_notype")},success:function(g,h){a._addAttachment(f,h.id);c.removeFile(g)},stop:function(){App.Dropzone.hide()}})}};App.Editor.Table=function(b){var a=this;a.control=b.control;a.open=function(){if($("#addTableDialog").length==0){a._load({success:function(){a._open(a.control)}})}else{a._open(a.control)}};a._load=function(c){App.Ajax.call({target:"/editor/ajax_render_table_dialog",success:function(d){$("body").append(d);c.success()},error:function(d){App.Ajax.handleError(d)}})};a._open=function(c){a.matrix=$("#addTableMatrix");a._dialog({submit:function(){a._add(c)}})};a._add=function(d){var c=a._getMatrix();$(d).insertAtCaret(c);$(d).trigger("change");App.Dialogs.closeTop()};a._getMatrix=function(){var c={};var f=0;a.matrix.find("select").each(function(){c[f++]=$(this).val()});var g="";var d=0;var e=a.matrix.find("tr.header th").length;a.matrix.find("tr.row").each(function(){if(d==0){g="\n||";for(var j=0;j0){return}if(a.matrix.find("tr.row").length<=1){return}if(c){d.find("td").addClass("to-remove to-remove-row");d.bind("click",function(){a._removeRow(d)})}else{d.find("td").removeClass("to-remove to-remove-row");d.unbind("click")}};a._tryToggleColumn=function(c,e){var g=c.closest("tr");if(g.next().length==0&&a.matrix.find("tr.row").length>1){return}if(a.matrix.find("tr.header th").length<=1){return}var d=c.prevAll().length+1;var f=a.matrix.find("tr td:nth-child("+d+"), tr th:nth-child("+d+")");if(e){f.addClass("to-remove to-remove-column");f.bind("click",function(){if($(this).is("td")){a._removeColumn(f)}})}else{f.removeClass("to-remove to-remove-column");f.unbind("click")}};a._addColumn=function(){a.matrix.find("tr").each(function(){var d=$(this);if(d.hasClass("header")){var c=d.find("th:last").clone();d.append(c)}else{d.append(" ")}});a._setWidth();a._setInfo()};a._removeColumn=function(c){c.remove();a._setWidth();a._setInfo()};a._addRow=function(){var c=a.matrix.find("tr.row:last").clone();a.matrix.append(c);a._setInfo();a._setAddColumnHeight()};a._removeRow=function(c){c.remove();a._setInfo();a._setAddColumnHeight()}};App.Editor_Text=new function(){var b=this;var d;b.dropzone=null;b.init=function(a){$(document.body).clipboard({paste:function(e,f){b._pasteImage(document.activeElement,a,f)}})};b._pasteImage=function(e,f,a){if(!App.Dialogs.isActive("attachmentDialogFile")){if(!e||e.tagName!="TEXTAREA"){return}b.addImage(e,f)}b.dropzone.addFile(a)};b.addImage=function(e,a){if(!b.dropzone){b.dropzone=b._createImageDialogDropzone(a)}b._addImageDialog({success:function(f){b._addAttachments(e,f)}});document.getElementById("attachmentDropzone").classList.remove("disabled");document.getElementById("attachmentSubmit").classList.add("cursor-not-allowed");document.getElementById("attachmentSubmit").setAttribute("disabled","")};b._formatAttachment=function(e){var a=new FileReader;a.readAsText(d);a.onload=function(f){document.getElementById(e).value=f.target.result.trim()}};b._addAttachments=function(e,a){document.getElementById(e).value="";b._formatAttachment(e)};b._addAttachment=function(e,a){b._addAttachments(e,[a])};function c(e,g){var a=new FileReader;a.readAsText(e);var f;return new Promise(function(i,h){a.onload=function(){i(a.result)}})}b._createImageDialogDropzone=function(a){return App.Dropzone.applyDrop("#attachmentDropzone",{files:"*",url:App.Page.formatUri("{0}/attachments/ajax_add_for_certificate",Consts.ajaxBaseUrl),dict:{drop:lang("attachments_file_here"),notype:lang("attachments_drop_filee_nobrowse")},success:function(f,e){document.getElementById("attachmentDropzone").classList.add("disabled");document.getElementById("attachmentSubmit").removeAttribute("disabled");document.getElementById("attachmentSubmit").classList.remove("cursor-not-allowed");d=f;App.Dropzone.addAttachment(f,e.id)}})};b._addImageDialog=function(a){App.Validation.hideErrors();$("#attachmentForm").unbind("submit");$("#attachmentDialogFile .addAttachment").hide();$("#attachmentDialogFile .addAttachment").show();$("#attachmentForm").submit(function(e){App.Validation.hideErrors();App.Dialogs.closeTop();a.success(App.Dropzone.getAttachments("#attachmentDropzone"));return false});$("#attachmentScreenshotMac").hide();$("#attachmentScreenshotWin").hide();$("#attachmentButtons").addClass("dialog-buttons-highlighted");if(App.Env.isChrome()){if(App.Env.isMac()){$("#attachmentScreenshotMac").show()}else{if(App.Env.isWindows()){$("#attachmentScreenshotWin").show()}}}b.dropzone.removeAllFiles();App.Dialogs.open({titleSelector:".addImage",selector:"#attachmentDialogFile",focusedControl:"#attachment"})};b.addTable=function(e){var a=new App.Editor.Table({control:e});a.open()};b.applyDrop=function(a,g,h,i){var j=App.Dropzone.applyDrop(a,{files:"image/*",url:App.Page.formatUri("{0}/attachments/ajax_add_for_project/{1}",Consts.ajaxBaseUrl,h),dict:{drop:lang("attachments_drop_image_nobrowse"),notype:i?lang("attachments_drop_notype_canattach"):lang("attachments_drop_notype")},success:function(f,e){b._addAttachment(g,e.id);j.removeFile(f)},stop:function(){App.Dropzone.hide()}})}};App.Dropdowns={};App.ready(function(){$(document).on({click:function(a){App.Dropdowns.open(this);return false}},"a.dropdownLink");$(document).on({click:function(){App.Dropdowns.closeAll()}},"a.popupLink")});App.Dropdowns.closeAll=function(){App.Dropdowns.deactivateCloseEvents();$("div.dropdown").hide()};App.Dropdowns.activateCloseEvents=function(){$(document).bind("click.dropdowns",function(){App.Dropdowns.closeAll()})};App.Dropdowns.deactivateCloseEvents=function(){$(document).unbind("click.dropdowns")};App.Dropdowns.getHref=function(c){var a=c.attr("href");var b=a.indexOf("#");if(b>0){return a.substring(b)}else{return a}};App.Dropdowns.open=function(g){var d=$(g);var m=$(App.Dropdowns.getHref(d));var c=d.offset();var f=m.is(":visible");App.Dropdowns.closeAll();if(f){if(m.data("anchor")==d.attr("rel")){m.data("anchor",null);return}}m.data("anchor",d.attr("rel"));var i;var a;var h=m.attr("rel");var l=$("#notice").outerHeight()||0;if(h=="right"){a=c.left+d.outerWidth()+1;i=c.top}else{if(h=="bottomLeft"){a=c.left-m.outerWidth()+d.outerWidth();i=c.top+d.outerHeight()+1}else{if(h=="helpMenu"){a=c.left-m.outerWidth()+d.outerWidth()+5;i=26+l}else{if(h=="userMenu"){a=c.left-m.outerWidth()+d.outerWidth()+200;i=26+l}else{if(h=="toolbarMenu"){a=c.left-5;var j=$("#content-header");i=j.offset().top+j.outerHeight();var k=a+m.outerWidth()-j.outerWidth();if(k>0){a-=k-1}}else{if(h=="itemPrev"){var b=d.prev();a=b.offset().left;i=b.offset().top+b.outerHeight()+1}else{a=c.left;i=c.top+d.outerHeight()}}}}}}App.Dropdowns.setTag(m,d.attr("rel"));App.Dropdowns._show(m,a,i);setTimeout(App.Dropdowns.activateCloseEvents,0)};App.Dropdowns.show=function(b,a,c){App.Dropdowns._show($(b),a,c)};App.Dropdowns._show=function(h,a,g){var f=$(document);var b=$(window);var e=b.width()+f.scrollLeft()-h.outerWidth();var c=b.height()+f.scrollTop()-h.outerHeight();h.css("left",Math.min(e-10,a));h.css("top",Math.min(c-10,g));h.show()};App.Dropdowns.hide=function(a){$(a).hide()};App.Dropdowns.setTag=function(a,b){$(a).data("tag",b)};App.Dropdowns.getTag=function(a){return $(a).data("tag")};App.Help={};App.Help.showAbout=function(){var a=function(){App.Dialogs.open({selector:"#aboutDialog"})};if($("#aboutDialog").length==0){App.Ajax.call({target:"/help/ajax_get_about_dialog",success:function(b){$("body").append(b);a()},error:function(b){App.Ajax.handleError(b)}})}else{a()}};App.Help.subscribeNewsletter=function(a){$("#newsletter").val(a);$("#newsletterForm").submit()};/*******************************************************************/
/* Admin Area */
/* [Permissions checked!] */
App.Admin = {};
// Switches to the license edit mode
App.Admin.editLicense = function()
{
App.Hotkeys.unregister('e');
App.Hotkeys.isForm(true);
App.Effects.replace('#license', '#form');
$('#license_key').focus();
}
// A generic function to show the email test dialog.
App.Admin.emailTestDialog = function(o)
{
App.Validation.hideErrors();
// Initialize the dialog
$('#emailAddress').val('');
$('#emailTestForm').unbind('submit');
$('#emailTestSubmit').removeClass('button-busy');
$('#emailTestErrors').css('height', '');
$('#emailTestSuccess').hide();
// Submit action
$('#emailTestForm').submit(function(e)
{
$('#emailTestSuccess').hide();
App.Validation.hideErrors();
var emailAddress = $.trim($('#emailAddress').val());
// Signal busy
$('#emailTestSubmit').addClass('button-busy');
o.submit(
{
emailAddress: emailAddress
});
return false;
});
// Show the dialog
App.Dialogs.open(
{
selector: '#emailTestDialog',
focusedControl: '#emailAddress'
});
}
App.Admin.emailTest = function()
{
App.Admin.emailTestDialog(
{
submit: function(o)
{
App.Ajax.call(
{
target: '/admin/site_settings/ajax_send_test_email',
arguments:
{
email: o.emailAddress
},
success: function(data)
{
$('#emailTestSubmit').removeClass('button-busy');
$('#emailTestSuccess').show();
},
error: function(data)
{
$('#emailTestSubmit').removeClass('button-busy');
App.Ajax.handleError(data, '#emailTestErrors');
}
});
}
});
}
App.Admin.onActionChange = function(o)
{
var t = $(o.element);
var action = parseInt(t.val());
var perm = parseInt($('#permissions').val());
if (!t.is(':checked'))
{
$('#permissions').val(perm & ~action);
if (o.childId)
{
// Also uncheck the child action.
for (var k in o.childId){
var child = $('#' + o.childId[k]);
if (child.is(':checked'))
{
child.prop('checked', false);
App.Admin.onActionChange({element: child.get(0)});
}
}
}
}
else
{
$('#permissions').val(perm | action);
if (o.parentId)
{
// Also check the parent action.
var parent = $('#' + o.parentId);
if (!parent.is(':checked'))
{
parent.prop('checked', true);
App.Admin.onActionChange({element: parent.get(0)});
}
}
}
}
App.Admin.setActive = function(isActive)
{
var userId = App.Dropdowns.getTag('#activeDropdown');
App.Ajax.call(
{
target: '/admin/users/ajax_set_active',
arguments:
{
user_id: userId,
is_active: isActive
},
success: function(data)
{
var userActive = $('.active', $('#user-' + userId));
if (isActive)
{
userActive.html($('#active').html());
}
else
{
userActive.html($('#inactive').html());
}
App.Effects.add(userActive);
},
error: function(data)
{
App.Ajax.handleError(data);
}
});
}
App.Admin.setRole = function(roleId)
{
var userId = App.Dropdowns.getTag('#roleDropdown');
App.Ajax.call(
{
target: '/admin/users/ajax_set_role',
arguments:
{
user_id: userId,
role_id: roleId
},
success: function(data)
{
var userRole = $('.role', $('#user-' + userId));
userRole.html($('.name', $('#role-' + roleId )).html());
App.Effects.add(userRole);
},
error: function(data)
{
App.Ajax.handleError(data);
}
});
}
App.Admin.setUserAccess = function(accessId)
{
var userId = App.Dropdowns.getTag('#userAccessDropdown');
if (!accessId)
{
var display = '-';
var value = '';
}
else
{
var display = $('#access-' + accessId).html();
var value = accessId;
}
$('#useraccess-' + userId).val(value); // The hidden input
$('.access', $('#user-' + userId)).html(display);
}
App.Admin.setGroupAccess = function(accessId)
{
var groupId = App.Dropdowns.getTag('#groupAccessDropdown');
if (!accessId)
{
var display = '-';
var value = '';
}
else
{
var display = $('#access-' + accessId).html();
var value = accessId;
}
$('#groupaccess-' + groupId).val(value); // The hidden input
$('.access', $('#group-' + groupId)).html(display);
}
App.Admin._updateUserTimer = null;
App.Admin.updateUserPreview = function()
{
if (App.Admin._updateUserTimer !== null)
{
clearTimeout(App.Admin._updateUserTimer);
App.Admin._updateUserTimer = null;
}
App.Admin._updateUserTimer = setTimeout(
App.Admin._updateUserPreview,
1000
);
}
App.Admin._updateUserPreview = function()
{
App.Ajax.call(
{
target: '/admin/users/ajax_render_users_preview',
blockUI: false,
arguments:
{
users: $('#users').val()
},
success: function(html)
{
$('#preview').html(html);
App.Admin._updateUserTimer = null;
},
error: function(data)
{
App.Ajax.handleError(data);
App.Admin._updateUserTimer = null;
}
});
}
App.Admin.addUsers = function()
{
$('#usersSubmit').addClass('button-busy');
App.Ajax.call(
{
target: '/admin/users/ajax_render_users_dialog',
blockUI: false,
arguments:
{
users: $('#users').val()
},
success: function(data)
{
$('#usersSubmit').removeClass('button-busy');
$('#addUsersTable').html(data.code);
$('#addUsersReturn').hide();
$('#addUsersReturnDisabled').show();
$('#addUsersClose').hide();
$('#addUsersCloseDisabled').show();
App.Dialogs.open(
{
selector: '#addUsersDialog'
});
if (data.users && data.users.length > 0)
{
App.Admin._addUsers(
data.users,
function()
{
$('#addUsersReturnDisabled').hide();
$('#addUsersReturn').show();
$('#addUsersCloseDisabled').hide();
$('#addUsersClose').show();
}
);
}
},
error: function(data)
{
$('#usersSubmit').removeClass('button-busy');
App.Ajax.handleError(data);
}
});
}
App.Admin._addUsers = function(users, finish)
{
App.Admin._addUser(users, 1, finish);
}
App.Admin._addUser = function(users, index, finish)
{
App.Validation.hideErrors();
var user = users[index - 1];
var row = $('#userDialog-' + index);
$('.busy', row).show();
var rowHeight = row.outerHeight();
var scrollTop = (index - 1) * rowHeight;
if (scrollTop == 0 ||
scrollTop >= $('#addUsersTable').innerHeight() - 10)
{
$('#addUsersTable').scrollTop(scrollTop - 75);
}
App.Ajax.call(
{
target: '/admin/users/ajax_add',
arguments:
{
name: user.name,
email: user.email,
language: $('#language').val(),
locale: $('#locale').val(),
timezone: $('#timezone').val(),
role_id: $('#role_id').val(),
group_ids: App.Controls.Checkboxes.getValues('group_ids'),
invite: $('#invite').is(':checked')
},
success: function(data)
{
$('.busy', row).hide();
$('.success', row).show();
if (index == 1)
{
// Make sure to reload the goals for the current user
// for trial onboarding, if necessary.
if (App.Users.hasGoals())
{
App.Users.reloadGoals();
}
}
if (index < users.length)
{
App.Admin._addUser(users, index + 1, finish);
}
else
{
$('#addUsersSuccess').show();
if (finish)
{
finish();
}
}
},
error: function(data)
{
$('.busy', row).hide();
$('.error', row).show();
App.Ajax.handleError(data, '#addUsersErrors');
if (finish)
{
finish();
}
}
});
}
App.Admin.showUserExtras = function()
{
$('#extrasBox').hide();
$('#extras').show();
}
App.Admin.onInviteClicked = function(invite, radio)
{
var showPassword = false;
if (invite)
{
if (!radio.checked)
{
showPassword = true;
}
}
else
{
if (radio.checked)
{
showPassword = true;
}
}
if (showPassword)
{
App.Effects.show('#passwordContainer');
}
else
{
App.Effects.hide('#passwordContainer');
}
}
App.Admin.editUiscript = function(uiscript_id)
{
$('#uiscriptEdit').addClass('button-busy');
App.Ajax.call(
{
target: '/admin/uiscripts/ajax_edit',
arguments:
{
uiscript_id: uiscript_id,
config: $('#config').val(),
is_active: $('#is_active').is(':checked')
},
success: function(data)
{
$('#uiscriptEdit').removeClass('button-busy');
$('#config').focus();
},
error: function(data)
{
$('#uiscriptEdit').removeClass('button-busy');
App.Ajax.handleError(data);
}
});
}
App.Admin.loadExports = function()
{
$('#showExports .showAll').hide();
$('#showExports .busy').show();
App.Ajax.call(
{
target: '/admin/subscription/ajax_get_exports',
success: function(html)
{
$('#showExports .busy').hide();
$('#exports').html(html);
},
error: function(data)
{
$('#showExports .busy').hide();
App.Ajax.handleError(data);
}
});
}
App.Admin.passwordPolicyChanged = function()
{
if ($('#password_policy').val() == 'custom')
{
$('#passwordPolicyCustom').show();
$('#passwordPolicyDescription').show();
}
else
{
$('#passwordPolicyCustom').hide();
$('#passwordPolicyDescription').hide();
}
}
App.Admin.ipAdd = function(ip)
{
var list = $.trim($('#ip_policy').val());
$('#ip_policy').val(list + "\n" + ip);
$('#ip_policy').focus();
}
App.Admin.onProjectsClicked = function(all, radio)
{
var showProjects = false;
if (all)
{
if (!radio.checked)
{
showProjects = true;
}
}
else
{
if (radio.checked)
{
showProjects = true;
}
}
if (showProjects)
{
App.Effects.show('#includeSpecificContainer');
}
else
{
App.Effects.hide('#includeSpecificContainer');
}
}
App.Admin.showTemplateFields = function()
{
$('#showFields').hide();
$('#fields').show();
}
App.Admin.Integration = new function()
{
var self = this;
self.showDefectTemplate = function()
{
$('#defectTemplateLink').hide();
$('#defectTemplateContainer').show();
$('#defect_template').val('%tests:comment%\n\n%tests:details%');
$('#defect_template').focus();
}
self.addDefectField = function()
{
App.Validation.hideErrors();
$("#addDefectFieldItems").val(
$("#addDefectFieldItems option:first").val()
);
// Submit action
$('#addDefectFieldForm').unbind('submit');
$('#addDefectFieldForm').submit(function(e)
{
App.Dialogs.closeTop();
var field = $('#addDefectFieldItems').val();
$('#defect_template').insertAtCaret('%' + field + '%');
return false;
});
App.Dialogs.open(
{
selector: '#addDefectFieldDialog'
});
}
self.onDefectPluginChange = function()
{
var plugin = $('#defect_plugin').val();
$('#defect_config').val('');
if (plugin)
{
$('#defectBusy').show();
App.Ajax.call(
{
target: '/admin/integration/ajax_get_defect_config',
arguments:
{
plugin: plugin
},
stop: function()
{
$('#defectBusy').hide();
},
success: function(data)
{
$('#defect_config').val(data.config);
if (plugin == 'Jira_REST' || plugin == 'Jira')
{
$('#defectJiraBanner').show();
}
else
{
$('#defectJiraBanner').hide();
}
},
error: function(data)
{
App.Ajax.handleError(data);
}
});
}
else
{
$('#defectJiraBanner').hide();
}
}
self.onReferencePluginChange = function()
{
var plugin = $('#reference_plugin').val();
$('#reference_config').val('');
if (plugin)
{
$('#referenceBusy').show();
App.Ajax.call(
{
target: '/admin/integration/ajax_get_reference_config',
arguments:
{
plugin: plugin
},
stop: function()
{
$('#referenceBusy').hide();
},
success: function(data)
{
$('#reference_config').val(data.config);
if (plugin == 'Jira_REST' || plugin == 'Jira')
{
$('#referenceJiraBanner').show();
}
else
{
$('#referenceJiraBanner').hide();
}
},
error: function(data)
{
App.Ajax.handleError(data);
}
});
}
else
{
$('#referenceJiraBanner').hide();
}
}
self.hideJiraConfig = function()
{
App.Ajax.call(
{
target: '/admin/integration/ajax_hide_jira_config',
blockUI: false,
success: function(data)
{
$('#jiraConfig').hide();
},
error: function(data)
{
// Non-critical error, can be safely ignored.
}
});
}
self.configureJira = function()
{
App.Validation.hideErrors();
// Change version action
$('#jiraIntegrationVersion').change(function () {
var version = $(this).val(),
jiraServer = $('.jira-server'),
jiraCloud = $('.jira-cloud');
if (version === '6') {
jiraCloud.removeClass('hidden');
jiraServer.addClass('hidden');
} else {
jiraCloud.addClass('hidden');
jiraServer.removeClass('hidden');
}
});
// Submit action
$('#jiraIntegrationForm').unbind('submit');
$('#jiraIntegrationForm').submit(function(e)
{
App.Validation.hideErrors();
self._configureJira();
return false;
});
// Reset dialog
$('#jiraIntegrationAddress').val('');
$('#jiraIntegrationVersion').val('6').change();
$('#jiraIntegrationUser').val('');
$('#jiraIntegrationPassword').val('');
$('#jiraIntegrationDefects').prop('checked', true);
$('#jiraIntegrationRefs').prop('checked', true);
App.Dialogs.open(
{
selector: '#jiraIntegrationDialog'
});
}
self._configureJira = function()
{
$('#jiraIntegrationSubmit').addClass('button-busy');
App.Ajax.call(
{
target: '/admin/integration/ajax_get_jira_options',
arguments:
{
address: $('#jiraIntegrationAddress').val(),
version: $('#jiraIntegrationVersion').val(),
user: $('#jiraIntegrationUser').val(),
secret: $('#jiraIntegrationPassword').val(),
enable_defects: $('#jiraIntegrationDefects').is(':checked'),
enable_refs: $('#jiraIntegrationRefs').is(':checked')
},
stop: function()
{
$('#jiraIntegrationSubmit').removeClass('button-busy');
},
success: function(data)
{
if ($('#jiraIntegrationDefects').is(':checked'))
{
$('#defect_id_url').val(data.defect_id_url);
$('#defect_add_url').val(data.defect_add_url);
$('#defect_plugin').val(data.defect_plugin);
$('#defect_config').val(data.defect_config);
$('#defectJiraBanner').show();
}
if ($('#jiraIntegrationRefs').is(':checked'))
{
$('#reference_id_url').val(data.reference_id_url);
$('#reference_add_url').val(data.reference_add_url);
$('#reference_plugin').val(data.reference_plugin);
$('#reference_config').val(data.reference_config);
$('#referenceJiraBanner').show();
}
$.each(data.user_variables, function(ix, field)
{
// If the field already exists, we need to update
// the fallback. Otherwise, we need to add it.
if (App.Users.hasField(field.name))
{
App.Users.editFieldNoDialog(field);
}
else
{
App.Users.addFieldNoDialog(field);
}
});
App.Dialogs.closeTop();
},
error: function(data)
{
App.Ajax.handleError(data, '#jiraIntegrationErrors');
}
});
}
}
App.Admin.hideUIScriptNote = function()
{
App.Effects.hide('#uiscriptsDisabled');
App.Ajax.call(
{
target: '/admin/custom/ajax_hide_uiscript_note',
blockUI: false,
error: function(data)
{
// Ignore possible errors
}
});
}
App.Admin.setSuiteMode = function(el)
{
$(el).prop('checked', true);
}
App.Admin.addExampleProject = function()
{
App.Admin.addExampleProjectDialog(
{
submit: function(name)
{
$('#addProjectSubmit').addClass('button-busy');
App.Ajax.call(
{
target: '/admin/projects/ajax_add_example',
arguments:
{
name: name
},
stop: function()
{
$('#addProjectSubmit').removeClass('button-busy');
},
success: function(data)
{
App.Dialogs.closeTop();
App.Page.load('projects/overview/' + data.id);
},
error: function(data)
{
App.Ajax.handleError(data, '#addProjectErrors');
}
});
}
});
}
App.Admin.addExampleProjectDialog = function(o)
{
App.Validation.hideErrors();
// Initialize the dialog
$('#addProjectName').val('');
$('#addProjectForm').unbind('submit');
$('#addProjectSubmit').removeClass('button-busy');
$('#addProjectForm').submit(function(e)
{
App.Validation.hideErrors();
var name = $.trim($('#addProjectName').val());
o.submit(name);
return false;
});
App.Dialogs.open(
{
selector: '#addProjectDialog'
});
}
App.Admin.cancelRestoration = function() {
App.Ajax.call(
{
target: '/admin/site_settings/ajax_cancel_backup_restoration',
success: function(data) {
App.Effects.hide('#restoreBackup');
$('#restore-backup').removeAttr('disabled');
},
error: function(data) {
App.Ajax.handleError(data);
},
});
};
App.Admin.showCancelRestoration = function(){
$('#content-inner').prepend($('#restoreBackup'));
App.Effects.show('#restoreBackup');
};
App.Admin.requestRestoration = function() {
App.Ajax.call(
{
target: '/admin/site_settings/ajax_request_backup_restoration',
success: function(data) {
if (data.result) {
App.Dialogs.closeTop();
App.Admin.showCancelRestoration();
$('#restore-backup').attr('disabled','disabled');
}
},
error: function(data) {
App.Ajax.handleError(data);
},
});
};
App.Admin.requestBackupDialog = function(message, confirm, extra, extra2) {
let d = $('#backupDialog');
// Reset the OK button (disable) and register for the button/dialog
// events.
let checkboxDiv = $('.checkbox', d);
let ok = $('.dialog-action-default', d);
let confirmText = $(':text', d).val('');
ok.addClass('button-ok-disabled button-disabled');
ok.unbind('click').bind('click', function(e) {
if ($(this).hasClass('button-disabled')) {
return;
}
App.Admin.requestRestoration();
});
let confirm_msg = '' + langc(confirm) + ' ';
checkboxDiv.find('.dialog-confirm').html(confirm_msg);
checkboxDiv.find('input').prop('disabled', false);
checkboxDiv.find('input').prop('checked', false);
let checkbox = checkboxDiv.find(':checkbox');
$('.dialog-message', d).html(message);
$('.dialog-extra', d).html(extra);
$('.dialog-extra2', d).html(extra2);
// Open the dialog and execute init callback from the caller, if any.
// Can be used to add an extra
App.Dialogs.open({
selector: '#backupDialog',
titleColor: '#D04437'
});
function checkConfirm() {
if (checkbox.is(':checked') && confirmText.val() === 'restore backup') {
ok.removeClass('button-ok-disabled button-disabled');
} else {
ok.addClass('button-ok-disabled button-disabled');
}
}
checkbox.click(checkConfirm);
confirmText.keyup(checkConfirm);
};
App.Plans=new function(){var a=this;a.entries=null;a.project_id=null;a.runs=null;a.filters=null;a.applyResponsive=function(){App.Responsive.register("#content",750,function(b){var c=$("#content-header .button-responsive");if(b){c.addClass("button-notext")}else{c.removeClass("button-notext")}})};a.loadEntry=function(){$("#chooseSuiteForm").unbind("submit");$("#chooseSuiteForm").submit(function(b){var c=$("#choose_suite_id").val();$("#chooseSuiteDialogSubmit").addClass("button-busy");a._loadEntryForSuite({suite_id:c,stop:function(){$("#chooseSuiteDialogSubmit").removeClass("button-busy")}});return false});App.Dialogs.open({selector:"#chooseSuiteDialog",focusedControl:"#choose_suite_id"})};a._loadEntryForSuite=function(b){App.Ajax.call({target:"/plans/ajax_render_entry",arguments:{suite_id:b.suite_id},stop:function(){if(b.stop){b.stop()}},success:function(c){App.Dialogs.closeTop();$("#noEntries").hide();$("#entries").append(c.code);a._addEntry(c.entry_id,b.suite_id)},error:function(c){App.Ajax.handleError(c)}})};a.loadEntryForSuite=function(b){a._loadEntryForSuite({suite_id:b})};a._addEntry=function(b,c){a.entries[b]={entry_id:b,suite_id:c,include_all:true,case_ids:[],assignedto_id:null,description:null,config_ids:[]}};a.removeEntry=function(b){$("#entry-"+b).remove();if($(".plan-entry").length==0){$("#noEntries").show()}a._removeEntry(b)};a._removeEntry=function(b){delete a.entries[b]};a.moveEntryUp=function(b){var c=$("#entry-"+b);c.insertBefore(c.prev())};a.moveEntryDown=function(b){var c=$("#entry-"+b);c.insertAfter(c.next())};a._getEntryValue=function(b,c){return a.entries[b][c]};a._setEntryValue=function(b,c,d){a.entries[b][c]=d};a._getEntryValueForConfig=function(c,b){return a.runs[c][b]};a._setEntryValueForConfig=function(d,b,c){a.runs[d][b]=c};a.entriesToString=function(){var b=[];$.each(a.entries,function(c,d){var g=$("#entry-"+d.entry_id);var f=$.extend({name:$(".name",g).text(),index:g.prevAll().length+1},d,{runs:a._getEntryRuns(d.entry_id)});b.push(f)});return JSON.stringify(b)};a._getEntryRuns=function(b){var c=a._getEntryValue(b,"runs");if(!c){return[]}var d=[];$.each(c,function(f,e){var g=a.runs[e];var h=$("#entryRun-"+e);d.push({config_ids:g.config_ids,include_all:g.include_all,case_ids:g.case_ids,assignedto_id:g.assignedto_id,description:g.description,is_selected:$("input.selectionCheckbox",h).is(":checked")})});return d};a._setEntryRuns=function(b,d){var c=[];$.each(d,function(e,f){a.runs[f.uuid]={config_ids:f.config_ids,include_all:f.include_all,case_ids:f.case_ids,assignedto_id:f.assignedto_id,description:f.description};c.push(f.uuid)});a._setEntryValue(b,"runs",c)};a.selectCases=function(d,e){var c=a._getEntryValue(d,"case_ids");var b=new App.Suites.Select({project_id:a.project_id,suite_id:e,case_ids:c,columns_custom:false,column_area_id:3,filters:a.filters});$("#selectCasesSubmit").unbind("click");$("#selectCasesSubmit").bind("click",function(){var f=b.getSelection().case_ids;a._selectCasesSubmit({entry_id:d,suite_id:e,case_ids:f,success:function(g){b.close();a.filters=b.filters;a._selectCases(d,f,g)}});return false});b.open()};a._selectCasesSubmit=function(b){$("#selectCasesSubmit").addClass("button-busy");App.Ajax.call({target:"/plans/ajax_render_cases_info",arguments:{entry_id:b.entry_id,suite_id:b.suite_id,case_ids:b.case_ids},stop:function(){$("#selectCasesSubmit").removeClass("button-busy")},success:function(c){b.success(c)},error:function(c){App.Ajax.handleError(c)}})};a._selectCases=function(c,b,e){var d=$("#entry-"+c);$(".suite .includeSpecificLink",d).html(e);$(".suite .includeSpecificLink",d).show();$(".suite .includeAllLink",d).hide();a._setEntryValue(c,"include_all",false);a._setEntryValue(c,"case_ids",b)};a.selectCasesAll=function(b){var c=$("#entry-"+b);$(".suite .includeAllLink",c).show();$(".suite .includeSpecificLink",c).hide();a._setEntryValue(b,"include_all",true)};a.selectCasesForConfig=function(d,e){var c=a._getEntryValueForConfig(d,"case_ids");var b=new App.Suites.Select({project_id:a.project_id,suite_id:e,case_ids:c,columns_custom:false,column_area_id:3,filters:a.filters});$("#selectCasesSubmit").unbind("click");$("#selectCasesSubmit").bind("click",function(){var f=b.getSelection().case_ids;a._selectCasesSubmitForConfig({config_id:d,suite_id:e,case_ids:f,success:function(g){b.close();a.filters=b.filters;a._selectCasesForConfig(d,f,g)}});return false});b.open()};a._selectCasesSubmitForConfig=function(b){$("#selectCasesSubmit").addClass("button-busy");App.Ajax.call({target:"/plans/ajax_render_cases_info_for_config",arguments:{config_id:b.config_id,suite_id:b.suite_id,case_ids:b.case_ids},stop:function(){$("#selectCasesSubmit").removeClass("button-busy")},success:function(c){b.success(c)},error:function(c){App.Ajax.handleError(c)}})};a._selectCasesForConfig=function(e,b,d){var c=$("#entryRun-"+e);$("span.includeSpecificInfo",c).html(d);$("span.includeAll",c).hide();$("span.includeDefault",c).hide();App.Effects.add($("span.includeSpecific",c));a._setEntryValueForConfig(e,"include_all",false);a._setEntryValueForConfig(e,"case_ids",b)};a.selectCasesAllForConfig=function(c,d){var b=$("#entryRun-"+c);$("span.includeSpecific",b).hide();$("span.includeDefault",b).hide();App.Effects.add($("span.includeAll",b));a._setEntryValueForConfig(c,"include_all",true)};a.clearCasesForConfig=function(c,d){var b=$("#entryRun-"+c);$("span.includeSpecific",b).hide();$("span.includeAll",b).hide();App.Effects.add($("span.includeDefault",b));a._setEntryValueForConfig(c,"include_all",null)};a.selectName=function(b){var c=$("#entry-"+b);a._selectNameDialog({name:$(".name",c).text(),submit:function(d){App.Dialogs.closeTop();$(".name",c).text(d);App.Effects.add($(".name",c))}})};a._selectNameDialog=function(b){$("#editNameErrors").hide();$("#editName").val(b.name);$("#editNameForm").unbind("submit");$("#editNameForm").bind("submit",function(){$("#editNameErrors").hide();var c=$.trim($("#editName").val());if(!c){$("#editNameErrors").show()}else{b.submit(c)}return false});App.Dialogs.open({focusedControl:"#editName",selectedControl:"#editName",selector:"#editNameDialog"})};a.selectAssignedTo=function(c){var b=a._getEntryValue(c,"assignedto_id");App.Users.selectDialog({user_id:b,submit:function(d){App.Dialogs.closeTop();a._selectAssignedTo(c,d)}})};a._selectAssignedTo=function(c,d){var e=$("#entry-"+c);var f=$(".suite .assignedTo",e);var b=$(".suite .assignedToNobody",e);if(d.id){f.text(d.name).show();b.hide();App.Effects.add(f)}else{App.Effects.replace(f,b);App.Effects.add(b)}a._setEntryValue(c,"assignedto_id",d.id)};a.selectAssignedToForConfig=function(c){var b=a._getEntryValueForConfig(c,"assignedto_id");App.Users.selectDialog({user_id:b,submit:function(d){App.Dialogs.closeTop();a._selectAssignedToForConfig(c,d)}})};a._selectAssignedToForConfig=function(c,b){if(b.id){a._setAssignedToForConfig(c,b)}else{a._clearAssignedToForConfig(c)}};a._setAssignedToForConfig=function(d,b){var c=$("#entryRun-"+d);$("span.assignedToDefault",c).hide();$("span.assignedToName",c).text(b.name);App.Effects.add($("span.assignedTo",c));a._setEntryValueForConfig(d,"assignedto_id",b.id)};a.clearAssignedToForConfig=function(b){a._clearAssignedToForConfig(b)};a._clearAssignedToForConfig=function(c){var b=$("#entryRun-"+c);$("span.assignedTo",b).hide();App.Effects.add($("span.assignedToDefault",b));a._setEntryValueForConfig(c,"assignedto_id",null)};a.selectDescription=function(b){var c=a._getEntryValue(b,"description");a._selectDescriptionDialog({description:c,success:function(d){a._selectDescription(b,d)}})};a._selectDescriptionDialog=function(b){App.Validation.hideErrors();$("#editRunDescription").val(b.description);$("#editRunForm").unbind("submit");$("#editRunForm").submit(function(c){b.success($.trim($("#editRunDescription").val()));App.Dialogs.closeTop();return false});App.Dialogs.open({selector:"#editRunDialog",focusedControl:"#editRunDescription",selectedControl:"#editRunDescription"})};a._selectDescription=function(b,d){var c=$("#entry-"+b);App.Effects.add($(".suite .descriptionLink",c));a._setEntryValue(b,"description",d)};a.selectDescriptionForConfig=function(c){var b=a._getEntryValueForConfig(c,"description");a._selectDescriptionDialog({description:b,success:function(d){a._selectDescriptionToForConfig(c,d)}})};a._selectDescriptionToForConfig=function(c,b){if(b){a._setDescriptionForConfig(c,b)}else{a._clearDescriptionForConfig(c)}};a._setDescriptionForConfig=function(d,b){var c=$("#entryRun-"+d);$("span.descriptionDefault",c).hide();$("span.description",c).show();App.Effects.add($("span.descriptionChange",c));a._setEntryValueForConfig(d,"description",b)};a.clearDescriptionForConfig=function(b){a._clearDescriptionForConfig(b)};a._clearDescriptionForConfig=function(c){var b=$("#entryRun-"+c);$("span.description",b).hide();App.Effects.add($("span.descriptionDefault",b));a._setEntryValueForConfig(c,"description",null)};a.selectConfigs=function(d,b){var c=a._getEntryValue(b,"config_ids");App.Configs.select({selected:c,submit:function(g){var f=function(){$("#selectConfigsSubmit").removeClass("button-busy");App.Dialogs.closeTop()};var e=function(h){$("#selectConfigsSubmit").removeClass("button-busy");App.Ajax.handleError(h)};a._setEntryValue(b,"config_ids",g.selected);$("#selectConfigsSubmit").addClass("button-busy");if(g.refreshAll){a._updateConfigs({success:f,error:e})}else{a._updateConfigsForEntry({suite_id:d,entry_id:b,config_ids:g.selected,success:f,error:e})}},cancel:function(e){if(e.refreshAll){a._updateConfigs({error:function(f){App.Ajax.handleError(f)}})}}})};a._updateConfigs=function(c){var b=false;$.each(a.entries,function(d,e){a._updateConfigsForEntry({suite_id:e.suite_id,entry_id:e.entry_id,config_ids:e.config_ids,success:function(){if(!b){b=true;if(c.success){c.success()}}},error:function(f){if(!b){b=true;if(c.error){c.error(f)}}}})})};a._updateConfigsForEntry=function(b){App.Ajax.call({target:"/plans/ajax_render_configs",arguments:{suite_id:b.suite_id,entry_id:b.entry_id,config_ids:b.config_ids,runs:JSON.stringify(a._getEntryRuns(b.entry_id))},success:function(d){var c=$("#entry-"+b.entry_id);if(d.runs.length>0){$(".configurations",c).html(d.code);$(".configurations",c).show()}else{$(".configurations",c).hide();$(".configurations",c).html("")}a._setEntryRuns(b.entry_id,d.runs);b.success()},error:function(c){b.error(c)}})};a.confirmEdit=function(b,c){App.Validation.hideErrors();$("#confirmDiffForm").unbind("submit");$("#confirmDiffForm").submit(function(d){App.Dialogs.closeTop();a.disableFormSubmit();c();return false});$("#accept").addClass("button-busy");App.Ajax.call({target:"/plans/ajax_render_diff",arguments:{plan_id:b,entries_str:a.entriesToString()},success:function(d){$("#accept").removeClass("button-busy");if(d.show_diff){$("#diff").html(d.code);App.Dialogs.open({selector:"#confirmDiffDialog"})}else{a.disableFormSubmit();c()}},error:function(d){$("#accept").removeClass("button-busy");App.Ajax.handleError(d)}})};a.disableFormSubmit=function(){$("#accept").hide();$("#acceptDisabled").show()};a.load=function(){a._loadDialog({submit:function(b){a.rerun(b.plan_id)}})};a._loadDialog=function(b){App.Validation.hideErrors();$("#loadPlanForm input:radio[name=selectedPlan]").prop("checked",false);$("#loadPlanForm").unbind("submit");$("#loadPlanForm").submit(function(d){var c=$("#loadPlanForm input:radio[name=selectedPlan]:checked").val();if(!c){$("#loadPlanErrors").show();return false}b.submit({plan_id:c});return false});App.Dialogs.open({selector:"#loadPlanDialog"})};a.loadCompleted=function(b){$("#showCompleted .showAll").hide();$("#showCompleted .busy").show();App.Ajax.call({target:"/plans/ajax_get_completed",arguments:{project_id:b},success:function(c){$("#showCompleted .busy").hide();$("#completed").html(c)},error:function(c){$("#showCompleted .busy").hide();App.Ajax.handleError(c)}})};a.loadActive=function(b){$("#showActive .showAll").hide();$("#showActive .busy").show();App.Ajax.call({target:"/plans/ajax_get_active",arguments:{project_id:b},success:function(c){$("#showActive .busy").hide();$("#active").html(c)},error:function(c){$("#showActive .busy").hide();App.Ajax.handleError(c)}})};a.exportTestsCsv=function(b){a._exportTests(b,"csv")};a.exportTestsExcel=function(b){a._exportTests(b,"excel")};a._exportTests=function(c,d){var b=new App.ExportCsv({format:d});b.open()};a.rerun=function(c,b){App.Runs.rerunDialog({submit:function(d){App.Page.load("/plans/rerun/{0}/{1}&status_ids={2}",c,b?b:"",d.join(","))}})};a.loadActivities=function(b,c){$("#activitiesPaginationBusy").show();App.Ajax.call({target:"/plans/ajax_render_activities",arguments:{plan_id:b,offset:c},success:function(d){$("#activities").html(d.activities);$("#activitiesPagination").html(d.pagination);$("#activitiesPaginationBusy").hide()},error:function(d){$("#activitiesPaginationBusy").hide();App.Ajax.handleError(d)}})};a.selectActivityDays=function(b){App.Charts.selectTimeframe({success:function(c){a._reloadActivityChart(b,c)}})};a._reloadActivityChart=function(b,c){App.Ajax.call({target:"/plans/ajax_render_activity_chart",arguments:{plan_id:b,days:c},success:function(d){App.Dialogs.closeTop();App.Charts.reload(App.Charts.activity,"#activityContainer",d)},error:function(d){App.Ajax.handleError(d)}})};a.loadDefects=function(b,c){$("#defectsPaginationBusy").show();App.Ajax.call({target:"/plans/ajax_render_defects",arguments:{plan_id:b,offset:c},stop:function(){$("#defectsPaginationBusy").hide()},success:function(d){$("#defects").html(d.defects);$("#defectsPagination").html(d.pagination);$("#defectsPaginationBusy").hide()},error:function(d){App.Ajax.handleError(d)}})}};App.Configs={};App.Configs.remove=function(b){var a=$("#configBusy-"+b);a.show();App.Ajax.call({target:"/configs/ajax_delete",arguments:{config_id:b},success:function(c){a.hide();App.Effects.remove("#config-"+b);App.Configs.refreshNeeded=true},error:function(c){a.hide();App.Ajax.handleError(c)}})};App.Configs.removeGroup=function(b){var a=$("#groupBusy-"+b);a.show();App.Ajax.call({target:"/configs/ajax_delete_group",arguments:{group_id:b},success:function(c){a.hide();App.Effects.remove("#group-"+b);App.Configs.refreshNeeded=true},error:function(c){a.hide();App.Ajax.handleError(c)}})};App.Configs.add=function(a){App.Configs.setEditType("addConfig");App.Configs.editDialog({name:"",titleSelector:".addConfig",submit:function(b){App.Ajax.call({target:"/configs/ajax_add",arguments:{group_id:a,name:b},success:function(c){var e=$(c);var d=$("#configurations #group-"+a);e.appendTo(d.find("table"));App.Configs.editSuccess(e)},error:function(c){$("#addConfigSubmit").removeClass("button-busy");App.Ajax.handleError(c,"#addConfigErrors")}})}})};App.Configs.edit=function(c){App.Configs.setEditType("editConfig");var a="#config-"+c;var b=$(".configName",$(a)).text();App.Configs.editDialog({name:b,titleSelector:".editConfig",submit:function(d){App.Ajax.call({target:"/configs/ajax_edit",arguments:{config_id:c,name:d},success:function(e){$(".configName",$(a)).text(d);App.Configs.editSuccess(a+" .configName");App.Configs.refreshNeeded=true},error:function(e){$("#addConfigSubmit").removeClass("button-busy");App.Ajax.handleError(e,"#addConfigErrors")}})}})};App.Configs.addGroup=function(a){App.Configs.setEditType("addGroup");App.Configs.editDialog({name:"",titleSelector:".addGroup",submit:function(b){App.Ajax.call({target:"/configs/ajax_add_group",arguments:{project_id:a,name:b},success:function(c){var d=$(c);d.appendTo($("#configurations div.groups"));App.Configs.editSuccess(d)},error:function(c){$("#addConfigSubmit").removeClass("button-busy");App.Ajax.handleError(c,"#addConfigErrors")}})}})};App.Configs.editGroup=function(c){App.Configs.setEditType("editGroup");var a="#group-"+c;var b=$(".groupName",$(a)).text();App.Configs.editDialog({name:b,titleSelector:".editGroup",submit:function(d){App.Ajax.call({target:"/configs/ajax_edit_group",arguments:{group_id:c,name:d},success:function(e){$(".groupName",$(a)).text(d);App.Configs.editSuccess(a+" .groupName");App.Configs.refreshNeeded=true},error:function(e){$("#addConfigSubmit").removeClass("button-busy");App.Ajax.handleError(e,"#addConfigErrors")}})}})};App.Configs.toggleGroup=function(c){var a=$("#groupToggle-"+c);var b=a.val()=="1"?false:true;a.val(b?"1":"0");$("input",$("#group-"+c)).prop("checked",b)};App.Configs.editSuccess=function(a){$("#addConfigSubmit").removeClass("button-busy");App.Effects.add(a);App.Dialogs.close("#addConfigDialog")};App.Configs.setEditType=function(a){$("#addConfigDialog .addConfig").hide();$("#addConfigDialog .editConfig").hide();$("#addConfigDialog .addGroup").hide();$("#addConfigDialog .editGroup").hide();$("#addConfigDialog ."+a).show()};App.Configs.editDialog=function(a){App.Validation.hideErrors();$("#addConfigName").val(a.name);$("#addConfigSubmit").removeClass("button-busy");$("#addConfigForm").unbind("submit");$("#addConfigForm").submit(function(c){App.Validation.hideErrors();var b=$.trim($("#addConfigName").val());$("#addConfigSubmit").addClass("button-busy");a.submit(b);return false});App.Dialogs.open({selector:"#addConfigDialog",focusedControl:"#addConfigName",selectedControl:"#addConfigName",titleSelector:a.titleSelector})};App.Configs.getSelected=function(){var b=$("#configurations input.selectionCheckbox");var a=new Array();$.each(b,function(d,c){if(c.checked){var e=parseInt(c.value);a.push(e)}});return a};App.Configs.setSelected=function(b){$("#configurations input.selectionCheckbox").prop("checked",false);if(!b){return}for(i=0;i0){var b=fieldType;$(f).val(b);var a=$("#typeChangeConfirm").html();App.Dialogs.confirm(a,function(){c();$(f).val(d)})}else{c()}};App.Fields.configsToString=function(){var a=[];$.each(fieldConfigs,function(b,c){a.push(c)});return JSON.stringify(a)};App.Fields.checkboxInit=function(a){$("#fieldOptionsDefault").val(a?a.options.default_value:"0")};App.Fields.defaultGetOptions=function(){var a={is_required:$("#fieldOptionsRequired").is(":checked"),default_value:$("#fieldOptionsDefault").val()};return a};App.Fields.defaultInit=function(b){var a="";var c=false;if(b){a=b.options.default_value;c=b.options.is_required}$("#fieldOptionsDefault").val(a);$("#fieldOptionsRequired").prop("checked",c)};App.Fields.dropdownGetOptions=function(){var a=App.Fields.defaultGetOptions();a.items=$("#fieldOptionsItems").val();return a};App.Fields.dropdownInit=function(c){var b="";var a="";if(c){b=c.options.items;a=c.options.default_value}$("#fieldOptionsItems").val(b);App.Fields.dropdownUpdateDefault(a)};App.Fields.dropdownItemsLeave=function(){App.Fields.dropdownUpdateDefault()};App.Fields.dropdownUpdateDefault=function(a){var c=$("#fieldOptionsItems").val().split(/\r?\n/);if(!a){a=$("#fieldOptionsDefault").val()}var b=[];$.each(c,function(e,f){if(f.match(/^(^\d+),([^,]+)(,(-|\+))?$/)){var d=f.split(/,/);b.push({name:d[1],value:d[0]})}});App.Controls.clearCombobox("#fieldOptionsDefault");App.Controls.fillCombobox("#fieldOptionsDefault",b);$("#fieldOptionsDefault").val(a)};App.Fields.multiselectGetOptions=function(){var a=App.Fields.defaultGetOptions();a.items=$("#fieldOptionsItems").val();return a};App.Fields.multiselectInit=function(b){var a="";if(b){a=b.options.items}$("#fieldOptionsItems").val(a)};App.Fields.multiselectToString=function(b){var a=$("#"+b+"_select").val();return a?a.join(","):""};App.Fields.textGetOptions=function(){var a=App.Fields.defaultGetOptions();a.format=$("#fieldOptionsFormat").val();a.rows=$("#fieldOptionsRows").val();return a};App.Fields.textInit=function(a){$("#fieldOptionsFormat").val(a?a.options.format:"markdown");$("#fieldOptionsRows").val(a?a.options.rows:"")};App.Fields.stepsGetOptions=function(){var a=App.Fields.defaultGetOptions();a.format=$("#fieldOptionsFormat").val();a.has_expected=$("#fieldOptionsHasExpected").is(":checked");a.rows=$("#fieldOptionsRows").val();return a};App.Fields.stepsInit=function(a){var d="markdown";if(a){d=a.options.format}$("#fieldOptionsFormat").val(d);var c=5;if(a&&a.options.rows){c=a.options.rows}$("#fieldOptionsRows").val(c);var b=true;if(a){b=a.options.has_expected!==undefined?a.options.has_expected:false}$("#fieldOptionsHasExpected").prop("checked",b)};App.Fields.resultsGetOptions=function(){var a=App.Fields.defaultGetOptions();a.format=$("#fieldOptionsFormat").val();a.has_expected=$("#fieldOptionsHasExpected").is(":checked");a.has_actual=$("#fieldOptionsHasActual").is(":checked");return a};App.Fields.resultsInit=function(b){var d="markdown";if(b){d=b.options.format}$("#fieldOptionsFormat").val(d);var c=true;if(b){c=b.options.has_expected!==undefined?b.options.has_expected:false}$("#fieldOptionsHasExpected").prop("checked",c);var a=false;if(b){a=b.options.has_actual!==undefined?b.options.has_actual:false}$("#fieldOptionsHasActual").prop("checked",a)};App.Update={};App.Update.runSteps=function(b,a){App.Update.runStep(b,a)};App.Update.runStep=function(a,c){var b=$("#step-"+a);b.find("th").removeClass("inactive");b.find("td").removeClass("inactive");b.find(".busy").show();App.Ajax.call({target:"/updater/ajax_run_update",arguments:{step:a},success:function(d){b.find(".busy").hide();b.find(".success").show();++a;if(a<=c){App.Update.runStep(a,c)}else{$("#update-success").show()}},error:function(e){b.find(".busy").hide();b.find(".error").show();var d=$("#update-error");d.find(".message").text(e.error);d.show()}})};App.Update.runFileCheck=function(){var a=$("#filecheck");a.find(".busy").show();App.Ajax.call({target:"/updater/ajax_check_files",success:function(b){a.find(".busy").hide();a.find(".success").show();$("#update-disabled").hide();$("#update").show();$("#update-confirm").show()},error:function(c){a.find(".busy").hide();a.find(".error").show();var b=$("#filecheck-error");b.find(".message").text(c.error);b.show()}})};App.Update.setLicense=function(){App.Validation.hideErrors();$("#setLicenseKey").val("");$("#setLicenseForm").unbind("submit");$("#setLicenseForm").submit(function(a){App.Validation.hideErrors();App.Update._setLicenseSubmit($("#setLicenseKey").val());return false});App.Dialogs.open({selector:"#setLicenseDialog"})};App.Update._setLicenseSubmit=function(a){$("#setLicenseSubmit").addClass("button-busy");App.Ajax.call({target:"/updater/ajax_set_license",arguments:{key:a},stop:function(){$("#setLicenseSubmit").removeClass("button-busy")},success:function(b){App.Dialogs.closeTop();$("#update").click()},error:function(b){App.Ajax.handleError(b,"#setLicenseErrors")}})};App.Priorities={};App.Priorities.moveUp=function(b){var a=$("#priority-"+b);$(".moveUp",a).hide();$(".moveUpBusy",a).show();App.Ajax.call({target:"/admin/priorities/ajax_move_up",arguments:{priority_id:b},success:function(d){$(".moveUp",a).show();$(".moveUpBusy",a).hide();var c=a.prev();a.insertBefore(c);App.Priorities.syncMoveButtons(a,c);if($("td",a).hasClass("separator")){$("td",a).removeClass("separator");$("td",c).addClass("separator")}},error:function(c){$(".moveUp",a).show();$(".moveUpBusy",a).hide();App.Ajax.handleError(c)}})};App.Priorities.moveDown=function(b){var a=$("#priority-"+b);$(".moveDown",a).hide();$(".moveDownBusy",a).show();App.Ajax.call({target:"/admin/priorities/ajax_move_down",arguments:{priority_id:b},success:function(d){$(".moveDown",a).show();$(".moveDownBusy",a).hide();var c=a.next();a.insertAfter(c);App.Priorities.syncMoveButtons(a,c);if($("td",c).hasClass("separator")){$("td",c).removeClass("separator");$("td",a).addClass("separator")}},error:function(c){$(".moveDown",a).show();$(".moveDownBusy",a).hide();App.Ajax.handleError(c)}})};App.Priorities.syncMoveButtons=function(e,d){var c=$(".moveUp",e).is(":visible");var b=$(".moveDown",e).is(":visible");var a=$(".moveUp",d).is(":visible");var f=$(".moveDown",d).is(":visible");App.Effects.setVisible($(".moveUp",e),a);App.Effects.setVisible($(".moveDown",e),f);App.Effects.setVisible($(".moveUp",d),c);App.Effects.setVisible($(".moveDown",d),b)};App.Sidebar=new function(){var a=this;a.sidebar=$("#sidebar");a.pos=0;a.offset=0;a.width=0;a.min=250;a.max=500;a.visible=true;a.splitter=null;a.document=null;a.init=function(){a._setResizable()};a.isVisible=function(){return a.visible};a.getWidth=function(){return a.sidebar.width()};a._setResizable=function(){a.document=$(document);a.splitter=$("#sidebar-splitter");a.splitter.bind("mousedown.sidebar",a._resizeStart)};a._resizeStart=function(b){a.pos=a._getResizePosition(b);a.width=a.sidebar.width();a.offset=a.width;a.document.bind("mousemove.sidebar",a._resize);a.document.bind("mouseup.sidebar",a._resizeStop);a._resizeShowProgress();return false};a._resizeShowProgress=function(){$("body").css("cursor","ew-resize");a.splitter.addClass("splitter-resizing")};a._resize=function(c){var b=a._resizeWidth(c);var d=b-a.width;a.width=Math.round(b);a.sidebar.width(a.width);a._resizePage(d);a._resizeChanged();return false};a._resizeWidth=function(c){var d=a.pos-a._getResizePosition(c);var b=d+a.offset;return Math.min(Math.max(b,a.min),a.max)};a._resizeChanged=function(){$(window).trigger("resize")};a._resizePage=function(b){App.Page.updateMinWidth(b)};a._resizeStop=function(b){a.document.unbind(".sidebar");a._resizeHideProgress();a._resizeSave();a._resizeChanged();Highcharts.charts.forEach(function(c){if(!c){return}c.reflow()});return false};a._resizeHideProgress=function(){a.splitter.removeClass("splitter-resizing");$("body").css("cursor","")};a._resizeSave=function(){App.Ajax.call({target:"mysettings/ajax_set_sidebar_width",blockUI:false,arguments:{width:Math.round(a.sidebar.width())},success:function(b){},error:function(b){}})};a._getResizePosition=function(b){return a.document.scrollLeft()+b.clientX}};App.Defects={};App.ready(function(){$.subscribe("tests.loaded, tests.changed","defects",function(a){if(a.project_id){App.Defects.applyLookup(a.project_id)}})});App.Defects.preparePush=function(d,b){$("#pushDefectLink").hide();$("#pushDefectLinkBusy").show();if(b){var e=b}else{var e=App.Tests.getSelected();if(e==""){return}}var c=App.Tests.resultDialogValues();var a=function(f){$("#pushDefectLink").show();$("#pushDefectLinkBusy").hide();App.Ajax.handleError(f)};c.project_id=d;c.test_ids=e;App.Ajax.call({target:"/defects/ajax_prepare_push",arguments:c,success:function(f){if(f.show_dialog){$("#pushDefectDialog").remove();$("body").append(f.dialog);$("#pushDefectLink").show();$("#pushDefectLinkBusy").hide();App.applyTextAreaResizer();App.Defects.pushDialog(c)}else{App.Defects.push(c,{success:function(g){$("#pushDefectLink").show();$("#pushDefectLinkBusy").hide()},error:a})}},error:a})};App.Defects.getInput=function(a){$("#pushDefectDialog .defect").each(function(b,d){var c=$(this);a[c.attr("name")]=c.val()});return a};App.Defects.pushDialog=function(a){App.Validation.hideErrors();$("#pushDefectsErrors").empty();$("#pushDefectForm").unbind("submit");$("#pushDefectForm").submit(function(b){App.Validation.hideErrors();$("#pushDefectsErrors").empty();a=App.Defects.getInput(a);$("#pushDefectSubmit").addClass("button-busy");App.Defects.push(a,{success:function(c){$("#pushDefectSubmit").removeClass("button-busy");App.Dialogs.close("#pushDefectDialog")},error:function(c){$("#pushDefectSubmit").removeClass("button-busy");App.Ajax.handleError(c,"#pushDefectErrors")}});return false});$("#pushDefectForm select.single").each(function(b,c){var d=$(c);if(d.attr("rel")=="cascading"){d.unbind("change");d.bind("change",function(f){a=App.Defects.getInput(a);App.Defects.onFieldChange(a,this)})}});$("#pushDefectForm select.multi").each(function(b,c){$(c).chosen()});App.Dialogs.open({selector:"#pushDefectDialog"});$.publish("push_dialog.loaded")};App.Defects.push=function(a,b){App.Ajax.call({target:"/defects/ajax_push",arguments:a,success:function(d){b.success(d);if(d.defect_id){var c=$("#addResultDefects").val();if(c){c=c+","+d.defect_id}else{c=d.defect_id}$("#addResultDefects").val(c)}App.Effects.add("#pushDefectLink")},error:function(c){b.error(c)}})};App.Defects.onFieldChange=function(a,c){a.field=$(c).attr("field");var b=$("#defect_"+a.field+"Busy");b.show();App.Ajax.call({target:"/defects/ajax_get_dependent_fields",arguments:a,success:function(d){$.each(d.fields,function(f,g){var h=$("#defect_"+f);if(g.type=="dropdown"||g.type=="multiselect"){$("option",h).remove();if(g.type=="dropdown"){h.append(' ')}if(g.options&&g.keys){$.each(g.keys,function(e,j){var l=$(" ");l.val(j);l.text(g.options[j]);l.appendTo(h)})}}if(g.value){h.val(g.value)}if(g.disabled){h.prop("disabled",true)}else{h.prop("disabled",false)}if(g.type=="multiselect"){h.trigger("liszt:updated")}});b.hide()},error:function(d){b.hide();App.Ajax.handleError(d)}})};App.Defects.applyLookup=function(b,a){var c=null;$("a.defectLink, span.defectLink",a||$(document)).bubble({bubble:"#defectBubble",onShow:function(d){var f=$(d).attr("rel");c=App.Defects.lookup(b,f)},onHide:function(f){var d=$(".content",$("#defectBubble"));d.html("");if(c){App.Ajax.abort(c)}}})};App.Defects.lookup=function(c,b){var a=$("#defectBubble");var e=$(".busy",a);var d=$(".content",a);var f=$(".error",a);f.hide();d.hide();d.html("");e.show();return App.Ajax.call({target:"/defects/ajax_lookup",blockUI:false,arguments:{project_id:c,defect_id:b},success:function(g){d.html(g);d.show();$(".container",d).css("height",a.height()-$(".header",d).outerHeight()-$(".attributes",d).outerHeight()-$(".footer",d).outerHeight());e.hide()},error:function(g){e.hide();if(g&&g.error){$("#defectBubbleError").text(g.error);f.show()}else{a.hide()}}})};App.Defects._loadDetailsStopped=false;App.Defects.loadDetails=function(c,d){var a={};$("#defects .js-defect").each(function(f,g){var h=$(g).attr("rel");if(!a.hasOwnProperty(h)){a[h]=true}});a=Object.keys(a);App.Defects._loadDetailsStopped=false;if(d){var e=0;for(i=0;i34&&b<40)||b==46){return true}if(b>47&&b<58){if(!c.shiftKey){return true}}if((b>=97&&b<=102)||(b>=65&&b<=70)){return true}return false}};App.Reports=new function(){var a=this;a.applyProgressCheck=function(b){window.setTimeout(function(){a._applyProgressCheck(b,20000)},10000)};a._applyProgressCheck=function(c,b){var d=0;$.each(c,function(e,f){window.setTimeout(function(){a._checkProgress(f,b)},d*1000);d++})};a._checkProgress=function(c,b){App.Ajax.call({target:"/reports/ajax_check_status",blockUI:false,arguments:{report_id:c},success:function(d){if(d.status!=1){$("#report-"+c).replaceWith(d.html);App.Effects.add("#report-"+c)}else{window.setTimeout(function(){a._checkProgress(c,Math.min(b+10000,60000))},b)}},error:function(d){}})};a.print=function(e){var c=document.frames?document.frames[e]:document.getElementById(e);var d=c.contentWindow||c;var b=$("#reportPrint .icon");b.css("padding-top",Math.max(0,Math.round($("#content").outerHeight()/2)-100)+"px");$("#reportPrint").show();if(d.beforePrint){d.beforePrint()}d.focus();d.print();if(d.afterPrint){d.afterPrint()}$("#reportPrint").hide();return false};a.share=function(c,b){a._shareDialog({is_private:b,submit:function(){a._share(c)}})};a._shareDialog=function(b){App.Validation.hideErrors();$("#shareReportSuccess").hide();if(b.is_private){$("#shareReportLinkContainer").hide()}else{$("#shareReportLinkContainer").show()}$("#shareReportLink").attr("checked",false);$("#shareReportPDFAttachment").attr("checked",false);$("#shareReportHTMLAttachment").attr("checked",false);$("#shareReportForm").unbind("submit");$("#shareReportSubmit").removeClass("button-busy");$("#shareReportForm").submit(function(c){App.Validation.hideErrors();$("#shareReportSuccess").hide();b.submit();return false});App.Dialogs.open({selector:"#shareReportDialog"})};a._share=function(e){$("#shareReportSubmit").addClass("button-busy");var c=$("#shareReportHTMLAttachment").is(":checked");var d=$("#shareReportPDFAttachment").is(":checked");var b=d||c;App.Ajax.call({target:"/reports/ajax_share",arguments:{report_id:e,link:$("#shareReportLink").is(":checked"),link_recipients:$("#shareReportLinkRecipients").val(),attachment:b,notify_attachment_html_format:c,notify_attachment_pdf_format:d,attachment_recipients:$("#shareReportAttachmentRecipients").val()},success:function(f){$("#shareReportSubmit").removeClass("button-busy");$("#shareReportSuccess").show()},error:function(f){$("#shareReportSubmit").removeClass("button-busy");App.Ajax.handleError(f,"#shareReportErrors")}})};a.showError=function(){$("#statusTraceLink").hide();$("#statusMessage").hide();$("#statusTrace").show()};a.addTextToName=function(b){$("#name").insertAtCaret(b)};a.loadPrivate=function(b,c){$("#privatePaginationBusy").show();App.Ajax.call({target:"/reports/ajax_render_private",arguments:{project_id:b,offset:c},success:function(d){$("#private").html(d.reports);$("#privatePagination").html(d.pagination);$("#privatePaginationBusy").hide()},error:function(d){$("#privatePaginationBusy").hide();App.Ajax.handleError(d)}})};a.loadShared=function(b,c){$("#sharedPaginationBusy").show();App.Ajax.call({target:"/reports/ajax_render_shared",arguments:{project_id:b,offset:c},success:function(d){$("#shared").html(d.reports);$("#sharedPagination").html(d.pagination);$("#sharedPaginationBusy").hide()},error:function(d){$("#sharedPaginationBusy").hide();App.Ajax.handleError(d)}})};a.remove=function(b){var c=$("#report-"+b);$(".deleteLink",c).hide();$(".deleteBusy",c).show();App.Ajax.call({target:"/reports/ajax_delete",arguments:{report_id:b},success:function(d){c.remove()},error:function(d){$(".deleteBusy",c).hide();$(".deleteLink",c).show();App.Ajax.handleError(d)}})};a.removeJob=function(b){var c=$("#reportJob-"+b);$(".deleteLink",c).hide();$(".deleteBusy",c).show();App.Ajax.call({target:"/reports/ajax_delete_job",arguments:{report_job_id:b},success:function(d){c.remove()},error:function(d){$(".deleteBusy",c).hide();$(".deleteLink",c).show();App.Ajax.handleError(d)}})};a.removeTemplate=function(b){var c=$("#report-template-"+b);$(".deleteLink",c).hide();$(".deleteBusy",c).show();App.Ajax.call({target:"/reports/ajax_delete_template",arguments:{report_template_id:b},success:function(d){c.remove()},error:function(d){$(".deleteBusy",c).hide();$(".deleteLink",c).show();App.Ajax.handleError(d)}})}};App.ReportPlugins=new function(){var a=this};App.ReportPlugins.Columns=new function(){var a=this};App.ReportPlugins.Columns.Select=new function(){var a=this;a.columns=null;a.namespace=null;a.init=function(){a._initGrid();$(a._formatId("add")).click(function(){a._add()})};a._initGrid=function(){App.Tables.applyDragDrop($(a._formatId("grid")))};a._formatId=function(b){return"#"+a.namespace+"_"+b};a._add=function(){a._addDialog({submit:function(b){a._addSubmit(b)}})};a._addDialog=function(b){$("#addColumnForm").unbind("submit");$("#addColumnSubmit").removeClass("button-busy");$("#addColumnForm").submit(function(c){var d=$("#addColumnItems");b.submit({key:d.val(),name:$.trim($("option:selected",d).text())});return false});App.Dialogs.open({selector:"#addColumnDialog"})};a._addSubmit=function(b){$("#addColumnSubmit").addClass("button-busy");App.Ajax.call({target:"/report_plugins/ajax_render_column_row",arguments:{namespace:a.namespace,key:b.key,name:b.name},success:function(c){$("#addColumnSubmit").removeClass("button-busy");App.Dialogs.closeTop();var d=$(c);d.appendTo($(a._formatId("grid")));a._removeFromDropdown(b.key);if($("#addColumnItems option").length==0){$(a._formatId("add")).hide()}a._initGrid()},error:function(c){$("#addColumnSubmit").removeClass("button-busy");App.Ajax.handleError(c)}})};a._removeFromDropdown=function(b){$("#addColumn-"+App.escapeId(b)).remove()};a.remove=function(b){a._addToDropdown(b);var c=$("#column-"+App.escapeId(b));c.remove();$(a._formatId("add")).show()};a._addToDropdown=function(b){var c=$(" ");c.attr("id","addColumn-"+b);c.val(b);c.text(a.columns[b]);c.appendTo("#addColumnItems")};a.onWidthChanged=function(d,c,b){return App.Tables.onColumnWidthChanged(d,c,b,true)}};App.ReportPlugins.Runs=new function(){var a=this};App.ReportPlugins.Runs.Select=new function(){var a=this;a.namespace=null;a.project_id=null;a.run_ids=null;a.filters=null;a.filters_add=null;a.multiple_suites=null;a.suite_ids=null;a.lang=null;a.init=function(){a._addInit();a._filterInit()};a._formatId=function(b){return"#"+a.namespace+"_"+b};a._addInit=function(){if(a.multiple_suites){var b="suites_ids"}else{var b="suites_id"}$(a._formatId(b)).change(function(){var c=$(this).val();if($.isArray(c)){a.suite_ids=c}else{if(c){a.suite_ids=[c]}else{a.suite_ids=null}}a.run_ids=null;$("tr.row",$(a._formatId("grid"))).remove()});$(a._formatId("add")).click(function(){var c=a.suite_ids!=null;if(!c){c=$(a._formatId("suites_include_all")).is(":checked")}if(c){a._add()}else{App.Dialogs.error(a.lang.add_empty)}})};a._add=function(){a._addDialog({submit:function(b){a._addSubmit(b)}})};a._addDialog=function(b){$("#addRunsForm").unbind("submit");$("#addRunsSubmit").removeClass("button-busy");$("#addRunsSubmit").unbind("click");$("#addRunsSubmit").bind("click",function(){b.submit(App.Tables.getSelected($("#addRunsTables")));return false});$("#addRunsClose").unbind("click");$("#addRunsClose").bind("click",function(c){App.Dialogs.closeTop()});App.Dialogs.open({minWidth:700,minHeight:550,resizable:true,resizeStop:a._addResized,selector:"#addRunsDialog"});a._addLoad(b)};a._addLoad=function(g){var e=$("#addRunsDialog");var c=$("#addRunsContent");var f=$("#addRunsProgress");var b=e.find(".dialog-body").outerHeight();f.css("padding-top",Math.round((b/2)-60)+"px");f.show();c.hide();var d=null;if(a.multiple_suites){if(!$(a._formatId("suites_include_all")).is(":checked")){d=a.suite_ids}}else{d=a.suite_ids}App.Ajax.call({target:"/report_plugins/ajax_render_run_add",arguments:{project_id:a.project_id,suite_ids:d,run_exclude_ids:a.run_ids,filters:a.filters_add},success:function(h){c.html(h);f.hide();c.show()},error:function(h){f.hide();App.Ajax.handleError(h)}})};a._addResized=function(b,c){App.Ajax.call({target:"/report_plugins/ajax_save_run_add_dialog_size",blockUI:false,arguments:{width:Math.round(c.size.width),height:Math.round(c.size.height)}})};a._addSubmit=function(b){$("#addRunsSubmit").addClass("button-busy");App.Ajax.call({target:"/report_plugins/ajax_render_run_rows",arguments:{namespace:a.namespace,project_id:a.project_id,run_ids:b},stop:function(){$("#addRunsSubmit").removeClass("button-busy")},success:function(c){App.Dialogs.closeTop();var e=$(c);e.appendTo($(a._formatId("grid")));if(a.run_ids){a.run_ids=a.run_ids.concat(b)}else{a.run_ids=b}var d=App.Filters.getAll($("#addRunsFilter"));a.filters_add=d},error:function(c){App.Ajax.handleError(c)}})};a.addCheckAll=function(){var b=$("#addRunsTables");App.Tables.setCheckboxes(b,true)};a.addCheckNone=function(){var b=$("#addRunsTables");App.Tables.setCheckboxes(b,false)};a._addLoadRuns=function(c){if(c.progress_start){c.progress_start()}var b=App.Filters.getAll($("#addRunsFilter"));App.Ajax.call({target:"/report_plugins/ajax_render_run_add_partial",arguments:{project_id:a.project_id,suite_ids:a.suite_ids,run_exclude_ids:a.run_ids,filters:JSON.stringify(b),is_partial:c.is_partial},success:function(d){$("#addRunsMatchesInfo").remove();$("#addRunsTables").html(d);$("#addRunsMatchesInfo").appendTo("#addRunsMatches");$("#addRunsMatches").show();if(c.progress_end){c.progress_end()}},error:function(d){if(c.progress_end){c.progress_end()}App.Ajax.handleError(d)}})};a.addFilterApplyAll=function(){a._addLoadRuns({is_partial:false,progress_start:function(){$("#addRunsShowAll .showAll").hide();$("#addRunsShowAll .busy").show()},progress_end:function(){$("#addRunsShowAll .busy").hide();$("#addRunsShowAll .showAll").show()}})};a.addFilterApply=function(){a._addLoadRuns({is_partial:true,progress_start:function(){$("#addRunsFilterApply").addClass("button-busy")},progress_end:function(){$("#addRunsFilterApply").removeClass("button-busy")}})};a.remove=function(b){$(a._formatId("run-"+b)).remove();var c=a.run_ids.indexOf(b);a.run_ids.splice(c,1)};a._filterInit=function(){var b=$(a._formatId("filter_change")).bubble({bubble:"#filterRunsBubble",offsetY:-200,toggleEvent:"null"});$(a._formatId("filter_change")).click(function(){a._filterLoad({show:function(){a._filterBind({bubble:b});b.show()}})})};a._filterLoad=function(c){var b=$(a._formatId("filter_busy"));b.show();App.Ajax.call({target:"/report_plugins/ajax_render_run_filter",arguments:{project_id:a.project_id,filters:a.filters},success:function(d){b.hide();$("#filterRunsContent").html(d);c.show()},error:function(d){b.hide();App.Ajax.handleError(d)}})};a._filterBind=function(b){$("#filterRunsApply").click(function(){a._filterApply(b)});$("#filterRunsCancel").click(function(){a._filterCancel(b)})};a._filterApply=function(c){var b=App.Filters.getAll($("#filterRunsContent"));$("#filterRunsApply").addClass("button-busy");App.Ajax.call({target:"/report_plugins/ajax_render_run_filter_info",arguments:{project_id:a.project_id,filters:b},stop:function(){$("#filterRunsApply").removeClass("button-busy")},success:function(d){$(a._formatId("filter_info")).html(d);c.bubble.hide();a.filters=b},error:function(d){App.Ajax.handleError(d)}})};a._filterCancel=function(b){b.bubble.hide()}};App.ReportPlugins.Cases=new function(){var a=this};App.ReportPlugins.Cases.Filter=new function(){var a=this;a.namespace=null;a.project_id=null;a.filters=null;a.init=function(){var b=$(a._formatId("filter_change")).bubble({bubble:"#filterCasesBubble",offsetY:-200,toggleEvent:"null"});$(a._formatId("filter_change")).click(function(){a._load({show:function(){a._bind({bubble:b});b.show()}})})};a._formatId=function(b){return"#"+a.namespace+"_"+b};a._load=function(c){var b=$(a._formatId("filter_busy"));b.show();App.Ajax.call({target:"/report_plugins/ajax_render_case_filter",arguments:{project_id:a.project_id,filters:a.filters},success:function(d){b.hide();$("#filterCasesContent").html(d);c.show()},error:function(d){b.hide();App.Ajax.handleError(d)}})};a._bind=function(b){$("#filterCasesApply").click(function(){a._apply(b);return false});$("#filterCasesCancel").click(function(){a._cancel(b);return false})};a._apply=function(c){var b=App.Filters.getAll($("#filterCasesContent"));$("#filterCasesApply").addClass("button-busy");App.Ajax.call({target:"/report_plugins/ajax_render_case_filter_info",arguments:{project_id:a.project_id,filters:b},stop:function(){$("#filterCasesApply").removeClass("button-busy")},success:function(d){$(a._formatId("filter_info")).html(d);c.bubble.hide();a.filters=b},error:function(d){App.Ajax.handleError(d)}})};a._cancel=function(b){b.bubble.hide()}};App.ReportPlugins.Tests=new function(){var a=this};App.ReportPlugins.Tests.Filter=new function(){var a=this;a.namespace=null;a.project_id=null;a.filters=null;a.init=function(){var b=$(a._formatId("filter_change")).bubble({bubble:"#filterTestsBubble",offsetY:-200,toggleEvent:"null"});$(a._formatId("filter_change")).click(function(){a._load({show:function(){a._bind({bubble:b});b.show()}})})};a._formatId=function(b){return"#"+a.namespace+"_"+b};a._load=function(c){var b=$(a._formatId("filter_busy"));b.show();App.Ajax.call({target:"/report_plugins/ajax_render_test_filter",arguments:{project_id:a.project_id,filters:a.filters},success:function(d){b.hide();$("#filterTestsContent").html(d);c.show()},error:function(d){b.hide();App.Ajax.handleError(d)}})};a._bind=function(b){$("#filterTestsApply").click(function(){a._apply(b);return false});$("#filterTestsCancel").click(function(){a._cancel(b);return false})};a._apply=function(c){var b=App.Filters.getAll($("#filterTestsContent"));$("#filterTestsApply").addClass("button-busy");App.Ajax.call({target:"/report_plugins/ajax_render_test_filter_info",arguments:{project_id:a.project_id,filters:b},stop:function(){$("#filterTestsApply").removeClass("button-busy")},success:function(d){$(a._formatId("filter_info")).html(d);c.bubble.hide();a.filters=b},error:function(d){App.Ajax.handleError(d)}})};a._cancel=function(b){b.bubble.hide()}};App.Charts=new function(){var a=this;a.status=null;a.activity=null;a.action=null;a.burndown=null;a.defects=null;a.selectTimeframe=function(b){a._selectTimeframeDialog(b)};a._selectTimeframeDialog=function(b){$("#selectTimeframeSubmit").removeClass("button-busy");$("#selectTimeframeForm").unbind("submit");$("#selectTimeframeForm").submit(function(c){var d=$("#select_timeframe").val();if(b.success){$("#selectTimeframeSubmit").addClass("button-busy");b.success(d)}return false});App.Dialogs.open({selector:"#selectTimeframeDialog",focusedControl:"#select_timeframe"})};a.reload=function(d,b,c){if(d){if(d.renderTo!==undefined){d.destroy()}}$(b).html(c)}};App.Dashboard=new function(){var a=this;a.selectActionDays=function(){App.Charts.selectTimeframe({success:function(b){a._reloadActionChart(b)}})};a._reloadActionChart=function(b){App.Ajax.call({target:"/dashboard/ajax_render_action_chart",arguments:{days:b},success:function(c){App.Dialogs.closeTop();App.Charts.reload(App.Charts.action,"#actionContainer",c)},error:function(c){App.Ajax.handleError(c)}})};a.loadTodos=function(){App.Ajax.call({target:"/dashboard/ajax_render_todos",blockUI:false,success:function(b){a._showTodos(b)},error:function(b){a._showTodos("")}})};a._showTodos=function(b){$("#todos").html(b);$("#todosBusy").hide();$("#todos").show()};a.hideJiraHint=function(){App.Ajax.call({target:"/dashboard/ajax_hide_jira_hint",blockUI:false,success:function(b){$("#jiraHint").hide()},error:function(b){}})}};App.Announcements=new function(){var a=this;a.showDialog=function(){a._showDialog({submit:function(b){a._hideAnnouncement();if(!b){App.Dialogs.closeTop()}}})};a._showDialog=function(c){var b=false;$("#announcementForm").unbind("submit");$("#announcementForm").submit(function(){b=true;c.submit(false);return false});App.Dialogs.open({selector:"#announcementDialog",close:function(){if(!b){c.submit(true)}}})};a._hideAnnouncement=function(){App.Ajax.call({target:"/projects/ajax_hide_announcement",arguments:{},success:function(b){},error:function(b){}})}};App.Storage=new function(){var a=this;a.keys=[];a.init=function(){a.keys=a._getKeys()};a._getKeys=function(){var b=a._get("testrail:storage.keys");return b?JSON.parse(b):[]};a._setKeys=function(b){var c=JSON.stringify(b);return a._trySet("testrail:storage.keys",c)};a._trySet=function(c,d){try{localStorage.setItem(c,d)}catch(b){return false}return true};a._set=function(b,d){if(!localStorage){return}var c=a._exists(b);while(!a._trySet(b,d)){if(!a._tryRemoveOldest()){break}}if(!c){a.keys.push(b)}while(!a._setKeys(a.keys)){if(!a._tryRemoveOldest()){localStorage.clear();a.keys=[];break}}};a._tryRemoveOldest=function(){if(a.keys.length==0){return false}try{var b=a.keys.shift();localStorage.removeItem(b)}catch(c){return false}return true};a._exists=function(b){return a._get(b)!==null};a._get=function(c){if(!localStorage){return null}try{return localStorage.getItem(c)||null}catch(b){return null}};a._formatObjectKey=function(b,c){return"testrail:"+b+":"+c};a.setObject=function(c,e,d){var b=a._formatObjectKey(c,e);a._set(b,JSON.stringify(d))};a.setObjectItem=function(c,f,b,d){var e=a.getObject(c,f)||{};e[b]=d;a.setObject(c,f,e)};a.getObject=function(c,e){var b=a._formatObjectKey(c,e);var d=a._get(b);return d?JSON.parse(d):null}};App.Translations=new function(){var a=this;a.translations=[];a.add=function(b,c){a.translations[b]=c};a.get=function(b){return a.translations[b]||""}};function lang(a){return App.Translations.get(a)}function langc(a){if(a.indexOf("l:")===0){return lang(a.substring(2))}else{return a}};App.Tooltips=new function(){var a=this;App.ready(function(){a._init()});a._init=function(){$(document).on("mouseenter",".link-tooltip",function(){var b=$(this);if(!b.data("tooltip")){b.data("tooltip",true);a._apply(b)}})};a._apply=function(b){b.tooltip({tooltip:b.attr("tooltip-id")||"#tooltip"});b.trigger("mouseover")}};App.ExportCsv=function(b){var a=this;a.format=b.format;a.init=b.init;a.open=function(){App.Validation.hideErrors();a._reset();$("#exportCsvForm").unbind("submit").submit(function(){App.Validation.hideErrors();var c=a._getValues();if(!c){return false}$("#exportCsvExportFormat").val(a.format);$("#exportCsvExportSectionIDs").val(c.section_ids.join(","));$("#exportCsvExportSectionInclude").val(c.section_include);$("#exportCsvExportColumns").val(c.columns.join(","));$("#exportCsvExportLayout").val(c.layout);$("#exportCsvExportSeparatorHint").val(c.separator_hint?"1":"0");$("#exportCsvExportForm").submit();App.Dialogs.closeTop();return false});App.Dialogs.open({selector:"#exportCsvDialog",titleSelector:"."+a.format});if(a.init){a.init()}};a._getValues=function(){var c=$("#exportCsvDialog input[name=exportCsvSections]:checked").val();var e=Array();if(c=="selected"){e=$("#exportCsvSectionsSelection").val();if(!e||!e.length){$("#exportCsvErrorNoSection").show();return null}}var d=App.Controls.Checkboxes.getValuesAsString("exportCsvColumns");if(!d||!d.length){$("#exportCsvErrorNoColumn").show();return null}return{section_include:c,section_ids:e,columns:d,layout:$("#exportCsvLayout").val(),separator_hint:$("#exportCsvSeparatorHint").is(":checked")}};a._reset=function(){$("#exportCsvSectionsAll").prop("checked",true);$("#exportCsvSectionsSelection").html("");var c=$("#exportCsvSeparatorHintContainer");if(a.format=="excel"){c.prev().removeClass("bottom");c.show()}else{c.hide();c.prev().addClass("bottom")}}};App.Hotkeys=new function(){var a=this;a.handlers={};a.isForm=function(b){$.hotkeys.options.filterInputAcceptingElements=!b;$.hotkeys.options.filterTextInputs=!b};a.register=function(c,e,b){var d=function(){e();return false};if(b){a.handlers[c]=d}$(document).on("keydown",null,c,d)};a.unregister=function(b){$(document).off("keydown",a.handlers[b]);delete a.handlers[b]};a.registerModifier=function(b,c){a.register("ctrl+"+b,c);a.register("meta+"+b,c)};a.registerAlt=function(b,c){a.register("alt+"+b,c)}};App.Ext=new function(){var a=this;a.resized=function(){$.publish("body.changed")}};App.Ext.Dashboard=new function(){var a=this;a.load=function(){App.Ajax.call({target:"ext/common/ajax_render_dashboard",success:function(b){$("#content").html(b);App.Ext.resized();$.publish("dashboard.loaded")},error:function(b){App.Ajax.handleError(b)}})}};App.Ext.Projects=new function(){var a=this;a.load=function(b){App.Ajax.call({target:"ext/common/ajax_render_project",arguments:{project_id:b},success:function(c){$("#content").html(c);App.Ext.resized();$.publish("project.loaded",{project_id:b})},error:function(c){App.Ajax.handleError(c)}})};a.toggleDetails=function(b){var c=$("#project-"+b);if($(".details",c).is(":visible")){a._hideDetails(b)}else{if($(".details .table",c).length>0){a._showDetails(b)}else{a._loadDetails(b)}}};a._showDetails=function(b){var c=$("#project-"+b);$(".expand",c).hide();$(".collapse",c).show();$(".details",c).show();App.Ext.resized()};a._hideDetails=function(b){var c=$("#project-"+b);$(".details",c).hide();$(".expand",c).show();$(".collapse",c).hide();App.Ext.resized()};a._loadDetails=function(b){var c="#project-"+b;$(".buttons",c).hide();$(".busy",c).show();App.Ajax.call({target:"ext/common/ajax_render_project_details",arguments:{project_id:b},stop:function(){$(".busy",c).hide();$(".buttons",c).show()},success:function(d){$(".details",c).append(d);a._showDetails(b)},error:function(d){App.Ajax.handleError(d)}})};a.loadCompleted=function(){$("#showCompleted .showAll").hide();$("#showCompleted .busy").show();App.Ajax.call({target:"ext/common/ajax_render_projects_completed",stop:function(){$("#showCompleted").remove()},success:function(b){$("#completed").html(b);App.Ext.resized()},error:function(b){App.Ajax.handleError(b)}})}};App.Jira=new function(){var a=this;a.dispatch=function(b){if(parent&&parent.postMessage){parent.postMessage(JSON.stringify(b),"*")}}};App.Jira.Frame=new function(){var a=this;a.height=null;a.init=function(b){a._resize(b);a._resizeWatch(b)};a.resize=function(b){a._resize(b)};a._resize=function(b){App.Jira.dispatch({frame:b,action:"frame:resize",height:$("body").outerHeight()})};a._resizeWatch=function(b){a.height=$("body").outerHeight();$(window).resize(function(){var c=$("body").outerHeight();if(c!=a.height){a.height=c;a._resize(b)}})};a.resized=function(){$(window).trigger("resize")}};App.Jira.Dialogs=new function(){var a=this;a.open=function(c,d,b){App.Jira.dispatch({action:"dialog:open",dialog:c,width:d,height:b})};a.close=function(){App.Jira.dispatch({action:"dialog:close"})}};App.Jira.Issues=new function(){var a=this;a.display=null;a.showResult=function(c){var d=$("#change-"+c);var b=d.next();if($(".js-result-details",b).length>0){a._showResult(c)}else{a._loadResult(c)}};a._getResultError=function(b){if(b&&b.error){return b.error}else{return Consts.ajaxErrorMessage}};a._loadResult=function(b){var c=$("#change-"+b);$(".js-expand",c).hide();$(".js-expandBusy",c).show();App.Ajax.call({target:"ext/jira/ajax_render_panel_result_details",arguments:{test_change_id:b},stop:function(){$(".js-expandBusy",c).hide();$(".js-expand",c).show()},success:function(d){c.next().find(".js-result-id").after(d);a._showResult(b)},error:function(e){var d=a._getResultError(e);c.find(".js-error").text(d).show();App.Jira.Frame.resized()}})};a._showResult=function(b){var c=$("#change-"+b);c.next().show();$(".js-error",c).hide();$(".js-expand",c).hide();$(".js-collapse",c).show();App.Jira.Frame.resized();c.next().find("img").load(function(){App.Jira.Frame.resized()})};a.hideResult=function(b){var c=$("#change-"+b);c.next().hide();$(".js-expand",c).show();$(".js-expandBusy",c).hide();$(".js-collapse",c).hide();App.Jira.Frame.resized()};a.loadResults=function(b,c){$("#paginationBusy").show();a._loadResults(b,c)};a._loadResults=function(b,c){App.Ajax.call({target:"ext/jira/ajax_render_panel_results",arguments:{issue:b,offset:c,display:a.display},stop:function(){$("#paginationBusy").hide();$("#resultModeBusy").hide()},success:function(d){$("#content").html(d);App.Jira.Frame.resized()},error:function(e){var d=a._getResultError(e);$("#content").addClass("text-error").text(d);App.Jira.Frame.resized()}})};a.initResults=function(b){a.display=b};a.setResultMode=function(b,c){a.display=c;$("#resultModeBusy").show();a._loadResults(b,0)}};App.Jira.Projects=new function(){var a=this;a.saveMapping=function(c,b){App.Ajax.call({target:"ext/jira/ajax_save_project_mapping",blockUI:false,arguments:{project_key:c,project_id:b}})}};App.References={};App.ready(function(){$.subscribe("tests.loaded, tests.changed, cases.loaded","references",function(a){if(a.project_id){App.References.applyLookup(a.project_id)}})});App.References.applyLookup=function(b,a){var c=null;$("a.referenceLink, span.referenceLink",a||$(document)).bubble({bubble:"#referenceBubble",onShow:function(d){var f=$(d).attr("rel");c=App.References.lookup(b,f)},onHide:function(f){var d=$(".content",$("#referenceBubble"));d.html("");if(c){App.Ajax.abort(c)}}})};App.References.lookup=function(b,e){var a=$("#referenceBubble");var d=$(".busy",a);var c=$(".content",a);var f=$(".error",a);f.hide();c.hide();c.html("");d.show();return App.Ajax.call({target:"/references/ajax_lookup",blockUI:false,arguments:{project_id:b,reference_id:e},success:function(g){c.html(g);c.show();$(".container",c).css("height",a.height()-$(".header",c).outerHeight()-$(".attributes",c).outerHeight()-$(".footer",c).outerHeight());d.hide()},error:function(g){d.hide();if(g&&g.error){$("#referenceBubbleError").text(g.error);f.show()}else{a.hide()}}})};App.QPane=new function(){var a=this;a.qpane=$("#qpane");a.pos=0;a.offset=0;a.width=0;a.min=500;a.max=1000;a.visible=false;a.splitter=null;a.document=null;a.current=null;a.current_id=null;a.loading=null;a.loading_id=null;a.callbacks=null;a.context=null;a.timer=null;a.timer_resize=null;a.timer_visible=null;a.init=function(b){a._setResizable();a._setAutoHeight();a.context=b};a.isVisible=function(){return a.visible};a.hide=function(){if(!a.visible){return}a._hide();if(a.callbacks){a.callbacks.hide()}};a._hide=function(){a.qpane.hide();a.splitter.hide();a.visible=false;a._resizePage(-a.qpane.width());a._resizeChanged();a._visibleSave(false)};a._visibleSave=function(b){if(a.timer_visible){clearTimeout(a.timer_visible);a.timer_visible=null}a.timer_visible=setTimeout(function(){a._visibleDoSave(b)},250)};a._visibleDoSave=function(b){App.Ajax.call({target:"mysettings/ajax_set_qpane",blockUI:false,arguments:{context:a.context,is_active:b},success:function(c){},error:function(c){}})};a.show=function(){if(a.visible){return}var b=$(window).width();if(a.callbacks){a.callbacks.show()}a._show(b)};a._show=function(c){var b=parseInt(a.qpane.css("width"));a.width=a._limitWidth(b,c);a.qpane.width(a.width);a.qpane.show();a.splitter.show();a.visible=true;a._setBodyHeight();a._resizePage(a.width);a._resizeChanged();a._visibleSave(true)};a.clear=function(){$("#qpane-content").html("");a._setBodyHeight()};a.startUpdate=function(){a.qpane.addClass("qpane-loading")};a.update=function(b){$("#qpane-content").html(b);a._setBodyHeight()};a.stopUpdate=function(){a.qpane.removeClass("qpane-loading")};a.getWidth=function(){return a.qpane.width()};a._setResizable=function(){a.document=$(document);a.splitter=$("#qpane-splitter");a.splitter.bind("mousedown.qpane",a._resizeStart);a.splitter.dblclick(a._resizeAlign)};a._resizeAlign=function(d){a.width=a.qpane.width();var c=a._getTotalContentWidth();var b=parseInt(c/2);a._setWidth(Math.min(c-App.Page.getMinContent(),b)-10);a._resizeSave();return false};a._getTotalContentWidth=function(c){var b=c||$(window).width();if(App.Sidebar.isVisible()){b-=App.Sidebar.getWidth()+10}return Math.min($("#content").width()+a.width+10,b)};a._resizeStart=function(b){a.pos=a._getResizePosition(b);a.width=a.qpane.width();a.offset=a.width;a.document.bind("mousemove.qpane",a._resize);a.document.bind("mouseup.qpane",a._resizeStop);a._resizeShowProgress();return false};a._resizeShowProgress=function(){$("body").css("cursor","ew-resize");a.splitter.addClass("splitter-resizing")};a._resize=function(b){var c=a.pos-a._getResizePosition(b);a._setWidth(c+a.offset);return false};a._setWidth=function(b){b=a._limitWidth(b);var c=b-a.width;a.width=Math.round(b);a.qpane.width(a.width);a._resizePage(c);a._resizeChanged()};a._limitWidth=function(c,d){var b=Math.min(a.max,a._getTotalContentWidth(d)-App.Page.getMinContent()-10);return Math.max(Math.min(c,b),a.min)};a._resizeChanged=function(){$(window).trigger("resize")};a._resizePage=function(b){App.Page.updateMinWidth(b)};a._resizeStop=function(b){a.document.unbind(".qpane");a._resizeHideProgress();a._resizeSave();a._resizeChanged();Highcharts.charts.forEach(function(c){if(!c){return}c.reflow()});return false};a._resizeHideProgress=function(){a.splitter.removeClass("splitter-resizing");$("body").css("cursor","")};a._resizeSave=function(){if(a.timer_resize){clearTimeout(a.timer_resize);a.timer_resize=null}a.timer_resize=setTimeout(a._resizeDoSave,250)};a._resizeDoSave=function(){App.Ajax.call({target:"mysettings/ajax_set_qpane_width",blockUI:false,arguments:{width:Math.round(a.qpane.width())},success:function(b){},error:function(b){}})};a._getResizePosition=function(b){return a.document.scrollLeft()+b.clientX};a._setAutoHeight=function(){var b=$(window);b.scroll(a._setBodyHeight);b.resize(a._setBodyHeight);$.subscribe("body.changed","qpane",a._setBodyHeight);a._setBodyHeight()};a._setBodyHeight=function(){if(!a.visible){return}var c=$("#qpane-body");if(!c.length){return}var d=c.offset().top-a.document.scrollTop();var b=$(window).height()-d-15-$("#goals-banner").height();c.height(b)};a.bindRowEvents=function(b){a.callbacks=b};a.checkRow=function(c,b){if(!a.visible){return}var d=a.current_id;var e=d?$("#row-"+d):null;if(!e||e.length==0){if(b){e=$("tr.row:last",c);if(e.length){e[0].scrollIntoView()}}else{e=$("tr.row:first",c)}}if(e.length==0){a.current=null;a.current_id=null;a._toggleShowEmpty();a.clear()}else{if(a.visible){d=e.attr("rel");if(a.current_id==d){a._toggleShow(e,d)}else{a._toggleLoad(e,d)}}}};a.clearRow=function(){a.current=null;a.current_id=null};a._toggleShowEmpty=function(){var b=$("#qpane").outerHeight();$("#qpane-inner").hide();$("#qpane-empty").css("top",Math.round(b/2)+"px");$("#qpane-empty").show()};a._toggleHideEmpty=function(){$("#qpane-empty").hide();$("#qpane-inner").show()};a.toggleRow=function(b){a._toggleRow(b,false)};a._toggleRow=function(e,d){var c=false;if(a.current){c=a.current_id==e}var b=!a.visible;if(!c&&a.current){b=true}if(a.loading){a._unmarkRow(a.loading)}App.Tables.unbindClick();if(!b){a._toggleHide()}else{var f=$("#row-"+e);if(c||!a.callbacks){a._toggleShow(f,e)}else{a._toggleLoad(f,e,d)}}};a._toggleHide=function(){a.hide();if(a.current){a._unmarkRow(a.current)}};a._toggleLoad=function(e,c,b){if(a.timer){clearTimeout(a.timer);a.timer=null}if(a.current){a.current.removeClass("highlighted")}var d=a.loading_id!=null;a.loading=e;a.loading_id=c;a.loading.addClass("highlighted");if(b){a.timer=setTimeout(function(){a._toggleDoLoad(e,c)},d?500:100)}else{a._toggleDoLoad(e,c)}};a._toggleDoLoad=function(c,b){a._busyRow(c);a.startUpdate();a.callbacks.change(b,function(d){if(b==a.loading_id){a.update(d);a._toggleShow(c,b);a.stopUpdate()}})};a._toggleShow=function(c,b){a.loading=null;a.loading_id=null;if(a.current_id){a._unmarkRow($("#row-"+a.current_id))}a.current=c;a.current_id=b;a._markRow(a.current);a._toggleHideEmpty();a.show();App.Tables.bindClick(function(e){var d=e.attr("rel");if(d!=a.current_id){a.toggleRow(d)}})};a._markRow=function(b){b.addClass("highlighted");b.find(".action-expand, .action-expanding").hide();b.find(".action-collapse").show()};a._busyRow=function(b){b.addClass("highlighted");b.find(".action-expand").hide();b.find(".action-expanding").show()};a._unmarkRow=function(b){b.removeClass("highlighted");b.find(".action-collapse, .action-expanding").hide();b.find(".action-expand").show()};a.tryToggleRow=function(){if(a.current_id){a.toggleRow(a.current_id)}};a.nextRow=function(){if(!a.current||!a.visible){return}var b=App.Tables.nextRow(a.loading||a.current);if(!b){return}if(a.current_id==b.attr("rel")){b=App.Tables.nextRow(a.current);if(!b){return}}a._toggleRow(b.attr("rel"),true);var c=b.offset().top+b.outerHeight()-$(window).height()-$(document).scrollTop();if(c>=0){window.scrollBy(0,c+8)}};a.prevRow=function(){if(!a.current||!a.visible){return}var b=App.Tables.prevRow(a.loading||a.current);if(!b){return}if(a.current_id==b.attr("rel")){b=App.Tables.prevRow(a.current);if(!b){return}}a._toggleRow(b.attr("rel"),true);var c=$(document).scrollTop()-b.offset().top+$("#contentSticky").outerHeight();if(c>0){window.scrollBy(0,-c)}};a.getCurrentRowID=function(){return a.current_id}};App.Responsive=new function(){var a=this;a.clients=[];a._init=function(){$(window).resize(function(){a._check(false)});$.subscribe("body.changed","responsive",function(){a.invalidate()})};a._check=function(g){var f=a.clients.length;for(var e=0;e
';$(document).on("dragstart",function(c){if(!c.target){return}var b=$(c.target);if(b.is("textarea")||b.is("input")){a.dnd_text=true}});$(document).on("dragenter",function(c){if(a.dnd_text){return}if(a.elements.length==0){$.publish("body.drag_started");a.show()}var b=$(c.target);if(b.is(":visible")){a._addToDocumentDrag(c.target)}return false});$(document).on("dragleave",function(b){if(a.dnd_text){return}a._removeFromDocumentDrag(b.target);if(a.elements.length==0){a.hide();$.publish("body.drag_stopped")}return false});$(document).on("dragend",function(b){a.hide();$.publish("body.drag_stopped");a._resetDocumentDrag()})};a._addToDocumentDrag=function(b){a.elements=a.elements.add(b)};a._removeFromDocumentDrag=function(b){a.elements=a.elements.not(b)};a._resetDocumentDrag=function(){a.elements=$();a.dnd_text=false};a.applyDrop=function(b,e){var c=new Dropzone(b,{url:e.url+"&is_upload=1",acceptedFiles:e.files||null,paramName:"attachment",parallelUploads:3,uploadMultiple:false,filesizeBase:1024,thumbnailWidth:90,thumbnailHeight:75,previewTemplate:a.preview,dictDefaultMessage:e.dict.drop,dictInvalidFileType:e.dict.notype,sending:function(f,h,g){g.append("_token",Consts.ajaxCsrf)}});c.on("addedfile",function(){App.Ajax.start()});c.on("complete",function(){App.Ajax.stop()});var d=0;c.on("addedfiles",function(f){d=f?f.length:0;if(e.start){e.start(f)}});c.on("success",function(f,g){if(g&&g.result){if(e.success){e.success(f,g)}}else{if(f){c.removeFile(f)}App.Ajax.handleError(g)}d--;if(d<=0){if(e.stop){e.stop()}}});c.on("error",function(g,f,h){if(g){c.removeFile(g)}if(f&&typeof f==="string"){App.Dialogs.error(f)}else{App.Ajax.handleError()}d--;if(d<=0){if(e.stop){e.stop()}}});c.on("dragenter",function(f){a._addToDocumentDrag(f.target)});c.on("drop",function(f){a._resetDocumentDrag()});c.on("dragleave",function(f){a._removeFromDocumentDrag(f.target)});return c};a.show=function(){$(".dropzone:not(.dz-persistent)").each(a._show)};a._show=function(){var g=$(this);var b=g.attr("rel"),f=null;if(b){f=$("#"+b);if(f.hasClass("textarea-with-grippie")){f=f.parent()}g.css("min-height",f.outerHeight()+"px")}var e=true;var c=App.Dialogs.getActive();if(c){e=g.attr("dialog")==c.attr("id")}if(e){if(f){f.hide()}g.show()}};a.hide=function(){$(".dropzone:not(.dz-persistent)").each(a._hide)};a._hide=function(){var e=$(this);var b=e.attr("rel");e.hide();if(b){var c=$("#"+b);if(c.hasClass("textarea-with-grippie")){c=c.parent()}c.show()}};a.addAttachment=function(c,b){if(c&&c.previewElement){$(c.previewElement).attr("rel",b)}};a.getAttachments=function(b){var c=[];$(".dz-preview",$(b)).each(function(d,e){c.push(parseInt($(this).attr("rel")))});return c}};App.Import=new function(){var a=this;a.upload=function(b){b.data._token=Consts.ajaxCsrf;b.data._version=Consts.ajaxVersion;$.ajaxFileUpload({url:App.Page.formatUri("{0}/{1}/&is_upload=1&is_import=1",Consts.ajaxBaseUrl,b.target),secureuri:false,fileElementId:b.fileElementId,data:b.data,success:function(d,c){b.success(d,c)},error:function(d,c,f){b.error(d,c,f)}})}};App.Bulk=new function(){var a=this;a.bulkIds=[];a.setIds=function(b){if(b){$.each(b,function(c,d){a.bulkIds.push(parseInt(d))})}};a.getIds=function(){return a.bulkIds};a.removeFromArray=function(c,b){return c.filter(function(d){return d!=b})};a.removeId=function(c){a.bulkIds=a.removeFromArray(a.bulkIds,c);if($("#bulk-"+c).length){var b=$("#bulk-"+c);b.remove()}};a.loadBulk=function(b){$("#paginationBulkBusy").show();App.Ajax.call({target:"/admin/users/ajax_render_edit_bulk",arguments:{offset:b,bulk_ids:a.getIds()},stop:function(){$("#paginationBulkBusy").show()},success:function(c){$("#bulk").html(c)},error:function(c){App.Ajax.handleError(c)}})}};