Skip to content

Commit deb3baf

Browse files
NikitaNikita
Nikita
authored and
Nikita
committed
Merge pull request #6 from masterbeer/master
Dependency level control
2 parents 1cc44b0 + 105f2f2 commit deb3baf

File tree

7 files changed

+55
-28
lines changed

7 files changed

+55
-28
lines changed

cache/projectTemplate.xml

+8-7
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,12 @@ Returns structured class tree with all classes available in current namespace</D
8383
<Description>
8484
Return structured data about class.</Description>
8585
<ClassMethod>1</ClassMethod>
86-
<FormalSpec>oData:%ZEN.proxyObject,className:%String</FormalSpec>
86+
<FormalSpec>oData:%ZEN.proxyObject,className:%String,level:%String="",currLevel:%Integer=0</FormalSpec>
8787
<Private>1</Private>
8888
<ReturnType>%ZEN.proxyObject</ReturnType>
8989
<Implementation><![CDATA[
90+
if ((level'="")&&(+currLevel>+level)) quit ""
91+
set currLevel=$increment(currLevel)
9092
set classDefinition = ##class(%Dictionary.ClassDefinition).%OpenId(className)
9193
set compiledClassDefinition = ##class(%Dictionary.CompiledClass).%OpenId(className)
9294
if (classDefinition = "") || (oData.classes.%DispatchGetProperty(classDefinition.Name) '= "") quit ""
@@ -135,10 +137,10 @@ Return structured data about class.</Description>
135137
}
136138
if (..classExists(package _ "." _ p.Type)) {
137139
set oProp.Type = package _ "." _ p.Type
138-
do ..fillClassData(oData, package _ "." _ p.Type)
140+
do ..fillClassData(oData, package _ "." _ p.Type, level, currLevel)
139141
} elseif (..classExists(..extendClassFromType(p.Type))) {
140142
set oProp.Type = ..extendClassFromType(p.Type)
141-
do ..fillClassData(oData, ..extendClassFromType(p.Type))
143+
do ..fillClassData(oData, ..extendClassFromType(p.Type), level, currLevel)
142144
} else {
143145
set oProp.Type = ..extendClassFromType(p.Type)
144146
}
@@ -353,14 +355,14 @@ Returns if class with given name exists.</Description>
353355
<Description>
354356
Returns structured class data</Description>
355357
<ClassMethod>1</ClassMethod>
356-
<FormalSpec>className:%String,namespace:%String</FormalSpec>
358+
<FormalSpec>className:%String,namespace:%String,level:%Integer</FormalSpec>
357359
<ReturnType>%ZEN.proxyObject</ReturnType>
358360
<Implementation><![CDATA[
359361
set baseNamespace = $namespace
360362
zn:$GET(namespace)'="" namespace
361363
set package = $LISTTOSTRING($LIST($LISTFROMSTRING(className, "."), 1, *-1), ".")
362364
set oData = ..getBaseOData(package, baseNamespace, "CLASS:"_className)
363-
do ..fillClassData(oData, className)
365+
do ..fillClassData(oData, className, level)
364366
quit oData
365367
]]></Implementation>
366368
</Method>
@@ -447,7 +449,7 @@ Returns classTree by given class name</Description>
447449
<ReturnType>%Status</ReturnType>
448450
<Implementation><![CDATA[
449451
set className = %request.Get("name")
450-
set classData = ##class(ClassView).getClassView(className, %request.Get("namespace"))
452+
set classData = ##class(ClassView).getClassView(className, %request.Get("namespace"), %request.Get("level"))
451453
do classData.%ToJSON(, "o")
452454
return $$$OK
453455
]]></Implementation>
@@ -461,7 +463,6 @@ Saves the view preferences</Description>
461463
<Implementation><![CDATA[
462464
set name = %request.Get("name")
463465
set content = %request.Content.Read($$$MaxStringLength) // ~ 7mb
464-
set ^test = name
465466
set ^ClassExplorer("savedView", name) = content
466467
write "{""OK"":true}"
467468
return $$$OK

package.json

100644100755
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "CacheClassExplorer",
3-
"version": "1.13.1",
3+
"version": "1.13.4",
44
"description": "Class Explorer for InterSystems Caché",
55
"directories": {
66
"test": "test"

web/index.html

100644100755
+6-1
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,15 @@ <h1>
135135
<td><label for="setting.showQueries">Show Queries</label></td>
136136
<td>Display block with class queries</td>
137137
</tr>
138-
<tr>
138+
<tr>
139139
<td><input id="setting.showXDatas" type="checkbox"/></td>
140140
<td><label for="setting.showXDatas">Show xDatas</label></td>
141141
<td>Display block with class xDatas</td>
142+
</tr>
143+
<tr>
144+
<td><input id="setting.dependencyLevel" type="number" min="0" max="9" step="1" style="width:30px;text-align: center;"></td>
145+
<td><label for="setting.dependencyLevel">Dependency level</label></td>
146+
<td>Dependency level of classes (leave blank for full structure)</td>
142147
</tr>
143148
</tbody>
144149
</table>

web/js/CacheClassExplorer.js

100644100755
+35-16
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,25 @@ var CacheClassExplorer = function (treeViewContainer, classViewContainer) {
5050
showProperties: id("setting.showProperties"),
5151
showMethods: id("setting.showMethods"),
5252
showQueries: id("setting.showQueries"),
53-
showXDatas: id("setting.showXDatas")
53+
showXDatas: id("setting.showXDatas"),
54+
dependencyLevel: id("setting.dependencyLevel")
5455
}
5556
};
56-
57+
var selfAux = this;
5758
var settingsValue = function (name, defaultVal) {
58-
return localStorage.getItem(name) === null ? (defaultVal || false)
59-
: localStorage.getItem(name) === "true"
59+
try{
60+
if (selfAux.elements.settings[name].type=="checkbox") {
61+
return localStorage.getItem(name) === null ? (defaultVal || false)
62+
: localStorage.getItem(name) === "true"
63+
}
64+
if (["text", "number"].indexOf(selfAux.elements.settings[name].type) >= 0) {
65+
var ret = localStorage.getItem(name);
66+
if (ret === null) ret = defaultVal;
67+
return ret;
68+
}
69+
} catch (error) {
70+
return localStorage.getItem(name) === null ? (defaultVal || false)
71+
: localStorage.getItem(name) === "true" }
6072
};
6173

6274
// note: this.elements is required to be modified with the same name as settings keys
@@ -68,7 +80,8 @@ var CacheClassExplorer = function (treeViewContainer, classViewContainer) {
6880
showProperties: settingsValue("showProperties", true),
6981
showMethods: settingsValue("showMethods", true),
7082
showQueries: settingsValue("showQueries", true),
71-
showXDatas: settingsValue("showXDatas", true)
83+
showXDatas: settingsValue("showXDatas", true),
84+
dependencyLevel: settingsValue("dependencyLevel", "")
7285
};
7386

7487
this.UI = new UI(this);
@@ -97,16 +110,21 @@ CacheClassExplorer.prototype.initSettings = function () {
97110
console.warn(st, "is Bred Sivoi Cobyly.");
98111
continue;
99112
}
100-
this.elements.settings[st].checked = this.settings[st];
101-
this.elements.settings[st].addEventListener("change", (function (st) {
102-
return function (e) {
103-
self.elements.settingsExtraText.innerHTML = textChanged;
104-
localStorage.setItem(
105-
st,
106-
self.settings[st] = (e.target || e.srcElement).checked
107-
);
108-
};
109-
})(st));
113+
114+
if (["text", "number"].indexOf(this.elements.settings[st].type) >= 0) this.elements.settings[st].value = this.settings[st];
115+
if (this.elements.settings[st].type == "checkbox") this.elements.settings[st].checked = this.settings[st];
116+
117+
this.elements.settings[st].addEventListener("change", (function (st) {
118+
return function (e) {
119+
self.elements.settingsExtraText.innerHTML = textChanged;
120+
if (["text", "number"].indexOf((e.target || e.srcElement).type) >= 0) self.settings[st] = (e.target || e.srcElement).value
121+
if ((e.target || e.srcElement).type == "checkbox") self.settings[st] = (e.target || e.srcElement).checked
122+
localStorage.setItem(
123+
st,
124+
self.settings[st]
125+
);
126+
};
127+
})(st));
110128
}
111129

112130
};
@@ -153,7 +171,8 @@ CacheClassExplorer.prototype.updateURL = function () {
153171

154172
var obj = {
155173
name: this.classTree.SELECTED_NAME,
156-
type: this.classTree.SELECTED_TYPE
174+
type: this.classTree.SELECTED_TYPE,
175+
level: this.classTree.SELECTED_LEVEL,
157176
};
158177

159178
if (this.NAMESPACE) obj["namespace"] = this.NAMESPACE;

web/js/ClassTree.js

100644100755
+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var ClassTree = function (parent, treeViewContainer) {
1414
this.SELECTED_NAME = null;
1515
this.SELECTED_TYPE = null; // "class" || "package"
1616
this.SELECTED_ELEMENT = null;
17+
this.SELECTED_LEVEL = null;
1718
this.treeObject = null;
1819

1920
this.cacheClassExplorer.elements.classTreeSearch.addEventListener("input", function (e) {

web/js/ClassView.js

100644100755
+2-1
Original file line numberDiff line numberDiff line change
@@ -901,8 +901,9 @@ ClassView.prototype.loadClass = function (className) {
901901

902902
this.cacheClassExplorer.classTree.SELECTED_NAME = className;
903903
this.cacheClassExplorer.classTree.SELECTED_TYPE = "class";
904+
this.cacheClassExplorer.classTree.SELECTED_LEVEL = this.cacheClassExplorer.elements.settings["dependencyLevel"].value;
904905
this.showLoader();
905-
this.cacheClassExplorer.source.getClassView(className, function (err, data) {
906+
this.cacheClassExplorer.source.getClassView(className, this.cacheClassExplorer.classTree.SELECTED_LEVEL, function (err, data) {
906907
//console.log(data);
907908
self.removeLoader();
908909
if (err) {

web/js/Source.js

100644100755
+2-2
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ Source.prototype.getMethod = function (className, methodName, callback) {
5555
* @param {string} className
5656
* @param {Source~dataCallback} callback
5757
*/
58-
Source.prototype.getClassView = function (className, callback) {
59-
58+
Source.prototype.getClassView = function (className, level, callback) {
6059
lib.load(
6160
this.URL + "/GetClassView?name=" + encodeURIComponent(className)
61+
+ "&level=" + encodeURIComponent(level)
6262
+ (this.cue.NAMESPACE ? "&namespace=" + encodeURIComponent(this.cue.NAMESPACE) : ""),
6363
null,
6464
callback

0 commit comments

Comments
 (0)