diff --git a/dataframe/grails-app/controllers/com/elintegro/gerf/GridDataframeController.groovy b/dataframe/grails-app/controllers/com/elintegro/gerf/GridDataframeController.groovy index 43406f72..e129ff08 100644 --- a/dataframe/grails-app/controllers/com/elintegro/gerf/GridDataframeController.groovy +++ b/dataframe/grails-app/controllers/com/elintegro/gerf/GridDataframeController.groovy @@ -71,6 +71,18 @@ class GridDataframeController { render jsonMap as JSON } + def saveGridData(){ + def param = request.getJSON() + //Todo: here after getting selected row data we have to save those data in generic way by finding the correct domain class.. + String className = param.tableName + def editableFieldInit = param.editableField + def editableField = editableFieldInit.toLowerCase() + Class clazz = grailsApplication.domainClasses.find { it.clazz.simpleName == className }.clazz + def clazzObject = clazz.findById(param.dataOfSelectedRow.Id) + clazzObject."${editableField}" = param.dataOfSelectedRow."${editableFieldInit}" + clazzObject.save(flush:true) + render(success:true) + } } diff --git a/dataframe/grails-app/services/com/elintegro/erf/dataframe/ResultPageHtmlBuilder.groovy b/dataframe/grails-app/services/com/elintegro/erf/dataframe/ResultPageHtmlBuilder.groovy index 9be326db..c672b882 100644 --- a/dataframe/grails-app/services/com/elintegro/erf/dataframe/ResultPageHtmlBuilder.groovy +++ b/dataframe/grails-app/services/com/elintegro/erf/dataframe/ResultPageHtmlBuilder.groovy @@ -16,26 +16,18 @@ package com.elintegro.erf.dataframe import com.elintegro.erf.dataframe.vue.DataframeVue import com.elintegro.erf.dataframe.vue.PageDFRegistryVue import com.elintegro.erf.dataframe.vue.VueJsBuilder +import com.elintegro.erf.dataframe.vue.ViewRoutes import com.elintegro.erf.layout.abs.LayoutVue import com.elintegro.erf.widget.vue.WidgetVue import com.elintegro.utils.DataframeFileUtil import grails.plugin.springsecurity.SpringSecurityService import grails.util.Environment import groovy.util.logging.Slf4j -import org.apache.tomcat.util.http.fileupload.FileUtils -import org.jsoup.Jsoup -import org.jsoup.nodes.Attributes -import org.jsoup.nodes.Document import org.jsoup.nodes.Element import org.jsoup.select.Elements import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.i18n.LocaleContextHolder -import javax.persistence.MapsId -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.Paths - @Slf4j class ResultPageHtmlBuilder { @@ -85,7 +77,7 @@ class ResultPageHtmlBuilder { finalScriptSb.append("})\n") finalScriptSb.append(dfrComps.vueGlobalCompScript) //append globbal dataframe components - finalScriptSb.append(globalLayoutCompScriptSb.toString()) // append global layout components + finalScriptSb.append(layoutStructM.globalComponentScript) // append global layout components finalScriptSb.append(dfrComps.dfrCompScript) // append other dfr components finalScriptSb.append(layoutStructM.layoutCompScript) // append other layout components //Initialize i18n @@ -93,15 +85,19 @@ class ResultPageHtmlBuilder { finalScriptSb.append(""" const i18n = new VueI18n({ locale:'${LocaleContextHolder.getLocale().getLanguage()}', messages - });""") + });\n""") //Initialize Router finalScriptSb.append("const router = new VueRouter({\n")// Initialize Router // finalScriptSb.append("mode:'history',\n") +/* finalScriptSb.append(" routes: [\n") // finalScriptSb.append("{path: '/:routeId', components: {default: $defaultComp, $dfrComps.dfrCompRegisterationScript}},\n") -// finalScriptSb.append(vueRoutes.toString()) // from layouts + finalScriptSb.append(layoutStructM.vueRoutes) // from layouts finalScriptSb.append(dfrComps.vueRoutes) //from dfrs finalScriptSb.append("]\n") +*/ + finalScriptSb.append(" routes: \n") + finalScriptSb.append(ViewRoutes.constructRoute(gcMainPgObj.viewRoutes)) finalScriptSb.append("})\n") //Initialize main app finalScriptSb.append("var app = new Vue ({\nel:'#app',\n") // Vue Instance @@ -126,24 +122,28 @@ class ResultPageHtmlBuilder { finalScriptSb.append("") return [initHtml:initHmtl, finalScript:finalScriptSb.toString()] } - public constructLayoutComps(String contLytStr){ - LayoutVue contLytObj = LayoutVue.getLayoutVue(contLytStr.trim()) - StringBuilder initHtml = new StringBuilder() - String finalLayoutScript = constructFinalLayoutScript(contLytObj, initHtml) - [initHtml: initHtml.toString(), layoutCompScript: finalLayoutScript] + private Map constructDfrComps(List dataframes){ + DfrCompBuilder dfrCompBuilder = new DfrCompBuilder() + return dfrCompBuilder.constructDfrComps(dataframes) + } + + public Map constructLayoutComps(String containerLayoutName){ + + LayoutVue constainerLayout = LayoutVue.getLayoutVue(containerLayoutName.trim()) + return constainerLayout.constructLayoutComponents() } private static String constructCompRegistrationForMainLayout(PageDFRegistryVue gcMainPgObj){ def containerLayoutS = gcMainPgObj.containerLayout LayoutVue contLytObj = LayoutVue.getLayoutVue(containerLayoutS) - if(!contLytObj.children){ + if(!contLytObj.childLayouts){ return "" } StringBuilder ltSb = new StringBuilder() int index = 0; - for(String ltS : contLytObj.children){ + for(String ltS : contLytObj.childLayouts){ LayoutVue lytT = LayoutVue.getLayoutVue(ltS) if(!registeredComponents.contains(ltS)){ ltSb.append(VueJsBuilder.createCompRegistrationString(ltS, index)) @@ -155,45 +155,6 @@ class ResultPageHtmlBuilder { return ltSb.toString() } - private String constructFinalLayoutScript(LayoutVue contLytObj, StringBuilder initHtml){ - List children = contLytObj.children - String wrapperLayout = contLytObj.layoutPlaceHolder - StringBuilder resultPageScript = new StringBuilder() - if(children.isEmpty()){ - return "" - } - for(String ch : children){ - if(ch.trim() != "") { - LayoutVue layoutObj = LayoutVue.getLayoutVue(ch) - prepareVueLayout(layoutObj.children, resultPageScript, layoutObj) - } - } - initHtml.append(wrapperLayout) - return resultPageScript.toString() - } - - private def prepareVueLayout(children, resultPageScript, disObj){ - if(children.isEmpty()){ - constructSectionalComponent(resultPageScript, disObj) - return - } - for(String ch : children){ - if(builtComponents.contains(ch)){ - continue - } - if(ch.trim() != ""){ - LayoutVue layoutObj = LayoutVue.getLayoutVue(ch) - if(!registeredComponents.contains(ch) && !layoutObj.isGlobal) { - disObj.compRegScript.append(VueJsBuilder.createCompRegistrationString(ch)) - registeredComponents.add(ch) - } - List childs = layoutObj.children - prepareVueLayout(childs, resultPageScript, layoutObj) - } - } - constructSectionalComponent(resultPageScript, disObj) - } - private String getMainPgVueCompRegistrationString(PageDFRegistryVue gcMainPgObj){ def mainPageDataframeList= gcMainPgObj.dataframesToShowInMainPage if(!mainPageDataframeList){ @@ -213,49 +174,6 @@ class ResultPageHtmlBuilder { return sb.toString() } - private void constructSectionalComponent(StringBuilder resultPageScript, LayoutVue disObj){ - StringBuilder compBuilder = new StringBuilder() - String layoutPlaceHolder = disObj.layoutPlaceHolder - String layoutName = disObj.layoutBeanName - String formatPlaceholder = "["+layoutName + "]" - if(disObj.isGlobal){ - compBuilder.append("Vue.component('${layoutName}',{\n") - compBuilder.append("name: '${layoutName}',\n") - disObj.componentRegistered = true - }else{ - disObj.componentRegistered = false - compBuilder.append("const ${layoutName}Comp = {\n") - } - compBuilder.append("template:`") - compBuilder.append(layoutPlaceHolder) - compBuilder.append("`,\n") - compBuilder.append("components:{\n") //register embedded components - compBuilder.append(disObj.compRegScript.toString()) - disObj.compRegScript.setLength(0) //Resetting compRegScript for another layout obj - if(!disObj.childDataframes.isEmpty()){ - for(String compS : disObj.childDataframes){ - if(!registeredComponents.contains(compS)){ - compBuilder.append(VueJsBuilder.createCompRegistrationString(compS)) - registeredComponents.add(compS) - } - } - } - compBuilder.append("},\n") - if(disObj.isGlobal){ - compBuilder.append("})\n") - globalLayoutCompScriptSb.append(compBuilder.toString()) - }else{ - compBuilder.append("}\n") - resultPageScript.append(compBuilder.toString()) - } - builtComponents.add(layoutName) // Add the built components to this List. Remove later if not used. - } - - private Map constructDfrComps(dataframes){ - DfrCompBuilder dfrCompBuilder = new DfrCompBuilder() - return dfrCompBuilder.constructDfrComps(dataframes) - } - public String applySecurityFilter(String resultPage /*, SpringSecurityService springSecurityService*/){ diff --git a/dataframe/src/main/groovy/com/elintegro/erf/dataframe/DFButton.java b/dataframe/src/main/groovy/com/elintegro/erf/dataframe/DFButton.java index 0a94a94c..7ceb7ee5 100644 --- a/dataframe/src/main/groovy/com/elintegro/erf/dataframe/DFButton.java +++ b/dataframe/src/main/groovy/com/elintegro/erf/dataframe/DFButton.java @@ -36,13 +36,16 @@ public class DFButton { public String doBeforeSave; // Script just before Ajax save public String doAfterSave=""; // Script just after Ajax save public boolean showAsDialog = false; //Show the refDataframe as Dialog?? + public boolean showToolbar = false; public boolean route = false; // Show as Route?? + public Map routeMap; public Map tooltip; public String attr; //add extra attribbubtes from descripter public String layout=""; // layout for buttons public String doBeforeAjax; // Script just bbefore ajax call - public String routeIdScript; //Id for the dataframe when route is true - public List flexGridValues; //grid values for v-flex + public String routeName; //route name to appear in the url + public String doAfterRoute; //If we have to do something after routing the page + public Map cssGridValues; //grid values for v-col public Map showAsMenu; public String attachTo; //Attch the menu to another field public String roles; //"ROLE_ADMIN,ROLE_CUSTOMER" @@ -50,5 +53,7 @@ public class DFButton { public String classNames; public boolean scrollable; public boolean persistent; + public String dialogBoxWidth; + public String dialogBoxMaxWidth; } diff --git a/dataframe/src/main/groovy/com/elintegro/erf/dataframe/Dataframe.groovy b/dataframe/src/main/groovy/com/elintegro/erf/dataframe/Dataframe.groovy index 958573a5..e2b2a005 100644 --- a/dataframe/src/main/groovy/com/elintegro/erf/dataframe/Dataframe.groovy +++ b/dataframe/src/main/groovy/com/elintegro/erf/dataframe/Dataframe.groovy @@ -148,6 +148,7 @@ public class Dataframe extends DataframeSuperBean implements Serializable, DataF def ajaxInsertUrl = "dataframe/ajaxInsert"; def ajaxDefaultUrl = "dataframe/ajaxDefaultData"; def ajaxCreateUrl ="dataframe/ajaxCreateNew" + def ajaxFileSaveUrl = "fileUpload/ajaxFileSave" public static Dataframe getDataframeByName(String dataframeName){ return (Dataframe) Holders.grailsApplication.mainContext.getBean(dataframeName) @@ -481,7 +482,7 @@ public class Dataframe extends DataframeSuperBean implements Serializable, DataF addField(key, value) } //Todo: We need to refactor it soon... -// addField("alertMesssage", [widget: "SnackbarWidgetVue",flexGridValues: ['xs0', 'sm0', 'md0', 'lg0', 'xl0'],]) +// addField("alertMesssage", [widget: "SnackbarWidgetVue",cssGridValues: ['xs0', 'sm0', 'md0', 'lg0', 'xl0'],]) } List getHqlResult(def queryHql){ @@ -725,7 +726,7 @@ public class Dataframe extends DataframeSuperBean implements Serializable, DataF this.currentFrameLayout.numberFields = fields.getList().size() getAdditionalDataFromAjax(additionalParameters) String additionalParametersStr = additionalParameters.toString() - doAfterSaveStringBuilder.append(doAfterSave) + //doAfterSaveStringBuilder.append(doAfterSave) def ajaxSavescripts = """