Added - admins can modify sealed format visibility
This commit is contained in:
@@ -130,11 +130,31 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
|
||||
unBanUser(request, responseWriter);
|
||||
} else if (uri.equals("/findMultipleAccounts") && request.method() == HttpMethod.POST) {
|
||||
findMultipleAccounts(request, responseWriter);
|
||||
} else if (uri.equals("/toggleSealedHallStatus") && request.method() == HttpMethod.POST) {
|
||||
toggleSealedHallStatus(request, responseWriter);
|
||||
} else {
|
||||
throw new HttpProcessingException(404);
|
||||
}
|
||||
}
|
||||
|
||||
private void toggleSealedHallStatus(HttpRequest request, ResponseWriter responseWriter) throws Exception {
|
||||
validateEventAdmin(request);
|
||||
var postDecoder = new HttpPostRequestDecoder(request);
|
||||
|
||||
String sealedFormatCodeStr = getFormParameterSafely(postDecoder, "sealedFormatCode");
|
||||
|
||||
|
||||
Throw400IfStringNull("sealedFormatCode", sealedFormatCodeStr);
|
||||
var sealedFormat = _formatLibrary.GetSealedTemplate(sealedFormatCodeStr);
|
||||
Throw400IfValidationFails("sealedFormatCode", sealedFormatCodeStr,sealedFormat != null);
|
||||
|
||||
if (_formatLibrary.toggleSealedInHall(sealedFormatCodeStr)) {
|
||||
responseWriter.writeHtmlResponse("Added format");
|
||||
} else {
|
||||
responseWriter.writeHtmlResponse("Removed format");
|
||||
}
|
||||
}
|
||||
|
||||
private void setTournamentStage(HttpRequest request, ResponseWriter responseWriter) throws Exception {
|
||||
validateEventAdmin(request);
|
||||
var postDecoder = new HttpPostRequestDecoder(request);
|
||||
|
||||
@@ -33,6 +33,7 @@ import java.lang.reflect.Type;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.Duration;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -109,6 +110,7 @@ public class TournamentRequestHandler extends LotroServerRequestHandler implemen
|
||||
data.sealed = _formatLibrary.getAllHallSealedTemplates().values().stream()
|
||||
.map(sealed -> new JSONDefs.ItemStub(sealed.GetID(), sealed.GetName().substring(3)))
|
||||
.collect(Collectors.toList());
|
||||
data.sealed.sort(Comparator.comparing(o -> _formatLibrary.GetSealedTemplate(o.code).GetName())); // Sort by sealed format number
|
||||
data.soloDrafts = orderedSoloDrafts.stream()
|
||||
.filter(code -> _soloDraftDefinitions.getAllSoloDrafts().values().stream().anyMatch(soloDraft -> code.equals(soloDraft.getCode()))).map(code -> new JSONDefs.ItemStub(code, availableSoloDraftFormats.get(code)))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -96,6 +96,18 @@ $(document).ready(
|
||||
resultdiv.html("OK");
|
||||
}, tourneyErrorMap(resultdiv));
|
||||
});
|
||||
|
||||
$("#toggle-sealed-button").button().click(
|
||||
function () {
|
||||
let resultdiv = $("#toggle-sealed-result");
|
||||
resultdiv.html("Processing...");
|
||||
|
||||
hall.comm.toggleSealedHallStatus(
|
||||
$("#toggle-sealed-select").val(),
|
||||
function (xml) {
|
||||
resultdiv.html(xml);
|
||||
}, tourneyErrorMap(resultdiv));
|
||||
});
|
||||
|
||||
$("#preview-sch-tourney-button").button().click(
|
||||
function () {
|
||||
@@ -254,9 +266,15 @@ $(document).ready(
|
||||
.attr("value", id)
|
||||
.text(prop + " - " + serieCount + " Series");
|
||||
$("#sch-tourney-sealed-format").append(item);
|
||||
|
||||
var item2 = $("<option/>")
|
||||
.attr("value", id)
|
||||
.text(prop);
|
||||
$("#toggle-sealed-select").append(item2);
|
||||
}
|
||||
}
|
||||
sortOptionsByName("#sch-tourney-sealed-format");
|
||||
sortOptionsByName("#toggle-sealed-select");
|
||||
|
||||
for (var prop in drafts) {
|
||||
if (Object.prototype.hasOwnProperty.call(drafts, prop)) {
|
||||
@@ -455,6 +473,37 @@ function tourneyErrorMap(outputControl, callback=null) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/><br/><hr><br/><br/>
|
||||
|
||||
<div id="toggle-sealed-hall-section" class="league-form">
|
||||
<h1>Toggle Sealed Format Hall Status</h1>
|
||||
|
||||
<div class="flex-horiz">
|
||||
<div class="label-column">Sealed Format: </div>
|
||||
<select id="toggle-sealed-select" class="flex-fill"></select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<p>If chosen sealed format is already available in hall, this will disable it. If the format is not available
|
||||
in hall, this will enable it.</p>
|
||||
<p>The changes made using this form are in effect only until server restart or json definitions reload.</p>
|
||||
<p>For permanent change, remove or add "hall: true" field in the sealed format json definition.</p>
|
||||
</div>
|
||||
|
||||
<button id="toggle-sealed-button">
|
||||
Toggle Sealed Format Hall Status
|
||||
</button>
|
||||
|
||||
<div id=toggle-sealed-result-label" class="flex-horiz result-label">
|
||||
<div class="label">
|
||||
<b>Result:</b>
|
||||
</div>
|
||||
<div id="toggle-sealed-result" class="flex-fill result-box">
|
||||
Ready.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br/><br/><hr><br/><br/>
|
||||
|
||||
<div id="sch-tourney-section" class="league-form">
|
||||
|
||||
@@ -1470,5 +1470,18 @@ var GempLotrCommunication = Class.extend({
|
||||
error:this.errorCheck(errorMap),
|
||||
dataType:"json"
|
||||
});
|
||||
}
|
||||
},
|
||||
toggleSealedHallStatus:function (sealedFormatCode, callback, errorMap) {
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url:this.url + "/admin/toggleSealedHallStatus",
|
||||
cache:false,
|
||||
data:{
|
||||
sealedFormatCode:sealedFormatCode
|
||||
},
|
||||
success:callback,
|
||||
error:this.errorCheck(errorMap),
|
||||
dataType:"html"
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -241,6 +241,26 @@ public class LotroFormatLibrary {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean toggleSealedInHall(String code) {
|
||||
try {
|
||||
collectionReady.acquire();
|
||||
boolean tbr = false;
|
||||
if (_hallSealedTemplates.containsKey(code)) {
|
||||
_hallSealedTemplates.remove(code);
|
||||
} else if (_sealedTemplates.containsKey(code)) {
|
||||
_hallSealedTemplates.put(code, _sealedTemplates.get(code));
|
||||
tbr = true;
|
||||
}
|
||||
|
||||
collectionReady.release();
|
||||
return tbr;
|
||||
}
|
||||
catch (InterruptedException exp) {
|
||||
throw new RuntimeException("FormatLibrary.toggleSealedInHall() interrupted: ", exp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public SealedEventDefinition GetSealedTemplateByFormatCode(String formatCode) {
|
||||
try {
|
||||
collectionReady.acquire();
|
||||
|
||||
Reference in New Issue
Block a user