Salesforce में कैलेंडर टाइम स्लॉट पिकर बनाना
Salesforce आपको date picker और एक समय फ़ील्ड देता है, पर चुनने योग्य स्लॉट का ग्रिड नहीं। एक असली Salesforce टाइम स्लॉट पिकर के लिए क्या चाहिए, और उसे खुद बनाए बिना कैसे पाएँ, यहाँ जानें।
टाइम स्लॉट पिकर एक ख़ास इंटरफ़ेस है: एक कैलेंडर जिसमें आप दिन चुनते हैं, और नीचे एक ग्रिड जो उस दिन को बुक करने योग्य अंतरालों में बाँटकर दिखाता है, भरे हुए स्लॉट साफ़ तौर पर अनुपलब्ध। इसे सब पहचानते हैं, क्योंकि इंटरनेट की हर बुकिंग साइट इसी का इस्तेमाल करती है। Salesforce इसे साथ में नहीं देता।
Salesforce असल में क्या देता है
स्टैंडर्ड Date/Time फ़ील्ड एक तारीख इनपुट और समय के ड्रॉपडाउन के रूप में दिखता है। यह एक फ़ॉर्म कंट्रोल है, और इसे पता नहीं कि और क्या बुक है। यूज़र को पहले से भरा स्लॉट चुनने से कुछ नहीं रोकता, क्योंकि फ़ील्ड को दूसरे रिकॉर्ड के होने की जानकारी ही नहीं। वह जाँच बाद में होती है, किसी validation rule या Flow में, जब यूज़र अपना चुनाव कर चुका होता है।
कमी यही है। टाइम स्लॉट पिकर यूज़र के चुनने से पहले मौजूदा रिकॉर्ड query करता है, और केवल खाली समय ही दिखाता है।
असली स्लॉट पिकर को क्या करना होता है
| ज़रूरत | स्टैंडर्ड फ़ील्ड | MultiDatePick के साथ |
|---|---|---|
| दिन को अंतरालों में बाँटना | अंतराल की कोई अवधारणा नहीं | कोई भी अंतराल (आम तौर पर 15, 30 या 60 मिनट) |
| कामकाजी दिन की जानकारी | कोई भी समय मान्य | सबसे पहला और सबसे आख़िरी समय, या हर संसाधन के अपने व्यावसायिक घंटे |
| भरा हुआ समय दिखाना | कुछ नहीं दिखता | मौजूदा बुकिंग ग्रिड पर दिखती हैं |
| एक स्लॉट में कई लोग | संभव नहीं | क्षमता, साथ में बुक बनाम क्षमता का लाइव बैज |
| अलग-अलग दिन अलग समय | एक फ़ील्ड, एक मान | हर तारीख का अलग समय (Allow Different Times Per Date) |
| सेव करते समय टकराव रोकना | केवल कस्टम लॉजिक से | टकराव व्यवहार: अवरुद्ध करें, छोड़ें या अनुमति दें |
इसे खुद बनाना जितना दिखता है उससे ज़्यादा काम क्यों है
दिखाना आसान हिस्सा है। ये वे हिस्से हैं जिनका अनुमान कोई नहीं लगाता:
बुकिंग query करना
कुशलता से, ताकि कोई दो माह का व्यू खोले तो governor limits न टूटें।
ओवरलैप का हिसाब
जैसे ही बुकिंग अलग-अलग अवधि की हो सकती हैं, यह पेचीदा हो जाता है।
टाइमज़ोन
चलाने वाले यूज़र का टाइमज़ोन और रिकॉर्ड का टाइमज़ोन हमेशा एक नहीं होते।
Race condition
दो लोग एक ही पल में एक ही खाली स्लॉट देख रहे हों।
Field-level security
कंपोनेंट को उसी का सम्मान करना होता है जो चलाने वाला यूज़र देख सकता है।
सुगम्यता
क्लिक करने योग्य div का ग्रिड अपने आप कीबोर्ड से नेविगेट नहीं होता।
सबसे ज़्यादा ध्यान सुगम्यता (accessibility) माँगती है। स्लॉट ग्रिड को सही ARIA ग्रिड semantics, arrow key से नेविगेशन, और ऐसी स्थिति चाहिए जो केवल रंग से नहीं दिखे। इन-हाउस बनाए गए ज़्यादातर समाधान यही हिस्सा छोड़ देते हैं, और procurement review में सवाल इसी पर आता है।
स्लॉट को समूहों में बाँटना, ताकि लोग उन्हें आसानी से देख सकें
सुबह 9 से शाम 5 तक का दिन, 15 मिनट के अंतराल पर, 32 स्लॉट होता है। एक लंबी सूची में यह एक दीवार जैसा लगता है। अवधि के अनुसार (सुबह, दोपहर, शाम) बाँटने पर यह तीन छोटे हिस्से बन जाता है। इसका सबसे ज़्यादा फ़ायदा तब होता है जब चुनने वाला फ़ोन पर कोई ग्राहक हो।
जब कैलेंडर की ज़रूरत ही न हो
कभी-कभी तारीख पहले से तय होती है। ऐसे अपॉइंटमेंट के रिकॉर्ड पेज पर जिसकी तारीख पहले से है, मासिक कैलेंडर बेकार है। केवल टाइम ग्रिड (Time Grid Only) कैलेंडर हटा देता है और उस एक तारीख का सिर्फ़ स्लॉट ग्रिड दिखाता है, जो होस्ट रिकॉर्ड के किसी फ़ील्ड से ली जाती है या सीधे सेट की जाती है।
पिकर बनाने वाली सेटिंग्स
हर एक Setup Wizard में एक फ़ील्ड है। यहाँ किसी में कोड नहीं लगता।
| सेटिंग | यह क्या करता है | API नाम |
|---|---|---|
| समय अंतराल, मिनट (Time Slot Interval (Minutes)) | हर स्लॉट की अवधि। कितने भी मिनट। | timeInterval |
| सबसे पहला समय / सबसे आख़िरी समय (Earliest Time / Latest Time) | Dates & Times कंपोनेंट पर ग्रिड जितना समय कवर करता है। | minTime, maxTime |
| व्यावसायिक घंटे आरंभ / अंत फ़ील्ड (Business Hours Start / End Field) | Booking कंपोनेंट पर हर संसाधन के अपने कामकाजी घंटे। | businessHoursStartField |
| क्षमता फ़ील्ड (Capacity Field) | एक संसाधन एक स्लॉट में कितनी बुकिंग ले सकता है। | capacityField |
| अवधि के अनुसार टाइम स्लॉट समूहीकृत करें (Group Time Slots by Period) | सुबह, दोपहर और शाम के हिस्से। | groupTimeSlotsByPeriod |
| टकराव व्यवहार (Conflict Behavior) | सेव करते समय टकराव को अवरुद्ध करें, छोड़ें या अनुमति दें। | conflictBehavior |
| केवल टाइम ग्रिड (Time Grid Only) | पहले से तय एक तारीख के लिए केवल स्लॉट ग्रिड। | timeGridOnly |
लोग अक्सर पूछते हैं
कैलेंडर टाइम स्लॉट पिकर क्या होता है?
एक कैलेंडर जिसमें आप दिन चुनते हैं, और नीचे एक ग्रिड जो उस दिन को बुक करने योग्य अंतरालों में बाँटता है। जो स्लॉट पहले से बुक हैं वे अनुपलब्ध दिखते हैं, ताकि लोग केवल खाली समय ही चुनें।
क्या Salesforce में टाइम स्लॉट पिकर है?
आपके अपने ऑब्जेक्ट के लिए नहीं। स्टैंडर्ड Date/Time फ़ील्ड एक तारीख इनपुट और समय का ड्रॉपडाउन है, और वह दूसरे रिकॉर्ड नहीं देख सकता। MultiDatePick एक टाइम स्लॉट पिकर जोड़ता है जो कैलेंडर लोड होते ही मौजूदा बुकिंग पढ़ता है और केवल खाली समय ही दिखाता है।
क्या टाइम स्लॉट किसी भी अवधि के हो सकते हैं?
हाँ। स्लॉट का अंतराल कितने भी मिनट का हो सकता है। आम तौर पर 15, 30 या 60 मिनट रखे जाते हैं, और 45 मिनट का इंटरव्यू स्लॉट भी उसी तरह काम करता है।
क्या टाइम स्लॉट पिकर जोड़ने के लिए Apex या डेवलपर चाहिए?
नहीं। Setup Wizard कॉन्फ़िगरेशन लिखता है, और Config Name सेट करके कंपोनेंट किसी रिकॉर्ड पेज, ऐप पेज, Experience Cloud साइट या Screen Flow में लग जाता है। कोई कोड नहीं लिखना पड़ता।
आपका Salesforce टाइम स्लॉट पिकर, कॉन्फ़िगर करने के लिए तैयार
लाइव डेमो में एक खाली स्लॉट चुनें, फिर इसे अपने org में लगाने के लिए शुरुआत की गाइड देखें।
- $20/यूज़र/माह, हर फ़ीचर
- 30 दिन का फ़्री ट्रायल, कार्ड नहीं
- 100% नेटिव Salesforce
- कोई Apex नहीं
- जल्द ही Salesforce AppExchange पर