Parcourir la source

Intelligence crud in progress

Alan Colon il y a 7 ans
Parent
commit
c2ccafa311
4 fichiers modifiés avec 133 ajouts et 28 suppressions
  1. 0 28
      auto-crud/actor.js
  2. 42 0
      auto-crud/location.js
  3. 47 0
      auto-crud/retailer.js
  4. 44 0
      auto-crud/service.js

+ 0 - 28
auto-crud/actor.js

@@ -1,28 +0,0 @@
-const { register, Sequelize } = require('@alancnet/material-framework/auto-crud')
-
-register({
-  camelName: 'actor',
-  iconAsset: 'userIcon',
-  schema: {
-    id: {
-      type: Sequelize.UUID,
-      defaultValue: Sequelize.UUIDV1,
-      primaryKey: true
-    },
-    name: Sequelize.STRING
-  },
-  options: {
-    paranoid: true
-  },
-  columns: [
-    { camelName: 'name' }
-  ],
-  layout: [
-    {
-      section: 'Details',
-      rows: [
-        [ 'name' ]
-      ]
-    }
-  ]
-})

+ 42 - 0
auto-crud/location.js

@@ -0,0 +1,42 @@
+const { register, Sequelize } = require('@alancnet/material-framework/auto-crud')
+
+register({
+  camelName: 'location',
+  iconAsset: 'userIcon',
+  schema: {
+    id: {
+      type: Sequelize.UUID,
+      defaultValue: Sequelize.UUIDV1,
+      primaryKey: true
+    },
+    name: Sequelize.STRING,
+    address: Sequelize.STRING,
+    key: {
+      type: Sequelize.STRING,
+      unique: true
+    },
+  },
+  options: {
+    paranoid: true,
+    indexes: [
+      {
+        unique: true,
+        fields: ['key']
+      }
+    ]
+  },
+  columns: [
+    { camelName: 'key' },
+    { camelName: 'name' },
+    { camelName: 'address' }
+  ],
+  layout: [
+    {
+      section: 'Details',
+      rows: [
+        [ 'name', 'key' ],
+        [ 'address' ]
+      ]
+    }
+  ]
+})

+ 47 - 0
auto-crud/retailer.js

@@ -0,0 +1,47 @@
+const { register, Sequelize } = require('@alancnet/material-framework/auto-crud')
+
+register({
+  camelName: 'retailer',
+  iconAsset: 'userIcon',
+  schema: {
+    id: {
+      type: Sequelize.UUID,
+      defaultValue: Sequelize.UUIDV1,
+      primaryKey: true
+    },
+    name: Sequelize.STRING,
+    key: {
+      type: Sequelize.STRING,
+      unique: true
+    },
+    address: Sequelize.STRING,
+    locationId: Sequelize.UUID,
+    distanceMiles: Sequelize.DOUBLE
+  },
+  options: {
+    paranoid: true,
+    indexes: [
+      {
+        unique: true,
+        fields: ['key']
+      }
+    ]
+  },
+  columns: [
+    { camelName: 'key' },
+    { camelName: 'name' },
+    { camelName: 'address', inList: false },
+    { camelName: 'locationId', titleName: 'Location', type: 'autocomplete', source: '/api/locations' },
+    { camelName: 'distanceMiles', titleName: 'Distance in Miles', type: 'number' }
+  ],
+  layout: [
+    {
+      section: 'Details',
+      rows: [
+        [ 'name', 'key' ],
+        [ 'address' ]
+        [ 'locationId', 'distanceMiles' ]
+      ]
+    }
+  ]
+})

+ 44 - 0
auto-crud/service.js

@@ -0,0 +1,44 @@
+const { register, Sequelize } = require('@alancnet/material-framework/auto-crud')
+
+register({
+  camelName: 'service',
+  iconAsset: 'userIcon',
+  schema: {
+    id: {
+      type: Sequelize.UUID,
+      defaultValue: Sequelize.UUIDV1,
+      primaryKey: true
+    },
+    workdayId: Sequelize.UUID,
+    retailerId: Sequelize.UUID,
+    date: Sequelize.DATEONLY, // Copy from Workday
+    delivered: Sequelize.INTEGER,
+    scanned: Sequelize.INTEGER
+  },
+  options: {
+    paranoid: true,
+    indexes: [
+      {
+        unique: true,
+        fields: ['workdayId', 'retailerId']
+      }
+    ]
+  },
+  columns: [
+    { camelName: 'date', type: 'date' },
+    { camelName: 'workdayId', titleName: 'Workday', type: 'autocomplete', source: '/api/workdays' },
+    { camelName: 'retailerId', titleName: 'Retailer', type: 'autocomplete', source: '/api/retailers' },
+    { camelName: 'delivered', type: 'number' },
+    { camelName: 'scanned', type: 'number' }
+  ],
+  layout: [
+    {
+      section: 'Details',
+      rows: [
+        [ 'name', 'key' ],
+        [ 'address' ]
+        [ 'locationId', 'distanceMiles' ]
+      ]
+    }
+  ]
+})