diff --git a/spec/22/events.yaml b/spec/22/events.yaml index b930a4f..e8e1ca8 100644 --- a/spec/22/events.yaml +++ b/spec/22/events.yaml @@ -21,6 +21,19 @@ - práce - finanční nezávislost +- id: btc-vs-altcoiny + type: panel + name: Bitcoin vs. altcoiny [TBD] + speakers: + - josef-tetek + - david-stancel + duration: 85 + difficulty: beginner + track: btc + tags: + - Bitcoin + - Ethereum + - id: nft-metaverse-panel type: panel name: NFT a Metaverse [TBD] @@ -223,6 +236,8 @@ Aneb příběh o tom, jak jsem mohl být BTC milionář, ale nejsem :) tags: - Bitcoin + fixed: + stage: rajska-zahrada - id: kdyz-byl-bitcoin-jeste-divoky-zapad type: talk @@ -389,6 +404,8 @@ tags: - regulace - daně + fixed: + stage: rajska-zahrada - id: jan-krypto-zmenilo-zabehle-firemni-struktury type: talk @@ -901,6 +918,8 @@ - finanční svoboda - volný trh - soukromí + after: + - eticky-vekslak - id: bezpecnost-workshop type: workshop @@ -1030,8 +1049,6 @@ speakers: [ m0xt, petr-klein, radek-svarz ] duration: 50 difficulty: beginner - after: - - apus tags: - půjčky - DeFi @@ -1046,7 +1063,7 @@ duration: 50 difficulty: beginner after: - - uvod-do-near + - uvod-near tags: - NEAR @@ -1153,6 +1170,8 @@ - Metaverse - NFT - VR + after: + - somnium-space-talk - id: btc-full-node-workshop type: workshop @@ -1634,7 +1653,6 @@ track: zaklady speakers: [ vladimir-pinker ] duration: 30 - difficulty: beginner tags: - letectví @@ -1643,11 +1661,18 @@ name: Žijeme bez fiatu track: zaklady speakers: [ vladimir-pinker ] - duration: 55 - difficulty: beginner + duration: 60 tags: - finanční nezávislost +- id: students-for-liberty-campfire + type: campfire + name: Students for liberty CZ campfire [TBD] + track: spolecnost + speakers: [] + duration: 60 + tags: [] + # Ostatní # ========================== diff --git a/spec/22/photos/speakers/josef-tetek-twitter.jpg b/spec/22/photos/speakers/josef-tetek-twitter.jpg new file mode 100644 index 0000000..fa1b732 Binary files /dev/null and b/spec/22/photos/speakers/josef-tetek-twitter.jpg differ diff --git a/spec/22/speakers.yaml b/spec/22/speakers.yaml index 28d2de3..838046b 100644 --- a/spec/22/speakers.yaml +++ b/spec/22/speakers.yaml @@ -952,3 +952,11 @@ Člen týmu firmy ChainKeepers, spolupracuje na tvorbě lineupu technické sekce brněnského blockchain meetupu. +- id: josef-tetek + name: Josef Tětek + twitter: SatsJoseph + bio: Ekonom s dlouhodobým zájmem o podstatu peněz a bitcoin + orgs: | + Bitcoin ambassador @ [Trezor](https://trezor.io/), přispěvatel do [Bitcoin Magazine](https://bitcoinmagazine.com/) + country: cz + tracks: [ btc ] diff --git a/spec/22/stages.yaml b/spec/22/stages.yaml index 51f997c..0fa099b 100644 --- a/spec/22/stages.yaml +++ b/spec/22/stages.yaml @@ -9,41 +9,41 @@ - id: sloupcovy-sal types: [ talk, lightning-series ] times: - - '1/09:30-13:00' + - '1/09:30-13:30' - '1/14:00-19:00' - - '2/10:00-13:00' + - '2/10:00-13:30' - '2/14:00-18:30' - id: lustrovy-sal types: [ talk, panel, lightning-series ] times: - - '1/09:30-13:00' + - '1/09:30-13:30' - '1/14:00-19:00' - - '2/10:00-13:00' + - '2/10:00-13:30' - '2/14:00-18:30' - id: exit-room types: [ talk ] times: - - '1/09:30-13:00' + - '1/09:30-13:30' - '1/14:00-19:00' - - '2/10:00-13:00' + - '2/10:00-13:30' - '2/14:00-18:30' - id: knihovna types: [ workshop ] times: - - '1/09:30-13:00' + - '1/09:30-13:30' - '1/14:00-19:00' - - '2/10:00-13:00' + - '2/10:00-13:30' - '2/14:00-18:30' - id: white-workshop-room types: [ workshop ] times: - - '1/09:30-13:00' + - '1/09:30-13:30' - '1/14:00-19:00' - - '2/10:00-13:00' + - '2/10:00-13:30' - '2/14:00-18:30' - id: campfire-outdoor diff --git a/utils/plan.js b/utils/plan.js index 9b90a23..b0e2f4c 100644 --- a/utils/plan.js +++ b/utils/plan.js @@ -46,16 +46,16 @@ class UTXOPlanner { stage.timesFull = stage.times.map((st) => this.parsePeriod(st)); } for (const ev of this.events) { - const haveAfter = this.events.find((e) => - e.after === ev.id || e.rightAfter === ev.id - ); - ev.priority = haveAfter ? 10 : (ev.after || ev.rightAfter ? 5 : 0); + const haveAfter = this.events.filter((e) => { + return ((e.after && e.after.includes(ev.id)) || e.rightAfter === ev.id) + }); + ev.priority = haveAfter.length > 0 ? 10 : (ev.after || ev.rightAfter ? 5 : 0); if (ev.type === "lightning-series") { let sarr = []; for ( const sp of this.eventsAll.filter((e) => e.parent === ev.id).map( - (e) => e.speakers + (e) => e.speakers, ) ) { sarr = sarr.concat(sp); @@ -149,6 +149,18 @@ class UTXOPlanner { } eventSlotValidator(ev, slot, stage) { + // check "after" + if (ev.after) { + for (const tId of ev.after) { + const target = this.schedule.find(si => si.event === tId) + if (!target) { + return false; + } + if (target.period.end.getTime() > slot.start.getTime()) { + return false; + } + } + } // check "rightAfter" if (ev.rightAfter) { const target = this.schedule.find((si) => si.event === ev.rightAfter); @@ -210,19 +222,19 @@ class UTXOPlanner { const rand = Math.floor(Math.random() * events.length); const ev = events[rand]; - const availStages = this.stages.filter((st) => st.types.includes(ev.type)) - .map((s) => s.id); - if (availStages.length === 0) { + if (!this.tries[ev.id]) { + this.tries[ev.id] = 0; + } + this.tries[ev.id]++; + if (this.tries[ev.id] > 30) { this.events.splice(this.events.indexOf(ev), 1); this.unscheduled.push(ev.id); return null; } - if (!this.tries[ev.id]) { - this.tries[ev.id] = 0; - } - this.tries[ev.id]++; - if (this.tries[ev.id] > 10) { + const availStages = this.stages.filter((st) => st.types.includes(ev.type)) + .map((s) => s.id); + if (availStages.length === 0) { this.events.splice(this.events.indexOf(ev), 1); this.unscheduled.push(ev.id); return null;