@cplace/test-mcp-server 1.3.12 → 1.3.13
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/api.js +2 -2
- package/dist/api.js.map +1 -1
- package/dist/tools/richstring-widgets.d.ts +16 -8
- package/dist/tools/richstring-widgets.d.ts.map +1 -1
- package/dist/tools/richstring-widgets.js +141 -57
- package/dist/tools/richstring-widgets.js.map +1 -1
- package/dist/widget-specifications/DOCUMENTATION-STATUS.md +14 -11
- package/dist/widget-specifications/WIDGET-TAGGING-SCHEME.md +1 -0
- package/dist/widget-specifications/_research_from_ga_products/cf-cplace-lowCodeWidgets-lowCodeText/research.md +176 -0
- package/dist/widget-specifications/_research_from_ga_products/widget-definition-mapping.md +6 -5
- package/dist/widget-specifications/_research_from_ga_products/widget-research-generation/widgets.txt +1 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeButton/_overview.md +12 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_catalog-data.json +12 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_meta.json +11 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_overview.md +94 -0
- package/dist/widget-specifications/cf.cplace.lowCodeWidgets.lowCodeText/_summary.md +1 -0
- package/package.json +1 -1
package/dist/api.js
CHANGED
|
@@ -39,7 +39,7 @@ export class CplaceApiClient {
|
|
|
39
39
|
response = await axios.patch(url, data, { headers });
|
|
40
40
|
}
|
|
41
41
|
else if (method === 'DELETE') {
|
|
42
|
-
response = await axios.delete(url, { headers, params });
|
|
42
|
+
response = await axios.delete(url, { headers, params, data });
|
|
43
43
|
}
|
|
44
44
|
else {
|
|
45
45
|
throw new Error(`Unsupported HTTP method: ${method}`);
|
|
@@ -115,7 +115,7 @@ export class CplaceApiClient {
|
|
|
115
115
|
response = await axios.patch(url, data, { headers });
|
|
116
116
|
}
|
|
117
117
|
else if (method === 'DELETE') {
|
|
118
|
-
response = await axios.delete(url, { headers, params });
|
|
118
|
+
response = await axios.delete(url, { headers, params, data });
|
|
119
119
|
}
|
|
120
120
|
else {
|
|
121
121
|
throw new Error(`Unsupported HTTP method: ${method}`);
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA2M9C,MAAM,OAAO,eAAe;IAClB,MAAM,CAAe;IAE7B,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAkBD,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAA8C,KAAK,EACnD,MAA4B,EAC5B,IAAU;QAEV,eAAe,CAAC,YAAY,EAAE,UAAU,MAAM,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACnF,eAAe,CAAC,YAAY,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,eAAe,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B;gBACtC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAC1C,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,kBAAkB;aAC7B,CAAC;YAGF,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACnE,OAAO,CAAC,kBAAkB,CAAC,GAAG,gBAAgB,CAAC;gBAC/C,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC;YACpC,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,sCAAsC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClG,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;YAClD,eAAe,CAAC,YAAY,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAErE,IAAI,QAAuC,CAAC;YAE5C,eAAe,CAAC,YAAY,EAAE,iBAAiB,MAAM,UAAU,CAAC,CAAC;YAEjE,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7B,eAAe,CAAC,YAAY,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5E,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,eAAe,CAAC,YAAY,EAAE,uBAAuB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7E,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,23 @@ import { z } from "zod";
|
|
|
3
3
|
import { CplaceApiClient } from '../api.js';
|
|
4
4
|
export declare const RICHSTRING_WIDGET_TOOL_DEFINITIONS: {
|
|
5
5
|
readonly cplace_richstring_extract_widgets: {
|
|
6
|
-
readonly description: "Extract all embedded widgets from richstring
|
|
6
|
+
readonly description: "Extract all embedded widgets from a page's richstring attribute. Reads the page internally and returns structured information about each widget including ID, type, properties, and position. Use this to discover widget IDs before updating or deleting them.";
|
|
7
7
|
readonly inputSchema: {
|
|
8
|
-
readonly
|
|
8
|
+
readonly pageUID: z.ZodString;
|
|
9
|
+
readonly attributeName: z.ZodOptional<z.ZodString>;
|
|
10
|
+
readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
|
|
9
11
|
};
|
|
10
12
|
readonly annotations: {
|
|
11
13
|
readonly title: "Extract Embedded Widgets from RichString";
|
|
12
14
|
};
|
|
13
15
|
};
|
|
14
16
|
readonly cplace_richstring_insert_widget: {
|
|
15
|
-
readonly description: "Insert a new embedded widget into richstring
|
|
17
|
+
readonly description: "Insert a new embedded widget into a page's richstring attribute at a specified position or at the end. Reads the page, inserts the widget via the backend API, and writes the modified content back — all in one call. Returns the inserted widget ID and the full widget inventory. The page content never appears in the LLM context.\n\nIMPORTANT: For low-code widgets that execute cplaceJS scripts (e.g., lowCodeText, lowCodeButton, scriptingHighcharts, scriptingLineChart, dynamicCodeBlockWidget), always test your script first using cplace_execute_script to verify it works correctly before embedding the widget.";
|
|
16
18
|
readonly inputSchema: {
|
|
19
|
+
readonly pageUID: z.ZodString;
|
|
20
|
+
readonly attributeName: z.ZodOptional<z.ZodString>;
|
|
21
|
+
readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
|
|
17
22
|
readonly widgetType: z.ZodString;
|
|
18
|
-
readonly content: z.ZodOptional<z.ZodString>;
|
|
19
23
|
readonly position: z.ZodOptional<z.ZodNumber>;
|
|
20
24
|
readonly expectedBefore: z.ZodOptional<z.ZodString>;
|
|
21
25
|
readonly expectedAfter: z.ZodOptional<z.ZodString>;
|
|
@@ -26,10 +30,12 @@ export declare const RICHSTRING_WIDGET_TOOL_DEFINITIONS: {
|
|
|
26
30
|
};
|
|
27
31
|
};
|
|
28
32
|
readonly cplace_richstring_update_widget: {
|
|
29
|
-
readonly description: "Update an existing embedded widget's properties
|
|
33
|
+
readonly description: "Update an existing embedded widget's properties in a page's richstring attribute. Reads the page, updates the widget via the backend API, and writes back — all in one call. Properties are completely replaced (not merged). Returns the updated widget ID and the full widget inventory.";
|
|
30
34
|
readonly inputSchema: {
|
|
35
|
+
readonly pageUID: z.ZodString;
|
|
36
|
+
readonly attributeName: z.ZodOptional<z.ZodString>;
|
|
37
|
+
readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
|
|
31
38
|
readonly widgetId: z.ZodString;
|
|
32
|
-
readonly content: z.ZodString;
|
|
33
39
|
readonly properties: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
34
40
|
};
|
|
35
41
|
readonly annotations: {
|
|
@@ -37,10 +43,12 @@ export declare const RICHSTRING_WIDGET_TOOL_DEFINITIONS: {
|
|
|
37
43
|
};
|
|
38
44
|
};
|
|
39
45
|
readonly cplace_richstring_delete_widget: {
|
|
40
|
-
readonly description: "Remove an embedded widget from
|
|
46
|
+
readonly description: "Remove an embedded widget from a page's richstring attribute. Reads the page, deletes the widget via the backend API, and writes back — all in one call. Returns the deleted widget ID and the remaining widget inventory.";
|
|
41
47
|
readonly inputSchema: {
|
|
48
|
+
readonly pageUID: z.ZodString;
|
|
49
|
+
readonly attributeName: z.ZodOptional<z.ZodString>;
|
|
50
|
+
readonly isWikiContent: z.ZodOptional<z.ZodBoolean>;
|
|
42
51
|
readonly widgetId: z.ZodString;
|
|
43
|
-
readonly content: z.ZodString;
|
|
44
52
|
};
|
|
45
53
|
readonly annotations: {
|
|
46
54
|
readonly title: "Delete Embedded Widget from RichString";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"richstring-widgets.d.ts","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA4B5C,eAAO,MAAM,kCAAkC
|
|
1
|
+
{"version":3,"file":"richstring-widgets.d.ts","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA4B5C,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDrC,CAAC;AAuGX,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,QAkMvF"}
|
|
@@ -6,20 +6,24 @@ const TOOL_RICHSTRING_UPDATE_WIDGET = 'cplace_richstring_update_widget';
|
|
|
6
6
|
const TOOL_RICHSTRING_DELETE_WIDGET = 'cplace_richstring_delete_widget';
|
|
7
7
|
export const RICHSTRING_WIDGET_TOOL_DEFINITIONS = {
|
|
8
8
|
[TOOL_RICHSTRING_EXTRACT_WIDGETS]: {
|
|
9
|
-
description: "Extract all embedded widgets from richstring
|
|
9
|
+
description: "Extract all embedded widgets from a page's richstring attribute. Reads the page internally and returns structured information about each widget including ID, type, properties, and position. Use this to discover widget IDs before updating or deleting them.",
|
|
10
10
|
inputSchema: {
|
|
11
|
-
|
|
11
|
+
pageUID: z.string().describe("The UID of the page containing the richstring attribute (e.g., 'hy46f7txqo4kgdh0yuol1fxvx')"),
|
|
12
|
+
attributeName: z.string().optional().describe("The internal name of the richstring attribute to read (e.g., 'my.app.description'). Required unless isWikiContent is true."),
|
|
13
|
+
isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed.")
|
|
12
14
|
},
|
|
13
15
|
annotations: { title: "Extract Embedded Widgets from RichString" }
|
|
14
16
|
},
|
|
15
17
|
[TOOL_RICHSTRING_INSERT_WIDGET]: {
|
|
16
|
-
description: "Insert a new embedded widget into richstring
|
|
18
|
+
description: "Insert a new embedded widget into a page's richstring attribute at a specified position or at the end. Reads the page, inserts the widget via the backend API, and writes the modified content back — all in one call. Returns the inserted widget ID and the full widget inventory. The page content never appears in the LLM context.\n\nIMPORTANT: For low-code widgets that execute cplaceJS scripts (e.g., lowCodeText, lowCodeButton, scriptingHighcharts, scriptingLineChart, dynamicCodeBlockWidget), always test your script first using cplace_execute_script to verify it works correctly before embedding the widget.",
|
|
17
19
|
inputSchema: {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
pageUID: z.string().describe("The UID of the page containing the richstring attribute"),
|
|
21
|
+
attributeName: z.string().optional().describe("The internal name of the richstring attribute to modify. Required unless isWikiContent is true."),
|
|
22
|
+
isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed."),
|
|
23
|
+
widgetType: z.string().describe("Widget type to insert (e.g., 'cf.cplace.lowCodeWidgets.lowCodeText'). Use cplace_get_widget_definition to verify it supports INSIDE_RICHSTRING embedding."),
|
|
20
24
|
position: z.number().optional().describe("Zero-based character position to insert at (default: end of content). Must be between 0 and content length."),
|
|
21
|
-
expectedBefore: z.string().optional().describe("Optional: Expected content immediately before insertion position for validation.
|
|
22
|
-
expectedAfter: z.string().optional().describe("Optional: Expected content immediately after insertion position for validation.
|
|
25
|
+
expectedBefore: z.string().optional().describe("Optional: Expected content immediately before insertion position for validation."),
|
|
26
|
+
expectedAfter: z.string().optional().describe("Optional: Expected content immediately after insertion position for validation."),
|
|
23
27
|
properties: z.record(z.any()).optional().describe(`Optional: Widget configuration properties as key-value pairs. Values should be arrays. Examples:
|
|
24
28
|
- String array: {"title": ["My Widget"]}
|
|
25
29
|
- Number: {"height": [800]}
|
|
@@ -31,10 +35,12 @@ Use cplace_get_widget_definition to understand required properties and data type
|
|
|
31
35
|
annotations: { title: "Insert Embedded Widget into RichString" }
|
|
32
36
|
},
|
|
33
37
|
[TOOL_RICHSTRING_UPDATE_WIDGET]: {
|
|
34
|
-
description: "Update an existing embedded widget's properties
|
|
38
|
+
description: "Update an existing embedded widget's properties in a page's richstring attribute. Reads the page, updates the widget via the backend API, and writes back — all in one call. Properties are completely replaced (not merged). Returns the updated widget ID and the full widget inventory.",
|
|
35
39
|
inputSchema: {
|
|
40
|
+
pageUID: z.string().describe("The UID of the page containing the richstring attribute"),
|
|
41
|
+
attributeName: z.string().optional().describe("The internal name of the richstring attribute to modify. Required unless isWikiContent is true."),
|
|
42
|
+
isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed."),
|
|
36
43
|
widgetId: z.string().describe("The unique ID of the widget to update (obtain via cplace_richstring_extract_widgets)"),
|
|
37
|
-
content: z.string().describe("The complete richstring content containing the widget to update"),
|
|
38
44
|
properties: z.record(z.any()).describe(`New widget properties to set (completely replaces existing properties). Values should be arrays. Examples:
|
|
39
45
|
- String array: {"title": ["Updated Widget"]}
|
|
40
46
|
- Number: {"height": [900]}
|
|
@@ -46,18 +52,73 @@ Use cplace_get_widget_definition to understand required properties and data type
|
|
|
46
52
|
annotations: { title: "Update Embedded Widget in RichString" }
|
|
47
53
|
},
|
|
48
54
|
[TOOL_RICHSTRING_DELETE_WIDGET]: {
|
|
49
|
-
description: "Remove an embedded widget from
|
|
55
|
+
description: "Remove an embedded widget from a page's richstring attribute. Reads the page, deletes the widget via the backend API, and writes back — all in one call. Returns the deleted widget ID and the remaining widget inventory.",
|
|
50
56
|
inputSchema: {
|
|
51
|
-
|
|
52
|
-
|
|
57
|
+
pageUID: z.string().describe("The UID of the page containing the richstring attribute"),
|
|
58
|
+
attributeName: z.string().optional().describe("The internal name of the richstring attribute to modify. Required unless isWikiContent is true."),
|
|
59
|
+
isWikiContent: z.boolean().optional().describe("Set to true to operate on the page's builtin wiki content instead of a custom attribute. When true, attributeName is not needed."),
|
|
60
|
+
widgetId: z.string().describe("The unique ID of the widget to delete (obtain via cplace_richstring_extract_widgets)")
|
|
53
61
|
},
|
|
54
62
|
annotations: { title: "Delete Embedded Widget from RichString" }
|
|
55
63
|
}
|
|
56
64
|
};
|
|
65
|
+
function validateAttributeTarget(attributeName, isWikiContent) {
|
|
66
|
+
if (!isWikiContent && !attributeName) {
|
|
67
|
+
return "Either 'attributeName' must be provided or 'isWikiContent' must be true.";
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
async function readAttributeFromPage(client, pageUID, attributeName, isWikiContent) {
|
|
72
|
+
const page = await client.makeApiRequest('json/page', 'GET', { pageUID });
|
|
73
|
+
if (isWikiContent) {
|
|
74
|
+
const content = page.wikiMarkup;
|
|
75
|
+
if (content === undefined || content === null) {
|
|
76
|
+
throw new Error(`Page ${pageUID} has no wiki content or it is empty.`);
|
|
77
|
+
}
|
|
78
|
+
if (typeof content !== 'string') {
|
|
79
|
+
throw new Error(`Wiki content on page ${pageUID} is not a string (got ${typeof content}).`);
|
|
80
|
+
}
|
|
81
|
+
return content;
|
|
82
|
+
}
|
|
83
|
+
const content = page.attributes?.[attributeName];
|
|
84
|
+
if (content === undefined || content === null) {
|
|
85
|
+
throw new Error(`Page ${pageUID} has no attribute '${attributeName}' or it is empty.`);
|
|
86
|
+
}
|
|
87
|
+
if (typeof content !== 'string') {
|
|
88
|
+
throw new Error(`Attribute '${attributeName}' on page ${pageUID} is not a string (got ${typeof content}).`);
|
|
89
|
+
}
|
|
90
|
+
return content;
|
|
91
|
+
}
|
|
92
|
+
async function writeAttributeToPage(client, pageUID, attributeName, isWikiContent, content) {
|
|
93
|
+
if (isWikiContent) {
|
|
94
|
+
await client.makeApiRequest('json/page', 'PATCH', undefined, {
|
|
95
|
+
pageUID,
|
|
96
|
+
content
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
await client.makeApiRequest('json/page', 'PATCH', undefined, {
|
|
101
|
+
pageUID,
|
|
102
|
+
attributes: { [attributeName]: content }
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async function withPageAttribute(client, pageUID, attributeName, isWikiContent, transformFn) {
|
|
107
|
+
const content = await readAttributeFromPage(client, pageUID, attributeName, isWikiContent);
|
|
108
|
+
const { result, modifiedContent } = await transformFn(content);
|
|
109
|
+
await writeAttributeToPage(client, pageUID, attributeName, isWikiContent, modifiedContent);
|
|
110
|
+
const inventory = await client.makeApiRequest('json/richstring-embedded-widget/extract', 'GET', { content: modifiedContent });
|
|
111
|
+
return { result, inventory };
|
|
112
|
+
}
|
|
57
113
|
export function registerRichStringWidgetTools(server, client) {
|
|
58
|
-
server.registerTool(TOOL_RICHSTRING_EXTRACT_WIDGETS, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_EXTRACT_WIDGETS], async ({
|
|
59
|
-
|
|
114
|
+
server.registerTool(TOOL_RICHSTRING_EXTRACT_WIDGETS, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_EXTRACT_WIDGETS], async ({ pageUID, attributeName, isWikiContent }) => {
|
|
115
|
+
const validationError = validateAttributeTarget(attributeName, isWikiContent);
|
|
116
|
+
if (validationError) {
|
|
117
|
+
return { content: [{ type: "text", text: validationError }], isError: true };
|
|
118
|
+
}
|
|
119
|
+
debugLogWithTag('RICHSTRING_WIDGETS', `Extracting widgets from page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
|
|
60
120
|
try {
|
|
121
|
+
const content = await readAttributeFromPage(client, pageUID, attributeName, isWikiContent);
|
|
61
122
|
const result = await client.makeApiRequest('json/richstring-embedded-widget/extract', 'GET', { content });
|
|
62
123
|
debugLogWithTag('RICHSTRING_WIDGETS', `Successfully extracted ${result.totalCount || 0} widgets`);
|
|
63
124
|
return {
|
|
@@ -75,35 +136,40 @@ export function registerRichStringWidgetTools(server, client) {
|
|
|
75
136
|
};
|
|
76
137
|
}
|
|
77
138
|
});
|
|
78
|
-
server.registerTool(TOOL_RICHSTRING_INSERT_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_INSERT_WIDGET], async ({
|
|
79
|
-
|
|
139
|
+
server.registerTool(TOOL_RICHSTRING_INSERT_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_INSERT_WIDGET], async ({ pageUID, attributeName, isWikiContent, widgetType, position, expectedBefore, expectedAfter, properties }) => {
|
|
140
|
+
const validationError = validateAttributeTarget(attributeName, isWikiContent);
|
|
141
|
+
if (validationError) {
|
|
142
|
+
return { content: [{ type: "text", text: validationError }], isError: true };
|
|
143
|
+
}
|
|
144
|
+
debugLogWithTag('RICHSTRING_WIDGETS', `Inserting widget ${widgetType} into page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
|
|
80
145
|
try {
|
|
81
|
-
const
|
|
82
|
-
widgetType
|
|
146
|
+
const { result, inventory } = await withPageAttribute(client, pageUID, attributeName, isWikiContent, async (content) => {
|
|
147
|
+
const requestBody = { widgetType, content };
|
|
148
|
+
if (position !== undefined)
|
|
149
|
+
requestBody.position = position;
|
|
150
|
+
if (expectedBefore !== undefined)
|
|
151
|
+
requestBody.expectedBefore = expectedBefore;
|
|
152
|
+
if (expectedAfter !== undefined)
|
|
153
|
+
requestBody.expectedAfter = expectedAfter;
|
|
154
|
+
if (properties && Object.keys(properties).length > 0)
|
|
155
|
+
requestBody.properties = properties;
|
|
156
|
+
const apiResult = await client.makeApiRequest('json/richstring-embedded-widget/insert', 'POST', undefined, requestBody);
|
|
157
|
+
return {
|
|
158
|
+
result: {
|
|
159
|
+
insertedWidgetId: apiResult.insertedWidgetId,
|
|
160
|
+
insertedAtPosition: apiResult.insertedAtPosition
|
|
161
|
+
},
|
|
162
|
+
modifiedContent: apiResult.modifiedContent
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
const response = {
|
|
166
|
+
...result,
|
|
167
|
+
embeddedWidgets: inventory.embeddedWidgets,
|
|
168
|
+
totalWidgetCount: inventory.totalCount
|
|
83
169
|
};
|
|
84
|
-
if (content !== undefined) {
|
|
85
|
-
requestBody.content = content;
|
|
86
|
-
debugLogWithTag('RICHSTRING_WIDGETS', `Including content (${content.length} chars)`);
|
|
87
|
-
}
|
|
88
|
-
if (position !== undefined) {
|
|
89
|
-
requestBody.position = position;
|
|
90
|
-
debugLogWithTag('RICHSTRING_WIDGETS', `Inserting at position: ${position}`);
|
|
91
|
-
}
|
|
92
|
-
if (expectedBefore !== undefined) {
|
|
93
|
-
requestBody.expectedBefore = expectedBefore;
|
|
94
|
-
}
|
|
95
|
-
if (expectedAfter !== undefined) {
|
|
96
|
-
requestBody.expectedAfter = expectedAfter;
|
|
97
|
-
}
|
|
98
|
-
if (properties && Object.keys(properties).length > 0) {
|
|
99
|
-
requestBody.properties = properties;
|
|
100
|
-
debugLogWithTag('RICHSTRING_WIDGETS', `Including properties: ${JSON.stringify(Object.keys(properties))}`);
|
|
101
|
-
}
|
|
102
|
-
debugLogWithTag('RICHSTRING_WIDGETS', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
103
|
-
const result = await client.makeApiRequest('json/richstring-embedded-widget/insert', 'POST', undefined, requestBody);
|
|
104
170
|
debugLogWithTag('RICHSTRING_WIDGETS', `Successfully inserted widget: ${result.insertedWidgetId}`);
|
|
105
171
|
return {
|
|
106
|
-
content: [{ type: "text", text: JSON.stringify(
|
|
172
|
+
content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
|
|
107
173
|
};
|
|
108
174
|
}
|
|
109
175
|
catch (error) {
|
|
@@ -117,20 +183,28 @@ export function registerRichStringWidgetTools(server, client) {
|
|
|
117
183
|
};
|
|
118
184
|
}
|
|
119
185
|
});
|
|
120
|
-
server.registerTool(TOOL_RICHSTRING_UPDATE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_UPDATE_WIDGET], async ({
|
|
121
|
-
|
|
186
|
+
server.registerTool(TOOL_RICHSTRING_UPDATE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_UPDATE_WIDGET], async ({ pageUID, attributeName, isWikiContent, widgetId, properties }) => {
|
|
187
|
+
const validationError = validateAttributeTarget(attributeName, isWikiContent);
|
|
188
|
+
if (validationError) {
|
|
189
|
+
return { content: [{ type: "text", text: validationError }], isError: true };
|
|
190
|
+
}
|
|
191
|
+
debugLogWithTag('RICHSTRING_WIDGETS', `Updating widget ${widgetId} in page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
|
|
122
192
|
try {
|
|
123
|
-
const
|
|
124
|
-
widgetId,
|
|
125
|
-
|
|
126
|
-
|
|
193
|
+
const { result, inventory } = await withPageAttribute(client, pageUID, attributeName, isWikiContent, async (content) => {
|
|
194
|
+
const apiResult = await client.makeApiRequest('json/richstring-embedded-widget/update', 'PATCH', undefined, { widgetId, content, properties });
|
|
195
|
+
return {
|
|
196
|
+
result: { updatedWidgetId: widgetId },
|
|
197
|
+
modifiedContent: apiResult.modifiedContent
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
const response = {
|
|
201
|
+
...result,
|
|
202
|
+
embeddedWidgets: inventory.embeddedWidgets,
|
|
203
|
+
totalWidgetCount: inventory.totalCount
|
|
127
204
|
};
|
|
128
|
-
debugLogWithTag('RICHSTRING_WIDGETS', `Updating widget with properties: ${JSON.stringify(Object.keys(properties))}`);
|
|
129
|
-
debugLogWithTag('RICHSTRING_WIDGETS', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
130
|
-
const result = await client.makeApiRequest('json/richstring-embedded-widget/update', 'PATCH', undefined, requestBody);
|
|
131
205
|
debugLogWithTag('RICHSTRING_WIDGETS', `Successfully updated widget: ${widgetId}`);
|
|
132
206
|
return {
|
|
133
|
-
content: [{ type: "text", text: JSON.stringify(
|
|
207
|
+
content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
|
|
134
208
|
};
|
|
135
209
|
}
|
|
136
210
|
catch (error) {
|
|
@@ -144,18 +218,28 @@ export function registerRichStringWidgetTools(server, client) {
|
|
|
144
218
|
};
|
|
145
219
|
}
|
|
146
220
|
});
|
|
147
|
-
server.registerTool(TOOL_RICHSTRING_DELETE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_DELETE_WIDGET], async ({
|
|
148
|
-
|
|
221
|
+
server.registerTool(TOOL_RICHSTRING_DELETE_WIDGET, RICHSTRING_WIDGET_TOOL_DEFINITIONS[TOOL_RICHSTRING_DELETE_WIDGET], async ({ pageUID, attributeName, isWikiContent, widgetId }) => {
|
|
222
|
+
const validationError = validateAttributeTarget(attributeName, isWikiContent);
|
|
223
|
+
if (validationError) {
|
|
224
|
+
return { content: [{ type: "text", text: validationError }], isError: true };
|
|
225
|
+
}
|
|
226
|
+
debugLogWithTag('RICHSTRING_WIDGETS', `Deleting widget ${widgetId} from page ${pageUID}, attribute ${attributeName ?? 'wiki content'}`);
|
|
149
227
|
try {
|
|
150
|
-
const
|
|
151
|
-
widgetId,
|
|
152
|
-
|
|
228
|
+
const { result, inventory } = await withPageAttribute(client, pageUID, attributeName, isWikiContent, async (content) => {
|
|
229
|
+
const apiResult = await client.makeApiRequest('json/richstring-embedded-widget/delete', 'DELETE', undefined, { widgetId, content });
|
|
230
|
+
return {
|
|
231
|
+
result: { deletedWidgetId: widgetId },
|
|
232
|
+
modifiedContent: apiResult.modifiedContent
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
const response = {
|
|
236
|
+
...result,
|
|
237
|
+
embeddedWidgets: inventory.embeddedWidgets,
|
|
238
|
+
totalWidgetCount: inventory.totalCount
|
|
153
239
|
};
|
|
154
|
-
debugLogWithTag('RICHSTRING_WIDGETS', `Request body: ${JSON.stringify(requestBody, null, 2)}`);
|
|
155
|
-
const result = await client.makeApiRequest('json/richstring-embedded-widget/delete', 'DELETE', undefined, requestBody);
|
|
156
240
|
debugLogWithTag('RICHSTRING_WIDGETS', `Successfully deleted widget: ${widgetId}`);
|
|
157
241
|
return {
|
|
158
|
-
content: [{ type: "text", text: JSON.stringify(
|
|
242
|
+
content: [{ type: "text", text: JSON.stringify(response, null, 2) }]
|
|
159
243
|
};
|
|
160
244
|
}
|
|
161
245
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"richstring-widgets.js","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqB/C,MAAM,+BAA+B,GAAG,mCAAmC,CAAC;AAC5E,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AACxE,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AACxE,MAAM,6BAA6B,GAAG,iCAAiC,CAAC;AAGxE,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,CAAC,+BAA+B,CAAC,EAAE;QACjC,WAAW,EAAE,oPAAoP;QACjQ,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;SACzG;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,0CAA0C,EAAE;KACnE;IACD,CAAC,6BAA6B,CAAC,EAAE;QAC/B,WAAW,EAAE,uQAAuQ;QACpR,WAAW,EAAE;YACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4KAA4K,CAAC;YAC7M,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;YAC5G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6GAA6G,CAAC;YACvJ,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mHAAmH,CAAC;YACnK,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kHAAkH,CAAC;YACjK,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;;;;;;mFAM2B,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE;KACjE;IACD,CAAC,6BAA6B,CAAC,EAAE;QAC/B,WAAW,EAAE,iOAAiO;QAC9O,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;YACrH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;YAC/F,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC;;;;;;mFAMsC,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE;KAC/D;IACD,CAAC,6BAA6B,CAAC,EAAE;QAC/B,WAAW,EAAE,uPAAuP;QACpQ,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sFAAsF,CAAC;YACrH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;SAChG;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE;KACjE;CACO,CAAC;AAEX,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,MAAuB;IAEtF,MAAM,CAAC,YAAY,CAAC,+BAA+B,EACjD,kCAAkC,CAAC,+BAA+B,CAAC,EACnE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,eAAe,CAAC,oBAAoB,EAAE,4CAA4C,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;QAE3G,IAAI,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,yCAAyC,EACzC,KAAK,EACL,EAAE,OAAO,EAAE,CACZ,CAAC;YAEF,eAAe,CAAC,oBAAoB,EAAE,0BAA0B,MAAM,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC;YAElG,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,oBAAoB,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7H,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC5F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,6BAA6B,EAC/C,kCAAkC,CAAC,6BAA6B,CAAC,EACjE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE;QACrF,eAAe,CAAC,oBAAoB,EAAE,8BAA8B,UAAU,EAAE,CAAC,CAAC;QAElF,IAAI,CAAC;YAEH,MAAM,WAAW,GAAQ;gBACvB,UAAU;aACX,CAAC;YAGF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC9B,eAAe,CAAC,oBAAoB,EAAE,sBAAsB,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;YACvF,CAAC;YAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAChC,eAAe,CAAC,oBAAoB,EAAE,0BAA0B,QAAQ,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;YAC9C,CAAC;YAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;YAC5C,CAAC;YAED,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;gBACpC,eAAe,CAAC,oBAAoB,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5G,CAAC;YAED,eAAe,CAAC,oBAAoB,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAG/F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,wCAAwC,EACxC,MAAM,EACN,SAAS,EACT,WAAW,CACZ,CAAC;YAEF,eAAe,CAAC,oBAAoB,EAAE,iCAAiC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAElG,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,oBAAoB,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3H,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC1F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,6BAA6B,EAC/C,kCAAkC,CAAC,6BAA6B,CAAC,EACjE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;QAC1C,eAAe,CAAC,oBAAoB,EAAE,2BAA2B,QAAQ,EAAE,CAAC,CAAC;QAE7E,IAAI,CAAC;YAEH,MAAM,WAAW,GAAG;gBAClB,QAAQ;gBACR,OAAO;gBACP,UAAU;aACX,CAAC;YAEF,eAAe,CAAC,oBAAoB,EAAE,oCAAoC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;YACrH,eAAe,CAAC,oBAAoB,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAG/F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,wCAAwC,EACxC,OAAO,EACP,SAAS,EACT,WAAW,CACZ,CAAC;YAEF,eAAe,CAAC,oBAAoB,EAAE,gCAAgC,QAAQ,EAAE,CAAC,CAAC;YAElF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,oBAAoB,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1H,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACzF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CAAC,6BAA6B,EAC/C,kCAAkC,CAAC,6BAA6B,CAAC,EACjE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9B,eAAe,CAAC,oBAAoB,EAAE,6BAA6B,QAAQ,EAAE,CAAC,CAAC;QAE/E,IAAI,CAAC;YAEH,MAAM,WAAW,GAAG;gBAClB,QAAQ;gBACR,OAAO;aACR,CAAC;YAEF,eAAe,CAAC,oBAAoB,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAG/F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,wCAAwC,EACxC,QAAQ,EACR,SAAS,EACT,WAAW,CACZ,CAAC;YAEF,eAAe,CAAC,oBAAoB,EAAE,gCAAgC,QAAQ,EAAE,CAAC,CAAC;YAElF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,CAAC,oBAAoB,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1H,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACzF,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AAEJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"richstring-widgets.js","sourceRoot":"","sources":["../../src/tools/richstring-widgets.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,16 +24,16 @@ Each widget should have these files following the three-level architecture:
|
|
|
24
24
|
|
|
25
25
|
| Metric | Count | Percentage |
|
|
26
26
|
|--------|-------|------------|
|
|
27
|
-
| **Total widgets in cplace** |
|
|
28
|
-
| **Widgets with specifications** |
|
|
27
|
+
| **Total widgets in cplace** | 109 | 100% |
|
|
28
|
+
| **Widgets with specifications** | 109 | 100% |
|
|
29
29
|
| **Widgets without any specs** | 0 | 0% |
|
|
30
30
|
|
|
31
|
-
### Documentation Completeness (of
|
|
31
|
+
### Documentation Completeness (of 109 documented widgets)
|
|
32
32
|
|
|
33
33
|
| Status | Count | Percentage |
|
|
34
34
|
|--------|-------|------------|
|
|
35
35
|
| **Complete** | 10 | 9% |
|
|
36
|
-
| **Partial** |
|
|
36
|
+
| **Partial** | 99 | 91% |
|
|
37
37
|
| **Minimal (meta only)** | 0 | 0% |
|
|
38
38
|
|
|
39
39
|
---
|
|
@@ -94,6 +94,7 @@ Each widget should have these files following the three-level architecture:
|
|
|
94
94
|
| cf.projektplanung.scheduleTreeTable | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
|
|
95
95
|
| cf.projektplanung.singleGanttLink | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
|
|
96
96
|
| cf.cplace.lowCodeWidgets.lowCodeButton | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
|
|
97
|
+
| cf.cplace.lowCodeWidgets.lowCodeText | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
|
|
97
98
|
| cf.cplace.pageViewHeadline.widget | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
|
|
98
99
|
| cf.cplace.pdfPreview.widget | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
|
|
99
100
|
| cf.cplace.simpleForm.widget | ✓ | ✓ | ✓ | ✗ | 0 | implementation |
|
|
@@ -169,19 +170,19 @@ All widgets now have specification directories.
|
|
|
169
170
|
|
|
170
171
|
### Widgets Missing `_meta.json` (Level 1)
|
|
171
172
|
|
|
172
|
-
All
|
|
173
|
+
All 109 documented widgets have `_meta.json` files.
|
|
173
174
|
|
|
174
175
|
### Widgets Missing `_summary.md` (Level 1)
|
|
175
176
|
|
|
176
|
-
All
|
|
177
|
+
All 109 documented widgets now have `_summary.md` files.
|
|
177
178
|
|
|
178
179
|
### Widgets Missing `_overview.md` (Level 2)
|
|
179
180
|
|
|
180
|
-
All
|
|
181
|
+
All 109 documented widgets now have `_overview.md` files.
|
|
181
182
|
|
|
182
183
|
### Widgets Missing `_implementation.md` (Level 3)
|
|
183
184
|
|
|
184
|
-
|
|
185
|
+
99 widgets need implementation guidance added:
|
|
185
186
|
|
|
186
187
|
**Partial widgets:**
|
|
187
188
|
- `cf.cplace.breadcrumbs.breadcrumbsWidget`
|
|
@@ -205,6 +206,7 @@ All 108 documented widgets now have `_overview.md` files.
|
|
|
205
206
|
- `cf.cplace.landingPageFromPage.quickOverview`
|
|
206
207
|
- `cf.cplace.landingPageFromPage.sessionUserNameWidget`
|
|
207
208
|
- `cf.cplace.lowCodeWidgets.lowCodeButton`
|
|
209
|
+
- `cf.cplace.lowCodeWidgets.lowCodeText`
|
|
208
210
|
- `cf.cplace.pageViewHeadline.widget`
|
|
209
211
|
- `cf.cplace.pdfPreview.widget`
|
|
210
212
|
- `cf.cplace.platform.tableWidget`
|
|
@@ -353,6 +355,7 @@ All widgets now have specification directories. No undocumented widgets remain.
|
|
|
353
355
|
- `de.2lforge.curves.widget` (from undocumented)
|
|
354
356
|
- `de.2lforge.toolbar.dropDownWidget` (from undocumented)
|
|
355
357
|
- `cf.cplace.lowCodeWidgets.lowCodeButton`
|
|
358
|
+
- `cf.cplace.lowCodeWidgets.lowCodeText`
|
|
356
359
|
- `cf.cplace.pageViewHeadline.widget`
|
|
357
360
|
- `cf.cplace.pdfPreview.widget`
|
|
358
361
|
- `cf.cplace.simpleForm.widget`
|
|
@@ -393,18 +396,18 @@ All widgets now have specification directories. No undocumented widgets remain.
|
|
|
393
396
|
- `cf.projektplanung.ganttTaskDemo` (new - from undocumented)
|
|
394
397
|
- `de.2lforge.toolbar.datePickerWidget` (new - from undocumented)
|
|
395
398
|
|
|
396
|
-
All
|
|
399
|
+
All 109 documented widgets now have Level 1 (_meta.json, _summary.md) and Level 2 (_overview.md) documentation. 10 of these are fully Complete with Level 3 documentation.
|
|
397
400
|
|
|
398
401
|
---
|
|
399
402
|
|
|
400
403
|
## Files Missing by Type
|
|
401
404
|
|
|
402
|
-
| File Type | Count Missing | Percentage (of
|
|
405
|
+
| File Type | Count Missing | Percentage (of 109 documented) |
|
|
403
406
|
|-----------|---------------|------------|
|
|
404
407
|
| `_meta.json` | 0 | 0% |
|
|
405
408
|
| `_summary.md` | 0 | 0% |
|
|
406
409
|
| `_overview.md` | 0 | 0% |
|
|
407
|
-
| `_implementation.md` |
|
|
410
|
+
| `_implementation.md` | 99 | 91% |
|
|
408
411
|
|
|
409
412
|
---
|
|
410
413
|
|
|
@@ -154,6 +154,7 @@ This document defines a multi-dimensional tagging system for cplace widgets. Tag
|
|
|
154
154
|
| Widget ID | Widget Name | Tags |
|
|
155
155
|
|-----------|-------------|------|
|
|
156
156
|
| `cf.cplace.lowCodeWidgets.lowCodeButton` | Low-Code Button | `low-code`, `inline-edit` |
|
|
157
|
+
| `cf.cplace.lowCodeWidgets.lowCodeText` | Low-Code Text | `low-code`, `rich-text`, `connected`, `searchable`, `read-only`, `dashboard` |
|
|
157
158
|
| `cf.cplace.simpleForm.widget` | Creation Form | `form`, `attributes`, `inline-edit` |
|
|
158
159
|
| `cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget` | Dynamic Code Block | `low-code`, `rich-text` |
|
|
159
160
|
| `cf.cplace.tuplesWidget.widget` | Tuple | `attributes`, `table`, `time-series`, `inline-edit` |
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Low-Code Text Widget Research
|
|
2
|
+
|
|
3
|
+
## Widget Overview
|
|
4
|
+
|
|
5
|
+
**Widget ID:** `cf.cplace.lowCodeWidgets.lowCodeText`
|
|
6
|
+
**Widget Name:** Low-Code Text
|
|
7
|
+
**Repository:** `cplace-paw`
|
|
8
|
+
**Definition Class:** `cf.cplace.lowCodeWidgets.script.LowCodeTextWidgetDefinition`
|
|
9
|
+
|
|
10
|
+
### Purpose (1-2 Sentence Description)
|
|
11
|
+
|
|
12
|
+
The Low-Code Text widget executes a cplaceJS script and renders the returned string (which may contain HTML) as inline content within a rich string widget. It reactively re-evaluates its script when connected table data or selections change, enabling dynamic computed text that updates without page reload.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Conceptual Documentation
|
|
17
|
+
|
|
18
|
+
### Core Functionality
|
|
19
|
+
|
|
20
|
+
The Low-Code Text widget allows administrators and low-code developers to embed dynamic, script-computed content directly within rich string widgets. When the page loads, the widget evaluates a JavaScript script that has access to contextual data (pages from search, connected tables, or explicit selections) and renders the returned value as HTML text. Unlike the Low-Code Button (which executes on click), the Low-Code Text widget evaluates automatically and updates reactively when its data sources change.
|
|
21
|
+
|
|
22
|
+
### Use Cases
|
|
23
|
+
|
|
24
|
+
#### 1. **Dynamic Computed Values in Rich Text**
|
|
25
|
+
Display calculated or derived information inline within formatted page content:
|
|
26
|
+
- Show aggregated metrics (sums, averages, counts) based on search results
|
|
27
|
+
- Display conditional text based on page attributes or states
|
|
28
|
+
- Render formatted summaries from multiple data sources
|
|
29
|
+
|
|
30
|
+
#### 2. **Reactive Dashboards with Connected Tables**
|
|
31
|
+
Create text content that updates when users interact with connected table widgets:
|
|
32
|
+
- Show details about selected table rows
|
|
33
|
+
- Display summary statistics that update as the table's data changes
|
|
34
|
+
- Render context-specific information based on table selection
|
|
35
|
+
|
|
36
|
+
#### 3. **Internationalized Dynamic Content**
|
|
37
|
+
Generate localized content using the `messages` binding:
|
|
38
|
+
- Display status messages in the user's language
|
|
39
|
+
- Show dynamically computed text with proper localization
|
|
40
|
+
- Combine static rich text layout with dynamic localized values
|
|
41
|
+
|
|
42
|
+
#### 4. **Data-Driven HTML Rendering**
|
|
43
|
+
Generate custom HTML markup based on page data:
|
|
44
|
+
- Create visual indicators (colored badges, progress bars) based on attribute values
|
|
45
|
+
- Render mini-tables or formatted lists from search results
|
|
46
|
+
- Display formatted dates, numbers, or computed expressions
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Configuration Concepts
|
|
51
|
+
|
|
52
|
+
### Script Structure
|
|
53
|
+
|
|
54
|
+
The widget requires a cplaceJS script that returns a value to display. Unlike the Low-Code Button, the script does not need to return an object with methods -- it simply returns the text/HTML to render.
|
|
55
|
+
|
|
56
|
+
Supported return types:
|
|
57
|
+
- **String**: Rendered directly as HTML (sanitized via `RichStringUtilities.clean()`)
|
|
58
|
+
- **Number**: Converted to string
|
|
59
|
+
- **Boolean**: Converted to string
|
|
60
|
+
- **Date**: Converted to string representation
|
|
61
|
+
- **Localized object**: Object with language keys (e.g., `{en: "Hello", de: "Hallo"}`) -- resolved to user's language
|
|
62
|
+
|
|
63
|
+
### Script Bindings
|
|
64
|
+
|
|
65
|
+
The script has access to the following bindings:
|
|
66
|
+
|
|
67
|
+
| Binding | Type | Description |
|
|
68
|
+
|---------|------|-------------|
|
|
69
|
+
| `pages` | `Iterable<WrappedPage>` | Pages from the configured data source (search, selection, or connected table) |
|
|
70
|
+
| `searchResults` | `Iterable<WrappedCustomEntity<?>>` | All search results (if "Include All Search Results" is enabled) |
|
|
71
|
+
| `embeddingPage` | `WrappedPage` | The page on which the widget is embedded |
|
|
72
|
+
| `messages` | `CplaceJSTypeMessageProvider` | Access to internationalized messages defined in the embedding page's type definition |
|
|
73
|
+
|
|
74
|
+
### Main Configuration Options
|
|
75
|
+
|
|
76
|
+
#### 1. **Script Configuration**
|
|
77
|
+
- **Script**: The cplaceJS script that produces the text to display. **Required.**
|
|
78
|
+
|
|
79
|
+
#### 2. **Data Source Options**
|
|
80
|
+
Multiple ways to provide data to the script (same as Low-Code Button):
|
|
81
|
+
|
|
82
|
+
- **Search**: Define a search query whose results are available as the `pages` binding, with optional sort column and order
|
|
83
|
+
- **Connected Table**: Connect to a table widget on the same page
|
|
84
|
+
- **Selection Only**: Only selected rows from the table are available
|
|
85
|
+
- Supports nested connected tables (connected table's own connected table)
|
|
86
|
+
- **Selection**: Manually select specific pages to provide as the `pages` binding
|
|
87
|
+
- **Include All Search Results**: Provides raw search results (not just pages) in the `searchResults` binding
|
|
88
|
+
|
|
89
|
+
### Reactive Behavior
|
|
90
|
+
|
|
91
|
+
The widget re-evaluates its script in response to connected table events:
|
|
92
|
+
|
|
93
|
+
1. **Table data refresh**: When the connected table's data changes, the text widget re-evaluates (unless in "selection only" mode)
|
|
94
|
+
2. **Row selection change**: When the user's row selection changes in the connected table (in "selection only" mode)
|
|
95
|
+
3. **Nested table selection**: When a connected table's own connected table fires a selection event
|
|
96
|
+
|
|
97
|
+
Re-evaluation is performed via an AJAX POST to `EvaluateTextHandler`, which re-runs the script server-side and returns the new HTML text.
|
|
98
|
+
|
|
99
|
+
### Embedding Constraint
|
|
100
|
+
|
|
101
|
+
This widget can **only** be embedded inside rich string widgets (`WidgetEmbedding.INSIDE_RICHSTRING`). It cannot be placed directly on a page layout. It renders without a frame and without padding, making it blend seamlessly into the surrounding rich text content.
|
|
102
|
+
|
|
103
|
+
### Permissions and Access Control
|
|
104
|
+
|
|
105
|
+
- **Embedding Permission**: Only users with "Low-Code permission" (`GlobalPermissions.mayEditLowCode()`) can embed this widget
|
|
106
|
+
- **Script Editing**: The script attribute is only visible/editable to users with Low-Code permission
|
|
107
|
+
|
|
108
|
+
### Integration with Other Widgets
|
|
109
|
+
|
|
110
|
+
The Low-Code Text widget is:
|
|
111
|
+
- **Embedded in**: Rich String widgets (`cf.platform.richString`) or Rich String Without Frame (`cf.cplace.demoWidgets.demoRichString`)
|
|
112
|
+
- **Connected to**: Embedded Search as Table widgets (to react to data/selection changes)
|
|
113
|
+
- **Nested**: Can work with connected tables that are themselves connected to other tables
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Related Concepts
|
|
118
|
+
|
|
119
|
+
### Comparison with Low-Code Button Widget
|
|
120
|
+
|
|
121
|
+
The Low-Code Text is part of a family of Low-Code widgets:
|
|
122
|
+
|
|
123
|
+
| Aspect | Low-Code Text | Low-Code Button |
|
|
124
|
+
|--------|---------------|-----------------|
|
|
125
|
+
| **Purpose** | Display computed text/HTML | Execute actions on click |
|
|
126
|
+
| **Script return** | String, number, date, or localized object | Object with `checkAccess()` and `call()` methods |
|
|
127
|
+
| **Execution** | Automatic on page load + reactive | User-triggered on click |
|
|
128
|
+
| **Execution mode** | Always synchronous | Async (default) or synchronous |
|
|
129
|
+
| **Embedding** | Rich string only | Anywhere, including attribute groups |
|
|
130
|
+
| **Frame** | Never (frameless, no padding) | Configurable |
|
|
131
|
+
| **Data source** | Identical 3-mode grouping | Identical 3-mode grouping |
|
|
132
|
+
|
|
133
|
+
### Low-Code Script Engine
|
|
134
|
+
|
|
135
|
+
The widget uses the cplace Low-Code script engine with:
|
|
136
|
+
- **Sandboxed execution**: Scripts run in a controlled environment
|
|
137
|
+
- **Type safety**: Access to typed wrappers for cplace entities
|
|
138
|
+
- **Search/Filter access**: Scripts can use `Search` and `Filters` classes
|
|
139
|
+
- **HTML sanitization**: Output is cleaned via `RichStringUtilities.clean()`
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Technical Details
|
|
144
|
+
|
|
145
|
+
### Key Classes
|
|
146
|
+
|
|
147
|
+
- **Definition**: `cf.cplace.lowCodeWidgets.script.LowCodeTextWidgetDefinition` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeTextWidgetDefinition.java:35)
|
|
148
|
+
- **Evaluation**: `cf.cplace.lowCodeWidgets.utils.LowCodeTextWidgetUtils` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/utils/LowCodeTextWidgetUtils.java:52)
|
|
149
|
+
- **Handler**: `EvaluateTextHandler` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/handler/EvaluateTextHandler.java:27)
|
|
150
|
+
- **Configuration Type**: `LowCodeWidgetsWidgetTypes.LOW_CODE_TEXT_WIDGET` (cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/LowCodeWidgetsWidgetTypes.java:37)
|
|
151
|
+
|
|
152
|
+
### Frontend Components
|
|
153
|
+
|
|
154
|
+
- **Controller**: `LowCodeTextWidgetCtrl` (cf.cplace.lowCodeWidgets/assets/ts/controllers/LowCodeTextWidgetCtrl.ts:11)
|
|
155
|
+
- **Directive**: `lowCodeTextWidgetDirective` (cf.cplace.lowCodeWidgets/assets/ts/directives/lowCodeTextWidgetDirective.ts:4)
|
|
156
|
+
- **Template**: `lowCodeTextWidgetDefinition.htm` (cf.cplace.lowCodeWidgets/src/main/resources/cf/cplace/lowCodeWidgets/script/lowCodeTextWidgetDefinition.htm)
|
|
157
|
+
|
|
158
|
+
### Configuration Attributes
|
|
159
|
+
|
|
160
|
+
| Attribute | Type | Required | Purpose |
|
|
161
|
+
|-----------|------|----------|---------|
|
|
162
|
+
| `SCRIPT` | SingleString (script) | Yes | The cplaceJS script to execute |
|
|
163
|
+
| `SEARCH` | SingleString (search) | No | Search definition for finding pages |
|
|
164
|
+
| `SORT_COLUMN` | SingleString | No | Column to sort search results by |
|
|
165
|
+
| `SORT_ORDER` | SingleString | No | Sort direction |
|
|
166
|
+
| `CONNECTED_TABLE` | SingleString | No | Widget ID of connected table |
|
|
167
|
+
| `CONNECTED_TABLE_SELECTION_ONLY` | SingleBoolean | No | Use only selected rows |
|
|
168
|
+
| `SELECTION` | MultiPageReference | No | Explicit page references |
|
|
169
|
+
| `DATA_SOURCE` | AttributeGrouping | Yes | Switches between search/connected-table/selection modes |
|
|
170
|
+
| `INCLUDE_ALL_SEARCH_RESULTS` | SingleBoolean | No | Also provide searchResults binding |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Summary
|
|
175
|
+
|
|
176
|
+
The Low-Code Text widget is the declarative counterpart to the Low-Code Button widget. While the button executes user-triggered actions, the text widget automatically evaluates a script and renders the result as HTML content within a rich string widget. Its reactive behavior with connected tables makes it suitable for building dynamic, data-driven page content that updates in response to user interactions elsewhere on the page.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-01-16
|
|
4
4
|
**Phase:** 0 - Discovery
|
|
5
|
-
**Total Widgets in Target List:**
|
|
5
|
+
**Total Widgets in Target List:** 98
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
|
|
11
11
|
| Status | Count |
|
|
12
12
|
|--------|-------|
|
|
13
|
-
| Found |
|
|
13
|
+
| Found | 98 |
|
|
14
14
|
| Not Found | 0 |
|
|
15
15
|
|
|
16
|
-
All
|
|
16
|
+
All 98 target widgets have been mapped to their definition classes.
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
## Widgets with Existing Specs (
|
|
20
|
+
## Widgets with Existing Specs (50)
|
|
21
21
|
|
|
22
22
|
| Widget ID | Repository | Definition Class Path | Status |
|
|
23
23
|
|-----------|------------|----------------------|--------|
|
|
@@ -31,6 +31,7 @@ All 97 target widgets have been mapped to their definition classes.
|
|
|
31
31
|
| cf.cplace.formsWizard.startWizardWidget | cplace-forms-wizard | cf.cplace.formsWizard/src/main/java/cf/cplace/formsWizard/script/StartWizardWidgetDefinition.java | found |
|
|
32
32
|
| cf.cplace.layoutTabsWidget.widget | cplace-paw | cf.cplace.layoutTabsWidget/src/main/java/cf/cplace/layoutTabsWidget/script/LayoutTabsWidgetWidgetDefinition.java | found |
|
|
33
33
|
| cf.cplace.lowCodeWidgets.lowCodeButton | cplace-paw | cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeButtonWidgetDefinition.java | found |
|
|
34
|
+
| cf.cplace.lowCodeWidgets.lowCodeText | cplace-paw | cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeTextWidgetDefinition.java | found |
|
|
34
35
|
| cf.cplace.pageViewHeadline.widget | cplace-paw | cf.cplace.pageViewHeadline/src/main/java/cf/cplace/pageViewHeadline/widget/PageViewHeadlineWidgetDefinition.java | found |
|
|
35
36
|
| cf.cplace.pdfPreview.widget | cplace-paw | cf.cplace.pdfPreview/src/main/java/cf/cplace/pdfPreview/script/PdfPreviewWidgetDefinition.java | found |
|
|
36
37
|
| cf.cplace.platform.attributesGroup | main | cf.cplace.platform/src/main/java/cf/cplace/platform/frontend/widgets/AttributesGroupWidgetDefinition.java | found |
|
|
@@ -139,7 +140,7 @@ All 97 target widgets have been mapped to their definition classes.
|
|
|
139
140
|
| Repository | Widget Count | Base Path |
|
|
140
141
|
|------------|--------------|-----------|
|
|
141
142
|
| main | 24 | /Users/thomasbuechner/dev/repos/main/cf.cplace.platform |
|
|
142
|
-
| cplace-paw |
|
|
143
|
+
| cplace-paw | 23 | /Users/thomasbuechner/dev/repos/cplace-paw |
|
|
143
144
|
| cplace-project-planning | 12 | /Users/thomasbuechner/dev/repos/cplace-project-planning |
|
|
144
145
|
| cplace-forms-wizard | 9 | /Users/thomasbuechner/dev/repos/cplace-forms-wizard |
|
|
145
146
|
| cplace-ecf | 6 | /Users/thomasbuechner/dev/repos/cplace-ecf |
|
package/dist/widget-specifications/_research_from_ga_products/widget-research-generation/widgets.txt
CHANGED
|
@@ -12,6 +12,7 @@ cf.cplace.dynamicCodeBlockWidget.dynamicCodeBlockWidget cplace-utility-widgets c
|
|
|
12
12
|
cf.cplace.formsWizard.startWizardWidget cplace-forms-wizard cf.cplace.formsWizard/src/main/java/cf/cplace/formsWizard/script/StartWizardWidgetDefinition.java
|
|
13
13
|
cf.cplace.layoutTabsWidget.widget cplace-paw cf.cplace.layoutTabsWidget/src/main/java/cf/cplace/layoutTabsWidget/script/LayoutTabsWidgetWidgetDefinition.java
|
|
14
14
|
cf.cplace.lowCodeWidgets.lowCodeButton cplace-paw cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeButtonWidgetDefinition.java
|
|
15
|
+
cf.cplace.lowCodeWidgets.lowCodeText cplace-paw cf.cplace.lowCodeWidgets/src/main/java/cf/cplace/lowCodeWidgets/script/LowCodeTextWidgetDefinition.java
|
|
15
16
|
cf.cplace.pageViewHeadline.widget cplace-paw cf.cplace.pageViewHeadline/src/main/java/cf/cplace/pageViewHeadline/widget/PageViewHeadlineWidgetDefinition.java
|
|
16
17
|
cf.cplace.pdfPreview.widget cplace-paw cf.cplace.pdfPreview/src/main/java/cf/cplace/pdfPreview/script/PdfPreviewWidgetDefinition.java
|
|
17
18
|
cf.cplace.platform.attributesGroup main cf.cplace.platform/src/main/java/cf/cplace/platform/frontend/widgets/AttributesGroupWidgetDefinition.java
|
|
@@ -117,6 +117,18 @@ The Low-Code Button widget can be:
|
|
|
117
117
|
- **Missing data source**: Scripts expecting the `pages` binding will fail if no data source is configured.
|
|
118
118
|
- **Log output ignored**: In synchronous mode, `log.logText()` and `log.logHtml()` output is not displayed to users.
|
|
119
119
|
|
|
120
|
+
## Testing Before Embedding
|
|
121
|
+
|
|
122
|
+
Before embedding a Low-Code Button widget into a rich string attribute, test your cplaceJS script independently to verify it works correctly.
|
|
123
|
+
|
|
124
|
+
**Recommended workflow:**
|
|
125
|
+
1. Write your cplaceJS script (with `checkAccess()` and `call()` methods)
|
|
126
|
+
2. Test the `call()` logic using `cplace_execute_script` with a representative page as the context page
|
|
127
|
+
3. Verify the script executes without errors and produces the expected result
|
|
128
|
+
4. Only then embed the widget via `cplace_richstring_insert_widget` with the tested script in the properties
|
|
129
|
+
|
|
130
|
+
**Why this matters:** A script with errors will produce a broken button once embedded. Debugging scripts inside embedded widgets is significantly harder than debugging them standalone, because the embedded widget rendering does not surface script errors clearly.
|
|
131
|
+
|
|
120
132
|
## Permissions and Access Control
|
|
121
133
|
|
|
122
134
|
- **Embedding Permission**: Only users with "Low-Code permission" (`GlobalPermissions.mayEditLowCode()`) can embed this widget
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Widget": "cf.cplace.lowCodeWidgets.lowCodeText",
|
|
3
|
+
"Description": "{\"en\":\"This widget executes a Low-Code script and renders the result as text/HTML within a rich string widget.\",\"de\":\"Dieses Widget f\\u00fchrt ein Low-Code-Skript aus und gibt das Ergebnis als Text/HTML innerhalb eines Rich-String-Widgets aus.\"}",
|
|
4
|
+
"Localized Name": "{\"en\":\"Low-Code Text\",\"de\":\"Low-Code Text\"}",
|
|
5
|
+
"Icon": "fa-code",
|
|
6
|
+
"Plugin": "cf.cplace.lowCodeWidgets",
|
|
7
|
+
"App": "cf.cplace.platform",
|
|
8
|
+
"Localized App Name": "{\"en\":\"cplace Basis\",\"de\":\"cplace Basis\"}",
|
|
9
|
+
"Repository": "cplace-paw",
|
|
10
|
+
"* Details DE": null,
|
|
11
|
+
"* Details EN": null
|
|
12
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
## Overview
|
|
2
|
+
|
|
3
|
+
This widget executes a cplaceJS script and renders the result as inline HTML content within a rich string widget.
|
|
4
|
+
|
|
5
|
+
The Low-Code Text widget enables dynamic, script-computed content to be embedded directly within rich text layouts. On page load, the widget evaluates a JavaScript script with access to contextual data (pages from search, connected tables, or explicit selections) and renders the returned value as HTML. When connected to a table widget, it reactively re-evaluates whenever the table's data or user selection changes, enabling live-updating computed content without page reload.
|
|
6
|
+
|
|
7
|
+
## Use Cases
|
|
8
|
+
|
|
9
|
+
### Dynamic Computed Values in Rich Text
|
|
10
|
+
Display calculated or derived information inline within formatted page content:
|
|
11
|
+
- Aggregated metrics (sums, averages, counts) from search results
|
|
12
|
+
- Conditional text based on page attributes or states
|
|
13
|
+
- Formatted summaries combining data from multiple sources
|
|
14
|
+
|
|
15
|
+
### Reactive Content Linked to Tables
|
|
16
|
+
Create text that updates when users interact with connected table widgets:
|
|
17
|
+
- Details about selected table rows
|
|
18
|
+
- Summary statistics that update as the table data changes
|
|
19
|
+
- Context-specific information based on the current table selection
|
|
20
|
+
|
|
21
|
+
### Data-Driven HTML Rendering
|
|
22
|
+
Generate custom HTML markup based on page data:
|
|
23
|
+
- Visual indicators (colored badges, progress bars) based on attribute values
|
|
24
|
+
- Mini-tables or formatted lists from search results
|
|
25
|
+
- Formatted dates, numbers, or computed expressions
|
|
26
|
+
|
|
27
|
+
### Internationalized Dynamic Content
|
|
28
|
+
Generate localized content using the `messages` binding to display status messages, computed text, or dynamic values in the user's language.
|
|
29
|
+
|
|
30
|
+
## Script Return Values
|
|
31
|
+
|
|
32
|
+
The script simply returns a value to display (no object structure required, unlike the Low-Code Button):
|
|
33
|
+
- **String**: Rendered as HTML (sanitized)
|
|
34
|
+
- **Number/Boolean/Date**: Converted to string
|
|
35
|
+
- **Localized object**: `{en: "Hello", de: "Hallo"}` -- resolved to user's language
|
|
36
|
+
|
|
37
|
+
## Data Source Options
|
|
38
|
+
|
|
39
|
+
The widget supports three data source modes (identical to the Low-Code Button):
|
|
40
|
+
|
|
41
|
+
**Search**: Define a search query whose results are passed as the `pages` binding. Most common mode.
|
|
42
|
+
|
|
43
|
+
**Connected Table**: Connect to a table widget on the same page. The widget re-evaluates when the table's data changes or when the user's selection changes (if "selection only" is enabled). Supports chained connected tables.
|
|
44
|
+
|
|
45
|
+
**Selection**: Manually select specific pages to provide as the `pages` binding.
|
|
46
|
+
|
|
47
|
+
Additionally, **Include All Search Results** can be enabled to provide raw search results (including non-page entities) via the `searchResults` binding.
|
|
48
|
+
|
|
49
|
+
## Embedding Constraint
|
|
50
|
+
|
|
51
|
+
This widget can **only** be embedded inside rich string widgets. It cannot be placed directly on a page layout. It renders without a frame and without padding, blending seamlessly into surrounding rich text content.
|
|
52
|
+
|
|
53
|
+
## Design Considerations
|
|
54
|
+
|
|
55
|
+
### When to Use This Widget
|
|
56
|
+
- You need dynamic, script-computed content within a rich text layout
|
|
57
|
+
- The content should update reactively based on connected table interactions
|
|
58
|
+
- You want inline computed values (metrics, status text, formatted data) mixed with static rich text
|
|
59
|
+
|
|
60
|
+
### When NOT to Use This Widget
|
|
61
|
+
- For user-triggered actions -- use the **Low-Code Button** instead
|
|
62
|
+
- For standalone chart visualizations -- use **cplaceJS Highcharts** or **cplaceJS Line Chart**
|
|
63
|
+
- For simple static text -- use the **Rich String** widget directly
|
|
64
|
+
|
|
65
|
+
### Script Execution Considerations
|
|
66
|
+
- Scripts execute synchronously during page rendering and on every re-evaluation
|
|
67
|
+
- Keep scripts performant to avoid slow page loads
|
|
68
|
+
- Output HTML is sanitized via `RichStringUtilities.clean()` for security
|
|
69
|
+
|
|
70
|
+
## Testing Before Embedding
|
|
71
|
+
|
|
72
|
+
Before embedding a Low-Code Text widget into a rich string attribute, test your cplaceJS script independently to verify it produces the expected output.
|
|
73
|
+
|
|
74
|
+
**Recommended workflow:**
|
|
75
|
+
1. Write your cplaceJS script
|
|
76
|
+
2. Run it using `cplace_execute_script` with a representative page as the context page
|
|
77
|
+
3. Verify the returned HTML/text is correct
|
|
78
|
+
4. Only then embed the widget via `cplace_richstring_insert_widget` with the tested script in the properties
|
|
79
|
+
|
|
80
|
+
**Why this matters:** A script with errors or unexpected output will produce a broken or empty widget once embedded. Debugging scripts inside embedded widgets is significantly harder than debugging them standalone, because the embedded widget rendering does not surface script errors clearly.
|
|
81
|
+
|
|
82
|
+
## Related Widgets
|
|
83
|
+
|
|
84
|
+
### Low-Code Button (`cf.cplace.lowCodeWidgets.lowCodeButton`)
|
|
85
|
+
The imperative counterpart: executes user-triggered actions on click. Shares the same data source configuration and script bindings but uses a different script structure (`checkAccess()`/`call()` methods).
|
|
86
|
+
|
|
87
|
+
### Rich String (`cf.platform.richString`)
|
|
88
|
+
The typical host widget for Low-Code Text. The rich string provides the static layout structure; embedded Low-Code Text widgets provide dynamic content within it.
|
|
89
|
+
|
|
90
|
+
### Text without Widget Frame (`cf.cplace.demoWidgets.demoRichString`)
|
|
91
|
+
An alternative host widget -- a frameless rich string variant also capable of embedding Low-Code Text widgets.
|
|
92
|
+
|
|
93
|
+
### Embedded Search as Table (`cf.platform.embeddedSearchAsTable`)
|
|
94
|
+
Often used as the connected data source. The table widget provides data or selection events that trigger the Low-Code Text to re-evaluate.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Executes a cplaceJS script and renders the returned text or HTML inline within a rich string widget. Reactively re-evaluates when connected table data or selections change.
|
package/package.json
CHANGED