Advertisement
Guest User

Untitled

a guest
Apr 11th, 2014
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. try {
  2. /* module-key = 'com.playsql.playsql-plugin:playsql-spreadsheet-web', location = 'spreadsheet/spreadsheet-macro.js' */
  3. (function(d){function i(k){if(Confluence.PlaySQL.Spreadsheet.spreadsheets[k]){return Confluence.PlaySQL.Spreadsheet.spreadsheets[k]}if(k.hasClass&&k.hasClass("playsql-spreadsheet-placeholder")){return f(k)}else{var j=d(".playsql-spreadsheet-placeholder[data-macro-spreadsheet-id='"+k+"'");if(j.size()!=1){throw"No placeholder with ID "+k}return f(j)}}function f(W){var q=W.data("playsql-spreadsheet");if(q){return q}q={id:W.attr("data-macro-spreadsheet-id"),context:W.attr("data-macro-context"),whereClause:W.attr("data-macro-where-clause"),orderbyClause:W.attr("data-macro-orderby-clause"),displayColumns:W.attr("data-macro-display-columns"),permlevel:W.attr("data-macro-permlevel"),decimalSeparator:".",requestPipe:undefined};if(!q.id){throw"No ID on placeholder "+W.html()}W.data("playsql-spreadsheet",q);var m=function(ac,ab,Z){var aa="";for(var Y=0;Y<arguments.length;Y++){var X=arguments[Y];if(Y==arguments.length-1&&(typeof X=="object")){aa+="?"+d.param(X)}else{aa+="/"+X.replace(/^\/|\/$/g,"")}}return AJS.contextPath()+"/rest/playsql-spreadsheets/1.0/"+q.context+"/"+q.id+aa};var N=function(){if(d.browser.msie&&d.browser.version<=8){e(W.find(".playsql-message")).text("Lol! Internet Explorer 8! For your own security, please upgrade - Only 4% users still use your browser.");return}var Y={whereClause:q.whereClause,orderby:q.orderbyClause,columns:q.displayColumns};var X=m("/data",Y);if(!q.id){AJS.log("Placeholder has no spreadsheet id: ",W);return}d.ajax({url:X,type:"GET",contentType:"application/json; charset=utf-8",timeout:180000,cache:false}).done(function(ae,ad,ac){var ah=ac.getResponseHeader("COL_NAMES").split(","),aa=ae.tableDef;function Z(ai){for(var aj in aa.columns){if(aa.columns[aj].name==ai){return aa.columns[aj]}}throw"Column not found: "+ai}var ab=ah.map(function(ai,aj){var ak=Z(ai);return h(aj,ak,W)});q.columns=ab;q.totals=aa.totals||[];q.perms=a(c(aa.perms),c(q.permlevel));q.defaultCase=ac.getResponseHeader("DIALECT_DEFAULT_CASE");if(q.defaultCase!="LOWER"&&q.defaultCase!="UPPER"){d("#create-query-button, #create-spreadsheet-button").hide();throw"Invalid default case: "+defaultCase}q.mode=ac.getResponseHeader("MODE");q.label=aa.label;M(ab,ae.data);var af=Confluence.Templates.PlaySQL.fullTable({name:q.id,columns:ab,data:ae.data,totals:ae.totals,recoverableErrorMessage:ae.errorMessage!=undefined&&ae.errorMessage.length>1?(ae.errorMessage.charAt(0).toUpperCase()+ae.errorMessage.slice(1)):""});ab.splice(1,1);for(var ag=0;ag<ab.length;ag++){ab[ag].index=ag}W.html(af);L();G()}).fail(function(ac,aa,ad){var ab="Sorry, the spreadsheet couldn't be displayed: "+ad+" (HTTP status code: "+ac.status+")",Z=W.find(".playsql-message");AJS.logError("PlaySQL error: "+ab+"\n"+ac.responseText);if(Z.size()>0){e(W.find(".playsql-message")).text(ab);W.find(".hidden").text(ac.responseText)}else{Confluence.PlaySQL.Messages.addMessage("error",ab,"save-spreadsheet-bean")}});return false};var M=function(ad,Z,X){for(var ac in Z){var af=Z[ac];for(var ab in af){var ae=af[ab],Y=ad[ab],aa=Confluence.PlaySQL.Spreadsheet.renderers[Y.viewRenderer||Y.renderer];ae.push(aa.renderCellContents(ae[0],q,Y))}}};var L=function(){var X=AJS.contextPath()+"/playsql-plugin/spreadsheet-editor.action?"+d.param({key:q.context.split(":")[1],spreadsheetId:q.id});if(!q.perms.hasPerm("ADD_COLS")){q.$placeholder.find(".add-column a").addClass("hidden")}if(!q.perms.hasPerm("ADD_ROWS")){q.$placeholder.find(".totals-row a").addClass("hidden")}W.find("thead th:first-child").html("<a href='"+X+"'>&nbsp;</a>");var Y=Confluence.PlaySQL.Selection.forTable(W).init({onInit:function(){Confluence.PlaySQL.Selection.attach(W,undefined,{"click thead th.add-column a":K,"click th.add-row a":function(aa,Z){Z.preventDefault();O(undefined);return false}})},canSelectFooter:q.perms.hasPerm("EDIT_TOTALS"),columnSecondClick:p,rowSecondClick:C,saveCells:function(aa){var Z=false;if(aa.size()>3){q.requestPipe=q.requestPipe||[]}aa.each(function(){var ac=d(this);if(ac.is("tr.totals-row > *.editing")){if(!q.perms.hasPerm("EDIT_TOTALS")){return}Confluence.PlaySQL.Totals.saveTotal(q.totals,ac);Z=true}else{q.perms.hasPerm("EDIT_CELLS");var ab=l(d(this));ab.renderer.saveAndView()}});w(q);if(Z){I()}},editCell:function(aa){if(aa.parent().is("tr.totals-row")&&!aa.is(":last-child")){if(!aa.hasClass("editing")){if(!q.perms.hasPerm("EDIT_TOTALS")){return}if(!aa.hasClass("aui-dropdown2-trigger")&&q.totals.length>0){var Z=q.totals,ab={edit:["Edit",Confluence.PlaySQL.Totals.editTotal,Z,aa],addLeft:["Split cell (on the left)",Confluence.PlaySQL.Totals.addTotal,Z,aa,-1],addRight:["Split cell (on the right)",Confluence.PlaySQL.Totals.addTotal,Z,aa,1],remove:["Remove this total",Confluence.PlaySQL.Totals.removeTotal,Z,aa,I]};if(!(parseInt(aa.attr("colspan"))>=2)){delete ab.addRight}if(!(parseInt(aa.attr("colspan"))>=3)){delete ab.addLeft}Confluence.PlaySQL.Selection.bindMenu(aa,ab)}else{aa.removeClass("aui-dropdown2-trigger").removeAttr("aria-controls aria-haspopup aria-owns");Confluence.PlaySQL.Totals.editTotal(q.totals,aa)}}}else{if(!q.perms.hasPerm("EDIT_CELLS")){return}F(aa)}},cancelEdit:function(aa){if(aa.parent().is("tr.totals-row")){var ab=aa.attr("data-rendered");if(aa.hasClass("editing")&&ab!==undefined){Confluence.PlaySQL.Selection.inlineDialog&&Confluence.PlaySQL.Selection.inlineDialog.hide();aa.html(ab).removeClass("editing")}}else{var Z=l(aa);Z.renderer.cancelEdit()}},getCell:l,colOf:n,popupTrigger:".totals-row .totals-calculation",popupContentFn:function(aa,ab,ai){var af={},ae=["SUM(%s)","ROUND(AVG(%s))","MAX(%s)"],aj=["MAX(%s)"],ac=[],ah=[],Z,am,ag,al,ak=q.id;for(var ad in q.columns){am=Z=q.columns[ad].name;ag=q.columns[ad].type;if(q.defaultCase=="LOWER"&&am.toLowerCase()!=am||q.defaultCase=="UPPER"&&am.toUpperCase()!=am){am='"'+am+'"'}af[ag]=(af[ag]||[]).concat(am);if(Z!="PLAYSQL_ID"&&Z!="PLAYSQL_POSITION"){if(ag=="INTEGER"||ag=="NUMERIC"){al=ae[ac.length%ae.length];ac.push(al.replace("%s",am))}else{if((ag=="VARCHAR"||ag=="TEXT")&&ah.length<aj.length){al=aj[ah.length%aj.length];ah.push(al.replace("%s",am))}}}}if(q.defaultCase=="LOWER"&&ak.toLowerCase()!=ak||q.defaultCase=="UPPER"&&ak.toUpperCase()!=ak){ak='"'+ak+'"'}aa.unbind().html(Confluence.Templates.PlaySQL.formulaHelp({fields:af,examples:ac.concat(ah),tableName:ak}));aa.on("click",".examples a",function(){d(ab).val(d(this).text()).focus();Confluence.PlaySQL.Selection.inlineDialog&&Confluence.PlaySQL.Selection.inlineDialog.hide();return false});ai()},pasteHandler:B,addRow:O})};var I=function(){var Y=q.totals,X=m("",{confirm:"update"}),Z={name:q.id,label:q.label,columns:undefined,totals:Y};Confluence.PlaySQL.Totals.updateColspans(q.totals,q.$placeholder);d.ajax({url:X,type:"PUT",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(Z)}).done(function(ae,aa,ad){var ab=d(Confluence.Templates.PlaySQL.totalsRow({totals:ae.totals,columnCount:q.columns.length-1}));W.find("tfoot").html(ab.contents());if(!!ae.errorMessage){var ac=ae.errorMessage;ac=ac.replace("ERROR: ","");W.find("tfoot .total-label").first().text(ac+". Edit the total again to fix the formula.");W.find("tfoot .total-value").first().text("")}}).fail(function(ab,aa,ac){Confluence.PlaySQL.Messages.addMessage("error","The settings for the totals couldn't be saved","change-totals",ab.responseText)})};var u=function(){if(!q.perms.hasPerm("EDIT_TOTALS")){return}var X=m("",{fields:"totals"});d.ajax({url:X,type:"GET",contentType:"application/json; charset=utf-8",cache:false}).done(function(ab,Y,aa){var Z=d(Confluence.Templates.PlaySQL.totalsRow({totals:ab.totals,columnCount:q.columns.length-1}));W.find("tfoot").html(Z.contents())}).fail(function(Z,Y,aa){Confluence.PlaySQL.Messages.addMessage("error","The settings for the totals couldn't be saved","change-totals",Z.responseText)})};var G=function(){for(var X in q.columns){var Y=q.columns[X],Z=e(Confluence.PlaySQL.Spreadsheet.renderers[Y.viewRenderer||Y.renderer]);Z.onColumnDisplay(q,Y)}};var F=function(Y){if(!Y.hasClass("editing")){var X=l(Y);if(X){if(!q.perms.hasPerm("EDIT_CELLS")){return}X.renderer.edit();X.renderer.focus()}}};var p=function(X){if(X.hasClass("editing")){return}if(q.inlinedialog){return}var aa=n(X),ab=Confluence.PlaySQL.Helpers.parseOrderByClause(q.orderbyClause),Y={},ac=Confluence.PlaySQL.Spreadsheet.renderers[aa.renderer],ae=Confluence.PlaySQL.Spreadsheet.renderers[aa.viewRenderer||aa.renderer];for(var Z in ab){if(ab[Z].field=='"'+aa.name+'"'){Y=ab[Z];break}}aa.rendererName=ac?ac.getI18nName():"?";aa.viewRendererName=ae?ae.getI18nName():"?";q.inlinedialog=AJS.InlineDialog(X,"col-properties",function(ah,ag,al){ah.css("width","");ah.html(Confluence.Templates.PlaySQL.columnPropertiesInlineDialog({column:aa,orderbyDef:Y,hasColFEPerm:q.perms.hasPerm("EDIT_COLS_FE"),hasColBEPerm:q.perms.hasPerm("EDIT_COLS_BE")}));al();ah.find(".sort-none, .sort-desc, .sort-asc").click(function(){var an=d(this),am=an.hasClass("sort-desc")?"DESC":an.hasClass("sort-asc")?"ASC":"NO-SORTING",ao=Y.nulls;q.sortCol(X,am,ao);q.inlinedialog&&q.inlinedialog.close()});ah.find(".nulls-default, .nulls-first, .nulls-last").click(function(){var an=d(this),am=Y.way,ao=an.hasClass("nulls-default")?undefined:an.hasClass("nulls-first")?"FIRST":"LAST";q.sortCol(X,am,ao);q.inlinedialog&&q.inlinedialog.close()});ah.on("click",".btn-properties",function(){q.inlinedialog.close();o(X)});ah.on("click",".btn-delete",function(){if(!q.perms.hasPerm("EDIT_COLS_BE")){alert("I believe deleting the column won't be possible because of your permissions.");return}q.inlinedialog.close();k(X)});ah.on("click",".btn-cancel",function(){q.inlinedialog.close()});var ak=ah.find(".column-formula");ak.blur(function(){window.setTimeout(function(){ak.removeClass("aui-dropdown2-trigger").removeAttr("aria-controls aria-haspopup aria-owns")},100)}).keyup(function(am){window.setTimeout(function(){if(ak.val()=="="){if(!ak.attr("aria-owns")){ak.attr("aria-owns","dropdown-wizards").attr("aria-haspopup","true").addClass("aui-dropdown2-trigger").trigger("aui-button-invoke")}ah.find(".if-formula").removeClass("hidden")}else{if(ak.val().indexOf("=")!=0){ah.find(".if-formula").addClass("hidden")}if(d("#dropdown-wizards:visible").length>0){ak.trigger("aui-button-invoke")}ak.attr("aria-owns","").attr("aria-haspopup","").removeClass("aui-dropdown2-trigger")}},0)});function aj(ar,aq){var an=[],ao={name:aa.name,label:aa.label,type:aa.type,formula:aa.formula,renderer:aa.renderer,viewRenderer:aa.viewRenderer,length:aa.length,formats:aa.formats};if(ar!=ao.formula){an.push("CHFMA");ao.formula=ar}if(aq!=ao.viewRenderer){an.push("CHRDR");ao.viewRenderer=aq}if(an.length==0){return}var am=q.baseUrl("/cols",e(aa.name),{confirm:an.join(",")}),ap=ao;d.ajax({url:am,type:"PUT",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(ap)}).done(function(aw,at,av){var au=Confluence.PlaySQL.Spreadsheet.readColumnDefinition(aa.index,aw);aa.type=au.type;aa.length=au.length;aa.formula=au.formula;aa.renderer=au.renderer;aa.viewRenderer=au.viewRenderer;aa.formats=au.formats;q.load()}).fail(function(au,at,av){Confluence.PlaySQL.Messages.addMessage("error","The wizard couldn't update the formula. The spreadsheet will be reloaded","wizard-formula",au.responseText);q.load()})}function ai(am){Confluence.PlaySQL.Messages.addMessage("error","The wizard couldn't update the formula.","wizard-formula",am)}ah.find(".wizardGMaps").click(function(){A(q.columns,X,aa,aj,ai)});ah.find(".wizardForeignKey").click(function(){R(q.columns,X,aa,aj,ai)});function af(){var am=ah.find(".column-label"),at=ah.find(".column-name"),ar=ah.find(".column-formula"),ao=[],ap={name:aa.name,label:aa.label,type:aa.type,formula:aa.formula,renderer:aa.renderer,length:aa.length,formats:aa.formats};if(am.val()!=aa.label){ap.label=am.val();if(ap.label.trim().length==0){d("#inline-dialog-col-properties .error").text("A label is required.");return}ao.push("CHLBL")}if(at.val()!=aa.name){ap.name=at.val();if(ap.name.trim().length==0){d("#inline-dialog-col-properties .error").text("A name is required. This is the key of the column.");return}ao.push("RENAME")}if(ar.val()!=(aa.formula||"")){ao.push("CHFMA");ap.formula=ar.val()}if(ao.length==0){q.inlinedialog&&q.inlinedialog.close();return}var an=q.baseUrl("/cols",e(aa.name),{confirm:ao.join(",")}),aq=ap;d.ajax({url:an,type:"PUT",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(aq)}).done(function(ay,av,ax){var aw=Confluence.PlaySQL.Spreadsheet.readColumnDefinition(aa.index,ay);aa.name=aw.name;aa.label=aw.label;aa.type=aw.type;aa.length=aw.length;aa.formula=aw.formula;aa.renderer=aw.renderer;aa.formats=aw.formats;if(ao.indexOf("RENAME")!=-1||ao.indexOf("CHLBL")!=-1){var au=e(l(X));au.renderer.view()}if(ao.indexOf("CHFMA")!=-1){S(aa.name,function(aA,az){if(aA){q.load();q.inlinedialog&&q.inlinedialog.close()}else{d("#inline-dialog-col-properties .error").text(az)}})}else{q.inlinedialog&&q.inlinedialog.close()}}).fail(function(av,au,aw){d("#inline-dialog-col-properties .error").text(av.responseText)})}ah.on("click",".btn-submit",af);ah.on("keypress",function(am){if(am.which==13){af();return false}else{if(am.which==27){q.inlinedialog&&q.inlinedialog.close();return false}}});return false},{noBind:true,hideCallback:function(){q.inlinedialog&&q.inlinedialog.close()},hideDelay:10000000});q.inlinedialog.close=function(){q.inlinedialog.remove();q.inlinedialog=undefined};q.inlinedialog.show();return;var ad={rename:["Rename the column",startRenameColumn,X],"delete":["Delete the column",k,X],displayColProps:["Change format",o,X],sort:["Sort",T,X,"REVERSE"]};if(!q.perms.hasPerm("EDIT_COLS_BE")){delete ad["delete"]}if(Object.keys(ad).length==0){return}Confluence.PlaySQL.Selection.bindMenu(X,ad)};var C=function(Y){var X=W.find(".selected").closest("tr").map(function(aa,ab){return d(ab).attr("data-row-id")}),Z={"delete":["Delete",E,X]};e(Y.parent().attr("data-row-id"));if(!q.perms.hasPerm("REMOVE_ROWS")){delete Z["delete"]}if(Object.keys(Z).length>0){Confluence.PlaySQL.Selection.bindMenu(Y,Z)}};var t=function(Y){var X;if(Y!=undefined){X=W.find("tr[data-row-position='"+Y+"']")}else{throw"Not implemented"}if(X.size()==0){throw"Couldn't find the row: "+Y}return X};var Q=function(Y){if(Y instanceof d&&Y.is("tr")){return Y}else{var X=W.find("tr[data-row-id='"+e(Y)+"']");return e(X,Y)}};var l=function(ag,X){var af,ac,Z,ae,ad,ab,aa,Y;if(X==undefined){if(ag==undefined){return undefined}if(!ag instanceof d||!ag.is("td,th")){throw"Can't find cell: "+ag+" - "+X}af=ag}else{ac=Q(ag);if(d.isNumeric(X)){af=ac.children().eq(X)}else{af=ac.children().eq(r(X).index)}}if(af.index()>=q.columns.length){return undefined}else{if(af.find(".playsql-message").size()>0){return undefined}}Z=q.columns[af.index()];ae=af.is("thead > tr > th");ad=ae?Confluence.PlaySQL.Spreadsheet.renderers.header:Confluence.PlaySQL.Spreadsheet.renderers[Z.renderer];ab=ad.forCell(q,af);if(!ae&&!!Z.formula&&Z.viewRenderer){aa=Confluence.PlaySQL.Spreadsheet.renderers[Z.viewRenderer];Y=aa.forCell(q,af)}return{$cell:af,isColumnHeader:ae,column:Z,renderer:e(ab,Z.renderer),viewRenderer:Y}};var r=function(X){for(var Y in q.columns){if(q.columns[Y].name==X){return q.columns[Y]}}throw"Can't find column: "+X};var n=function(aa){if(aa instanceof d){return q.columns[aa.index()]}else{if(typeof aa=="string"){var Z=aa;for(var Y in q.columns){if(q.columns[Y].name==Z){return q.columns[Y]}}}else{if(typeof aa=="number"){var X=aa;return q.columns[X]}}}throw"colOf: Couldn't parse the argument: "+aa};var O=function(X){s(1,X)};var s=function(ad,aa){if(!q.perms.hasPerm("ADD_ROWS")){return false}var Z=W.find("tr.message");if(Z.size()!=0){Z.remove()}var ac=[],Y=[],ah=q.columns.map(function(ai){return ai.name});ah.splice(1,0,"POSITION");for(var ab=0;ab<ad;ab++){var ag=U(ah.length);var af=Confluence.Templates.PlaySQL.oneRow({row:ag}),ae;if(aa){ae=d(af).insertBefore(t(aa))}else{ae=d(af).appendTo(W.find("tbody"))}ae.children("*:not(:last)").each(function(aj){var ak=d(this),ai=l(ak);ai.renderer.edit();if(aj==1){ai.renderer.focus();W.find(".focused").removeClass("focused selected");ak.addClass("focused selected")}});Confluence.PlaySQL.Messages.spin(ae.find("th:first")).on(undefined,"The row is being created on the server side. You cannot submit cells until the row is ready.");ac[ab]=ag.splice(1,1);Y[ab]=ae}ah=["POSITION"];var X=m("/data");d.ajax({url:X,type:"POST",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(ac),headers:{COL_NAMES:ah}}).done(function(al,ai,ak){for(var aj=0;aj<al.data.length&&aj<Y.length;aj++){var am=l(Y[aj],"PLAYSQL_ID");am.renderer.setOriginalValue(al.data[aj][0][0],al.data[aj][0][0]);am.renderer.setPositionValue(al.data[aj][1][0],al.data[aj][1][0])}}).fail(function(al,aj,am){if(am){Confluence.PlaySQL.Messages.addMessage("error","The row couldn't be created. Please reload the page.","add-row",al.responseText)}else{Confluence.PlaySQL.Messages.addMessage("error","The row couldn't be created. Please reload the page.","add-row",al.responseText)}for(var ak=0;ak<Y.length;ak++){var ai=Y[ak];if(ai.text().length<10){ai.remove()}ai.children("td:not(:last-child)").addClass("invalid").attr("title","The row couldn't be created. Please reload the page.")}});return false};var E=function(X){X.each(function(Y,Z){J(Z)})};var J=function(Z){if(!q.perms.hasPerm("REMOVE_ROWS")){return}var X=Q(Z),Y=m("/data",e(Z));var aa=Confluence.PlaySQL.Messages.spin(X.children().first()).on(500,"Deleting the row");d.ajax({url:Y,type:"DELETE"}).done(function(ad,ab,ac){X.remove()}).fail(function(ac,ab,ad){aa.off();Confluence.PlaySQL.Messages.addMessage("error","The row couldn't be deleted because of a communication error with the server. ","save-spreadsheet-bean",ac.responseText)})};var V=function(ab,aa){var ac=ab.parent().attr("data-row-id"),Y=e(n(ab),ab),X=m("/data",e(ac)),Z=[[aa]];if(q.requestPipe!=undefined){q.requestPipe.push({rowId:ac,column:Y.name,value:aa})}else{d.ajax({url:X,type:"PUT",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(Z),headers:{COL_NAMES:Y.name}}).done(function(ai,ae,ah){var ak,aj=ai.data[0];for(var ag in ai.tableDef.columns){var af=ai.tableDef.columns[ag];if(af.name=="PLAYSQL_ID"){ak=aj[ag][0]}else{if(af.name!="PLAYSQL_POSITION"&&ak!=undefined){var ad=l(ak,af.name);if(ad==undefined){Confluence.PlaySQL.Messages.addMessage("error","The cell {"+(ac?ac:"unknown row")+","+af.name+"}  couldn't be displayed because it could not be found on the spreadsheet. Reloading the page would give you an updated view.")}else{if(!ad.$cell.hasClass("editing")){ad.renderer.setOriginalValue(aj[ag][0],aj[ag][1])}}}}}AJS.$.debounce(u,500)}).fail(function(af,ae,ag){Confluence.PlaySQL.Messages.addMessage("error","The cell {"+(ac?ac:"unknown row")+","+Y.name+"} with value '"+aa+"' couldn't be saved.",af.responseText);var ad=l(ab).renderer.markInError()})}};var w=function(Z){if(Z.requestPipe==undefined){return}var Y=Z.requestPipe,ag=[],ad,ae,X,aa,af,ac;Z.requestPipe=undefined;for(var ab=0;ab<Y.length;ab++){ad=Y[ab];ag[ad.rowId]=ag[ad.rowId]||[];ag[ad.rowId].push(ad)}for(var ab in ag){ae=ag[ab];X=m("/data",e(ab)),af=ae.map(function(ah){return ah.column}).join(",");ac=ae.map(function(ah){return[ah.value]});d.ajax({url:X,type:"PUT",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(ac),headers:{COL_NAMES:af}}).done(function(am,ai,al){var ao,an=am.data[0];for(var ak in am.tableDef.columns){var aj=am.tableDef.columns[ak];if(aj.name=="PLAYSQL_ID"){ao=an[ak][0]}else{if(aj.name!="PLAYSQL_POSITION"&&ao!=undefined){var ah=l(ao,aj.name);if(ah==undefined){Confluence.PlaySQL.Messages.addMessage("error","The cell {"+(aa?aa:"unknown row")+","+aj.name+"}  couldn't be displayed because it could not be found on the spreadsheet. Reloading the page would give you an updated view.")}else{if(!ah.$cell.hasClass("editing")){ah.renderer.setOriginalValue(an[ak][0],an[ak][1])}}}}}AJS.$.debounce(u,500)}).fail(function(al,ai,ao){var an=this.headers.COL_NAMES.split(","),am=this.url.substr(this.url.lastIndexOf("/")+1),ak,ah;Confluence.PlaySQL.Messages.addMessage("error","The cells {"+(am?am:"unknown row")+","+an.join(",")+"}  couldn't be displayed because of a server error. Please refresh the page. ",al.responseText);for(var aj=0;aj<an.length;aj++){ak=an[aj].trim();ah=e(l(am,ak));ah.renderer.markInError()}})}};var j=function(aa,Y){if(!q.perms.hasPerm("ADD_COLS")){return}var X=m("/cols",e(Y.name)),Z={name:e(Y.name),type:e(Y.type),label:e(Y.label),renderer:e(Y.renderer),viewRenderer:Y.viewRenderer,options:undefined};d.ajax({url:X,type:"PUT",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(Z)}).done(function(af,ac,ae){var ab=l(aa),ad=n(aa);ad.name=Y.name;ad.type=Y.type;ad.label=Y.label;ad.renderer=Y.renderer;ad.viewRenderer=Y.viewRenderer;ab.renderer.view()}).fail(function(ac,ab,ad){Confluence.PlaySQL.Messages.addMessage("error","The column couldn't be created: "+Y.label,"change-col",ac.responseText);aa.removeClass("saving").addClass("invalid").attr("title","The column couldn't be created")})};var U=function(Z){var X=[];for(var Y=0;Y<Z;Y++){X[Y]=["","",""]}return X};function z(Y){var X=parseInt(Y.attr("colspan"))||1;Y.attr("colspan",X+1)}var D=function(Y){Confluence.PlaySQL.Selection.forTable(Y.$placeholder).unselectAll();Y.$placeholder.find("tbody tr td:last-child").each(function(){var Z=d(this);if(Z.parent().is(".message")){z(Z)}else{var aa=d("<td></td>",{"data-value":"","data-rendered":""}).insertBefore(Z)}});var X=d("<th></th>",{"data-name":Y.name,"data-type":Y.type,"data-renderer":Y.renderer,"data-view-renderer":Y.viewRenderer,text:Y.label}).insertBefore(Y.$placeholder.find("thead th:last-child"));z(Y.$placeholder.find("tfoot td:not(:last-child)").last());return X};var K=function(ab,aa){if(!q.perms.hasPerm("ADD_COLS")){return}var Z={name:"",label:"New column",type:"TEXT",renderer:"link",viewRenderer:undefined,formats:{},$placeholder:W,index:q.columns.length};var Y=D(Z);q.columns.push(Z);var X=l(Y).renderer;X.edit();X.focus();I();aa.preventDefault();return false};var k=function(ab){if(!q.perms.hasPerm("REMOVE_COLS")){return}Confluence.PlaySQL.Selection.forTable(W).unselectAll();var Z=n(ab);if(!confirm(("You are about to delete the column '$1' (label: $2). The operation cannot be cancelled and the contents of the cells will be lost. Are you sure?").replace("$1",Z.name).replace("$2",Z.label))){return false}q.columns.splice(Z.index,1);for(var Y=0;Y<q.columns.length;Y++){q.columns[Y].index=Y}e(W.find("thead > tr > *").eq(Z.index)).remove();W.find("tbody td:nth-child("+(Z.index+1)+")").remove();H(q.totals,Z.index-1);var X=m("/cols",e(Z.name)),aa={name:e(Z.name),type:e(Z.type),label:e(Z.label),options:undefined};d.ajax({url:X+"?"+d.param({confirm:"DELETE"}),type:"DELETE",contentType:"application/json; charset=utf-8"}).done(function(ae,ac,ad){I()}).fail(function(ad,ac,ae){Confluence.PlaySQL.Messages.addMessage("error","The column couldn't be deleted: "+Z.label,"change-col",ad.responseText)});return false};var H=function(Y,Z){if(!Y||Y.length==0){return}var X=0;W.find("tfoot > tr > *:not(:first-child):not(.right-padding)").each(function(aa){var ac=d(this),ab=parseInt(ac.attr("colspan"))||1,ad=Y[aa];if(Z>=X&&Z<X+ab){if(ab>=3){ac.attr("colspan",--ab);ad.colspan=ab;return false}else{if(ab==2){ac.removeAttr("colspan");ad.colspan=1;return false}else{ac.remove();Y.splice(aa,1);return false}}}else{X+=ab}})};var o=function(Z){if(!q.perms.hasPerm("EDIT_COLS_FE")){return}var Y=e(n(Z)),X=Confluence.PlaySQL.Spreadsheet.ColumnProperties(q,Y,q.perms.hasPerm("EDIT_COLS_BE"));X.show()};var P=function(X){var Y=Confluence.PlaySQL.Spreadsheet.renderers[X.viewRenderer||X.renderer];W.find("tbody > tr > td:nth-child("+(1+X.index)+")").each(function(){var aa=d(this),Z=aa.attr("data-value");if(!aa.hasClass("editing saving")){aa.html(Y.renderCellContents(Z,q,X))}})};var T=function(X,af,ae){var ad=Confluence.PlaySQL.Helpers.parseOrderByClause(q.orderbyClause),Z=e(n(X)),ab='"'+Z.name+'"',ag=true;af=af||"REVERSE";for(var aa=0;aa<ad.length;aa++){if(ad[aa].field.indexOf(ab)==0){if(aa==0){if(af==ad[aa].way&&ae==ad[aa].nulls){return}if(af=="REVERSE"){af=ad[aa].way.toUpperCase()=="ASC"?"DESC":"ASC"}else{if(af=="NO-SORTING"){ad.splice(aa,1);ag=false;break}}ad[aa].way=af;ad[aa].nulls=ae;ag=false;break}else{ad.splice(aa,1);break}}}if(ag&&af!="NO-SORTING"){if(af=="REVERSE"){af="ASC"}var Y=Z.type=="VARCHAR"||Z.type=="TEXT"?"::text":Z.type=="INTEGER"||Z.type=="BOOLEAN"||Z.type=="DATE"||Z.type=="TIME"||Z.type=="NUMERIC"||Z.type=="DOUBLE"?"::"+Z.type:"";ad.unshift({field:ab,way:af,nulls:ae})}var ac=Confluence.PlaySQL.Helpers.buildOrderByClause(ad);q.orderbyClause=ac;AJS.log("ORDER BY "+ac);q.load()};var B=function(aA){var ad=[],aj=this.$placeholder,ay=aj.find(".focused"),aq=aA.find("table > thead").length!=0,aw=[],ac;if(aq){aw=aA.find("table > thead th").map(function(aB,aC){return d(aC).text()});aA.find("table > tbody > tr:first > th").each(function(aB,aC){aw.splice(d(aC).index(),1)});aA.find("table > thead, table.playsql > tbody > tr > th").remove()}var ar,ah,Z;aA.find("table tr").each(function(){var aC=d(this),aB=aC.find("th,td"),aD=[];aB.each(function(){var aF=d(this),aE=aF.attr("data-value");if(typeof aE=="undefined"&&attr==false){aE=aF.text()}aD.push(aE)});ad.push(aD)});if(ad.length==0){if(aA.html().trim().length>0&&aA.html()!="&#x200B;"&&aA.html()!="\u200B"){var au=document.createTreeWalker(aA[0],NodeFilter.SHOW_ALL,null,false),am="",aa=["DIV","BR","P","LI","DL","DD","DT","FORM","PRE","TR"];while(node=au.nextNode()){if(aa.indexOf(node.nodeName)!=-1){am+="\n"}else{if(node.nodeType==Node.TEXT_NODE){am+=node.nodeValue}}}var at=am.trim().split(/\r?\n\r?/);for(var av in at){ad.push(at[av].split(/\t/))}if(y(ad)){aA.empty();return}}else{return}}aA.empty();if(ay.is("th")){ay=ay.next(":not(.right-padding)")}if(ay.length==0){return}var ak=ay.index(),al=ay.closest("tr").index(),X=aj.find("> table > tbody tr").length-al,an=Math.max(0,ad.length-X),az=q.columns.length,Y=az-ak,ao=ad[0].length-Y;q.disableFocusManagement=true;if(an>0){this.addRows(an)}var ab;if(ao>0){var ax=q.perms.hasPerm("ADD_COLS")&&confirm("The data you're attempting to paste is wider than the number of columns. Do you want Play SQL to kindly create columns for you?");if(ax){var ap=[],ae=[];for(var av=az;av<az+ao;av++){ab={name:q.defaultCase=="LOWER"?"newcolumn":"NEWCOLUMN",label:"New column",type:"TEXT",length:undefined,renderer:"link",viewRenderer:undefined,formats:{},$placeholder:aj,index:q.columns.length};if(aw[av-ak]){ab.label=aw[av-ak];ab.name=Confluence.PlaySQL.Helpers.generateKey(ab.label,q.defaultCase)}ab.name=v(q.columns,ab.name);D(ab);q.columns.push(ab);ap.push({name:e(ab.name),type:e(ab.type),label:e(ab.label),renderer:e(ab.renderer),viewRenderer:undefined,options:undefined});ae.push(ab.name);Y++}var af=m("/cols");d.ajax({url:af,type:"POST",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(ap)}).done(function(aI,aC,aH){var aF=aI.columns;for(var aE in aF){var aG=aF[aE];if(ae.indexOf(aG.name)==-1){continue}var aD=n(aG.name),aB=l(ah);aD.name=aG.name;aD.type=aG.type;aD.label=aG.label;aD.renderer=aG.renderer;aD.viewRenderer=aG.viewRenderer;aB.renderer.view()}}).fail(function(aC,aB,aD){Confluence.PlaySQL.Messages.addMessage("error","The column couldn't be created: "+ab.label,"change-col",aC.responseText);ah.addClass("invalid").attr("title","The column couldn't be created")})}}for(var ai in ad){for(var ag in ad[ai]){if(parseInt(ag)>=Y){break}ar=aj.find("> table.playsql > tbody tr").eq(parseInt(ai)+al),ah=ar.find("th,td").eq(parseInt(ag)+ak),Z=l(ah);if(Z){Z.renderer.edit(ad[ai][ag]);Z.$cell.addClass("selected")}}}Confluence.PlaySQL.Selection.forTable(aj).unselectAll();q.disableFocusManagement=false;Z=Z||l(ay);if(Z){Z.$cell.addClass("selected focused");Z.renderer.focus(true)}};function y(X){var aa=X.toString();if(aa=="="){var Z=W.find(".focused").first().index();if(Z>0){if(confirm("It looks like you're typing a formula. Do you want to open the column properties? \n\nTo avoid this question, type Enter first.")){var Y=W.find("th:nth-child("+(Z+1)+")");p(Y);return true}}}return false}var S=function(Y,Z){var X=m("/data",{limit:1});d.ajax({url:X,type:"GET",contentType:"application/json; charset=utf-8",timeout:180000,cache:false}).done(function(ae,ad,ac){var ai=ac.getResponseHeader("COL_NAMES").split(","),ab=ae.tableDef,ah,aj;for(var af in ab.columns){if(ab.columns[af].name==Y){ah=af;break}}if(ah==undefined){return Z(false,"Column "+Y+" doesn't exist")}var aa=h(ah,ab.columns[af],undefined),ag=ae.data.length>0?ae.data[0][ah][0]:undefined;aj=ae.errorMessage;if(ae.errorMessage){aj=aj.replace("Error with a calculated column:","");aj=aj.replace("ERROR: ","");aj=aj.replace(/: syntax error at or near ""[a-zA-Z0-9]+""/,"");aj=aj.replace(/ Position: [\d]+/,"");return Z(false,aj)}else{return Z(true,ag)}}).fail(function(ac,aa,ad){var ab="The test of the spreadsheet was unsuccessful: "+ac.responseText;Z(false,ab)})};var R=function(aa,Y,ab,X,ac){var Z=AJS.InlineDialog(Y,"wizard-foreign-key",function(ag,af,ak){ag.css("width","450px");ag.html(Confluence.Templates.PlaySQL.wizardForeignKeyInlineDialog({}));ag.find(".btn-submit").click(function(){var am=ag.find(".preview").attr("data-result"),al=ag.find("#targetlabel option:checked").attr("data-renderer");if(!am){ag.find(".error").text("All fields are mandatory");return}X&&X(am,al);Z&&Z.close()});ak();ag.find("select").change(function(){function am(at){if(at==undefined){return at}if(q.defaultCase=="LOWER"){if(at.toLowerCase()!=at){at='"'+at+'"'}}else{if(q.defaultCase=="UPPER"){if(at.toUpperCase()!=at){at='"'+at+'"'}}else{at='"'+at+'"'}}return at}var ar=ag.find("#targettable").val(),ap=ag.find("#targetlabel").val(),al=ag.find("#targetid").val(),an=ag.find("#sourcecolumn").val(),aq="= "+am(ar)+"."+am(ap)+" WHERE "+am(ar)+"."+am(al)+"="+am(an),ao=ag.find(".preview");if(!!ar&&!!ap&&!!al&&!!an){ao.text(aq).attr("data-result",aq);ag.find(".error").text("")}else{ao.html("&nbsp;").attr("data-result","")}});var ae=AJS.contextPath()+"/rest/playsql/1.0/autocomplete/"+q.context,aj=ag.find("#targettable"),ai=ag.find("#targetlabel"),ah=ag.find("#targetid"),ad=ag.find("#sourcecolumn");d.ajax({url:ae,type:"GET",contentType:"application/json; charset=utf-8"}).done(function(an){var am=an.tables["current schema"];aj.empty();d("<option>",{value:"",text:"-- Select a table to lookup"}).appendTo(aj);for(var al in am){d("<option>",{value:am[al].name,text:am[al].label}).appendTo(aj)}}).fail(function(al){ac&&ac("Couldn't load the table list")});d.ajax({url:ae+"/"+q.id,type:"GET",contentType:"application/json; charset=utf-8"}).done(function(aq){var ap=aq.tables["current schema"],al;ad.empty();for(var ao in ap){if(ap[ao].name==q.id){var an=ap[ao].columns;for(var am in an){d("<option>",{value:an[am].name,text:ap[ao].label+"."+an[am].label+(ab.name==an[am].name?" (this column)":"")}).appendTo(ad)}}}ad.val(ab.name)}).fail(function(al){ac&&ac("Couldn't load the table list")});aj.change(function(){d.ajax({url:ae+"/"+aj.val(),type:"GET",contentType:"application/json; charset=utf-8"}).done(function(aq){var ap=aq.tables["current schema"],al;ai.empty();ah.empty();d("<option>",{value:"",text:"-- Select the column to display"}).appendTo(ai);d("<option>",{value:"",text:"-- Select the key"}).appendTo(ah);for(var ao in ap){if(ap[ao].name==aj.val()){var an=ap[ao].columns;for(var am in an){d("<option>",{value:an[am].name,text:ap[ao].label+"."+an[am].label,"data-renderer":an[am].renderer}).appendTo(ai).clone().appendTo(ah)}}}ah.val("ID")}).fail(function(al){ac&&ac("Couldn't load the table list")})})},{noBind:true,hideCallback:function(){Z&&Z.close()},hideDelay:10000000});Z.close=function(){Z&&Z.remove()};Z.show()};var A=function(aa,Y,ab,X,ad){if(ab.type!="VARCHAR"&&ab.type!="TEXT"){var ac="Please change the type of the column to Link before proceeding.";ad&&ad(ac)||alert(ac);return}var Z=AJS.InlineDialog(Y,"wizard-gmaps",function(af,ae,ag){af.css("width","450px");af.html(Confluence.Templates.PlaySQL.wizardGMapsInlineDialog({columns:aa,currentcolumn:ab.name}));af.find(".btn-submit").click(function(){var ai=af.find("#sourcecolumn").val(),aj=af.find("#url").val(),ak=af.find("input[name='display']:checked").attr("id"),ah=af.find("#convert-to-sql").is(":checked"),al="= TO_URL('"+aj+"', "+ai;if(ak=="display-link"){al+=")"}else{if(ak=="display-field"){al+=", "+ai+")"}else{if(ak=="display-label"){al+=", 'Link')"}}}X(al,"link");Z&&Z.close()});ag()},{noBind:true,hideCallback:function(){Z&&Z.close()},hideDelay:10000000});Z.close=function(){Z&&Z.remove()};Z.show()};function v(ab,Z){for(var aa=0;aa<ab.length;aa++){var X=Z+(aa!=0?aa:""),ac=false;for(var Y in ab){if(ab[Y].name==X){ac=true;break}}if(!ac){return X}}return""}var x=d.extend(q,{load:N,bindSpreadsheet:L,$placeholder:W,colByName:r,colOf:n,getCell:l,findRowByPosition:t,findRowByPk:Q,columns:q.columns,addRow:O,addRows:s,deleteRow:J,deleteRows:E,saveCell:V,createColumn:j,renderAllColumn:P,sortCol:T,pasteHandler:B,emptyRow:U,baseUrl:m});Confluence.PlaySQL.Spreadsheet.spreadsheets[q.id]=x;return x}function e(k,j){if(k==undefined){throw"Unexpectedly undefined value: "+k+"("+j+")"}if(k instanceof d){if(k.size()==0){throw"Unexpectedly empty jquery element: "+k+"("+j+")"}}return k}function c(l){var j=[];if(!l){return j}if(typeof l==="string"){l=l.split(/[ ,]+/)}for(var k=0;k<l.length;k++){if(l[k]=="EDIT"){l.push("VIEW","ADD_ROWS","EDIT_CELLS","REMOVE_ROWS")}if(l[k]=="ADMIN_COLS"){l.push("EDIT","EDIT_TOTALS","ADD_COLS","EDIT_COLS_FE","EDIT_COLS_BE","REMOVE_COLS")}if(l[k]=="CONTEXT_ADMIN"){l.push("ADMIN_COLS","REMOVE_TABLE")}}for(var k=0;k<l.length;k++){if(j.indexOf(l[k])==-1){j.push(l[k])}}j.hasPerm=function(m){return this.indexOf(m)!=-1};return j}function a(m,l){var j=[];for(var k in m){if(l.indexOf(m[k])!=-1){j.push(m[k])}}j.hasPerm=function(n){return this.indexOf(n)!=-1};return j}function h(k,l,j){return{name:l.name,label:l.label,type:l.type,length:l.length,formula:l.formula,renderer:e(l.renderer,l),viewRenderer:l.viewRenderer,formats:l.formats||{},index:k,$placeholder:j}}function b(j){Confluence.PlaySQL.Spreadsheet.renderers[j.key]=j}function g(){if(!Confluence.PlaySQL.Spreadsheet.initialized){AJS.trigger("playsql-spreadsheet-init",{register:b});Confluence.PlaySQL.Spreadsheet.initialized=true;Confluence.PlaySQL.Selection.setupCopyHandler({pasteHandler:function(j){return this.pasteHandler(j)}})}d(".playsql-spreadsheet-placeholder").each(function(){Confluence.PlaySQL.Spreadsheet.byPlaceholder(d(this)).load()})}Confluence.PlaySQL=Confluence.PlaySQL||{};Confluence.PlaySQL.Spreadsheet={byId:i,byPlaceholder:f,initializeAll:g,spreadsheets:{},renderers:{},readColumnDefinition:h};d(function(){Confluence.PlaySQL.Spreadsheet.initializeAll()})})(AJS.$);
  4. } catch (err) {
  5.     if (console && console.log && console.error) {
  6.         console.log("Error running batched script.");
  7.         console.error(err);
  8.     }
  9. }
  10.  
  11.  
  12. try {
  13. /* module-key = 'com.playsql.playsql-plugin:playsql-spreadsheet-web', location = 'spreadsheet/spreadsheet-macro-renderers.js' */
  14. (function(d){AJS.bind("playsql-spreadsheet-init",function(s,p){function r(x){return document.createElement("span").appendChild(document.createTextNode(x)).parentNode.innerHTML}function j(x){return d(document.createElement("div")).html(x).html()}var f=function(){return{key:"base-renderer",getI18nName:function(){return this.key},isSystemRenderer:function(){return true},isSupportedType:function(){throw"Not Implemented"},getDefaultType:function(){throw"Not Implemented"},renderCellContents:function(C,x,A){if(C===null||C===undefined){return"<span class='not-a-value'>&nbsp;</span>"}C=r(C);if(A.formats.css){var B=d.parseJSON(A.formats.css),y="";for(var z in B){y=z+":"+B[z]+";"}C=j(d("<span>",{style:y,html:C})).replace(/\n/g,"<br>\n")}return C},onColumnDisplay:function(x,y){},createInputBox:function(x){return d("<input>",{type:"text",value:x})},createTextareaBox:function(x){window.setTimeout(function(){d(".playsql textarea.uninitialized").each(function(){d(this).height(this.scrollHeight).removeClass("uninitialized")})},0);return d("<textarea>",{text:x,height:1,"class":"uninitialized"}).on("keyup.playsqlresizetextarea keydown.playsqlresizetextarea change.playsqlresizetextarea",function(){d(this).height(this.scrollHeight)})},forCell:function(x,A){var z=this,y={parent:z,edit:function(C){C=this.parseValue(C);if(A.hasClass("editing")||A.hasClass("saving")){if(C!=undefined){A.find("input").val(C)}return}if(!x.perms.hasPerm("EDIT_CELLS")){return}A.addClass("editing");A.attr("data-rendered",A.html());var D=z.createInputBox(C!=undefined?C:A.attr("data-value"));D.appendTo(A.empty());var B=this;D.keypress(function(){B.validate()}).blur(function(){var F=d(this),E=F.closest("td");if(!E.hasClass("aui-dropdown2-trigger")){B.saveAndView()}})},parseValue:function(B){if(B==undefined){return B}return B.trim()},focus:function(D){if(A.hasClass("editing")&&!x.disableFocusManagement){var C=l(A.find("input, textarea")).focus();if(D==undefined){C.select()}else{if(D==true){var B=C[0];B.selectionStart=B.selectionEnd=B.value.length}}}},view:function(B){if(B===undefined){B=A.attr("data-value")}var C=x.getCell(A).viewRenderer;var D=(C||this).parent.renderCellContents(B,x,x.colOf(A));A.html(D);A.removeClass("editing saving invalid")},getValue:function(){return A.attr("data-value")},setOriginalValue:function(B,C){this.view(B);if(C!==undefined){A.attr("data-value",C)}else{A.attr("data-value",B)}},validate:function(){var D=x.colOf(A),G=D.length,C=D.type,H=A.find("input, textarea"),B=H.val(),F=true,E="";if(G){if(B!=undefined&&B.length>G){F=false;E="The maximum size is "+G}}if(C=="INTEGER"){F=F&&/^[+-\\d]*$/.test(B);E="An integer is expected"}if(F){A.removeClass("invalid").removeAttr("title")}else{A.addClass("invalid").attr("title",E)}return F},saveAndView:function(){if(!A.hasClass("editing")||A.hasClass("saving")){return}if(!this.validate()){return}var D=A.closest("tr").attr("data-row-id");if(D==undefined||D==""){return}if(!x.perms.hasPerm("EDIT_CELLS")){return}var G=l(A.find("input, textarea")),E=G.val(),B=A.attr("data-value"),C=x.colOf(A),F=this.parent.renderCellContents(E,x,C);if(E==""){E=null}if(B==E){A.html(A.attr("data-rendered")).removeClass("editing");return}A.attr("data-value",E);A.attr("data-rendered",F);A.html(F).addClass("saving").removeClass("editing");x.saveCell(A,E)},cancelEdit:function(){var B=A.attr("data-rendered");if(B==undefined){A.empty().removeClass("editing")}else{A.html(B).removeClass("editing")}},markInError:function(){if(!A.hasClass("editing")){A.removeClass("saving");this.edit()}A.addClass("invalid").attr("title","The cell couldn't be saved. Check the input and try again.")}};return y},appendRendererDetailsTo:function(x,A){var z=this.isSupportedType(A.type)?A.type:this.getDefaultType(),y=Confluence.Templates.PlaySQL.columnPropertiesTypeField({type:z});x.append(y)},getFormatValues:function(y,x,z){return{}},updateColumn:function(y,H,L,B,z){var E={name:B.name,label:B.label,type:L.find("#column-type").val(),formula:B.formula,renderer:L.find("#column-renderer").val(),viewRenderer:L.find("#view-renderer").val(),length:L.find("#column-length").val(),formats:this.getFormatValues(H,L,B)};if(E.formula==E.name||!!E.formula&&E.formula.trim().length==0){E.formula=undefined}if(!E.formula||E.viewRenderer==E.renderer){E.viewRenderer=undefined}if(E.length=="undefined"){E.length=undefined}if(L.find("#column-length:visible").length>0&&E.length==undefined){L.find(".for-length .error").last().text("The length is mandatory.")}var A=B.name!=E.name,J=B.type!=E.type,F=B.formula!=E.formula,K=B.renderer!=E.renderer||B.viewRenderer!=E.viewRenderer,C=B.length!=E.length,G=d.toJSON(B.formats)!=d.toJSON(E.formats);var I=[];if(A){I.push("RENAME")}if(J){I.push("CHTYPE")}if(C){I.push("CHTYPE")}if(F){I.push("CHFMA")}if(K){I.push("CHRDR")}if(G){I.push("CHFMT")}if(I.length==0){H.hide().remove();return}var x=y.baseUrl("/cols",l(B.name),{confirm:I.join(",")}),D=E;d.ajax({url:x,type:"PUT",contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(D)}).done(function(P,M,O){var N=Confluence.PlaySQL.Spreadsheet.readColumnDefinition(B.index,P);B.name=N.name;B.type=N.type;B.length=N.length;B.formula=N.formula;B.renderer=N.renderer;B.viewRenderer=N.viewRenderer;B.formats=N.formats;y.renderAllColumn(B);z()}).fail(function(N,M,O){var P=N.responseText;if(!P){P="Sorry. The changes couldn't be saved. "+O}L.find(".field-group.for-renderer:visible .error, .field-group.for-view-renderer:visible .error").last().text(P)})}}};Confluence.PlaySQL.Spreadsheet.RendererBase=f;var w=function(){var x=new f();return d.extend({},x,{key:"as-string",getI18nName:function(){return"String"},isSupportedType:function(y){return"VARCHAR"==y||"TEXT"==y},getDefaultType:function(){return"TEXT"},isSystemRenderer:function(){return false},createInputBox:function(y){return this.createTextareaBox(y)}})};p.register(new w());var g=function(){var x=new f();return d.extend({},x,{key:"markdown",getI18nName:function(){return"Markdown"},isSupportedType:function(y){return"VARCHAR"==y||"TEXT"==y},getDefaultType:function(){return"TEXT"},isSystemRenderer:function(){return false},createInputBox:function(y){return this.createTextareaBox(y)},renderCellContents:function(A,y,z){if(A===null||A===undefined){return"<span class='not-a-value'>&nbsp;</span>"}return A},appendRendererDetailsTo:function(z,B){var y=x.appendRendererDetailsTo.apply(this,arguments);var A=Confluence.Templates.PlaySQL.columnPropertiesMarkdown({});z.append(A);return y}})};p.register(new g());function m(y,E){if(y==undefined){return y}if(/^\s*-?[0-9]*\s*$/.test(y)){return y.trim()}var F="",D=false,A=false,B=false,C=undefined;for(var x=0;x<y.length;x++){var z=y[x];switch(true){case z=="-"&&!D:F+=z;break;case z==".":if(A){C=","}A=true;F+=z;break;case z==",":if(B){C="."}B=true;F+=z;break;case /\d/.test(z):D=true;F+=z;break}}if(C==undefined){if(A&&B){C=F.indexOf(".")>F.indexOf(",")?".":","}else{if(A^B){C=A?".":","}}}if(C==undefined){return F}if(C==E){return F}if(E==undefined){F=F.substr(0,F.indexOf(E));F=F.replace(/,\./g,"");return F}F=C=="."?F.replace(/,/g,""):F.replace(/\./g,"");F=F.replace(C,E);return F}var q=function(){var x=new Confluence.PlaySQL.Spreadsheet.RendererBase();return d.extend({},x,{key:"integer",getI18nName:function(){return"Integer"},isSupportedType:function(y){return y=="INTEGER"},getDefaultType:function(){return"INTEGER"},isSystemRenderer:function(){return false},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{validate:function(){var D=A.find("input");if(D.size==0){return false}var B=D.val();var C=m(B,y.decimalSeparator);if(C!=B){D.val(C)}return z.validate()}})}})};p.register(new q());var h=function(){var x=new Confluence.PlaySQL.Spreadsheet.RendererBase();return d.extend({},x,{key:"numeric",getI18nName:function(){return"Decimal"},isSupportedType:function(y){return y=="NUMERIC"||y=="DOUBLE"},getDefaultType:function(){return"NUMERIC"},isSystemRenderer:function(){return false},onColumnDisplay:function(y,A){var z=A.$placeholder;z.find("tbody td:nth-child("+(A.index+1)+")").addClass("numeric-renderer")},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{validate:function(){var D=A.find("input");if(D.size==0){return false}var B=D.val();var C=m(B,y.decimalSeparator);if(C!=B){D.val(C)}return z.validate()}})}})};p.register(new h());function k(K,L){function O(T,U){var S=T.exec(L);U=U||0;if(S!=null&&S.length>U){return S[U]}return undefined}function M(V,U,T,S){if(S!=undefined){V=T?V.substr(0,Math.min(V.length,S)):V.substr(-Math.min(V.length,S))}while(V.length<U){V=T?V+"0":"0"+V}if(U==0&&V=="0"){return""}return V}var F=O(/^([a-z]+);/);if(F!=undefined){L=L.substr(L.indexOf(";")+1)}var D={},P=/[0#](.)[0#]/g,H=O(P,1),A=O(P,1),z=(A!==undefined?L.split(A)[0]:L).replace(/[^0]/g,""),B=(A!==undefined?L.split(A)[1]:"").replace(/[^0#]/g,""),x=z.length,y=B.replace(/[^0]/g,"").length,R=B.length,J=Math.pow(10,R),N=Math.abs(parseInt(K)).toString(),E=M(N,x),G=E.replace(/\B(?=(\d{3})+(?!\d))/g,H!="#"?H:""),Q=(Math.round(parseFloat(K.substr(K.indexOf(".")||K.indexOf(",")))*J)/J).toString().substr(2),I=M(Q,y,true,R),C=G+(I!=""?A+I:"");K=L.replace(/[0#].*[0#]/,C);if(F!=null){D.color=F}return{value:K,styles:D}}var v=function(){var x=new h();return d.extend({},x,{key:"currency",getI18nName:function(){return"Currency"},isSystemRenderer:function(){return false},renderCellContents:function(D,y,A){if(D==undefined){return"<span class='not-a-value'>&nbsp;</span>"}var F=parseFloat(D),E;if(isNaN(F)){return"<span class='not-a-value'>&nbsp;</span>"}if(F==0){E=A.formats.equalZero}else{if(F<0){E=A.formats.belowZero}}if(E===undefined||E===""){E=A.formats.aboveZero;if(F<0&&E.indexOf("-")==-1){E=E.replace(/([#0])/,"-$1")}}if(E===undefined||E===""){E="$ #,##0.######";if(F<0){E="darkred;$ -#,##0.######"}}var C=k(D,E),B=A.formats&&d.parseJSON(A.formats.css)||{},z;d.extend(B,C.styles);z={formats:{css:d.toJSON(B)}};return x.renderCellContents.call(this,C.value,y,z)},appendRendererDetailsTo:function(A,E){var z=x.appendRendererDetailsTo.apply(this,arguments),y=E.formats&&E.formats.aboveZero,D=E.formats&&E.formats.equalZero,C=E.formats&&E.formats.belowZero;var B=Confluence.Templates.PlaySQL.columnPropertiesCurrencyField({aboveZero:y,equalZero:D,belowZero:C});A.append(B);return z},getFormatValues:function(z,y,A){return{aboveZero:y.find("#column-aboveZero").val(),equalZero:y.find("#column-equalZero").val(),belowZero:y.find("#column-belowZero").val()}},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{validate:function(){var D=A.find("input");if(D.size==0){return false}var B=D.val();var C=m(B,y.decimalSeparator);if(C!=B){D.val(C)}return z.validate()}})}})};p.register(new v());var i=function(){var x=new Confluence.PlaySQL.Spreadsheet.RendererBase();return d.extend({},x,{key:"id",getI18nName:function(){return"Identifier"},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{edit:function(){},setPositionValue:function(B){A.parent().attr("data-row-position",B)},setOriginalValue:function(B){A.attr("data-value",B).text(B);A.parent().attr("data-row-id",B)}})}})};p.register(new i());var o=function(){var x=new Confluence.PlaySQL.Spreadsheet.RendererBase();return d.extend({},x,{key:"boolean",getI18nName:function(){return"Boolean"},isSupportedType:function(y){return y=="BOOLEAN"},getDefaultType:function(){return"BOOLEAN"},isSystemRenderer:function(){return false},renderCellContents:function(A,y,z){if(A==null){return"<span class='not-a-value'>&nbsp;</span>"}else{if(A=="true"){return j(d("<span></span>",{"class":"aui-icon aui-icon-small aui-iconfont-success",text:A,title:A}))}else{if(A=="false"){return j(d("<span></span>",{"class":"aui-icon aui-icon-small aui-iconfont-remove",text:A,title:A}))}}}return r(A)},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{focus:function(){if(A.hasClass("editing")&&!y.disableFocusManagement){l(A.find("select")).focus().select()}},edit:function(C){if(A.hasClass("editing")||A.hasClass("saving")){return}C=this.parseValue(C);if(!y.perms.hasPerm("EDIT_CELLS")){return}A.addClass("editing");A.attr("data-rendered",A.html());var D=d("<select>",{html:"<option value=''>No value</option><option value='true'>True</option><option value='false'>False</option>"}).val(C!==undefined?C:A.attr("data-value"));D.appendTo(A.empty());var B=this;D.keypress(function(){B.validate()}).blur(function(){var F=d(this),E=F.closest("td");if(!E.hasClass("aui-dropdown2-trigger")){B.saveAndView()}})},parseValue:function(B){if(B==undefined){return B}if(B.trim()==""){return""}if(B.toLowerCase().indexOf("f")==0){return"false"}if(B.toLowerCase().indexOf("t")==0){return"true"}if(B=="0"){return"false"}if(B=="1"){return"true"}return B},saveAndView:function(){if(!A.hasClass("editing")||A.hasClass("saving")){return}if(!this.validate()){return}if(!y.perms.hasPerm("EDIT_CELLS")){return}var E=l(A.find("select")),C=E.val(),B=y.colOf(A),D=this.parent.renderCellContents(C,y,B);A.attr("data-value",C);A.attr("data-rendered",D);A.html(D).addClass("saving").removeClass("editing");y.saveCell(A,C)}})}})};p.register(new o());var n=function(y,J){if(!y||!J){return y}if(!(y instanceof Date)){var I=y.split("-");if(I.length!=3){return I}y=new Date(parseInt(I[0]),parseInt(I[1])-1,parseInt(I[2]))}var H=y.getDay(),G=y.getDate(),F=y.getMonth()+1,z=y.getFullYear(),L=(G<10?"0":"")+G,K=(F<10?"0":"")+F,x=z%100,E=(x<10?"0":"")+x,D=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"][H],B=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"][H],C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][F-1],A=["January","February","March","April","May","June","July","August","September","October","November","December"][F-1],N=J;N=N.replace(/^(([^"]|"[^"]*")*)dddd/,'$1"'+B+'"');N=N.replace(/^(([^"]|"[^"]*")*)ddd/,'$1"'+D+'"');N=N.replace(/^(([^"]|"[^"]*")*)dd/,'$1"'+L+'"');N=N.replace(/^(([^"]|"[^"]*")*)d/,'$1"'+G+'"');N=N.replace(/^(([^"]|"[^"]*")*)yyyy/,'$1"'+z+'"');N=N.replace(/^(([^"]|"[^"]*")*)yy/,'$1"'+E+'"');N=N.replace(/^(([^"]|"[^"]*")*)MMMM/,'$1"'+A+'"');N=N.replace(/^(([^"]|"[^"]*")*)MMM/,'$1"'+C+'"');N=N.replace(/^(([^"]|"[^"]*")*)MM/,'$1"'+K+'"');N=N.replace(/^(([^"]|"[^"]*")*)M/,'$1"'+F+'"');N=N.replace(/"/g,"");return N};Confluence.PlaySQL.Spreadsheet.formatDate=n;var t=function(){var x=new Confluence.PlaySQL.Spreadsheet.RendererBase();return d.extend({},x,{parent:x,key:"date",getI18nName:function(){return"Date"},isSupportedType:function(y){return y=="DATE"},getDefaultType:function(){return"DATE"},isSystemRenderer:function(){return false},renderCellContents:function(A,y,z){if(A&&z.formats&&z.formats.dateFormat){A=n(A,z.formats.dateFormat)}return x.renderCellContents.call(this,A,y,z)},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{focus:function(){if(!y.disableFocusManagement){z.focus()}},edit:function(D){if(A.hasClass("editing")||A.hasClass("saving")){return}if(!y.perms.hasPerm("EDIT_CELLS")){return}D=this.parseValue(D);A.addClass("editing");A.attr("data-rendered",A.html());var E=d("<input>",{type:"date",value:D!=undefined?D:A.attr("data-value"),"class":"aui-date-picker"});E.appendTo(A.empty());if(E.datePicker){d(".aui-datepicker-dialog").remove();E.addClass("save-when-closing-datepicker").datePicker({overrideBrowserDefault:true})}var B=this;var C=window.setInterval(function(){if(d(".aui-datepicker-dialog:visible").size()==0){window.clearInterval(C);if(d(".editing .aui-date-picker").size()<3){if(E.hasClass("save-when-closing-datepicker")){B.saveAndView()}}}},200)},validate:function(){if(A.hasClass("editing")){var B=A.find("input");B.val(this.parseValue(B.val()));return z.validate()}return false},parseValue:function(C){if(C==undefined){return C}C=C.trim();if(C==""){return C}if(/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}/.test(C)){return C}if(/[0-9]{2}-[0-9]{2}-[0-9]{2}/.test(C)){return C.replace(/([0-9]{2})-([0-9]{2})-([0-9]{2})/,"20$1-$2-$3")}if(/[0-9]{4}.+[0-9]{1,2}.+[0-9]{1,2}/.test(C)){return C.replace(/([0-9]{4})(.+)([0-9]{1,2})(.+)([0-9]{1,2})/,"$1-$3-$5")}if(/[0-9]{1,2}.+[0-9]{1,2}.+[0-9]{4}/.test(C)){return C.replace(/([0-9]{1,2})(.+)([0-9]{1,2})(.+)([0-9]{4})/,"$5-$3-$1")}var B=new Date(C);if(B instanceof Date&&!isNaN(B.getTime())){return B.getFullYear()+"-"+("0"+(B.getMonth()+1)).slice(-2)+"-"+("0"+B.getDate()).slice(-2)}return""},saveAndView:function(){if(!A.hasClass("editing")||A.hasClass("saving")){return}d(".aui-datepicker-dialog").remove();var B=A.find("input");B.val(this.parseValue(B.val()));return z.saveAndView()}})},appendRendererDetailsTo:function(A,C){var z=x.appendRendererDetailsTo.apply(this,arguments),y=C.formats&&C.formats.dateFormat;var B=Confluence.Templates.PlaySQL.columnPropertiesDateFormatField({dateFormat:y});A.append(B);return z},getFormatValues:function(z,y,A){return{dateFormat:y.find("#column-dateFormat").val()}}})};p.register(new t());var u=function(){var x=new Confluence.PlaySQL.Spreadsheet.RendererBase();return d.extend({},x,{key:"header",getI18nName:function(){return"Header"},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{view:function(){var B=y.colOf(A);A.empty().text(B.label).attr("data-name",B.name).attr("title",B.name).attr("data-type",B.type).attr("data-renderer",B.renderer);A.removeClass("editing saving")},edit:function(){if(A.hasClass("editing")||A.hasClass("saving")){return}if(!y.perms.hasPerm("EDIT_COLS_FE")){return}var B=l(y.colOf(A),A);if(!!B.name){return}A.addClass("editing focused selected");A.removeClass("aui-dropdown2-trigger").removeAttr("aria-controls aria-haspopup aria-owns");A.attr("data-rendered",A.html());var B=l(y.colOf(A),A);var C=d("<input>",{type:"text","class":"column-label",value:B.label});A.empty().append(C);C.blur(function(){y.getCell(A).renderer.saveAndView()})},saveAndView:function(){if(!A.hasClass("editing")||A.hasClass("saving")){return}if(!y.perms.hasPerm("EDIT_COLS_FE")){return}var D=A.find("input.column-label").val(),F=y.colOf(A),C=Confluence.PlaySQL.Helpers.generateKey(D,y.defaultCase);if(!F.name){A.removeClass("editing invalid").addClass("saving").text(D);var B=true;while(B==true){B=false;for(var E in y.columns){if(y.columns[E].name==C){C+="1";D+="1";B=true;break}}}y.createColumn(A,{name:C,type:"TEXT",label:D,renderer:F.renderer,viewRenderer:F.viewRenderer,index:F.index})}else{throw"The column shouldn't be editable inline."}}})}})};p.register(new u());var e=function(){var x=new f();return d.extend({},x,{key:"status",getI18nName:function(){return"Icon"},isSystemRenderer:function(){return false},isSupportedType:function(y){return y=="VARCHAR"||y=="TEXT"},getDefaultType:function(){return"VARCHAR"},splitMappings:function(A){if(A==undefined){return{}}else{try{var z=d.parseJSON(A);if(z){return z}return{}}catch(y){return{}}}},renderCellContents:function(E,y,B){if(E==null){return"<span class='not-a-value'>&nbsp;</span>"}if(!B.statusMappings){var C=B.formats.status;B.statusMappings=this.splitMappings(C);for(var A in B.statusMappings){if(B.statusMappings[A].indexOf("data:image")==0||B.statusMappings[A].indexOf("/")==0||B.statusMappings[A].indexOf("://")!=-1){B.statusMappings[A]=c({"background-image":"url('"+B.statusMappings[A]+"')"})}}}var D=B.statusMappings[E]||"";if(D){var z=d("<span></span>",{"class":"playsql-status-value "+D,text:E,title:E});return d("<div></div>",{html:z}).html()}else{return d("<div></div>",{text:E}).html()}},createInputBox:function(y){return this.createTextareaBox(y)},forCell:function(y,A){var z=x.forCell.apply(this,arguments);return d.extend({},z,{})},appendRendererDetailsTo:function(A,C){var z=x.appendRendererDetailsTo.apply(this,arguments),y=C.formats&&C.formats.status;var D=this.withDefaultFormatValues(C,this.splitMappings(y));var B=Confluence.Templates.PlaySQL.columnPropertiesValueMappingField({mappings:D});A.append(B);d("#value-mappings .add").click(function(){var E=Confluence.Templates.PlaySQL.columnPropertiesValueMappingRow({key:"",value:""});d("#value-mappings tbody").append(E)});d("#value-mappings").on("click",".remove-mapping",function(){d(this).closest("#value-mappings tr").remove()});return z},getFormatValues:function(z,y,A){var B={};y.find("#value-mappings tr").each(function(){var E=d(this),C=E.find("input[name='key']").val(),D=E.find("input[name='value']").val();if(C!=undefined&&C!=""){B[C]=D}});return{status:d.toJSON(B)}},updateColumn:function(z,B,A,C,y){return x.updateColumn.call(this,z,B,A,C,function(){C.statusMappings=undefined;return y.apply(this,arguments)})},withDefaultFormatValues:function(y,z){if(Object.keys(z).length==0&&y.renderer!="status"&&y.viewRenderer!="status"){return{"true":"aui-icon aui-icon-small aui-iconfont-success","false":"aui-icon aui-icon-small aui-iconfont-remove",ok:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEX///8UiSwUiSwUiSwUiSwUiSwUiSz///8UiSxksXQjkDmn07Cj0a2DwZB+vox7vYlstXv2+/f0+fVAn1Tw9/Le7uHX6trS6NawFlV2AAAAB3RSTlMAEWaqu8zuQLwGJgAAAGZJREFUeF5tj0cSxCAMBDFpBue4+/+fGgGlA+W+TauUjGAdM86ayhDYCEPJkUoUI3Ul5H4N40jSGs/G9VtJelNqkk884otYJu7AnyoOTMBMFZwBbKzUoelOLfu2VrH9YV+n98/177+rqQbbMcOFQgAAAABJRU5ErkJggg=="}}return z}})};p.register(new e());function l(y,x){if(y==undefined){throw"Unexpectedly undefined value: "+y+"("+x+")"}if(y instanceof d){if(y.size()==0){throw"Unexpectedly empty jquery element: "+y+"("+x+")"}}return y}});var b=document.createElement("style"),a=0;b.type="text/css";document.getElementsByTagName("head")[0].appendChild(b);function c(j){var g=b.innerHTML,e="dynamicRule"+(++a),k="",i;for(var f in j){i=j[f];reducedQuotes=i.replace(/'[^'\\]*'/g,"").replace(/'[^"\\]*"/g,"");if(reducedQuotes.indexOf("'")!=-1||reducedQuotes.indexOf('"')!=-1||reducedQuotes.indexOf(";")!=-1||reducedQuotes.indexOf("\\")!=-1){AJS.logError("Illegal css string: "+i);continue}if(!(/^[-a-zA-Z0-9 .]*$/.test(f))){AJS.logError("Illegal css key: "+f)}k+="\n    $key : $value ;".replace("$key",f).replace("$value",i)}var h="\n.$name { $rules }".replace("$name",e).replace("$rules",k);g+=h;b.innerHTML=g;AJS.log("Dynamic css: ",b.innerHTML);return e}})(AJS.$);
  15. } catch (err) {
  16.     if (console && console.log && console.error) {
  17.         console.log("Error running batched script.");
  18.         console.error(err);
  19.     }
  20. }
  21.  
  22.  
  23. try {
  24. /* module-key = 'com.playsql.playsql-plugin:playsql-spreadsheet-web', location = 'spreadsheet/spreadsheet-macro-renderers-links.js' */
  25. (function(a){AJS.bind("playsql-spreadsheet-init",function(g,e){function d(h){return document.createElement("span").appendChild(document.createTextNode(h)).parentNode.innerHTML}function b(h){return a(document.createElement("div")).html(h).html()}var f=function(){var o=new Confluence.PlaySQL.Spreadsheet.RendererBase(),l=AJS.contextPath()+"/rest/applinks/1.0/applicationlink/type/jira";Confluence.PlaySQL.Spreadsheet.Applinks={latch:0,JIRA:[]};function k(r){var p=[],q=a("applicationLinks applicationLinks",r);q.each(function(){var s=a(this),u=s.find("id").text(),t;if(u){t={id:u,type:s.find("typeId").text(),name:s.find("name").text(),displayUrl:s.find("displayUrl").text(),iconUrl:s.find("iconUrl").text(),rpcUrl:s.find("rpcUrl").text(),isPrimary:s.find("isPrimary").text(),isSystem:s.find("isSystem").text(),projectKeys:[]};if(t.isPrimary){p.reverse();p.push(t);p.reverse()}else{p.push(t)}}});return p}function j(q){var p=AJS.contextPath()+"/rest/applinks/1.0/entities/"+Confluence.PlaySQL.Spreadsheet.Applinks.JIRA[q].id;Confluence.PlaySQL.Spreadsheet.Applinks.latch++;a.ajax({url:p,type:"GET",contentType:"application/json; charset=utf-8"}).done(function(v,r,u){var t=[],s;a("entities entity",v).each(function(){t.push(a(this).attr("key"))});Confluence.PlaySQL.Spreadsheet.Applinks.JIRA[q].projectKeys=t;n()}).fail(function(s,r,t){throw"Couldn't fetch Applinks to JIRA instances";n()})}function n(){var q=Confluence.PlaySQL.Spreadsheet.Applinks,p;q.latch--;if(q.latch==0){if(q.JIRA.length>=2){p=a("a.jira-issue-to-render, a[data-jira-key]")}else{if(q.JIRA.length==1){p=a("a.jira-issue-to-render")}else{return}}p.each(function(){var t=a(this),s=t.attr("data-jira-key"),r=i(s);if(r){t.attr("href",r).removeClass("jira-issue-to-render")}})}}function i(p){var t=Confluence.PlaySQL.Spreadsheet.Applinks,q=p.split("-")[0];for(var s in t.JIRA){for(var r in t.JIRA[s].projectKeys){if(q==t.JIRA[s].projectKeys[r]){return t.JIRA[s].displayUrl+"/browse/"+p}}}}function h(){Confluence.PlaySQL.Spreadsheet.Applinks.latch++;a.ajax({url:l,type:"GET",contentType:"application/xml; charset=utf-8"}).done(function(s,p,r){Confluence.PlaySQL.Spreadsheet.Applinks.JIRA=k(s);for(var q in Confluence.PlaySQL.Spreadsheet.Applinks.JIRA){j(q)}n()}).fail(function(q,p,r){throw"Couldn't fetch Applinks to JIRA instances";n()})}function m(r){var q=Confluence.PlaySQL.Spreadsheet.Applinks,p=i(r);if(p){return b(a("<a></a>",{href:p,"data-jira-key":r,text:r}))}else{p=q.JIRA.length>0?q.JIRA[0].displayUrl+"/browse/"+r:undefined;return b(a("<a></a>",{href:p,"data-jira-key":r,"class":"jira-issue-to-render",text:r}))}return a("<div></div>").text(r).html()}return a.extend({},o,{key:"link",getI18nName:function(){return"Link"},isSupportedType:function(p){return p=="VARCHAR"||p=="TEXT"},getDefaultType:function(){return"VARCHAR"},isSystemRenderer:function(){return false},renderCellContents:function(u,p,t){if(u==null){return"<span class='not-a-value'>&nbsp;</span>"}if(u.indexOf("://")!=-1){var s=u.indexOf("://"),w=u.indexOf(" "),r=u,v=u;if(w!=-1){if(w>s){r=u.substring(w+1);v=u.substring(0,w)}else{r=d(u);r=r.replace(/([^ ']+:\/\/[^ ']+)/g,"<a href='$1'>$1</a>");return r}}return b(a("<a></a>",{href:v,text:r})).replace(/\n/g,"<br>\n")}var q=/^[A-Z]+-[0-9]+$/;if(q.test(u)){return m(u)}return d(u).replace(/\n/g,"<br>\n")},createInputBox:function(p){return this.createTextareaBox(p)},forCell:function(q,r){var p=o.forCell.apply(this,arguments);return a.extend(p,{})}})};e.register(new f());function c(i,h){if(i==undefined){throw"Unexpectedly undefined value: "+i+"("+h+")"}if(i instanceof a){if(i.size()==0){throw"Unexpectedly empty jquery element: "+i+"("+h+")"}}return i}})})(AJS.$);
  26. } catch (err) {
  27.     if (console && console.log && console.error) {
  28.         console.log("Error running batched script.");
  29.         console.error(err);
  30.     }
  31. }
  32.  
  33.  
  34. try {
  35. /* module-key = 'com.playsql.playsql-plugin:playsql-spreadsheet-web', location = 'spreadsheet/spreadsheet-macro-column-properties.js' */
  36. (function(a){AJS.bind("playsql-spreadsheet-init",function(c,b){Confluence.PlaySQL.Spreadsheet.ColumnProperties=function(f,h,e){function p(w){var s=[],x=[],t=Confluence.PlaySQL.Spreadsheet.renderers;for(var u in t){if(t[u].isSystemRenderer()){continue}var v={key:u,name:t[u].getI18nName()};if(t[u].isSupportedType(w)){s.push(v)}else{x.push(v)}}return{sameTypeRenderers:s,otherTypeRenderers:x}}if(Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog){var o=Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog;delete Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog;try{o.remove()}catch(i){}}var n=[{name:"VARCHAR",hasLength:true},{name:"TEXT"},{name:"INTEGER"},{name:"BOOLEAN"},{name:"DATE"},{name:"NUMERIC"},{name:"DOUBLE"}];var j=!!h.formula,g=p(h.type),k=a(Confluence.Templates.PlaySQL.createColumnPropertiesForm({name:h.name,hasFormula:j,renderer:h.renderer,viewRenderer:h.viewRenderer||h.renderer,coltype:h.type,length:h.length,renderers:g,dataTypes:n,canChangeBackEndCols:e})),d=function(){var s=a("#column-properties-dialog");s.find(".button-panel-submit-button").disable().text("Submitting...");m.updateColumn(f,o,s,h,function(){delete Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog;o.remove();f.load()});return false},q=function(){o.hide().remove();delete Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog},o=new AJS.ConfluenceDialog({width:600,id:"colomn-properties-dialog",closeOnOutsideClick:true,onCancel:q,onSubmit:d}),m=Confluence.PlaySQL.Spreadsheet.renderers[h.viewRenderer||h.renderer];o.addHeader("Column Properties");o.addPanel("Panel 1",k);o.addSubmit("Save",d);o.addCancel("Cancel",q);$submitButton=o.popup.element.find(".button-panel-submit-button");o.gotoPage(0);o.gotoPanel(0);function l(){var t=a("#column-type"),z=t.val(),s=t.parent().children(".description"),x=a("#column-renderer"),v=h.renderer;if(z!=h.type){var y=("The original type is {}. If you save, the column will be transformed to {}. The conversion is up to the database system, not Play SQL. You may or may not be satisfied with the new values.").replace("{}",h.type).replace("{}",z);s.text(y)}else{s.empty()}for(var u in n){if(n[u].name==z){a(".for-length").toggleClass("hidden",!n[u].hasLength);break}}g=p(z);x.empty();for(var u in g.sameTypeRenderers){var w=g.sameTypeRenderers[u];a("<option>",{value:w.key,text:w.name,selected:v==w.key}).appendTo(x)}}function r(){var u=j?a("#view-renderer"):a("#column-renderer"),v=u.val(),t=u.parent().children(".description"),s=a("#column-properties-dialog").find(".format-details");m=Confluence.PlaySQL.Spreadsheet.renderers[v];m.appendRendererDetailsTo(s.empty(),h)}Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog=o;return{show:function(){Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog.show();a("#column-type").change(l);a(j?"#view-renderer":"#column-renderer").change(r);l();r()},remove:function(){var s=Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog;delete Confluence.PlaySQL.Spreadsheet.ColumnProperties.dialog;try{s.hide().remove()}catch(t){}}}}})})(AJS.$);
  37. } catch (err) {
  38.     if (console && console.log && console.error) {
  39.         console.log("Error running batched script.");
  40.         console.error(err);
  41.     }
  42. }
  43.  
  44.  
  45. try {
  46. /* module-key = 'com.playsql.playsql-plugin:playsql-spreadsheet-web', location = 'spreadsheet/spreadsheet-macro.soy' */
  47. // This file was automatically generated from spreadsheet-macro.soy.
  48. // Please don't edit this file by hand.
  49.  
  50. if (typeof Confluence == 'undefined') { var Confluence = {}; }
  51. if (typeof Confluence.Templates == 'undefined') { Confluence.Templates = {}; }
  52. if (typeof Confluence.Templates.PlaySQL == 'undefined') { Confluence.Templates.PlaySQL = {}; }
  53.  
  54.  
  55. Confluence.Templates.PlaySQL.fullTable = function(opt_data, opt_sb) {
  56.   var output = opt_sb || new soy.StringBuilder();
  57.   output.append('<table id="playsql-', soy.$$escapeHtml(opt_data.name), '" class="playsql spreadsheet"><thead><tr>');
  58.   var columnList6 = opt_data.columns;
  59.   var columnListLen6 = columnList6.length;
  60.   if (columnListLen6 > 0) {
  61.     for (var columnIndex6 = 0; columnIndex6 < columnListLen6; columnIndex6++) {
  62.       var columnData6 = columnList6[columnIndex6];
  63.       output.append((columnIndex6 != 1) ? '<th data-name="' + soy.$$escapeHtml(columnData6.name) + '" title="' + soy.$$escapeHtml(columnData6.name) + '" data-type="' + soy.$$escapeHtml(columnData6.type) + '" data-renderer="' + soy.$$escapeHtml(columnData6.renderer) + '" data-view-renderer="' + soy.$$escapeHtml(columnData6.viewRenderer ? columnData6.viewRenderer : '') + '" >' + soy.$$escapeHtml(columnData6.label) + '</th>' : '');
  64.     }
  65.   } else {
  66.     output.append('<td>This table has no column. Wait, WHAT!?</td>');
  67.   }
  68.   output.append('<th class="add-column right-padding"><a href="#" title="Click to add a new column">Add a Column</a></th></tr>', (opt_data.recoverableErrorMessage) ? '<tr class="message recoverable"><th>&nbsp;</th><td colspan="' + soy.$$escapeHtml(opt_data.columns.length - 1) + '"><div class="playsql-message"><p><img src="' + soy.$$escapeHtml("") + '/images/icons/emoticons/information.png" width="16" height="16" align="absmiddle" alt="" border="0"/>&nbsp;' + soy.$$escapeHtml(opt_data.recoverableErrorMessage) + '<br/></p></div></td></tr>' : '', '</thead><tbody>');
  69.   var rowList36 = opt_data.data;
  70.   var rowListLen36 = rowList36.length;
  71.   if (rowListLen36 > 0) {
  72.     for (var rowIndex36 = 0; rowIndex36 < rowListLen36; rowIndex36++) {
  73.       var rowData36 = rowList36[rowIndex36];
  74.       Confluence.Templates.PlaySQL.oneRow({row: rowData36}, output);
  75.     }
  76.   } else {
  77.     output.append('<tr class="message"><th>&nbsp;</th><td colspan="', soy.$$escapeHtml(opt_data.columns.length - 1), '"><div class="playsql-message"><p><img src="', soy.$$escapeHtml(""), '/images/icons/emoticons/information.png" width="16" height="16" align="absmiddle" alt="" border="0"/>&nbsp;No data in this table.<br/></p></div></td></tr>');
  78.   }
  79.   output.append('</tbody>');
  80.   Confluence.Templates.PlaySQL.totalsRow({totals: opt_data.totals, columnCount: opt_data.columns.length - 2}, output);
  81.   output.append('</table><div id="custom-menu" class="aui-dropdown2 aui-style-default"></div>');
  82.   return opt_sb ? '' : output.toString();
  83. };
  84.  
  85.  
  86. Confluence.Templates.PlaySQL.totalsRow = function(opt_data, opt_sb) {
  87.   var output = opt_sb || new soy.StringBuilder();
  88.   if (opt_data.totals) {
  89.     output.append('<tfoot><tr class="totals-row"><th class="add-row"><a href="#">Add a Row</a></th>');
  90.     var cellList55 = opt_data.totals;
  91.     var cellListLen55 = cellList55.length;
  92.     for (var cellIndex55 = 0; cellIndex55 < cellListLen55; cellIndex55++) {
  93.       var cellData55 = cellList55[cellIndex55];
  94.       output.append('<td colspan="', soy.$$escapeHtml(cellData55.first), '"><span class="total-label">', soy.$$escapeHtml(cellData55.second), ' </span><span class="total-value">', soy.$$escapeHtml(cellData55.third), '</span></td>');
  95.     }
  96.     output.append('<td class="right-padding">&nbsp;</td></tr></tfoot>');
  97.   } else {
  98.     output.append('<tfoot><tr class="totals-row"><th class="add-row"><a href="#">Add a Row</a></th><td colspan="', soy.$$escapeHtml(opt_data.columnCount), '" class="edit-on-first-click">&nbsp;</td><td class="right-padding">&nbsp;</td></tr></tfoot>');
  99.   }
  100.   return opt_sb ? '' : output.toString();
  101. };
  102.  
  103.  
  104. Confluence.Templates.PlaySQL.oneRow = function(opt_data, opt_sb) {
  105.   var output = opt_sb || new soy.StringBuilder();
  106.   var rowId__soy70 = opt_data.row[0][0];
  107.   var position__soy71 = opt_data.row[1][0];
  108.   output.append('<tr data-row-id="', soy.$$escapeHtml(rowId__soy70), '" data-row-position="', soy.$$escapeHtml(position__soy71), '">');
  109.   var cellList77 = opt_data.row;
  110.   var cellListLen77 = cellList77.length;
  111.   for (var cellIndex77 = 0; cellIndex77 < cellListLen77; cellIndex77++) {
  112.     var cellData77 = cellList77[cellIndex77];
  113.     if (cellIndex77 == 0) {
  114.       output.append('<th data-value="', soy.$$escapeHtml(cellData77[0]), '" data-saved-value="', soy.$$escapeHtml(cellData77[0]), '" title="ID: ', soy.$$escapeHtml(rowId__soy70), ' - Position: ', soy.$$escapeHtml(position__soy71), '">', soy.$$escapeHtml(rowId__soy70), '</th>');
  115.     } else if (cellIndex77 != 1) {
  116.       var value__soy92 = new soy.StringBuilder(soy.$$escapeHtml(cellData77[0] != null ? cellData77[0] : ''));
  117.       value__soy92 = value__soy92.toString();
  118.       var rawValue__soy94 = new soy.StringBuilder(soy.$$escapeHtml(cellData77[1] != null ? cellData77[1] : ''));
  119.       rawValue__soy94 = rawValue__soy94.toString();
  120.       output.append('<td data-value="', rawValue__soy94, '">', cellData77[2], '</td>');
  121.     }
  122.   }
  123.   output.append('<td class="right-padding">&nbsp;</td></tr>');
  124.   return opt_sb ? '' : output.toString();
  125. };
  126.  
  127.  
  128. Confluence.Templates.PlaySQL.columnPropertiesInlineDialog = function(opt_data, opt_sb) {
  129.   var output = opt_sb || new soy.StringBuilder();
  130.   output.append('<form class="aui"><div class="aui-toolbar2"><div class="aui-toolbar2-inner"><div class="aui-toolbar2-primary"><div class="aui-buttons"><a href="#" class="aui-button ', (opt_data.orderbyDef.way == 'DESC') ? 'sort-asc' : (opt_data.orderbyDef.way == 'ASC') ? 'sort-none' : 'sort-desc', '">', (opt_data.orderbyDef.way == 'DESC') ? 'Sort: DESC' : (opt_data.orderbyDef.way == 'ASC') ? 'Sort: ASC' : 'Unsorted', '</a><button class="aui-button aui-dropdown2-trigger aui-button-split-more" aria-haspopup="true" aria-owns="null-sorting-dropdown">Nulls</button></div><div id="null-sorting-dropdown" class="aui-dropdown2 aui-style-default" data-dropdown2-alignment="left"><div class="aui-dropdown2-section"><ul class="aui-list-truncate"><li><a href="#" class="aui-dropdown2-radio sort-none ', (opt_data.orderbyDef.way != 'DESC' && opt_data.orderbyDef.way != 'ASC') ? 'checked' : '', '">Not sorted</a></li><li><a href="#" class="aui-dropdown2-radio sort-desc ', (opt_data.orderbyDef.way == 'DESC') ? 'checked' : '', '">Descending</a></li><li><a href="#" class="aui-dropdown2-radio sort-asc ', (opt_data.orderbyDef.way == 'ASC') ? 'checked' : '', '">Ascending</a></li></ul></div><div class="aui-dropdown2-section"><ul class="aui-list-truncate"><li><a href="#" class="aui-dropdown2-radio nulls-default ', (opt_data.orderbyDef.nulls != 'FIRST' && opt_data.orderbyDef.nulls != 'LAST' && opt_data.orderbyDef.way != null) ? 'checked' : '', '">Default</a></li><li><a href="#" class="aui-dropdown2-radio nulls-first ', (opt_data.orderbyDef.nulls == 'FIRST') ? 'checked' : '', '">Nulls first</a></li><li><a href="#" class="aui-dropdown2-radio nulls-last ', (opt_data.orderbyDef.nulls == 'LAST') ? 'checked' : '', '">Nulls last</a></li></ul></div></div></div><div class="aui-toolbar2-secondary"><div class="aui-buttons"><a class="aui-button btn-properties" href="#" ', (! opt_data.hasColFEPerm) ? 'aria-disabled="true"' : '', '><span class="aui-icon aui-icon-small aui-iconfont-configure" title="Configure">Properties</span></a><a class="aui-button btn-delete" href="#" ', (! opt_data.hasColBEPerm) ? 'aria-disabled="true"' : '', '><span class="aui-icon aui-icon-small aui-iconfont-remove" title="Delete">Delete</span></a></div></div></div></div><table border=0><tr><td>Label:</td><td><input class="text column-label" value="', soy.$$escapeHtml(opt_data.column.label), '" ', (! opt_data.hasColFEPerm) ? 'disabled="disabled"' : '', '/></td></tr><tr><td>Name:</td><td><input class="text column-name" value="', soy.$$escapeHtml(opt_data.column.name), '" ', (! opt_data.hasColBEPerm) ? 'disabled="disabled"' : '', '/></td></tr><tr><td>Type:</td><td>');
  131.   var typeText__soy167 = opt_data.column.type + (opt_data.column.length != null ? ' (' + opt_data.column.length + ')' : '');
  132.   var typeTextWithRenderer__soy168 = typeText__soy167 + (opt_data.column.formula ? '' : ' - ' + opt_data.column.rendererName);
  133.   output.append('<input class="text column-type" disabled="disabled" value="', soy.$$escapeHtml(typeTextWithRenderer__soy168), '"/>&nbsp;<a href="#" class="btn-properties">Details...</a></td></tr><tr><td>Formula:</td><td><input class="text column-formula long-field" value="', soy.$$escapeHtml(opt_data.column.formula ? opt_data.column.formula : ''), '" ', (! opt_data.hasColBEPerm) ? 'disabled="disabled"' : '', '/><div id="dropdown-wizards" class="aui-dropdown2 aui-style-default"><ul class="aui-list-truncate"><li><a href="#" class="wizardForeignKey">= Lookup a value from another table</a></li><li><a href="#" class="wizardGMaps">= Link a street address to Google Maps</a></li><li><a href="http://documentation.play-sql.com/display/PUBLIC/Formulas" target="_blank">? Get help about formulas</a></li></ul></div></td></tr>', (opt_data.hasColBEPerm) ? '<tr class="formula-helpers"><td>&nbsp;</td><td><div class="description">Type \'=\' for <a href="#" class="show-wizards aui-dropdown2-trigger" aria-owns="dropdown-wizards" aria-haspopup="true">formula wizards</a>&nbsp; or <a href="http://documentation.play-sql.com/display/PUBLIC/Formulas" target="_blank">get help</a>.</div></td></tr>' : '', '<tr class="if-formula ', soy.$$escapeHtml(opt_data.column.formula ? '' : 'hidden'), '"><td>Renderer:</td><td><input class="text column-renderer" disabled="disabled" value="', soy.$$escapeHtml(opt_data.column.viewRendererName), '"/>&nbsp;<a href="#" class="btn-properties">Details...</a></td></tr></table><div class="error"></div><div class="button-panel"><a class="aui-button btn-submit" href="#">Save</a><a href="#" class="cancel btn-cancel">Cancel</a></div></form>');
  134.   return opt_sb ? '' : output.toString();
  135. };
  136.  
  137.  
  138. Confluence.Templates.PlaySQL.wizardGMapsInlineDialog = function(opt_data, opt_sb) {
  139.   var output = opt_sb || new soy.StringBuilder();
  140.   output.append('<form class="aui" id="wizard-gmaps-dialog"><h2>Formula Wizard: Display a link</h2><fieldset><div class="field-group sourcecolumn"><label for="sourcecolumn">Source column<span class="aui-icon icon-required"> required</span></label><select class="select long-field" id="sourcecolumn" name="sourcecolumn" title="Choose which column contains the search string">');
  141.   var columnList188 = opt_data.columns;
  142.   var columnListLen188 = columnList188.length;
  143.   for (var columnIndex188 = 0; columnIndex188 < columnListLen188; columnIndex188++) {
  144.     var columnData188 = columnList188[columnIndex188];
  145.     output.append('<option value="', soy.$$escapeHtml(columnData188.name), '"', (columnData188.name == opt_data.currentcolumn) ? 'selected="selected"' : '', '>', soy.$$escapeHtml(columnData188.label), '</option>');
  146.   }
  147.   output.append('</select></div><div class="field-group url"><label for="url">URL<span class="aui-icon icon-required"> required</span></label><input class="text long-field" type="text" id="url" name="url" value="http://maps.google.com?q=%s"><div class="description">%s will be replaced by the query string.</div></div></fieldset><fieldset class="group"><legend><span>Label</span></legend><div class="radio"><input class="radio" type="radio" name="display" id="display-link"><label for="display-link">Display the link</label></div><div class="radio"><input class="radio" type="radio" checked="checked" name="display" id="display-field"><label for="display-field">Display the query string</label></div><div class="radio"><input class="radio" type="radio" name="display" id="display-label"><label for="display-label">Display the fixed text \'Link\'</label></div></fieldset><fieldset class="group hidden"><legend><span>Format</span></legend><div class="checkbox"><input class="checkbox" type="checkbox" name="convert-to-sql" id="convert-to-sql"/><label for="convert-to-sql">Convert the formula to SQL</label></div></fieldset><div class="error"></div><div class="button-panel"><a class="aui-button btn-submit" href="#">Finish</a></div></form>');
  148.   return opt_sb ? '' : output.toString();
  149. };
  150.  
  151.  
  152. Confluence.Templates.PlaySQL.wizardForeignKeyInlineDialog = function(opt_data, opt_sb) {
  153.   var output = opt_sb || new soy.StringBuilder();
  154.   output.append('<form class="aui" id="wizard-foreign-key-dialog"><h2>Formula Wizard: Foreign Key</h2><fieldset><h3>Label</h3><div class="field-group targettable"><label for="targettable">Target table</label><select class="select long-field" id="targettable" name="targettable" title="Choose in which table the value should be looked up"></select></div><div class="field-group targetlabel"><label for="targetlabel">Label</label><select class="select long-field" id="targetlabel" name="targetlabel" title="Choose the value to be displayed"></select></div><h3>ID Columns</h3><div class="field-group targetid"><label for="targetid">Target table\'s ID</label><select class="select long-field" id="targetid" name="targetid" title="Choose the identifier column"></select></div><div class="field-group sourcecolumn"><label for="sourcecolumn">Source column</label><select class="select long-field" id="sourcecolumn" name="sourcecolumn" title="Choose the local table\'s foreign key"></select></div></fieldset><fieldset class="group hidden"><legend><span>Format</span></legend><div class="checkbox"><input class="checkbox" type="checkbox" name="convert-to-sql" id="convert-to-sql"/><label for="convert-to-sql">Convert the formula to SQL</label></div></fieldset><fieldset class="group"><legend><span>Preview</span></legend><p class="preview free-text-in-form">&nbsp;</p><div class="error free-text-in-form"></div></fieldset><div class="button-panel"><a class="aui-button btn-submit" href="#">Finish</a></div></form>');
  155.   return opt_sb ? '' : output.toString();
  156. };
  157.  
  158.  
  159. Confluence.Templates.PlaySQL.createColumnPropertiesForm = function(opt_data, opt_sb) {
  160.   var output = opt_sb || new soy.StringBuilder();
  161.   output.append('<form class="aui" id="column-properties-dialog"><fieldset><div class="field-group for-type"><label for="column-type">Type</label><select class="select" id="column-type" name="type" title="Select a type for your data"', (! opt_data.canChangeBackEndCols) ? 'disabled="on"' : '', '>');
  162.   var typeList208 = opt_data.dataTypes;
  163.   var typeListLen208 = typeList208.length;
  164.   for (var typeIndex208 = 0; typeIndex208 < typeListLen208; typeIndex208++) {
  165.     var typeData208 = typeList208[typeIndex208];
  166.     output.append('<option value="', soy.$$escapeHtml(typeData208.name), '"', (typeData208.name == opt_data.coltype) ? 'selected="selected"' : '', '>', soy.$$escapeHtml(typeData208.label != null ? typeData208.label : typeData208.name), '</option>');
  167.   }
  168.   output.append('</select><div class="description"></div><div class="error" class="hidden"></div></div></fieldset><div class="field-group ', (opt_data.length == null) ? 'hidden' : '', ' for-length"><label for="length">Length</label><input class="text" id="column-length" name="length" value="', soy.$$escapeHtml(opt_data.length != null ? opt_data.length : ''), '"/><div class="error" class="hidden"></div></div><fieldset><div class="field-group for-renderer ', (opt_data.hasFormula) ? 'hidden' : '', '"><label for="column-renderer">Renderer</label><select class="select" id="column-renderer" name="renderer" title="Select the renderer you use to edit the data"><optgroup label="Same type (', soy.$$escapeHtml(opt_data.coltype), ')">');
  169.   var rendererItemList232 = opt_data.renderers.sameTypeRenderers;
  170.   var rendererItemListLen232 = rendererItemList232.length;
  171.   for (var rendererItemIndex232 = 0; rendererItemIndex232 < rendererItemListLen232; rendererItemIndex232++) {
  172.     var rendererItemData232 = rendererItemList232[rendererItemIndex232];
  173.     output.append('<option value="', soy.$$escapeHtml(rendererItemData232.key), '"', (rendererItemData232.key == opt_data.renderer) ? 'selected="selected"' : '', '>', soy.$$escapeHtml(rendererItemData232.name), '</option>');
  174.   }
  175.   output.append('</optgroup></select><div class="description"></div><div class="error" class="hidden"></div></div></fieldset><fieldset><div class="field-group for-view-renderer ', (! opt_data.hasFormula) ? 'hidden' : '', '"><label for="view-renderer">Formula Renderer</label><select class="select" id="view-renderer" name="view-renderer" title="Select a renderer to display your data"><optgroup label="Same type (', soy.$$escapeHtml(opt_data.coltype), ')">');
  176.   var rendererItemList250 = opt_data.renderers.sameTypeRenderers;
  177.   var rendererItemListLen250 = rendererItemList250.length;
  178.   for (var rendererItemIndex250 = 0; rendererItemIndex250 < rendererItemListLen250; rendererItemIndex250++) {
  179.     var rendererItemData250 = rendererItemList250[rendererItemIndex250];
  180.     output.append('<option value="', soy.$$escapeHtml(rendererItemData250.key), '"', (rendererItemData250.key == opt_data.viewRenderer) ? 'selected="selected"' : '', '>', soy.$$escapeHtml(rendererItemData250.name), '</option>');
  181.   }
  182.   output.append('</optgroup>');
  183.   if (opt_data.canChangeBackEndCols) {
  184.     output.append('<optgroup label="Different type">');
  185.     var rendererItemList265 = opt_data.renderers.otherTypeRenderers;
  186.     var rendererItemListLen265 = rendererItemList265.length;
  187.     for (var rendererItemIndex265 = 0; rendererItemIndex265 < rendererItemListLen265; rendererItemIndex265++) {
  188.       var rendererItemData265 = rendererItemList265[rendererItemIndex265];
  189.       output.append('<option value="', soy.$$escapeHtml(rendererItemData265.key), '" ', (rendererItemData265.key == opt_data.viewRenderer) ? 'selected="selected"' : '', '>', soy.$$escapeHtml(rendererItemData265.name), '</option>');
  190.     }
  191.     output.append('</optgroup>');
  192.   }
  193.   output.append('</select><div class="description">Renders the result of your formula. Check the type matches the formula (whether it is integer, date or text).</div><div class="error" class="hidden"></div></div></fieldset><fieldset><div class="format-details"></div></fieldset></form>');
  194.   return opt_sb ? '' : output.toString();
  195. };
  196.  
  197.  
  198. Confluence.Templates.PlaySQL.columnPropertiesTypeField = function(opt_data, opt_sb) {
  199.   var output = opt_sb || new soy.StringBuilder();
  200.   output.append('<div class="field-group hidden"><label for="type">Type</label><input class="text" id="column-type" name="type" ', (opt_data.type) ? 'value="' + soy.$$escapeHtml(opt_data.type) + '"' : '', ' disabled="on"/>');
  201.   if (opt_data.fieldErrors && opt_data.fieldErrors['type']) {
  202.     var errorList288 = opt_data.fieldErrors['type'];
  203.     var errorListLen288 = errorList288.length;
  204.     for (var errorIndex288 = 0; errorIndex288 < errorListLen288; errorIndex288++) {
  205.       var errorData288 = errorList288[errorIndex288];
  206.       output.append('<div class="error">', soy.$$escapeHtml(errorData288), '</div>');
  207.     }
  208.   } else {
  209.     output.append('<div class="error" class="hidden"></div>');
  210.   }
  211.   output.append('</div>');
  212.   return opt_sb ? '' : output.toString();
  213. };
  214.  
  215.  
  216. Confluence.Templates.PlaySQL.columnPropertiesDateFormatField = function(opt_data, opt_sb) {
  217.   var output = opt_sb || new soy.StringBuilder();
  218.   output.append('<div class="field-group"><label for="dateFormat">Display format</label><input class="text" id="column-dateFormat" name="dateFormat" ', (opt_data.dateFormat) ? 'value="' + soy.$$escapeHtml(opt_data.dateFormat) + '"' : '', '/><div class="description">Example: "yyyy-MM-dd", or "ddd dd/MM/yyyy"</div>');
  219.   if (opt_data.fieldErrors && opt_data.fieldErrors['dateFormat']) {
  220.     var errorList306 = opt_data.fieldErrors['dateFormat'];
  221.     var errorListLen306 = errorList306.length;
  222.     for (var errorIndex306 = 0; errorIndex306 < errorListLen306; errorIndex306++) {
  223.       var errorData306 = errorList306[errorIndex306];
  224.       output.append('<div class="error">', soy.$$escapeHtml(errorData306), '</div>');
  225.     }
  226.   } else {
  227.     output.append('<div class="error" class="hidden"></div>');
  228.   }
  229.   output.append('</div>');
  230.   return opt_sb ? '' : output.toString();
  231. };
  232.  
  233.  
  234. Confluence.Templates.PlaySQL.columnPropertiesNumericField = function(opt_data, opt_sb) {
  235.   var output = opt_sb || new soy.StringBuilder();
  236.   output.append('<div class="field-group"><label for="dateFormat">Display format</label><input class="text" id="column-dateFormat" name="dateFormat" ', (opt_data.dateFormat) ? 'value="' + soy.$$escapeHtml(opt_data.dateFormat) + '"' : '', '/><div class="description">Example: "yyyy-MM-dd", or "ddd dd/MM/yyyy"</div>');
  237.   if (opt_data.fieldErrors && opt_data.fieldErrors['dateFormat']) {
  238.     var errorList324 = opt_data.fieldErrors['dateFormat'];
  239.     var errorListLen324 = errorList324.length;
  240.     for (var errorIndex324 = 0; errorIndex324 < errorListLen324; errorIndex324++) {
  241.       var errorData324 = errorList324[errorIndex324];
  242.       output.append('<div class="error">', soy.$$escapeHtml(errorData324), '</div>');
  243.     }
  244.   } else {
  245.     output.append('<div class="error" class="hidden"></div>');
  246.   }
  247.   output.append('</div>');
  248.   return opt_sb ? '' : output.toString();
  249. };
  250.  
  251.  
  252. Confluence.Templates.PlaySQL.columnPropertiesMarkdown = function(opt_data, opt_sb) {
  253.   var output = opt_sb || new soy.StringBuilder();
  254.   output.append('<p>The cells will be rendered using the <a href="https://github.com/sirthias/pegdown">PegDown</a> syntax:</p><ul><li>*One star*: <em>Emphasis</em></li><li>**Two stars**: <b>Bold</b></li><li>`Back-quotes`: <code>Code</code></li><li>![Alt text](/path/to/img.jpg): Image</li><li>&lt;http://example.com&gt;: Links</li><li># Hash: Title</li><li>## Double Hash: Sub-title</li><li>* Star (at the beginning of the line): List</li>');
  255.   return opt_sb ? '' : output.toString();
  256. };
  257.  
  258.  
  259. Confluence.Templates.PlaySQL.columnPropertiesCurrencyField = function(opt_data, opt_sb) {
  260.   var output = opt_sb || new soy.StringBuilder();
  261.   output.append('<div class="field-group"><label for="aboveZero">Positive number format</label><input class="text" id="column-aboveZero" name="aboveZero" ', (opt_data.aboveZero) ? 'value="' + soy.$$escapeHtml(opt_data.aboveZero) + '"' : '', '/><div class="description">Example: "$ #,##0.00" or "# ##0,00 €"</div>');
  262.   if (opt_data.fieldErrors && opt_data.fieldErrors['aboveZero']) {
  263.     var errorList344 = opt_data.fieldErrors['aboveZero'];
  264.     var errorListLen344 = errorList344.length;
  265.     for (var errorIndex344 = 0; errorIndex344 < errorListLen344; errorIndex344++) {
  266.       var errorData344 = errorList344[errorIndex344];
  267.       output.append('<div class="error">', soy.$$escapeHtml(errorData344), '</div>');
  268.     }
  269.   } else {
  270.     output.append('<div class="error" class="hidden"></div>');
  271.   }
  272.   output.append('</div><div class="field-group"><label for="equalZero">Zero</label><input class="text" id="column-equalZero" name="equalZero" ', (opt_data.equalZero) ? 'value="' + soy.$$escapeHtml(opt_data.equalZero) + '"' : '', '/>');
  273.   if (opt_data.fieldErrors && opt_data.fieldErrors['equalZero']) {
  274.     var errorList360 = opt_data.fieldErrors['equalZero'];
  275.     var errorListLen360 = errorList360.length;
  276.     for (var errorIndex360 = 0; errorIndex360 < errorListLen360; errorIndex360++) {
  277.       var errorData360 = errorList360[errorIndex360];
  278.       output.append('<div class="error">', soy.$$escapeHtml(errorData360), '</div>');
  279.     }
  280.   } else {
  281.     output.append('<div class="error" class="hidden"></div>');
  282.   }
  283.   output.append('</div><div class="field-group"><label for="belowZero">Negative numbers</label><input class="text" id="column-belowZero" name="belowZero" ', (opt_data.belowZero) ? 'value="' + soy.$$escapeHtml(opt_data.belowZero) + '"' : '', '/><div class="description">Example: "darkred;$# ###.00"</div>');
  284.   if (opt_data.fieldErrors && opt_data.fieldErrors['belowZero']) {
  285.     var errorList376 = opt_data.fieldErrors['belowZero'];
  286.     var errorListLen376 = errorList376.length;
  287.     for (var errorIndex376 = 0; errorIndex376 < errorListLen376; errorIndex376++) {
  288.       var errorData376 = errorList376[errorIndex376];
  289.       output.append('<div class="error">', soy.$$escapeHtml(errorData376), '</div>');
  290.     }
  291.   } else {
  292.     output.append('<div class="error" class="hidden"></div>');
  293.   }
  294.   output.append('</div>');
  295.   return opt_sb ? '' : output.toString();
  296. };
  297.  
  298.  
  299. Confluence.Templates.PlaySQL.columnPropertiesValueMappingField = function(opt_data, opt_sb) {
  300.   var output = opt_sb || new soy.StringBuilder();
  301.   output.append('<div class="field-group"><h3>Value mapping</h3><p>Map values with icons. Enter the <a href="https://developer.atlassian.com/design/latest/iconography.html">CSS class</a> or the <a href="http://dataurl.net/#dataurlmaker">data url</a>.</p><table class="aui aui-table-interactive" id="value-mappings"><thead><tr><th>Value</th><th>Icon</th><th><a class="add" href="#" title="Add a new mapping"><span class="aui-icon aui-icon-small aui-iconfont-add" data-unicode="UTF+E002" original-title="">Add</span></a></th></tr></thead><tbody>');
  302.   var keyList386 = soy.$$getMapKeys(opt_data.mappings);
  303.   var keyListLen386 = keyList386.length;
  304.   for (var keyIndex386 = 0; keyIndex386 < keyListLen386; keyIndex386++) {
  305.     var keyData386 = keyList386[keyIndex386];
  306.     Confluence.Templates.PlaySQL.columnPropertiesValueMappingRow({key: keyData386, value: opt_data.mappings[keyData386]}, output);
  307.   }
  308.   output.append('</tbody></table></div>');
  309.   return opt_sb ? '' : output.toString();
  310. };
  311.  
  312.  
  313. Confluence.Templates.PlaySQL.columnPropertiesValueMappingRow = function(opt_data, opt_sb) {
  314.   var output = opt_sb || new soy.StringBuilder();
  315.   output.append('<tr><td><input type="text" value="', soy.$$escapeHtml(opt_data.key), '" name="key"></td><td><input type="text" value="', soy.$$escapeHtml(opt_data.value), '" name="value"></td><td><a href="#" class="remove-mapping" title="Remove mapping"><span class="aui-icon aui-icon-small aui-iconfont-remove">Remove</span></a></td></tr>');
  316.   return opt_sb ? '' : output.toString();
  317. };
  318.  
  319. } catch (err) {
  320.     if (console && console.log && console.error) {
  321.         console.log("Error running batched script.");
  322.         console.error(err);
  323.     }
  324. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement