mirror of
https://github.com/skoelle/PeopleCostCounter.git
synced 2026-09-17 20:00:25 +00:00
Merge pull request #2 from skoelle/feature/organize-variants
Organize variants + add MIT license
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 S. Koelle
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -25,10 +25,14 @@ If you prefer a live-reload development workflow, use an editor extension such a
|
||||
|
||||
## Files of interest
|
||||
|
||||
- `meeting-tracker-variant1.html` — first variant (dark mode, shows annual totals after start)
|
||||
- `meeting-tracker-variant2.html` — light-mode variant (recommended)
|
||||
- `meeting-tracker-variant2-en.html` — English translation of variant 2
|
||||
- `meeting-tracker-variant3.html` — alternate UI experiments
|
||||
- `meeting-tracker-de.html` / `meeting-tracker-en.html` — canonical builds (German / English)
|
||||
|
||||
Experimental variants (moved to `variants/`):
|
||||
|
||||
- `variants/meeting-tracker-variant1.html`
|
||||
- `variants/meeting-tracker-variant2.html`
|
||||
- `variants/meeting-tracker-variant3.html`
|
||||
|
||||
- `meeting-cost-prompt.md` — internal prompt and notes used while developing the tracker
|
||||
|
||||
## Browser & dependencies
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" data-theme="light">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||
<title>Meeting Cost Tracker (EN)</title>
|
||||
<style>
|
||||
/* Minimal styles to match variant2 look */
|
||||
body{font-family:Inter,system-ui,sans-serif;background:#f7f6f2;color:#28251d;padding:40px}
|
||||
.card{max-width:900px;margin:0 auto;background:#fff;padding:20px;border-radius:12px}
|
||||
.label{font-size:12px;color:#6b7280}
|
||||
.big{font-family:monospace;font-size:48px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<h1>Meeting Cost Tracker</h1>
|
||||
<div>
|
||||
<label class="label">Developers present</label>
|
||||
<input id="devCount" type="number" value="5" min="1" />
|
||||
</div>
|
||||
<div>
|
||||
<label class="label">Avg monthly gross salary (€)</label>
|
||||
<input id="avgSalary" type="number" value="5000" min="1" />
|
||||
</div>
|
||||
<div style="margin-top:12px">
|
||||
<button id="startBtn">Start</button>
|
||||
<button id="resetBtn">Reset</button>
|
||||
</div>
|
||||
<hr/>
|
||||
<div>
|
||||
<div class="label">Total cost so far</div>
|
||||
<div id="total" class="big">0,00 €</div>
|
||||
<div class="label">Cost per second: <span id="perSec">0,00 €</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
/* Simple duplicate of variant2 calculations in English */
|
||||
function fmt(n){return n.toLocaleString('de-DE',{minimumFractionDigits:2,maximumFractionDigits:2})+' €'}
|
||||
function calc(){var d=Number(document.getElementById('devCount').value)||1;var s=Number(document.getElementById('avgSalary').value)||5000;var annual=s*12;var withEmp=annual*1.2;var total=withEmp*d;var perSec=total/220/8/3600;return{d:d,s:s,annual:annual,withEmp:withEmp,total:total,perSec:perSec}}
|
||||
var timer=null, acc=0;
|
||||
document.getElementById('startBtn').addEventListener('click',function(){ if(timer) return; var p=calc(); timer=setInterval(function(){acc+=p.perSec;document.getElementById('total').textContent=fmt(acc);},1000); document.getElementById('perSec').textContent=fmt(calc().perSec);});
|
||||
document.getElementById('resetBtn').addEventListener('click',function(){ clearInterval(timer);timer=null;acc=0;document.getElementById('total').textContent=fmt(0);});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Reference in New Issue
Block a user