Major work and first attempt online

This commit is contained in:
Tom Bloor 2019-08-24 20:39:33 +01:00
parent f564a454fe
commit 9e7db8f5c3
Signed by: TBSliver
GPG key ID: 4657C7EBE42CC5CC
5 changed files with 654 additions and 8 deletions

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="JavaScriptLibraryMappings"> <component name="JavaScriptLibraryMappings">
<file url="PROJECT" libraries="{jquery-3.4.1}" /> <file url="PROJECT" libraries="{@types/knockout, @types/knockout.mapping, ace, bootstrap, jquery-3.4.1, knockout, knockout.mapping, popper}" />
</component> </component>
</project> </project>

View file

@ -5,5 +5,12 @@
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="jquery-3.4.1" level="application" /> <orderEntry type="library" name="jquery-3.4.1" level="application" />
<orderEntry type="library" name="popper" level="application" />
<orderEntry type="library" name="bootstrap" level="application" />
<orderEntry type="library" name="ace" level="application" />
<orderEntry type="library" name="knockout" level="application" />
<orderEntry type="library" name="@types/knockout" level="application" />
<orderEntry type="library" name="knockout.mapping" level="application" />
<orderEntry type="library" name="@types/knockout.mapping" level="application" />
</component> </component>
</module> </module>

4
css/main.css Normal file
View file

@ -0,0 +1,4 @@
#config-editor {
width: 100%;
height: 75vh;
}

View file

