@churchapps/helpers 1.2.8 → 1.2.9
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/dist/PlanHelper.d.ts +12 -0
- package/dist/PlanHelper.d.ts.map +1 -1
- package/dist/PlanHelper.js +25 -0
- package/dist/PlanHelper.js.map +1 -1
- package/dist/contentProviders/LessonsContentProvider.js +5 -5
- package/dist/contentProviders/LessonsContentProvider.js.map +1 -1
- package/package.json +1 -1
- package/src/PlanHelper.ts +28 -0
- package/src/contentProviders/LessonsContentProvider.ts +5 -5
- package/src/interfaces/Doing.ts +1 -1
package/dist/PlanHelper.d.ts
CHANGED
|
@@ -9,5 +9,17 @@ export declare class PlanHelper {
|
|
|
9
9
|
private static flattenItems;
|
|
10
10
|
private static attachContent;
|
|
11
11
|
static getLessonsProvider(): LessonsContentProvider;
|
|
12
|
+
/**
|
|
13
|
+
* Format seconds as MM:SS string
|
|
14
|
+
* @param seconds - Number of seconds to format
|
|
15
|
+
* @returns Formatted time string (e.g., "3:45")
|
|
16
|
+
*/
|
|
17
|
+
static formatTime(seconds: number): string;
|
|
18
|
+
/**
|
|
19
|
+
* Calculate total duration of a section's children
|
|
20
|
+
* @param section - PlanItem with children
|
|
21
|
+
* @returns Total seconds from all children
|
|
22
|
+
*/
|
|
23
|
+
static getSectionDuration(section: PlanItemInterface): number;
|
|
12
24
|
}
|
|
13
25
|
//# sourceMappingURL=PlanHelper.d.ts.map
|
package/dist/PlanHelper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanHelper.d.ts","sourceRoot":"","sources":["../src/PlanHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAA4B,MAAM,cAAc,CAAC;AAC/F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEnF,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAEtB;IAGF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAQjE,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;WAUnD,QAAQ,CACnB,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,iBAAiB,EAAE,GAC7B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAyC/B,OAAO,CAAC,MAAM,CAAC,YAAY;IAiB3B,OAAO,CAAC,MAAM,CAAC,aAAa;IAgB5B,MAAM,CAAC,kBAAkB,IAAI,sBAAsB;
|
|
1
|
+
{"version":3,"file":"PlanHelper.d.ts","sourceRoot":"","sources":["../src/PlanHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAA4B,MAAM,cAAc,CAAC;AAC/F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEnF,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAEtB;IAGF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAQjE,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;WAUnD,QAAQ,CACnB,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,iBAAiB,EAAE,GAC7B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAyC/B,OAAO,CAAC,MAAM,CAAC,YAAY;IAiB3B,OAAO,CAAC,MAAM,CAAC,aAAa;IAgB5B,MAAM,CAAC,kBAAkB,IAAI,sBAAsB;IAQnD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM1C;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM;CAO9D"}
|
package/dist/PlanHelper.js
CHANGED
|
@@ -81,5 +81,30 @@ export class PlanHelper {
|
|
|
81
81
|
static getLessonsProvider() {
|
|
82
82
|
return this.providers.find(p => p.providerId === "lessons");
|
|
83
83
|
}
|
|
84
|
+
// ============================================
|
|
85
|
+
// Time Formatting Utilities
|
|
86
|
+
// ============================================
|
|
87
|
+
/**
|
|
88
|
+
* Format seconds as MM:SS string
|
|
89
|
+
* @param seconds - Number of seconds to format
|
|
90
|
+
* @returns Formatted time string (e.g., "3:45")
|
|
91
|
+
*/
|
|
92
|
+
static formatTime(seconds) {
|
|
93
|
+
const mins = Math.floor(seconds / 60);
|
|
94
|
+
const secs = seconds % 60;
|
|
95
|
+
return mins + ":" + (secs < 10 ? "0" : "") + secs;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Calculate total duration of a section's children
|
|
99
|
+
* @param section - PlanItem with children
|
|
100
|
+
* @returns Total seconds from all children
|
|
101
|
+
*/
|
|
102
|
+
static getSectionDuration(section) {
|
|
103
|
+
let totalSeconds = 0;
|
|
104
|
+
section.children?.forEach((child) => {
|
|
105
|
+
totalSeconds += child.seconds || 0;
|
|
106
|
+
});
|
|
107
|
+
return totalSeconds;
|
|
108
|
+
}
|
|
84
109
|
}
|
|
85
110
|
//# sourceMappingURL=PlanHelper.js.map
|
package/dist/PlanHelper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanHelper.js","sourceRoot":"","sources":["../src/PlanHelper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PlanHelper.js","sourceRoot":"","sources":["../src/PlanHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ export class LessonsContentProvider {
|
|
|
6
6
|
this.lessonsUrl = lessonsUrl;
|
|
7
7
|
}
|
|
8
8
|
canHandle(plan, planItem) {
|
|
9
|
-
// Handles:
|
|
10
|
-
const lessonTypes = ["
|
|
9
|
+
// Handles: lessonAction, lessonAddOn, lessonSection, and items with relatedId when plan has lesson
|
|
10
|
+
const lessonTypes = ["lessonAction", "lessonAddOn", "lessonSection"];
|
|
11
11
|
const hasLessonPlan = plan?.contentType === "venue" || plan?.contentType === "externalVenue";
|
|
12
12
|
if (lessonTypes.includes(planItem.itemType) && planItem.relatedId)
|
|
13
13
|
return true;
|
|
@@ -18,8 +18,8 @@ export class LessonsContentProvider {
|
|
|
18
18
|
async fetchContent(plan, planItems) {
|
|
19
19
|
const result = new Map();
|
|
20
20
|
// Group by type for efficient batching
|
|
21
|
-
const actions = planItems.filter(p => p.itemType === "
|
|
22
|
-
const addOns = planItems.filter(p => p.itemType === "
|
|
21
|
+
const actions = planItems.filter(p => p.itemType === "lessonAction" && p.relatedId);
|
|
22
|
+
const addOns = planItems.filter(p => p.itemType === "lessonAddOn" && p.relatedId);
|
|
23
23
|
const sections = planItems.filter(p => (p.itemType === "lessonSection" || p.itemType === "item") && p.relatedId);
|
|
24
24
|
const externalRef = this.getExternalRef(plan);
|
|
25
25
|
// Build embed URLs for each item
|
|
@@ -166,7 +166,7 @@ export class LessonsContentProvider {
|
|
|
166
166
|
for (const section of actionsResponse.sections) {
|
|
167
167
|
if (section.id && section.actions) {
|
|
168
168
|
sectionActionsMap.set(section.id, section.actions.map(action => ({
|
|
169
|
-
itemType: "
|
|
169
|
+
itemType: "lessonAction",
|
|
170
170
|
relatedId: action.id,
|
|
171
171
|
label: action.name,
|
|
172
172
|
description: action.actionType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LessonsContentProvider.js","sourceRoot":"","sources":["../../src/contentProviders/LessonsContentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,MAAM,OAAO,sBAAsB;IACxB,UAAU,GAAG,SAAS,CAAC;IAExB,UAAU,CAAS;IAE3B,YAAY,aAAqB,wBAAwB;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,IAAmB,EAAE,QAA2B;QACxD,
|
|
1
|
+
{"version":3,"file":"LessonsContentProvider.js","sourceRoot":"","sources":["../../src/contentProviders/LessonsContentProvider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/PlanHelper.ts
CHANGED
|
@@ -106,4 +106,32 @@ export class PlanHelper {
|
|
|
106
106
|
static getLessonsProvider(): LessonsContentProvider {
|
|
107
107
|
return this.providers.find(p => p.providerId === "lessons") as LessonsContentProvider;
|
|
108
108
|
}
|
|
109
|
+
|
|
110
|
+
// ============================================
|
|
111
|
+
// Time Formatting Utilities
|
|
112
|
+
// ============================================
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Format seconds as MM:SS string
|
|
116
|
+
* @param seconds - Number of seconds to format
|
|
117
|
+
* @returns Formatted time string (e.g., "3:45")
|
|
118
|
+
*/
|
|
119
|
+
static formatTime(seconds: number): string {
|
|
120
|
+
const mins = Math.floor(seconds / 60);
|
|
121
|
+
const secs = seconds % 60;
|
|
122
|
+
return mins + ":" + (secs < 10 ? "0" : "") + secs;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Calculate total duration of a section's children
|
|
127
|
+
* @param section - PlanItem with children
|
|
128
|
+
* @returns Total seconds from all children
|
|
129
|
+
*/
|
|
130
|
+
static getSectionDuration(section: PlanItemInterface): number {
|
|
131
|
+
let totalSeconds = 0;
|
|
132
|
+
section.children?.forEach((child) => {
|
|
133
|
+
totalSeconds += child.seconds || 0;
|
|
134
|
+
});
|
|
135
|
+
return totalSeconds;
|
|
136
|
+
}
|
|
109
137
|
}
|
|
@@ -13,8 +13,8 @@ export class LessonsContentProvider implements ContentProviderInterface {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
canHandle(plan: PlanInterface, planItem: PlanItemInterface): boolean {
|
|
16
|
-
// Handles:
|
|
17
|
-
const lessonTypes = ["
|
|
16
|
+
// Handles: lessonAction, lessonAddOn, lessonSection, and items with relatedId when plan has lesson
|
|
17
|
+
const lessonTypes = ["lessonAction", "lessonAddOn", "lessonSection"];
|
|
18
18
|
const hasLessonPlan = plan?.contentType === "venue" || plan?.contentType === "externalVenue";
|
|
19
19
|
|
|
20
20
|
if (lessonTypes.includes(planItem.itemType) && planItem.relatedId) return true;
|
|
@@ -30,8 +30,8 @@ export class LessonsContentProvider implements ContentProviderInterface {
|
|
|
30
30
|
const result = new Map<string, PlanItemContentInterface>();
|
|
31
31
|
|
|
32
32
|
// Group by type for efficient batching
|
|
33
|
-
const actions = planItems.filter(p => p.itemType === "
|
|
34
|
-
const addOns = planItems.filter(p => p.itemType === "
|
|
33
|
+
const actions = planItems.filter(p => p.itemType === "lessonAction" && p.relatedId);
|
|
34
|
+
const addOns = planItems.filter(p => p.itemType === "lessonAddOn" && p.relatedId);
|
|
35
35
|
const sections = planItems.filter(p =>
|
|
36
36
|
(p.itemType === "lessonSection" || p.itemType === "item") && p.relatedId
|
|
37
37
|
);
|
|
@@ -202,7 +202,7 @@ export class LessonsContentProvider implements ContentProviderInterface {
|
|
|
202
202
|
for (const section of actionsResponse.sections) {
|
|
203
203
|
if (section.id && section.actions) {
|
|
204
204
|
sectionActionsMap.set(section.id, section.actions.map(action => ({
|
|
205
|
-
itemType: "
|
|
205
|
+
itemType: "lessonAction",
|
|
206
206
|
relatedId: action.id,
|
|
207
207
|
label: action.name,
|
|
208
208
|
description: action.actionType,
|
package/src/interfaces/Doing.ts
CHANGED
|
@@ -123,7 +123,7 @@ export interface PlanItemInterface {
|
|
|
123
123
|
planId?: string;
|
|
124
124
|
parentId?: string;
|
|
125
125
|
sort?: number;
|
|
126
|
-
itemType?: string; // "header", "song", "
|
|
126
|
+
itemType?: string; // "header", "song", "lessonAction", "lessonAddOn", "lessonSection", "item"
|
|
127
127
|
relatedId?: string;
|
|
128
128
|
label?: string;
|
|
129
129
|
description?: string;
|