details:   /erp/devel/pi/rev/869bca3eeb6f
changeset: 11842:869bca3eeb6f
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Tue May 03 12:03:56 2011 +0200
summary:   related to issue 16957: Include audit fields in form view

details:   /erp/devel/pi/rev/006c8a125770
changeset: 11843:006c8a125770
user:      Asier Lostalé <asier.lostale <at> openbravo.com>
date:      Tue May 03 16:40:19 2011 +0200
summary:   fixed issue 16957: Include audit fields in grid view

diffstat:

 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
  |    6 +-
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-grid.js.ftl
   |   29 +
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
 |  202 ++++++++++
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewGridComponent.java
 |  113 +++++
 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewUtil.java
          |    7 +
 5 files changed, 352 insertions(+), 5 deletions(-)

diffs (truncated from 501 to 300 lines):

diff -r 7cc821175253 -r 006c8a125770 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
      Tue May 03 16:22:35 2011 +0200
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-field.js.ftl
      Tue May 03 16:40:19 2011 +0200
@@ -62,11 +62,7 @@
           </#if>
         </#if>
         <#if fieldDefinition.type = "OBSectionItem" || fieldDefinition.type = 
"OBNoteSectionItem" || fieldDefinition.type = "OBLinkedItemSectionItem" >
-        <#if fieldDefinition.type = "OBNoteSectionItem">
-        sectionExpanded: false,
-        <#else>
-        sectionExpanded: true,
-        </#if>
+        sectionExpanded: ${fieldDefinition.expanded?string},
         defaultValue: '${fieldDefinition.label?js_string}',
         itemIds: [
         <#list fieldDefinition.children as childField>
diff -r 7cc821175253 -r 006c8a125770 
modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-grid.js.ftl
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-grid.js.ftl
       Tue May 03 16:22:35 2011 +0200
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/templates/ob-view-grid.js.ftl
       Tue May 03 16:40:19 2011 +0200
@@ -66,6 +66,35 @@
        }
        <#if field_has_next>,</#if>
     </#list>
+    <#list data.auditFields as field>
+     ,
+       { 
+        autoExpand: false, type: '${field.type}',
+        editorProperties: {
+          width: '*'
+          , columnName: '${field.columnName?js_string}'
+          , targetEntity: '${field.targetEntity?js_string}'
+          , disabled: true
+          , updatable: false
+        }
+        , showHover: false, 
+        width: isc.OBGrid.getDefaultColumnWidth(30), 
+        name: '${field.columnName?js_string}', 
+        canExport: true, 
+        canHide: true, 
+        editorType: '${field.editorType?js_string}',
+        filterEditorType: '${field.filterEditorType?js_string}',
+        ${field.displayFieldJS}
+         filterOnKeypress: true, canFilter:true, required: false
+        , title: '${field.title?js_string}'
+        , prompt: '${field.title?js_string}'
+        , escapeHTML: true
+        , showIf: 'false'
+        , columnName: '${field.columnName?js_string}'
+        , inpColumnName: ''
+        , targetEntity: '${field.targetEntity?js_string}'
+       }
+    </#list>
     ],
     autoExpandFieldNames:[
     <#list data.autoExpandFields as field>
diff -r 7cc821175253 -r 006c8a125770 
modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
--- 
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
     Tue May 03 16:22:35 2011 +0200
+++ 
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/OBViewFormComponent.java
     Tue May 03 16:40:19 2011 +0200
@@ -38,6 +38,7 @@
 import org.openbravo.client.kernel.reference.UIDefinitionController;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.data.Sqlc;
+import org.openbravo.model.ad.ui.Element;
 import org.openbravo.model.ad.ui.Field;
 import org.openbravo.model.ad.ui.FieldGroup;
 import org.openbravo.model.ad.ui.Tab;
@@ -58,6 +59,9 @@
   private static final long ONE_COLUMN_MAX_LENGTH = 60;
   private static final String TEXT_AD_REFERENCE_ID = "14";
 
+  // Audit fields
+  private static final String AUDIT_GROUP_ID = "1000100001";
+
   private Tab tab;
   private List<String> statusBarFields = null;
 
@@ -124,6 +128,44 @@
       }
     }
 
+    // Processing audit fields: if there's field for audit, don't put it in 
the "more info" section
+    boolean hasCreatedField = false, hasCreatedByField = false, 
hasUpdatedField = false, hasUpdatedByField = false;
+    for (Field f : adFields) {
+      String dbColName = f.getColumn().getDBColumnName().toLowerCase();
+      if (!dbColName.startsWith("created") && 
!dbColName.startsWith("updated")) {
+        continue;
+      }
+      if (f.isActive() && f.getColumn().isActive() && (f.isDisplayed() || 
f.isShownInStatusBar())) {
+        if ("created".equals(dbColName)) {
+          hasCreatedField = true;
+        } else if ("createdby".equals(dbColName)) {
+          hasCreatedByField = true;
+        } else if ("updated".equals(dbColName)) {
+          hasUpdatedField = true;
+        } else if ("updatedby".equals(dbColName)) {
+          hasUpdatedByField = true;
+        }
+      }
+    }
+    List<OBViewFieldDefinition> auditFields = new 
ArrayList<OBViewFieldDefinition>();
+
+    if (!hasCreatedField) {
+      OBViewFieldAudit audit = new OBViewFieldAudit("creationDate", 
OBViewUtil.createdElement);
+      auditFields.add(audit);
+    }
+    if (!hasCreatedByField) {
+      OBViewFieldAudit audit = new OBViewFieldAudit("createdBy", 
OBViewUtil.createdByElement);
+      auditFields.add(audit);
+    }
+    if (!hasUpdatedField) {
+      OBViewFieldAudit audit = new OBViewFieldAudit("updated", 
OBViewUtil.updatedElement);
+      auditFields.add(audit);
+    }
+    if (!hasUpdatedByField) {
+      OBViewFieldAudit audit = new OBViewFieldAudit("updatedBy", 
OBViewUtil.updatedByElement);
+      auditFields.add(audit);
+    }
+
     OBViewFieldGroup currentFieldGroup = null;
     FieldGroup currentADFieldGroup = null;
     int colNum = 1;
