@sprucelabs/spruce-calendar-components 25.6.1 → 25.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/.spruce/schemas/schemas.types.d.ts +136 -136
- package/build/calendar/CalendarEventManager.d.ts +1 -0
- package/build/calendar/CalendarEventManager.js +15 -4
- package/build/esm/.spruce/schemas/schemas.types.d.ts +136 -136
- package/build/esm/calendar/CalendarEventManager.d.ts +1 -0
- package/build/esm/calendar/CalendarEventManager.js +15 -4
- package/package.json +1 -1
|
@@ -857,142 +857,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
|
|
|
857
857
|
interface CancelCalendarEventResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CancelCalendarEventResponsePayloadSchema> {
|
|
858
858
|
}
|
|
859
859
|
}
|
|
860
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
861
|
-
interface CreateCalendarEmitTarget {
|
|
862
|
-
'organizationId': string;
|
|
863
|
-
}
|
|
864
|
-
interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
|
|
865
|
-
id: 'createCalendarEmitTarget';
|
|
866
|
-
version: 'v2021_05_19';
|
|
867
|
-
namespace: 'Calendar';
|
|
868
|
-
name: '';
|
|
869
|
-
fields: {
|
|
870
|
-
/** . */
|
|
871
|
-
'organizationId': {
|
|
872
|
-
type: 'id';
|
|
873
|
-
isRequired: true;
|
|
874
|
-
options: undefined;
|
|
875
|
-
};
|
|
876
|
-
};
|
|
877
|
-
}
|
|
878
|
-
interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
882
|
-
interface CreateCalendarEmitPayload {
|
|
883
|
-
'slug': string;
|
|
884
|
-
'title': string;
|
|
885
|
-
'eventTypes'?: string[] | undefined | null;
|
|
886
|
-
'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
|
|
887
|
-
}
|
|
888
|
-
interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
|
|
889
|
-
id: 'createCalendarEmitPayload';
|
|
890
|
-
version: 'v2021_05_19';
|
|
891
|
-
namespace: 'Calendar';
|
|
892
|
-
name: '';
|
|
893
|
-
fields: {
|
|
894
|
-
/** . */
|
|
895
|
-
'slug': {
|
|
896
|
-
type: 'id';
|
|
897
|
-
isRequired: true;
|
|
898
|
-
options: undefined;
|
|
899
|
-
};
|
|
900
|
-
/** . */
|
|
901
|
-
'title': {
|
|
902
|
-
type: 'text';
|
|
903
|
-
isRequired: true;
|
|
904
|
-
options: undefined;
|
|
905
|
-
};
|
|
906
|
-
/** . */
|
|
907
|
-
'eventTypes': {
|
|
908
|
-
type: 'text';
|
|
909
|
-
isArray: true;
|
|
910
|
-
minArrayLength: 0;
|
|
911
|
-
options: undefined;
|
|
912
|
-
};
|
|
913
|
-
/** . */
|
|
914
|
-
'availableTimeSlotBehavior': {
|
|
915
|
-
type: 'select';
|
|
916
|
-
options: {
|
|
917
|
-
choices: [{
|
|
918
|
-
"value": "include";
|
|
919
|
-
"label": "Include";
|
|
920
|
-
}, {
|
|
921
|
-
"value": "exclude";
|
|
922
|
-
"label": "Exclude";
|
|
923
|
-
}];
|
|
924
|
-
};
|
|
925
|
-
};
|
|
926
|
-
};
|
|
927
|
-
}
|
|
928
|
-
interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
|
|
929
|
-
}
|
|
930
|
-
}
|
|
931
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
932
|
-
interface CreateCalendarEmitTargetAndPayload {
|
|
933
|
-
/** Source. */
|
|
934
|
-
'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
|
|
935
|
-
'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
|
|
936
|
-
'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
|
|
937
|
-
}
|
|
938
|
-
interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
|
|
939
|
-
id: 'createCalendarEmitTargetAndPayload';
|
|
940
|
-
version: 'v2021_05_19';
|
|
941
|
-
namespace: 'Calendar';
|
|
942
|
-
name: '';
|
|
943
|
-
fields: {
|
|
944
|
-
/** Source. */
|
|
945
|
-
'source': {
|
|
946
|
-
label: 'Source';
|
|
947
|
-
type: 'schema';
|
|
948
|
-
options: {
|
|
949
|
-
schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
|
|
950
|
-
};
|
|
951
|
-
};
|
|
952
|
-
/** . */
|
|
953
|
-
'target': {
|
|
954
|
-
type: 'schema';
|
|
955
|
-
isRequired: true;
|
|
956
|
-
options: {
|
|
957
|
-
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
|
|
958
|
-
};
|
|
959
|
-
};
|
|
960
|
-
/** . */
|
|
961
|
-
'payload': {
|
|
962
|
-
type: 'schema';
|
|
963
|
-
isRequired: true;
|
|
964
|
-
options: {
|
|
965
|
-
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
|
|
966
|
-
};
|
|
967
|
-
};
|
|
968
|
-
};
|
|
969
|
-
}
|
|
970
|
-
interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
974
|
-
interface CreateCalendarResponsePayload {
|
|
975
|
-
'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
|
|
976
|
-
}
|
|
977
|
-
interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
|
|
978
|
-
id: 'createCalendarResponsePayload';
|
|
979
|
-
version: 'v2021_05_19';
|
|
980
|
-
namespace: 'Calendar';
|
|
981
|
-
name: '';
|
|
982
|
-
fields: {
|
|
983
|
-
/** . */
|
|
984
|
-
'calendar': {
|
|
985
|
-
type: 'schema';
|
|
986
|
-
isRequired: true;
|
|
987
|
-
options: {
|
|
988
|
-
schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
|
|
989
|
-
};
|
|
990
|
-
};
|
|
991
|
-
};
|
|
992
|
-
}
|
|
993
|
-
interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
|
|
994
|
-
}
|
|
995
|
-
}
|
|
996
860
|
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
997
861
|
interface CreateCalendarEventTypeEmitPayload {
|
|
998
862
|
'name': string;
|
|
@@ -1502,6 +1366,142 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
|
|
|
1502
1366
|
interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
|
|
1503
1367
|
}
|
|
1504
1368
|
}
|
|
1369
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1370
|
+
interface CreateCalendarEmitTarget {
|
|
1371
|
+
'organizationId': string;
|
|
1372
|
+
}
|
|
1373
|
+
interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
|
|
1374
|
+
id: 'createCalendarEmitTarget';
|
|
1375
|
+
version: 'v2021_05_19';
|
|
1376
|
+
namespace: 'Calendar';
|
|
1377
|
+
name: '';
|
|
1378
|
+
fields: {
|
|
1379
|
+
/** . */
|
|
1380
|
+
'organizationId': {
|
|
1381
|
+
type: 'id';
|
|
1382
|
+
isRequired: true;
|
|
1383
|
+
options: undefined;
|
|
1384
|
+
};
|
|
1385
|
+
};
|
|
1386
|
+
}
|
|
1387
|
+
interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1391
|
+
interface CreateCalendarEmitPayload {
|
|
1392
|
+
'slug': string;
|
|
1393
|
+
'title': string;
|
|
1394
|
+
'eventTypes'?: string[] | undefined | null;
|
|
1395
|
+
'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
|
|
1396
|
+
}
|
|
1397
|
+
interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
|
|
1398
|
+
id: 'createCalendarEmitPayload';
|
|
1399
|
+
version: 'v2021_05_19';
|
|
1400
|
+
namespace: 'Calendar';
|
|
1401
|
+
name: '';
|
|
1402
|
+
fields: {
|
|
1403
|
+
/** . */
|
|
1404
|
+
'slug': {
|
|
1405
|
+
type: 'id';
|
|
1406
|
+
isRequired: true;
|
|
1407
|
+
options: undefined;
|
|
1408
|
+
};
|
|
1409
|
+
/** . */
|
|
1410
|
+
'title': {
|
|
1411
|
+
type: 'text';
|
|
1412
|
+
isRequired: true;
|
|
1413
|
+
options: undefined;
|
|
1414
|
+
};
|
|
1415
|
+
/** . */
|
|
1416
|
+
'eventTypes': {
|
|
1417
|
+
type: 'text';
|
|
1418
|
+
isArray: true;
|
|
1419
|
+
minArrayLength: 0;
|
|
1420
|
+
options: undefined;
|
|
1421
|
+
};
|
|
1422
|
+
/** . */
|
|
1423
|
+
'availableTimeSlotBehavior': {
|
|
1424
|
+
type: 'select';
|
|
1425
|
+
options: {
|
|
1426
|
+
choices: [{
|
|
1427
|
+
"value": "include";
|
|
1428
|
+
"label": "Include";
|
|
1429
|
+
}, {
|
|
1430
|
+
"value": "exclude";
|
|
1431
|
+
"label": "Exclude";
|
|
1432
|
+
}];
|
|
1433
|
+
};
|
|
1434
|
+
};
|
|
1435
|
+
};
|
|
1436
|
+
}
|
|
1437
|
+
interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1441
|
+
interface CreateCalendarEmitTargetAndPayload {
|
|
1442
|
+
/** Source. */
|
|
1443
|
+
'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
|
|
1444
|
+
'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
|
|
1445
|
+
'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
|
|
1446
|
+
}
|
|
1447
|
+
interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
|
|
1448
|
+
id: 'createCalendarEmitTargetAndPayload';
|
|
1449
|
+
version: 'v2021_05_19';
|
|
1450
|
+
namespace: 'Calendar';
|
|
1451
|
+
name: '';
|
|
1452
|
+
fields: {
|
|
1453
|
+
/** Source. */
|
|
1454
|
+
'source': {
|
|
1455
|
+
label: 'Source';
|
|
1456
|
+
type: 'schema';
|
|
1457
|
+
options: {
|
|
1458
|
+
schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
|
|
1459
|
+
};
|
|
1460
|
+
};
|
|
1461
|
+
/** . */
|
|
1462
|
+
'target': {
|
|
1463
|
+
type: 'schema';
|
|
1464
|
+
isRequired: true;
|
|
1465
|
+
options: {
|
|
1466
|
+
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
|
|
1467
|
+
};
|
|
1468
|
+
};
|
|
1469
|
+
/** . */
|
|
1470
|
+
'payload': {
|
|
1471
|
+
type: 'schema';
|
|
1472
|
+
isRequired: true;
|
|
1473
|
+
options: {
|
|
1474
|
+
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
|
|
1475
|
+
};
|
|
1476
|
+
};
|
|
1477
|
+
};
|
|
1478
|
+
}
|
|
1479
|
+
interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1483
|
+
interface CreateCalendarResponsePayload {
|
|
1484
|
+
'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
|
|
1485
|
+
}
|
|
1486
|
+
interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
|
|
1487
|
+
id: 'createCalendarResponsePayload';
|
|
1488
|
+
version: 'v2021_05_19';
|
|
1489
|
+
namespace: 'Calendar';
|
|
1490
|
+
name: '';
|
|
1491
|
+
fields: {
|
|
1492
|
+
/** . */
|
|
1493
|
+
'calendar': {
|
|
1494
|
+
type: 'schema';
|
|
1495
|
+
isRequired: true;
|
|
1496
|
+
options: {
|
|
1497
|
+
schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
|
|
1498
|
+
};
|
|
1499
|
+
};
|
|
1500
|
+
};
|
|
1501
|
+
}
|
|
1502
|
+
interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
1505
|
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1506
1506
|
interface DeleteCalendarEmitTarget {
|
|
1507
1507
|
'organizationId': string;
|
|
@@ -49,6 +49,7 @@ export default class CalendarEventManager {
|
|
|
49
49
|
makeCalendarVisible(calendarId: string): Promise<void>;
|
|
50
50
|
makeCalendarHidden(calendarId: string): Promise<void>;
|
|
51
51
|
updateEvent(id: string, updates: UpdateEventOptions): void;
|
|
52
|
+
private calculateDifferences;
|
|
52
53
|
loadEvents(startDate: number, endDate: number, peopleIds: string[]): Promise<import("@sprucelabs/calendar-utils").SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarEvent[]>;
|
|
53
54
|
setCalendarVisibility(calendarId: string, shouldBeVisible: boolean): Promise<void>;
|
|
54
55
|
setupVcForEventType(vcId: string, typeSlug: string): Promise<void>;
|
|
@@ -178,16 +178,16 @@ class CalendarEventManager {
|
|
|
178
178
|
updateEvent(id, updates) {
|
|
179
179
|
var _a;
|
|
180
180
|
const { shouldPersist } = updates, rest = __rest(updates, ["shouldPersist"]);
|
|
181
|
-
const
|
|
182
|
-
const updated = Object.assign(Object.assign({}, match), updates);
|
|
183
|
-
const isTheSame = (0, isEqual_1.default)(match, updated);
|
|
181
|
+
const { isTheSame, isTheSameWithoutBusy } = this.calculateDifferences(id, updates);
|
|
184
182
|
if (isTheSame) {
|
|
185
183
|
return;
|
|
186
184
|
}
|
|
187
185
|
this.calendarVc.updateEvent(id, Object.assign(Object.assign({}, rest), { shouldPersist }));
|
|
188
186
|
const idx = this.allEvents.findIndex((e) => e.id === id);
|
|
189
187
|
this.allEvents[idx] = Object.assign(Object.assign({}, this.allEvents[idx]), rest);
|
|
190
|
-
|
|
188
|
+
if (!isTheSameWithoutBusy) {
|
|
189
|
+
this.refreshShifts();
|
|
190
|
+
}
|
|
191
191
|
if (this.shouldUpdateContextOnNextSave &&
|
|
192
192
|
((_a = this.sm.getContext().event) === null || _a === void 0 ? void 0 : _a.id) === id) {
|
|
193
193
|
this.shouldIgnoreNextContextUpdate = true;
|
|
@@ -197,6 +197,17 @@ class CalendarEventManager {
|
|
|
197
197
|
}
|
|
198
198
|
this.shouldUpdateContextOnNextSave = true;
|
|
199
199
|
}
|
|
200
|
+
calculateDifferences(id, updates) {
|
|
201
|
+
const match = this.allEvents.find((e) => e.id === id);
|
|
202
|
+
const updated = Object.assign(Object.assign({}, match), updates);
|
|
203
|
+
const isTheSame = (0, isEqual_1.default)(match, updated);
|
|
204
|
+
const updatesWithoutBusy = Object.assign({}, updated);
|
|
205
|
+
delete updatesWithoutBusy.isBusy;
|
|
206
|
+
const matchWithoutBusy = Object.assign({}, match);
|
|
207
|
+
delete matchWithoutBusy.isBusy;
|
|
208
|
+
const isTheSameWithoutBusy = (0, isEqual_1.default)(matchWithoutBusy, updatesWithoutBusy);
|
|
209
|
+
return { isTheSame, isTheSameWithoutBusy };
|
|
210
|
+
}
|
|
200
211
|
async loadEvents(startDate, endDate, peopleIds) {
|
|
201
212
|
const events = await this.events.getSchedules({
|
|
202
213
|
calendarIds: this.calendarIds,
|
|
@@ -857,142 +857,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
|
|
|
857
857
|
interface CancelCalendarEventResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CancelCalendarEventResponsePayloadSchema> {
|
|
858
858
|
}
|
|
859
859
|
}
|
|
860
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
861
|
-
interface CreateCalendarEmitTarget {
|
|
862
|
-
'organizationId': string;
|
|
863
|
-
}
|
|
864
|
-
interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
|
|
865
|
-
id: 'createCalendarEmitTarget';
|
|
866
|
-
version: 'v2021_05_19';
|
|
867
|
-
namespace: 'Calendar';
|
|
868
|
-
name: '';
|
|
869
|
-
fields: {
|
|
870
|
-
/** . */
|
|
871
|
-
'organizationId': {
|
|
872
|
-
type: 'id';
|
|
873
|
-
isRequired: true;
|
|
874
|
-
options: undefined;
|
|
875
|
-
};
|
|
876
|
-
};
|
|
877
|
-
}
|
|
878
|
-
interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
882
|
-
interface CreateCalendarEmitPayload {
|
|
883
|
-
'slug': string;
|
|
884
|
-
'title': string;
|
|
885
|
-
'eventTypes'?: string[] | undefined | null;
|
|
886
|
-
'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
|
|
887
|
-
}
|
|
888
|
-
interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
|
|
889
|
-
id: 'createCalendarEmitPayload';
|
|
890
|
-
version: 'v2021_05_19';
|
|
891
|
-
namespace: 'Calendar';
|
|
892
|
-
name: '';
|
|
893
|
-
fields: {
|
|
894
|
-
/** . */
|
|
895
|
-
'slug': {
|
|
896
|
-
type: 'id';
|
|
897
|
-
isRequired: true;
|
|
898
|
-
options: undefined;
|
|
899
|
-
};
|
|
900
|
-
/** . */
|
|
901
|
-
'title': {
|
|
902
|
-
type: 'text';
|
|
903
|
-
isRequired: true;
|
|
904
|
-
options: undefined;
|
|
905
|
-
};
|
|
906
|
-
/** . */
|
|
907
|
-
'eventTypes': {
|
|
908
|
-
type: 'text';
|
|
909
|
-
isArray: true;
|
|
910
|
-
minArrayLength: 0;
|
|
911
|
-
options: undefined;
|
|
912
|
-
};
|
|
913
|
-
/** . */
|
|
914
|
-
'availableTimeSlotBehavior': {
|
|
915
|
-
type: 'select';
|
|
916
|
-
options: {
|
|
917
|
-
choices: [{
|
|
918
|
-
"value": "include";
|
|
919
|
-
"label": "Include";
|
|
920
|
-
}, {
|
|
921
|
-
"value": "exclude";
|
|
922
|
-
"label": "Exclude";
|
|
923
|
-
}];
|
|
924
|
-
};
|
|
925
|
-
};
|
|
926
|
-
};
|
|
927
|
-
}
|
|
928
|
-
interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
|
|
929
|
-
}
|
|
930
|
-
}
|
|
931
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
932
|
-
interface CreateCalendarEmitTargetAndPayload {
|
|
933
|
-
/** Source. */
|
|
934
|
-
'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
|
|
935
|
-
'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
|
|
936
|
-
'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
|
|
937
|
-
}
|
|
938
|
-
interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
|
|
939
|
-
id: 'createCalendarEmitTargetAndPayload';
|
|
940
|
-
version: 'v2021_05_19';
|
|
941
|
-
namespace: 'Calendar';
|
|
942
|
-
name: '';
|
|
943
|
-
fields: {
|
|
944
|
-
/** Source. */
|
|
945
|
-
'source': {
|
|
946
|
-
label: 'Source';
|
|
947
|
-
type: 'schema';
|
|
948
|
-
options: {
|
|
949
|
-
schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
|
|
950
|
-
};
|
|
951
|
-
};
|
|
952
|
-
/** . */
|
|
953
|
-
'target': {
|
|
954
|
-
type: 'schema';
|
|
955
|
-
isRequired: true;
|
|
956
|
-
options: {
|
|
957
|
-
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
|
|
958
|
-
};
|
|
959
|
-
};
|
|
960
|
-
/** . */
|
|
961
|
-
'payload': {
|
|
962
|
-
type: 'schema';
|
|
963
|
-
isRequired: true;
|
|
964
|
-
options: {
|
|
965
|
-
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
|
|
966
|
-
};
|
|
967
|
-
};
|
|
968
|
-
};
|
|
969
|
-
}
|
|
970
|
-
interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
974
|
-
interface CreateCalendarResponsePayload {
|
|
975
|
-
'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
|
|
976
|
-
}
|
|
977
|
-
interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
|
|
978
|
-
id: 'createCalendarResponsePayload';
|
|
979
|
-
version: 'v2021_05_19';
|
|
980
|
-
namespace: 'Calendar';
|
|
981
|
-
name: '';
|
|
982
|
-
fields: {
|
|
983
|
-
/** . */
|
|
984
|
-
'calendar': {
|
|
985
|
-
type: 'schema';
|
|
986
|
-
isRequired: true;
|
|
987
|
-
options: {
|
|
988
|
-
schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
|
|
989
|
-
};
|
|
990
|
-
};
|
|
991
|
-
};
|
|
992
|
-
}
|
|
993
|
-
interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
|
|
994
|
-
}
|
|
995
|
-
}
|
|
996
860
|
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
997
861
|
interface CreateCalendarEventTypeEmitPayload {
|
|
998
862
|
'name': string;
|
|
@@ -1502,6 +1366,142 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
|
|
|
1502
1366
|
interface CreateCalendarEventTypeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEventTypeResponsePayloadSchema> {
|
|
1503
1367
|
}
|
|
1504
1368
|
}
|
|
1369
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1370
|
+
interface CreateCalendarEmitTarget {
|
|
1371
|
+
'organizationId': string;
|
|
1372
|
+
}
|
|
1373
|
+
interface CreateCalendarEmitTargetSchema extends SpruceSchema.Schema {
|
|
1374
|
+
id: 'createCalendarEmitTarget';
|
|
1375
|
+
version: 'v2021_05_19';
|
|
1376
|
+
namespace: 'Calendar';
|
|
1377
|
+
name: '';
|
|
1378
|
+
fields: {
|
|
1379
|
+
/** . */
|
|
1380
|
+
'organizationId': {
|
|
1381
|
+
type: 'id';
|
|
1382
|
+
isRequired: true;
|
|
1383
|
+
options: undefined;
|
|
1384
|
+
};
|
|
1385
|
+
};
|
|
1386
|
+
}
|
|
1387
|
+
interface CreateCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema> {
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1391
|
+
interface CreateCalendarEmitPayload {
|
|
1392
|
+
'slug': string;
|
|
1393
|
+
'title': string;
|
|
1394
|
+
'eventTypes'?: string[] | undefined | null;
|
|
1395
|
+
'availableTimeSlotBehavior'?: ("include" | "exclude") | undefined | null;
|
|
1396
|
+
}
|
|
1397
|
+
interface CreateCalendarEmitPayloadSchema extends SpruceSchema.Schema {
|
|
1398
|
+
id: 'createCalendarEmitPayload';
|
|
1399
|
+
version: 'v2021_05_19';
|
|
1400
|
+
namespace: 'Calendar';
|
|
1401
|
+
name: '';
|
|
1402
|
+
fields: {
|
|
1403
|
+
/** . */
|
|
1404
|
+
'slug': {
|
|
1405
|
+
type: 'id';
|
|
1406
|
+
isRequired: true;
|
|
1407
|
+
options: undefined;
|
|
1408
|
+
};
|
|
1409
|
+
/** . */
|
|
1410
|
+
'title': {
|
|
1411
|
+
type: 'text';
|
|
1412
|
+
isRequired: true;
|
|
1413
|
+
options: undefined;
|
|
1414
|
+
};
|
|
1415
|
+
/** . */
|
|
1416
|
+
'eventTypes': {
|
|
1417
|
+
type: 'text';
|
|
1418
|
+
isArray: true;
|
|
1419
|
+
minArrayLength: 0;
|
|
1420
|
+
options: undefined;
|
|
1421
|
+
};
|
|
1422
|
+
/** . */
|
|
1423
|
+
'availableTimeSlotBehavior': {
|
|
1424
|
+
type: 'select';
|
|
1425
|
+
options: {
|
|
1426
|
+
choices: [{
|
|
1427
|
+
"value": "include";
|
|
1428
|
+
"label": "Include";
|
|
1429
|
+
}, {
|
|
1430
|
+
"value": "exclude";
|
|
1431
|
+
"label": "Exclude";
|
|
1432
|
+
}];
|
|
1433
|
+
};
|
|
1434
|
+
};
|
|
1435
|
+
};
|
|
1436
|
+
}
|
|
1437
|
+
interface CreateCalendarEmitPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema> {
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1441
|
+
interface CreateCalendarEmitTargetAndPayload {
|
|
1442
|
+
/** Source. */
|
|
1443
|
+
'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
|
|
1444
|
+
'target': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTarget;
|
|
1445
|
+
'payload': SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayload;
|
|
1446
|
+
}
|
|
1447
|
+
interface CreateCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
|
|
1448
|
+
id: 'createCalendarEmitTargetAndPayload';
|
|
1449
|
+
version: 'v2021_05_19';
|
|
1450
|
+
namespace: 'Calendar';
|
|
1451
|
+
name: '';
|
|
1452
|
+
fields: {
|
|
1453
|
+
/** Source. */
|
|
1454
|
+
'source': {
|
|
1455
|
+
label: 'Source';
|
|
1456
|
+
type: 'schema';
|
|
1457
|
+
options: {
|
|
1458
|
+
schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
|
|
1459
|
+
};
|
|
1460
|
+
};
|
|
1461
|
+
/** . */
|
|
1462
|
+
'target': {
|
|
1463
|
+
type: 'schema';
|
|
1464
|
+
isRequired: true;
|
|
1465
|
+
options: {
|
|
1466
|
+
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetSchema;
|
|
1467
|
+
};
|
|
1468
|
+
};
|
|
1469
|
+
/** . */
|
|
1470
|
+
'payload': {
|
|
1471
|
+
type: 'schema';
|
|
1472
|
+
isRequired: true;
|
|
1473
|
+
options: {
|
|
1474
|
+
schema: SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitPayloadSchema;
|
|
1475
|
+
};
|
|
1476
|
+
};
|
|
1477
|
+
};
|
|
1478
|
+
}
|
|
1479
|
+
interface CreateCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarEmitTargetAndPayloadSchema> {
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1483
|
+
interface CreateCalendarResponsePayload {
|
|
1484
|
+
'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
|
|
1485
|
+
}
|
|
1486
|
+
interface CreateCalendarResponsePayloadSchema extends SpruceSchema.Schema {
|
|
1487
|
+
id: 'createCalendarResponsePayload';
|
|
1488
|
+
version: 'v2021_05_19';
|
|
1489
|
+
namespace: 'Calendar';
|
|
1490
|
+
name: '';
|
|
1491
|
+
fields: {
|
|
1492
|
+
/** . */
|
|
1493
|
+
'calendar': {
|
|
1494
|
+
type: 'schema';
|
|
1495
|
+
isRequired: true;
|
|
1496
|
+
options: {
|
|
1497
|
+
schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
|
|
1498
|
+
};
|
|
1499
|
+
};
|
|
1500
|
+
};
|
|
1501
|
+
}
|
|
1502
|
+
interface CreateCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.CreateCalendarResponsePayloadSchema> {
|
|
1503
|
+
}
|
|
1504
|
+
}
|
|
1505
1505
|
namespace SpruceSchemas.Calendar.v2021_05_19 {
|
|
1506
1506
|
interface DeleteCalendarEmitTarget {
|
|
1507
1507
|
'organizationId': string;
|
|
@@ -49,6 +49,7 @@ export default class CalendarEventManager {
|
|
|
49
49
|
makeCalendarVisible(calendarId: string): Promise<void>;
|
|
50
50
|
makeCalendarHidden(calendarId: string): Promise<void>;
|
|
51
51
|
updateEvent(id: string, updates: UpdateEventOptions): void;
|
|
52
|
+
private calculateDifferences;
|
|
52
53
|
loadEvents(startDate: number, endDate: number, peopleIds: string[]): Promise<import("@sprucelabs/calendar-utils").SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarEvent[]>;
|
|
53
54
|
setCalendarVisibility(calendarId: string, shouldBeVisible: boolean): Promise<void>;
|
|
54
55
|
setupVcForEventType(vcId: string, typeSlug: string): Promise<void>;
|
|
@@ -198,16 +198,16 @@ export default class CalendarEventManager {
|
|
|
198
198
|
updateEvent(id, updates) {
|
|
199
199
|
var _a;
|
|
200
200
|
const { shouldPersist } = updates, rest = __rest(updates, ["shouldPersist"]);
|
|
201
|
-
const
|
|
202
|
-
const updated = Object.assign(Object.assign({}, match), updates);
|
|
203
|
-
const isTheSame = isEqual(match, updated);
|
|
201
|
+
const { isTheSame, isTheSameWithoutBusy } = this.calculateDifferences(id, updates);
|
|
204
202
|
if (isTheSame) {
|
|
205
203
|
return;
|
|
206
204
|
}
|
|
207
205
|
this.calendarVc.updateEvent(id, Object.assign(Object.assign({}, rest), { shouldPersist }));
|
|
208
206
|
const idx = this.allEvents.findIndex((e) => e.id === id);
|
|
209
207
|
this.allEvents[idx] = Object.assign(Object.assign({}, this.allEvents[idx]), rest);
|
|
210
|
-
|
|
208
|
+
if (!isTheSameWithoutBusy) {
|
|
209
|
+
this.refreshShifts();
|
|
210
|
+
}
|
|
211
211
|
if (this.shouldUpdateContextOnNextSave &&
|
|
212
212
|
((_a = this.sm.getContext().event) === null || _a === void 0 ? void 0 : _a.id) === id) {
|
|
213
213
|
this.shouldIgnoreNextContextUpdate = true;
|
|
@@ -217,6 +217,17 @@ export default class CalendarEventManager {
|
|
|
217
217
|
}
|
|
218
218
|
this.shouldUpdateContextOnNextSave = true;
|
|
219
219
|
}
|
|
220
|
+
calculateDifferences(id, updates) {
|
|
221
|
+
const match = this.allEvents.find((e) => e.id === id);
|
|
222
|
+
const updated = Object.assign(Object.assign({}, match), updates);
|
|
223
|
+
const isTheSame = isEqual(match, updated);
|
|
224
|
+
const updatesWithoutBusy = Object.assign({}, updated);
|
|
225
|
+
delete updatesWithoutBusy.isBusy;
|
|
226
|
+
const matchWithoutBusy = Object.assign({}, match);
|
|
227
|
+
delete matchWithoutBusy.isBusy;
|
|
228
|
+
const isTheSameWithoutBusy = isEqual(matchWithoutBusy, updatesWithoutBusy);
|
|
229
|
+
return { isTheSame, isTheSameWithoutBusy };
|
|
230
|
+
}
|
|
220
231
|
loadEvents(startDate, endDate, peopleIds) {
|
|
221
232
|
return __awaiter(this, void 0, void 0, function* () {
|
|
222
233
|
const events = yield this.events.getSchedules({
|