Skip to content

Commit 7bc51bf

Browse files
XData code editing
1 parent 9ade42a commit 7bc51bf

File tree

4 files changed

+30
-17
lines changed

4 files changed

+30
-17
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "cache-visual-editor",
33
"printableName": "Cache Visual Editor",
44
"packageName": "VisualEditor",
5-
"version": "0.9.1",
5+
"version": "0.9.2",
66
"description": "Visual class editor for InterSystems Caché",
77
"main": "index.js",
88
"keywords": [

source/client/js/classEditor/class/MANIFEST.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,8 @@ export default {
598598
ignore: true,
599599
isCode: true,
600600
returnTypeProperty: "ReturnType",
601-
formalSpecProperty: "FormalSpec"
601+
formalSpecProperty: "FormalSpec",
602+
routineSwitchSupport: true
602603
},
603604
Language: {
604605
default: "",
@@ -800,7 +801,8 @@ export default {
800801
XDatas: {
801802
Data: {
802803
ignore: true, // xData data edit has special controls
803-
default: ""
804+
default: "",
805+
isCode: true
804806
},
805807
Deprecated: {
806808
default: 0,

source/client/js/classEditor/class/code.js

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ function switchToRoutineCode (code) {
2121
return code.replace(/^/, "\t").replace(/\n/g, "\n\t");
2222
}
2323

24-
export function getCodeCaptionView ({ manifest, name, data, savePath }) {
24+
export function getCodeCaptionView ({ memberManifest, codePropertyName, data, savePath }) {
2525

2626
let div = block(`div`, `property-block`),
2727
header = block(`div`),
2828
editBlock = block(`div`, `editor`),
29-
code = (data[name] || "").replace(/\r?\n$/, ``),
30-
returnTypeProp = (manifest[name] || {})["returnTypeProperty"] || ``,
29+
code = (data[codePropertyName] || "").replace(/\r?\n$/, ``),
30+
keywordManifest = (memberManifest[codePropertyName] || {}),
31+
returnTypeProp = keywordManifest["returnTypeProperty"] || ``,
32+
formalSpecProperty = keywordManifest["formalSpecProperty"] || ``,
3133
ROUTINE_SUPPORT = hasRoutineCode(code),
3234
useRoutinesToggle = toggle(ROUTINE_SUPPORT),
3335
useRoutinesBlock = block(`div`, `property-block`),
@@ -42,27 +44,36 @@ export function getCodeCaptionView ({ manifest, name, data, savePath }) {
4244

4345
function saveChanges () {
4446
let value = editor.getValue();
45-
addChange(savePath.concat(name), ROUTINE_SUPPORT ? value : switchToRoutineCode(value));
47+
addChange(
48+
savePath.concat(codePropertyName),
49+
ROUTINE_SUPPORT ? value : switchToRoutineCode(value)
50+
);
4651
}
4752

4853
nb.textContent = `Use Routines`;
4954
vb.appendChild(useRoutinesToggle);
5055
useRoutinesBlock.appendChild(nb);
5156
useRoutinesBlock.appendChild(vb);
52-
signatureElem.appendChild(block(`span`, `secondary`, `Takes `));
53-
signatureElem.appendChild(getFormalSpecEditor({
54-
formalSpec: data[`FormalSpec`],
55-
savePath: savePath.concat(`FormalSpec`)
56-
}));
57+
if (formalSpecProperty) {
58+
signatureElem.appendChild(block(`span`, `secondary`, `Takes `));
59+
signatureElem.appendChild(getFormalSpecEditor({
60+
formalSpec: data[`FormalSpec`],
61+
savePath: savePath.concat(`FormalSpec`)
62+
}));
63+
}
5764
if (returnTypeProp) {
58-
signatureElem.appendChild(block(`span`, `secondary`, ` Returns `));
65+
signatureElem.appendChild(
66+
block(`span`, `secondary`, `${ formalSpecProperty ? " " : "" }Returns `)
67+
);
5968
signatureElem.appendChild(typeInput);
6069
typeInput.addEventListener(`input`, () => {
6170
addChange(savePath.concat(returnTypeProp), typeInput.value);
6271
});
6372
}
6473
header.appendChild(signatureElem);
65-
header.appendChild(useRoutinesBlock);
74+
75+
if (keywordManifest["routineSwitchSupport"])
76+
header.appendChild(useRoutinesBlock);
6677

6778
useRoutinesToggle.checkbox.addEventListener("change", () => {
6879
let value = editor.getValue(),

source/client/js/classEditor/class/member.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ function getMemberDetailedBlock (classData, memberType, classMemberName) {
5656

5757
if (codePropName)
5858
container.appendChild(getCodeCaptionView({
59-
manifest: MANIFEST[isClass ? "Class" : memberType] || {},
60-
name: codePropName,
59+
memberManifest: MANIFEST[isClass ? "Class" : memberType] || {},
60+
codePropertyName: codePropName,
6161
data: data,
6262
savePath
6363
}));
@@ -191,7 +191,7 @@ function enableMember ({
191191
}
192192
headerElement.classList.toggle("opened");
193193

194-
if (classBlockName === "Methods") {
194+
if (classBlockName === "Methods" || classBlockName === "XDatas") {
195195
classData[`__visualCodeBlocksOpened`] += opened ? 1 : -1;
196196
updateGridElement(classData[`__visualClassElement`], {
197197
width: classData[`__visualCodeBlocksOpened`] > 0 ? 2 : 1

0 commit comments

Comments
 (0)