Skip to content
This repository has been archived by the owner on Jul 4, 2023. It is now read-only.

Commit

Permalink
test mode for accs (#98)
Browse files Browse the repository at this point in the history
* fixes #93
fixes #92

* started #94

* #94

Co-authored-by: Christian Benjamin Ries <c.ries@beckhoff.com>
  • Loading branch information
cbries and Christian Benjamin Ries authored Apr 9, 2021
1 parent 1e5007f commit a7ddf8b
Show file tree
Hide file tree
Showing 8 changed files with 360 additions and 40 deletions.
Binary file added EcosApp/images/noimage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 16 additions & 1 deletion EcosApp/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,18 @@ function accessoryExecute(data) {
});
}

function accessoryTest(data) {
var srv = window.serverHandling;
if (typeof srv === "undefined" || srv == null)
return; // TODO show error

srv.sendCommand({
"command": "accessory",
"timestamp": Date.now(),
"cmddata": data
});
}

// an item in the plan is clicked
function itemClicked(data) {
var srv = window.serverHandling;
Expand Down Expand Up @@ -470,6 +482,9 @@ $(document).ready(function () {
window.accessoriesDlg.on("setting", function (ev) {
changeSetting(ev.data);
});
window.__eventOn('startAccessoryTest', function (ev) {
accessoryTest(ev.data);
});

window.routesDlg = new Routes();
window.routesDlg.install();
Expand All @@ -493,7 +508,7 @@ $(document).ready(function () {
var jsonData = JSON.parse(ev.data);
changeLocomotive('function', jsonData);
});

window.planField = new Planfield({
isEditMode: false
});
Expand Down
4 changes: 2 additions & 2 deletions EcosApp/railessentials.min.js

Large diffs are not rendered by default.

68 changes: 55 additions & 13 deletions EcosApp/src/accessories.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,18 @@ class Accessories {
this.__initEventHandling();

this.__recentlyHighlighted = {};

if (typeof window.__toggleAccessoryTest === "undefined" || window.__toggleAccessoryTest == null) {
window.__toggleAccessoryTest = function(accessoryAddress) {
window.__eventTrigger('startAccessoryTest',
{
cmd: "accessoryTest",
addresses: JSON.parse(atob(accessoryAddress)),
periods: 10, // period of test cycles, TODO, make it editable
pause: 1000 // milliseoncds, TODO, make it editable
});
}
}
}

__initEventHandling() {
Expand Down Expand Up @@ -61,6 +73,30 @@ class Accessories {
});
self.__recentlyHighlighted = {};
}

__renderTestFunctionality(record) {
const oid = record.recid;

const addrInfo = {
addr1: record.addr1,
addr2: record.addr2,
port1: record.port1,
port2: record.port2,
inverse1: record.inverse1,
inverse2: record.inverse2
};

let json = JSON.stringify(addrInfo);
json = btoa(json);

const innerHtml = '<div style="height: 100%; width: 100%; white-space: nowrap; text-align: center; padding-top: 3px;">' +
'<span style="display: inline-block; height: 100%; vertical-align: middle;">'
+ '<input type="button" value="Test" id="cmdAccessoryTest_' + oid + '" onclick="window.__toggleAccessoryTest(\'' + json + '\')">'
+ '</span>'
+ '</div>';

return innerHtml;
}

install(options = {}) {
const self = this;
Expand Down Expand Up @@ -123,10 +159,10 @@ class Accessories {
{ field: 'accessoryId', caption: 'Accessory ID', size: '2%', sortable: false, hidden: true },
{ field: 'identifier', caption: 'Identifier', size: '7%', sortable: true },
{ field: 'type', caption: 'Type', size: '10%', sortable: true },
{ field: 'state', caption: 'State', size: '5%', sortable: false },
{ field: 'state', caption: 'State', size: '5%', sortable: true },

{ field: 'addr1', caption: 'Address1', tooltip: 'Address1', size: '5%', sortable: false, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{ field: 'port1', caption: 'Port1', tooltip: 'Port1', size: '5%', sortable: false, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{ field: 'addr1', caption: 'Address1', tooltip: 'Address1', size: '5%', sortable: true, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{ field: 'port1', caption: 'Port1', tooltip: 'Port1', size: '5%', sortable: true, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{
field: 'inverse1',
caption: 'Inverse1',
Expand All @@ -140,8 +176,8 @@ class Accessories {
}
},

{ field: 'addr2', caption: 'Address2', tooltip: 'Address2', size: '5%', sortable: false, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{ field: 'port2', caption: 'Port2', tooltip: 'Port2', size: '5%', sortable: false, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{ field: 'addr2', caption: 'Address2', tooltip: 'Address2', size: '5%', sortable: true, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{ field: 'port2', caption: 'Port2', tooltip: 'Port2', size: '5%', sortable: true, hidden: true, render: 'int', editable: { type: 'int', min: 0, max: 32756 } },
{
field: 'inverse2',
caption: 'Inverse2',
Expand All @@ -162,6 +198,17 @@ class Accessories {
sortable: false,
hidden: false,
editable: { type: 'string' }
},
{
field: 'longTermSwitching',
caption: 'Test',
tooltip: 'Toggles long-term switching test, i.e. the accessory will be switched continously.',
size: '5%',
sortable: false,
hidden: true,
editable: false,
style: 'text-align: center',
render: self.__renderTestFunctionality
}
],
records: [],
Expand Down Expand Up @@ -221,6 +268,8 @@ class Accessories {
elGrid.toggleColumn('addr2');
elGrid.toggleColumn('port2');
elGrid.toggleColumn('inverse2');

elGrid.toggleColumn('longTermSwitching');
}
});

Expand Down Expand Up @@ -372,14 +421,7 @@ class Accessories {

this.__installed = true;
}

//__cleanupChangedState() {
// const self = this;
// $('#' + this.__dialogName + ' td.w2ui-grid-data').each(function () {
// $(this).removeClass('w2ui-changed');
// });
//}


removeAccessory(identifier) {
if (typeof identifier === "undefined") return;
if (identifier == null) return;
Expand Down
41 changes: 19 additions & 22 deletions EcosApp/src/locomotives.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,13 @@ class Locomotives {
'<img id="'
+ fakeId
+ '" ' +
'style="height: 16px; width: 16px; margin: auto;" ' +
'src="./images/noimage32x32.png" />'
'style="height: 16px; width: 32px; margin: auto;" ' +
'src="./images/noimage.png" />'
+ '</div>';
return innerHtml;
}

__renderFunctions(record, index, column_index) {
// record.noOfFunctions
// record.funcset
// record.funcdesc

const maxFnc = record.noOfFunctions;
if (maxFnc == 0)
Expand Down Expand Up @@ -318,7 +315,7 @@ class Locomotives {
const rec = elGrid.get(event.recid);
self.__trigger('locomotiveDoubleClick', rec);
},
onSelect: function(ev) {
onSelect: function (ev) {
bringToFront(self.__dialogName);
}
});
Expand Down Expand Up @@ -481,7 +478,7 @@ class Locomotives {

const recentLocomotiveData = self.__getLocomotiveOfRecentData(locOid);
let preloadData = "esu";

if (recentLocomotiveData != null && recentLocomotiveData.SpeedCurve != null) {
if (typeof recentLocomotiveData.SpeedCurve.steps !== "undefined" &&
recentLocomotiveData.SpeedCurve.steps != null) {
Expand Down Expand Up @@ -603,41 +600,41 @@ class Locomotives {
let level1 = 0, level2 = 0, level3 = 0, level4 = 0;

if (typeof dataOid.SpeedLevels !== "undefined" && dataOid.SpeedLevels != null) {
if(typeof dataOid.SpeedLevels.speedLevel1 !== "undefined" && dataOid.SpeedLevels.speedLevel1 != null) {
if (typeof dataOid.SpeedLevels.speedLevel1 !== "undefined" && dataOid.SpeedLevels.speedLevel1 != null) {
level1 = dataOid.SpeedLevels.speedLevel1;
}
if(typeof dataOid.SpeedLevels.speedLevel2 !== "undefined" && dataOid.SpeedLevels.speedLevel2 != null) {
if (typeof dataOid.SpeedLevels.speedLevel2 !== "undefined" && dataOid.SpeedLevels.speedLevel2 != null) {
level2 = dataOid.SpeedLevels.speedLevel2;
}
if(typeof dataOid.SpeedLevels.speedLevel3 !== "undefined" && dataOid.SpeedLevels.speedLevel3 != null) {
if (typeof dataOid.SpeedLevels.speedLevel3 !== "undefined" && dataOid.SpeedLevels.speedLevel3 != null) {
level3 = dataOid.SpeedLevels.speedLevel3;
}
if(typeof dataOid.SpeedLevels.speedLevel4 !== "undefined" && dataOid.SpeedLevels.speedLevel4 != null) {
if (typeof dataOid.SpeedLevels.speedLevel4 !== "undefined" && dataOid.SpeedLevels.speedLevel4 != null) {
level4 = dataOid.SpeedLevels.speedLevel4;
}
}

if(row.speedLevel1 !== level1) {
if (row.speedLevel1 !== level1) {
row.speedLevel1 = level1;
elGrid.refreshCell(oid, 'speedLevel1');
}

if(row.speedLevel2 !== level2) {
if (row.speedLevel2 !== level2) {
row.speedLevel2 = level2;
elGrid.refreshCell(oid, 'speedLevel2');
}

if(row.speedLevel3 !== level3) {
if (row.speedLevel3 !== level3) {
row.speedLevel3 = level3;
elGrid.refreshCell(oid, 'speedLevel3');
}

if(row.speedLevel4 !== level4) {
if (row.speedLevel4 !== level4) {
row.speedLevel4 = level4;
elGrid.refreshCell(oid, 'speedLevel4');
}

} catch(err) {
} catch (err) {
// ignore
}
}
Expand Down Expand Up @@ -672,7 +669,7 @@ class Locomotives {
const funcset = ecosObj.funcset;
const funcdesc = ecosObj.funcdesc;
const noOfFunctions = ecosObj.nrOfFunctions;

const rec = elGrid.find({ oid: oid });
if (rec.length <= 0) {
//
Expand Down Expand Up @@ -779,7 +776,7 @@ class Locomotives {
"level4": parseInt(v4)
};
}
catch(err) {
catch (err) {
return {
"level1": parseInt(maxSpeedstep * 0.1),
"level2": parseInt(maxSpeedstep * 0.3),
Expand Down Expand Up @@ -818,7 +815,7 @@ class Locomotives {
if (counter === speedLevels.level2) select2 = "selected";
if (counter === speedLevels.level3) select3 = "selected";
if (counter === speedLevels.level4) select4 = "selected";

hl1 += '<option value="' + counter + '" ' + select1 + '>' + counter + '</option>\n';
hl2 += '<option value="' + counter + '" ' + select2 + '>' + counter + '</option>\n';
hl3 += '<option value="' + counter + '" ' + select3 + '>' + counter + '</option>\n';
Expand Down Expand Up @@ -846,10 +843,10 @@ class Locomotives {
html += '<div class="w2ui-field">';
html += '<label>Speed Curve:</label>';
html += '<input type="button" id="cmdSpeedCurveContainer_' + recid + '" ' +
'value="Modify" ' +
'style="padding: 2px; margin-top: 3px; margin-left: 5px;">';
'value="Modify" ' +
'style="padding: 2px; margin-top: 3px; margin-left: 5px;">';
html += '</div > ';


// end of div area
html += '</div>';
Expand Down
Loading

0 comments on commit a7ddf8b

Please sign in to comment.