@ -11,23 +11,502 @@
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous"> crossorigin="anonymous">
<link rel="stylesheet"
href="css/main.css">
</head> </head>
<body> <body>
<nav class="navbar bg-light">
<!-- Add your site or application content here --> <a class="navbar-brand" href="#">Atlas Config Generator</a>
<p>Hello world! This is HTML5 Boilerplate.</p> </nav>
<div class="container-fluid">
<div class="nav nav-tabs">
<a id="nav-config" class="nav-item nav-link active" data-toggle="tab" href="#tab-config">Config</a>
<a id="nav-basic" class="nav-item nav-link" data-toggle="tab" href="#tab-basic">Basic Options</a>
<a id="nav-tribe-log" class="nav-item nav-link" data-toggle="tab" href="#tab-tribe-log">Tribe Log</a>
<a id="nav-travel-data" class="nav-item nav-link" data-toggle="tab" href="#tab-travel-data">Travel Data</a>
<a id="nav-shared-log" class="nav-item nav-link" data-toggle="tab" href="#tab-shared-log">Shared Log</a>
</div>
<div class="tab-content" id="tab-content">
<div class="tab-pane fade show active" id="tab-config">
<span>Paste your server config in here, or use tabs to modify settings</span>
<div id="config-editor"></div>
<span>Note, coordsScaling may need modifying from a string to a number - Javascript Limitation...</span>
</div>
<div class="tab-pane fade" id="tab-basic">
<form>
<fieldset>
<legend>Server Arguments</legend>
<div class="form-group row">
<label for="BaseServerArgs" class="col-sm-2 col-form-label">Base Server Args</label>
<div class="col-sm-10">
<textarea id="BaseServerArgs" data-bind="value: BaseServerArgs" rows="3" class="form-control"></textarea>
</div>
</div>
<div class="form-group row">
<label for="AdditionalCmdLineParams" class="col-sm-2 col-form-label">Additional CLI Params</label>
<div class="col-sm-10">
<textarea id="AdditionalCmdLineParams" data-bind="value: AdditionalCmdLineParams" rows="3" class="form-control"></textarea>
</div>
</div>
</fieldset>
<fieldset>
<legend>World Options</legend>
<div class="form-group row">
<label for="WorldFriendlyName" class="col-sm-2 col-form-label">Friendly Name</label>
<div class="col-sm-10">
<input id="WorldFriendlyName" data-bind="value: WorldFriendlyName" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="WorldAtlasId" class="col-sm-2 col-form-label">Atlas ID</label>
<div class="col-sm-10">
<input id="WorldAtlasId" data-bind="value: WorldAtlasId" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="WorldAtlasPassword" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input id="WorldAtlasPassword" data-bind="value: WorldAtlasPassword" type="text" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>Grid Options</legend>
<div class="form-group row">
<label for="gridSize" class="col-sm-2 col-form-label">Grid Size</label>
<div class="col-sm-10">
<input id="gridSize" data-bind="numericValue: gridSize" type="number" step="0.1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="coordsScaling" class="col-sm-2 col-form-label">Coords Scaling</label>
<div class="col-sm-10">
<input id="coordsScaling" data-bind="value: coordsScaling" type="number" step="0.000000000001" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="totalGridsX" class="col-sm-2 col-form-label">No. Grids X</label>
<div class="col-sm-10">
<input id="totalGridsX" data-bind="numericValue: totalGridsX" type="number" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="totalGridsY" class="col-sm-2 col-form-label">No. Grids Y</label>
<div class="col-sm-10">
<input id="totalGridsY" data-bind="numericValue: totalGridsY" type="number" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>Image Paths</legend>
<div class="form-group row">
<label for="backgroundImgPath" class="col-sm-2 col-form-label">Background Image</label>
<div class="col-sm-10">
<input id="backgroundImgPath" data-bind="value: backgroundImgPath" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="discoZonesImagePath" class="col-sm-2 col-form-label">Discovery Zones Image</label>
<div class="col-sm-10">
<input id="discoZonesImagePath" data-bind="value: discoZonesImagePath" type="text" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>URL Options</legend>
<div class="form-group row">
<label for="MetaWorldURL" class="col-sm-2 col-form-label">Meta World URL</label>
<div class="col-sm-10">
<input id="MetaWorldURL" data-bind="value: MetaWorldURL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="AuthListURL" class="col-sm-2 col-form-label">Auth List URL</label>
<div class="col-sm-10">
<input id="AuthListURL" data-bind="value: AuthListURL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="MapImageURL" class="col-sm-2 col-form-label">Map Image URL</label>
<div class="col-sm-10">
<input id="MapImageURL" data-bind="value: MapImageURL" type="text" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>Time Options</legend>
<div class="form-group row">
<label for="Day0" class="col-sm-2 col-form-label">Day Zero</label>
<div class="col-sm-10">
<input id="Day0" data-bind="value: Day0" type="text" class="form-control">
<small class="text-muted">Format: YYYY-mm-DD HH:MM:SS</small>
</div>
</div>
<div class="form-group row">
<label for="bUseUTCTime" class="col-sm-2 col-form-label">Use UTC Time</label>
<div class="col-sm-10">
<input id="bUseUTCTime" data-bind="checked: bUseUTCTime" type="checkbox" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="columnUTCOffset" class="col-sm-2 col-form-label">UTC Offset</label>
<div class="col-sm-10">
<input id="columnUTCOffset" data-bind="numericValue: columnUTCOffset" type="number" step="0.1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="lastImageOverride" class="col-sm-2 col-form-label">Day Zero</label>
<div class="col-sm-10">
<input id="lastImageOverride" data-bind="value: lastImageOverride" type="text" class="form-control">
<small class="text-muted">Format: YYYY-mm-DDTHH:MM:SS - Note different to Day Zero!</small>
</div>
</div>
</fieldset>
<fieldset>
<legend>Info Options</legend>
<div class="form-group row">
<label for="showServerInfo" class="col-sm-2 col-form-label">Show Server Info</label>
<div class="col-sm-10">
<input id="showServerInfo" data-bind="checked: showServerInfo" type="checkbox" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="showDiscoZoneInfo" class="col-sm-2 col-form-label">Show Discovery Zone Info</label>
<div class="col-sm-10">
<input id="showDiscoZoneInfo" data-bind="checked: showDiscoZoneInfo" type="checkbox" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="showShipPathsInfo" class="col-sm-2 col-form-label">Show Ship Path Info</label>
<div class="col-sm-10">
<input id="showShipPathsInfo" data-bind="checked: showShipPathsInfo" type="checkbox" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="showIslandNames" class="col-sm-2 col-form-label">Show Island Names</label>
<div class="col-sm-10">
<input id="showIslandNames" data-bind="checked: showIslandNames" type="checkbox" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="showLines" class="col-sm-2 col-form-label">Show Lines</label>
<div class="col-sm-10">
<input id="showLines" data-bind="checked: showLines" type="checkbox" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="showBackground" class="col-sm-2 col-form-label">Show Background</label>
<div class="col-sm-10">
<input id="showBackground" data-bind="checked: showBackground" type="checkbox" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>S3 Options</legend>
<div class="form-group row">
<label for="LocalS3URL" class="col-sm-2 col-form-label">URL</label>
<div class="col-sm-10">
<input id="LocalS3URL" data-bind="value: LocalS3URL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="LocalS3AccessKeyId" class="col-sm-2 col-form-label">Access Key ID</label>
<div class="col-sm-10">
<input id="LocalS3AccessKeyId" data-bind="value: LocalS3AccessKeyId" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="LocalS3SecretKey" class="col-sm-2 col-form-label">Secret Key</label>
<div class="col-sm-10">
<input id="LocalS3SecretKey" data-bind="value: LocalS3SecretKey" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="LocalS3BucketName" class="col-sm-2 col-form-label">Bucket Name</label>
<div class="col-sm-10">
<input id="LocalS3BucketName" data-bind="value: LocalS3BucketName" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="LocalS3Region" class="col-sm-2 col-form-label">Region</label>
<div class="col-sm-10">
<input id="LocalS3Region" data-bind="value: LocalS3Region" type="text" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>Misc Options</legend>
<div class="form-group row">
<label for="globalGameplaySetup" class="col-sm-2 col-form-label">Gameplay Setup</label>
<div class="col-sm-10">
<input id="globalGameplaySetup" data-bind="value: globalGameplaySetup" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="shipPathsIdGenerator" class="col-sm-2 col-form-label">Ship Paths ID Generator</label>
<div class="col-sm-10">
<input id="shipPathsIdGenerator" data-bind="numericValue: shipPathsIdGenerator" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="idGenerator" class="col-sm-2 col-form-label">ID Generator</label>
<div class="col-sm-10">
<input id="idGenerator" data-bind="numericValue: idGenerator" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="regionsIdGenerator" class="col-sm-2 col-form-label">Regions ID Generator</label>
<div class="col-sm-10">
<input id="regionsIdGenerator" data-bind="numericValue: regionsIdGenerator" type="number" step="1" class="form-control">
</div>
</div>
</fieldset>
</form>
</div>
<div class="tab-pane fade" id="tab-tribe-log">
<form data-bind="with: TribeLogConfig">
<fieldset>
<legend>Main Options</legend>
<div class="form-group row">
<label for="Tribe-MaxRedisEntries" class="col-sm-2 col-form-label">Max Redis Entries</label>
<div class="col-sm-10">
<input id="Tribe-MaxRedisEntries" data-bind="numericValue: $data.MaxRedisEntries" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Tribe-BackupMode" class="col-sm-2 col-form-label">Backup Mode</label>
<div class="col-sm-10">
<select id="Tribe-BackupMode" data-bind="options: ['off', 'on'], value: $data.BackupMode" class="form-control"></select>
</div>
</div>
<div class="form-group row">
<label for="Tribe-MaxFileHistory" class="col-sm-2 col-form-label">Max File History</label>
<div class="col-sm-10">
<input id="Tribe-MaxFileHistory" data-bind="numericValue: $data.MaxFileHistory" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Tribe-HttpBackupURL" class="col-sm-2 col-form-label">Backup URL</label>
<div class="col-sm-10">
<input id="Tribe-HttpBackupURL" data-bind="value: $data.HttpBackupURL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Tribe-HttpAPIKey" class="col-sm-2 col-form-label">API Key</label>
<div class="col-sm-10">
<input id="Tribe-HttpAPIKey" data-bind="value: $data.HttpAPIKey" type="text" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>S3 Options</legend>
<div class="form-group row">
<label for="Tribe-S3URL" class="col-sm-2 col-form-label">URL</label>
<div class="col-sm-10">
<input id="Tribe-S3URL" data-bind="value: $data.S3URL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Tribe-S3AccessKeyId" class="col-sm-2 col-form-label">Access Key ID</label>
<div class="col-sm-10">
<input id="Tribe-S3AccessKeyId" data-bind="value: $data.S3AccessKeyId" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Tribe-S3SecretKey" class="col-sm-2 col-form-label">Secret Key</label>
<div class="col-sm-10">
<input id="Tribe-S3SecretKey" data-bind="value: $data.S3SecretKey" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Tribe-S3BucketName" class="col-sm-2 col-form-label">Bucket Name</label>
<div class="col-sm-10">
<input id="Tribe-S3BucketName" data-bind="value: $data.S3BucketName" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Tribe-S3KeyPrefix" class="col-sm-2 col-form-label">Key Prefix</label>
<div class="col-sm-10">
<input id="Tribe-S3KeyPrefix" data-bind="value: $data.S3KeyPrefix" type="text" class="form-control">
</div>
</div>
</fieldset>
</form>
</div>
<div class="tab-pane fade" id="tab-travel-data">
<form data-bind="with: TravelDataConfig">
<fieldset>
<legend>Main Options</legend>
<div class="form-group row">
<label for="Travel-BackupMode" class="col-sm-2 col-form-label">Backup Mode</label>
<div class="col-sm-10">
<select id="Travel-BackupMode" data-bind="options: ['off', 'on'], value: $data.BackupMode" class="form-control"></select>
</div>
</div>
<div class="form-group row">
<label for="Travel-MaxFileHistory" class="col-sm-2 col-form-label">Max File History</label>
<div class="col-sm-10">
<input id="Travel-MaxFileHistory" data-bind="numericValue: $data.MaxFileHistory" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Travel-HttpBackupURL" class="col-sm-2 col-form-label">Backup URL</label>
<div class="col-sm-10">
<input id="Travel-HttpBackupURL" data-bind="value: $data.HttpBackupURL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Travel-HttpAPIKey" class="col-sm-2 col-form-label">API Key</label>
<div class="col-sm-10">
<input id="Travel-HttpAPIKey" data-bind="value: $data.HttpAPIKey" type="text" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>S3 Options</legend>
<div class="form-group row">
<label for="Travel-S3URL" class="col-sm-2 col-form-label">URL</label>
<div class="col-sm-10">
<input id="Travel-S3URL" data-bind="value: $data.S3URL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Travel-S3AccessKeyId" class="col-sm-2 col-form-label">Access Key ID</label>
<div class="col-sm-10">
<input id="Travel-S3AccessKeyId" data-bind="value: $data.S3AccessKeyId" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Travel-S3SecretKey" class="col-sm-2 col-form-label">Secret Key</label>
<div class="col-sm-10">
<input id="Travel-S3SecretKey" data-bind="value: $data.S3SecretKey" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Travel-S3BucketName" class="col-sm-2 col-form-label">Bucket Name</label>
<div class="col-sm-10">
<input id="Travel-S3BucketName" data-bind="value: $data.S3BucketName" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Travel-S3KeyPrefix" class="col-sm-2 col-form-label">Key Prefix</label>
<div class="col-sm-10">
<input id="Travel-S3KeyPrefix" data-bind="value: $data.S3KeyPrefix" type="text" class="form-control">
</div>
</div>
</fieldset>
</form>
</div>
<div class="tab-pane fade" id="tab-shared-log">
<form data-bind="with: SharedLogConfig">
<fieldset>
<legend>Main Options</legend>
<div class="form-group row">
<label for="Shared-FetchRateSec" class="col-sm-2 col-form-label">Fetch Rate (Seconds)</label>
<div class="col-sm-10">
<input id="Shared-FetchRateSec" data-bind="numericValue: $data.FetchRateSec" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-SnapshotCleanupSec" class="col-sm-2 col-form-label">Snapshot Cleanup (Seconds)</label>
<div class="col-sm-10">
<input id="Shared-SnapshotCleanupSec" data-bind="numericValue: $data.SnapshotCleanupSec" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-SnapshotRateSec" class="col-sm-2 col-form-label">Snapshot Rate (Seconds)</label>
<div class="col-sm-10">
<input id="Shared-SnapshotRateSec" data-bind="numericValue: $data.SnapshotRateSec" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-SnapshotExpirationHours" class="col-sm-2 col-form-label">Snapshot Expiration (Hours)</label>
<div class="col-sm-10">
<input id="Shared-SnapshotExpirationHours" data-bind="numericValue: $data.SnapshotExpirationHours" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-BackupMode" class="col-sm-2 col-form-label">Backup Mode</label>
<div class="col-sm-10">
<select id="Shared-BackupMode" data-bind="options: ['off', 'on'], value: $data.BackupMode" class="form-control"></select>
</div>
</div>
<div class="form-group row">
<label for="Shared-MaxFileHistory" class="col-sm-2 col-form-label">Max File History</label>
<div class="col-sm-10">
<input id="Shared-MaxFileHistory" data-bind="numericValue: $data.MaxFileHistory" type="number" step="1" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-HttpBackupURL" class="col-sm-2 col-form-label">Backup URL</label>
<div class="col-sm-10">
<input id="Shared-HttpBackupURL" data-bind="value: $data.HttpBackupURL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-HttpAPIKey" class="col-sm-2 col-form-label">API Key</label>
<div class="col-sm-10">
<input id="Shared-HttpAPIKey" data-bind="value: $data.HttpAPIKey" type="text" class="form-control">
</div>
</div>
</fieldset>
<fieldset>
<legend>S3 Options</legend>
<div class="form-group row">
<label for="Shared-S3URL" class="col-sm-2 col-form-label">URL</label>
<div class="col-sm-10">
<input id="Shared-S3URL" data-bind="value: $data.S3URL" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-S3AccessKeyId" class="col-sm-2 col-form-label">Access Key ID</label>
<div class="col-sm-10">
<input id="Shared-S3AccessKeyId" data-bind="value: $data.S3AccessKeyId" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-S3SecretKey" class="col-sm-2 col-form-label">Secret Key</label>
<div class="col-sm-10">
<input id="Shared-S3SecretKey" data-bind="value: $data.S3SecretKey" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-S3BucketName" class="col-sm-2 col-form-label">Bucket Name</label>
<div class="col-sm-10">
<input id="Shared-S3BucketName" data-bind="value: $data.S3BucketName" type="text" class="form-control">
</div>
</div>
<div class="form-group row">
<label for="Shared-S3KeyPrefix" class="col-sm-2 col-form-label">Key Prefix</label>
<div class="col-sm-10">
<input id="Shared-S3KeyPrefix" data-bind="value: $data.S3KeyPrefix" type="text" class="form-control">
</div>
</div>
</fieldset>
</form>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" <script src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.15.0/esm/popper.min.js" <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha256-3Iu0zFU6cPS92RSC3Pe4DBwjIV/9XKyzYTqKZzly6A8=" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.5/ace.js"
integrity="sha256-5Xkhn3k/1rbXB+Q/DX/2RuAtaB4dRRyQvMs83prFjpM="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.0/knockout-min.js"
integrity="sha256-Tjl7WVgF1hgGMgUKZZfzmxOrtoSf8qltZ9wMujjGNQk="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js"
integrity="sha256-gaGobNk1cPaj0abcVmyZxUYgCPsueCJwN5i4DjC4BS0="
crossorigin="anonymous"></script>
<script src="js/main.js"></script>
</body> </body>
</html> </html>

