
js.jira-global.js Maven / Gradle / Ivy
jQuery.namespace=function(str,noclobber){var i,a=str.split("."),o=window,callthrough=false;if(/[^a-zA-Z.]/.test(str)){return false}for(i=0;i0&&modifiers!=="shift+"){var key=keyEntered(e);if(key){return modifiers+key}}}}};function modifier(modifier){return modifier+"+"}})(AJS.$);
(function($){$.namespace("jira.mouse");jira.mouse;var MotionDetector=jira.mouse.MotionDetector=function(){this.reset()};MotionDetector.prototype.reset=function(){this._handler=null;this._x=null;this._y=null;this.moved=false};MotionDetector.prototype.wait=function(eventHandler){var instance=this;if(!instance._handler){this.reset();$(window.top.document).bind("mousemove",instance._handler=function(e){if(!instance._x&&!instance._y){instance._x=e.pageX;instance._y=e.pageY}else{if(!(e.pageX===instance._x&&e.pageY===instance._y)){instance.unbind();instance.moved=true;if(eventHandler){eventHandler.call(this,e)}}}})}};MotionDetector.prototype.unbind=function(){if(this._handler){$(window.top.document).unbind("mousemove",this._handler);this.reset()}}})(AJS.$);
AJS.copyObject=function(object,deep){var copiedObject={};AJS.$.each(object,function(name,property){if(typeof property!=="object"||property===null||property instanceof AJS.$){copiedObject[name]=property}else{if(deep!==false){copiedObject[name]=AJS.copyObject(property,deep)}}});return copiedObject};
AJS.implementsInterface=function(object,implementation){var valid=true;AJS.$.each(implementation,function(i,method){if(!AJS.$.isFunction(object[method])){valid=false;throw new Error("AJS.implementsInteface: Expected method ["+method+"] on object")}});return valid};
AJS.$.namespace("jira.app.fragments.issueActionsFragment");jira.app.fragments.issueActionsFragment=function(){function addIssueIdToReturnUrl(issueId){var matchSelectedIssueId=/selectedIssueId=[0-9]*/g;if(self!=top){return encodeURIComponent(window.top.location.href)}var url=window.location.href,newUrl=url;if(/selectedIssueId=[0-9]*/.test(url)){newUrl=url.replace(matchSelectedIssueId,"selectedIssueId="+issueId)}else{if(url.lastIndexOf("?")>=0){newUrl=url+"&"}else{newUrl=url+"?"}newUrl=newUrl+"selectedIssueId="+issueId}return encodeURIComponent(newUrl)}return function(json){var returnURL=addIssueIdToReturnUrl(json.id);var htmlParts=['"];var hasActions=json.actions&&json.actions.length>0;var hasOperations=json.operations&&json.operations.length>0;if(hasActions){htmlParts.push(hasOperations?'':'');var URL_A=contextPath+"/secure/WorkflowUIDispatcher.jspa?id="+json.id+"&action=";var URL_B="&atl_token="+json.atlToken+"&returnUrl="+returnURL;AJS.$.each(json.actions,function(){htmlParts.push('- ',htmlEscape(this.name),"
")});htmlParts.push("
")}if(hasOperations){htmlParts.push('');URL_A="&returnUrl="+returnURL;URL_B="&atl_token="+json.atlToken;AJS.$.each(json.operations,function(){htmlParts.push('- ',htmlEscape(this.name),"
")});htmlParts.push("
")}htmlParts.push("
");return AJS.$(htmlParts.join(""))}}();
(function($){$.namespace("jira.ajax");jira.ajax.SmartAjaxResult=function(xhr,requestId,statusText,data,successful,errorThrown){var status=tryIt(function(){return xhr.status},0);var result={successful:successful,status:status,statusText:statusText,errorThrown:errorThrown,readyState:xhr.readyState,hasData:data!=null&&data.length>0,data:data,xhr:xhr,aborted:xhr.aborted,requestId:requestId};result.toString=function(){return"{\n"+"successful : "+this.successful+",\n"+"status : "+this.status+",\n"+"statusText : "+this.statusText+",\n"+"hasData : "+this.hasData+",\n"+"readyState : "+this.readyState+",\n"+"requestId : "+this.requestId+",\n"+"aborted : "+this.aborted+",\n"+"}"};return result};jira.ajax.SmartAjaxResult.ERROR="error";jira.ajax.SmartAjaxResult.TIMEOUT="timeout";jira.ajax.SmartAjaxResult.NOTMODIFIED="notmodified";jira.ajax.SmartAjaxResult.PARSEERROR="parseerror";jira.ajax.makeRequest=function(ajaxOptions){var _smartAjaxResult={};var log=function(calltype,requestId,msg){if(AJS.log){var id=requestId?"["+requestId+"] ":" ";AJS.log("ajax"+id+calltype+" : "+msg)}};var generateRequestId=function(){var now=new Date();var midnight=new Date(now.getFullYear(),now.getMonth(),now.getDate(),0,0,0,0);var ms=(now.getTime()-midnight.getTime());return Math.max(Math.floor(ms),1)};var errorHandler=function(xhr,statusText,errorThrown,smartAjaxResult){if(!smartAjaxResult){var data=tryIt(function(){return xhr.responseText},"");smartAjaxResult=_smartAjaxResult=new jira.ajax.SmartAjaxResult(xhr,_requestId,statusText,data,false,errorThrown)}log("error",smartAjaxResult.requestId,smartAjaxResult);if($.isFunction(ajaxOptions.error)){ajaxOptions.error(xhr,statusText,errorThrown,smartAjaxResult)}};var successHandler=function(data,statusText,xhr){if(xhr.status<100){_smartAjaxResult=new jira.ajax.SmartAjaxResult(xhr,_requestId,jira.ajax.SmartAjaxResult.ERROR,"",false);errorHandler(xhr,jira.ajax.SmartAjaxResult.ERROR,undefined,_smartAjaxResult);return}_smartAjaxResult=new jira.ajax.SmartAjaxResult(xhr,_requestId,statusText,data,true);log("success",_smartAjaxResult.requestId,_smartAjaxResult);if($.isFunction(ajaxOptions.success)){ajaxOptions.success(data,statusText,xhr,_smartAjaxResult)}};var completeHandler=function(xhr,textStatus){if($.isFunction(ajaxOptions.complete)){ajaxOptions.complete(xhr,textStatus,_smartAjaxResult)}};var ourAjaxOptions={};for(var x in ajaxOptions){ourAjaxOptions[x]=ajaxOptions[x]}ourAjaxOptions.error=errorHandler;ourAjaxOptions.success=successHandler;ourAjaxOptions.complete=completeHandler;var xhr=$.ajax(ourAjaxOptions);var _requestId=generateRequestId();try{xhr.abort=function(oldabort){return function(){log("aborted",_requestId,"");xhr.aborted=true;if($.isFunction(oldabort)){try{oldabort.call(xhr)}catch(ex){}}}}(xhr.abort)}catch(ex){}log("started",_requestId,""+ourAjaxOptions.url);return xhr};jira.ajax.buildDialogErrorContent=function(smartAjaxResult,noHeader){var fourHundredClass=Math.floor(smartAjaxResult.status/100);if(smartAjaxResult.hasData&&fourHundredClass!=4){return wrapDialogErrorContent(AJS.extractBodyFromResponse(smartAjaxResult.data))}else{var errMsg=buildRawHttpErrorMessage(smartAjaxResult);return buildDialogAjaxErrorMessage(errMsg,noHeader)}};jira.ajax.buildSimpleErrorContent=function(smartAjaxResult){return buildRawHttpErrorMessage(smartAjaxResult)};function buildRawHttpErrorMessage(smartAjaxResult){var AJS=window.top.AJS;var errMsg;if(smartAjaxResult.statusText==jira.ajax.SmartAjaxResult.TIMEOUT){errMsg=AJS.params.ajaxTimeout}else{if(smartAjaxResult.status==401){errMsg=AJS.params.ajaxUnauthorised}else{if(smartAjaxResult.hasData){errMsg=AJS.params.ajaxServerError}else{errMsg=AJS.params.ajaxCommsError}}}return errMsg}function buildDialogAjaxErrorMessage(errorMessage,noHeader){var errorContent=''+""+errorMessage+"
"+""+AJS.params.ajaxErrorCloseDialog+"
"+"";if(!noHeader){errorContent=""+AJS.params.ajaxErrorDialogHeading+"
"+errorContent}return wrapDialogErrorContent(errorContent)}function wrapDialogErrorContent(content){var $container=$('');$container.append(content);return $container}})(AJS.$);AJS.$(function(){AJS.$.ajaxSetup({timeout:60000,async:true,cache:false,global:true})});
AJS.parseUri=function(uri,strict){var unesc=window.decodeURIComponent||unescape;var esc=window.encodeURIComponent||escape;function parseUri(str){var o=parseUri.options,m=o.parser[o.strictMode?"strict":"loose"].exec(str),uri={},i=14;while(i--){uri[o.key[i]]=m[i]||""}uri[o.q.name]={};uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){if($1){uri[o.q.name][unesc($1)]=unesc($2)}});return uri}parseUri.options={strictMode:!!strict,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};uri=parseUri(uri);uri.toString=function(){var params=[];AJS.$.each(uri.queryKey,function(name,value){params.push(esc(name)+"="+esc(value))});return uri.protocol+"://"+uri.authority+uri.path+"?"+params.join("&")+"#"+uri.anchor};return uri};
jQuery.effects||(function($){$.effects={};$.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(i,attr){$.fx.step[attr]=function(fx){if(!fx.colorInit){fx.start=getColor(fx.elem,attr);fx.end=getRGB(fx.end);fx.colorInit=true}fx.elem.style[attr]="rgb("+Math.max(Math.min(parseInt((fx.pos*(fx.end[0]-fx.start[0]))+fx.start[0],10),255),0)+","+Math.max(Math.min(parseInt((fx.pos*(fx.end[1]-fx.start[1]))+fx.start[1],10),255),0)+","+Math.max(Math.min(parseInt((fx.pos*(fx.end[2]-fx.start[2]))+fx.start[2],10),255),0)+")"}});function getRGB(color){var result;if(color&&color.constructor==Array&&color.length==3){return color}if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)){return[parseInt(result[1],10),parseInt(result[2],10),parseInt(result[3],10)]}if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)){return[parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55]}if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)){return[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16)]}if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)){return[parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16)]}if(result=/rgba\(0, 0, 0, 0\)/.exec(color)){return colors["transparent"]}return colors[$.trim(color).toLowerCase()]}function getColor(elem,attr){var color;do{color=$.curCSS(elem,attr);if(color!=""&&color!="transparent"||$.nodeName(elem,"body")){break}attr="backgroundColor"}while(elem=elem.parentNode);return getRGB(color)}var colors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};var classAnimationActions=["add","remove","toggle"],shorthandStyles={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function getElementStyles(){var style=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,newStyle={},key,camelCase;if(style&&style.length&&style[0]&&style[style[0]]){var len=style.length;while(len--){key=style[len];if(typeof style[key]=="string"){camelCase=key.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase()});newStyle[camelCase]=style[key]}}}else{for(key in style){if(typeof style[key]==="string"){newStyle[key]=style[key]}}}return newStyle}function filterStyles(styles){var name,value;for(name in styles){value=styles[name];if(value==null||$.isFunction(value)||name in shorthandStyles||(/scrollbar/).test(name)||(!(/color/i).test(name)&&isNaN(parseFloat(value)))){delete styles[name]}}return styles}function styleDifference(oldStyle,newStyle){var diff={_:0},name;for(name in newStyle){if(oldStyle[name]!=newStyle[name]){diff[name]=newStyle[name]}}return diff}$.effects.animateClass=function(value,duration,easing,callback){if($.isFunction(easing)){callback=easing;easing=null}return this.each(function(){var that=$(this),originalStyleAttr=that.attr("style")||" ",originalStyle=filterStyles(getElementStyles.call(this)),newStyle,className=that.attr("className");$.each(classAnimationActions,function(i,action){if(value[action]){that[action+"Class"](value[action])}});newStyle=filterStyles(getElementStyles.call(this));that.attr("className",className);that.animate(styleDifference(originalStyle,newStyle),duration,easing,function(){$.each(classAnimationActions,function(i,action){if(value[action]){that[action+"Class"](value[action])}});if(typeof that.attr("style")=="object"){that.attr("style").cssText="";that.attr("style").cssText=originalStyleAttr}else{that.attr("style",originalStyleAttr)}if(callback){callback.apply(this,arguments)}})})};$.fn.extend({_addClass:$.fn.addClass,addClass:function(classNames,speed,easing,callback){return speed?$.effects.animateClass.apply(this,[{add:classNames},speed,easing,callback]):this._addClass(classNames)},_removeClass:$.fn.removeClass,removeClass:function(classNames,speed,easing,callback){return speed?$.effects.animateClass.apply(this,[{remove:classNames},speed,easing,callback]):this._removeClass(classNames)},_toggleClass:$.fn.toggleClass,toggleClass:function(classNames,force,speed,easing,callback){if(typeof force=="boolean"||force===undefined){if(!speed){return this._toggleClass(classNames,force)}else{return $.effects.animateClass.apply(this,[(force?{add:classNames}:{remove:classNames}),speed,easing,callback])}}else{return $.effects.animateClass.apply(this,[{toggle:classNames},force,speed,easing])}},switchClass:function(remove,add,speed,easing,callback){return $.effects.animateClass.apply(this,[{add:add,remove:remove},speed,easing,callback])}});$.extend($.effects,{version:"1.8rc3",save:function(element,set){for(var i=0;i
"+this.$layer.html()+"
")},_rebuildLayerInIframe:function(){return AJS.$(""+this.$layer.html()+"
")}});
AJS.DropDown=AJS.Control.extend({CLASS_SIGNATURE:"AJS_DROPDOWN",init:function(options){var instance=this;if(!(options instanceof AJS.DropDown.Descriptor)){this.options=new AJS.DropDown.Descriptor(options)}else{this.options=options}this.layerController=new AJS.InlineLayer(this.options.allProperties());this.listController=this.options.listController();this.layerController.onhide(function(){instance.hide()});this.layerController.contentChange(function(){instance.listController.removeAllItems();instance.layerController.layer().find("li").each(function(){instance.listController.addItem(new AJS.ListItem({element:this}))});instance.listController.shiftFocus(0)});this.trigger(this.options.trigger());this._applyIdToLayer()},show:function(){this.trigger().addClass(AJS.ACTIVE_CLASS);this.layerController.show();this.listController.shiftFocus(0)},hide:function(){this.trigger().removeClass(AJS.ACTIVE_CLASS);this.layerController.hide();this.listController.trigger("blur")},toggle:function(){if(this.layerController.isVisible()){this.hide()}else{this.show()}},content:function(content){if(content){this.layerController.content(content)}else{return this.layerController.content()}},trigger:function(trigger){if(trigger){if(this.options.trigger()){this._unassignEvents("trigger",this.options.trigger())}this.options.trigger(AJS.$(trigger));this.layerController.offsetTarget(this.options.trigger());this._assignEvents("trigger",this.options.trigger())}else{return this.options.trigger()}},_applyIdToLayer:function(){if(this.trigger().attr("id")){this.layerController.layer().attr("id",this.trigger().attr("id")+"_drop")}},_events:{trigger:{click:function(e){this.toggle();e.preventDefault()}}}});AJS.$.extend(AJS.DropDown,{TRIGGER_SELECTOR:".aui-dropdown-trigger",CONTENT_SELECTOR:".aui-dropdown-content"});
AJS.DropDown.Descriptor=AJS.Descriptor.extend({init:function(properties){this._super(properties);if(!this.content()&&!this.trigger()){throw new Error("AJS.DropDown.Descriptor: expected either [content] or [trigger] to be defined.")}if(this.content()&&this.trigger()){throw new Error("AJS.DropDown.Descriptor: expected either [content] or [trigger] to be defined, NOT both")}if(this.trigger()&&!this.content()){this.content(this.trigger().next(AJS.DropDown.CONTENT_SELECTOR))}else{if(this.content()&&!this.trigger()){this.content(this.trigger().next(AJS.DropDown.TRIGGER_SELECTOR))}}if(this.trigger()&&!this.content()){if(!this.ajaxOptions()){if(this.trigger().attr("href")){this.ajaxOptions(this.trigger().attr("href"))}}else{if(!this.ajaxOptions().url){this.ajaxOptions().url=this.trigger().attr("href")}else{throw new Error("AJS.DropDown.Descriptor: cannot establish ajaxOptions")}}this.contentRetriever(new AJS.AjaxContentRetriever(this.ajaxOptions()))}else{if(this.content()){this.contentRetriever(new AJS.DOMContentRetriever(this.content()))}}if(!this.listController()){this.listController(new AJS.ListItemGroup())}},_getDefaultOptions:function(){return{trigger:null,ajaxOptions:null}},content:function(content){if(content){content=AJS.$(content);if(content.length){this.properties.content=content}}else{return this.properties.content}},trigger:function(trigger){if(trigger){this.properties.trigger=trigger}else{return this.properties.trigger}},contentRetriever:function(contentRetriever){if(contentRetriever){this.properties.contentRetriever=contentRetriever}else{return this.properties.contentRetriever}},listController:function(listController){if(listController){this.properties.listController=listController}else{return this.properties.listController}},ajaxOptions:function(ajaxOptions){if(ajaxOptions){this.properties.ajaxOptions=ajaxOptions}else{return this.properties.ajaxOptions}},loop:function(loop){if(typeof loop!=="undefined"){this.properties.loop=loop}else{return this.properties.loop}},alignment:function(alignment){if(alignment){this.properties.alignment=alignment}else{return this.properties.alignment}},eventDelegator:function(eventDelegator){if(typeof eventDelegator!=="undefined"){this.properties.eventDelegator=eventDelegator}else{return this.properties.eventDelegator}}});
AJS.DropDown.create=function(options){var dropdowns=[];if(options.content&&!options.trigger){options.content=AJS.$(options.content);AJS.$.each(options.content,function(){var instanceOptions=AJS.copyObject(options);instanceOptions.content=AJS.$(this);dropdowns.push(new AJS.DropDown(instanceOptions))})}else{if(!options.content&&options.trigger){options.trigger=AJS.$(options.trigger);AJS.$.each(options.trigger,function(){var instanceOptions=AJS.copyObject(options);instanceOptions.trigger=AJS.$(this);dropdowns.push(new AJS.DropDown(instanceOptions))})}}return dropdowns};
AJS.ContentRetrieverInterface=Interface.extend({startingRequest:Function,finishedRequest:Function,cache:Function,isLocked:Function,content:Function});
AJS.AjaxContentRetriever=Class.extend(AJS.ContentRetrieverInterface,{init:function(options){var instance=this;this.ajaxOptions=options;if(typeof this.ajaxOptions==="string"){this.ajaxOptions={url:this.ajaxOptions}}this.ajaxOptions.success=function(data,textStatus,xhr){instance._requestComplete(xhr,textStatus,data,true,null)};this.ajaxOptions.error=function(xhr,textStatus){if(xhr.rc){xhr.status=xhr.rc}instance._requestComplete(xhr,textStatus,null,false,null)}},content:function(arg){if(AJS.$.isFunction(arg)){this.callback=arg;this._makeRequest(arg)}else{if(arg){this.callback(arg);delete this.callback}}return this.$content},startingRequest:function(callback){if(callback){this.startingCallback=callback}else{if(this.startingCallback){this.locked=true;this.startingCallback()}}},finishedRequest:function(callback){if(callback){this.finishedCallback=callback}else{if(this.finishedCallback){this.locked=false;this.finishedCallback()}}},cache:function(cache){if(typeof cache!=="undefined"){this.ajaxOptions.cache=cache}else{return this.ajaxOptions.cache}},isLocked:function(){return this.locked},_requestComplete:function(xhr,statusText,data,successful,errorThrown){var $content,smartAjaxResult;if(jira.ajax.SmartAjaxResult){smartAjaxResult=jira.ajax.SmartAjaxResult.apply(window,arguments)}if(successful){if(AJS.$.isFunction(this.ajaxOptions.formatSuccess)){$content=this.ajaxOptions.formatSuccess(data)}else{$content=AJS.$(""+data+"
")}}else{if(AJS.$.isFunction(this.ajaxOptions.formatError)){$content=this.ajaxOptions.formatError(data)}else{if(smartAjaxResult){var errorClass=smartAjaxResult.status===401?"warn":"error";$content=AJS.$(""+jira.ajax.buildSimpleErrorContent(smartAjaxResult)+"
")}}}this.content($content);this.finishedRequest()},_makeRequest:function(){this.startingRequest();AJS.$.ajax(this.ajaxOptions)}});
AJS.DOMContentRetriever=Class.extend(AJS.ContentRetrieverInterface,{init:function(content){this.$content=AJS.$(content)},content:function(callback){if(AJS.$.isFunction(callback)){callback(this.$content)}return this.$content},cache:function(){},isLocked:function(){},startingRequest:function(){},finishedRequest:function(){}});
AJS.QueryableDropdown=AJS.Control.extend({INVALID_KEYS:[jira.keyboard.SpecialKey.TAB,jira.keyboard.SpecialKey.ESC,jira.keyboard.SpecialKey.SHIFT,jira.keyboard.SpecialKey.RIGHT],init:function(options){var instance=this;this._setOptions(options);this._queuedRequest=0;this.suggestionsVisible=false;if(this.options.ajaxOptions.minQueryLength){this.options.ajaxOptions.minQueryLength=parseInt(this.options.ajaxOptions.minQueryLength,10)}this._createFurniture();this.dropdownController=AJS.InlineLayer.create({offsetTarget:this.$field,width:this.$field.innerWidth(),content:options.element});this.listController=new AJS.List({containerSelector:options.element,groupSelector:"ul.aui-list-section",itemSelector:"li",selectionHandler:function(){instance.$field.val(AJS.params.dotLoading).css("color","#999");instance.hideSuggestions();return true}});this._assignEventsToFurniture();if(this.options.loadOnInit){this.suggestionsDisabled=true;this._requestThenResetSuggestions()}},_getDefaultOptions:function(){return{id:"default",ajaxOptions:{data:{query:""},dataType:"json",minQueryLength:0},keyInputPeriod:75}},getAjaxOptions:function(){this.options.ajaxOptions.data.query=AJS.$.trim(this.$field.val());return AJS.copyObject(this.options.ajaxOptions)},issueRequest:function(){var instance=this,ajaxOptions=this.getAjaxOptions();ajaxOptions.complete=function(xhr,textStatus,smartAjaxResult){instance.outstandingRequest=null;if(!instance.$container.is(":visible")){return}if(smartAjaxResult.successful){instance._handleServerSuccess(smartAjaxResult)}else{if(!smartAjaxResult.aborted){instance.hideSuggestions();instance._handleServerError(smartAjaxResult)}}};this.outstandingRequest=jira.ajax.makeRequest(ajaxOptions);AJS.$(this.outstandingRequest).throbber({target:this.$dropDownIcon,isLatentThreshold:500})},_handleServerSuccess:function(smartAjaxResult){if(this.options.loadOnInit||this.$field.val()==this.options.ajaxOptions.data.query){this._handleSuggestionResponse(smartAjaxResult.data)}},_handleServerError:function(smartAjaxResult){var errMsg=jira.ajax.buildSimpleErrorContent(smartAjaxResult);alert(errMsg)},_createFurniture:function(){this.$container=this._render("container").insertBefore(this.options.element);this.$field=this._render("field").appendTo(this.$container);this.$dropDownIcon=this._render("dropdownAndLoadingIcon",this._hasDropdownButton()).appendTo(this.$container);this.$suggestionsContainer=this._render("suggestionsContainer")},_hasDropdownButton:function(){return this.options.showDropdownButton||this.options.ajaxOptions.minQueryLength===0},_assignEventsToFurniture:function(){var instance=this;this._assignEvents("ignoreBlurElement",this.$container);this._assignEvents("ignoreBlurElement",this.dropdownController.$layer);if(this._hasDropdownButton()){this._assignEvents("ignoreBlurElement",this.$dropDownIcon);this._assignEvents("dropdownAndLoadingIcon",this.$dropDownIcon)}setTimeout(function(){instance._assignEvents("field",instance.$field);instance._assignEvents("keys",instance.$field)},15)},_useCachedRequest:function(){return !!(this.cachedList&&!this.options.ajaxOptions.query)},_isValidRequest:function(){return this.options.ajaxOptions.query||(!this.cachedList&&!this.outstandingRequest)},_requestThenResetSuggestions:function(ignoreBuffer){var instance=this;this.listController._latestQuery=AJS.$.trim(this.$field.val());if(this._useCachedRequest()){this._handleSuggestionResponse(this.cachedList)}else{if(this._isValidRequest()){if(ignoreBuffer&&this.outstandingRequest){this.outstandingRequest.abort();this.outstandingRequest=null}clearTimeout(this._queuedRequest);if(!this.outstandingRequest){this.issueRequest()}else{this._queuedRequest=setTimeout(function(){instance._requestThenResetSuggestions(ignoreBuffer)},this.options.keyInputPeriod)}}}},_handleSuggestionResponse:function(data){if(data!==this.cachedList){if(this._formatResponse){data=this._formatResponse(data)}else{if(this.options.ajaxOptions.formatResponse){data=this.options.ajaxOptions.formatResponse.call(this,data)}}}this.cachedList=data;this._setSuggestions(this.cachedList)},_setSuggestions:function(data){if(this.suggestionsDisabled){this.suggestionsDisabled=false;return}this.suggestionsVisible=true;if(data){this.dropdownController.show();this.dropdownController.setWidth(this.$field.innerWidth());if(this.options.ajaxOptions.query){this.listController.generateListFromJSON(data)}else{this.listController.generateListFromJSON(data,this.$field.val())}this.listController.enable()}else{this.hideSuggestions()}},_isValidInput:function(e){return this.$field.is(":visible")&&AJS.$.inArray(jira.keyboard.specialKeyEntered(e),this.INVALID_KEYS)===-1},_handleCharacterInput:function(ignoreBuffer,ignoreQueryLength){this.suggestionsDisabled=false;if(ignoreQueryLength||AJS.$.trim(this.$field.val()).length>=this.options.ajaxOptions.minQueryLength){if(this.options.ajaxOptions.url){this.$dropDownIcon.removeClass("noloading");this._requestThenResetSuggestions(ignoreBuffer)}else{this._setSuggestions(this.model.getUnSelectedDescriptors())}}else{this._setSuggestions()}},_handleDown:function(e){if(!this.suggestionsVisible){this._handleCharacterInput(true,true);e.stopPropagation()}},_rejectPendingRequests:function(){if(this.outstandingRequest){this.outstandingRequest.abort()}clearTimeout(this._queuedRequest)},hideSuggestions:function(){if(!this.suggestionsVisible){return}this._rejectPendingRequests();this.suggestionsVisible=false;this.$dropDownIcon.addClass("noloading");this.dropdownController.hide();this.listController.disable()},_handleEscape:function(e){if(this.suggestionsVisible){e.stopPropagation();if(e.type==="keyup"){this.hideSuggestions()}}},keys:{down:function(e){if(this._hasDropdownButton()){this._handleDown(e)}},up:function(e){e.preventDefault()},"return":function(e){e.preventDefault()},onEdit:function(e,character){var instance=this;this.$field.one("keyup",function(){instance._handleCharacterInput()})}},_events:{dropdownAndLoadingIcon:{click:function(e){this.$field.focus();if(this.suggestionsVisible){this.hideSuggestions()}else{this._handleDown(e)}e.stopPropagation()}},field:{blur:function(){this.hideSuggestions()},click:function(e){e.stopPropagation()},keyup:function(e){if(e.keyCode===jira.keyboard.SpecialKey.toKeyCode(jira.keyboard.SpecialKey.ESC)){this._handleEscape(e)}},beforedeactivate:function(e){if(this.ignoreBlurEvent){this.ignoreBlurEvent=false;e.preventDefault()}}},keys:{"keydown keypress":function(e){this._handleKeyEvent(e)}},ignoreBlurElement:{mousedown:function(e){if(e.target!==this.$field[0]){this.ignoreBlurEvent=true;e.preventDefault()}}}},_renders:{field:function(){return AJS.$("")},container:function(){return AJS.$("")},dropdownAndLoadingIcon:function(showDropdown){var $element=AJS.$('More');if(showDropdown){$element.addClass("drop-menu")}return $element},suggestionsContainer:function(){return AJS.$("")}}});
AJS.List=AJS.Control.extend({_getDefaultOptions:function(){return{matchingStrategy:"(^|.*\\s+)({0})(.*)",containerSelector:".aui-list",itemSelector:"li"}},index:0,moveToNext:function(){if(this.index"),instance=this,ungrouped=[],$listItems;this.suggestions=0;this.exactMatchIndex=-1;this.lastFocusedIndex=-1;this.lastQuery=query;AJS.$.each(data,function(i,descriptor){if(descriptor instanceof AJS.GroupDescriptor){if(ungrouped.length>0){$result.append(instance._generateUngroupedOptions(ungrouped,query));ungrouped=[]}$result.append(instance._generateOptGroup(descriptor,query))}else{if(this instanceof AJS.ItemDescriptor){ungrouped.push(descriptor)}}});if(ungrouped.length>0){$result.append(this._generateUngroupedOptions(ungrouped,query))}if($result.children().length===0){this.$container.html(this._render("noSuggestion"))}else{$result.find("ul:last").addClass("aui-last");this.$container.html($result.children())}this.$container.hide();$listItems=AJS.$("li > a",this.$container);$listItems.each(function(){var elem=AJS.$(this);elem.attr("title",elem.text())});$listItems.css({textOverflow:"ellipsis",overflow:"hidden"});this.$container.show();$listItems.textOverflow("…",false);event=new AJS.ContentChangeEvent({target:this.$container,eventOwner:AJS.List});event.fire();this.reset(this.exactMatchIndex>=0?this.exactMatchIndex:this.lastFocusedIndex)},_generateOption:function(item,query){var replacementText;if(query){var regexEscapedQuery=RegExp.escape(query),regex=new RegExp(AJS.format(this.options.matchingStrategy,regexEscapedQuery),"i");if(!regex.test(item.label())){return null}replacementText=item.label().replace(regex,function(_,prefix,match,suffix){return AJS.$("
").append(AJS.$("").text(prefix)).append(AJS.$("").text(match)).append(AJS.$("").text(suffix)).html()})}if(this.exactMatchIndex<0){var itemValue=AJS.$.trim(item.label()).toLowerCase();if(itemValue===AJS.$.trim(query).toLowerCase()){this.exactMatchIndex=this.suggestions}else{if(this.lastFocusedIndex<0&&this.lastFocusedItemDescriptor&&itemValue===AJS.$.trim(this.lastFocusedItemDescriptor.label()).toLowerCase()){this.lastFocusedIndex=this.suggestions}}}this.suggestions++;return this._render("suggestion",item,replacementText)},_generateUngroupedOptions:function(options,query){var hasSuggestion=false,instance=this,$container=this._render("ungroupedSuggestions");AJS.$.each(options,function(_,option){var $suggestion=instance._generateOption(option,query);if($suggestion){hasSuggestion=true;$container.append($suggestion)}});if(hasSuggestion){return $container}},_generateOptGroup:function(groupDescriptor,query){var res=AJS.$(),hasSuggestion,instance=this,optContainer=this._render("suggestionGroup",groupDescriptor);AJS.$.each(groupDescriptor.items(),function(i,option){var suggestion=instance._generateOption(option,query);if(suggestion){hasSuggestion=true,optContainer.append(suggestion)}});if(!hasSuggestion){return}if(groupDescriptor.showLabel()!==false){res=res.add(this._render("suggestionGroupHeading",groupDescriptor))}res=res.add(optContainer);return res},_events:{document:{keydown:function(e){this._handleKeyEvent(e)},keypress:function(e){this._handleKeyEvent(e)}}},_renders:{suggestion:function(descriptor,replacementText){var listElem=AJS.$(''),linkElem=AJS.$("").addClass("aui-list-item-link");if(descriptor.selected()){listElem.addClass("aui-checked")}linkElem.attr("href",descriptor.href()||"#");if(descriptor.icon()&&descriptor.icon()!=="none"){linkElem.addClass("aui-iconised-link").css({backgroundImage:"url("+descriptor.icon()+")"})}if(descriptor.styleClass()){linkElem.addClass(descriptor.styleClass())}if(descriptor.html()){linkElem.html(descriptor.html())}else{if(!replacementText){linkElem.text(descriptor.label())}else{linkElem.html(replacementText)}}if(descriptor.labelSuffix()){AJS.$("").text(descriptor.labelSuffix()).appendTo(linkElem)}listElem.append(linkElem).data("descriptor",descriptor);return listElem},noSuggestion:function(){return AJS.$("
"+AJS.params.frotherNomatches+"
")},ungroupedSuggestions:function(){return AJS.$("- ")},suggestionGroup:function(descriptor){return AJS.$("
").html(html):$focusedItem;var matches=AJS.$.map($item.find("em,b"),function($match){$match=AJS.$($match);return($match.text()+AJS.$($match.attr("nextSibling")).text().match(/^\S*/)[0]).toLowerCase()});for(var i=0;i0},remove:function(descriptor){if(descriptor&&descriptor.model()){descriptor.model().remove()}},getDescriptor:function(value){var returnDescriptor;value=AJS.$.trim(value.toLowerCase());AJS.$.each(this.getAllDescriptors(false),function(e,descriptor){if(value===AJS.$.trim(descriptor.label().toLowerCase())||value===AJS.$.trim(descriptor.value().toLowerCase())){returnDescriptor=descriptor;return false}});return returnDescriptor},appendOptionsFromJSON:function(optionDescriptors){var instance=this;AJS.$.each(optionDescriptors,function(i,descriptor){var optgroup;if(descriptor instanceof AJS.GroupDescriptor&&(descriptor.replace()||!instance._isOptionGroupPresent(descriptor))){if(descriptor.replace()){optgroup=instance.$element.find('optgroup[label="'+descriptor.label()+'"]');if(optgroup.length){optgroup.find("option:not(:selected)").remove()}}if(!optgroup||!optgroup.length){optgroup=instance._render("optgroup",descriptor)}optgroup.data("descriptor",descriptor);AJS.$.each(descriptor.items(),function(i,optDescriptor){if(!instance._isOptionPresent(optDescriptor,optgroup)){optgroup.append(instance._render("option",optDescriptor))}});if(typeof descriptor.weight()!=="undefined"){var target=instance.$element.children().eq(descriptor.weight());if(target[0]!==optgroup[0]){if(target.length){optgroup.insertBefore(target)}else{optgroup.appendTo(instance.$element)}}}else{optgroup.appendTo(instance.$element)}}else{if(descriptor instanceof AJS.GroupDescriptor){optgroup=instance.$element.find('optgroup[label="'+descriptor.label()+'"]');optgroup.data("descriptor",descriptor);AJS.$.each(descriptor.items(),function(i,optDescriptor){if(!instance._isOptionPresent(optDescriptor,optgroup)){optgroup.append(instance._render("option",optDescriptor))}})}else{if(descriptor instanceof AJS.ItemDescriptor&&!instance._isOptionPresent(descriptor)){instance._render("option",descriptor).appendTo(instance.$element)}}}})},_parseOption:function(optionElem){var descriptor;optionElem=AJS.$(optionElem);if(this.options.removeNullOptions&&this._hasNullValue(optionElem)){optionElem.remove();return null}descriptor=new AJS.ItemDescriptor({value:optionElem.val(),title:optionElem.attr("title"),label:optionElem.text(),icon:optionElem.css("backgroundImage"),selected:optionElem.attr("selected")?true:false,model:optionElem});optionElem.data("descriptor",descriptor);return descriptor},_hasNullValue:function(optionElement){return optionElement.val()<0},_parseDescriptors:function(){var instance=this,items=this.$element.children();function parseOptGroup(optionGroup){optionGroup.data("descriptor",new AJS.GroupDescriptor({label:optionGroup.attr("label"),styleClass:optionGroup.attr("className"),model:optionGroup,items:retrieveAvailableOptions(optionGroup)}))}function retrieveAvailableOptions(parent){var availableOptionElems=AJS.$("option",parent),arr=[];AJS.$.each(availableOptionElems,function(){arr.push(instance._parseOption(this))});return arr}items.each(function(i){var item=items.eq(i);if(item.is("optgroup")){parseOptGroup(item)}else{if(item.is("option")){instance._parseOption(item)}}})},getSelectedDescriptors:function(){var descriptors=[];this.$element.find("option").each(function(){if(this.selected){descriptors.push(AJS.$.data(this,"descriptor"))}});return descriptors},getAllDescriptors:function(showGroups){var properties,descriptors=[];this.$element.children().each(function(){var descriptor,elem=AJS.$(this);if(elem.is("option")){descriptors.push(elem.data("descriptor"))}else{if(elem.is("optgroup")){if(showGroups!==false){properties=AJS.copyObject(elem.data("descriptor").allProperties(),false);properties.items=[];descriptor=new AJS.GroupDescriptor(properties);descriptors.push(descriptor)}elem.children("option").each(function(){var elem=AJS.$(this);if(showGroups!==false){descriptor.addItem(elem.data("descriptor"))}else{descriptors.push(elem.data("descriptor"))}})}}});return descriptors},clearUnSelected:function(){this.$element.find("option:not([selected])").remove()},getUnSelectedDescriptors:function(showGroups){var descriptors=[],selectedValues={},addedValues={};function isValid(descriptor){var descriptorVal=descriptor.value().toLowerCase();if(!selectedValues[descriptorVal]&&(!addedValues[descriptorVal]||descriptor.allowDuplicate()!==false)){addedValues[descriptorVal]=true;return true}return false}AJS.$.each(this.getSelectedDescriptors(),function(i,descriptor){selectedValues[descriptor.value().toLowerCase()]=true});this.$element.children().each(function(){var descriptor,properties,elem=AJS.$(this);if(elem.is("option")&&!this.selected){descriptor=AJS.$.data(this,"descriptor");if(isValid(descriptor)){descriptors.push(descriptor)}}else{if(elem.is("optgroup")){if(showGroups!==false){properties=AJS.copyObject(elem.data("descriptor").allProperties(),false);properties.items=[];descriptor=new AJS.GroupDescriptor(properties);descriptors.push(descriptor)}elem.find("option").each(function(){if(this.selected){return}var itemDescriptor=AJS.$.data(this,"descriptor");if(isValid(itemDescriptor)){if(showGroups!==false){descriptor.addItem(itemDescriptor)}else{descriptors.push(itemDescriptor)}}})}}});return descriptors},_renders:{option:function(descriptor){var option=new Option(descriptor.label(),descriptor.value());var $option=AJS.$(option);var iconUrl=descriptor.icon();option.title=descriptor.title();AJS.$.data(option,"descriptor",descriptor);descriptor.model($option);if(iconUrl){$option.css("backgroundImage","url("+iconUrl+")")}return $option},optgroup:function(descriptor){var elem=AJS.$("").addClass(descriptor.styleClass()).attr("label",descriptor.label());descriptor.model(elem);elem.data("descriptor",descriptor);return elem}}});
AJS.QueryableSelect=AJS.QueryableDropdown.extend({init:function(options){var instance=this;if(this._setOptions(options)===this.INVALID){return this.INVALID}this.options.element.hide();if(this.options.disabled){this._createFurniture(true);return this}this.model=new AJS.SelectModel({element:this.options.element,removeOnUnSelect:this.options.removeOnUnSelect});this._createFurniture();this.dropdownController=AJS.InlineLayer.create({alignment:AJS.LEFT,offsetTarget:this.$field,content:AJS.$(".aui-list",this.$container)});this.listController=new AJS.List({containerSelector:AJS.$(".aui-list",this.$container),groupSelector:"ul.aui-list-section",itemSelector:"li",matchingStrategy:this.options.matchingStrategy,selectionHandler:function(e){instance._selectionHandler(this.getFocused(),e);return false}});this._assignEventsToFurniture()},_createFurniture:function(disabled){var id=this.model.$element.attr("id");if(disabled){this.model.$element.replaceWith(this._render("disableSelectField",id))}else{this.$container=this._render("container",id);this.$field=this._render("field",id).appendTo(this.$container);this.$container.append(this._render("suggestionsContainer",id));this.$container.insertBefore(this.model.$element);this.$dropDownIcon=this._render("dropdownAndLoadingIcon",this._hasDropdownButton()).appendTo(this.$container)}},_getUserInputValue:function(){return this.options.uppercaseUserEnteredOnSelect?this.$field.val().toUpperCase():this.$field.val()},_handleUserInputOption:function(){var groupDescriptor;if(!this.hasUserInputtedOption()||this.$field.val().length===0){return}groupDescriptor=new AJS.GroupDescriptor({type:"optgroup",label:"user inputted option",weight:9999,showLabel:false,replace:true});groupDescriptor.addItem(new AJS.ItemDescriptor({value:this._getUserInputValue(),label:this.$field.val(),labelSuffix:" ("+this.options.userEnteredOptionsMsg+")",title:this.$field.val(),allowDuplicate:false}));this.model.appendOptionsFromJSON([groupDescriptor])},hasUserInputtedOption:function(){return this.options.userEnteredOptionsMsg},_handleSuggestionResponse:function(data){if(this.options.ajaxOptions.query){this.model.clearUnSelected()}this._handleUserInputOption();this._super(data)},_setSuggestions:function(data){if(data){this.model.appendOptionsFromJSON(data);this._super(this.model.getUnSelectedDescriptors())}else{this.hideSuggestions()}},_renders:{field:function(idPrefix){return AJS.$('')},disableSelectField:function(id){return AJS.$("")},container:function(idPrefix){return AJS.$('
')},suggestionsContainer:function(idPrefix){return AJS.$('')}}});
AJS.SelectMenu=AJS.Control.extend({init:function(options){var instance=this;this.model=new AJS.SelectModel(options);this.model.$element.hide();this._createFurniture();this.dropdownController=AJS.InlineLayer.create({alignment:AJS.LEFT,width:200,content:AJS.$(".aui-list",this.$container)});this.dropdownController.layer().addClass("select-menu");this.listController=new AJS.List({containerSelector:AJS.$(".aui-list",this.$container),groupSelector:"ul.opt-group",itemSelector:"li:not(.no-suggestions)",selectionHandler:function(e){instance._selectionHandler(this.getFocused(),e);e.preventDefault()}});this._assignEventsToFurniture()},show:function(){this._resetSuggestions();this.dropdownController.show();this.listController.enable()},_assignEventsToFurniture:function(){this._assignEvents("trigger",this.$trigger)},_createFurniture:function(){var id=this.model.$element.attr("id");this.$container=this._render("container",id);this.$trigger=this.model.$element.prev("a").appendTo(this.$container);this.$container.append(this._render("suggestionsContainer"));this.$container.insertBefore(this.model.$element)},_resetSuggestions:function(){this.listController.generateListFromJSON(this.model.getAllDescriptors())},_renders:{container:function(idPrefix){return AJS.$('