Repository: empire-db
Updated Branches:
  refs/heads/master 79b5e5790 -> 878e45c20


http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleDB.java
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleDB.java
 
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleDB.java
deleted file mode 100644
index 735d323..0000000
--- 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleDB.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.vuesample.model.db;
-
-import org.apache.empire.commons.Options;
-import org.apache.empire.data.DataMode;
-import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBColumn;
-import org.apache.empire.db.DBDatabase;
-import org.apache.empire.db.DBTableColumn;
-
-public class SampleDB extends DBDatabase
-{
-    private final static long       serialVersionUID = 1L;
-
-    // Declare all Tables
-    public final TDepartments       T_DEPARTMENTS    = new TDepartments(this);
-    public final TEmployees         T_EMPLOYEES      = new TEmployees(this);
-
-    /**
-     * Constructor SampleDB
-     */
-    public SampleDB()
-    {
-        // Define Foreign-Key Relations
-        
addRelation(T_EMPLOYEES.DEPARTMENT_ID.referenceOn(T_DEPARTMENTS.DEPARTMENT_ID));
-    }
-
-    // Needed for the DBELResolver
-    @Override
-    protected void register(String id)
-    {
-        super.register("db");
-    }
-
-    /**
-     * This class represents the definition of the Departments table.
-     */
-    public static class TDepartments extends SampleTable
-    {
-        private static final long  serialVersionUID = 1L;
-
-        public final DBTableColumn DEPARTMENT_ID;
-        public final DBTableColumn NAME;
-        public final DBTableColumn HEAD;
-        public final DBTableColumn BUSINESS_UNIT;
-        public final DBTableColumn UPDATE_TIMESTAMP;
-
-        public TDepartments(DBDatabase db)
-        {
-            super("DEPARTMENTS", db);
-            // ID
-            DEPARTMENT_ID      = addColumn("DEPARTMENT_ID",    
DataType.AUTOINC,        0, DataMode.NotNull, "DEP_ID_SEQUENCE");
-            NAME                       = addColumn("NAME",                     
DataType.TEXT,          80, DataMode.NotNull);
-            HEAD                       = addColumn("HEAD",                     
DataType.TEXT,          80, DataMode.Nullable);
-            BUSINESS_UNIT      = addColumn("BUSINESS_UNIT",    DataType.TEXT,  
         4, DataMode.NotNull, "ITTK");
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME, 
 0, DataMode.NotNull);
-
-            // Primary Key
-            setPrimaryKey(DEPARTMENT_ID);
-            // Set other Indexes
-            addIndex("DEARTMENT_NAME_IDX", true, new DBColumn[] { NAME });
-            // Set timestamp column for save updates
-            setTimestampColumn(UPDATE_TIMESTAMP);
-
-        }
-    }
-
-  
-
-    /**
-     * This class represents the definition of the Employees table.
-     */
-    public static class TEmployees extends SampleTable
-    {
-        private static final long  serialVersionUID = 1L;
-
-        public final DBTableColumn EMPLOYEE_ID;
-        public final DBTableColumn SALUTATION;
-//      public final DBTableColumn PICTURE;
-        public final DBTableColumn FIRST_NAME;
-        public final DBTableColumn LAST_NAME;
-        public final DBTableColumn DATE_OF_BIRTH;
-        public final DBTableColumn DEPARTMENT_ID;
-        public final DBTableColumn GENDER;
-        public final DBTableColumn PHONE_NUMBER;
-        public final DBTableColumn EMAIL;
-        public final DBTableColumn RETIRED;
-        public final DBTableColumn UPDATE_TIMESTAMP;
-        public TEmployees(DBDatabase db)
-        {
-            super("EMPLOYEES", db);
-            // ID
-            EMPLOYEE_ID        = addColumn("EMPLOYEE_ID",              
DataType.AUTOINC,        0, DataMode.NotNull, "EMPLOYEE_ID_SEQUENCE");
-            SALUTATION                 = addColumn("SALUTATION",               
DataType.TEXT,           5, DataMode.Nullable);
-            FIRST_NAME                 = addColumn("FIRST_NAME",               
DataType.TEXT,          40, DataMode.NotNull);
-            LAST_NAME          = addColumn("LAST_NAME",                
DataType.TEXT,          40, DataMode.NotNull);
-            DATE_OF_BIRTH      = addColumn("DATE_OF_BIRTH",    DataType.DATE,  
         0, DataMode.Nullable);
-            DEPARTMENT_ID      = addColumn("DEPARTMENT_ID",    
DataType.INTEGER,        0, DataMode.NotNull);
-            GENDER                     = addColumn("GENDER",                   
DataType.TEXT,           1, DataMode.Nullable);
-            PHONE_NUMBER       = addColumn("PHONE_NUMBER",     DataType.TEXT,  
        40, DataMode.Nullable);
-            EMAIL                      = addColumn("EMAIL",                    
DataType.TEXT,          80, DataMode.Nullable);
-            RETIRED                    = addColumn("RETIRED",                  
DataType.BOOL,           0, DataMode.NotNull, false);
-            // PICTURE                 = addColumn("PICTURE",                  
DataType.BLOB,           0, DataMode.Nullable);
-            UPDATE_TIMESTAMP= addColumn("UPDATE_TIMESTAMP", DataType.DATETIME, 
 0, DataMode.NotNull);
-
-            // Primary Key
-            setPrimaryKey(EMPLOYEE_ID);
-            // Set other Indexes
-            addIndex("PERSON_NAME_IDX", true, new DBColumn[] { FIRST_NAME, 
LAST_NAME, DATE_OF_BIRTH });
-
-            // Set timestamp column for save updates
-            setTimestampColumn(UPDATE_TIMESTAMP);
-
-            // Create Options for GENDER column
-            Options genders = new Options();
-            genders.set("M", "!option.employee.gender.male");
-            genders.set("F", "!option.employee.gender.female");
-            GENDER.setOptions(genders);
-            GENDER.setControlType("select");
-
-            Options retired = new Options();
-            retired.set(false, "!option.employee.active");
-            retired.set(true,  "!option.employee.retired");
-            RETIRED.setOptions(retired);
-            RETIRED.setControlType("checkbox");
-            
-            // Set special control types
-            DEPARTMENT_ID.setControlType("select");
-            PHONE_NUMBER .setControlType("phone");
-            
-            // Set optional formatting attributes
-            DATE_OF_BIRTH.setAttribute("format:date", "yyyy-MM-dd");
-            
-            // PICTURE.setControlType("blob");
-
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleTable.java
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleTable.java
 
b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleTable.java
deleted file mode 100644
index 353bf75..0000000
--- 
a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/vuesample/model/db/SampleTable.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.vuesample.model.db;
-
-import java.util.Locale;
-
-import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBDatabase;
-import org.apache.empire.db.DBTable;
-import org.apache.empire.db.DBTableColumn;
-
-/**
- * Base class definition for all database tables Automatically generates a 
message-key for the field title e.g. for the column
- * EMPLOYEES.DATE_OF_BIRTH it generates the key 
"!field.title.employees.dateOfBirth";
- */
-public class SampleTable extends DBTable
-{
-    private final static long serialVersionUID   = 1L;
-    public final String       MESSAGE_KEY_PREFIX = "!field.title.";
-
-    public SampleTable(String name, DBDatabase db)
-    {
-        super(name, db);
-    }
-
-    @Override
-    protected void addColumn(DBTableColumn column)
-    {
-        // Set Translation Title
-        String col = column.getBeanPropertyName();
-        String tbl = getName().toLowerCase();
-        String key = MESSAGE_KEY_PREFIX + tbl + "." + col;
-        column.setTitle(key);
-
-        // Set Default Control Type
-        DataType type = column.getDataType();
-        column.setControlType((type == DataType.BOOL) ? "checkbox" : "text");
-
-        // Add Column
-        super.addColumn(column);
-    }
-
-    public enum LanguageIndex {
-        DE(Locale.GERMAN),
-
-        EN(Locale.ENGLISH);
-
-        private final Locale locale;
-
-        private LanguageIndex(Locale locale)
-        {
-            this.locale = locale;
-        }
-
-        public Locale getLocale()
-        {
-            return this.locale;
-        }
-
-        public String getDBLangKey()
-        {
-            return this.name().toUpperCase();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
index 0a3a441..147da75 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/assets/css/layout.css
@@ -93,6 +93,7 @@ div.formPanel {
 }
 table.inputForm {
        width: 100%;
+  table-layout: fixed;
 }
 table.inputForm td.eCtlLabel {
        vertical-align:top;
@@ -176,6 +177,11 @@ span.eInpDis {
        padding-left: 4px;
        font-style: bold;
 }
+.eInpWrap {
+}
+.eInput {
+  width: 100%;
+}
 .eInputHint {
        padding-left: 4px;
        font-style: italic;

http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
index 3ef9caa..fadc680 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-input.vue
@@ -14,7 +14,21 @@
       License.
   -->
 <template>
-  <input :id="'CTL_' + column" name="FIRST_NAME" class="eInput eTypeText" 
lang="en" type="text" maxlength="40" :value="data[column.property]" 
@input="updateValue($event)">
+  <div class="eInpWrap">
+    <template v-if="column.options">
+      <select :id="'CTL_' + column.name" :name="column.name" class="eInput 
eTypeSelect" @change="updateValue($event)">
+        <template v-if="column.required === false && column.options[''] === 
undefined">
+          <option value="" :selected="inputValue === null"></option>
+        </template>
+        <template v-for="(value, key) in column.options">
+          <option :value="key" :selected="inputValue === 
key">{{value}}</option>
+        </template>
+      </select>
+    </template>
+    <template v-else>
+      <input :id="'CTL_' + column.name" :name="column.name" class="eInput 
eTypeText" lang="en" type="text" :maxlength="column.maxLength" 
:value="inputValue" @input="updateValue($event)">
+    </template>
+  </div>
 </template>
 <script>
   import EMPAPI from '../api/emp-api'
@@ -32,6 +46,12 @@
       }
     },
 
+    computed: {
+      inputValue: function () {
+        return this.data[this.column.property]
+      }
+    },
+
     created: function () {
       // alert('column=' + this.column.name + ' is ' + 
this.data[this.column.property])
     },

http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-value.vue
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-value.vue
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-value.vue
new file mode 100644
index 0000000..9ecb56e
--- /dev/null
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/components/e-value.vue
@@ -0,0 +1,40 @@
+<!--
+      Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements. See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version
+      2.0 (the "License"); you may not use this file except in compliance
+      with the License. You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+      applicable law or agreed to in writing, software distributed under the
+      License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+      CONDITIONS OF ANY KIND, either express or implied. See the License for
+      the specific language governing permissions and limitations under the
+      License.
+  -->
+<script>
+  // import $ from 'jquery'
+  export default {
+    functional: true,
+    name: 'e-value',
+
+    props: {
+      column: {
+        required: true
+      },
+      data: {
+        required: true
+      }
+    },
+    render (createElement, context) {
+      var value = context.props.data[context.props.column.property]
+      if (context.props.column.options) {
+        value = context.props.column.options[value]
+      }
+      const text = createElement('span', null, value)
+      return text
+    }
+
+  }
+</script>

http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
index 81abf23..616e0d2 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeDetail.vue
@@ -18,25 +18,25 @@
 
     <h1>Employee-Details for {{employeeId}}</h1>
 
-    <!--
-    <div class="rdp-weeknavbar">
-      <button class="rdp-button" @click="showPlan($event)">Zurück</button>
-    </div>
-
-    <div class="rdp-weekinfo">
-      Hinweise für Bezirk <strong>{{info.bereich.kurz}}</strong> 
({{info.bereich.name}})
-      <br/>am <strong>{{info.tag.datumLang}}</strong>
-    </div>
-
-    <rdp-hints :hints="info.hinweise"></rdp-hints>
-
-    <div class="rdp-weeknavbar">
-      <button class="rdp-button" @click="showPlan($event)">Zurück</button>
-    </div>
-    -->
+    <table class="inputForm" v-if="record" style="width:400px">
+      <colgroup>
+        <col width="120px"/>
+        <col/>
+      </colgroup>
+      <tr><e-control :data="record.data" :column="record.meta.salutation" 
/></tr>
+      <tr><e-control :data="record.data" :column="record.meta.firstName" 
/></tr>
+      <tr><e-control :data="record.data" :column="record.meta.lastName" /></tr>
+      <tr><e-control :data="record.data" :column="record.meta.dateOfBirth" 
format="[yyyy-MM-dd]"/></tr>
+      <tr><e-control :data="record.data" :column="record.meta.departmentId" 
/></tr>
+      <tr><e-control :data="record.data" :column="record.meta.gender"   /> 
</tr>
+      <tr><e-control :data="record.data" :column="record.meta.phoneNumber" 
/></tr>
+      <tr><e-control :data="record.data" :column="record.meta.email" /></tr>
+      <tr><e-control :data="record.data" :column="record.meta.retired" /></tr>
+    </table>
 
     <div class="rdp-weeknavbar">
       <button class="rdp-button" @click="showList($event)">Back</button>
+      <button @click="saveChanges($event)">Save</button>
     </div>
 
   </div>
@@ -44,11 +44,13 @@
 
 <script>
   import EMPAPI from '../api/emp-api'
+  import eControl from '../components/e-control.vue'
 
   export default {
     name: 'details',
 
     components: {
+      eControl
     },
 
     data () {
@@ -77,6 +79,14 @@
           .fail(() => this.$router.push('/login'))
         */
       },
+      saveChanges: function (event) {
+        EMPAPI.debug('load employee record')
+        EMPAPI.updateEmployee(this.record.data)
+          .done(response => (this.setResult(response)))
+      },
+      setResult (result) {
+        alert('Save OK!')
+      },
       showList: function (event) {
         this.$router.push('/employeeList')
       }

http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeList.vue
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeList.vue
 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeList.vue
index aa1300f..03f4098 100644
--- 
a/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeList.vue
+++ 
b/empire-db-examples/empire-db-example-vue/src/main/vue/src/pages/employeeList.vue
@@ -30,10 +30,8 @@
         <e-control :column="filter.meta.lastName"  :data="filter.data"/>
       </tr>
       <tr>
-        <td class="eCtlLabel"><label class="eLabel" 
for="DEPARTMENT_ID">Department:</label></td>
-        <td class="eCtlInput"><select name="DEPARTMENT_ID" class="eInput 
eTypeNumber" id="DEPARTMENT_ID" size="1">     <option selected="selected" 
value=""></option>  <option value="1">Procurement</option>  <option 
value="2">Development</option>  <option value="3">Sales</option></select></td>
-        <td class="eCtlLabel"><label class="eLabel" 
for="GENDER">Gender:</label></td>
-        <td class="eCtlInput"><select name="GENDER" class="eInput eTypeText" 
id="GENDER" size="1">     <option selected="selected" value=""></option>  
<option value="M">Male</option> <option value="F">Female</option></select></td>
+        <e-control :column="filter.meta.departmentId" :data="filter.data"/>
+        <e-control :column="filter.meta.gender"  :data="filter.data"/>
       </tr>
       <tr>
         <td class="eCtlLabel"><label class="eLabel" 
for="DEPARTMENT_ID">Info:</label></td>
@@ -87,9 +85,9 @@
               </router-link>
             </td>
             <td>{{item.department}}</td>
-            <td>{{item.gender}}</td>
-            <td>{{item.dateOfBirth}}</td>
-            <td>?</td>
+            <td><e-value :column="employeeList.meta.gender" :data="item"/></td>
+            <td><e-value :column="employeeList.meta.dateOfBirth" 
:data="item"/></td>
+            <td><e-value :column="employeeList.meta.retired" 
:data="item"/></td>
           </tr>
         </template>
         </tbody>
@@ -121,14 +119,18 @@
   import EMPAPI from '../api/emp-api'
   import eControl from '../components/e-control.vue'
   import eInput from '../components/e-input'
+//  import eLabel from '../components/e-label'
+  import eValue from '../components/e-value'
   import $ from 'jquery'
 
   export default {
     name: 'list',
 
     components: {
+      eControl,
       eInput,
-      eControl
+//    eLabel,
+      eValue
     },
 
     data () {

http://git-wip-us.apache.org/repos/asf/empire-db/blob/878e45c2/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git 
a/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/web.xml 
b/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/web.xml
index 91670f0..496889c 100644
--- a/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/web.xml
+++ b/empire-db-examples/empire-db-example-vue/src/main/webapp/WEB-INF/web.xml
@@ -37,7 +37,7 @@
         -->
        
        <listener>
-               
<listener-class>org.apache.empire.rest.service.listener.AppListener</listener-class>
+               
<listener-class>org.apache.empire.rest.app.SampleServiceApp$ContextListener</listener-class>
        </listener>
 
 </web-app>
\ No newline at end of file

Reply via email to