View file

@ -0,0 +1,156 @@
// True numeric value binding
ko.bindingHandlers.numericValue = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var underlyingObservable = valueAccessor();
var interceptor = ko.dependentObservable({
read: underlyingObservable,
write: function (value) {
if (!isNaN(value)) {
underlyingObservable(parseFloat(value));
}
}
});
ko.bindingHandlers.value.init(element, function () {
return interceptor
}, allBindingsAccessor, viewModel, bindingContext);
},
update: ko.bindingHandlers.value.update
};
var editor = ace.edit("config-editor");
editor.setTheme("ace/theme/monokai");
editor.session.setMode("ace/mode/javascript");
var viewmodel = ko.mapping.fromJS({
// Server Argument Section
"BaseServerArgs": "",
"AdditionalCmdLineParams": "",
// World Options
"WorldFriendlyName": "New Server",
"WorldAtlasId": "",
"WorldAtlasPassword": "",
"ModIDs": "",
// Grid Options
"gridSize": 1000,
"totalGridsX": 1,
"totalGridsY": 1,
"coordsScaling": 0.000000000001,
"globalTransitionMinZ": 0.0,
// Image Paths
"backgroundImgPath": "image.png",
"discoZonesImagePath": "image.png",
// URL Options
"MetaWorldURL": "",
"AuthListURL": "",
"MapImageURL": "",
// Time Options
"Day0": "2019-01-09 20:28:56",
"bUseUTCTime": false,
"columnUTCOffset": 0.0,
"lastImageOverride": "0001-01-01T00:00:00",
// Info Options
"showServerInfo": false,
"showDiscoZoneInfo": false,
"showShipPathsInfo": false,
"showIslandNames": false,
"showLines": false,
"showBackground": false,
// S3 Options
"LocalS3URL": "",
"LocalS3AccessKeyId": "",
"LocalS3SecretKey": "",
"LocalS3BucketName": "",
"LocalS3Region": "",
// Unsorted...
"globalGameplaySetup": "",
"shipPathsIdGenerator": 1,
"idGenerator": 127,
"regionsIdGenerator": 0,
// Tribe Log Tab
"TribeLogConfig": {
// Main Options
"MaxRedisEntries": 1000,
"BackupMode": "off",
"MaxFileHistory": 10,
"HttpBackupURL": "",
"HttpAPIKey": "",
//S3 Options
"S3URL": "",
"S3AccessKeyId": "",
"S3SecretKey": "",
"S3BucketName": "",
"S3KeyPrefix": ""
},
// Travel Data Tab
"TravelDataConfig": {
// Main Options
"BackupMode": "off",
"MaxFileHistory": 10,
"HttpBackupURL": "",
"HttpAPIKey": "",
//S3 Options
"S3URL": "",
"S3AccessKeyId": "",
"S3SecretKey": "",
"S3BucketName": "",
"S3KeyPrefix": ""
},
"SharedLogConfig": {
"FetchRateSec": 60,
"SnapshotCleanupSec": 900,
"SnapshotRateSec": 1800,
"SnapshotExpirationHours": 48,
"BackupMode": "off",
"MaxFileHistory": 10,
"HttpBackupURL": "",
"HttpAPIKey": "",
"S3URL": "",
"S3AccessKeyId": "",
"S3SecretKey": "",
"S3BucketName": "",
"S3KeyPrefix": ""
},
"DatabaseConnections": [],
"servers": [],
"spawnerOverrideTemplates": [],
"shipPaths": [],
"serverTemplates": [],
// ?!?!
"OverrideShooterGameModeDefaultGameIni": {}
});
ko.applyBindings(viewmodel);
updateEditor();
ko.computed(function () {
return ko.toJSON(viewmodel);
}).subscribe(function () {
updateEditor();
});
editor.on("change", function () {
setTimeout(function () {
ko.mapping.fromJSON(editor.getValue(), viewmodel);
}, 100);
});
function updateEditor() {
var interim = ko.mapping.toJS(viewmodel);
interim.coordsScaling = Number(interim.coordsScaling).toFixed(12);
editor.setValue(ko.toJSON(interim, null, 2));
}