Whatโs up Gliders!
Thought Iโd share my latest free tutorial for those that might be interested.
๐๐ฏ๐ผ๐๐ ๐ง๐ต๐ถ๐ ๐ง๐๐๐ผ๐ฟ๐ถ๐ฎ๐น
This tutorial is an in-depth, step-by-step, tutorial that shows you how to build an advanced booking app from scratch in Glide.
๐ฆ๐๐ฎ๐ ๐๐ผ๐ฐ๐๐๐ฒ๐ฑ
Sprinkled throughout this tutorial are countless insider tips, strategies, code snippets and techniques that will take your Glide skills to the next level. So grab a coffee, get comfy, stay focused, and enjoy!
๐ช๐ต๐ผ ๐๐ ๐ง๐ต๐ถ๐ ๐๐ผ๐ฟ
Anyone who wants to level up their skills. This tutorial is long, but because itโs built on a free plan and is step-by-step (with an optional cheat sheet) I encourage all Gliders to give it a shot, no matter what skill level you are
๐จ๐ฝ๐ฑ๐ฎ๐๐ฒ๐
#๐ญ - I have upgraded the JavaScript snippet that is used in the Validation/Template column so it now allows the last slot of the day to be booked, and removes any Timeslots for the current day that have already passed. You can find the updated code below.
#๐ฎ - If you use a time increment larger that 15 minutes (e.g. 30 or 60) you will need to create a filter on the settings page to ensure that the values you can select as the Open/Close time for each day are less than 1440. To do this, just add a the following filter to both choice components: Timeslot/Value is less than 1440.
๐จ๐ฝ๐ฑ๐ฎ๐๐ฒ๐ฑ ๐๐ฎ๐๐ฎ๐๐ฐ๐ฟ๐ถ๐ฝ๐:
const Check = "p7";
if(Check === "NaN"){ return "No date selected."};
const AS = [p1];
const TS = [p2];
const BS = [p3];
const BD = parseInt("p4", 10);
const DS = parseFloat(("p5" / 1440).toFixed(4))
const DE = parseFloat(("p6" / 1440).toFixed(4))
const SD = p7;
const date = new Date();
const [year, month, day] = [date.getFullYear(), date.getMonth() + 1, date.getDate()];
const today = year * 10000 + month * 100 + day;
let currentTimeFraction = SD === today
? (date.getHours() * 60 + date.getMinutes()) / 1440
: 0;
const FrS = BS.filter(s => s >= DS && s <= DE && s >= currentTimeFraction && !TS.includes(s));
const VS = FrS.filter(s => {
const SE = parseFloat(((Math.round(s * 1440) + BD) / 1440).toFixed(4));
return AS.filter(ss => ss >= s && ss < SE).every(ss => FrS.includes(ss));
}).map(s => s.toFixed(4));
return VS.length ? VS.join(",") : "No availability on this date.";
๐ง๐ฒ๐บ๐ฝ๐น๐ฎ๐๐ฒ ๐ฉ๐ฎ๐ฟ๐ถ๐ฎ๐ฏ๐น๐ฒ๐ & ๐ฉ๐ฎ๐น๐๐ฒ๐:
โณ p1 = Validation/All Slots
โณ p2 = Validation/Taken Slots
โณ p3 = Validation/Barber Slots
โณ p4 = Service/Duration
โณ p5 = Trading Hours/Start
โณ p6 = Trading Hours/End
โณ p7 = Booking/Date โ ID