Commit e5705510 authored by Claes Sjofors's avatar Claes Sjofors

Merge branch 'master'

parents d79e489a 673feb15
include $(pwre_dir_symbols)
-include $(pwre_kroot)/tools/bld/src/$(type_name)_generic.mk
exe : $(doc_dir)/sv_se/orm/pwr_basecomponentclasses_h.html \
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_h.html \
$(doc_dir)/sv_se/orm/pwr_basecomponentclasses_hpp.html \
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_hpp.html
$(doc_dir)/sv_se/orm/pwr_basecomponentclasses_h.html : $(inc_dir)/pwr_basecomponentclasses.h
@ echo "Generating html files for struct sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_h.html : $(inc_dir)/pwr_basecomponentclasses.h
@ echo "Generating html files for struct en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
$(doc_dir)/sv_se/orm/pwr_basecomponentclasses_hpp.html : $(inc_dir)/pwr_basecomponentclasses.hpp
@ echo "Generating html files for struct sv_se..."
@ $(co_convert) -c -d $(doc_dir)/sv_se/orm "$(source)"
$(doc_dir)/en_us/orm/pwr_basecomponentclasses_hpp.html : $(inc_dir)/pwr_basecomponentclasses.hpp
@ echo "Generating html files for struct en_us..."
@ $(co_convert) -c -d $(doc_dir)/en_us/orm "$(source)"
...@@ -222,36 +222,6 @@ enum Msg { ...@@ -222,36 +222,6 @@ enum Msg {
GET_OBJECT_FROM_AREF GET_OBJECT_FROM_AREF
} }
class Uint8ArrayHelper {
buf: Uint8Array;
idx: number;
constructor(size, tag) {
this.buf = new Uint8Array(size);
this.buf[0] = tag;
this.idx = 2;
}
pack16Bit(value) {
this.buf[this.idx++] = value & 0xFF;
this.buf[this.idx++] = (value >> 8) & 0xFF;
}
pack32Bit(value) {
this.buf[this.idx++] = value & 0xFF;
this.buf[this.idx++] = (value >> 8) & 0xFF;
this.buf[this.idx++] = (value >> 16) & 0xFF;
this.buf[this.idx++] = (value >> 24) & 0xFF;
}
packString(string) {
this.pack16Bit(string.length);
for (let i = 0; i < string.length; i++) {
this.buf[this.idx++] = string.charCodeAt(i);
}
}
}
class DataViewHelper { class DataViewHelper {
dv: DataView; dv: DataView;
offset = 0; offset = 0;
...@@ -296,21 +266,19 @@ class DataViewHelper { ...@@ -296,21 +266,19 @@ class DataViewHelper {
} }
class Gdh { class Gdh {
debug = false;
pending: Array = [];
sub: Array<Sub> = []; sub: Array<Sub> = [];
static PORT = 4448; static PORT = 4448;
ws: WebSocket = null; ws: WebSocket = null;
return_cb: () => void = null;
next_id = 1234; next_id = 1234;
subscriptionCount = 1; subscriptionCount = 1;
listSent = false; listSent = false;
pending = [];
constructor(open_cb, close_cb = null) { constructor(open_cb, close_cb = null) {
if (window.location.hostname === "") { if (window.location.hostname === "") {
this.ws = new WebSocket("ws:127.0.0.1:4448"); this.ws = new WebSocket("ws:127.0.0.1:" + String(Gdh.PORT));
} else { } else {
this.ws = new WebSocket("ws://" + window.location.hostname + ":4448"); this.ws = new WebSocket("ws://" + window.location.hostname + ":" + String(Gdh.PORT));
} }
this.ws.binaryType = "arraybuffer"; this.ws.binaryType = "arraybuffer";
...@@ -321,217 +289,50 @@ class Gdh { ...@@ -321,217 +289,50 @@ class Gdh {
}; };
this.ws.onclose = function () { this.ws.onclose = function () {
if (this.debug) {
console.log("Socket closed");
}
if (close_cb !== null) { if (close_cb !== null) {
close_cb(); close_cb();
} }
}; };
this.ws.onmessage = function (e) { this.ws.onmessage = function (e) {
if (typeof e.data === "string") {
console.log("String message received", e, e.data);
} else {
if (e.data instanceof ArrayBuffer) {
let dv = new DataViewHelper(e.data); let dv = new DataViewHelper(e.data);
let type = dv.getUint8(); let type = dv.getUint8();
let id = dv.getUint32(); let id = dv.getUint32();
let resolve = this.pending[id];
if (type === Msg.GET_OBJECT_REF_INFO_ALL) {
resolve(new DataViewHelper(e.data));
delete this.pending[id];
} else {
let sts = dv.getUint32(); let sts = dv.getUint32();
let value = this.unpackType(dv, sts, type);
resolve({
"sts": sts,
"value": value
});
delete this.pending[id];
}
};
}
unpackType(dv, sts, type) {
switch (type) { switch (type) {
case Msg.GET_OBJECT_INFO_BOOLEAN: case Msg.GET_OBJECT_INFO_BOOLEAN:
if (this.gdh.debug) { return dv.getUint8();
console.log("GetObjectInfoBoolean received");
}
let value = dv.getUint8();
let func_cb = this.gdh.pending[id].func_cb;
func_cb(id, sts, value);
delete this.gdh.pending[id];
break;
case Msg.GET_OBJECT_INFO_INT: case Msg.GET_OBJECT_INFO_INT:
if (this.gdh.debug) { return dv.getUint32();
console.log("GetObjectInfoInt received");
}
let value = dv.getUint32();
let pending_data = this.gdh.pending[id];
pending_data.func_cb(id, pending_data.data, sts, value);
delete this.gdh.pending[id];
break;
case Msg.GET_OBJECT_INFO_FLOAT: case Msg.GET_OBJECT_INFO_FLOAT:
if (this.gdh.debug) { return dv.getFloat32();
console.log("GetObjectInfoFloat received");
}
let value = dv.getFloat32();
let pending_data = this.gdh.pending[id];
pending_data.func_cb(id, pending_data.data, sts, value);
delete this.gdh.pending[id];
break;
case Msg.GET_OBJECT_INFO_FLOAT_ARRAY: case Msg.GET_OBJECT_INFO_FLOAT_ARRAY:
if (this.gdh.debug) {
console.log("GetObjectInfoFloatArray received");
}
let asize = dv.getInt32(); let asize = dv.getInt32();
let value = new Array(asize); let value = new Array(asize);
for (let i = 0; i < asize; i++) { for (let i = 0; i < asize; i++) {
value[i] = dv.getFloat32(); value[i] = dv.getFloat32();
} }
let pending_data = this.gdh.pending[id]; return value;
pending_data.func_cb(id, pending_data.data, sts, value);
delete this.gdh.pending[id];
break;
case Msg.SET_OBJECT_INFO_BOOLEAN:
if (this.gdh.debug) {
console.log("SetObjectInfoBoolean received", id, sts);
}
break;
case Msg.SET_OBJECT_INFO_INT:
if (this.gdh.debug) {
console.log("SetObjectInfoInt received", id, sts);
}
break;
case Msg.SET_OBJECT_INFO_FLOAT:
if (this.gdh.debug) {
console.log("SetObjectInfoFloat received", id, sts);
}
break;
case Msg.SET_OBJECT_INFO_STRING:
if (this.gdh.debug) {
console.log("SetObjectInfoString received", id, sts);
}
break;
case Msg.TOGGLE_OBJECT_INFO:
if (this.gdh.debug) {
console.log("ToggleObjectInfo received", id, sts);
}
break;
case Msg.REF_OBJECT_INFO:
if (this.gdh.debug) {
console.log("RefObjectInfo received", id, sts);
}
delete this.gdh.pending[id];
break;
case Msg.UNREF_OBJECT_INFO:
if (this.gdh.debug) {
console.log("UnrefObjectInfo received", id, sts);
}
delete this.gdh.pending[id];
break;
case Msg.REF_OBJECT_INFO_LIST:
if (this.gdh.debug) {
console.log("RefObjectInfoList received", id, sts);
}
let func_cb = this.gdh.pending[id].func_cb;
func_cb(id, sts);
delete this.gdh.pending[id];
break;
case Msg.GET_OBJECT_REF_INFO_ALL:
let size = dv.getUint32();
if (this.gdh.debug) {
console.log("GetObjectRefInfoAll received", id, size);
}
for (let i = 0; i < size; i++) {
let eid = dv.getUint32();
let esize = dv.getUint32();
let sub = this.gdh.sub[eid];
if (typeof sub !== 'undefined') {
let value;
switch (sub.type) {
case Type.Boolean:
if (sub.elements <= 1) {
value = dv.getUint8();
} else {
let elements = esize;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
}
value = new Array(elements);
for (let k = 0; k < elements; k++) {
value[k] = dv.getUint8();
}
}
break;
case Type.Float32:
if (sub.elements <= 1) {
value = dv.getFloat32();
} else {
let elements = esize / 4;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
}
value = new Array(elements);
for (let k = 0; k < elements; k++) {
value[k] = dv.getFloat32();
}
}
break;
case Type.Int8:
case Type.Int16:
case Type.Int32:
case Type.UInt8:
case Type.UInt16:
case Type.UInt32:
case Type.Status:
case Type.NetStatus:
case Type.Mask:
case Type.Enum:
case Type.Bit:
if (sub.elements <= 1) {
value = dv.getInt32();
} else {
let elements = esize / 4;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
}
value = new Array(elements);
for (let k = 0; k < elements; k++) {
value[k] = dv.getInt32();
}
}
break;
case Type.String:
case Type.Time:
case Type.DeltaTime:
case Type.AttrRef:
case Type.Objid:
if (sub.elements <= 1) {
value = dv.getString();
} else {
let elements = sub.elements;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
}
value = new Array(elements);
for (let l = 0; l < elements; l++) {
value[l] = dv.getString();
}
}
break;
default:
break;
}
this.gdh.sub[eid].value = value;
}
}
if (typeof this.gdh.pending[id] === 'undefined') {
console.log("** GetObjectRefInfoAll received removed", id);
break;
}
let func_cb = this.gdh.pending[id].func_cb;
func_cb(id, sts);
delete this.gdh.pending[id];
break;
case Msg.GET_ALL_XTT_CHILDREN: case Msg.GET_ALL_XTT_CHILDREN:
let result = []; let result = [];
let size = dv.getUint32(); let size = dv.getUint32();
if (this.gdh.debug) {
console.log("GetAllXttChildren received", id, size);
}
console.log("GetAllXttChildren received", sts, id, size);
for (let i = 0; i < size; i++) { for (let i = 0; i < size; i++) {
let info = new ObjectInfo(); let info = new ObjectInfo();
let vid = dv.getUint32(); let vid = dv.getUint32();
...@@ -544,16 +345,10 @@ class Gdh { ...@@ -544,16 +345,10 @@ class Gdh {
info.classname = dv.getString(); info.classname = dv.getString();
result.push(info); result.push(info);
} }
let pending_data = this.gdh.pending[id]; return result;
pending_data.func_cb(id, pending_data.data, sts, result);
delete this.gdh.pending[id];
break;
case Msg.GET_ALL_CLASS_ATTRIBUTES: case Msg.GET_ALL_CLASS_ATTRIBUTES:
let result = []; let result = [];
let size = dv.getUint32(); let size = dv.getUint32();
if (this.gdh.debug) {
console.log("GetAllClassAttributes received", id, size);
}
for (let i = 0; i < size; i++) { for (let i = 0; i < size; i++) {
let info = new AttributeInfo(); let info = new AttributeInfo();
info.type = dv.getUint32(); info.type = dv.getUint32();
...@@ -564,16 +359,10 @@ class Gdh { ...@@ -564,16 +359,10 @@ class Gdh {
info.classname = dv.getString(); info.classname = dv.getString();
result.push(info); result.push(info);
} }
let pending_data = this.gdh.pending[id]; return result;
pending_data.func_cb(id, pending_data.data, sts, result);
delete this.gdh.pending[id];
break;
case Msg.GET_OBJECT: case Msg.GET_OBJECT:
case Msg.GET_OBJECT_FROM_AREF: case Msg.GET_OBJECT_FROM_AREF:
case Msg.GET_OBJECT_FROM_NAME: case Msg.GET_OBJECT_FROM_NAME:
if (this.gdh.debug) {
console.log("GetObject received", id, sts);
}
let info = null; let info = null;
if (odd(sts)) { if (odd(sts)) {
info = new ObjectInfo(); info = new ObjectInfo();
...@@ -588,18 +377,12 @@ class Gdh { ...@@ -588,18 +377,12 @@ class Gdh {
info.description = dv.getString(); info.description = dv.getString();
info.param1 = dv.getString(); info.param1 = dv.getString();
} }
let pending_data = this.gdh.pending[id]; return info;
pending_data.func_cb(id, pending_data.data, sts, info);
delete this.gdh.pending[id];
break;
case Msg.CRR_SIGNAL: case Msg.CRR_SIGNAL:
let crrtext = null; let crrtext = null;
let result = []; let result = [];
if (odd(sts)) { if (odd(sts)) {
let size = dv.getUint16(); let size = dv.getUint16();
if (this.gdh.debug) {
console.log("CrrSignal received", id, size);
}
for (let i = 0; i < size; i++) { for (let i = 0; i < size; i++) {
let info = new CrrInfo(); let info = new CrrInfo();
info.type = dv.getUint16(); info.type = dv.getUint16();
...@@ -611,16 +394,9 @@ class Gdh { ...@@ -611,16 +394,9 @@ class Gdh {
result.push(info); result.push(info);
} }
} }
let pending_data = this.gdh.pending[id]; return result;
pending_data.func_cb(id, pending_data.data, sts, result);
delete this.gdh.pending[id];
break;
case Msg.GET_OPWIND_MENU: case Msg.GET_OPWIND_MENU:
let result = new OpwindMenuInfo(); let result = new OpwindMenuInfo();
if (this.gdh.debug) {
console.log("GetOpwindMenu received", id);
}
console.log("GetOpwindMenu received", sts, id);
if (odd(sts)) { if (odd(sts)) {
result.title = dv.getString(); result.title = dv.getString();
...@@ -646,39 +422,22 @@ class Gdh { ...@@ -646,39 +422,22 @@ class Gdh {
result.buttons.push(button); result.buttons.push(button);
} }
} }
let pending_data = this.gdh.pending[id]; return result;
pending_data.func_cb(id, pending_data.data, sts, result);
delete this.gdh.pending[id];
break;
case Msg.CHECK_USER: case Msg.CHECK_USER:
if (this.gdh.debug) {
console.log("Check user received", id);
}
console.log("Check user received", sts, id);
let priv = 0; let priv = 0;
if (odd(sts)) { if (odd(sts)) {
priv = dv.getUint32(); priv = dv.getUint32();
} }
let pending_data = this.gdh.pending[id]; return priv;
pending_data.func_cb(id, pending_data.data, sts, priv);
delete this.gdh.pending[id];
break;
case Msg.GET_MSG: case Msg.GET_MSG:
let msg = ""; let msg = "";
if (odd(sts)) { if (odd(sts)) {
msg = dv.getString(); msg = dv.getString();
} }
let pending_data = this.gdh.pending[id]; return msg;
pending_data.func_cb(id, pending_data.data, sts, msg);
delete this.gdh.pending[id];
break;
case Msg.MH_SYNC: case Msg.MH_SYNC:
let result = []; let result = [];
let size = dv.getUint32(); let size = dv.getUint32();
if (this.gdh.debug) {
console.log("MhSync received", id, size);
}
for (let i = 0; i < size; i++) { for (let i = 0; i < size; i++) {
let e = new MhEvent(); let e = new MhEvent();
e.eventTime = dv.getString(); e.eventTime = dv.getString();
...@@ -723,66 +482,66 @@ class Gdh { ...@@ -723,66 +482,66 @@ class Gdh {
e.syncIdx = dv.getUint32(); e.syncIdx = dv.getUint32();
result.push(e); result.push(e);
} }
let pending_data = this.gdh.pending[id]; return result;
pending_data.func_cb(id, pending_data.data, sts, result);
delete this.gdh.pending[id];
break;
case Msg.MH_ACK:
let pending_data = this.gdh.pending[id];
pending_data.func_cb(id, pending_data.data, sts);
delete this.gdh.pending[id];
break;
default: default:
console.log("Unknown message type"); return null;
} }
}
Uint8ArrayHelper(tag) {
let obj = {
buf: [tag, 0],
pack16Bit: function(value) {
this.buf.push(value & 0xFF);
this.buf.push((value >> 8) & 0xFF);
},
pack32Bit: function(value) {
this.buf.push(value & 0xFF);
this.buf.push((value >> 8) & 0xFF);
this.buf.push((value >> 16) & 0xFF);
this.buf.push((value >> 24) & 0xFF);
},
packString: function(string) {
this.pack16Bit(string.length);
for (let i = 0; i < string.length; i++) {
this.buf.push(string.charCodeAt(i));
} }
} }
}; };
obj.pack32Bit(this.next_id);
return obj;
} }
getObjectInfoBoolean(name, return_cb) { getObjectInfoBoolean(name) {
this.return_cb = return_cb; let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_INFO_BOOLEAN);
let helper = new Uint8ArrayHelper(name.length + 6, Msg.GET_OBJECT_INFO_BOOLEAN);
helper.pack32Bit(this.next_id);
helper.packString(name); helper.packString(name);
this.pending[this.next_id] = new PendingData(return_cb, null); return this.sendRequest(helper);
this.ws.send(helper.buf);
this.next_id++;
} }
getObjectInfoInt(name, return_cb, data) { getObjectInfoInt(name) {
this.return_cb = return_cb; let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_INFO_INT);
let helper = new Uint8ArrayHelper(name.length + 6, Msg.GET_OBJECT_INFO_INT);
helper.pack32Bit(this.next_id);
helper.packString(name); helper.packString(name);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
this.ws.send(helper.buf);
this.next_id++;
} }
getObjectInfoFloat(name, return_cb, data) { getObjectInfoIntArray(name, asize) {
this.return_cb = return_cb; let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_INFO_INT_ARRAY);
helper.pack32Bit(asize);
let helper = new Uint8ArrayHelper(name.length + 6, Msg.GET_OBJECT_INFO_FLOAT);
helper.pack32Bit(this.next_id);
helper.packString(name); helper.packString(name);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
this.ws.send(helper.buf);
this.next_id++;
} }
getObjectInfoFloatArray(name, asize, return_cb, data) { getObjectInfoFloat(name) {
this.return_cb = return_cb; let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_INFO_FLOAT);
helper.packString(name);
return this.sendRequest(helper);
}
let helper = new Uint8ArrayHelper(name.length + 10, Msg.GET_OBJECT_INFO_FLOAT_ARRAY); getObjectInfoFloatArray(name, asize) {
helper.pack32Bit(this.next_id); let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_INFO_FLOAT_ARRAY);
helper.pack32Bit(asize); helper.pack32Bit(asize);
helper.packString(name); helper.packString(name);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
this.ws.send(helper.buf);
this.next_id++;
} }
refObjectInfo(name, type, elements) { refObjectInfo(name, type, elements) {
...@@ -794,248 +553,227 @@ class Gdh { ...@@ -794,248 +553,227 @@ class Gdh {
this.sub[this.subscriptionCount] = sub; this.sub[this.subscriptionCount] = sub;
this.subscriptionCount++; this.subscriptionCount++;
if (this.listSent) { if (this.listSent) {
let size = 12 + sub.name.length; let helper = this.Uint8ArrayHelper(Msg.REF_OBJECT_INFO);
let helper = new Uint8ArrayHelper(size + 10, Msg.REF_OBJECT_INFO);
helper.pack32Bit(this.next_id);
if (this.debug) {
console.log("RefObjectInfo: ", sub.refid);
}
helper.pack32Bit(sub.refid); helper.pack32Bit(sub.refid);
helper.pack32Bit(sub.elements); helper.pack32Bit(sub.elements);
helper.packString(sub.name); helper.packString(sub.name);
this.pending[this.next_id] =
new PendingData(this.refObjectInfoReply, null);
if (this.debug) {
console.log("Sending RefObjectInfo", this.next_id, size);
}
this.ws.send(helper.buf); this.ws.send(helper.buf);
this.next_id++;
} }
return sub.refid; return sub.refid;
} }
refObjectInfoReply(id, sts) {
if (this.debug) {
console.log("refObjectInfoReply", id, sts);
}
}
unrefObjectInfo(refid) { unrefObjectInfo(refid) {
let size = 4; let helper = this.Uint8ArrayHelper(Msg.UNREF_OBJECT_INFO);
let helper = new Uint8ArrayHelper(size + 10, Msg.UNREF_OBJECT_INFO);
helper.pack32Bit(this.next_id);
if (this.debug) {
console.log("UnrefObjectInfo: ", refid);
}
helper.pack32Bit(refid); helper.pack32Bit(refid);
this.pending[this.next_id] =
new PendingData(this.unrefObjectInfoReply, null);
if (this.debug) {
console.log("Sending UnrefObjectInfo", this.next_id, size, refid);
}
this.ws.send(helper.buf);
this.next_id++;
delete this.sub[refid]; delete this.sub[refid];
return this.sendRequest(helper);
} }
unrefObjectInfoReply(id, sts) { refObjectInfoList() {
if (this.debug) {
console.log("unrefObjectInfoReply", id, sts);
}
}
refObjectInfoList(return_cb) {
let size = 0; let size = 0;
let len = 0; let len = 0;
this.return_cb = return_cb;
for (let i in this.sub) { for (let i in this.sub) {
size += 12 + this.sub[i].name.length; size += 12 + this.sub[i].name.length;
len++; len++;
} }
let helper = new Uint8ArrayHelper(size + 10, Msg.REF_OBJECT_INFO_LIST); let helper = this.Uint8ArrayHelper(Msg.REF_OBJECT_INFO_LIST);
helper.pack32Bit(this.next_id);
helper.pack32Bit(len); helper.pack32Bit(len);
this.sub.slice(1).forEach(function (s) { this.sub.slice(1).forEach(function (s) {
if (this.debug) {
console.log("RefObjectInfoList: ", s.refid);
}
helper.pack32Bit(s.refid); helper.pack32Bit(s.refid);
helper.pack32Bit(s.elements); helper.pack32Bit(s.elements);
helper.packString(s.name); helper.packString(s.name);
}); });
this.pending[this.next_id] = new PendingData(return_cb, null);
if (this.debug) {
console.log("Sending RefObjectInfoList", this.next_id, size, this.next_id);
}
this.ws.send(helper.buf);
this.next_id++;
this.listSent = true; this.listSent = true;
return this.sendRequest(helper);
} }
refObjectInfoListReply(id, sts) { getRefObjectInfoAll(return_cb) {
if (this.debug) { let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_REF_INFO_ALL);
console.log("refObjectInfoListReply", id, sts); this.sendRequest(helper).then(function (dv) {
let type = dv.getUint8();
let id = dv.getUint32();
let sts = dv.getUint32();
let size = dv.getUint32();
for (let i = 0; i < size; i++) {
let eid = dv.getUint32();
let esize = dv.getUint32();
let sub = this.gdh.sub[eid];
if (typeof sub !== 'undefined') {
let value;
switch (sub.type) {
case Type.Boolean:
if (sub.elements <= 1) {
value = dv.getUint8();
} else {
let elements = esize;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
} }
value = new Array(elements);
for (let k = 0; k < elements; k++) {
value[k] = dv.getUint8();
} }
getRefObjectInfoAll(return_cb) {
let helper = new Uint8ArrayHelper(6, Msg.GET_OBJECT_REF_INFO_ALL);
helper.pack32Bit(this.next_id);
this.pending[this.next_id] = new PendingData(return_cb, null);
if (this.debug) {
console.log("Sending getRefObjectInfoAll", this.next_id);
} }
this.ws.send(helper.buf); break;
this.next_id++; case Type.Float32:
if (sub.elements <= 1) {
value = dv.getFloat32();
} else {
let elements = esize / 4;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
}
value = new Array(elements);
for (let k = 0; k < elements; k++) {
value[k] = dv.getFloat32();
} }
getRefObjectInfoAllReply(id, sts) {
if (this.debug) {
console.log("getRefObjectInfoAllReply", id, sts);
} }
break;
case Type.Int8:
case Type.Int16:
case Type.Int32:
case Type.UInt8:
case Type.UInt16:
case Type.UInt32:
case Type.Status:
case Type.NetStatus:
case Type.Mask:
case Type.Enum:
case Type.Bit:
if (sub.elements <= 1) {
value = dv.getInt32();
} else {
let elements = esize / 4;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
}
value = new Array(elements);
for (let k = 0; k < elements; k++) {
value[k] = dv.getInt32();
}
}
break;
case Type.String:
case Type.Time:
case Type.DeltaTime:
case Type.AttrRef:
case Type.Objid:
if (sub.elements <= 1) {
value = dv.getString();
} else {
let elements = sub.elements;
if (elements !== sub.elements) {
console.log("Subscription size error", elements,
sub.elements, eid);
}
value = new Array(elements);
for (let l = 0; l < elements; l++) {
value[l] = dv.getString();
}
}
break;
default:
break;
}
this.gdh.sub[eid].value = value;
}
}
if (typeof this.gdh.pending[id] === 'undefined') {
console.log("** GetObjectRefInfoAll received removed", id);
return;
}
return_cb();
});
} }
getObjectRefInfo(id) { getObjectRefInfo(id) {
if (this.debug) {
console.log("getObjectRefInfo", id, this.sub[id].value);
}
return this.sub[id].value; return this.sub[id].value;
} }
setObjectInfoBoolean(name, value) { setObjectInfoBoolean(name, value) {
let helper = new Uint8ArrayHelper(12 + name.length, Msg.SET_OBJECT_INFO_BOOLEAN); let helper = this.Uint8ArrayHelper(Msg.SET_OBJECT_INFO_BOOLEAN);
helper.pack32Bit(this.next_id);
helper.pack32Bit(value); helper.pack32Bit(value);
helper.packString(name); helper.packString(name);
this.ws.send(helper.buf); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending setObjectInfoBoolean", this.next_id, name, value);
}
this.next_id++;
return 1;
} }
setObjectInfoInt(name, value) { setObjectInfoInt(name, value) {
let helper = new Uint8ArrayHelper(12 + name.length, Msg.SET_OBJECT_INFO_INT); let helper = this.Uint8ArrayHelper(Msg.SET_OBJECT_INFO_INT);
helper.pack32Bit(this.next_id);
helper.pack32Bit(value); helper.pack32Bit(value);
helper.packString(name); helper.packString(name);
// this.pending[this.next_id] = new PendingData( return_cb, null); return this.sendRequest(helper);
this.ws.send(helper.buf);
if (this.debug) {
console.log("Sending setObjectInfoInt", this.next_id, name, value);
}
this.next_id++;
return 1;
} }
setObjectInfoFloat(name, value) { setObjectInfoFloat(name, value) {
let helper = new Uint8ArrayHelper(12 + name.length, Msg.SET_OBJECT_INFO_FLOAT); let helper = this.Uint8ArrayHelper(Msg.SET_OBJECT_INFO_FLOAT);
helper.pack32Bit(this.next_id);
let fbuf = new ArrayBuffer(4); let fbuf = new ArrayBuffer(4);
let fa = new Float32Array(fbuf); let fa = new Float32Array(fbuf);
fa[0] = value; fa[0] = value;
let ba = new Uint8Array(fbuf); let ba = new Uint8Array(fbuf);
helper.buf[helper.idx++] = ba[0]; helper.buf.push(ba[0]);
helper.buf[helper.idx++] = ba[1]; helper.buf.push(ba[1]);
helper.buf[helper.idx++] = ba[2]; helper.buf.push(ba[2]);
helper.buf[helper.idx++] = ba[3]; helper.buf.push(ba[3]);
helper.packString(name); helper.packString(name);
// this.pending[this.next_id] = new PendingData( return_cb, null); return this.sendRequest(helper);
this.ws.send(helper.buf);
if (this.debug) {
console.log("Sending setObjectInfoFloat", this.next_id, name, value);
}
this.next_id++;
return 1;
} }
setObjectInfoString(name, value) { setObjectInfoString(name, value) {
let helper = new Uint8ArrayHelper(10 + value.length + name.length, Msg.SET_OBJECT_INFO_STRING); let helper = this.Uint8ArrayHelper(Msg.SET_OBJECT_INFO_STRING);
helper.pack32Bit(this.next_id);
helper.packString(value); helper.packString(value);
helper.packString(name); helper.packString(name);
// this.pending[this.next_id] = new PendingData( return_cb, null); return this.sendRequest(helper);
this.ws.send(helper.buf);
if (this.debug) {
console.log("Sending setObjectInfoString", this.next_id, name, value);
} }
this.next_id++;
return 1; setObjectInfo(name, value, type) {
if (type === Type.Boolean) {
return this.setObjectInfoBoolean(name, value);
} else if (type === Type.Float32 || type === Type.Float64) {
return this.setObjectInfoFloat(name, value);
} else if (type === Type.String) {
return this.setObjectInfoString(name, value);
} else {
return this.setObjectInfoInt(name, value);
}
} }
toggleObjectInfo(name) { toggleObjectInfo(name) {
let helper = new Uint8ArrayHelper(8 + name.length, Msg.TOGGLE_OBJECT_INFO); let helper = this.Uint8ArrayHelper(Msg.TOGGLE_OBJECT_INFO);
helper.pack32Bit(this.next_id);
helper.packString(name); helper.packString(name);
// this.pending[this.next_id] = new PendingData( return_cb, null); return this.sendRequest(helper);
this.ws.send(helper.buf);
if (this.debug) {
console.log("Sending toggleObjectInfo", this.next_id, name);
} }
this.next_id++;
return 1; getAllXttChildren(oid) {
} let helper = this.Uint8ArrayHelper(Msg.GET_ALL_XTT_CHILDREN);
getAllXttChildren(oid, return_cb, data) {
let helper = new Uint8ArrayHelper(14, Msg.GET_ALL_XTT_CHILDREN);
helper.pack32Bit(this.next_id);
helper.pack32Bit(oid.vid); helper.pack32Bit(oid.vid);
helper.pack32Bit(oid.oix); helper.pack32Bit(oid.oix);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending getAllXttChildren", this.next_id);
}
this.ws.send(helper.buf);
this.next_id++;
} }
getAllClassAttributes(cid, oid, return_cb, data) { getAllClassAttributes(cid, oid) {
let helper = new Uint8ArrayHelper(18, Msg.GET_ALL_CLASS_ATTRIBUTES); let helper = this.Uint8ArrayHelper(Msg.GET_ALL_CLASS_ATTRIBUTES);
helper.pack32Bit(this.next_id);
helper.pack32Bit(cid); helper.pack32Bit(cid);
helper.pack32Bit(oid.vid); helper.pack32Bit(oid.vid);
helper.pack32Bit(oid.oix); helper.pack32Bit(oid.oix);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending getAllClassAttributes", this.next_id, cid, oid.vid,
oid.oix);
}
this.ws.send(helper.buf);
this.next_id++;
} }
getObject(oid, op, return_cb, data) { getObject(oid, op) {
let helper = new Uint8ArrayHelper(16, Msg.GET_OBJECT); let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT);
helper.pack32Bit(this.next_id);
helper.pack16Bit(op); helper.pack16Bit(op);
helper.pack32Bit(oid.vid); helper.pack32Bit(oid.vid);
helper.pack32Bit(oid.oix); helper.pack32Bit(oid.oix);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending getObject", this.next_id, oid.vid, oid.oix);
}
this.ws.send(helper.buf);
this.next_id++;
} }
getObjectFromAref(aref, op, return_cb, data) { getObjectFromAref(aref, op) {
let helper = new Uint8ArrayHelper(32, Msg.GET_OBJECT_FROM_AREF); let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_FROM_AREF);
helper.pack32Bit(this.next_id);
helper.pack16Bit(op); helper.pack16Bit(op);
helper.pack32Bit(aref.objid.vid); helper.pack32Bit(aref.objid.vid);
helper.pack32Bit(aref.objid.oix); helper.pack32Bit(aref.objid.oix);
...@@ -1043,101 +781,61 @@ class Gdh { ...@@ -1043,101 +781,61 @@ class Gdh {
helper.pack32Bit(aref.body); helper.pack32Bit(aref.body);
helper.pack32Bit(aref.size); helper.pack32Bit(aref.size);
helper.pack32Bit(aref.flags); helper.pack32Bit(aref.flags);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending getObject", this.next_id, aref.objid.vid, aref.objid.oix);
}
this.ws.send(helper.buf);
this.next_id++;
} }
getObjectFromName(name, op, return_cb, data) { getObjectFromName(name, op) {
let helper = new Uint8ArrayHelper(10 + name.length, Msg.GET_OBJECT_FROM_NAME); let helper = this.Uint8ArrayHelper(Msg.GET_OBJECT_FROM_NAME);
helper.pack32Bit(this.next_id);
helper.pack16Bit(op); helper.pack16Bit(op);
helper.packString(name); helper.packString(name);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending getObjectFromName", this.next_id, name);
}
this.ws.send(helper.buf);
this.next_id++;
} }
crrSignal(oid, return_cb, data) { crrSignal(oid) {
let helper = new Uint8ArrayHelper(14, Msg.CRR_SIGNAL); let helper = this.Uint8ArrayHelper(Msg.CRR_SIGNAL);
helper.pack32Bit(this.next_id);
helper.pack32Bit(oid.vid); helper.pack32Bit(oid.vid);
helper.pack32Bit(oid.oix); helper.pack32Bit(oid.oix);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending crrObject", this.next_id, oid.vid, oid.oix);
}
this.ws.send(helper.buf);
this.next_id++;
} }
getOpwindMenu(name, return_cb, data) { getOpwindMenu(name) {
let helper = new Uint8ArrayHelper(8 + name.length, Msg.GET_OPWIND_MENU); let helper = this.Uint8ArrayHelper(Msg.GET_OPWIND_MENU);
helper.pack32Bit(this.next_id);
helper.packString(name); helper.packString(name);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending getOpwindMenu", this.next_id);
}
this.ws.send(helper.buf);
this.next_id++;
} }
login(user, passwd, return_cb, data) { login(user, passwd) {
let helper = new Uint8ArrayHelper(6 + 2 + user.length + 2 + passwd.length, Msg.CHECK_USER); let helper = this.Uint8ArrayHelper(Msg.CHECK_USER);
helper.pack32Bit(this.next_id);
helper.packString(user); helper.packString(user);
helper.packString(passwd); helper.packString(passwd);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending login", this.next_id);
}
this.ws.send(helper.buf);
this.next_id++;
} }
getMsg(value, return_cb, data) { getMsg(value) {
let helper = new Uint8ArrayHelper(10, Msg.GET_MSG); let helper = this.Uint8ArrayHelper(Msg.GET_MSG);
helper.pack32Bit(this.next_id);
helper.pack32Bit(value); helper.pack32Bit(value);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
this.ws.send(helper.buf);
if (this.debug) {
console.log("Sending getMsg", this.next_id, value);
}
this.next_id++;
} }
mhSync(sync, return_cb, data) { mhSync(sync) {
let helper = new Uint8ArrayHelper(10, Msg.MH_SYNC); let helper = this.Uint8ArrayHelper(Msg.MH_SYNC);
helper.pack32Bit(this.next_id);
helper.pack32Bit(sync); helper.pack32Bit(sync);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending mhSync", this.next_id);
}
this.ws.send(helper.buf);
this.next_id++;
} }
mhAcknowledge(event_id, return_cb, data) { mhAcknowledge(event_id) {
let helper = new Uint8ArrayHelper(16 + event_id.birthTime.length, Msg.MH_ACK); let helper = this.Uint8ArrayHelper(Msg.MH_ACK);
helper.pack32Bit(this.next_id);
helper.pack32Bit(event_id.nix); helper.pack32Bit(event_id.nix);
helper.pack32Bit(event_id.idx); helper.pack32Bit(event_id.idx);
helper.packString(event_id.birthTime); helper.packString(event_id.birthTime);
this.pending[this.next_id] = new PendingData(return_cb, data); return this.sendRequest(helper);
if (this.debug) {
console.log("Sending mhAcknowledge", this.next_id);
} }
console.log("Sending mhAcknowledge", this.next_id);
this.ws.send(helper.buf); sendRequest(data) {
return new Promise((resolve, reject) => {
this.pending[this.next_id] = resolve;
this.next_id++; this.next_id++;
this.ws.send(Uint8Array.from(data.buf));
});
} }
} }
\ No newline at end of file
...@@ -707,7 +707,6 @@ class GDraw { ...@@ -707,7 +707,6 @@ class GDraw {
class PlowCtx { class PlowCtx {
gdh: Gdh = null; gdh: Gdh = null;
debug = false;
nodraw = 0; nodraw = 0;
zoom_factor = 20.0; zoom_factor = 20.0;
base_zoom_factor = 20.0; base_zoom_factor = 20.0;
......
...@@ -95,7 +95,7 @@ class Ev { ...@@ -95,7 +95,7 @@ class Ev {
console.log("toolitem2", o.userdata.e.supObject.vid, console.log("toolitem2", o.userdata.e.supObject.vid,
o.userdata.e.supObject.oix); o.userdata.e.supObject.oix);
this.ctx.gdh.getObjectFromAref(o.userdata.e.supObject, this.ctx.gdh.getObjectFromAref(o.userdata.e.supObject,
GdhOp.GET_OP_SELF, this.open_navigator_cb, null); GdhOp.GET_OP_SELF).then(this.open_navigator_cb);
console.log("toolitem2 event"); console.log("toolitem2 event");
}); });
// Trace sup object // Trace sup object
...@@ -106,18 +106,16 @@ class Ev { ...@@ -106,18 +106,16 @@ class Ev {
if (o === null) { if (o === null) {
return; return;
} }
let newwindow = window.open("", "_blank");
this.ctx.gdh.getObjectFromAref(o.userdata.e.supObject, this.ctx.gdh.getObjectFromAref(o.userdata.e.supObject,
GdhOp.GET_OP_METHOD_PLC, this.open_plc_cb, newwindow); GdhOp.GET_OP_METHOD_PLC).then(this.open_plc_cb);
}); });
// Graph event name // Graph event name
document.getElementById("toolitem4") document.getElementById("toolitem4")
.addEventListener("click", function (event) { .addEventListener("click", function (event) {
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof EvItemAlarm) { if (o.userdata instanceof EvItemAlarm) {
let newwindow = window.open("", "_blank");
this.ctx.gdh.getObjectFromName(o.userdata.e.eventName, this.ctx.gdh.getObjectFromName(o.userdata.e.eventName,
GdhOp.GET_OP_METHOD_GRAPH, this.open_graph_cb, newwindow); GdhOp.GET_OP_METHOD_GRAPH).then(this.open_graph_cb);
} }
}); });
// Object raph event name // Object raph event name
...@@ -125,9 +123,8 @@ class Ev { ...@@ -125,9 +123,8 @@ class Ev {
.addEventListener("click", function (event) { .addEventListener("click", function (event) {
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof EvItemAlarm) { if (o.userdata instanceof EvItemAlarm) {
let newwindow = window.open("", "_blank");
this.ctx.gdh.getObjectFromName(o.userdata.e.eventName, this.ctx.gdh.getObjectFromName(o.userdata.e.eventName,
GdhOp.GET_OP_METHOD_OBJECTGRAPH, this.open_graph_cb, newwindow); GdhOp.GET_OP_METHOD_OBJECTGRAPH).then(this.open_graph_cb);
} }
}); });
// Navigator event name // Navigator event name
...@@ -147,9 +144,8 @@ class Ev { ...@@ -147,9 +144,8 @@ class Ev {
if (o === null) { if (o === null) {
return; return;
} }
let newwindow = window.open("", "_blank");
this.ctx.gdh.getObjectFromName(o.userdata.e.eventName, this.ctx.gdh.getObjectFromName(o.userdata.e.eventName,
GdhOp.GET_OP_METHOD_PLC, this.open_plc_cb, newwindow); GdhOp.GET_OP_METHOD_PLC).then(this.open_plc_cb);
console.log("toolitem7 event"); console.log("toolitem7 event");
}); });
// History event name // History event name
...@@ -175,7 +171,7 @@ class Ev { ...@@ -175,7 +171,7 @@ class Ev {
if (o === null) { if (o === null) {
return; return;
} }
this.ctx.gdh.crrSignal(o.userdata.e.eventName, this.open_crr_cb, o); this.ctx.gdh.crrSignal(o.userdata.e.eventName).then(this.open_crr_cb(o));
console.log("toolitem10 event"); console.log("toolitem10 event");
}); });
// Help event name // Help event name
...@@ -192,12 +188,10 @@ class Ev { ...@@ -192,12 +188,10 @@ class Ev {
return; return;
} }
if (o.userdata instanceof EvItemAlarm) { if (o.userdata instanceof EvItemAlarm) {
let newwindow = window.open("", "_blank");
this.ctx.gdh.getObjectFromName(o.userdata.e.eventName, this.ctx.gdh.getObjectFromName(o.userdata.e.eventName,
GdhOp.GET_OP_METHOD_HELPCLASS, this.open_helpclass_cb, newwindow); GdhOp.GET_OP_METHOD_HELPCLASS).then(this.open_helpclass_cb);
} }
}); });
} }
is_authorized(access) { is_authorized(access) {
...@@ -206,25 +200,26 @@ class Ev { ...@@ -206,25 +200,26 @@ class Ev {
gdh_init_cb() { gdh_init_cb() {
if (!this.priv) { if (!this.priv) {
this.ctx.gdh.login("", "", this.login_cb, this); this.ctx.gdh.login("", "").then(this.login_cb);
} }
//this.ctx.gdh.mhSync( this.mhSyncIdx, this.sync_cb, this); //this.ctx.gdh.mhSync(this.mhSyncIdx).then(this.sync_cb);
this.ctx.gdh.listSent = true; this.ctx.gdh.listSent = true;
this.trace_cyclic(); this.trace_cyclic();
} }
login_cb(id, data, sts, result) { login_cb(res) {
console.log("Login:", sts, result); console.log("Login:", res.sts, res.value);
this.priv = (sts & 1) ? result : 0; this.priv = (res.sts & 1) ? res.value : 0;
} }
sync_cb(id, data, sts, result) { sync_cb(res) {
if (!(sts & 1)) { if (!(res.sts & 1)) {
return; return;
} }
let result = res.value;
if (result.length === 0) { if (result.length === 0) {
return; return;
} }
...@@ -326,7 +321,7 @@ class Ev { ...@@ -326,7 +321,7 @@ class Ev {
let item = node.get_userdata(); let item = node.get_userdata();
console.log("Ack", item.e.eventText); console.log("Ack", item.e.eventText);
this.ctx.gdh.mhAcknowledge(item.e.eventId, this.ack_cb, this); this.ctx.gdh.mhAcknowledge(item.e.eventId).then(this.ack_cb);
if (item.e.eventStatus & EventStatus.NotRet) { if (item.e.eventStatus & EventStatus.NotRet) {
item.e.eventStatus &= ~EventStatus.NotAck; item.e.eventStatus &= ~EventStatus.NotAck;
...@@ -338,24 +333,28 @@ class Ev { ...@@ -338,24 +333,28 @@ class Ev {
this.ctx.draw(); this.ctx.draw();
} }
ack_cb(id, data, sts) { ack_cb(res) {
console.log("ack sts", sts); console.log("ack sts", res.sts);
} }
open_objectgraph_cb(id, data, sts, result) { open_objectgraph_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
data.location.href = let result = res.value;
w.location.href =
"ge.html?graph=" + result.param1 + "&instance=" + result.fullname; "ge.html?graph=" + result.param1 + "&instance=" + result.fullname;
data.document.title = result.fullname; w.document.title = result.fullname;
} }
} }
open_graph_cb(id, data, sts, result) { open_graph_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
let result = res.value;
let idx = result.param1.indexOf('.'); let idx = result.param1.indexOf('.');
if (idx !== -1) { if (idx !== -1) {
result.param1 = result.param1.substring(0, idx); result.param1 = result.param1.substring(0, idx);
...@@ -366,62 +365,61 @@ class Ev { ...@@ -366,62 +365,61 @@ class Ev {
instancestr = "&instance=" + result.fullname; instancestr = "&instance=" + result.fullname;
} }
data.location.href = "ge.html?graph=" + result.param1 + instancestr; w.location.href = "ge.html?graph=" + result.param1 + instancestr;
data.document.title = result.param1; w.document.title = result.param1;
} }
} }
open_plc_cb(id, data, sts, result) { open_plc_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
} else { w.document.write("Error status " + res.sts);
let param1;
if (result.param1 === "") {
param1 = "";
} else { } else {
param1 = "&obj=" + result.param1; let result = res.value;
} let param1 = result.param1 ? ("&obj=" + result.param1) : "";
console.log("flow.html?vid=" + result.objid.vid + "&oix=" + console.log("flow.html?vid=" + result.objid.vid + "&oix=" +
result.objid.oix + param1); result.objid.oix + param1);
data.location.href = w.location.href =
"flow.html?vid=" + result.objid.vid + "&oix=" + result.objid.oix + "flow.html?vid=" + result.objid.vid + "&oix=" + result.objid.oix +
param1; param1;
data.document.title = "Trace " + result.fullname; w.document.title = "Trace " + result.fullname;
} }
} }
open_navigator_cb(id, data, sts, result) { open_navigator_cb(res) {
console.log("Open navigator", sts); console.log("Open navigator", res.sts);
if ((sts & 1) === 0) { if ((res.sts & 1) === 0) {
console.log("Error status " + sts); console.log("Error status " + res.sts);
} else { } else {
localStorage.setItem("XttMethodNavigator", result.fullname); localStorage.setItem("XttMethodNavigator", res.value.fullname);
console.log("storage", localStorage.getItem("XttMethodNavigator")); console.log("storage", localStorage.getItem("XttMethodNavigator"));
} }
} }
open_objectgraph_cb(id, data, sts, result) { open_objectgraph_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
let classname = result.classname.toLowerCase(); let classname = res.value.classname.toLowerCase();
if (classname.substring(0, 1) === "$") { if (classname.substring(0, 1) === "$") {
classname = classname.substring(1); classname = classname.substring(1);
} }
let graphname = "pwr_c_" + classname; let graphname = "pwr_c_" + classname;
data.location.href = w.location.href =
"ge.html?graph=" + graphname + "&instance=" + result.fullname; "ge.html?graph=" + graphname + "&instance=" + res.value.fullname;
data.document.title = graphname + " " + result.fullname; w.document.title = graphname + " " + res.value.fullname;
} }
} }
open_helpclass_cb(id, data, sts, result) { open_helpclass_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
console.log("open_helpclass", result.param1); console.log("open_helpclass", res.value.param1);
data.location.href = w.location.href =
location.protocol + "//" + location.host + result.param1; location.protocol + "//" + location.host + res.value.param1;
} }
} }
...@@ -442,12 +440,12 @@ class Ev { ...@@ -442,12 +440,12 @@ class Ev {
} }
trace_cyclic() { trace_cyclic() {
this.ctx.gdh.mhSync(this.mhSyncIdx, this.sync_cb, this); this.ctx.gdh.mhSync(this.mhSyncIdx).then(this.sync_cb);
this.timer = setTimeout(this.trace_cyclic, 1000); this.timer = setTimeout(this.trace_cyclic, 1000);
} }
trace_scan(id, sts) { trace_scan(res) {
this.scan_update = false; this.scan_update = false;
if (this.scan_update) { if (this.scan_update) {
this.ctx.draw(); this.ctx.draw();
...@@ -581,17 +579,13 @@ class Ev { ...@@ -581,17 +579,13 @@ class Ev {
case Event.Key_CtrlL: case Event.Key_CtrlL:
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof EvItemAlarm) { if (o.userdata instanceof EvItemAlarm) {
let newwindow = window.open("", "_blank"); this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC).then(this.open_plc_cb);
this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC,
this.open_plc_cb, newwindow);
} }
break; break;
case Event.Key_CtrlG: case Event.Key_CtrlG:
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof EvItemAlarm) { if (o.userdata instanceof EvItemAlarm) {
let newwindow = window.open("", "_blank"); this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC).then(this.open_objectgraph_cb);
this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC,
this.open_objectgraph_cb, newwindow);
} }
break; break;
default: default:
......
...@@ -1551,7 +1551,6 @@ class FlowCtx extends Rect { ...@@ -1551,7 +1551,6 @@ class FlowCtx extends Rect {
gdraw: GDraw; gdraw: GDraw;
display_level = DisplayLevel.One; display_level = DisplayLevel.One;
gdh: Gdh = null; gdh: Gdh = null;
debug = false;
zoom_factor = 20.0; zoom_factor = 20.0;
base_zoom_factor = 20.0; base_zoom_factor = 20.0;
offset_x = 0; offset_x = 0;
...@@ -1776,10 +1775,8 @@ class FlowFrame { ...@@ -1776,10 +1775,8 @@ class FlowFrame {
} }
flow_open() { flow_open() {
console.log("flow_open");
console.log("ctx.gdh", this.ctx.gdh);
this.ctx.connect(); this.ctx.connect();
this.ctx.gdh.refObjectInfoList(this.ctx.gdh.refObjectInfoListReply); this.ctx.gdh.refObjectInfoList();
this.timer = setTimeout(this.flow_cyclic, 1000); this.timer = setTimeout(this.flow_cyclic, 1000);
} }
...@@ -1794,7 +1791,6 @@ class FlowFrame { ...@@ -1794,7 +1791,6 @@ class FlowFrame {
} }
flow_close() { flow_close() {
console.log("Close function", this.timer);
clearTimeout(this.timer); clearTimeout(this.timer);
for (let i in this.ctx.gdh.pending) { for (let i in this.ctx.gdh.pending) {
delete this.ctx.gdh.pending[i]; delete this.ctx.gdh.pending[i];
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<script type="text/babel" src="glow_annot.ts"></script> <script type="text/babel" src="glow_annot.ts"></script>
<script type="text/babel" src="glow_arc.ts"></script> <script type="text/babel" src="glow_arc.ts"></script>
<script type="text/babel" src="glow_array.ts"></script> <script type="text/babel" src="glow_array.ts"></script>
<script type="text/babel" src="glow_arrow.ts"></script>
<script type="text/babel" src="glow_cformat.ts"></script> <script type="text/babel" src="glow_cformat.ts"></script>
<script type="text/babel" src="glow_con.ts"></script> <script type="text/babel" src="glow_con.ts"></script>
<script type="text/babel" src="glow_conclass.ts"></script> <script type="text/babel" src="glow_conclass.ts"></script>
......
...@@ -74,10 +74,8 @@ class Appl { ...@@ -74,10 +74,8 @@ class Appl {
} }
if (classGraph) { if (classGraph) {
console.log("Cmd classGraph"); console.log("Cmd classGraph");
let newwindow = window.open("", "_blank");
this.graph.gdh.getObjectFromName(instanceValue, this.graph.gdh.getObjectFromName(instanceValue,
GdhOp.GET_OP_METHOD_OBJECTGRAPH, this.open_objectgraph_cb, GdhOp.GET_OP_METHOD_OBJECTGRAPH).then(this.open_objectgraph_cb);
newwindow);
} else { } else {
let graphName = cli.getQualValue("cli_arg2").toLowerCase(); let graphName = cli.getQualValue("cli_arg2").toLowerCase();
if (!graphName) { if (!graphName) {
...@@ -86,7 +84,7 @@ class Appl { ...@@ -86,7 +84,7 @@ class Appl {
} }
graphName = graphName.toLowerCase(); graphName = graphName.toLowerCase();
if (graphName.charAt(".pwg") === -1) { if (!graphName.endsWith(".pwg")) {
graphName += ".pwg"; graphName += ".pwg";
} }
...@@ -266,14 +264,16 @@ class Appl { ...@@ -266,14 +264,16 @@ class Appl {
} }
} }
open_objectgraph_cb(id, data, sts, result) { open_objectgraph_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
let result = res.value;
console.log("param1", result.param1); console.log("param1", result.param1);
data.location.href = w.location.href =
"ge.html?graph=" + result.param1 + "&instance=" + result.fullname; "ge.html?graph=" + result.param1 + "&instance=" + result.fullname;
data.document.title = result.param1 + " " + result.fullname; w.document.title = result.param1 + " " + result.fullname;
} }
} }
} }
......
...@@ -10,8 +10,7 @@ class DynParsedAttrName { ...@@ -10,8 +10,7 @@ class DynParsedAttrName {
} }
class Dyn { class Dyn {
debug = false; elements: Array<DynElem> = [];
elements = [];
graph: Graph; graph: Graph;
object = null; object = null;
dyn_type1: DynType1 = 0; dyn_type1: DynType1 = 0;
...@@ -57,7 +56,7 @@ class Dyn { ...@@ -57,7 +56,7 @@ class Dyn {
(elem.instance !== undefined && elem.instance !== xelem.instance)); (elem.instance !== undefined && elem.instance !== xelem.instance));
}); });
// Insert copy of x element // Insert copy of x element
let e = Object.assign({}, xelem); let e = <DynElem>Object.assign({}, xelem);
if (e) { if (e) {
e.dyn = this; e.dyn = this;
this.elements.push(e); this.elements.push(e);
...@@ -71,10 +70,6 @@ class Dyn { ...@@ -71,10 +70,6 @@ class Dyn {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.debug) {
console.log("Dyn : " + lines[i]);
}
let elem = null; let elem = null;
switch (key) { switch (key) {
...@@ -417,7 +412,7 @@ class Dyn { ...@@ -417,7 +412,7 @@ class Dyn {
} }
getHostObject() { getHostObject() {
let elem = this.elements.find(e => (e.dyn_type1 & DynType1.HostObject) !== 0); let elem = <DynHostObject>this.elements.find(e => (e.dyn_type1 & DynType1.HostObject) !== 0);
return elem ? elem.hostobject : ""; return elem ? elem.hostobject : "";
} }
...@@ -531,10 +526,10 @@ class Dyn { ...@@ -531,10 +526,10 @@ class Dyn {
} }
} }
let setObjectInfo = function(func, pname, inputValue) { let setObjectInfo = function(pname, inputValue, type: Type) {
let sts = 0; let sts = 0;
if (pname.database === Database.Gdh) { if (pname.database === Database.Gdh) {
sts = e.dyn.graph.getGdh()["setObjectInfo" + func](pname.name, inputValue); sts = e.dyn.graph.getGdh().setObjectInfo(pname.name, inputValue, type);
} else if (pname.database === Database.Local) { } else if (pname.database === Database.Local) {
sts = e.dyn.graph.getLdb().setObjectInfo(this.graph, pname.name, inputValue); sts = e.dyn.graph.getLdb().setObjectInfo(this.graph, pname.name, inputValue);
} }
...@@ -569,7 +564,7 @@ class Dyn { ...@@ -569,7 +564,7 @@ class Dyn {
break; break;
} }
sts = setObjectInfo("Float", pname, inputValue); sts = setObjectInfo(pname, inputValue, e.a_typeid);
break; break;
case Type.Int32: case Type.Int32:
case Type.UInt32: case Type.UInt32:
...@@ -596,14 +591,13 @@ class Dyn { ...@@ -596,14 +591,13 @@ class Dyn {
break; break;
} }
sts = setObjectInfo("Int", pname, inputValue); sts = setObjectInfo(pname, inputValue, e.a_typeid);
break; break;
case Type.Boolean: case Type.Boolean:
let inputValueInt = parseInt(str.trim(), 10); let inputValueInt = parseInt(str.trim(), 10);
if (inputValueInt !== 0 && inputValueInt !== 1) { if (inputValueInt !== 0 && inputValueInt !== 1) {
break; break;
} }
let inputValue = Boolean(inputValueInt);
// valueElement.oldValueB = inputValue; // valueElement.oldValueB = inputValue;
...@@ -612,7 +606,7 @@ class Dyn { ...@@ -612,7 +606,7 @@ class Dyn {
break; break;
} }
sts = setObjectInfo("Boolean", pname, inputValue); sts = setObjectInfo(pname, Boolean(inputValueInt), e.a_typeid);
break; break;
case Type.String: case Type.String:
// valueElement.oldValueS = str; // valueElement.oldValueS = str;
...@@ -622,7 +616,7 @@ class Dyn { ...@@ -622,7 +616,7 @@ class Dyn {
break; break;
} }
sts = setObjectInfo("String", pname, inputValue); sts = setObjectInfo(pname, inputValue, e.a_typeid);
break; break;
} }
if (ctx_popped) { if (ctx_popped) {
...@@ -746,6 +740,7 @@ class DynElem { ...@@ -746,6 +740,7 @@ class DynElem {
dyn_type2: DynType2 = 0; dyn_type2: DynType2 = 0;
action_type1: ActionType1 = 0; action_type1: ActionType1 = 0;
action_type2: ActionType2 = 0; action_type2: ActionType2 = 0;
attribute;
prio: DynPrio; prio: DynPrio;
instance_mask = 0; instance_mask = 0;
instance: Instance = 0; instance: Instance = 0;
...@@ -772,7 +767,6 @@ class DynElem { ...@@ -772,7 +767,6 @@ class DynElem {
class DynDigLowColor extends DynElem { class DynDigLowColor extends DynElem {
a = null; a = null;
attribute;
color; color;
firstScan = true; firstScan = true;
...@@ -852,10 +846,6 @@ class DynDigLowColor extends DynElem { ...@@ -852,10 +846,6 @@ class DynDigLowColor extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigLowColor : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigLowColor: case DynSave.DigLowColor:
break; break;
...@@ -881,7 +871,6 @@ class DynDigLowColor extends DynElem { ...@@ -881,7 +871,6 @@ class DynDigLowColor extends DynElem {
class DynDigColor extends DynElem { class DynDigColor extends DynElem {
a = null; a = null;
attribute;
color; color;
firstScan = true; firstScan = true;
...@@ -971,10 +960,6 @@ class DynDigColor extends DynElem { ...@@ -971,10 +960,6 @@ class DynDigColor extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigColor : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigColor: case DynSave.DigColor:
break; break;
...@@ -1006,7 +991,6 @@ class DynDigColor extends DynElem { ...@@ -1006,7 +991,6 @@ class DynDigColor extends DynElem {
class DynDigWarning extends DynElem { class DynDigWarning extends DynElem {
a; a;
attribute;
use_colortheme; use_colortheme;
firstScan = true; firstScan = true;
...@@ -1082,10 +1066,6 @@ class DynDigWarning extends DynElem { ...@@ -1082,10 +1066,6 @@ class DynDigWarning extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigWarning : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigWarning: case DynSave.DigWarning:
break; break;
...@@ -1111,7 +1091,6 @@ class DynDigWarning extends DynElem { ...@@ -1111,7 +1091,6 @@ class DynDigWarning extends DynElem {
class DynDigError extends DynElem { class DynDigError extends DynElem {
a; a;
attribute;
use_colortheme; use_colortheme;
firstScan = true; firstScan = true;
...@@ -1187,10 +1166,6 @@ class DynDigError extends DynElem { ...@@ -1187,10 +1166,6 @@ class DynDigError extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigError : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigError: case DynSave.DigError:
break; break;
...@@ -1216,7 +1191,6 @@ class DynDigError extends DynElem { ...@@ -1216,7 +1191,6 @@ class DynDigError extends DynElem {
class DynDigFlash extends DynElem { class DynDigFlash extends DynElem {
a; a;
attribute;
color; color;
color2; color2;
firstScan = true; firstScan = true;
...@@ -1312,10 +1286,6 @@ class DynDigFlash extends DynElem { ...@@ -1312,10 +1286,6 @@ class DynDigFlash extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigError : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigFlash: case DynSave.DigFlash:
break; break;
...@@ -1344,7 +1314,6 @@ class DynDigFlash extends DynElem { ...@@ -1344,7 +1314,6 @@ class DynDigFlash extends DynElem {
class DynInvisible extends DynElem { class DynInvisible extends DynElem {
a; a;
attribute;
dimmed; dimmed;
firstScan = true; firstScan = true;
cmd; cmd;
...@@ -1441,10 +1410,6 @@ class DynInvisible extends DynElem { ...@@ -1441,10 +1410,6 @@ class DynInvisible extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynInvisible : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Invisible: case DynSave.Invisible:
break; break;
...@@ -1476,7 +1441,6 @@ class DynInvisible extends DynElem { ...@@ -1476,7 +1441,6 @@ class DynInvisible extends DynElem {
class DynDigTextColor extends DynElem { class DynDigTextColor extends DynElem {
a = null; a = null;
attribute;
color; color;
firstScan = true; firstScan = true;
...@@ -1539,10 +1503,6 @@ class DynDigTextColor extends DynElem { ...@@ -1539,10 +1503,6 @@ class DynDigTextColor extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DigTextColor : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigTextColor: case DynSave.DigTextColor:
break; break;
...@@ -1568,7 +1528,6 @@ class DynDigTextColor extends DynElem { ...@@ -1568,7 +1528,6 @@ class DynDigTextColor extends DynElem {
class DynDigText extends DynElem { class DynDigText extends DynElem {
a; a;
attribute;
low_text; low_text;
high_text; high_text;
firstScan = true; firstScan = true;
...@@ -1633,10 +1592,6 @@ class DynDigText extends DynElem { ...@@ -1633,10 +1592,6 @@ class DynDigText extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DigText : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigText: case DynSave.DigText:
break; break;
...@@ -1670,7 +1625,6 @@ class DynDigText extends DynElem { ...@@ -1670,7 +1625,6 @@ class DynDigText extends DynElem {
class DynDigBorder extends DynElem { class DynDigBorder extends DynElem {
a; a;
attribute;
color; color;
firstScan = true; firstScan = true;
...@@ -1727,10 +1681,6 @@ class DynDigBorder extends DynElem { ...@@ -1727,10 +1681,6 @@ class DynDigBorder extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynBorder : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigBorder: case DynSave.DigBorder:
break; break;
...@@ -1756,7 +1706,6 @@ class DynDigBorder extends DynElem { ...@@ -1756,7 +1706,6 @@ class DynDigBorder extends DynElem {
class DynValue extends DynElem { class DynValue extends DynElem {
a; a;
attribute;
format = null; format = null;
zero_blank; zero_blank;
decimals_attr; decimals_attr;
...@@ -1791,22 +1740,17 @@ class DynValue extends DynElem { ...@@ -1791,22 +1740,17 @@ class DynValue extends DynElem {
return format; return format;
} }
// TODO let sts = this.dyn.graph.getGdh().getObjectInfoInt(pname.name);
return format; // TODO if (even(sts)) {
let ret = this.dyn.graph.getGdh().getObjectInfoInt(pname.name);
if (even(ret)) {
return format; return format;
} }
decimals = ret.value - decr; decimals = Math.max(sts - decr, 0);
if (decimals < 0) {
decimals = 0;
}
if (decimals >= 10) { if (decimals >= 10) {
return format; return format;
} }
if (format === null) { if (!format) {
return "%." + decimals + "f"; return "%." + decimals + "f";
} }
...@@ -1818,7 +1762,7 @@ class DynValue extends DynElem { ...@@ -1818,7 +1762,7 @@ class DynValue extends DynElem {
if (s < 2 || format.charAt(s - 2) !== '.') { if (s < 2 || format.charAt(s - 2) !== '.') {
return "%." + decimals + "f"; return "%." + decimals + "f";
} else { } else {
return format.substring(0, s - 1) + decimals + format.substring(s); return format.substring(0, format.indexOf('.') + 1) + decimals + "f";
} }
} }
} }
...@@ -1901,7 +1845,7 @@ class DynValue extends DynElem { ...@@ -1901,7 +1845,7 @@ class DynValue extends DynElem {
case Type.DeltaTime: case Type.DeltaTime:
if (this.firstScan || !(value0 === this.oldValueS)) { if (this.firstScan || !(value0 === this.oldValueS)) {
if (this.cFormat) { if (this.cFormat) {
if (this.a_typeid === Type.String) { if (this.a.typeid === Type.String) {
let sb = this.cFormat.format(value0); let sb = this.cFormat.format(value0);
object.setAnnotation(annot_num, sb); object.setAnnotation(annot_num, sb);
} else { // TODO time format } else { // TODO time format
...@@ -1920,10 +1864,7 @@ class DynValue extends DynElem { ...@@ -1920,10 +1864,7 @@ class DynValue extends DynElem {
this.dyn.repaintNow = true; this.dyn.repaintNow = true;
} else { } else {
if (this.a.database === Database.Gdh) { if (this.a.database === Database.Gdh) {
let data = new Array(2); this.dyn.graph.getGdh().getMsg(value0).then(this.scan2(object));
data[0] = this;
data[1] = object;
this.dyn.graph.getGdh().getMsg(value0, DynValue.scan2, data);
} }
} }
} }
...@@ -1951,16 +1892,16 @@ class DynValue extends DynElem { ...@@ -1951,16 +1892,16 @@ class DynValue extends DynElem {
} }
} }
static scan2(id, data, sts, value) { scan2(object) {
let self = data[0]; return function(res) {
let object = data[1]; let annot_num = Dyn.instance_to_number(this.instance);
let annot_num = Dyn.instance_to_number(self.instance); if (res.sts & 1 !== 0) {
if (sts & 1 !== 0) { object.setAnnotation(annot_num, res.value);
object.setAnnotation(annot_num, value);
} else { } else {
object.setAnnotation(annot_num, "Unknown message"); object.setAnnotation(annot_num, "Unknown message");
} }
self.dyn.repaintNow = true; this.dyn.repaintNow = true;
}
} }
open(lines, row) { open(lines, row) {
...@@ -2019,7 +1960,6 @@ class DynValue extends DynElem { ...@@ -2019,7 +1960,6 @@ class DynValue extends DynElem {
} }
class DynValueInput extends DynElem { class DynValueInput extends DynElem {
attribute;
min_value; min_value;
max_value; max_value;
clear; clear;
...@@ -2071,10 +2011,6 @@ class DynValueInput extends DynElem { ...@@ -2071,10 +2011,6 @@ class DynValueInput extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynValueInput : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.ValueInput: case DynSave.ValueInput:
break; break;
...@@ -2133,7 +2069,6 @@ class DynValueInput extends DynElem { ...@@ -2133,7 +2069,6 @@ class DynValueInput extends DynElem {
class DynAnalogColor extends DynElem { class DynAnalogColor extends DynElem {
a = null; a = null;
attribute;
limit; limit;
limit_type; limit_type;
color; color;
...@@ -2332,10 +2267,6 @@ class DynAnalogColor extends DynElem { ...@@ -2332,10 +2267,6 @@ class DynAnalogColor extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynAnalogColor : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.AnalogColor: case DynSave.AnalogColor:
break; break;
...@@ -2379,7 +2310,6 @@ class DynAnalogColor extends DynElem { ...@@ -2379,7 +2310,6 @@ class DynAnalogColor extends DynElem {
class DynRotate extends DynElem { class DynRotate extends DynElem {
a; a;
attribute;
x0; x0;
y0; y0;
factor; factor;
...@@ -2436,10 +2366,6 @@ class DynRotate extends DynElem { ...@@ -2436,10 +2366,6 @@ class DynRotate extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynRotate : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Rotate: case DynSave.Rotate:
break; break;
...@@ -2704,10 +2630,6 @@ class DynMove extends DynElem { ...@@ -2704,10 +2630,6 @@ class DynMove extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynMove : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Move: case DynSave.Move:
break; break;
...@@ -2766,7 +2688,6 @@ class DynMove extends DynElem { ...@@ -2766,7 +2688,6 @@ class DynMove extends DynElem {
class DynAnalogShift extends DynElem { class DynAnalogShift extends DynElem {
a; a;
attribute;
firstScan = true; firstScan = true;
oldValueF; oldValueF;
oldValueI; oldValueI;
...@@ -2839,10 +2760,6 @@ class DynAnalogShift extends DynElem { ...@@ -2839,10 +2760,6 @@ class DynAnalogShift extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynAnalogShift : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.AnalogShift: case DynSave.AnalogShift:
break; break;
...@@ -2865,7 +2782,6 @@ class DynAnalogShift extends DynElem { ...@@ -2865,7 +2782,6 @@ class DynAnalogShift extends DynElem {
class DynDigShift extends DynElem { class DynDigShift extends DynElem {
a; a;
attribute;
firstScan = true; firstScan = true;
constructor(dyn) { constructor(dyn) {
...@@ -2919,10 +2835,6 @@ class DynDigShift extends DynElem { ...@@ -2919,10 +2835,6 @@ class DynDigShift extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigShift : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigShift: case DynSave.DigShift:
break; break;
...@@ -3032,10 +2944,6 @@ class DynDigFourShift extends DynElem { ...@@ -3032,10 +2944,6 @@ class DynDigFourShift extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigFourShift : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigFourShift: case DynSave.DigFourShift:
break; break;
...@@ -3068,7 +2976,6 @@ class DynDigFourShift extends DynElem { ...@@ -3068,7 +2976,6 @@ class DynDigFourShift extends DynElem {
class DynScrollingText extends DynElem { class DynScrollingText extends DynElem {
a; a;
attribute;
direction; direction;
speed; speed;
bounce; bounce;
...@@ -3207,10 +3114,6 @@ class DynScrollingText extends DynElem { ...@@ -3207,10 +3114,6 @@ class DynScrollingText extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynScrollingText : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.ScrollingText: case DynSave.ScrollingText:
break; break;
...@@ -3257,10 +3160,6 @@ class DynColorThemeLightness extends DynElem { ...@@ -3257,10 +3160,6 @@ class DynColorThemeLightness extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynColorThemeLightness : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.ColorThemeLightness: case DynSave.ColorThemeLightness:
break; break;
...@@ -3278,7 +3177,6 @@ class DynColorThemeLightness extends DynElem { ...@@ -3278,7 +3177,6 @@ class DynColorThemeLightness extends DynElem {
class DynDigBackgroundColor extends DynElem { class DynDigBackgroundColor extends DynElem {
a = null; a = null;
attribute;
color; color;
firstScan = true; firstScan = true;
...@@ -3346,10 +3244,6 @@ class DynDigBackgroundColor extends DynElem { ...@@ -3346,10 +3244,6 @@ class DynDigBackgroundColor extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigBackgroundColor : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigBackgroundColor: case DynSave.DigBackgroundColor:
break; break;
...@@ -3381,7 +3275,6 @@ class DynDigBackgroundColor extends DynElem { ...@@ -3381,7 +3275,6 @@ class DynDigBackgroundColor extends DynElem {
class DynDigSwap extends DynElem { class DynDigSwap extends DynElem {
a; a;
attribute;
reset_value; reset_value;
firstScan = true; firstScan = true;
...@@ -3439,10 +3332,6 @@ class DynDigSwap extends DynElem { ...@@ -3439,10 +3332,6 @@ class DynDigSwap extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigSwap : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigSwap: case DynSave.DigSwap:
break; break;
...@@ -3468,7 +3357,6 @@ class DynDigSwap extends DynElem { ...@@ -3468,7 +3357,6 @@ class DynDigSwap extends DynElem {
class DynAnimation extends DynElem { class DynAnimation extends DynElem {
a; a;
attribute;
sequence; sequence;
firstScan = true; firstScan = true;
animation_count; animation_count;
...@@ -3613,10 +3501,6 @@ class DynAnimation extends DynElem { ...@@ -3613,10 +3501,6 @@ class DynAnimation extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("Animation : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Animation: case DynSave.Animation:
break; break;
...@@ -3652,10 +3536,6 @@ class DynVideo extends DynElem { ...@@ -3652,10 +3536,6 @@ class DynVideo extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("Video : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Video: case DynSave.Video:
break; break;
...@@ -3770,10 +3650,6 @@ class DynBar extends DynElem { ...@@ -3770,10 +3650,6 @@ class DynBar extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynBar : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Bar: case DynSave.Bar:
break; break;
...@@ -3979,7 +3855,7 @@ class DynTrend extends DynElem { ...@@ -3979,7 +3855,7 @@ class DynTrend extends DynElem {
if (dt >= 0.001) { if (dt >= 0.001) {
object.set_scan_time(dt); object.set_scan_time(dt);
this.scan_time = dt; this.scan_time = dt;
if (this.cycle === Cycle.Slow) { if (this.dyn.cycle === Cycle.Slow) {
let current_graph_scan_time = this.dyn.graph.getScanTime(); let current_graph_scan_time = this.dyn.graph.getScanTime();
if (current_graph_scan_time > this.scan_time || this.scan_time <= this.orig_graph_scan_time) { if (current_graph_scan_time > this.scan_time || this.scan_time <= this.orig_graph_scan_time) {
this.dyn.graph.setScanTime(this.scan_time); this.dyn.graph.setScanTime(this.scan_time);
...@@ -4051,13 +3927,13 @@ class DynTrend extends DynElem { ...@@ -4051,13 +3927,13 @@ class DynTrend extends DynElem {
this.firstScan = false; this.firstScan = false;
} }
if (this.cycle === Cycle.Slow) { if (this.dyn.cycle === Cycle.Slow) {
this.acc_time += this.dyn.graph.getScanTime(); this.acc_time += this.dyn.graph.getScanTime();
} else { } else {
this.acc_time += this.dyn.graph.getFastScanTime(); this.acc_time += this.dyn.graph.getFastScanTime();
} }
if (this.acc_time + Number.MIN_VALUE >= this.scan_time) { if (this.acc_time + Number.MIN_VALUE >= this.scan_time) {
if (this.p1 !== 0) { if (this.a1 !== 0) {
switch (this.a1.typeid) { switch (this.a1.typeid) {
case Type.Boolean: case Type.Boolean:
object.add_value(Boolean(this.a1.get_ref_value(this.dyn)), 0); object.add_value(Boolean(this.a1.get_ref_value(this.dyn)), 0);
...@@ -4095,10 +3971,6 @@ class DynTrend extends DynElem { ...@@ -4095,10 +3971,6 @@ class DynTrend extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynTrend : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Trend: case DynSave.Trend:
break; break;
...@@ -4226,10 +4098,6 @@ class DynXY_Curve extends DynElem { ...@@ -4226,10 +4098,6 @@ class DynXY_Curve extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynXYCurve : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.XY_Curve: case DynSave.XY_Curve:
break; break;
...@@ -4558,7 +4426,7 @@ class DynXY_Curve extends DynElem { ...@@ -4558,7 +4426,7 @@ class DynXY_Curve extends DynElem {
switch (this.xAttrType) { switch (this.xAttrType) {
case Type.Float32: case Type.Float32:
this.dyn.graph.getGdh() this.dyn.graph.getGdh()
.getObjectInfoFloatArray(pname.name, size, DynXY_Curve.scan2, this); .getObjectInfoFloatArray(pname.name, size).then(this.scan2);
break; break;
case Type.Int32: case Type.Int32:
case Type.Int16: case Type.Int16:
...@@ -4567,7 +4435,7 @@ class DynXY_Curve extends DynElem { ...@@ -4567,7 +4435,7 @@ class DynXY_Curve extends DynElem {
case Type.UInt16: case Type.UInt16:
case Type.UInt8: case Type.UInt8:
this.dyn.graph.getGdh() this.dyn.graph.getGdh()
.getObjectInfoIntArray(pname.name, size, DynXY_Curve.scan2, this); .getObjectInfoIntArray(pname.name, size).then(this.scan2);
break; break;
default: default:
return; return;
...@@ -4576,75 +4444,40 @@ class DynXY_Curve extends DynElem { ...@@ -4576,75 +4444,40 @@ class DynXY_Curve extends DynElem {
this.firstScan = false; this.firstScan = false;
} }
static scan2(id, self, sts, value) { scan2(res) {
switch (self.xAttrType) { switch (this.xAttrType) {
case Type.Float32: case Type.Float32:
if (!(sts & 1)) {
return;
}
switch (self.datatype) {
case CurveDataType.XYArrays:
self.curveX = value.slice(0, self.noOfPoints);
break;
case CurveDataType.PointArray:
self.curveX = new Array(self.noOfPoints);
self.curveY = new Array(self.noOfPoints);
for (let i = 0; i < self.noOfPoints; i++) {
self.curveX[i] = value[2 * i];
self.curveY[i] = value[2 * i + 1];
}
self.dyn.repaintNow = true;
break;
case CurveDataType.TableObject:
self.noOfPoints = Math.min(Math.floor(value[0]), self.noofpoints);
if (attrSize < self.noOfPoints) {
self.noOfPoints = attrSize;
}
self.curveY = new Array(self.noOfPoints);
self.curveX = new Array(self.noOfPoints);
for (let i = 0; i < self.noOfPoints; i++) {
self.curveX[i] = value[2 * i + 1];
self.curveY[i] = value[2 * i + 2];
}
self.dyn.repaintNow = true;
break;
}
break;
case Type.Int32: case Type.Int32:
case Type.Int16: case Type.Int16:
case Type.Int8: case Type.Int8:
case Type.UInt32: case Type.UInt32:
case Type.UInt16: case Type.UInt16:
case Type.UInt8: case Type.UInt8:
if (!(sts & 1)) { if (!(res.sts & 1)) {
return; return;
} }
switch (self.datatype) { switch (this.datatype) {
case CurveDataType.XYArrays: case CurveDataType.XYArrays:
self.curveX = value.slice(0, self.noOfPoints); this.curveX = res.value.slice(0, this.noOfPoints);
break; break;
case CurveDataType.PointArray: case CurveDataType.PointArray:
self.curveX = new Array(self.noOfPoints); this.curveX = new Array(this.noOfPoints);
self.curveY = new Array(self.noOfPoints); this.curveY = new Array(this.noOfPoints);
for (let i = 0; i < self.noOfPoints; i++) { for (let i = 0; i < this.noOfPoints; i++) {
self.curveX[i] = value[2 * i]; this.curveX[i] = res.value[2 * i];
self.curveY[i] = value[2 * i + 1]; this.curveY[i] = res.value[2 * i + 1];
} }
self.dyn.repaintNow = true; this.dyn.repaintNow = true;
break; break;
case CurveDataType.TableObject: case CurveDataType.TableObject:
self.noOfPoints = Math.min(Math.floor(value[0]), self.noofpoints); this.noOfPoints = Math.min(Math.floor(res.value[0]), this.noofpoints);
if (attrSize < self.noOfPoints) { this.curveY = new Array(this.noOfPoints);
self.noOfPoints = attrSize; this.curveX = new Array(this.noOfPoints);
for (let i = 0; i < this.noOfPoints; i++) {
this.curveX[i] = res.value[2 * i + 1];
this.curveY[i] = res.value[2 * i + 2];
} }
self.curveY = new Array(self.noOfPoints); this.dyn.repaintNow = true;
self.curveX = new Array(self.noOfPoints);
for (let i = 0; i < self.noOfPoints; i++) {
self.curveX[i] = value[2 * i + 1];
self.curveY[i] = value[2 * i + 2];
}
self.dyn.repaintNow = true;
break; break;
} }
break; break;
...@@ -4653,18 +4486,17 @@ class DynXY_Curve extends DynElem { ...@@ -4653,18 +4486,17 @@ class DynXY_Curve extends DynElem {
} }
// Read y-array // Read y-array
switch (self.datatype) { switch (this.datatype) {
case CurveDataType.XYArrays: case CurveDataType.XYArrays:
let pname = self.dyn.parseAttrName(self.y_attr); let pname = this.dyn.parseAttrName(this.y_attr);
self.noOfPoints = Math.min(self.noOfPoints, pname.elements); this.noOfPoints = Math.min(this.noOfPoints, pname.elements);
self.yAttrType = pname.type; this.yAttrType = pname.type;
self.curveY = new Array(self.noOfPoints); this.curveY = new Array(this.noOfPoints);
switch (self.yAttrType) { switch (this.yAttrType) {
case Type.Float32: case Type.Float32:
self.dyn.graph.getGdh() this.dyn.graph.getGdh()
.getObjectInfoFloatArray(pname.name, self.noOfPoints, self.scan3, .getObjectInfoFloatArray(pname.name, this.noOfPoints).then(this.scan3);
self);
break; break;
case Type.Int32: case Type.Int32:
case Type.Int16: case Type.Int16:
...@@ -4672,9 +4504,8 @@ class DynXY_Curve extends DynElem { ...@@ -4672,9 +4504,8 @@ class DynXY_Curve extends DynElem {
case Type.UInt32: case Type.UInt32:
case Type.UInt16: case Type.UInt16:
case Type.UInt8: case Type.UInt8:
self.dyn.graph.getGdh() this.dyn.graph.getGdh()
.getObjectInfoIntArray(pname.name, self.noOfPoints, self.scan3, .getObjectInfoIntArray(pname.name, this.noOfPoints).then(this.scan3);
self);
break; break;
default: default:
return; return;
...@@ -4683,14 +4514,14 @@ class DynXY_Curve extends DynElem { ...@@ -4683,14 +4514,14 @@ class DynXY_Curve extends DynElem {
} }
} }
static scan3(id, self, sts, value) { scan3(res) {
if (!(sts & 1)) { if (!(res.sts & 1)) {
return; return;
} }
switch (self.datatype) { switch (this.datatype) {
case CurveDataType.XYArrays: case CurveDataType.XYArrays:
switch (self.yAttrType) { switch (this.yAttrType) {
case Type.Float32: case Type.Float32:
case Type.Int32: case Type.Int32:
case Type.Int16: case Type.Int16:
...@@ -4698,8 +4529,8 @@ class DynXY_Curve extends DynElem { ...@@ -4698,8 +4529,8 @@ class DynXY_Curve extends DynElem {
case Type.UInt32: case Type.UInt32:
case Type.UInt16: case Type.UInt16:
case Type.UInt8: case Type.UInt8:
self.curveY = value.slice(0, self.noOfPoints); this.curveY = res.value.slice(0, this.noOfPoints);
self.dyn.repaintNow = true; this.dyn.repaintNow = true;
break; break;
default: default:
return; return;
...@@ -4707,8 +4538,8 @@ class DynXY_Curve extends DynElem { ...@@ -4707,8 +4538,8 @@ class DynXY_Curve extends DynElem {
break; break;
} }
self.object.set_xy_data(self.curveY, self.curveX, self.curve_number - 1, this.object.set_xy_data(this.curveY, this.curveX, this.curve_number - 1,
self.noOfPoints); this.noOfPoints);
} }
} }
...@@ -4734,10 +4565,6 @@ class DynPie extends DynElem { ...@@ -4734,10 +4565,6 @@ class DynPie extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynPie : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Pie: case DynSave.Pie:
break; break;
...@@ -4945,10 +4772,6 @@ class DynBarChart extends DynElem { ...@@ -4945,10 +4772,6 @@ class DynBarChart extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynBarChart : " + lines[i]);
}
if (key === DynSave.End) { if (key === DynSave.End) {
return i; return i;
} else if (key === DynSave.BarChart_fix_range) { } else if (key === DynSave.BarChart_fix_range) {
...@@ -5109,10 +4932,6 @@ class DynTable extends DynElem { ...@@ -5109,10 +4932,6 @@ class DynTable extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynTable : " + lines[i]);
}
if (key === DynSave.End) { if (key === DynSave.End) {
return i; return i;
} else if (key >= DynSave.Table_attribute1 && key <= DynSave.Table_attribute12) { } else if (key >= DynSave.Table_attribute1 && key <= DynSave.Table_attribute12) {
...@@ -5268,7 +5087,7 @@ class DynTable extends DynElem { ...@@ -5268,7 +5087,7 @@ class DynTable extends DynElem {
this.sel_p[i] = this.dyn.graph.getGdh() this.sel_p[i] = this.dyn.graph.getGdh()
.refObjectInfo(pname.tname, pname.type, pname.elements); .refObjectInfo(pname.tname, pname.type, pname.elements);
if (this.sel_p[i] !== 0) { if (this.sel_p[i] !== 0) {
if (ret.getElements() === 0) { if (pname.elements === 0) {
break; break;
} }
this.sel_elements[i] = Math.min(pname.elements, this.elements[i]); this.sel_elements[i] = Math.min(pname.elements, this.elements[i]);
...@@ -5367,7 +5186,6 @@ class DynTable extends DynElem { ...@@ -5367,7 +5186,6 @@ class DynTable extends DynElem {
} else { } else {
object.setValue("0", i, j); object.setValue("0", i, j);
} }
object.setValue(sb, i, j);
this.oldValueB[i][j] = val; this.oldValueB[i][j] = val;
} }
break; break;
...@@ -5587,7 +5405,6 @@ class DynTable extends DynElem { ...@@ -5587,7 +5405,6 @@ class DynTable extends DynElem {
class DynStatusColor extends DynElem { class DynStatusColor extends DynElem {
a; a;
attribute;
nostatus_color; nostatus_color;
use_colortheme; use_colortheme;
firstScan = true; firstScan = true;
...@@ -5721,10 +5538,6 @@ class DynStatusColor extends DynElem { ...@@ -5721,10 +5538,6 @@ class DynStatusColor extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynStatusColor : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.StatusColor: case DynSave.StatusColor:
break; break;
...@@ -5771,10 +5584,6 @@ class DynAxis extends DynElem { ...@@ -5771,10 +5584,6 @@ class DynAxis extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynAxis : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Axis: case DynSave.Axis:
break; break;
...@@ -5896,10 +5705,6 @@ class DynTimeoutColor extends DynElem { ...@@ -5896,10 +5705,6 @@ class DynTimeoutColor extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynTimeoutColor : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.TimeoutColor: case DynSave.TimeoutColor:
break; break;
...@@ -5935,10 +5740,6 @@ class DynHostObject extends DynElem { ...@@ -5935,10 +5740,6 @@ class DynHostObject extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynHostObject : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.HostObject: case DynSave.HostObject:
break; break;
...@@ -5960,7 +5761,6 @@ class DynHostObject extends DynElem { ...@@ -5960,7 +5761,6 @@ class DynHostObject extends DynElem {
} }
class DynDigSound extends DynElem { class DynDigSound extends DynElem {
attribute;
soundobject; soundobject;
level; level;
interval; interval;
...@@ -5976,10 +5776,6 @@ class DynDigSound extends DynElem { ...@@ -5976,10 +5776,6 @@ class DynDigSound extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynDigSound : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.DigSound: case DynSave.DigSound:
break; break;
...@@ -6021,7 +5817,6 @@ class DynFillLevel extends DynElem { ...@@ -6021,7 +5817,6 @@ class DynFillLevel extends DynElem {
a = null; a = null;
minvalue_a; minvalue_a;
maxvalue_a; maxvalue_a;
attribute;
color; color;
direction; direction;
max_value; max_value;
...@@ -6155,10 +5950,6 @@ class DynFillLevel extends DynElem { ...@@ -6155,10 +5950,6 @@ class DynFillLevel extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynFillLevel : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.FillLevel: case DynSave.FillLevel:
break; break;
...@@ -6202,8 +5993,6 @@ class DynFillLevel extends DynElem { ...@@ -6202,8 +5993,6 @@ class DynFillLevel extends DynElem {
} }
class DynSetDig extends DynElem { class DynSetDig extends DynElem {
attribute;
constructor(dyn) { constructor(dyn) {
super(dyn, DynPrio.SetDig); super(dyn, DynPrio.SetDig);
this.action_type1 = ActionType1.SetDig; this.action_type1 = ActionType1.SetDig;
...@@ -6259,10 +6048,6 @@ class DynSetDig extends DynElem { ...@@ -6259,10 +6048,6 @@ class DynSetDig extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynSetDig : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.SetDig: case DynSave.SetDig:
break; break;
...@@ -6290,8 +6075,6 @@ class DynSetDig extends DynElem { ...@@ -6290,8 +6075,6 @@ class DynSetDig extends DynElem {
} }
class DynResetDig extends DynElem { class DynResetDig extends DynElem {
attribute;
constructor(dyn) { constructor(dyn) {
super(dyn, DynPrio.ResetDig); super(dyn, DynPrio.ResetDig);
this.action_type1 = ActionType1.ResetDig; this.action_type1 = ActionType1.ResetDig;
...@@ -6347,10 +6130,6 @@ class DynResetDig extends DynElem { ...@@ -6347,10 +6130,6 @@ class DynResetDig extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynResetDig : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.ResetDig: case DynSave.ResetDig:
break; break;
...@@ -6378,8 +6157,6 @@ class DynResetDig extends DynElem { ...@@ -6378,8 +6157,6 @@ class DynResetDig extends DynElem {
} }
class DynToggleDig extends DynElem { class DynToggleDig extends DynElem {
attribute;
constructor(dyn) { constructor(dyn) {
super(dyn, DynPrio.ToggleDig); super(dyn, DynPrio.ToggleDig);
this.action_type1 = ActionType1.ToggleDig; this.action_type1 = ActionType1.ToggleDig;
...@@ -6431,10 +6208,6 @@ class DynToggleDig extends DynElem { ...@@ -6431,10 +6208,6 @@ class DynToggleDig extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynToggleDig : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.ToggleDig: case DynSave.ToggleDig:
break; break;
...@@ -6456,8 +6229,6 @@ class DynToggleDig extends DynElem { ...@@ -6456,8 +6229,6 @@ class DynToggleDig extends DynElem {
} }
class DynStoDig extends DynElem { class DynStoDig extends DynElem {
attribute;
constructor(dyn) { constructor(dyn) {
super(dyn, DynPrio.StoDig); super(dyn, DynPrio.StoDig);
this.action_type1 = ActionType1.StoDig; this.action_type1 = ActionType1.StoDig;
...@@ -6505,10 +6276,6 @@ class DynStoDig extends DynElem { ...@@ -6505,10 +6276,6 @@ class DynStoDig extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynToggleDig : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.StoDig: case DynSave.StoDig:
break; break;
...@@ -6582,10 +6349,6 @@ class DynCommand extends DynElem { ...@@ -6582,10 +6349,6 @@ class DynCommand extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynCommand : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Command: case DynSave.Command:
break; break;
...@@ -6648,10 +6411,6 @@ class DynScript extends DynElem { ...@@ -6648,10 +6411,6 @@ class DynScript extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynScript : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Script: case DynSave.Script:
break; break;
...@@ -6724,7 +6483,7 @@ class DynCommandDoubleClick extends DynElem { ...@@ -6724,7 +6483,7 @@ class DynCommandDoubleClick extends DynElem {
object.setColorInverse(e.event === Event.MB1Down); object.setColorInverse(e.event === Event.MB1Down);
this.dyn.repaintNow = true; this.dyn.repaintNow = true;
break; break;
case Event.MB1ClickDoubleClick: case Event.MB1DoubleClick:
if ((this.dyn.action_type1 & ActionType1.Confirm) !== 0) { if ((this.dyn.action_type1 & ActionType1.Confirm) !== 0) {
break; break;
} }
...@@ -6748,10 +6507,6 @@ class DynCommandDoubleClick extends DynElem { ...@@ -6748,10 +6507,6 @@ class DynCommandDoubleClick extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynCommandDoubleClick : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.CommandDC: case DynSave.CommandDC:
break; break;
...@@ -6794,20 +6549,17 @@ class DynConfirm extends DynElem { ...@@ -6794,20 +6549,17 @@ class DynConfirm extends DynElem {
switch (e.event) { switch (e.event) {
case Event.MB1Down: case Event.MB1Down:
break; break;
case Event.Key_Return:
case Event.MB1Click: case Event.MB1Click:
case Event.ValueChanged:
let skip = 0; let skip = 0;
if (((this.on_set !== 0 && this.on_reset === 0) || if (((this.on_set !== 0 && this.on_reset === 0) ||
(this.on_reset !== 0 && this.on_set === 0)) && (this.on_reset !== 0 && this.on_set === 0)) &&
(this.dyn.total_action_type1 & ActionType1.ToggleDig) !== 0) { (this.dyn.total_action_type1 & ActionType1.ToggleDig) !== 0) {
for (let j = 0; j < this.dyn.elements.length; j++) { for (let j = 0; j < this.dyn.elements.length; j++) {
if (this.dyn.elements.get(j).action_type1 === if (this.dyn.elements[j].action_type1 === ActionType1.ToggleDig) {
ActionType1.ToggleDig) { let pname = this.dyn.parseAttrName(this.dyn.elements[j].attribute);
let pname = this.dyn.parseAttrName(
this.dyn.elements.get(j).attribute);
if (pname.name.substring(0, 1) === "&") { if (pname.name.substring(0, 1) === "&") {
pname.name = this.dyn.graph.get_reference_name(pname.name); pname.name = this.dyn.graph.getReferenceName(pname.name);
} }
switch (pname.database) { switch (pname.database) {
...@@ -6851,10 +6603,6 @@ class DynConfirm extends DynElem { ...@@ -6851,10 +6603,6 @@ class DynConfirm extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynConfirm : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Confirm: case DynSave.Confirm:
break; break;
...@@ -6882,7 +6630,6 @@ class DynConfirm extends DynElem { ...@@ -6882,7 +6630,6 @@ class DynConfirm extends DynElem {
} }
class DynIncrAnalog extends DynElem { class DynIncrAnalog extends DynElem {
attribute;
increment; increment;
min_value; min_value;
max_value; max_value;
...@@ -6920,16 +6667,16 @@ class DynIncrAnalog extends DynElem { ...@@ -6920,16 +6667,16 @@ class DynIncrAnalog extends DynElem {
case Database.Gdh: case Database.Gdh:
if (typeId === Type.Int32) { if (typeId === Type.Int32) {
this.dyn.graph.getGdh() this.dyn.graph.getGdh()
.getObjectInfoInt(pname.name, DynIncrAnalog.action2, this); .getObjectInfoInt(pname.name).then(this.action2);
} else { } else {
this.dyn.graph.getGdh() this.dyn.graph.getGdh()
.getObjectInfoFloat(pname.name, DynIncrAnalog.action2, this); .getObjectInfoFloat(pname.name).then(this.action2);
} }
break; break;
case Database.Local: case Database.Local:
let ret = this.dyn.graph.getLdb() let ret = this.dyn.graph.getLdb()
.getObjectInfo(this.dyn.graph, pname.name); .getObjectInfo(this.dyn.graph, pname.name);
DynIncrAnalog.action2(0, this, 1, ret.value); this.action2({id: 0, sts: 1, value: ret.value});
break; break;
} }
break; break;
...@@ -6938,33 +6685,34 @@ class DynIncrAnalog extends DynElem { ...@@ -6938,33 +6685,34 @@ class DynIncrAnalog extends DynElem {
return 1; return 1;
} }
static action2(id, self, sts, value) { action2(res) {
if (!(sts & 1)) { if (!(res.sts & 1)) {
return; return;
} }
let pname = self.dyn.parseAttrName(self.attribute); let pname = this.dyn.parseAttrName(this.attribute);
if (pname === null) { if (pname === null) {
return 1; return 1;
} }
let typeId = (pname.type < 0) ? Type.Float32 : pname.type; let typeId = (pname.type < 0) ? Type.Float32 : pname.type;
value += self.increment; let sts = res.sts;
if (!(self.min_value === 0 && self.max_value === 0)) { let value = res.value + this.increment;
if (!(this.min_value === 0 && this.max_value === 0)) {
if (typeId === Type.Int32) { if (typeId === Type.Int32) {
value = clamp(value, Math.floor(self.min_value), Math.floor(self.max_value)); value = clamp(value, Math.floor(this.min_value), Math.floor(this.max_value));
} else { } else {
value = clamp(value, self.min_value, self.max_value); value = clamp(value, this.min_value, this.max_value);
} }
} }
if (pname.database === Database.Gdh) { if (pname.database === Database.Gdh) {
if (typeId === Type.Int32) { if (typeId === Type.Int32) {
sts = self.dyn.graph.getGdh().setObjectInfoInt(pname.name, value); sts = this.dyn.graph.getGdh().setObjectInfoInt(pname.name, value);
} else { } else {
sts = self.dyn.graph.getGdh().setObjectInfoFloat(pname.name, value); sts = this.dyn.graph.getGdh().setObjectInfoFloat(pname.name, value);
} }
} else if (pname.database === Database.Local) { } else if (pname.database === Database.Local) {
sts = self.dyn.graph.getLdb().setObjectInfo(self.dyn.graph, pname.name, value); sts = this.dyn.graph.getLdb().setObjectInfo(this.dyn.graph, pname.name, value);
} }
if (even(sts)) { if (even(sts)) {
console.log("IncrAnalog " + pname.name); console.log("IncrAnalog " + pname.name);
...@@ -6979,10 +6727,6 @@ class DynIncrAnalog extends DynElem { ...@@ -6979,10 +6727,6 @@ class DynIncrAnalog extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynConfirm : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.IncrAnalog: case DynSave.IncrAnalog:
break; break;
...@@ -7014,7 +6758,6 @@ class DynIncrAnalog extends DynElem { ...@@ -7014,7 +6758,6 @@ class DynIncrAnalog extends DynElem {
class DynRadioButton extends DynElem { class DynRadioButton extends DynElem {
a; a;
attribute;
firstScan = true; firstScan = true;
constructor(dyn) { constructor(dyn) {
...@@ -7109,7 +6852,7 @@ class DynRadioButton extends DynElem { ...@@ -7109,7 +6852,7 @@ class DynRadioButton extends DynElem {
let pname = this.dyn.parseAttrName( let pname = this.dyn.parseAttrName(
gm_dyn.elements[j].attribute); gm_dyn.elements[j].attribute);
if (pname.name.substring(0, 1) === "&") { if (pname.name.substring(0, 1) === "&") {
pname.name = this.dyn.graph.get_reference_name(pname.name); pname.name = this.dyn.graph.getReferenceName(pname.name);
} }
setObjectInfo(pname, value); setObjectInfo(pname, value);
} }
...@@ -7120,7 +6863,7 @@ class DynRadioButton extends DynElem { ...@@ -7120,7 +6863,7 @@ class DynRadioButton extends DynElem {
let pname = this.dyn.parseAttrName(this.attribute); let pname = this.dyn.parseAttrName(this.attribute);
if (pname.name.substring(0, 1) === "&") { if (pname.name.substring(0, 1) === "&") {
pname.name = this.dyn.graph.get_reference_name(pname.name); pname.name = this.dyn.graph.getReferenceName(pname.name);
} }
value = true; value = true;
...@@ -7137,10 +6880,6 @@ class DynRadioButton extends DynElem { ...@@ -7137,10 +6880,6 @@ class DynRadioButton extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynRadioButton : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.RadioButton: case DynSave.RadioButton:
break; break;
...@@ -7175,10 +6914,6 @@ class DynTipText extends DynElem { ...@@ -7175,10 +6914,6 @@ class DynTipText extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynTipText : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.TipText: case DynSave.TipText:
break; break;
...@@ -7242,10 +6977,6 @@ class DynHelp extends DynElem { ...@@ -7242,10 +6977,6 @@ class DynHelp extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynHelp : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Help: case DynSave.Help:
break; break;
...@@ -7297,12 +7028,12 @@ class DynOpenGraph extends DynElem { ...@@ -7297,12 +7028,12 @@ class DynOpenGraph extends DynElem {
if (this.graph_object === null || this.graph_object === "") { if (this.graph_object === null || this.graph_object === "") {
// Open classgraph for popup menu object // Open classgraph for popup menu object
if ((this.dyn.total_action_type1 & ActionType1.PopupMenu) !== 0) { if ((this.dyn.total_action_type1 & ActionType1.PopupMenu) !== 0) {
let obj = this.dyn.elements.find(e => e.action_type1 === ActionType1.PopupMenu); let obj = <DynPopupMenu>this.dyn.elements.find(e => e.action_type1 === ActionType1.PopupMenu);
if (obj) { if (obj) {
this.dyn.graph.command("open graph/class/instance=" + obj.ref_object); this.dyn.graph.command("open graph/class/instance=" + obj.ref_object);
} }
} else if ((this.dyn.total_dyn_type1 & DynType1.HostObject) !== 0) { } else if ((this.dyn.total_dyn_type1 & DynType1.HostObject) !== 0) {
let obj = this.dyn.elements.find(e => e.dyn_type1 === DynType1.HostObject); let obj = <DynHostObject>this.dyn.elements.find(e => e.dyn_type1 === DynType1.HostObject);
if (obj) { if (obj) {
this.dyn.graph.command("open graph/class/instance=" + obj.hostobject); this.dyn.graph.command("open graph/class/instance=" + obj.hostobject);
} }
...@@ -7322,10 +7053,6 @@ class DynOpenGraph extends DynElem { ...@@ -7322,10 +7053,6 @@ class DynOpenGraph extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynOpenGraph : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.OpenGraph: case DynSave.OpenGraph:
break; break;
...@@ -7383,10 +7110,6 @@ class DynOpenURL extends DynElem { ...@@ -7383,10 +7110,6 @@ class DynOpenURL extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynOpenURL : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.OpenURL: case DynSave.OpenURL:
break; break;
...@@ -7428,10 +7151,6 @@ class DynInputFocus extends DynElem { ...@@ -7428,10 +7151,6 @@ class DynInputFocus extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynInputFocus : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.InputFocus: case DynSave.InputFocus:
break; break;
...@@ -7793,7 +7512,7 @@ class DynSlider extends DynElem { ...@@ -7793,7 +7512,7 @@ class DynSlider extends DynElem {
let info = object.get_info(); let info = object.get_info();
if (info.min_position !== info.max_position) { if (info.min_position !== info.max_position) {
if (!(this.max_value_p !== 0 && this.min_value_p !== 0 && if (!(this.max_value !== 0 && this.min_value !== 0 &&
this.max_value !== this.min_value)) { this.max_value !== this.min_value)) {
this.max_value = info.max_value; this.max_value = info.max_value;
this.min_value = info.min_value; this.min_value = info.min_value;
...@@ -7824,7 +7543,7 @@ class DynSlider extends DynElem { ...@@ -7824,7 +7543,7 @@ class DynSlider extends DynElem {
let setObjectInfo = function(pname, value, type) { let setObjectInfo = function(pname, value, type) {
if (pname.database === Database.Gdh) { if (pname.database === Database.Gdh) {
return this.dyn.graph.getGdh()["setObjectInfo" + type](pname.name, value); return this.dyn.graph.getGdh().setObjectInfo(pname.name, value, type);
} else if (pname.database === Database.Local) { } else if (pname.database === Database.Local) {
return this.dyn.graph.getLdb().setObjectInfo(this.dyn.graph, pname.name, value); return this.dyn.graph.getLdb().setObjectInfo(this.dyn.graph, pname.name, value);
} else { } else {
...@@ -7835,14 +7554,14 @@ class DynSlider extends DynElem { ...@@ -7835,14 +7554,14 @@ class DynSlider extends DynElem {
let sts; let sts;
switch (pname.type) { switch (pname.type) {
case Type.Float32: case Type.Float32:
sts = setObjectInfo(pname, value, "Float"); sts = setObjectInfo(pname, value, pname.type);
break; break;
case Type.Boolean: case Type.Boolean:
sts = setObjectInfo(pname, (value > 0.5), "Boolean"); sts = setObjectInfo(pname, (value > 0.5), pname.type);
break; break;
default: default:
let ivalue = Math.floor(value > 0 ? value + 0.5 : value - 0.5); let ivalue = Math.floor(value > 0 ? value + 0.5 : value - 0.5);
sts = setObjectInfo(pname, ivalue, "Int"); sts = setObjectInfo(pname, ivalue, pname.type);
} }
if (even(sts)) { if (even(sts)) {
console.log("Slider error: " + this.attribute); console.log("Slider error: " + this.attribute);
...@@ -7861,10 +7580,6 @@ class DynSlider extends DynElem { ...@@ -7861,10 +7580,6 @@ class DynSlider extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynSlider : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.Slider: case DynSave.Slider:
break; break;
...@@ -7921,10 +7636,6 @@ class DynFastCurve extends DynElem { ...@@ -7921,10 +7636,6 @@ class DynFastCurve extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynSlider : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.FastCurve: case DynSave.FastCurve:
break; break;
...@@ -8150,7 +7861,6 @@ class DynPulldownMenu extends DynElem { ...@@ -8150,7 +7861,6 @@ class DynPulldownMenu extends DynElem {
class DynOptionMenu extends DynElem { class DynOptionMenu extends DynElem {
a; a;
update_a = null; update_a = null;
attribute;
text_attribute; text_attribute;
size_attribute; size_attribute;
update_attribute; update_attribute;
...@@ -8415,10 +8125,6 @@ class DynOptionMenu extends DynElem { ...@@ -8415,10 +8125,6 @@ class DynOptionMenu extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("OptionsMenu : " + lines[i]);
}
if (key >= DynSave.OptionMenu_items_text0 && key <= DynSave.OptionMenu_items_text31) { if (key >= DynSave.OptionMenu_items_text0 && key <= DynSave.OptionMenu_items_text31) {
if (tokens.length > 1) { if (tokens.length > 1) {
this.items_text[key - DynSave.OptionMenu_items_text0] = lines[i].substring(5); this.items_text[key - DynSave.OptionMenu_items_text0] = lines[i].substring(5);
...@@ -8487,10 +8193,6 @@ class DynAnalogText extends DynOptionMenu { ...@@ -8487,10 +8193,6 @@ class DynAnalogText extends DynOptionMenu {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("AnalogText : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.AnalogText: case DynSave.AnalogText:
break; break;
...@@ -8510,7 +8212,6 @@ class DynAnalogText extends DynOptionMenu { ...@@ -8510,7 +8212,6 @@ class DynAnalogText extends DynOptionMenu {
} }
class DynSetValue extends DynElem { class DynSetValue extends DynElem {
attribute;
value; value;
constructor(dyn) { constructor(dyn) {
...@@ -8524,10 +8225,6 @@ class DynSetValue extends DynElem { ...@@ -8524,10 +8225,6 @@ class DynSetValue extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("AnalogText : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.SetValue: case DynSave.SetValue:
break; break;
...@@ -8580,7 +8277,7 @@ class DynSetValue extends DynElem { ...@@ -8580,7 +8277,7 @@ class DynSetValue extends DynElem {
let setObjectInfo = function(pname, value, type) { let setObjectInfo = function(pname, value, type) {
let sts = 0; let sts = 0;
if (pname.database === Database.Gdh) { if (pname.database === Database.Gdh) {
sts = this.dyn.graph.getGdh()["setObjectInfo" + type](pname.name, value); sts = this.dyn.graph.getGdh().setObjectInfo(pname.name, value, type);
} else if (pname.database === Database.Local) { } else if (pname.database === Database.Local) {
sts = this.dyn.graph.getLdb().setObjectInfo(this.dyn.graph, pname.name, value); sts = this.dyn.graph.getLdb().setObjectInfo(this.dyn.graph, pname.name, value);
} }
...@@ -8594,7 +8291,7 @@ class DynSetValue extends DynElem { ...@@ -8594,7 +8291,7 @@ class DynSetValue extends DynElem {
switch (pname.type) { switch (pname.type) {
case Type.Float32: case Type.Float32:
let inputValue = parseFloat(this.value.trim()); let inputValue = parseFloat(this.value.trim());
sts = setObjectInfo(pname, inputValue, "Float"); sts = setObjectInfo(pname, inputValue, pname.type);
if (even(sts)) { if (even(sts)) {
return 0; return 0;
} }
...@@ -8608,7 +8305,7 @@ class DynSetValue extends DynElem { ...@@ -8608,7 +8305,7 @@ class DynSetValue extends DynElem {
case Type.Mask: case Type.Mask:
case Type.Enum: case Type.Enum:
let inputValue = parseInt(this.value.trim(), 10); let inputValue = parseInt(this.value.trim(), 10);
sts = setObjectInfo(pname, inputValue, "Int"); sts = setObjectInfo(pname, inputValue, pname.type);
if (even(sts)) { if (even(sts)) {
return 0; return 0;
} }
...@@ -8624,13 +8321,13 @@ class DynSetValue extends DynElem { ...@@ -8624,13 +8321,13 @@ class DynSetValue extends DynElem {
break; break;
} }
sts = setObjectInfo(pname, inputValue, "Boolean"); sts = setObjectInfo(pname, inputValue, pname.type);
if (even(sts)) { if (even(sts)) {
return 0; return 0;
} }
break; break;
case Type.String: case Type.String:
sts = setObjectInfo(pname, inputValue, "String"); sts = setObjectInfo(pname, inputValue, pname.type);
if (even(sts)) { if (even(sts)) {
return 0; return 0;
} }
...@@ -8651,7 +8348,7 @@ class DynMethodToolbar extends DynElem { ...@@ -8651,7 +8348,7 @@ class DynMethodToolbar extends DynElem {
method_object; method_object;
toolbar_type; toolbar_type;
pname; pname_name;
xm_mask_flags = 0; xm_mask_flags = 0;
xm_mask_opmethods = 0; xm_mask_opmethods = 0;
xm_mask_mntmethods = 0; xm_mask_mntmethods = 0;
...@@ -8670,10 +8367,6 @@ class DynMethodToolbar extends DynElem { ...@@ -8670,10 +8367,6 @@ class DynMethodToolbar extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("MethodToolbar : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.MethodToolbar: case DynSave.MethodToolbar:
break; break;
...@@ -8707,46 +8400,46 @@ class DynMethodToolbar extends DynElem { ...@@ -8707,46 +8400,46 @@ class DynMethodToolbar extends DynElem {
this.pname_name = pname.name; this.pname_name = pname.name;
let parsed_name = this.pname_name + ".XttMethodsMask.Flags"; let parsed_name = this.pname_name + ".XttMethodsMask.Flags";
this.dyn.graph.getGdh().getObjectInfoInt(parsed_name, DynMethodToolbar.connect2, this); this.dyn.graph.getGdh().getObjectInfoInt(parsed_name).then(this.connect2);
} }
static connect2(id, self, sts, value) { connect2(res) {
if (sts & 1) { if (res.sts & 1) {
self.xm_mask_flags = value; this.xm_mask_flags = res.value;
if ((self.xm_mask_flags & XttMethodsFlagsMask.IsConfigured) === 0) { if ((this.xm_mask_flags & XttMethodsFlagsMask.IsConfigured) === 0) {
self.mask_configure = 1; this.mask_configure = 1;
self.mask_store = 1; this.mask_store = 1;
self.connect5(); this.connect5();
} else { } else {
let parsed_name = self.pname_name + ".XttMethodsMask.OpMethods"; let parsed_name = this.pname_name + ".XttMethodsMask.OpMethods";
self.dyn.graph.getGdh().getObjectInfoInt(parsed_name, self.connect3, self); this.dyn.graph.getGdh().getObjectInfoInt(parsed_name).then(this.connect3);
} }
} else { } else {
self.mask_configure = 1; this.mask_configure = 1;
self.connect5(); this.connect5();
} }
} }
static connect3(id, self, sts, value) { connect3(res) {
if (sts & 1) { if (res.sts & 1) {
self.xm_mask_opmethods = value; this.xm_mask_opmethods = res.value;
} else { } else {
console.log("DynMethodToolbar: " + self.pname_name); console.log("DynMethodToolbar: " + this.pname_name);
self.mask_configure = 1; this.mask_configure = 1;
} }
let parsed_name = self.pname_name + ".XttMethodsMask.MntMethods"; let parsed_name = this.pname_name + ".XttMethodsMask.MntMethods";
self.dyn.graph.getGdh().getObjectInfoInt(parsed_name, self.connect4, self); this.dyn.graph.getGdh().getObjectInfoInt(parsed_name).then(this.connect4);
} }
static connect4(id, self, sts, value) { connect4(res) {
if (sts & 1) { if (res.sts & 1) {
self.xm_mask_mntmethods = value; this.xm_mask_mntmethods = res.value;
} else { } else {
console.log("DynMethodToolbar: " + self.pname_name); console.log("DynMethodToolbar: " + this.pname_name);
self.mask_configure = 1; this.mask_configure = 1;
} }
self.connect5(); this.connect5();
} }
connect5() { connect5() {
...@@ -8968,8 +8661,7 @@ class DynMethodPulldownMenu extends DynElem { ...@@ -8968,8 +8661,7 @@ class DynMethodPulldownMenu extends DynElem {
this.pname_name = pname.name; this.pname_name = pname.name;
let parsed_name = this.pname_name + ".XttMethodsMask.Flags"; let parsed_name = this.pname_name + ".XttMethodsMask.Flags";
this.dyn.graph.getGdh() this.dyn.graph.getGdh().getObjectInfoInt(parsed_name).then(this.action2);
.getObjectInfoInt(parsed_name, DynMethodPulldownMenu.action2, this);
} }
break; break;
...@@ -9045,46 +8737,45 @@ class DynMethodPulldownMenu extends DynElem { ...@@ -9045,46 +8737,45 @@ class DynMethodPulldownMenu extends DynElem {
return 1; return 1;
} }
static action2(id, self, sts, value) { action2(res) {
if (sts & 1) { if (res.sts & 1) {
self.xm_mask_flags = value; this.xm_mask_flags = res.value;
if ((self.xm_mask_flags & XttMethodsFlagsMask.IsConfigured) === 0) { if ((this.xm_mask_flags & XttMethodsFlagsMask.IsConfigured) === 0) {
self.mask_configure = 1; this.mask_configure = 1;
self.mask_store = 1; this.mask_store = 1;
self.action5(); this.action5();
} else { } else {
let parsed_name = self.pname_name + ".XttMethodsMask.OpMethods"; let parsed_name = this.pname_name + ".XttMethodsMask.OpMethods";
self.dyn.graph.getGdh() this.dyn.graph.getGdh().getObjectInfoInt(parsed_name).then(this.action3);
.getObjectInfoInt(parsed_name, self.action3, self);
} }
} else { } else {
self.mask_configure = 1; this.mask_configure = 1;
self.action5(); this.action5();
} }
} }
static action3(id, self, sts, value) { action3(res) {
if (sts & 1) { if (res.sts & 1) {
self.xm_mask_opmethods = value; this.xm_mask_opmethods = res.value;
} else { } else {
console.log("DynMethodToolbar: " + self.pname_name); console.log("DynMethodToolbar: " + this.pname_name);
self.mask_configure = 1; this.mask_configure = 1;
} }
let parsed_name = self.pname_name + ".XttMethodsMask.MntMethods"; let parsed_name = this.pname_name + ".XttMethodsMask.MntMethods";
self.dyn.graph.getGdh().getObjectInfoInt(parsed_name, self.action4, self); this.dyn.graph.getGdh().getObjectInfoInt(parsed_name).then(this.action4);
} }
static action4(id, self, sts, value) { action4(res) {
if (sts & 1) { if (res.sts & 1) {
self.xm_mask_mntmethods = value; this.xm_mask_mntmethods = res.value;
} else { } else {
console.log("DynMethodToolbar: " + self.pname_name); console.log("DynMethodToolbar: " + this.pname_name);
self.mask_configure = 1; this.mask_configure = 1;
} }
self.action5(); this.action5();
} }
action5() { action5() {
...@@ -9257,10 +8948,6 @@ class DynPopupMenu extends DynElem { ...@@ -9257,10 +8948,6 @@ class DynPopupMenu extends DynElem {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.dyn.debug) {
console.log("DynResetDig : " + lines[i]);
}
switch (key) { switch (key) {
case DynSave.PopupMenu: case DynSave.PopupMenu:
break; break;
......
...@@ -75,7 +75,7 @@ class GraphLocalDb { ...@@ -75,7 +75,7 @@ class GraphLocalDb {
let typeId = this.getTypeId(attributeName); let typeId = this.getTypeId(attributeName);
let name = this.getName(attributeName); let name = this.getName(attributeName);
if (typeId === 0) { if (typeId === 0) {
return i; return 0;
} }
let id = this.nameToId(owner, name); let id = this.nameToId(owner, name);
...@@ -212,7 +212,7 @@ class Graph { ...@@ -212,7 +212,7 @@ class Graph {
constructor(appl) { constructor(appl) {
this.appl = appl; this.appl = appl;
if (typeof InstallTrigger !== 'undefined') { if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
// Firefox is not os fast... // Firefox is not os fast...
this.scan_time = 1; this.scan_time = 1;
this.fast_scan_time = 1; this.fast_scan_time = 1;
...@@ -249,31 +249,27 @@ class Graph { ...@@ -249,31 +249,27 @@ class Graph {
gdh_init_cb() { gdh_init_cb() {
if (this.priv === null) { if (this.priv === null) {
this.gdh.login("", "", this.login_cb, this); this.gdh.login("", "").then(this.login_cb);
} }
this.ctx.traceConnect(); this.ctx.traceConnect();
this.gdh.refObjectInfoList(this.trace_connected); this.gdh.refObjectInfoList().then(e => this.trace_cyclic());
}
login_cb(id, data, sts, result) {
console.log("Login:", sts, result);
this.priv = (sts & 1) ? result : 0;
} }
trace_connected(id, sts) { login_cb(res) {
this.trace_cyclic(); console.log("Login:", res.sts, res.value);
this.priv = (res.sts & 1) ? res.value : 0;
} }
trace_cyclic() { trace_cyclic() {
if (this.frame.nogdh) { if (this.frame.nogdh) {
this.trace_scan(0, 0); this.trace_scan();
} else { } else {
this.gdh.getRefObjectInfoAll(this.trace_scan); this.gdh.getRefObjectInfoAll(this.trace_scan);
} }
} }
trace_scan(id, sts) { trace_scan() {
this.scan_time = this.ctx.scantime; this.scan_time = this.ctx.scantime;
this.fast_scan_time = this.ctx.fast_scantime; this.fast_scan_time = this.ctx.fast_scantime;
this.animation_scan_time = this.ctx.animation_scantime; this.animation_scan_time = this.ctx.animation_scantime;
...@@ -306,9 +302,6 @@ class Graph { ...@@ -306,9 +302,6 @@ class Graph {
return ret; return ret;
} }
let dyn = new Dyn(this); let dyn = new Dyn(this);
if (type !== UserdataCbType.NodeClass) {
dyn.userdata = this;
}
ret.userdata = dyn; ret.userdata = dyn;
ret.row = dyn.open(lines, row); ret.row = dyn.open(lines, row);
} }
...@@ -354,7 +347,6 @@ class Graph { ...@@ -354,7 +347,6 @@ class Graph {
case Event.MB1Down: case Event.MB1Down:
case Event.MB1DoubleClick: case Event.MB1DoubleClick:
case Event.MB3Press: case Event.MB3Press:
case Event.ValueChanged:
case Event.SliderMoveStart: case Event.SliderMoveStart:
case Event.SliderMoveEnd: case Event.SliderMoveEnd:
case Event.SliderMoved: case Event.SliderMoved:
...@@ -712,6 +704,18 @@ class Graph { ...@@ -712,6 +704,18 @@ class Graph {
return Math.min(this.scan_time, this.animation_scan_time); return Math.min(this.scan_time, this.animation_scan_time);
} }
setScanTime(scan_time) {
this.scan_time = scan_time;
}
setFastScanTime(fast_scan_time) {
this.fast_scan_time = fast_scan_time;
}
setAnimationScanTime(animation_scan_time) {
this.animation_scan_time = animation_scan_time;
}
command(cmd) { command(cmd) {
if (this.appl) { if (this.appl) {
return this.appl.command(cmd); return this.appl.command(cmd);
...@@ -754,4 +758,9 @@ class Graph { ...@@ -754,4 +758,9 @@ class Graph {
loadCtx(file, read_cb) { loadCtx(file, read_cb) {
return this.frame.readGrowWindow(file, read_cb); return this.frame.readGrowWindow(file, read_cb);
} }
getReferenceName(name) {
// TODO
return null;
}
} }
\ No newline at end of file
...@@ -1653,20 +1653,93 @@ enum EventType { ...@@ -1653,20 +1653,93 @@ enum EventType {
} }
enum Event { enum Event {
Null,
MB1Click, MB1Click,
MB1Up = 2,
MB1Down,
MB1DoubleClick, MB1DoubleClick,
CursorMotion, MB1Press,
MB2Click,
MB2DoubleClick,
MB2Press,
MB1ClickShift,
MB1DoubleClickShift,
MB1PressShift,
MB2ClickShift,
MB2DoubleClickShift,
MB2PressShift,
MB1ClickCtrl,
MB1DoubleClickCtrl,
MB1PressCtrl,
MB2ClickCtrl,
MB2DoubleClickCtrl,
MB2PressCtrl,
MB1ClickShiftCtrl,
MB1DoubleClickShiftCtrl,
MB1PressShiftCtrl,
MB2ClickShiftCtrl,
MB2DoubleClickShiftCtrl,
MB2PressShiftCtrl,
MB3Click,
MB3Press,
ButtonRelease,
ButtonMotion, ButtonMotion,
ValueChanged, Exposure,
MenuCreate, Enter,
MenuActivated, Leave,
MenuDelete, CursorMotion,
Init,
PasteSequenceStart,
PasteSequenceEnd,
VisibilityUnobscured,
VisibilityObscured,
SelectClear,
ObjectMoved,
ObjectDeleted,
AnnotationInput,
Radiobutton,
Key_Return,
Key_Up,
Key_Down,
Key_Right,
Key_Left,
Key_PageUp,
Key_PageDown,
Key_BackSpace,
Key_PF1,
Key_PF2,
Key_PF3,
Key_PF4,
CreateGrowObject,
GrowDynamics,
SliderMoveStart, SliderMoveStart,
SliderMoved,
SliderMoveEnd, SliderMoveEnd,
MB3Press, SliderMoved,
HotRequest,
MB1Down,
MB1Up,
MB2Down,
MB2Up,
MB3Down,
MB3Up,
Key_Tab,
Map,
Unmap,
Resized,
Translate,
TipText,
Key_Ascii,
InputFocusLost,
InputFocusGained,
InputFocusInit,
Key_CtrlAscii,
Key_ShiftTab,
Key_Escape,
MenuActivated,
MenuCreate,
MenuDelete,
ScrollUp,
ScrollDown,
AnteUndo,
PostUndo,
Signal Signal
} }
......
class GlowArrow {
ctx: GrowCtx;
p_dest: GlowPoint;
p1: GlowPoint;
p2: GlowPoint;
arrow_width: Number;
arrow_length: Number;
draw_type: DrawType;
line_width: Number;
constructor(ctx) {
this.ctx = ctx;
this.p_dest = new GlowPoint();
this.p1 = new GlowPoint();
this.p2 = new GlowPoint();
}
open(lines, row) {
let i;
for (i = row; i < lines.length; i++) {
let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10);
switch (key) {
case GlowSave.Arrow:
break;
case GlowSave.Arrow_arrow_width:
this.arrow_width = Number(tokens[1]);
break;
case GlowSave.Arrow_arrow_length:
this.arrow_length = Number(tokens[1]);
break;
case GlowSave.Arrow_draw_type:
this.draw_type = DrawType(tokens[1]);
break;
case GlowSave.Arrow_line_width:
this.line_width = parseInt(tokens[1], 10);
break;
case GlowSave.Arrow_p_dest:
i = this.p_dest.open(lines, i + 1);
break;
case GlowSave.Arrow_p1:
i = this.p1.open(lines, i + 1);
break;
case GlowSave.Arrow_p2:
i = this.p2.open(lines, i + 1);
break;
case GlowSave.End:
return i;
default:
console.log("Syntax error in GlowArrow");
break;
}
}
return i;
}
}
\ No newline at end of file
...@@ -329,7 +329,6 @@ class GlowColor { ...@@ -329,7 +329,6 @@ class GlowColor {
} }
class GlowCustomColors { class GlowCustomColors {
debug = false;
colors_size = DrawType.CustomColor__ - DrawType.CustomColor1; colors_size = DrawType.CustomColor__ - DrawType.CustomColor1;
colors = new Array(this.colors_size); colors = new Array(this.colors_size);
colortheme_lightness = 0; colortheme_lightness = 0;
...@@ -380,10 +379,6 @@ class GlowCustomColors { ...@@ -380,10 +379,6 @@ class GlowCustomColors {
this.colors[j][0] = parseFloat(tokens[0]); this.colors[j][0] = parseFloat(tokens[0]);
this.colors[j][1] = parseFloat(tokens[1]); this.colors[j][1] = parseFloat(tokens[1]);
this.colors[j][2] = parseFloat(tokens[2]); this.colors[j][2] = parseFloat(tokens[2]);
if (this.debug) {
console.log(j, this.colors[j][0], this.colors[j][1],
this.colors[j][2]);
}
} }
break; break;
case GlowSave.End: case GlowSave.End:
......
...@@ -13,7 +13,6 @@ class GrowCtxWindow { ...@@ -13,7 +13,6 @@ class GrowCtxWindow {
class GrowCtx extends Rect { class GrowCtx extends Rect {
appl = null; appl = null;
debug = false;
antiAliasing = 0; antiAliasing = 0;
name = null; name = null;
version = 0; version = 0;
...@@ -110,10 +109,6 @@ class GrowCtx extends Rect { ...@@ -110,10 +109,6 @@ class GrowCtx extends Rect {
let tokens = lines[i].split(' '); let tokens = lines[i].split(' ');
let key = parseInt(tokens[0], 10); let key = parseInt(tokens[0], 10);
if (this.debug) {
console.log("ctx : " + lines[i]);
}
switch (key) { switch (key) {
case GlowSave.Ctx: case GlowSave.Ctx:
break; break;
......
...@@ -470,10 +470,6 @@ class GrowTrend extends GrowRect { ...@@ -470,10 +470,6 @@ class GrowTrend extends GrowRect {
return null; return null;
} }
getClassUserData() {
return this.nc.userdata;
}
getUserData() { getUserData() {
return this.userdata; return this.userdata;
} }
......
...@@ -32,8 +32,8 @@ class OpWindMenu { ...@@ -32,8 +32,8 @@ class OpWindMenu {
gdh_init_cb() { gdh_init_cb() {
let oid = new PwrtObjid(0, 0); let oid = new PwrtObjid(0, 0);
this.user = "Default"; this.user = "Default";
this.gdh.login("", "", this.login_cb, this); this.gdh.login("", "").then(this.login_cb);
this.gdh.getOpwindMenu(this.get_opplace(), this.get_menu_cb, 999); this.gdh.getOpwindMenu(this.get_opplace()).then(this.get_menu_cb);
} }
add_menu_button(context, text) { add_menu_button(context, text) {
...@@ -49,9 +49,9 @@ class OpWindMenu { ...@@ -49,9 +49,9 @@ class OpWindMenu {
return button; return button;
} }
get_menu_cb(id, data, sts, result) { get_menu_cb(res) {
let result = res.value;
this.info = result; this.info = result;
console.log("Menu received", sts, data, result.buttons.length);
let context = document.getElementById("opwindmenu"); let context = document.getElementById("opwindmenu");
document.getElementById("opwind_title").innerHTML = result.title; document.getElementById("opwind_title").innerHTML = result.title;
...@@ -89,7 +89,7 @@ class OpWindMenu { ...@@ -89,7 +89,7 @@ class OpWindMenu {
passwd = c.crypt("aa", passwd); passwd = c.crypt("aa", passwd);
this.user = user; this.user = user;
this.gdh.login(user, passwd, this.login_cb, this); this.gdh.login(user, passwd).then(this.login_cb);
}); });
document.getElementById("cancel_button") document.getElementById("cancel_button")
.addEventListener("click", function (event) { .addEventListener("click", function (event) {
...@@ -102,7 +102,7 @@ class OpWindMenu { ...@@ -102,7 +102,7 @@ class OpWindMenu {
document.getElementById("login_frame").style.height = '0px'; document.getElementById("login_frame").style.height = '0px';
this.priv = 0; this.priv = 0;
this.user = "Default"; this.user = "Default";
this.gdh.login("", "", this.login_cb, this); this.gdh.login("", "").then(this.login_cb);
}); });
document.getElementById("login_user").innerHTML = ""; document.getElementById("login_user").innerHTML = "";
...@@ -200,10 +200,9 @@ class OpWindMenu { ...@@ -200,10 +200,9 @@ class OpWindMenu {
} }
} }
login_cb(id, data, sts, result) { login_cb(res) {
console.log("Login:", sts, result); if (res.sts & 1) {
if (sts & 1) { this.priv = res.value;
this.priv = result;
sessionStorage.setItem("pwr_privilege", String(this.priv)); sessionStorage.setItem("pwr_privilege", String(this.priv));
if (this.user_text !== null) { if (this.user_text !== null) {
this.user_text.textContent = this.user + " on " + this.host; this.user_text.textContent = this.user + " on " + this.host;
......
...@@ -32,9 +32,9 @@ class Xtt { ...@@ -32,9 +32,9 @@ class Xtt {
let y = event.pageY - this.ctx.gdraw.offset_top; let y = event.pageY - this.ctx.gdraw.offset_top;
let x = event.pageX; let x = event.pageX;
if (event.shiftKey) { if (event.shiftKey) {
xtt.ctx.event_handler(Event.MB1ClickShift, x, y); this.ctx.event_handler(Event.MB1ClickShift, x, y);
} else { } else {
xtt.ctx.event_handler(Event.MB1Click, x, y); this.ctx.event_handler(Event.MB1Click, x, y);
} }
}); });
document.addEventListener("keydown", function (event) { document.addEventListener("keydown", function (event) {
...@@ -62,9 +62,7 @@ class Xtt { ...@@ -62,9 +62,7 @@ class Xtt {
.addEventListener("click", function (event) { .addEventListener("click", function (event) {
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof XttItemObject) { if (o.userdata instanceof XttItemObject) {
let newwindow = window.open("", "_blank"); this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_GRAPH).then(this.open_graph_cb);
this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_GRAPH,
this.open_graph_cb, newwindow);
} }
console.log("toolitem1 event"); console.log("toolitem1 event");
}); });
...@@ -72,10 +70,7 @@ class Xtt { ...@@ -72,10 +70,7 @@ class Xtt {
.addEventListener("click", function (event) { .addEventListener("click", function (event) {
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof XttItemObject) { if (o.userdata instanceof XttItemObject) {
let newwindow = window.open("", "_blank"); this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_OBJECTGRAPH).then(this.open_objectgraph_cb);
this.ctx.gdh.getObject(o.userdata.objid,
GdhOp.GET_OP_METHOD_OBJECTGRAPH, this.open_objectgraph_cb,
newwindow);
} }
console.log("toolitem2 event"); console.log("toolitem2 event");
}); });
...@@ -84,9 +79,7 @@ class Xtt { ...@@ -84,9 +79,7 @@ class Xtt {
console.log("toolitem1 event"); console.log("toolitem1 event");
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof XttItemObject) { if (o.userdata instanceof XttItemObject) {
let newwindow = window.open("", "_blank"); this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC).then(this.open_plc_cb);
this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC,
this.open_plc_cb, newwindow);
} else if (o.userdata instanceof XttItemCrr) { } else if (o.userdata instanceof XttItemCrr) {
let idx = o.userdata.name.lastIndexOf('-'); let idx = o.userdata.name.lastIndexOf('-');
let ostring = ""; let ostring = "";
...@@ -117,7 +110,7 @@ class Xtt { ...@@ -117,7 +110,7 @@ class Xtt {
document.getElementById("toolitem6") document.getElementById("toolitem6")
.addEventListener("click", function (event) { .addEventListener("click", function (event) {
let o = this.ctx.get_select(); let o = this.ctx.get_select();
this.ctx.gdh.crrSignal(o.userdata.objid, this.open_crr_cb, o); this.ctx.gdh.crrSignal(o.userdata.objid).then(this.open_crr_cb(o));
console.log("toolitem6 event"); console.log("toolitem6 event");
}); });
document.getElementById("toolitem7") document.getElementById("toolitem7")
...@@ -132,9 +125,8 @@ class Xtt { ...@@ -132,9 +125,8 @@ class Xtt {
return; return;
} }
if (o.userdata instanceof XttItemObject) { if (o.userdata instanceof XttItemObject) {
let newwindow = window.open("", "_blank");
this.ctx.gdh.getObject(o.userdata.objid, this.ctx.gdh.getObject(o.userdata.objid,
GdhOp.GET_OP_METHOD_HELPCLASS, this.open_helpclass_cb, newwindow); GdhOp.GET_OP_METHOD_HELPCLASS).then(this.open_helpclass_cb);
} }
}); });
...@@ -153,45 +145,46 @@ class Xtt { ...@@ -153,45 +145,46 @@ class Xtt {
gdh_init_cb() { gdh_init_cb() {
if (this.priv === null) { if (this.priv === null) {
this.ctx.gdh.login("", "", this.login_cb, this); this.ctx.gdh.login("", "").then(this.login_cb);
} }
let oid = new PwrtObjid(0, 0); let oid = new PwrtObjid(0, 0);
this.ctx.gdh.getAllXttChildren(oid, this.open_children_cb, this.ctx.gdh.getAllXttChildren(oid).then(this.open_children_cb(new XttOpenChildrenData(null, null)));
new XttOpenChildrenData(null, null));
this.ctx.gdh.listSent = true; this.ctx.gdh.listSent = true;
this.trace_cyclic(); this.trace_cyclic();
} }
login_cb(id, data, sts, result) { login_cb(res) {
console.log("Login:", sts, result); console.log("Login:", res.sts, res.value);
this.priv = (sts & 1) ? result : 0; this.priv = (res.sts & 1) ? res.value : 0;
} }
open_children_cb(id, data, sts, result) { open_children_cb(child) {
return function(res) {
let result = res.value;
this.ctx.set_nodraw(); this.ctx.set_nodraw();
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
if (data.node === null) { if (child.node === null) {
result[i].full_name = result[i].name; result[i].full_name = result[i].name;
new XttItemObject(this, result[i], null, Dest.AFTER); new XttItemObject(this, result[i], null, Dest.AFTER);
} else { } else {
result[i].full_name = result[i].full_name =
data.node.userdata.full_name + "-" + result[i].name; child.node.userdata.full_name + "-" + result[i].name;
new XttItemObject(this, result[i], data.node, Dest.INTOLAST); new XttItemObject(this, result[i], child.node, Dest.INTOLAST);
} }
} }
this.ctx.configure(); this.ctx.configure();
if (data.open_next !== null) { if (child.open_next !== null) {
if (data.open_next.length === 0) { if (child.open_next.length === 0) {
this.ctx.reset_nodraw(); this.ctx.reset_nodraw();
return; return;
} }
let child = this.ctx.a.get_first_child(data.node); let child = this.ctx.a.get_first_child(child.node);
while (child !== null) { while (child !== null) {
if (child.userdata.name === data.open_next[0]) { if (child.userdata.name === child.open_next[0]) {
if (data.open_next.length === 1) { if (child.open_next.length === 1) {
child.set_select(true); child.set_select(true);
child.set_invert(true); child.set_invert(true);
if (!this.ctx.is_visible(child)) { if (!this.ctx.is_visible(child)) {
...@@ -199,12 +192,12 @@ class Xtt { ...@@ -199,12 +192,12 @@ class Xtt {
} }
window.focus(); // Doesn't work window.focus(); // Doesn't work
} else { } else {
data.open_next.splice(0, 1); child.open_next.splice(0, 1);
if (data.open_next[0] === '.') { if (child.open_next[0] === '.') {
data.open_next.splice(0, 1); child.open_next.splice(0, 1);
child.userdata.open_attributes(this, data.open_next); child.userdata.open_attributes(this, child.open_next);
} else { } else {
child.userdata.open_children(this, data.open_next); child.userdata.open_children(child.open_next);
} }
} }
break; break;
...@@ -216,85 +209,87 @@ class Xtt { ...@@ -216,85 +209,87 @@ class Xtt {
this.ctx.reset_nodraw(); this.ctx.reset_nodraw();
this.ctx.draw(); this.ctx.draw();
} }
}
open_attributes_cb(id, data, sts, result) { open_attributes_cb(child) {
return function(res) {
let result = res.value;
this.ctx.set_nodraw(); this.ctx.set_nodraw();
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
result[i].objid = data.node.userdata.objid; result[i].objid = child.node.userdata.objid;
result[i].full_name = data.node.userdata.full_name + "." + result[i].name; result[i].full_name = child.node.userdata.full_name + "." + result[i].name;
if ((result[i].flags & Adef.Array) !== 0) { if ((result[i].flags & Adef.Array) !== 0) {
new XttItemAttrArray(this, result[i], data.node, Dest.INTOLAST); new XttItemAttrArray(this, result[i], child.node, Dest.INTOLAST);
} else if ((result[i].flags & Adef.Class) !== 0) { } else if ((result[i].flags & Adef.Class) !== 0) {
new XttItemAttrObject(this, result[i], data.node, Dest.INTOLAST); new XttItemAttrObject(this, result[i], child.node, Dest.INTOLAST);
} else { } else {
new XttItemAttr(this, result[i], data.node, Dest.INTOLAST); new XttItemAttr(this, result[i], child.node, Dest.INTOLAST);
} }
} }
this.ctx.configure(); this.ctx.configure();
if (data.open_next !== null) { if (child.open_next !== null) {
if (data.open_next.length === 0) { if (child.open_next.length === 0) {
this.ctx.reset_nodraw(); this.ctx.reset_nodraw();
return; return;
} }
let child = this.ctx.a.get_first_child(data.node); let child2 = this.ctx.a.get_first_child(child.node);
while (child !== null) { while (child2 !== null) {
if (child.userdata.name === data.open_next[0]) { if (child2.userdata.name === child.open_next[0]) {
if (data.open_next.length === 1) { if (child.open_next.length === 1) {
child.set_select(true); child2.set_select(true);
child.set_invert(true); child2.set_invert(true);
if (!this.ctx.is_visible(child)) { if (!this.ctx.is_visible(child2)) {
this.ctx.scroll(child.ll_y, 0.50); this.ctx.scroll(child2.ll_y, 0.50);
} }
window.focus(); // Doesn't work window.focus(); // Doesn't work
} else { } else {
data.open_next.splice(0, 1); child.open_next.splice(0, 1);
child.userdata.open_attributes(this, data.open_next); child2.userdata.open_attributes(this, child.open_next);
} }
break; break;
} }
child = this.ctx.a.get_next_sibling(child); child2 = this.ctx.a.get_next_sibling(child2);
} }
} }
this.ctx.reset_nodraw(); this.ctx.reset_nodraw();
this.ctx.draw(); this.ctx.draw();
} }
}
open_plc_cb(id, data, sts, result: ObjectInfo) { open_plc_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
} else { w.document.write("Error status " + res.sts);
let param1;
if (result.param1 === "") {
param1 = "";
} else { } else {
param1 = "&obj=" + result.param1; let result = res.value;
} let param1 = result.param1 ? ("&obj=" + result.param1) : "";
console.log("flow.html?vid=" + result.objid.vid + "&oix=" + w.location.href = "flow.html?vid=" + result.objid.vid + "&oix=" +
result.objid.oix + param1); result.objid.oix + param1;
data.location.href = w.document.title = "Trace " + result.fullname;
"flow.html?vid=" + result.objid.vid + "&oix=" + result.objid.oix +
param1;
data.document.title = "Trace " + result.fullname;
} }
} }
open_objectgraph_cb(id, data, sts, result: ObjectInfo) { open_objectgraph_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
data.location.href = let result = res.value;
w.location.href =
"ge.html?graph=" + result.param1 + "&instance=" + result.fullname; "ge.html?graph=" + result.param1 + "&instance=" + result.fullname;
data.document.title = result.fullname; w.document.title = result.fullname;
} }
} }
open_graph_cb(id, data, sts, result: ObjectInfo) { open_graph_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
let result = res.value;
let idx = result.param1.indexOf('.'); let idx = result.param1.indexOf('.');
if (idx !== -1) { if (idx !== -1) {
result.param1 = result.param1.substring(0, idx); result.param1 = result.param1.substring(0, idx);
...@@ -305,25 +300,28 @@ class Xtt { ...@@ -305,25 +300,28 @@ class Xtt {
instancestr = "&instance=" + result.fullname; instancestr = "&instance=" + result.fullname;
} }
data.location.href = "ge.html?graph=" + result.param1 + instancestr; w.location.href = "ge.html?graph=" + result.param1 + instancestr;
data.document.title = result.param1; w.document.title = result.param1;
} }
} }
open_crr_cb(id, node, sts, crrdata) { open_crr_cb(node) {
if ((sts & 1) === 0) { return function(res) {
if ((res.sts & 1) === 0) {
return; return;
} }
node.userdata.open_crossreferences(this, crrdata); node.userdata.open_crossreferences(res.value);
}
} }
open_helpclass_cb(id, data, sts, result: ObjectInfo) { open_helpclass_cb(res) {
if ((sts & 1) === 0) { let w = window.open("", "_blank");
data.document.write("Error status " + sts); if ((res.sts & 1) === 0) {
w.document.write("Error status " + res.sts);
} else { } else {
console.log("open_helpclass", result.param1); console.log("open_helpclass", res.value.param1);
data.location.href = w.location.href =
location.protocol + "//" + location.host + result.param1; location.protocol + "//" + location.host + res.value.param1;
} }
} }
...@@ -336,12 +334,12 @@ class Xtt { ...@@ -336,12 +334,12 @@ class Xtt {
switch (event) { switch (event) {
case Event.ObjectDeleted: case Event.ObjectDeleted:
if (object.userdata instanceof XttItemAttr) { if (object.userdata instanceof XttItemAttr) {
object.userdata.scan_close(this); object.userdata.scan_close();
} }
break; break;
case Event.MB1Click: case Event.MB1Click:
if (object.in_icon(x, y)) { if (object.in_icon(x, y)) {
item.open_children(this, null); item.open_children(null);
} else { } else {
if (object.select) { if (object.select) {
object.set_select(false); object.set_select(false);
...@@ -400,7 +398,7 @@ class Xtt { ...@@ -400,7 +398,7 @@ class Xtt {
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o !== null) { if (o !== null) {
item = o.userdata; item = o.userdata;
item.open_children(this, null); item.open_children(null);
} }
break; break;
case Event.Key_Left: case Event.Key_Left:
...@@ -420,15 +418,13 @@ class Xtt { ...@@ -420,15 +418,13 @@ class Xtt {
case Event.Key_CtrlR: case Event.Key_CtrlR:
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o !== null) { if (o !== null) {
this.ctx.gdh.crrSignal(o.userdata.objid, this.open_crr_cb, o); this.ctx.gdh.crrSignal(o.userdata.objid).then(this.open_crr_cb(o));
} }
break; break;
case Event.Key_CtrlL: case Event.Key_CtrlL:
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof XttItemObject) { if (o.userdata instanceof XttItemObject) {
let newwindow = window.open("", "_blank"); this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC).then(this.open_plc_cb);
this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_PLC,
this.open_plc_cb, newwindow);
} else if (o.userdata instanceof XttItemCrr) { } else if (o.userdata instanceof XttItemCrr) {
let idx = o.userdata.name.lastIndexOf('-'); let idx = o.userdata.name.lastIndexOf('-');
let ostring = ""; let ostring = "";
...@@ -443,10 +439,7 @@ class Xtt { ...@@ -443,10 +439,7 @@ class Xtt {
let o = this.ctx.get_select(); let o = this.ctx.get_select();
if (o.userdata instanceof XttItemObject) { if (o.userdata instanceof XttItemObject) {
console.log("CtrlG", o.userdata.objid.vid, o.userdata.objid.oix); console.log("CtrlG", o.userdata.objid.vid, o.userdata.objid.oix);
let newwindow = window.open("", "_blank"); this.ctx.gdh.getObject(o.userdata.objid, GdhOp.GET_OP_METHOD_OBJECTGRAPH).then(this.open_objectgraph_cb);
this.ctx.gdh.getObject(o.userdata.objid,
GdhOp.GET_OP_METHOD_OBJECTGRAPH, this.open_objectgraph_cb,
newwindow);
} }
break; break;
default: default:
...@@ -526,7 +519,7 @@ class Xtt { ...@@ -526,7 +519,7 @@ class Xtt {
window.focus(); // Doesn't work window.focus(); // Doesn't work
} else { } else {
path.splice(0, 1); path.splice(0, 1);
(<XttItemObject> this.ctx.a.get(j).userdata).open_children(this, path); (<XttItemObject> this.ctx.a.get(j).userdata).open_children(path);
} }
break; break;
} }
...@@ -537,13 +530,12 @@ class Xtt { ...@@ -537,13 +530,12 @@ class Xtt {
this.ctx.gdh.getRefObjectInfoAll(this.trace_scan); this.ctx.gdh.getRefObjectInfoAll(this.trace_scan);
} }
trace_scan(id, sts) { trace_scan() {
this.scan_update = false; this.scan_update = false;
let self = this;
this.ctx.a.forEach(function (e) { this.ctx.a.forEach(function (e) {
let item = e.userdata; let item = e.userdata;
if (item instanceof XttItemAttr) { if (item instanceof XttItemAttr) {
item.scan(self); item.scan();
} }
}); });
if (this.scan_update) { if (this.scan_update) {
...@@ -567,6 +559,7 @@ class Xtt { ...@@ -567,6 +559,7 @@ class Xtt {
} }
class XttItemObject { class XttItemObject {
xtt: Xtt;
objid: PwrtObjid; objid: PwrtObjid;
cid: number; cid: number;
name: string; name: string;
...@@ -575,6 +568,7 @@ class XttItemObject { ...@@ -575,6 +568,7 @@ class XttItemObject {
node: PlowNode; node: PlowNode;
constructor(xtt, object_info, destination, destCode) { constructor(xtt, object_info, destination, destCode) {
this.xtt = xtt;
this.objid = object_info.objid; this.objid = object_info.objid;
this.cid = object_info.cid; this.cid = object_info.cid;
this.name = object_info.name; this.name = object_info.name;
...@@ -590,67 +584,65 @@ class XttItemObject { ...@@ -590,67 +584,65 @@ class XttItemObject {
this.node.set_annotation_pixmap(0, object_info.has_children ? Bitmaps.map : Bitmaps.leaf); this.node.set_annotation_pixmap(0, object_info.has_children ? Bitmaps.map : Bitmaps.leaf);
} }
open_children(xtt, open_next) { open_children(open_next) {
if (this.node.node_open !== 0) { if (this.node.node_open !== 0) {
this.close(xtt); this.close();
} else if (!this.has_children) { } else if (!this.has_children) {
this.open_attributes(xtt, null); this.open_attributes(null);
} else { } else {
xtt.ctx.gdh.getAllXttChildren(this.objid, xtt.open_children_cb, this.xtt.ctx.gdh.getAllXttChildren(this.objid).then(this.xtt.open_children_cb(new XttOpenChildrenData(this.node, open_next)));
new XttOpenChildrenData(this.node, open_next));
this.node.node_open |= Open.CHILDREN; this.node.node_open |= Open.CHILDREN;
this.node.set_annotation_pixmap(0, Bitmaps.openmap); this.node.set_annotation_pixmap(0, Bitmaps.openmap);
} }
} }
open_attributes(xtt, open_next) { open_attributes(open_next) {
if (this.node.node_open === 0) { if (this.node.node_open === 0) {
xtt.ctx.gdh.getAllClassAttributes(this.cid, this.objid, this.xtt.ctx.gdh.getAllClassAttributes(this.cid, this.objid).then(this.xtt.open_attributes_cb(new XttOpenChildrenData(this.node, open_next)));
xtt.open_attributes_cb, new XttOpenChildrenData(this.node, open_next));
this.node.node_open |= Open.ATTRIBUTES; this.node.node_open |= Open.ATTRIBUTES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else { } else {
this.close(xtt); this.close();
} }
} }
open_crossreferences(xtt, crrdata) { open_crossreferences(crrdata) {
if (this.node.node_open === 0) { if (this.node.node_open === 0) {
for (let i = 0; i < crrdata.length; i++) { for (let i = 0; i < crrdata.length; i++) {
new XttItemCrr(xtt, crrdata[i], this.node, Dest.INTOLAST); new XttItemCrr(this.xtt, crrdata[i], this.node, Dest.INTOLAST);
} }
this.node.node_open |= Open.CROSSREFERENCES; this.node.node_open |= Open.CROSSREFERENCES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else { } else {
this.close(xtt); this.close();
} }
} }
close(xtt) { close() {
if (this.node.node_open & Open.CHILDREN) { if (this.node.node_open & Open.CHILDREN) {
xtt.ctx.close_node(this.node); this.xtt.ctx.close_node(this.node);
this.node.node_open &= ~Open.CHILDREN; this.node.node_open &= ~Open.CHILDREN;
this.node.set_annotation_pixmap(0, Bitmaps.map); this.node.set_annotation_pixmap(0, Bitmaps.map);
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else if (this.node.node_open & Open.ATTRIBUTES) { } else if (this.node.node_open & Open.ATTRIBUTES) {
xtt.ctx.close_node(this.node); this.xtt.ctx.close_node(this.node);
this.node.node_open &= ~Open.ATTRIBUTES; this.node.node_open &= ~Open.ATTRIBUTES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else if (this.node.node_open & Open.CROSSREFERENCES) { } else if (this.node.node_open & Open.CROSSREFERENCES) {
xtt.ctx.close_node(this.node); this.xtt.ctx.close_node(this.node);
this.node.node_open &= ~Open.CROSSREFERENCES; this.node.node_open &= ~Open.CROSSREFERENCES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else { } else {
let parent = xtt.ctx.get_parent_object(this.node); let parent = this.xtt.ctx.get_parent_object(this.node);
if (parent !== null) { if (parent !== null) {
parent.userdata.close(xtt); parent.userdata.close();
parent.set_select(true); parent.set_select(true);
parent.set_invert(true); parent.set_invert(true);
} }
...@@ -659,6 +651,7 @@ class XttItemObject { ...@@ -659,6 +651,7 @@ class XttItemObject {
} }
class XttItemAttr { class XttItemAttr {
xtt: Xtt;
name: string; name: string;
objid: PwrtObjid; objid: PwrtObjid;
full_name: string; full_name: string;
...@@ -671,6 +664,7 @@ class XttItemAttr { ...@@ -671,6 +664,7 @@ class XttItemAttr {
node: PlowNode; node: PlowNode;
constructor(xtt, info, destination, destCode) { constructor(xtt, info, destination, destCode) {
this.xtt = xtt;
this.name = info.name; this.name = info.name;
this.objid = info.objid; this.objid = info.objid;
this.full_name = info.full_name; this.full_name = info.full_name;
...@@ -687,15 +681,15 @@ class XttItemAttr { ...@@ -687,15 +681,15 @@ class XttItemAttr {
this.refid = xtt.ctx.gdh.refObjectInfo(this.full_name, info.type, 1); this.refid = xtt.ctx.gdh.refObjectInfo(this.full_name, info.type, 1);
} }
open_children(xtt, open_next) { open_children(open_next) {
xtt.openValueInputDialog(this, "Enter value"); this.xtt.openValueInputDialog(this, "Enter value");
} }
set_value(xtt, value) { set_value(value) {
switch (this.type) { switch (this.type) {
case Type.Float32: case Type.Float32:
let inputValue = parseFloat(value.trim()); let inputValue = parseFloat(value.trim());
xtt.ctx.gdh.setObjectInfoFloat(this.full_name, inputValue); this.xtt.ctx.gdh.setObjectInfoFloat(this.full_name, inputValue);
break; break;
case Type.Int8: case Type.Int8:
case Type.Int16: case Type.Int16:
...@@ -708,37 +702,37 @@ class XttItemAttr { ...@@ -708,37 +702,37 @@ class XttItemAttr {
case Type.Enum: case Type.Enum:
case Type.Boolean: case Type.Boolean:
let inputValue = parseInt(value.trim(), 10); let inputValue = parseInt(value.trim(), 10);
xtt.ctx.gdh.setObjectInfoInt(this.full_name, inputValue); this.xtt.ctx.gdh.setObjectInfoInt(this.full_name, inputValue);
break; break;
case Type.String: case Type.String:
case Type.Time: case Type.Time:
case Type.DeltaTime: case Type.DeltaTime:
case Type.AttrRef: case Type.AttrRef:
case Type.Objid: case Type.Objid:
xtt.ctx.gdh.setObjectInfoString(this.full_name, value); this.xtt.ctx.gdh.setObjectInfoString(this.full_name, value);
break; break;
default: default:
break; break;
} }
} }
open_attributes(xtt, open_next) { open_attributes(open_next) {
} }
close(xtt) { close() {
let parent = xtt.ctx.get_parent_object(this.node); let parent = this.xtt.ctx.get_parent_object(this.node);
if (parent !== null) { if (parent !== null) {
parent.userdata.close(xtt); parent.userdata.close();
parent.set_select(true); parent.set_select(true);
parent.set_invert(true); parent.set_invert(true);
} }
} }
scan(xtt) { scan() {
if (!this.refid) { if (!this.refid) {
return; return;
} }
let value = xtt.ctx.gdh.getObjectRefInfo(this.refid); let value = this.xtt.ctx.gdh.getObjectRefInfo(this.refid);
if (this.firstScan || value !== this.old_value) { if (this.firstScan || value !== this.old_value) {
let value_str; let value_str;
...@@ -768,17 +762,18 @@ class XttItemAttr { ...@@ -768,17 +762,18 @@ class XttItemAttr {
this.old_value = value; this.old_value = value;
this.node.set_annotation(1, value_str); this.node.set_annotation(1, value_str);
xtt.scan_update = true; this.xtt.scan_update = true;
} }
this.firstScan = false; this.firstScan = false;
} }
scan_close(xtt) { scan_close() {
xtt.ctx.gdh.unrefObjectInfo(this.refid); this.xtt.ctx.gdh.unrefObjectInfo(this.refid);
} }
} }
class XttItemAttrArray { class XttItemAttrArray {
xtt: Xtt;
name: string; name: string;
objid: PwrtObjid; objid: PwrtObjid;
full_name: string; full_name: string;
...@@ -789,6 +784,7 @@ class XttItemAttrArray { ...@@ -789,6 +784,7 @@ class XttItemAttrArray {
node: PlowNode; node: PlowNode;
constructor(xtt, info, destination, destCode) { constructor(xtt, info, destination, destCode) {
this.xtt = xtt;
this.name = info.name; this.name = info.name;
this.objid = info.objid; this.objid = info.objid;
this.full_name = info.full_name; this.full_name = info.full_name;
...@@ -803,11 +799,11 @@ class XttItemAttrArray { ...@@ -803,11 +799,11 @@ class XttItemAttrArray {
xtt.ctx.insertNode(this.node, destination, destCode); xtt.ctx.insertNode(this.node, destination, destCode);
} }
open_children(xtt, open_next) { open_children(open_next) {
this.open_attributes(xtt, open_next); this.open_attributes(open_next);
} }
open_attributes(xtt, open_next) { open_attributes(open_next) {
let info = new AttributeInfo(); let info = new AttributeInfo();
info.objid = this.objid; info.objid = this.objid;
...@@ -819,34 +815,34 @@ class XttItemAttrArray { ...@@ -819,34 +815,34 @@ class XttItemAttrArray {
info.full_name = ""; info.full_name = "";
info.classname = ""; info.classname = "";
xtt.ctx.set_nodraw(); this.xtt.ctx.set_nodraw();
for (let i = 0; i < this.elements; i++) { for (let i = 0; i < this.elements; i++) {
info.name = this.name + "[" + i + "]"; info.name = this.name + "[" + i + "]";
info.full_name = this.full_name + "[" + i + "]"; info.full_name = this.full_name + "[" + i + "]";
if ((info.flags & Adef.Array) !== 0) { if ((info.flags & Adef.Array) !== 0) {
new XttItemAttrArray(xtt, info, this.node, Dest.INTOLAST); new XttItemAttrArray(this.xtt, info, this.node, Dest.INTOLAST);
} else if ((info.flags & Adef.Class) !== 0) { } else if ((info.flags & Adef.Class) !== 0) {
new XttItemAttrObject(xtt, info, this.node, Dest.INTOLAST); new XttItemAttrObject(this.xtt, info, this.node, Dest.INTOLAST);
} else { } else {
new XttItemAttr(xtt, info, this.node, Dest.INTOLAST); new XttItemAttr(this.xtt, info, this.node, Dest.INTOLAST);
} }
} }
this.node.node_open |= Open.ATTRIBUTES; this.node.node_open |= Open.ATTRIBUTES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.reset_nodraw(); this.xtt.ctx.reset_nodraw();
xtt.ctx.draw(); this.xtt.ctx.draw();
} }
close(xtt) { close() {
if (this.node.node_open & Open.ATTRIBUTES) { if (this.node.node_open & Open.ATTRIBUTES) {
xtt.ctx.close_node(this.node); this.xtt.ctx.close_node(this.node);
this.node.node_open &= ~Open.ATTRIBUTES; this.node.node_open &= ~Open.ATTRIBUTES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else { } else {
let parent = xtt.ctx.get_parent_object(this.node); let parent = this.xtt.ctx.get_parent_object(this.node);
if (parent !== null) { if (parent !== null) {
parent.userdata.close(xtt); parent.userdata.close();
parent.set_select(true); parent.set_select(true);
parent.set_invert(true); parent.set_invert(true);
} }
...@@ -855,6 +851,7 @@ class XttItemAttrArray { ...@@ -855,6 +851,7 @@ class XttItemAttrArray {
} }
class XttItemAttrObject { class XttItemAttrObject {
xtt: Xtt;
name: string; name: string;
classname: string; classname: string;
objid: PwrtObjid; objid: PwrtObjid;
...@@ -865,6 +862,7 @@ class XttItemAttrObject { ...@@ -865,6 +862,7 @@ class XttItemAttrObject {
node: PlowNode; node: PlowNode;
constructor(xtt, info, destination, destCode) { constructor(xtt, info, destination, destCode) {
this.xtt = Xtt;
this.name = info.name; this.name = info.name;
this.classname = info.classname; this.classname = info.classname;
this.objid = info.objid; this.objid = info.objid;
...@@ -880,36 +878,35 @@ class XttItemAttrObject { ...@@ -880,36 +878,35 @@ class XttItemAttrObject {
xtt.ctx.insertNode(this.node, destination, destCode); xtt.ctx.insertNode(this.node, destination, destCode);
} }
open_children(xtt, open_next) { open_children(open_next) {
this.open_attributes(xtt, null); this.open_attributes(null);
} }
open_attributes(xtt, open_next) { open_attributes(open_next) {
if (this.node.node_open === 0) { if (this.node.node_open === 0) {
xtt.ctx.gdh.getAllClassAttributes(this.cid, this.objid, this.xtt.ctx.gdh.getAllClassAttributes(this.cid, this.objid).then(this.xtt.open_attributes_cb(new XttOpenChildrenData(this.node, open_next)));
xtt.open_attributes_cb, new XttOpenChildrenData(this.node, open_next));
this.node.node_open |= Open.ATTRIBUTES; this.node.node_open |= Open.ATTRIBUTES;
} else { } else {
this.close(xtt); this.close();
} }
} }
close(xtt) { close() {
if (this.node.node_open & Open.ATTRIBUTES) { if (this.node.node_open & Open.ATTRIBUTES) {
xtt.ctx.close_node(this.node); this.xtt.ctx.close_node(this.node);
this.node.node_open &= ~Open.ATTRIBUTES; this.node.node_open &= ~Open.ATTRIBUTES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else if (this.node.node_open & Open.CROSSREFERENCES) { } else if (this.node.node_open & Open.CROSSREFERENCES) {
xtt.ctx.close_node(this.node); this.xtt.ctx.close_node(this.node);
this.node.node_open &= ~Open.CROSSREFERENCES; this.node.node_open &= ~Open.CROSSREFERENCES;
xtt.ctx.configure(); this.xtt.ctx.configure();
xtt.ctx.draw(); this.xtt.ctx.draw();
} else { } else {
let parent = xtt.ctx.get_parent_object(this.node); let parent = this.xtt.ctx.get_parent_object(this.node);
if (parent !== null) { if (parent !== null) {
parent.userdata.close(xtt); parent.userdata.close();
parent.set_select(true); parent.set_select(true);
parent.set_invert(true); parent.set_invert(true);
} }
...@@ -918,6 +915,7 @@ class XttItemAttrObject { ...@@ -918,6 +915,7 @@ class XttItemAttrObject {
} }
class XttItemCrr { class XttItemCrr {
xtt: Xtt;
name: string; name: string;
classname: string; classname: string;
objid: PwrtObjid; objid: PwrtObjid;
...@@ -925,6 +923,7 @@ class XttItemCrr { ...@@ -925,6 +923,7 @@ class XttItemCrr {
node: PlowNode; node: PlowNode;
constructor(xtt, info, destination, destCode) { constructor(xtt, info, destination, destCode) {
this.xtt = Xtt;
this.name = info.name; this.name = info.name;
this.classname = info.classname; this.classname = info.classname;
this.objid = info.objid; this.objid = info.objid;
...@@ -939,10 +938,10 @@ class XttItemCrr { ...@@ -939,10 +938,10 @@ class XttItemCrr {
xtt.ctx.insertNode(this.node, destination, destCode); xtt.ctx.insertNode(this.node, destination, destCode);
} }
close(xtt) { close() {
let parent = xtt.ctx.get_parent_object(this.node); let parent = this.xtt.ctx.get_parent_object(this.node);
if (parent) { if (parent) {
parent.userdata.close(xtt); parent.userdata.close();
parent.set_select(true); parent.set_select(true);
parent.set_invert(true); parent.set_invert(true);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment