diff --git a/adm/api.php b/adm/api.php
index 807e3ca..d76d902 100644
--- a/adm/api.php
+++ b/adm/api.php
@@ -7,13 +7,7 @@ if ( in_array("cmd", array_keys($_GET)) and $_GET["cmd"] == "get" ) {
} elseif ( $_POST["cmd"] == "put" ) {
$json = base64_decode($_POST["payload"]);
$events = json_decode($json, true);
- for ( $i = 0; $i < count($events); $i++ ) {
- foreach ( array( "hours", "agenda", "minutes" ) as $field ) {
- unset($events[$i][$field]);
- }
- }
- $json = json_encode($events, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
- file_put_contents("dat/events.json", $json);
+ putEvents($events);
$ret = getEvents();
}
print(json_encode($ret));
diff --git a/adm/index.css b/adm/index.css
index 6b93434..34d574a 100644
--- a/adm/index.css
+++ b/adm/index.css
@@ -71,3 +71,9 @@ body { display: none; }
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
}
+textarea {
+ font-family: monospace;
+ background-color: #000000;
+ color: #ffffff;
+ font-weight: bold;
+}
diff --git a/adm/index.js b/adm/index.js
index a0483c2..837cf3a 100755
--- a/adm/index.js
+++ b/adm/index.js
@@ -1,7 +1,8 @@
+var dbg = null;
Vue.createApp({
data: function() {
return { 'events': null
- , 'frm': { 'e': null, 'modal': null }
+ , 'frm': { 'e': null, 'modal': null, 'tab': 'agenda' }
, 'faults': null
, 'fields': { 'coordinates': { 'patterns': [ '^$', '^-?\\d{1,3}(?:\\.\\d+)?,-?\\d{1,3}(?:\\.\\d+)?$' ], 'default': '-27.38621539644283,153.0351689206467' }
, 'start': { 'patterns': [ '^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:?\\d{0,2}$' ], 'default': '' }
@@ -22,6 +23,19 @@ Vue.createApp({
var ret = moment(dt).format(fmt);
return ret;
},
+ tabEnabled: function(e, tab) {
+ var ret = ( Object.keys(this.events[e]).indexOf(tab) >= 0 );
+ return ret;
+ },
+ toggleMD: function(evt) {
+ evt.preventDefault();
+ if ( this.events[this.frm.e][this.frm.tab] == undefined ) {
+ this.events[this.frm.e][this.frm.tab] = '';
+ } else {
+ delete this.events[this.frm.e][this.frm.tab];
+ }
+ this.events = JSON.parse(JSON.stringify(this.events));
+ },
hoursDiff: function(d1, d2) {
return moment(d2).diff(moment(d1), 'hours', true);
},
@@ -125,6 +139,7 @@ Vue.createApp({
}
},
mounted: function() {
+ dbg = this;
this.load();
}
}).mount('#app')
diff --git a/adm/index.php b/adm/index.php
index 6f1424d..08d51fc 100755
--- a/adm/index.php
+++ b/adm/index.php
@@ -80,15 +80,16 @@
-
+
+
+
+
+
diff --git a/dat/live/agenda/20250724.md b/dat/live/agenda/20250724.md
index 0c245e4..e0a73c1 100644
--- a/dat/live/agenda/20250724.md
+++ b/dat/live/agenda/20250724.md
@@ -1,6 +1,10 @@
-- 6.30 pm - Welcome
-- 6.35 pm - Agreement on Agenda Items
-- 6.40 pm - Administrivia (if any)
-- 6.45 pm - Presentation 1: James: Git
-- 7.15 pm - Presentation 2: Terry?: Fossil?
-- 7.45 pm - Loose (Discourse) Threads
+1. 7.30 pm - Welcome
+2. 7.35 pm - Agreement on Agenda Items
+3. 7.40 pm - Administrivia (if any)
+ 1. OK with default Privacy Policy and Terms of Service
+ 2. Logos: JD to use images supplied to attempt producing something in Gimp
+4. 7.45 pm - Presentation 1 - James: Git
+5. 8.45 pm - Loose (Discourse) Threads
+ 1. Meshtastic: Dirk has seen JD's node, but we haven't successfully exchanged messages yet.
+ 5. Next meeting
+ 1. JD to book next three months of meetings. One more at Chermside, then two at Carindale.
diff --git a/dat/live/events.json b/dat/live/events.json
index cfc3e31..d50f780 100755
--- a/dat/live/events.json
+++ b/dat/live/events.json
@@ -1,20 +1,66 @@
[
+ {
+ "coordinates": "-27.50129,153.1027015",
+ "start": "2025-10-23T18:30",
+ "end": "2025-10-23T21:00",
+ "title": "October 2025 In Person Catch Up",
+ "description": "Monthly In Person Get Together",
+ "location": "Carindale Library"
+ },
+ {
+ "coordinates": "",
+ "start": "2025-10-07T19:00",
+ "end": "2025-10-07T21:00",
+ "title": "October 2025 Online Catch Up",
+ "description": "Monthly Online Jitsi Get Together",
+ "location": "Jitsi"
+ },
+ {
+ "coordinates": "-27.50129,153.1027015",
+ "start": "2025-09-25T18:30",
+ "end": "2025-09-25T21:00",
+ "title": "September 2025 In Person Catch Up",
+ "description": "Monthly In Person Get Together",
+ "location": "Carindale Library"
+ },
+ {
+ "coordinates": "",
+ "start": "2025-09-09T19:00",
+ "end": "2025-09-09T21:00",
+ "title": "September 2025 Online Catch Up",
+ "description": "Monthly Online Jitsi Get Together",
+ "location": "Jitsi"
+ },
+ {
+ "coordinates": "-27.38621539644283,153.0351689206467",
+ "start": "2025-08-28T18:30",
+ "end": "2025-08-28T21:00",
+ "title": "August 2025 In Person Catch Up",
+ "description": "Monthly In Person Get Together",
+ "location": "Chermside Library"
+ },
+ {
+ "coordinates": "",
+ "start": "2025-08-12T19:00",
+ "end": "2025-08-12T21:00",
+ "title": "August 2025 Online Catch Up",
+ "description": "Monthly Online Jitsi Get Together",
+ "location": "Jitsi"
+ },
{
"start": "2025-07-24T18:30:00",
"end": "2025-07-24T21:00",
"title": "July 2025 In Person Catch Up",
"description": "Monthly In Person Get Together",
"location": "Chermside Library",
- "coordinates": "-27.38621539644283,153.0351689206467",
- "ctl": "202507241830"
+ "coordinates": "-27.38621539644283,153.0351689206467"
},
{
"start": "2025-07-08T19:00:00",
"end": "2025-07-08T21:00",
"title": "July 2025 Online Catch Up",
"description": "Monthly Online Jitsi Get Together",
- "location": "Jitsi",
- "ctl": "202507081900"
+ "location": "Jitsi"
},
{
"start": "2025-06-19T18:30:00",
@@ -22,15 +68,13 @@
"title": "June 2025 In Person Catch Up",
"description": "Social get-together. Discussion about large language models and meshtastic experiments. Clumsy attempt at adhering to an agenda and taking minutes.",
"location": "Chermside Library",
- "coordinates": "-27.38621539644283,153.0351689206467",
- "ctl": "202506191830"
+ "coordinates": "-27.38621539644283,153.0351689206467"
},
{
"start": "2025-06-10T19:00:00",
"end": "2025-06-10T21:00",
"title": "June 2025 Online Catch Up",
"description": "Getting started with meshtastic",
- "location": "Jitsi",
- "ctl": "202506101900"
+ "location": "Jitsi"
}
-]
+]
\ No newline at end of file
diff --git a/lib/main.php b/lib/main.php
index 92e4059..fa318c6 100755
--- a/lib/main.php
+++ b/lib/main.php
@@ -33,4 +33,32 @@ function getEvents() {
return($entries);
}
+function putEvents($events) {
+ for ( $i = 0; $i < count($events); $i++ ) {
+ $entry = $events[$i];
+ $dt = new DateTime( $entry["start"] );
+ $start = new DateTime($entry["start"]);
+ $datestamp = $dt -> format("Ymd");
+ $files = array( "agenda" => sprintf("dat/agenda/%d.md", $datestamp)
+ , "minutes" => sprintf("dat/minutes/%d.md", $datestamp)
+ );
+ foreach ( $files as $key => $path ) {
+ if ( in_array($key, array_keys($entry)) ) {
+ $fout = fopen($path, "wt");
+ fwrite($fout, $entry[$key]);
+ fclose($fout);
+ } else {
+ if ( file_exists($path) ) {
+ unlink($path);
+ }
+ }
+ }
+ foreach ( array( "ctl", "hours", "agenda", "minutes" ) as $field ) {
+ unset($events[$i][$field]);
+ }
+ }
+ $json = json_encode($events, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
+ file_put_contents("dat/events.json", $json);
+}
+
?>