use of com.twinsoft.convertigo.beans.mobile.components.dynamic.IonBean in project convertigo by convertigo.
the class UIDynamicAction method computeActionContent.
protected String computeActionContent() {
if (isEnabled()) {
IonBean ionBean = getIonBean();
if (ionBean != null) {
int numThen = numberOfActions();
String actionName = getActionName();
String inputs = computeActionInputs(false);
StringBuilder sbCatch = new StringBuilder();
StringBuilder sbThen = new StringBuilder();
Iterator<UIComponent> it = getUIComponentList().iterator();
while (it.hasNext()) {
UIComponent component = (UIComponent) it.next();
if (component.isEnabled()) {
String sCatch = "", sThen = "";
if (component instanceof UIDynamicAction) {
sThen = ((UIDynamicAction) component).computeActionContent();
}
if (component instanceof UICustomAction) {
sThen = ((UICustomAction) component).computeActionContent();
}
if (component instanceof UIActionFailureEvent) {
sCatch = ((UIActionFailureEvent) component).computeEvent();
}
if (!sCatch.isEmpty()) {
sbCatch.append(sCatch);
}
if (!sThen.isEmpty()) {
sbThen.append(sbThen.length() > 0 && numThen > 1 ? "\t\t," + System.lineSeparator() : "").append(sThen);
}
}
}
String tsCode = "";
tsCode += "\t\tnew Promise((resolve, reject) => {" + System.lineSeparator();
// tsCode += "\t\tlet self: any = stack[\""+ getName() +"\"] = {};"+ System.lineSeparator();
tsCode += "\t\tlet self: any = stack[\"" + getName() + "\"] = stack[\"" + priority + "\"] = {};" + System.lineSeparator();
tsCode += "\t\tself.in = " + inputs + ";" + System.lineSeparator();
if ("InvokeAction".equals(ionBean.getName())) {
if (isBroken()) {
tsCode += "\t\treturn this.actionBeans." + actionName + "(this, {...self.in.props, ...{message: 'Invoke source is broken'}}, " + "{...stack[\"root\"].in, ...self.in.vars})" + System.lineSeparator();
} else {
if (getSharedAction() != null) {
tsCode += "\t\treturn this.actionBeans." + actionName + "(this, {...{stack: stack, parent: parent, out: out}, ...self.in.props}, " + "{...stack[\"root\"].in, ...params, ...self.in.vars}, event)" + System.lineSeparator();
} else {
tsCode += "\t\treturn this.actionBeans." + actionName + "(this, {...{stack: stack, parent: parent, out: out}, ...self.in.props}, " + "{...stack[\"root\"].in, ...self.in.vars}, event)" + System.lineSeparator();
}
}
} else {
tsCode += "\t\treturn this.actionBeans." + actionName + "(this, self.in.props, {...stack[\"root\"].in, ...self.in.vars})" + System.lineSeparator();
}
tsCode += "\t\t.catch((error:any) => {" + System.lineSeparator();
tsCode += "\t\tparent = self;" + System.lineSeparator();
tsCode += "\t\tparent.out = error;" + System.lineSeparator();
tsCode += "\t\tout = parent.out;" + System.lineSeparator();
if (sbCatch.length() > 0) {
tsCode += "\t\t" + sbCatch.toString();
} else {
tsCode += "\t\treturn Promise.reject(error);" + System.lineSeparator();
}
tsCode += "\t\t})" + System.lineSeparator();
tsCode += "\t\t.then((res:any) => {" + System.lineSeparator();
tsCode += "\t\tparent = self;" + System.lineSeparator();
tsCode += "\t\tparent.out = res;" + System.lineSeparator();
tsCode += "\t\tout = parent.out;" + System.lineSeparator();
if (sbThen.length() > 0) {
if (numThen > 1) {
tsCode += "\t\treturn Promise.all([" + System.lineSeparator();
tsCode += sbThen.toString();
tsCode += "\t\t])" + System.lineSeparator();
} else {
tsCode += "\t\treturn " + sbThen.toString().replaceFirst("\t\t", "");
}
} else {
tsCode += "\t\treturn Promise.resolve(res);" + System.lineSeparator();
}
if ("IfAction".equals(ionBean.getName())) {
tsCode += "\t\t}, (error: any) => {if (\"c8oSkipError\" === error.message) {resolve(false);} else {this.c8o.log.debug(\"[MB] " + actionName + " : \", error.message);throw new Error(error);}})" + System.lineSeparator();
} else {
tsCode += "\t\t}, (error: any) => {this.c8o.log.debug(\"[MB] " + actionName + " : \", error.message);throw new Error(error);})" + System.lineSeparator();
}
tsCode += "\t\t.then((res:any) => {resolve(res)}).catch((error:any) => {reject(error)})" + System.lineSeparator();
tsCode += "\t\t})" + System.lineSeparator();
return tsCode;
}
}
return "";
}
use of com.twinsoft.convertigo.beans.mobile.components.dynamic.IonBean in project convertigo by convertigo.
the class UIDynamicAction method getContributor.
@Override
protected Contributor getContributor() {
Contributor contributor = super.getContributor();
return new Contributor() {
@Override
public boolean isNgModuleForApp() {
if (!getModuleNgImports().isEmpty() || !getModuleNgProviders().isEmpty()) {
return true;
}
return false;
}
@Override
public Map<String, String> getActionTsFunctions() {
Map<String, String> functions = new HashMap<String, String>();
IonBean ionBean = getIonBean();
if (ionBean != null) {
String actionName = getActionName();
String actionCode = ComponentManager.getActionTsCode(actionName);
if (compareToTplVersion("7.5.2.0") < 0) {
actionCode = actionCode.replaceFirst("C8oPageBase", "C8oPage");
actionCode = actionCode.replaceAll("C8oCafUtils\\.merge", "page.merge");
}
functions.put(actionName, actionCode);
}
return functions;
}
@Override
public Map<String, String> getActionTsImports() {
Map<String, String> imports = new HashMap<String, String>();
IonBean ionBean = getIonBean();
if (ionBean != null) {
Map<String, List<String>> map = ionBean.getConfig().getActionTsImports();
if (map.size() > 0) {
for (String from : map.keySet()) {
for (String component : map.get(from)) {
imports.put(component.trim(), from);
}
}
}
if (ionBean.getName().equals("PublishEventAction")) {
if (compareToTplVersion("7.9.0.5") < 0) {
// removed from ion_objects.json since 7.9.0.5, need to add for older tpl
imports.put("Events", "ionic-angular");
}
}
}
return imports;
}
@Override
public Map<String, File> getCompBeanDir() {
return contributor.getCompBeanDir();
}
@Override
public Map<String, String> getModuleTsImports() {
return contributor.getModuleTsImports();
}
@Override
public Set<String> getModuleNgImports() {
return contributor.getModuleNgImports();
}
@Override
public Set<String> getModuleNgProviders() {
return contributor.getModuleNgProviders();
}
@Override
public Set<String> getModuleNgDeclarations() {
return contributor.getModuleNgDeclarations();
}
@Override
public Set<String> getModuleNgComponents() {
return contributor.getModuleNgComponents();
}
@Override
public Map<String, String> getPackageDependencies() {
return contributor.getPackageDependencies();
}
@Override
public Map<String, String> getConfigPlugins() {
return contributor.getConfigPlugins();
}
};
}
use of com.twinsoft.convertigo.beans.mobile.components.dynamic.IonBean in project convertigo by convertigo.
the class UIDynamicAction method computeJsonModel.
@Override
public String computeJsonModel() {
JSONObject jsonModel = new JSONObject();
// if (isEnabled()) {
try {
jsonModel.put("in", new JSONObject().put("props", new JSONObject()).put("vars", new JSONObject())).put("out", new JSONObject());
IonBean ionBean = getIonBean();
if (ionBean != null) {
JSONObject jsonProps = jsonModel.getJSONObject("in").getJSONObject("props");
jsonProps.put("tplVersion", "");
jsonProps.put("actionName", "");
jsonProps.put("actionFunction", "");
for (IonProperty property : ionBean.getProperties().values()) {
jsonProps.put(property.getName(), "");
}
}
JSONObject jsonVars = jsonModel.getJSONObject("in").getJSONObject("vars");
Iterator<UIComponent> it = getUIComponentList().iterator();
while (it.hasNext()) {
UIComponent component = (UIComponent) it.next();
if (component instanceof UIControlVariable) {
UIControlVariable var = (UIControlVariable) component;
jsonVars.put(var.getVarName(), "");
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// }
return jsonModel.toString();
}
use of com.twinsoft.convertigo.beans.mobile.components.dynamic.IonBean in project convertigo by convertigo.
the class UIDynamicAction method addInfos.
@Override
protected void addInfos(Set<UIComponent> done, Map<String, Set<String>> infoMap) {
super.addInfos(done, infoMap);
IonBean ionBean = getIonBean();
if (ionBean != null) {
String beanName = ionBean.getName();
if (ionBean.hasProperty("marker")) {
JSONObject json = new JSONObject();
String key = null;
for (IonProperty property : ionBean.getProperties().values()) {
MobileSmartSourceType msst = property.getSmartType();
String p_name = property.getName();
Object p_value = property.getValue();
if (!p_value.equals(false)) {
if (beanName.equals("FullSyncViewAction")) {
if (p_name.equals("fsview")) {
key = p_value.toString() + ".view";
}
} else if (beanName.equals("FullSyncGetAction")) {
if (p_name.equals("requestable")) {
key = p_value.toString() + ".get";
}
} else if (beanName.equals("CallSequenceAction")) {
if (p_name.equals("requestable")) {
key = p_value.toString();
}
} else if (beanName.equals("CallFullSyncAction")) {
if (p_name.equals("requestable")) {
key = p_value.toString();
Object p_verb = ionBean.getProperty("verb").getValue();
if (!p_verb.equals(false)) {
key += "." + p_verb.toString();
}
}
}
}
try {
if (p_name.equals("marker")) {
json.put(p_name, !p_value.equals(false) ? msst.getValue() : "");
}
if (p_name.equals("include_docs")) {
json.put(p_name, !p_value.equals(false) ? msst.getValue() : "false");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
if (key != null && !key.isEmpty()) {
Set<String> infos = infoMap.get(key);
if (infos == null) {
infos = new HashSet<String>();
}
String info = json.toString();
if (!info.isEmpty()) {
infos.add(info);
}
infoMap.put(key, infos);
}
}
}
}
use of com.twinsoft.convertigo.beans.mobile.components.dynamic.IonBean in project convertigo by convertigo.
the class UIDynamicComponent method getContributor.
/* (non-Javadoc)
* @see com.twinsoft.convertigo.beans.mobile.components.UIDynamicElement#getContributor()
*/
@Override
protected Contributor getContributor() {
Contributor contributor = super.getContributor();
return new Contributor() {
@Override
public Map<String, String> getActionTsFunctions() {
return contributor.getActionTsFunctions();
}
@Override
public Map<String, String> getActionTsImports() {
return contributor.getActionTsImports();
}
@Override
public Map<String, File> getCompBeanDir() {
Map<String, File> map = new HashMap<String, File>();
IonBean ionBean = getIonBean();
if (ionBean != null) {
String compName = ionBean.getName();
File dir = ComponentManager.getCompBeanDir(compName);
if (dir != null) {
map.put(compName, dir);
}
}
return map;
}
@Override
public Map<String, String> getModuleTsImports() {
return contributor.getModuleTsImports();
}
@Override
public Set<String> getModuleNgImports() {
return contributor.getModuleNgImports();
}
@Override
public Set<String> getModuleNgProviders() {
return contributor.getModuleNgProviders();
}
@Override
public Set<String> getModuleNgDeclarations() {
return contributor.getModuleNgDeclarations();
}
@Override
public Set<String> getModuleNgComponents() {
return contributor.getModuleNgComponents();
}
@Override
public Map<String, String> getPackageDependencies() {
return contributor.getPackageDependencies();
}
@Override
public Map<String, String> getConfigPlugins() {
return contributor.getConfigPlugins();
}
};
}
Aggregations