Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
df9efa1
Fix for S7 Protocol Address
netfabb Mar 5, 2021
d83c8b9
finished S7Net configurability
netfabb Mar 6, 2021
e11b251
Updated Scanlab driver states
netfabb Mar 16, 2021
2b4ff03
Updated Scanlab driver states
netfabb Mar 16, 2021
cb9e387
Added LibMQTT Library
netfabb Mar 16, 2021
f550a00
added libMQTT bindings
netfabb Mar 16, 2021
b5a76f8
Added MQTT Driver implementation
netfabb Mar 17, 2021
dbe9683
Updated Working Directory API
netfabb Mar 17, 2021
d488b51
Added MQTT Driver implementation
netfabb Mar 17, 2021
c900956
Updated Scanlab Driver
netfabb Mar 17, 2021
348096a
Updated LibMQTT Interface
netfabb Mar 17, 2021
2412d7c
Updated LibMQTT
netfabb Mar 17, 2021
ce2b166
Updated MQTT driver
netfabb Mar 18, 2021
fac21f8
Updated S7Net Driver
netfabb Mar 18, 2021
d0b694d
fixed working directory
netfabb Mar 18, 2021
c757274
updated createDist with mqtt driver
netfabb Mar 18, 2021
70be353
Added S7 Command Parameters
netfabb Mar 19, 2021
6419be8
Updated ScanLab Delays, S7 Versioning and minor bugfixes
netfabb Apr 1, 2021
6421872
Disabled new go modules
netfabb Apr 9, 2021
54807f7
Added certificate
netfabb Apr 16, 2021
a7e165a
added mqtt config example
netfabb Apr 16, 2021
1dec679
fixed Marlin controller
netfabb May 14, 2021
9794fc6
Improved Exception handling
netfabb May 14, 2021
f36deda
Improved Exception handling
netfabb May 14, 2021
ddeb8cb
Added Tabs Component
netfabb May 17, 2021
c14592d
Added Client Splitters
netfabb May 20, 2021
bd810e2
Implemented Environment for querying parts and toolpath metadata
netfabb May 21, 2021
9039692
First Ximc Implementation
netfabb May 21, 2021
28eb46d
Updated Ximc driver
netfabb May 25, 2021
c99512b
edited framework build script
netfabb May 28, 2021
b5a531a
Added First Package manager
netfabb May 28, 2021
1dbbf35
package Manager
netfabb Jun 2, 2021
67f0768
First addition of Interface event forms
netfabb Jun 9, 2021
568bc47
Added Form Handling in Events
netfabb Jun 10, 2021
2fd0173
Updated Button Group Form Events
netfabb Jun 11, 2021
c983636
Added configuration xml to project
netfabb Jun 11, 2021
34186ff
Added Event form values
alexanderoster Jun 16, 2021
d663e83
Improved REST error handling
alexanderoster Jun 16, 2021
f2729d4
Added Form default values
alexanderoster Jun 17, 2021
c206208
Added Form default values
alexanderoster Jun 17, 2021
0ff8117
BRPLC Driver first implementation
alexanderoster Jun 18, 2021
673126b
Added Client Variable state
alexanderoster Jun 22, 2021
c8d3250
API Allow upload with Put
alexanderoster Jul 2, 2021
733830b
compile fixes
alexanderoster Jun 23, 2021
ec7bacb
Added Parameter Handler Duplicate
alexanderoster Jun 29, 2021
7a79f3a
compile fixes
alexanderoster Jun 23, 2021
0634ec9
merge fixes
alexanderoster Jun 29, 2021
5f0e726
BuR Driver implementation
alexanderoster Jul 6, 2021
c37095d
BuR Driver update
alexanderoster Jul 7, 2021
751f563
Improved BuR Driver
alexanderoster Jul 14, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
29 changes: 27 additions & 2 deletions ACT/LibMC.xml
Original file line number Diff line number Diff line change
Expand Up @@ -336,8 +336,33 @@
<error name="INVALIDEVENTCONTEXT" code="327" description="Invalid event sender" />
<error name="INVALIDLAYERINDEX" code="328" description="Invalid layer index" />
<error name="TEMPBASEPATHEMPTY" code="329" description="Empty base path for temporary files" />
<error name="PROFILENOTFOUND" code="330" description="Profile not found." />

