Օրացույց — հանդիպումներ, հիշեցումներ և ժամանակ, որը մարդիկ փակել են իրենց համար
Պարզ բառերով. մեկ ընդհանուր ամիս ամբողջ թիմի համար։ Դուք դնում եք հանդիպումներ և զանգեր, հրավիրում մարդկանց կամ ամբողջ բաժիններ, տեսնում եք, թե ով է ազատ՝ դեռ ժամը չընտրած, և փակում եք ձեր ժամերը, որպեսզի դրանց վրա ոչ ոքի չնշանակեն։
Ամեն ինչ հենվում է երկու կանոնի վրա, և երկուսն էլ այն մասին են, ինչը մարդկանց չի հաղորդվում.
Դուք տեսնում եք իրադարձությունը միայն եթե այն բաց է թիմի համար կամ դուք դրա մասնակիցն եք։
Զբաղվածությունը հաղորդում է, որ մարդը զբաղված է, և երբեք՝ ինչով։
Երկրորդ կանոնն է պատճառը, որ մասնակիցների ցանկում վառվում է կարմիր կետ, ոչ թե վերնագիր։ Հանդիպում նշանակելու համար պետք է իմանալ, որ գործընկերը զբաղված է ժամը երեքին. իմանալ, որ նա բժշկի մոտ է, պետք չէ։
Օրացույցը (/team/calendar)
Ամսվա/շաբաթվա/օրվա տեսքեր ամեն այն իրադարձության համար, որը կարող ես տեսնել (տես Ով ինչ է տեսնում ստորև) — ստեղծում, տեղափոխում և երկարության փոփոխում քաշելով (ճշգրիտ շարժումների համար տես Ինչպես... ստորև)։ Ստորև բերված իրադարձությունների վեց տեսակները, տեսանելիության կանոնները, կրկնությունը, հիշեցումները և զբաղվածությունը վերաբերում են հենց այս էկրանին. այս վերնագիրը գոյություն ունի, որպեսզի վերևի հելփերի Տեխնիկական նկարագրություն հղումն ունենա իր սեփական նպատակակետը, ոչ թե պարզապես կրկնի ստորևինը։
Ինչպես...
Օրացույցը
Ավելացնել իրադարձություն — + կոճակը վերևի աջ անկյունում; կամ մկնիկը բերեք դատարկ վանդակի վրա և սեղմեք գունատ +-ը, որ կհայտնվի նրա անկյունում; կամ քաշեք դատարկ ժամանակի վրայով՝ այդպես տևողությունը սահմանվում է միանգամից։
Դատարկ տեղի սովորական սեղմումը միտումնավոր ոչինչ չի անում։ Նախկինում այն բացում էր ձևը, ուստի դա անում էր ցանկացած պատահական սեղմում — այդ թվում այն, որով դուք փակում եք բացված քարտը։ +-ին պետք է կպնել, ուստի պատահաբար ոչինչ չի բացվի։ Հպումային էկրանին սավառնում չկա — այնտեղ օգտվեք էջի անկյունի +-ից։
Տեսնել, թե ինչ իրադարձություն է — մկնիկը բերեք վրան՝ կհայտնվի կարճ տեղեկություն. սեղմեք՝ կբացվի քարտը Խմբագրել և Ջնջել կոճակներով։ Ձևը բացվում է միայն կոճակով, ուստի «պարզապես նայելը» երբեք չի վերածվում պատահական փոփոխության։
Տեղափոխել — քաշեք։ Ներքևի եզրից՝ երկարացնել կամ կարճացնել։ Երկուսն էլ պահվում են անմիջապես, իսկ եթե սերվերը մերժի՝ իրադարձությունը վերադառնում է տեղը հաղորդագրությամբ։
Փակել ձեր ժամանակը — կողպեքի կոճակը +-ի կողքին։ Դրա համար իրավունքներ պետք չեն, և ուրիշ ոչ ոք այդ ժամանակը չի խմբագրի — տես Փակ ժամանակ։
Անցնել այլ ամսաթվի — սեղմեք ժամանակահատվածի վերնագիրը («Օգոստոս 2026»)։ Կբացվի փոքր օրացույց՝ ամսվա և տարվա ընտրությամբ. հաջորդ տարվա նոյեմբերը երկու սեղմում է, ոչ թե սլաքի քսան սեղմում։ Կողքի սլաքները քայլում են ըստ ժամանակահատվածի, իսկ Այսօր կոճակը վերադարձնում է այսօր։
Գտնել — որոնման տողը զտում է արդեն բեռնվածը վերնագրով։ Ձագարը — ըստ տեսակի, մարդու և բաժնի։
Պատասխանել հրավերին — սեղմեք իրադարձությունը և ընտրեք Գնում եմ, Հնարավոր է կամ Չեմ գնում հենց քարտում։ Խմբագրելու իրավունք դրա համար պետք չէ, իսկ ծանուցումը տանում է ուղիղ դեպի այն։
Տեսնել, ինչն է սպասում ձեր պատասխանին — շերտը տեսքի փոխարկիչի տակ։ Այն ամենը, ինչին ձեզ հրավիրել են և դուք դեռ չեք պատասխանել, յուրաքանչյուր տողում՝ երեք պատասխանի կոճակ։ Պատասխանեցիք — տողը հեռանում է։ Երբ սպասելու բան չկա, շերտ չկա։
Դա ձեր մուտքայիններն են, ոչ թե ցանցի կտրվածքը։ Շերտը կախված չէ նրանից, ինչ այս պահին էկրանին է — ո՛չ տեսքից, ո՛չ ընտրված ամսից, ո՛չ որոնումից, ո՛չ զտիչներից։ Տողի վրա սեղմելը օրացույցը տանում է դեպի իրադարձությունը և բացում է դրա քարտը, նույնիսկ եթե այդ ամսաթիվն այս պահին չի երևում։
Հրավերը հանում է միայն պատասխանը, ոչ թե բացելը։ Զանգակը շարունակում է հաշվել հրավերը, որքան էլ որ դուք այն բացեք — հանեք այն պատասխանելով այստեղից, իրադարձության քարտից կամ ցանկացած այլ տեղից։ Մնացած բոլոր ծանուցումները հեռանում են կարդալուն պես. հրավերը միակն է, որ պատասխան է խնդրում։
Հրավերի մասին ծանուցումը բացում է Օրակարգը, ոչ թե իրադարձության քարտը։ Այն օրացույցը տեղափոխում է իրադարձության ամսաթվին և ընդգծում է դրա տողը շերտում, միտումնավոր չբացելով քարտը — դա կտար նույն հարցը երկրորդ անգամ։ Պատասխանեք հենց շերտում; իրադարձության մանրամասները մեկ սեղմումի հեռավորության վրա են՝ հենց այդ տողի վրա։ Օրացույցի մնացած ծանուցումները (իրադարձությունը փոխվել է, չեղարկվել է, ինչ-որ մեկը պատասխանել է, հիշեցում) դեռ բացում են քարտը, որովհետև նրանցից ոչ մեկը շերտում տող չունի։
Մեկ մարդու ժամանակացույցը
Տեսնել, ինչով է մարդը զբաղված — Թիմի կառավարում → Աշխատակիցներ → բացեք մարդուն → Ժամանակացույց։ Այնտեղ մոտակա իրադարձություններն են և ժամերը, որ նա փակել է։
Հանդիպում նշանակել նրան — նույն ներդիրի Նշանակել հանդիպում կոճակը բացում է ձևը՝ այդ մարդն արդեն հրավիրված։
Վեց տեսակ
Յուրաքանչյուրն ունի իր գույնը և իր պատկերակը։ Գույնը ամիսը դարձնում է ընթեռնելի մեկ հայացքից, պատկերակը ճշգրիտ անվանում է տեսակը և պահպանում է տարբերությունը նրանց համար, ովքեր երկու երանգ չեն զանազանում։
| Տեսակ | Ինչի համար է | Այլ կերպ է վարվում |
|---|---|---|
| Զանգ | հեռավոր խոսակցություն | ոչ |
| Հանդիպում | մարդիկ սենյակում կամ նշանակված քննարկում | ոչ |
| Հիշեցում | «հանձնել հաշվետվությունը վեցին» — կետ ժամանակի մեջ | այո — տես ստորև |
| Տոն | բոլորի համար նշված օր | ոչ |
| Այլ | մնացած ամեն ինչ | ոչ |
| Փակ ժամանակ | ձեր սեփական փակ ժամերը | այո — տես Փակ ժամանակ |
Վերնագրի տողի հուշումը (ձևերի պատկերակը, տեսքի փոխարկիչի կողքին) թվարկում է բոլոր վեցը իրենց գույներով։
Հիշեցումը կետ է, ոչ թե հատված
Հիշեցում ընտրելիս ձևից անհետանում են ավարտի ժամը և Ամբողջ օրը փոխարկիչը. ժամանակի կետն ունի ոչ մեկը, ոչ մյուսը։ Այստեղից բխում է.
- այն երբեք ոչ մեկին զբաղված չի դարձնում — վերջնաժամկետը, որ բոլորի կեսօրը արգելափակի, կզրկեր զբաղվածության ողջ գաղափարը իմաստից;
- այն հնարավոր չէ ձգել ժամանակի ցանցում — եզրից քաշելով դուք լուռ կետը կվերածեիք հատվածի;
- ցանցում այն գծվում է որպես նշան իր գծի վրա, ոչ թե բլոկ։
Ցանկացած այլ տեսակ պարտավոր է տևել զրոյից ավելի. ձևը չի առաջարկի ավարտ, որը հավասար է սկզբին կամ ավելի վաղ։
Ով ինչ է տեսնում
Երկու մակարդակ, սահմանվում են յուրաքանչյուր իրադարձության վրա.
- Ամբողջ թիմը — բոլորը, ում մոտ կա
workspace:calendar:read, տեսնում են վերնագիրը և մանրամասները։ - Միայն մասնակիցները — մնացած բոլորն ընդհանրապես չեն տեսնում իրադարձությունը։ Ոչ մոխրագույն ուղղանկյուն, ոչ անանուն «զբաղված» — այն պարզապես չկա օրացույցում, իսկ հասցեով հարցումը պատասխանում է 404, ոչ թե «արգելված»։ «Գտնվեց, բայց նայել չի կարելի» պատասխանը կհաստատեր, որ իրադարձությունը գոյություն ունի — իսկ հենց դա փակ իրադարձության համար չպետք է արտահոսի։
Միակ տեղը, որտեղ ուրիշի փակ ժամանակը այնուամենայնիվ դրսևորվում է, զբաղվածությունն է, և միայն որպես միջակայք. այդ մասին՝ ստորև։
Զբաղվածություն և սեփական ժամանակի փակում
Քանի դեռ ընտրում եք մասնակիցներին
Ընտրելուն զուգընթաց յուրաքանչյուր մարդու մոտ հայտնվում է նշում ձևում ընթացիկ պատուհանի համար՝ ազատ, զբաղված կամ հավանաբար զբաղված (հրավեր, որին նա չի պատասխանել)։ Փոխում եք ժամը՝ նշումները հետևում են դրան։
Նշումը հաղորդում է, բայց չի արգելում։ Զբաղված ժամանակի վրա գիտակցաբար նշանակելը նորմալ է, իսկ գործիքը, որ դա արգելում է, պարզապես շրջանցում են։ Եթե ինչ-որ մեկը զբաղված է, ցանկի տակ հայտնվում է տող անուններով — և ուրիշ ոչինչ։
Հաստատված բացակայությունը մարդուն զբաղված է դարձնում ամբողջ օրը և երևում է հենց օրացույցում՝ որպես գծավոր ամբողջօրյա շերտ՝ «Աննա — բացակա է»։ Ոչ մեկը չի ասում պատճառը՝ ոչ արձակուրդ, ոչ հիվանդություն։ Սեղմեք շերտի վրա՝ Բացակայություններ էջը բացելու համար։
Այդ նշումները գծելու համար հարթակը փոխանցում է միջակայքերի ցանկ՝ սկիզբ, ավարտ և վստահության աստիճան։ Ոչ վերնագիր, ոչ տեսակ, ոչ նույնիսկ իրադարձության նույնացուցիչ — նույնացուցիչը զբաղվածությունը կդարձներ ուրիշների փակ իրադարձությունները թվարկելու եղանակ։
Փակ ժամանակ
Կողպեքի կոճակը փակում է ժամեր ձեր համար՝ ճաշ, ճանապարհ, մարզասրահ։ Օրացույցի մնացած ամեն ինչից այն տարբերվում է այսպես.
- ստեղծել կարող է ցանկացած մեկը, առանց
workspace:calendar:manage. սեփական ժամանակը փակելը վարչական գործողություն չէ; - ուրիշ ոչ ոք չի կարող այն խմբագրել կամ ջնջել — նույնիսկ ադմինիստրատորը։ Սա հարթակի ընդհանուր «արտոնյալ դերը կարող է ամեն ինչ» կանոնի միակ գիտակցված բացառությունն է;
- այն չունի մասնակիցներ և չունի բաժիններ;
- այն կարող է կրկնվել շաբաթական՝ ընտրված օրերին;
- դուք որոշում եք՝ թիմին երևա՞ վերնագիրը, թե՞ գործընկերները տեսնեն միայն, որ ժամանակը զբաղված է։
Ցանցում դա ամենահանգիստ բանն է. խամրած և գծավոր, որովհետև դա ուրիշի ժամանակի որոշման համատեքստ է, ոչ թե այն, ինչին պետք է նայել։
Մասնակիցներ և բաժիններ
Դուք հրավիրում եք մարդկանց։ Բաժնի հրավերը կրճատում է. այն ավելացնում է բաժնի աշխատակիցներին և միաժամանակ իրադարձությունը վերագրում է այդ բաժնին։ Մեկ որոշում, երկու հետևանք, ուստի դրանք չեն կարող իրարից շեղվել։
Յուրաքանչյուր ընտրված բաժնի համար դաշտի տակ հայտնվում է բլոկ իր մարդկանցով, բոլորը նշված։ Հանեք նշումը նրանցից, ովքեր պետք չեն. վերնագրում «Բոլորը»-ի փոխարեն կլինի «5 7-ից», իսկ վերնագրի նշատուփը վերադարձնում է բոլորին։ Հեռացնեք բաժինը՝ նրա մարդիկ կհեռանան նրա հետ, բայց կմնան նրանք, ում ավելացրել եք անունով, և նրանք, ովքեր մտնում են մեկ այլ ընտրված բաժնի մեջ։
Ով է նշված՝ հաշվարկվում է նորից իրադարձության յուրաքանչյուր բացման ժամանակ, բաժնի ընթացիկ կազմով։ Մասնակցությունն ինքը պահվում է ըստ մարդու և գրանցվում է հրավերի պահին. այդ պատճառով հաջորդ ամիս բաժին եկած գործընկերը լուռ չի հայտնվի անցյալ ամսվա հանդիպմանը, իսկ հեռացածը դրանից չի անհետանա։
Բաժնի զտիչը գտնում է իրադարձությունները, որոնք վերագրված են դրան։ Իրադարձությունը, որին պարզապես հրավիրել են մարքեթինգից մեկին, մարքեթինգի իրադարձություն չէ։
Պատասխաններ
Յուրաքանչյուր հրավիրված պատասխանում է իր փոխարեն՝ Գնում եմ, Հնարավոր է, Չեմ գնում։ Քարտը ցույց է տալիս հաշիվը և բացվում է՝ ով ինչ է պատասխանել, որպեսզի կազմակերպիչը իմանա, ում ճշտել։ Նույն նշումները կան նաև խմբագրման ձևում՝ անունների կողքին։ Քանի դեռ չի պատասխանել, իրադարձությունը նրա մոտ գծվում է գծավոր. չպատասխանված հրավերը զբաղեցնում է ժամանակը, բայց դեռ պայմանավորվածություն չէ։ Կազմակերպչին հաղորդվում է յուրաքանչյուր պատասխան. ուրիշ ոչ ոքի։
Կրկնվող իրադարձություններ
Կրկնվել կարող է ցանկացած իրադարձություն՝ ամեն օր, ամեն շաբաթ ընտրված օրերին, երկու շաբաթը մեկ կամ ամիսը մեկ՝ ըստ ամսաթվի։ Կրկնությունը միշտ ունի ավարտի ամսաթիվ։
Կրկնվող իրադարձության պահպանումը կամ ջնջումը նախ տալիս է մեկ հարց՝ այս դեպքը թե ամբողջ շարքը.
- այս դեպքը առանձնացնում է այն մնացածից։ Տեղափոխեք, վերանվանեք կամ չեղարկեք՝ շարքը չի ազդվի։
- ամբողջ շարքը փոխում է բոլոր դեպքերը, ներառյալ նախկինում առանձնացվածները՝ այնտեղ, որտեղ փոփոխությունը կիրառելի է։
Ամսական կրկնությունը 31-ին բաց է թողնում ամիսները, որտեղ այդպիսի ամսաթիվ չկա, և չի սահում 28-ի վրա. շարքը, որ լուռ տեղաշարժվում է, ավելի վատ է, քան այն, որ բաց է թողնում։
Կրկնվող իրադարձությունը հնարավոր չէ քաշել։ Ժեստը ստիպված կլիներ ընդհատվել շարքի նույն հարցով, իսկ քաշելը հարցով ընդհատել չի կարելի — փոխարենը ձևն առաջարկում է երկու տարբերակն էլ բացահայտ։
Հիշեցումներ
Իրադարձությունը կարող է ունենալ մինչև հինգ հիշեցում՝ 15 րոպե, մեկ ժամ և մեկ օր առաջ տարբերակներից։ Յուրաքանչյուրը գալիս է առանձին — դրանք միտումնավոր չեն միավորվում մեկի մեջ, որովհետև «15 րոպեից» և «վաղը» տարբեր հաղորդագրություններ են։
Ստանում են իրադարձության բոլոր մասնակիցները։ Հիշեցումը, որի ժամկետն արդեն անցել է իրադարձության ստեղծման պահին, չի ուղարկվում — ուստի սկսվելուց մեկ ժամ առաջ դրված իրադարձությունը միանգամից «մեկ օր առաջ» հիշեցում չի արձակում։
Իրադարձության տեղափոխումը տեղափոխում է նաև նրա հիշեցումները։
Արդյունքներ
Հանդիպումը կարող է ունենալ կարճ գրառում արդյունքի մասին։ Ավելացնել և փոխել այն կարող է ցանկացած մասնակից, ոչ միայն կազմակերպիչը, և միայն այն բանից հետո, երբ իրադարձությունը սկսվել է. դեռ չկայացածի արդյունքը կա՛մ ենթադրություն է, կա՛մ սխալ։
Տեսքեր
- Ամիս — միշտ վեց տող, որպեսզի ցանցը ամիսների միջև անցնելիս չցատկի։ Օրը, որում ամեն ինչ չի տեղավորվում, ավարտվում է ևս N հղումով. այն բացում է այդ օրը օրակարգում, ոչ թե ձգում է վանդակը։
- Շաբաթ և Օր — ժամային ցանց՝ ընթացիկ ժամի գծով։ Քաշելը տեղափոխում է, ներքևի եզրը փոխում է տևողությունը, դատարկ տեղով քաշելը ստեղծում է։
- Օրակարգ — մոտակա 30 օրը ցանկով, ըստ օրերի։
Ընտրված տեսքն ընկնում է էջի հասցեի մեջ, ուստի վերաբեռնումից հետո պահպանվում է, և օրացույցին կարելի է հղում տալ անմիջապես անհրաժեշտ տեսքով։ Ամսաթիվը հասցեի մեջ չի ընկնում. հակառակ դեպքում դիտարկիչի «Հետ» կոճակը կփաթաթեր ամիս առ ամիս՝ օրացույցից դուրս գալու փոխարեն։
Ամբողջ օրվա իրադարձությունները կանգնած են ժամային ցանցի վերևի շերտում։ Ամբողջ օրվա իրադարձությունը ամսաթիվ է, ոչ թե 24-ժամյա միջակայք. օգոստոսի 5-ը մնում է օգոստոսի 5 նաև այլ ժամային գոտու գործընկերոջ համար։
Ժամանակ և ժամային գոտիներ
Յուրաքանչյուր իրադարձություն պահում է պահը և այն գոտին, որտեղ ստեղծվել է — ոչ թե շեղումը. շեղումները հնանում են ամառային ժամանակի և օրենքների պատճառով։ Էկրանին ժամանակը ցուցադրվում է ձեր դիտարկիչի գոտում, և ձևը ժամի դաշտերի տակ նշում է, թե որ գոտին է դա։
Ծանուցումներ
Ձեզ հրավիրել են իրադարձության — երբ ձեզ ավելացրել են որպես մասնակից։ Սեղմումը օրացույցը տանում է այդ իրադարձության ամսաթվին և բացում քարտը հենց նրա վրա — երևում է, թե որտեղ է այն կանգնել, դեռ չպատասխանած։ Պատասխանի կոճակները քարտում են։
Իրադարձությունը, որտեղ դուք մասնակից եք, տեղափոխվել է — ժամը փոխվել է։
Իրադարձությունը, որտեղ դուք մասնակից եք, չեղարկվել է — չեղարկումը նույնպես նորություն է, այդ պատճառով չեղարկված իրադարձությունները պահվում են, այլ ոչ թե ջնջվում։
Ինչ-որ մեկը պատասխանել է ձեր հրավերին — միայն կազմակերպչին։ Յուրաքանչյուր հրավիրվածին հայտնելը, թե ով է գնում, մեկ հանդիպումը կվերածեր շատ ծանուցումների, և ոչ ոք դա չի խնդրել։
Ավելացվել են արդյունքներ — բոլորին, ովքեր եղել են իրադարձության մեջ։
Ձեր իրադարձությունը շուտով սկսվում է — վերևի հիշեցումները։
Հրավերները, փոփոխությունները, չեղարկումները և պատասխանները կարգավորվում են Օրացույցի հրավերներ խմբում. հիշեցումները՝ Իրադարձությունների հիշեցումներ խմբում, առանձին, որովհետև հրավերների հոսքն անջատելը չպետք է լռեցնի այն հանդիպման հիշեցումը, որին դուք արդեն համաձայնվել եք։ Տես Ծանուցումներ։
Մեկ տող մեկ իրադարձության համար, ոչ թե մեկը՝ նրա հետ կատարված ամեն բանի։ Նույն իրադարձության հրավերը, տեղափոխումը և չեղարկումը միաձուլվում են, քանի դեռ տողը չկարդացված է, և դրանում մնում է ամենաթարմը — ուստի կազմակերպիչը, ով հրավիրել է ձեզ և մեկ րոպե անց տեղափոխել հանդիպումը, ձեզ կթողնի «տեղափոխվել է», ոչ թե երկու առանձին տող։ Տես միաձուլում։
Ձեր սեփական գործողությունների մասին ձեզ երբեք չեն ծանուցում։
Իրավունքներ
| Իրավունք | Ինչ է տալիս |
|---|---|
workspace:calendar:read | տեսնել օրացույցը, պատասխանել իր հրավերներին, փակել իր ժամանակը |
workspace:calendar:manage | ստեղծել, խմբագրել և չեղարկել իրադարձություններ, կառավարել դրանց մասնակիցներին |
Երկու բան ոչինչ չի պահանջում՝ պատասխանել հրավերին, որ ձեզ ուղարկել են, և փակել սեփական ժամանակը։ Իսկ մեկ բան :manage-ը գիտակցաբար չի կարող՝ դիպչել ուրիշի փակ ժամանակին։
Մեկ մարդու գրաֆիկը (/team/members/[id]/schedule)
Գրաֆիկ ներդիրը աշխատակցի սեփական էջում (տես Կադրեր → Աշխատակիցներ) — նույն իրադարձությունները, ինչ վերևի ընդհանուր օրացույցում, միայն մեկ մարդու համար զտված, գումարած՝ ժամերը, որոնք նա փակել է իր համար։ Նշանակել հանդիպում այս ներդիրում բացում է նույն իրադարձության ձևը, ինչ հիմնական օրացույցը, արդեն այդ մարդուն որպես մասնակից ավելացրած (տես Ինչպես... ստորև)։
Այս մոդուլի թեստավորում
/team/calendar-ը որևէ ծածկույթ չուներ, ո՛չ միավոր, ո՛չ կենդանի, մինչև 2026-08-12 — սա փուլային ջանք է, ինչպես /team/members-ը, բլոկ առ բլոկ։
- Բլոկ 1 — դիտման ռեժիմներ, URL համաժամացում, և ֆիլտրեր։
apps/portal/pages/team/calendar/index.test.ts-ը (10 միավոր-թեստ) ծածկում է դիտման ռեժիմի URL համաժամացումը (?view=month|week|day|agenda, սխալ արժեքը հետ է գլորվումmonth-ի, ոչ թե խափանվում), յուրաքանչյուր ռեժիմի համար ճշգրիտ հաշվարկված ամսաթվային պատուհանը (agenda՝ 30 օր խարիսխից; week՝ լցված մինչև իրական շաբաթվա սկիզբը; day՝ ուղիղ 1 օր; month՝ լցված մեկ շաբաթ առաջ և երկու շաբաթ հետո, որպեսզի ցանցի բոլոր 6 տողերն միշտ ինչ-որ բան ցուցադրեն, նույնիսկ հարևան ամիսներից), տեսակ/մասնակից/բաժին ֆիլտրերը, որոնցից յուրաքանչյուրն ակտիվացնում է իրական սերվերային վերաբեռնում ճիշտ հարցման պարամետրերով, որոնումը, որը մնում է զուտ հաճախորդային՝ արդեն բեռնված իրադարձությունների վրայով (առանց լրացուցիչ հարցման ամեն ստեղնաշարի սեղմումով), «Միայն իմը»-ը, որը վերաօգտագործում է գոյություն ունեցող մասնակցի ֆիլտրը երկրորդ զուգահեռ դրոշի փոխարեն (ֆիլտրի վահանակում այլ մարդ ընտրելը ինքնաբերաբար հետ է անջատում այն, քանի որ չկա առանձին բան, որը կարող էր հակասել դրան),activeFilterCount-ը, որը միտումնավոր բացառում է որոնումը հաշվարկից, և ամեն ռեժիմի վերնագրի տողը։scripts/e2e/menu/calendar.mjs-ը (7 ստուգում, նոր ֆայլ) հաստատում է, որ դիտման ռեժիմի բոլոր չորս կոճակներն իրականում թարմացնում են URL-ը (ոչ միայն, որ դրանք սեղմելի են), «Միայն իմը»-ի իրական փոխարկման ցիկլը, և որ ֆիլտրի վահանակի Տեսակ/«Նաև հրավիրված» դաշտերը ռենդերվում են իրական տարբերակների ցանկերով (այսինքն՝ անձնակազմի/բաժինների էնդփոինթները, որոնց վրա նրանք կառուցված են, իրականում բեռնվել են)։CalendarView-ը (հիմքում ընկած ցանց/շաբաթ/օր/օրակարգի ռենդերերը) իրական է և ինքնաբավ, արդեն ծածկված է իր սեփականpackages/ui-kit/src/patterns/calendar/CalendarView.test.ts-ով — այստեղ էլ mount է արվում իրական, ոչ թե stub։CalendarEventPopover/CalendarEventDialog/CalendarBlockDialog/CalendarInvitations-ը մնում են stub այս բլոկում — յուրաքանչյուրն իր սեփական երկխոսությունն/ բաղադրիչն է, շրջանակից դուրս մինչև այն բլոկը, որն իրականում կիրառում է այն։ - Բլոկ 2 — իրադարձության մուտացիաներ (ստեղծում, drag-move, ժամանակի փակում), նույն փուլում։ ԵՒս ինը յունիթ-թեստ (ընդամենը 19) ծածկում են
canDrag-ը, որը կախված էworkspace:calendar:manage-ից,onMoveEvent-ի օպտիմիստական թարմացումը և PATCH-ի ձախողման դեպքում հետադարձ գործողությունը,onCreateRange/openCreate/openBlock-ը, որոնք նախապես լրացնում են ճիշտ երկխոսությունը ճիշտ ամսաթվով/միջակայքով,expandDay-ը («+N ևս» հղումը), որը տեղափոխում է խարիսխը և անցնում օրակարգի ռեժիմին, ևopenEvent-ը, որը ճիշտ կերպով կարդում է սերիայի id-ն չիպիeventIdդաշտից, այլ ոչ թե չիպի սեփական render key-ից, որը կրկնվող դեպքի համար հավասար է<eventId>#<index>-ի — այստեղ սխալը կհանգեցներ սխալ սերիայի խմբագրման։calendar.mjs-ը հասավ 10 ստուգման՝ իրական իրադարձության ստեղծում (լրացնում է վերնագիրը, ուղարկում, հաստատում հաջողության toast-ը, ապա հաստատում, որ իրադարձությունն իրականում գտնվում է որոնման միջոցով դրանից հետո — ոչ միայն որ երկխոսությունը փակվեց) և սեփական ժամանակի փակումը block-երկխոսության միջոցով (հաստատում է իր սեփական հաջողության toast-ը)։ Ինքը՝ drag-move-ը, միտումնավոր չի ստուգվում կենդանի — իրական pointer-drag-ըCalendarView-ի սեփական grid մաթեմատիկայի դեմ չունի հաստատված նմուշ այս e2e փաթեթի ոչ մի տեղում, և արդեն ծածկված էonMoveEventյունիթ-թեստով ևCalendarView-ի սեփական ծածկույթով. նույն որոշումը, ինչ կենդանի «Կրկնօրինակել»/«Փոխանցել սեփականությունը»-ի բացթողումը այս նախաձեռնության այլ վայրերում։ Մեկ կենդանի նրբություն. block-երկխոսության ուղարկման կոճակը մնում է անջատված, քանի դեռ ձևը «կեղտոտ» չէ, ուստի ստուգումն սկզբում լրացնում է «Պիտակ» դաշտը — լռելյայն արժեքներն իրենք (այսօր, 13:00–14:00, տեսանելի թիմին) փոփոխություն չեն համարվում։ - Բլոկ 3 — ծանուցումներից deep-linking + հրավերների ժապավենը, նույն փուլում։ Սա ամբողջությամբ փակում է
/team/calendar-ը (բոլոր 3 բլոկները, մեկական փուլ յուրաքանչյուրի համար)։ ևս յոթ յունիթ-թեստ ավելացվեց նույն ֆայլում (ընդամենը 26 այժմ)՝ ծածկելով?event=<id>query watcher-ի երեք ճյուղերը՝ բացում է իրադարձության քարտը և անցնում օրակարգի ռեժիմին՝ մաքրելով query-ն, որպեսզի վերաբեռնումը կրկին չբացի քարտը. պատասխան դեռ սպասող հրավերի համար փոխարենը լուսավորում է ժապավենի համապատասխան տողը (քարտը և ժապավենը, որոնք ցույց են տալիս պատասխանի նույն երեք կոճակները մի քանի սանտիմետր հեռավորության վրա, իրական սխալ էին, որի մասին հայտնվել և ուղղվել է 2026-08-09-ին, ըստ կոդի սեփական մեկնաբանության); և չպատասխանված հրավերի համար, որն այլևս տող չունի ժապավենում, քանի որ արդեն անցել է, հետ է գնում քարտի բացմանը, քանի որ ցույց տալու բան այլևս չկա — գումարած «միջոցառումը չի գտնվել, միգուցե այն չեղարկվել է» սխալի toast-ը ջնջված կամ այլևս տեսանելի չլինող id-ի համար,goToEvent/onInvitationAnswered-ը (ժապավենի սեփական երկու գործողությունները՝ անցնել իրադարձությանը և մաքրել լուսավորումը + թարմացնել և ցանցը, և inbox-ը պատասխանելուց հետո), ևinvitationWhen-ի երեք ձևերը (ամբողջ օր, ժամանակով, և զրոյական տևողությամբ «ակնթարթային», որտեղ սկիզբը հավասար է ավարտին)։calendar.mjs-ը հասավ 14 ստուգման՝?event=deep link-ը բացում է իրական իրադարձություն id-ով (գրավված իրական ստեղծման պատասխանիցpage.waitForResponse-ի միջոցով, քանի որ id-ն այլևս ինտերֆեյսում ոչ մի տեղ տեսանելի չէ) և հաստատում է և՛ քարտի բովանդակությունը, և՛ URL-ի թարմացումը, գումարած «անհետացած» toast-ը գոյություն չունեցող id-ի համար — երկուսն էլ միակողմանի-դերակատարային ուղիներ — ԵՎ ինքը՝ հրավերների ժապավենի լուսավորումը, օգտագործելով փաթեթի սեփական երկրորդ հատուկ հաշիվը (e2e-test-staff2@p4p.internal) առանձին բրաուզերային կոնտեքստում.e2e-test-admin-ը հրավիրում է STAFF2-ին իրական իրադարձության, STAFF2-ը բացում է?event=<id>-ը, ժապավենը լուսավորում է տողը, «Գնում եմ» պատասխանը հեռացնում է այն։ (Այս ֆայլի առաջին սևագիրը սխալմամբ ենթադրել էր, որ երկրորդ հաշիվ գոյություն չունի և բաց էր թողել այս կենդանի ստուգումը — ուղղվեց նույն փուլում, երբ նկատվեց այդ հաշվի երկարատև օգտագործումը այս փաթեթի այլ վայրերում, օրինակ՝realtime-new-items-pill.mjs-ում)։ Այս փուլում նաև ավելացվեց՝ ընդհանուր մաքրման օգնականdeleteEventByTitle(), հետադարձորեն կիրառված նաև Բլոկ 2-ի սեփական ստուգումների վրա՝ իրադարձության ստեղծում և ժամանակի փակում (ոչ մեկը նախկինում իր հետևից չէր մաքրում) — այժմ այս ֆայլի ստեղծած ամեն իրական իրադարձություն երեքական բլոկներում ջնջվում է վազքի վերջում, համապատասխանելով ցանկացած այլmenu/*.mjsֆայլի սեփական մաքրման կարգապահությանը։ Նույն օրը գտնվեց և ուղղվեց իրական սխալ հենց այս մաքրման օգնականի մեջ. չիպի սեղմման լոկատորը օգտագործում էր ենթատող (exact: false) տեքստային համընկնում, որի.first()-ը կարող է լուծվել նախնու վրա, որի տեքստը մի քանի չիպերի կցորդում է, այլ ոչ թե մեկ չիպ — սեղմումն այդժամ ընկնում է handler-ից զուրկ կոնտեյների վրա և լուռ ոչինչ չի անում, թողնելով իրադարձությունը հետևում առանց որևէ սխալի։ Գտնվեց 3 իրական որբացած «E2E Calendar Event ...» տողերի միջոցով, որոնք թողել էին այս նույն փուլի ավելի վաղ վազքերը. ուղղվեցexact: true-ի՝ յուրաքանչյուր սեղմումից առաջ տեսանելիության բացահայտ սպասումով, և որբերը մաքրվեցին ձեռքով։ Հրավերների ժապավենի ստուգումը պահանջեց նմանատիպ երկրորդ ուղղում. և՛ «ժապավենը ցույց է տալիս տողը», և՛ «պատասխանը հեռացնում է այն» պնդումները պետք է կապված լինեն ժապավենի տողի սեփական[data-invitation-id]հատկանիշին, այլ ոչ թե ողջ էջի վրայով վերնագրի տեքստի որոնմանը — dev DB-ն ընդհանուր է, ուստի STAFF2-ը իրականում կարող է ունենալ ԱՅԼ իրական սպասող հրավերներ նույն պահին, ինչ թեստի սեփականը (կույր «առաջին Going կոճակի» սեղմումը պատասխանել էր անծանոթի անկապ հրավերին փոխարենը), և առանձին՝?event=-ը փոխում է դիտումը օրակարգի, որտեղ նույն իրադարձության սեփական օրակարգի-ցուցակի տողը կրում է նույն վերնագրի տեքստը, այնպես որ ողջ էջի որոնումը չի կարող տարբերել «դեռ ժապավենում»-ը «ինչ-որ տեղ օրացույցում տեսանելի»-ից։
Աշխատակցի սեփական քարտի «Ժամանակացույց» ներդիրը (/team/members/[id]/schedule, տես Աշխատակազմ) այս նույն համակարգի մեկ մարդու տեսքն է, և նրա սեփական փուլը (apps/portal/pages/team/members/[id]/schedule.test.ts) առաջինն էր, որ իրական stub արեց useCalendarEvents/useEventTooltip/toCalendarItems/utils/calendarEvent.ts-ը — այս փուլը երկուսն էլ տեղափոխեց ընդհանուր apps/portal/test/setup.ts՝ նրանց երկրորդ իրական վերաօգտագործման ժամանակ։