Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
3de757b
number of improvements
indig0fox Oct 5, 2021
b349edd
visual improvements, cloud tiling
indig0fox Oct 9, 2021
0092ceb
enough for now
indig0fox Oct 11, 2021
31f0ed4
more
indig0fox Jan 3, 2022
e993e99
adds generalEvent for custom event announcements in timeline
indig0fox Mar 28, 2022
7fd1d89
fix markers
indig0fox Mar 28, 2022
1ee3b30
fix for sideLogic units
indig0fox Mar 30, 2022
ae09630
small ui changes
indig0fox Mar 30, 2022
e80afaa
changes to new topo modes
indig0fox Apr 8, 2022
0c15566
fixes cloud tiling CORS issues
indig0fox Apr 13, 2022
4f540e7
Merge remote-tracking branch 'origin/main' into ind/leaflet-functiona…
indig0fox Apr 14, 2022
2e7dbd2
now uses https map.json fetch
indig0fox Apr 14, 2022
9897139
crisper entity popup text
indig0fox Apr 14, 2022
e8d662a
hide AI names by default, more work needed
indig0fox Apr 15, 2022
b3cce90
hotfix leaflet.pattern failure
indig0fox Apr 19, 2022
a10d227
minor index cleanup
indig0fox Apr 21, 2022
77d3092
Update static/scripts/localizable.js
indig0fox May 5, 2022
ae41485
Update static/scripts/localizable.js
indig0fox May 5, 2022
35528a4
use cloud tiles as fallback (#44)
a-sync May 7, 2022
4195095
fix vehicle crew display, dont carry d/c deaths to rejoined players
indig0fox Sep 27, 2022
2e0c70c
ignore data and maps files in git
indig0fox Oct 6, 2022
d844668
ensure that groups in left pane are ordered alphabetically
indig0fox Oct 12, 2022
072b1b4
update missing tiles URL
indig0fox Oct 15, 2022
f4f3659
Merge remote-tracking branch 'origin/main' into ind/leaflet-functiona…
indig0fox Oct 18, 2022
15f5b6d
update data and maps ignores
indig0fox Nov 4, 2022
09697e4
fix basemaps control file reference
indig0fox Nov 4, 2022
c397022
addon and extension version in info screen
JessevGool Feb 3, 2023
b913af2
Merge branch 'web-ui' into ind/leaflet-functionality
indig0fox May 24, 2023
5d40851
indig0fox May 26, 2023
8767500
fix loading share URL, fix websiteLogo position
indig0fox May 27, 2023
70e64e6
fix fetch exception for loading without a rendered map
indig0fox Jun 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# IDE
.idea
.vscode

# builds
ocap-webserver.exe
Expand All @@ -8,6 +9,9 @@ ocap-webserver.exe
data.db
static/data
static/images/maps
/data/*.json.gz
/data/*.json
/maps/*/

# logs
ocap.log
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# OCAP Web component

## Configuration

The configuration file is called `setting.json`

**"listen"**: Listener for the web server, change to "0.0.0.0:5000" to listen on all interfaces
**"secret"**: Secret used for authenticate on record upload
**"listen"**: Listener for the web server, change to "0.0.0.0:5000" to listen on all interfaces
**"secret"**: Secret used for authenticate on record upload
**"logger"**: Enables request logging to STDOUT

## Docker
Expand Down Expand Up @@ -58,16 +59,19 @@ docker run --name ocap-web -d \
This Project is based on [Golang](https://golang.org/dl/)

### Windows

```bash
go build -o ocap-webserver.exe ./src/web
go build -o ocap-webserver.exe ./cmd
```

### Linux

```
go build -o ocap-webserver ./src/web
go build -o ocap-webserver ./cmd
```

### Docker

```
docker build -t ocap-webserver .
```
2 changes: 0 additions & 2 deletions data/.gitignore

This file was deleted.

Empty file added data/.gitkeep
Empty file.
2 changes: 0 additions & 2 deletions maps/.gitignore

This file was deleted.

1 change: 1 addition & 0 deletions maps/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{\rtf1}
3 changes: 2 additions & 1 deletion setting.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"customize": {
"websiteURL": "",
"websiteLogo": "",
"websiteLogoSize": "128px",
"disableKillCount": false
}
}
}
11 changes: 11 additions & 0 deletions setting.json.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"listen": "127.0.0.1:5000",
"secret": "same-secret",
"logger": true,
"customize": {
"websiteURL": "",
"websiteLogo": "",
"websiteLogoSize": "128px",
"disableKillCount": false
}
}
271 changes: 149 additions & 122 deletions static/index.html
Original file line number Diff line number Diff line change
@@ -1,129 +1,156 @@
<!DOCTYPE html>
<html>
<head>
<title>OCAP</title>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<link rel="stylesheet" href="leaflet/leaflet.css" />
<link rel="stylesheet" href="style/common.css" />
<link rel="stylesheet" href="style/index.css" />
<link rel="icon" type="img/png" href="images/favicon.png" />
<script src="leaflet/leaflet-src.js"></script>
<script src="leaflet/leaflet.rotatedMarker.js"></script>
<script src="leaflet/leaflet.svgIcon.js"></script>
<script src="leaflet/leaflet.pattern.js"></script>
<script src="leaflet/L.Icon.Pulse.js"></script>
<link rel="stylesheet" href="leaflet/L.Icon.Pulse.css" />
<script src="scripts/ocap.marker.js"></script>
<script src="scripts/ocap.entity.js"></script>
<script src="scripts/ocap.event.js"></script>
<script src="scripts/ocap.group.js"></script>
<script src="scripts/ocap.groups.js"></script>
<script src="scripts/ocap.vehicle.js"></script>
<script src="scripts/ocap.unit.js"></script>
<script src="scripts/ocap.ui.js"></script>
<script src="scripts/ocap.js"></script>
</head>
<body>
<div id="container">
<div id="map"></div>
<div id="topPanel">
<div id="shareButton" class="bold button"></div>
<div id="aboutButton" class="bold button">i</div>
<div id="statsButton" class="bold button hiddenExperimental">S</div>
<span id="missionName" class="medium"></span>
</div>
<div id="leftPanel">
<div class="title bold" data-lb="players"></div>
<div class="panelContent">
<ul id="listWest"></ul>
<ul id="listEast"></ul>
<ul id="listGuer"></ul>
<ul id="listCiv"></ul>
</div>
<div id="controlSide">
<div id="sideWest" class="blufor sideTitle">BLUFOR</div>
<div id="sideEast" class="opfor sideTitle">OPFOR</div>
<div id="sideGuer" class="ind sideTitle">IND</div>
<div id="sideCiv" class="civ sideTitle">CIV</div>
</div>
</div>
<div id="rightPanel">
<div class="title bold" data-lb="events"></div>
<div class="filterBox">
<div id="filterHitEventsButton" class="filterHit"></div>
<div id="filterConnectEventsButton" class="filterConnect"></div>
<input type="text" id="filterEventsInput" placeholder="" data-lb="filter"/>
</div>
<div class="panelContent">
<ul id="eventList"></ul>
</div>
</div>
<div class="extraInfoBox">
<div class="extraInfoBoxContent">
<span class="bold">Cursor target: </span><span id="cursorTargetBox">None</span>
</div>
</div>
<div id="bottomPanel">
<div id="frameSliderContainer">
<div id="eventTimeline"></div>
<div class="frameSliderContainer2">
<input type="range" id="frameSlider" min="0" value="0">
</div>
</div>
<div class="panelContent">
<div id="playPauseButton" onclick="playPause()">
</div>
<div id="timecodeContainer" class="medium">
<span id="missionCurTime">0:00:00</span>
<span>/</span>
<span id="missionEndTime">0:00:00</span>
</div>
<div class="fullscreenButton" onclick="goFullscreen()"></div>
<div id="playbackSpeedSliderContainer">
<span id="playbackSpeedVal">10x</span>
<input type="range" id="playbackSpeedSlider" />
</div>
<span id="toggleFirelines"></span>
<span id="toggleNickname"></span>
<span id="toggleMapMarker"></span>
<span class="a3-theme select toggleTime">
<select id="toggleTime"></select>
</span>
</div>
</div>
</div>
<head>
<title>OCAP</title>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<link rel="stylesheet" href="leaflet/leaflet.css" />
<link rel="stylesheet" href="style/common.css" />
<link rel="stylesheet" href="style/index.css" />
<link rel="icon" type="img/png" href="images/favicon.png" />
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="leaflet/leaflet.js"></script>
<!-- <script src="https://unpkg.com/leaflet@0.7.0/dist/leaflet.js"></script> -->
<script src="leaflet/leaflet.rotatedMarker.js"></script>
<script src="leaflet/leaflet.svgIcon.js"></script>
<script src="leaflet/leaflet.pattern.js"></script>
<link rel="stylesheet" href="leaflet/L.Icon.Pulse.css" />
<script src="leaflet/L.Icon.Pulse.js"></script>
<link rel="stylesheet" href="leaflet/L.Control.Zoominfo.css" />
<script src="leaflet/L.Control.Zoominfo.js"></script>
<link rel="stylesheet" href="leaflet/L.Control.Basemaps.css" />
<script src="leaflet/L.Control.Basemaps.js"></script>
<script src="scripts/ocap.marker.js"></script>
<script src="scripts/ocap.entity.js"></script>
<script src="scripts/ocap.event.js"></script>
<script src="scripts/ocap.group.js"></script>
<script src="scripts/ocap.groups.js"></script>
<script src="scripts/ocap.vehicle.js"></script>
<script src="scripts/ocap.unit.js"></script>
<script src="scripts/ocap.ui.js"></script>
<script src="scripts/ocap.js"></script>
</head>
<body>
<div id="container">
<div id="map"></div>
<div id="topPanel">
<div id="shareButton" class="bold button"></div>
<div id="aboutButton" class="bold button">i</div>
<div id="statsButton" class="bold button hiddenExperimental">S</div>
<span id="missionName" class="medium"></span>
</div>
<div id="leftPanel">
<div class="title bold" data-lb="players"></div>
<div class="panelContent">
<ul id="listWest"></ul>
<ul id="listEast"></ul>
<ul id="listGuer"></ul>
<ul id="listCiv"></ul>
</div>
<div id="controlSide">
<div id="sideWest" class="blufor sideTitle">BLUFOR</div>
<div id="sideEast" class="opfor sideTitle">OPFOR</div>
<div id="sideGuer" class="ind sideTitle">IND</div>
<div id="sideCiv" class="civ sideTitle">CIV</div>
</div>
</div>
<div id="rightPanel">
<div class="title bold" data-lb="events"></div>
<div class="filterBox">
<div id="filterHitEventsButton" class="filterHit"></div>
<div id="filterConnectEventsButton" class="filterConnect"></div>
<input
type="text"
id="filterEventsInput"
placeholder=""
data-lb="filter"
/>
</div>
<div class="panelContent">
<ul id="eventList"></ul>
</div>
</div>
<div class="extraInfoBox">
<div class="extraInfoBoxContent">
<span class="bold">Cursor target: </span
><span id="cursorTargetBox">None</span>
</div>
</div>
<div id="bottomPanel">
<div id="frameSliderContainer">
<div id="eventTimeline"></div>
<div class="frameSliderContainer2">
<input type="range" id="frameSlider" min="0" value="0" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In html a / at the end of an element is not needed, its only part of the xhtml specification

</div>
</div>
<div class="panelContent">
<div id="playPauseButton" onclick="playPause()"></div>
<div id="timecodeContainer" class="medium">
<span id="missionCurTime">0:00:00</span>
<span>/</span>
<span id="missionEndTime">0:00:00</span>
</div>
<div class="fullscreenButton" onclick="goFullscreen()"></div>
<div id="playbackSpeedSliderContainer">
<span id="playbackSpeedVal">10x</span>
<input type="range" id="playbackSpeedSlider" />
</div>
<span id="toggleFirelines"></span>
<span id="toggleNickname"></span>
<span id="toggleMapMarker"></span>
<span class="a3-theme select toggleTime">
<select id="toggleTime"></select>
</span>
</div>
</div>
</div>

<div id="modal" class="modal">
<div class="modalContent">
<div id="modalHeader" class="modalHeader medium">Header</div>
<div id="modalFilter" class="modalFilter">
<span class="a3-theme select filterTagGameInput">
<select id="filterTagGameInput"></select>
</span>
<input type="text" id="filterGameInput" class="a3-theme input" placeholder="" data-lb="name_missions" />
<input type="date" id="calendar1" class="a3-theme input" value="2017-06-01">
<input type="date" id="calendar2" class="a3-theme input" value="2099-12-12">
<div id="filterSubmit"></div>
</div>
<div id="modalBody" class="modalBody">Body</div>
<div id="modalButtons" class="modalButtons"></div>
</div>
</div>
<div id="modal" class="modal">
<div class="modalContent">
<div id="modalHeader" class="modalHeader medium">Header</div>
<div id="modalFilter" class="modalFilter">
<span class="a3-theme select filterTagGameInput">
<select id="filterTagGameInput"></select>
</span>
<input
type="text"
id="filterGameInput"
class="a3-theme input"
placeholder=""
data-lb="name_missions"
/>
<input
type="date"
id="calendar1"
class="a3-theme input"
value="2017-06-01"
/>
<input
type="date"
id="calendar2"
class="a3-theme input"
value="2099-12-12"
/>
<div id="filterSubmit"></div>
</div>
<div id="modalBody" class="modalBody">Body</div>
<div id="modalButtons" class="modalButtons"></div>
</div>
</div>