<error name="PROFILENOTFOUND" code="330" description="Profile not found." />
<error name="INVALIDSERVICEHANDLER" code="331" description="Invalid service handler." />
<error name="INVALIDMAXTHREADCOUNT" code="332" description="Invalid max thread count." />
<error name="INVALIDTOOLPATHSTREAMUUID" code="333" description="Invalid toolpath stream uuid" />
<error name="MISSINGSECTIONHEIGHT" code="334" description="Missing section height" />
<error name="INVALIDSECTIONHEIGHT" code="335" description="Invalid section height" />
<error name="MISSINGSECTIONWIDTH" code="336" description="Missing section width" />
<error name="INVALIDSECTIONWIDTH" code="337" description="Invalid section width" />
<error name="TOOLPATHMETADATANOTFOUND" code="338" description="Toolpath metadata not found" />

<error name="BUILDITEMHASNOUUID" code="339" description="Build item has no uuid" />
<error name="OBJECTHASNOUUID" code="340" description="Object has no uuid" />

<error name="COULDNOTPARSEEVENTPARAMETERS" code="341" description="Could not parse event parameters" />
<error name="INVALIDEVENTPARAMETERS" code="342" description="Invalid event parameters" />
<error name="INVALIDFORMVALUES" code="343" description="Invalid form values" />
<error name="FORMNAMEMISSING" code="344" description="Form name is missing" />
<error name="FORMENTITYNAMEMISSING" code="345" description="Form entity name is missing" />
<error name="FORMNOTFOUND" code="346" description="Form not found" />
<error name="FORMENTITYNOTFOUND" code="347" description="Form entity not found" />
<error name="DUPLICATEENTITYNAME" code="348" description="Duplicate form entity name" />
<error name="COULDNOTFINDEVENTSENDERPAGE" code="349" description="Could not find event sender page" />
<error name="COULDNOTFINDEVENTSENDER" code="350" description="Could not find event sender" />
<error name="DUPLICATEFORMNAME" code="351" description="Duplicate form name" />



</errors>


Expand Down
203 changes: 192 additions & 11 deletions ACT/LibMCEnv.xml

Large diffs are not rendered by default.

29 changes: 24 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,30 @@ set_target_properties(libmcdata
)


add_custom_target(configuration_xml ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Plugins/config.xml)

set_property(TARGET configuration_xml APPEND PROPERTY SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Plugins/config.xml)

add_custom_command(
TARGET configuration_xml PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "creating output directory")

add_custom_command(
TARGET configuration_xml PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory
${CMAKE_CURRENT_BINARY_DIR}/Output)

add_custom_command(
TARGET configuration_xml PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "copying config.xml...")


add_custom_command(
TARGET configuration_xml PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/Plugins/config.xml
${PROJECT_BINARY_DIR}/Output/${GLOBALGITHASH}_config.xml)

add_custom_target(copy_distribution_libraries ALL)
add_dependencies(copy_distribution_libraries copy_framework)

Expand All @@ -322,11 +346,6 @@ add_custom_command(
endif()


add_custom_command(
TARGET copy_distribution_libraries POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/Plugins/config.xml
${PROJECT_BINARY_DIR}/Output/${GLOBALGITHASH}_config.xml)


add_custom_target(create_core_resources ALL)
Expand Down
39 changes: 20 additions & 19 deletions Client/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -68,23 +68,18 @@
<Dialog_Error :Application="Application" />
</v-container>

<v-container fluid v-if="appIsReady">

<template v-for="uiPage in Application.AppContent.Pages">

<v-row align="start" justify="center" :key="uiPage.name" v-if="(Application.AppState.activePage == uiPage.name)">

<template v-for="uiModule in uiPage.modules">

<Module_Content :key="uiModule.name" v-if="(uiModule.type == 'content')" :module="uiModule" :Application="Application" />

</template>

</v-row>
</template>

<template v-for="uiPage in Application.AppContent.Pages">
<v-container :key="uiPage.name" v-if="appIsReady && (Application.AppState.activePage == uiPage.name)" style="width:100%; height:85vh; display:block">

</v-container>
<template v-for="uiModule in uiPage.modules">
<Module_Content :key="uiModule.name" v-if="(uiModule.type == 'content')" :module="uiModule" :Application="Application" />
<Module_Tabs :key="uiModule.name" v-if="(uiModule.type == 'tabs')" :module="uiModule" :Application="Application" />
<Module_VerticalSplit :key="uiModule.name" v-if="(uiModule.type == 'verticalsplit')" :module="uiModule" :Application="Application" />
<Module_HorizontalSplit :key="uiModule.name" v-if="(uiModule.type == 'horizontalsplit')" :module="uiModule" :Application="Application" />
</template>

</v-container>
</template>

</v-main>

Expand All @@ -102,9 +97,12 @@

import Dialog_Login from "./Dialog_Login.vue";
import Dialog_Error from "./Dialog_Error.vue";

import Module_Content from "./Module_Content.vue";
import Module_Tabs from "./Module_Tabs.vue";
import Module_VerticalSplit from "./Module_VerticalSplit.vue";
import Module_HorizontalSplit from "./Module_HorizontalSplit.vue";


export default {

created() {
Expand Down Expand Up @@ -179,9 +177,12 @@
},

components: {
Module_Content,
Dialog_Login,
Dialog_Error
Dialog_Error,
Module_Content,
Module_Tabs,
Module_VerticalSplit,
Module_HorizontalSplit
},

methods: {
Expand Down
152 changes: 121 additions & 31 deletions Client/src/Application.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ export default class AMCApplication {
{
this.API = {
baseURL : apiBaseURL,
authToken: nullToken
authToken: nullToken,
unsuccessfulUpdateCounter: 0
}

this.AppState = {
Expand All @@ -35,7 +36,8 @@ export default class AMCApplication {
MenuItems: [],
ToolbarItems: [],
ContentItems: [],
Pages: []
Pages: [],
FormEntities: []
}


Expand Down Expand Up @@ -123,7 +125,14 @@ export default class AMCApplication {
.catch(err => {
this.setStatusToError (err.response.data.message);
});
}
}


performLogout ()
{
this.authToken = nullToken;
this.unsuccessfulUpdateCounter = 0;
}

requestLogin (userName, userPassword)
{
Expand Down Expand Up @@ -169,6 +178,79 @@ export default class AMCApplication {
}


prepareModuleItem (item)
{
if (item.type === "parameterlist") {

this.AppContent.ContentItems[item.uuid] = { uuid: item.uuid, entries: [], refresh: true };
item.entries = this.AppContent.ContentItems[item.uuid].entries;

}

if (item.type === "buildlist") {

this.AppContent.ContentItems[item.uuid] = { uuid: item.uuid, entries: [], refresh: true };
item.entries = this.AppContent.ContentItems[item.uuid].entries;

}

if (item.type === "upload") {
item.state = { uploadid: 0, chosenFile: null, idcounter: 0, messages: [] }

}

if (item.type === "form") {

for (var entity of item.entities) {

this.AppContent.FormEntities[entity.uuid] =
{ uuid: entity.uuid,
value: entity.defaultvalue,
remotevalue: entity.defaultvalue,
disabled: entity.disabled,
readonly: entity.readonly
};
entity.dataObject = this.AppContent.FormEntities[entity.uuid];
}



}

}


prepareModule (module)
{
var item, tab, section;

if (module.type === "content") {
for (item of module.items) {
this.prepareModuleItem (item)
}

}

if (module.type === "tabs") {
for (tab of module.tabs) {
this.prepareModule (tab)
}
}

if (module.type === "verticalsplit") {
for (section of module.sections) {
this.prepareModule (section)
}
}

if (module.type === "horizontalsplit") {
for (section of module.sections) {
this.prepareModule (section)
}
}
}


retrieveStateUpdate () {

this.axiosGetRequest ("/ui/state")
Expand All @@ -177,32 +259,10 @@ export default class AMCApplication {
this.AppContent.MenuItems = resultJSON.data.menuitems;
this.AppContent.ToolbarItems = resultJSON.data.toolbaritems;

var page, module, item;
var page, module;
for (page of resultJSON.data.pages) {
for (module of page.modules) {
if (module.type === "content") {
for (item of module.items) {
if (item.type === "parameterlist") {

this.AppContent.ContentItems[item.uuid] = { uuid: item.uuid, entries: [], refresh: true };
item.entries = this.AppContent.ContentItems[item.uuid].entries;

}

if (item.type === "buildlist") {

this.AppContent.ContentItems[item.uuid] = { uuid: item.uuid, entries: [], refresh: true };
item.entries = this.AppContent.ContentItems[item.uuid].entries;

}

if (item.type === "upload") {
item.state = { uploadid: 0, chosenFile: null, idcounter: 0, messages: [] }

}
}

}
this.prepareModule (module)
}

}
Expand All @@ -219,13 +279,22 @@ export default class AMCApplication {
updateContentItem (uuid) {

this.AppContent.ContentItems[uuid].refresh = false;

var headers = {}
var authToken = this.API.authToken;

if (authToken != nullToken)
headers.Authorization = "Bearer " + authToken;

var url = this.API.baseURL + "/ui/contentitem/" + uuid;
Axios({
method: "GET",
"headers": headers,
url: url
})
.then(resultJSON => {

this.unsuccessfulUpdateCounter = 0;

var oldentrycount = this.AppContent.ContentItems[uuid].entries.length;
for (var i = 0; i < oldentrycount; i++) {
Expand All @@ -238,8 +307,14 @@ export default class AMCApplication {
this.AppContent.ContentItems[uuid].refresh = true;
})
.catch(err => {
err;
this.AppContent.ContentItems[uuid].refresh = true;

this.unsuccessfulUpdateCounter = this.unsuccessfulUpdateCounter + 1;
if (this.unsuccessfulUpdateCounter > 5) {
this.setStatusToError (err.message);
} else {
this.AppContent.ContentItems[uuid].refresh = true;
}

});

}
Expand Down Expand Up @@ -383,12 +458,13 @@ export default class AMCApplication {
}


triggerUIEvent (eventname, senderuuid, contextuuid) {
triggerUIEvent (eventname, senderuuid, contextuuid, formvalues) {

this.axiosPostRequest("/ui/event", {
"eventname": eventname,
"senderuuid": senderuuid,
"contextuuid": contextuuid
"contextuuid": contextuuid,
"formvalues": formvalues
})
.then(resultHandleEvent => {
resultHandleEvent;
Expand All @@ -398,6 +474,20 @@ export default class AMCApplication {
alert (err);
});
}


assembleFormValues (formValueUUIDList)
{
var resultObject = {}

for (var entityuuid of formValueUUIDList) {
var formValue = this.AppContent.FormEntities[entityuuid].value;
resultObject[entityuuid] = formValue;
}

return resultObject;

}

}

Expand Down
3 changes: 2 additions & 1 deletion Client/src/ContentItem_ButtonGroup.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@
uiModuleButtonClick: function (button) {

var contextuuid = this.Application.AppState.activeObject;
var formvalues = this.Application.assembleFormValues (button.eventformvalues);

if (button.event != "") {
this.Application.triggerUIEvent (button.event, button.uuid, contextuuid);
this.Application.triggerUIEvent (button.event, button.uuid, contextuuid, formvalues);
}

if (button.targetpage != "") {
Expand Down
Loading