From 09a2e0324e6828550c467bab7afc53e44914d09a Mon Sep 17 00:00:00 2001
From: Hermann Blum <hermannsblum@yahoo.de>
Date: Sat, 2 Dec 2017 00:31:17 +0100
Subject: [PATCH] move key lists to config file

---
 src/config.json | 29 +++++++++++++++++++++++++++++
 src/userTool.js | 26 ++++++--------------------
 2 files changed, 35 insertions(+), 20 deletions(-)
 create mode 100644 src/config.json

diff --git a/src/config.json b/src/config.json
new file mode 100644
index 0000000..81a5a39
--- /dev/null
+++ b/src/config.json
@@ -0,0 +1,29 @@
+{
+    "Users": {
+        "keyDescriptors": {
+            "legi": "Legi Number",
+            "firstname": "First Name",
+            "lastname": "Last Name",
+            "rfid": "RFID",
+            "phone": "Phone",
+            "nethz": "nethz Account",
+            "gender": "Gender",
+            "department": "Department",
+            "email": "Email"
+        },
+        "tableKeys": [
+            "firstname",
+            "lastname",
+            "nethz",
+            "legi",
+            "membership"
+        ],
+        "patchableKeys": [
+            "firstname",
+            "lastname",
+            "email",
+            "membership",
+            "gender"
+        ]
+    }
+}
diff --git a/src/userTool.js b/src/userTool.js
index 0e0f5dc..e54d91d 100644
--- a/src/userTool.js
+++ b/src/userTool.js
@@ -1,22 +1,10 @@
 import { ItemView } from './views/itemView';
 import { EditView, inputGroup, selectGroup, submitButton } from './views/editView';
 import TableView from './views/tableView';
+import { Users as config } from './config.json';
 
 const m = require('mithril');
 
-const keyDescriptors = {
-  legi: 'Legi Number',
-  firstname: 'First Name',
-  lastname: 'Last Name',
-  rfid: 'RFID',
-  phone: 'Phone',
-  nethz: 'nethz Account',
-  gender: 'Gender',
-  department: 'Department',
-  email: 'Email',
-};
-const tableKeys = ['firstname', 'lastname', 'nethz', 'legi', 'membership'];
-
 class UserView extends ItemView {
   constructor() {
     super('users');
@@ -43,7 +31,7 @@ class UserView extends ItemView {
       m('h1', `${this.data.firstname} ${this.data.lastname}`),
       membershipBadge,
       m('table', detailKeys.map(key => m('tr', [
-        m('td.detail-descriptor', keyDescriptors[key]),
+        m('td.detail-descriptor', config.keyDescriptors[key]),
         m('td', this.data[key] ? this.data[key] : ''),
       ]))),
       m('h2', 'Memberships'), m('br'),
@@ -110,8 +98,7 @@ class UserEdit extends EditView {
       m(submitButton, {
         active: this.valid,
         args: {
-          onclick: this.submit('PATCH', [
-            'lastname', 'firstname', 'email', 'membership', 'gender']),
+          onclick: this.submit('PATCH', config.patchableKeys),
           class: 'btn-warning',
         },
         text: 'Update',
@@ -139,8 +126,7 @@ export class NewUser extends UserEdit {
       m(submitButton, {
         active: this.valid,
         args: {
-          onclick: this.submit('POST', [
-            'lastname', 'firstname', 'email', 'membership', 'gender']),
+          onclick: this.submit('POST', config.patchableKeys),
           class: 'btn-warning',
         },
         text: 'Create',
@@ -171,8 +157,8 @@ export class UserTable {
   view() {
     return m(TableView, {
       resource: 'users',
-      keys: tableKeys,
-      titles: tableKeys.map(key => keyDescriptors[key] || key),
+      keys: config.tableKeys,
+      titles: config.tableKeys.map(key => config.keyDescriptors[key] || key),
     });
   }
 }
-- 
GitLab