Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion Client/src/modules/AMCModule_ContentItem_Form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<v-container dense>
<template v-for="entity in moduleitem.entities">
<v-row dense no-gutters :key="entity.name" v-if="(entity.type=='edit')">
<v-col cols="12"><v-text-field outlined dense v-model="entity.dataObject.value" :label="entity.caption" :disabled="entity.dataObject.disabled" :readonly="entity.dataObject.readonly" :prefix="entity.prefix" :suffix="entity.suffix" :rules="checkRules (entity)"/></v-col>
<v-col cols="12"><v-text-field outlined dense v-model="entity.dataObject.value" :label="entity.caption" :disabled="entity.dataObject.disabled" :readonly="entity.dataObject.readonly" :prefix="entity.prefix" :suffix="entity.suffix" :rules="checkRules (entity)" @blur="uiEditBoxChange(entity)" @keyup.enter="uiEditBoxChange(entity)"/></v-col>
</v-row>

<v-row dense no-gutters :key="entity.name" v-if="(entity.type=='switch')">
Expand Down Expand Up @@ -113,6 +113,33 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}
},


uiEditBoxChange(editentity) {



if (!editentity || !editentity.dataObject) return;

// skip if no change event defined
if (!editentity.changeevent || editentity.changeevent === "") return;

// don't send updates for read-only or disabled fields
if (editentity.dataObject.readonly || editentity.dataObject.disabled) return;

const formvalues = this.Application.assembleFormValues([ editentity.uuid ]);
const senderuuid = editentity.uuid;


console.log('BLUR EVENT', {
event: editentity.changeevent,
sender: editentity.uuid,
value: editentity.dataObject.value
});

this.Application.triggerUIEvent(editentity.changeevent, senderuuid, formvalues);
},


checkRules (editentity) {


Expand Down
14 changes: 11 additions & 3 deletions Implementation/UI/amc_ui_module_contentitem_form.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ PParameterGroup CUIModule_ContentFormEntity::getClientVariableGroup(CParameterHa
PUIModule_ContentFormEdit CUIModule_ContentFormEdit::makeFromXML(const pugi::xml_node& xmlNode, const std::string& sFormPath, PStateMachineData pStateMachineData)
{
auto nameAttrib = xmlNode.attribute("name");
auto changeeventAttrib = xmlNode.attribute("changeevent");


if (nameAttrib.empty())
throw ELibMCInterfaceException(LIBMC_ERROR_FORMENTITYNAMEMISSING);
Expand All @@ -158,16 +160,18 @@ PUIModule_ContentFormEdit CUIModule_ContentFormEdit::makeFromXML(const pugi::xml
CUIExpression minvalue(xmlNode, "minvalue");
CUIExpression maxvalue(xmlNode, "maxvalue");

auto pEdit = std::make_shared<CUIModule_ContentFormEdit>(nameAttrib.as_string(), sFormPath, caption, value, prefix, suffix, pStateMachineData);
std::string sOnChangeEvent = changeeventAttrib.as_string();

auto pEdit = std::make_shared<CUIModule_ContentFormEdit>(nameAttrib.as_string(), sFormPath, caption, value, prefix, suffix, sOnChangeEvent, pStateMachineData);

pEdit->setValidationExpressions(validation, validationmessage, minvalue, maxvalue);

return pEdit;

}

CUIModule_ContentFormEdit::CUIModule_ContentFormEdit(const std::string& sName, const std::string& sFormPath, CUIExpression Caption, CUIExpression Value, CUIExpression Prefix, CUIExpression Suffix, PStateMachineData pStateMachineData)
: CUIModule_ContentFormEntity (sName, sFormPath, Caption, pStateMachineData), m_PrefixExpression (Prefix), m_SuffixExpression (Suffix), m_ValueExpression (Value)
CUIModule_ContentFormEdit::CUIModule_ContentFormEdit(const std::string& sName, const std::string& sFormPath, CUIExpression Caption, CUIExpression Value, CUIExpression Prefix, CUIExpression Suffix, std::string sOnChangeEvent, PStateMachineData pStateMachineData)
: CUIModule_ContentFormEntity (sName, sFormPath, Caption, pStateMachineData), m_PrefixExpression (Prefix), m_SuffixExpression (Suffix), m_ValueExpression (Value), m_sOnChangeEvent(sOnChangeEvent)
{
m_PrefixExpression.checkExpressionSyntax(m_pStateMachineData);
m_SuffixExpression.checkExpressionSyntax(m_pStateMachineData);
Expand Down Expand Up @@ -240,6 +244,10 @@ void CUIModule_ContentFormEdit::writeVariablesToJSON(CJSONWriter& writer, CJSONW
object.addString(AMC_API_KEY_UI_FORMPREFIX, pGroup->getParameterValueByName(AMC_API_KEY_UI_FORMPREFIX));
object.addString(AMC_API_KEY_UI_FORMSUFFIX, pGroup->getParameterValueByName(AMC_API_KEY_UI_FORMSUFFIX));
std::string sValidation = pGroup->getParameterValueByName(AMC_API_KEY_UI_FORMVALIDATION);

if (!m_sOnChangeEvent.empty())
object.addString(AMC_API_KEY_UI_FORMCHANGEEVENT, m_sOnChangeEvent);

if (sValidation == "double") {
object.addString(AMC_API_KEY_UI_FORMVALIDATION, sValidation);
object.addString(AMC_API_KEY_UI_FORMVALIDATIONMESSAGE, pGroup->getParameterValueByName(AMC_API_KEY_UI_FORMVALIDATIONMESSAGE));
Expand Down
3 changes: 2 additions & 1 deletion Implementation/UI/amc_ui_module_contentitem_form.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,12 @@ namespace AMC {
CUIExpression m_MinValueExpression;
CUIExpression m_MaxValueExpression;

std::string m_sOnChangeEvent;
public:

static PUIModule_ContentFormEdit makeFromXML(const pugi::xml_node& xmlNode, const std::string& sFormPath, PStateMachineData pStateMachineData);

CUIModule_ContentFormEdit(const std::string& sName, const std::string& sFormPath, CUIExpression Caption, CUIExpression Value, CUIExpression Prefix, CUIExpression Suffix, PStateMachineData pStateMachineData);
CUIModule_ContentFormEdit(const std::string& sName, const std::string& sFormPath, CUIExpression Caption, CUIExpression Value, CUIExpression Prefix, CUIExpression Suffix, std::string sOnChangeEvent, PStateMachineData pStateMachineData);

virtual ~CUIModule_ContentFormEdit();

Expand Down
Loading