@@ -169,6 +211,7 @@
         final OBViewFieldGroup viewFieldGroup = new OBViewFieldGroup();
         fields.add(viewFieldGroup);
         viewFieldGroup.setFieldGroup(field.getFieldGroup());
+
         currentFieldGroup = viewFieldGroup;
         currentADFieldGroup = field.getFieldGroup();
         colNum = 1;
@@ -186,6 +229,16 @@
       }
     }
 
+    // Add audit info
+    if (!auditFields.isEmpty()) {
+      final OBViewFieldGroup viewFieldGroup = new OBViewFieldGroup();
+      viewFieldGroup.setExpanded(false);
+      fields.add(viewFieldGroup);
+      viewFieldGroup.setFieldGroup(OBDal.getInstance().get(FieldGroup.class, 
AUDIT_GROUP_ID));
+      viewFieldGroup.addChildren(auditFields);
+      fields.addAll(auditFields);
+    }
+
     // add the notes part
     final OBViewFieldDefinition notesCanvasFieldDefinition = new 
NotesCanvasField();
     final NotesField notesField = new NotesField();
@@ -249,6 +302,134 @@
     public String getReadOnlyIf();
   }
 
+  public class OBViewFieldAudit implements OBViewFieldDefinition {
+    private String name;
+    private String refType;
+    private String refEntity;
+    private Element element;
+
+    public OBViewFieldAudit(String type, Element element) {
+      name = type;
+      this.element = element;
+
+      if (type.endsWith("By")) {
+        // User search
+        refType = "30";
+        refEntity = "User";
+      } else {
+        // Date time
+        refType = "16";
+        refEntity = "";
+      }
+    }
+
+    @Override
+    public String getLabel() {
+      return OBViewUtil.getLabel(element, element.getADElementTrlList());
+    }
+
+    @Override
+    public String getName() {
+      return name;
+    }
+
+    @Override
+    public String getType() {
+      return "_id_" + refType;
+    }
+
+    @Override
+    public boolean getStandardField() {
+      return true;
+    }
+
+    @Override
+    public String getFieldProperties() {
+      return "'width': '*', ";
+    }
+
+    @Override
+    public String getInpColumnName() {
+      return "";
+    }
+
+    @Override
+    public String getReferencedKeyColumnName() {
+      return "";
+    }
+
+    @Override
+    public String getTargetEntity() {
+      return refEntity;
+    }
+
+    @Override
+    public boolean getStartRow() {
+      return false;
+    }
+
+    @Override
+    public boolean getEndRow() {
+      return false;
+    }
+
+    @Override
+    public long getColSpan() {
+      return 1;
+    }
+
+    @Override
+    public long getRowSpan() {
+      return 1;
+    }
+
+    @Override
+    public boolean isReadOnly() {
+      return true;
+    }
+
+    @Override
+    public boolean isUpdatable() {
+      return false;
+    }
+
+    @Override
+    public boolean isParentProperty() {
+      return false;
+    }
+
+    @Override
+    public boolean getRedrawOnChange() {
+      return false;
+    }
+
+    @Override
+    public String getShowIf() {
+      return "";
+    }
+
+    @Override
+    public String getReadOnlyIf() {
+      return "";
+    }
+
+    public boolean isRequired() {
+      return false;
+    }
+
+    public String getColumnName() {
+      return "";
+    }
+
+    public boolean isFirstFocusedField() {
+      return false;
+    }
+
+    public boolean isSearchField() {
+      return !refEntity.isEmpty();
+    }
+  }
+
   public class OBViewField implements OBViewFieldDefinition {
     private Field field;
     private Property property;
@@ -530,6 +711,7 @@
   }
 
   public class OBViewFieldGroup extends DefaultVirtualField {
+    private boolean expanded = true;
     private FieldGroup fieldGroup;
     private String label;
     private List<OBViewFieldDefinition> children = new 
ArrayList<OBViewFieldDefinition>();
@@ -558,6 +740,10 @@
       children.add(viewFieldDefinition);
     }
 
+    public void addChildren(List<OBViewFieldDefinition> viewFieldDefinitions) {
+      children.addAll(viewFieldDefinitions);
+    }
+
     public List<OBViewFieldDefinition> getChildren() {
       return children;
     }

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to