Skip to content

Commit 4febd03

Browse files
Editor property edit fixes, class compilation add, little refactoring
1 parent 339c969 commit 4febd03

File tree

5 files changed

+44
-17
lines changed

5 files changed

+44
-17
lines changed

import.bat

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
:: This batch script makes the Caché application deployment faster. Replace the path below to your
2-
:: Caché installation and build & import application to Caché only by one command.
1+
:: This batch script makes the Caché application deployment much faster by building and importing
2+
:: the project. Replace the path below to your Caché installation and build & import application to
3+
:: Caché using only one command.
4+
5+
:: Latest NodeJS & Caché 2016.2+ IS REQUIRED TO PROCEED
36

47
:: CHANGE THIS PATH TO YOUR CACHÉ INSTALLATION PATH ON WINDOWS
58
set CACHE_DIR=C:\Program Files\InterSystems\Cache20162

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "cache-visual-editor",
33
"printableName": "Cache Visual Editor",
4-
"version": "0.4.2",
4+
"version": "0.4.3",
55
"description": "Visual class editor for InterSystems Caché",
66
"main": "index.js",
77
"keywords": [

source/cache/VisualEditor.REST.Editor.cls

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ ClassMethod Save() As %Status
2121
znspace ns
2222
}
2323

24+
set propDefs =
25+
##class(%Dictionary.ClassDefinition).%OpenId("%Dictionary.PropertyDefinition").Properties
26+
2427
do %request.Content.%CopyToArray(.classes)
2528
set response = ##class(%ZEN.proxyObject).%New()
2629
set response.error = ""
@@ -29,8 +32,12 @@ ClassMethod Save() As %Status
2932
while (className '= "") {
3033

3134
set errorLog = ""
35+
set changes = 0
3236

33-
do classes(className).Properties.%CopyToArray(.properties)
37+
set properties = ""
38+
if ($ClassName(classes(className).Properties) = "%ZEN.proxyObject") {
39+
do classes(className).Properties.%CopyToArray(.properties)
40+
}
3441
set propertyName = $order(properties(""))
3542
while (propertyName '= "") {
3643
set pDef = ##class(%Dictionary.PropertyDefinition).%OpenId(className_"||"_propertyName)
@@ -41,31 +48,43 @@ ClassMethod Save() As %Status
4148
continue
4249
}
4350

44-
set pDef.Description = properties(propertyName).Description
51+
// iterate over properties defined
52+
set props = properties(propertyName)
53+
for j=1:1:propDefs.Count() {
54+
set pname = propDefs.GetAt(j).Name
55+
if ($data(props.%data(pname))) {
56+
set $PROPERTY(pDef, pname) = $PROPERTY(props, pname)
57+
}
58+
}
59+
4560
set error = $System.Status.GetErrorText(pDef.%Save())
4661
if (error '= "") {
4762
set errorLog = errorLog _ error _ $Char(10)
4863
} else {
49-
set response.modified = response.modified + 1
64+
set changes = changes + 1
5065
}
5166

5267
set propertyName = $order(properties(propertyName))
5368
}
5469

55-
set className = $order(classes(className))
56-
5770
if (errorLog '= "") {
5871
set response.error = response.error _ errorLog
72+
set className = $order(classes(className))
5973
continue
6074
}
6175

62-
set st = $system.OBJ.Compile(className, , .errorLog)
76+
set st = $system.OBJ.Compile(className, "cuk-d", .errorLog)
6377

64-
if (errorLog '= "") {
78+
if (errorLog '= 0) {
6579
set response.error = response.error _ $CHAR(10) _ errorLog
80+
set className = $order(classes(className))
6681
continue
6782
}
6883

84+
set response.modified = response.modified + changes
85+
86+
set className = $order(classes(className))
87+
6988
}
7089

7190
do response.%ToJSON(, "o")

source/client/js/classEditor/card.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export function getCardElement (data) {
6666
head.appendChild(headIcon);
6767
head.appendChild(header);
6868
card.appendChild(head);
69+
//enableItem(head, data);
6970

7071
card.appendChild(getBlock("Parameters", data));
7172
card.appendChild(getBlock("Properties", data));

source/client/js/classEditor/card/item.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import { addChange } from "../changes";
44

55
/**
66
* Creates and returns interactive class block property editor.
7-
* @param data
87
* @param classData
98
* @param classBlockName
109
* @param classBlockPropName
1110
* @returns {Element}
1211
*/
13-
function createView (data, classData, classBlockName, classBlockPropName) {
14-
let container = block(`div`, `detailed`),
12+
function createView (classData, classBlockName, classBlockPropName) {
13+
let isClass = !classBlockName,
14+
data = isClass ? classData : classData[classBlockName][classBlockPropName],
15+
container = block(`div`, `detailed`),
1516
comment = block(`div`, `comment`);
1617
container.appendChild(comment);
1718
comment.setAttribute("contenteditable", "true");
@@ -30,17 +31,20 @@ function createView (data, classData, classBlockName, classBlockPropName) {
3031
* Enables block item interactivity.
3132
* @param {HTMLElement} element
3233
* @param {*} classData
33-
* @param classBlockName
34-
* @param classBlockPropName
34+
* @param [classBlockName]
35+
* @param [classBlockPropName]
3536
*/
3637
export function enableItem (element, classData, classBlockName, classBlockPropName) {
3738

38-
let data = classData[classBlockName][classBlockPropName],
39+
let isClass = !classBlockName,
3940
opened = false,
4041
container;
4142

4243
element.addEventListener("click", () => {
43-
if (!container) container = createView(data, classData, classBlockName, classBlockPropName);
44+
if (!container)
45+
container = isClass
46+
? createView(classData)
47+
: createView(classData, classBlockName, classBlockPropName);
4448
if (opened = !opened) {
4549
insertAfter(container, element);
4650
} else if (container.parentNode) {

0 commit comments

Comments
 (0)