<div id="stats" class="modalDialog closed">
<div class="dialogBase">
<div id="statsHeader" class="dialogHeader">Statistics</div>
<div id="statsBody" class="dialogBody">Body</div>
<div id="statsFooter" class="dialogFooter"></div>
</div>
</div>
<div id="stats" class="modalDialog closed">
<div class="dialogBase">
<div id="statsHeader" class="dialogHeader">Statistics</div>
<div id="statsBody" class="dialogBody">Body</div>
<div id="statsFooter" class="dialogFooter"></div>
</div>
</div>

<div id="hint" class="hint">Test popup</div>
<div id="hint" class="hint">Test popup</div>

<script src="scripts/localizable.js"></script>
<script>
initOCAP();
</script>
</body>
<script src="scripts/localizable.js"></script>
<script>
initOCAP();
</script>
</body>
</html>
28 changes: 28 additions & 0 deletions static/leaflet/L.Control.Basemaps.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
.basemaps {
padding: 4px;
}
.basemaps.closed .basemap {
display: none;
}
.basemaps.closed .basemap.alt {
display: inline-block;
}
.basemaps.closed .basemap.alt h4 {
display: none;
}

.basemap {
display: inline-block; /* todo: flexbox? */
cursor: pointer;
}
.basemap.active img {
border-color: orange;
box-shadow: 2px 2px 4px #000;
}
.basemap img {
width: 64px;
border: 2px solid #FFF;
margin: 0 2px;
border-radius: 40px;
box-shadow: 0 1px 5px rgba(0,0,0,0.65)
}
1 change: 1 addition & 0 deletions static/leaflet/L.Control.Basemaps.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading