Alan Colon 7 lat temu
rodzic
commit
043c58b5a7

+ 2 - 1
app/assets/index.js

@@ -10,5 +10,6 @@ module.exports = {
   editIcon: require('@alancnet/material-design-icons/content_ic_create_48px.svg'),
   deleteIcon: require('@alancnet/material-design-icons/action_ic_delete_48px.svg'),
   saveIcon: require('@alancnet/material-design-icons/content_ic_save_48px.svg'),
-  undoIcon: require('@alancnet/material-design-icons/content_ic_undo_48px.svg')
+  undoIcon: require('@alancnet/material-design-icons/content_ic_undo_48px.svg'),
+  dollarIcon: require('@alancnet/icomoon-svg/coin-dollar.svg')
 }

+ 5 - 0
app/components/login-page.js

@@ -19,6 +19,11 @@ app.component('appLoginPage', {
   `,
   controllerAs: 'login',
   controller: function(api, $mdToast, $location) {
+    api.get('/api/auth/check').then(() => {
+      $location.url('/dashboard')
+    }, err => {
+      console.info('Not logged in: ', err)
+    })
     this.submit = async form => {
       try {
         const res = await api.login(this.model)

+ 20 - 7
app/components/test-page.js

@@ -2,14 +2,27 @@ const app = require('../app')
 
 app.component('appTestPage', {
   template: html`
-  <h2>Material Buttons</h2>
-  <p>
-    <md-button class="md-primary">Hello World</md-button>
-    <md-button class="md-accent">Hello World</md-button>
-    <md-button class="md-warn">Hello World</md-button>
-    <md-button class="">Hello World</md-button>
-  </p>
+  <div flex layout="column">
+    <h2>Material Buttons</h2>
+    <p>
+      <md-button class="md-primary">Hello World</md-button>
+      <md-button class="md-accent">Hello World</md-button>
+      <md-button class="md-warn">Hello World</md-button>
+      <md-button class="">Hello World</md-button>
+    </p>
+    <hr />
+    <h2>md-colors</h2>
+    <div ng-repeat="palette in ::ctrl.palettes">
+      <h3>{{::palette}}</h3>
+      <div ng-repeat="hue in ::ctrl.hues">
+        <pre md-colors="{ color: palette + '-' + hue }">md-colors="{ color: '{{palette + '-' + hue}}' }</pre>
+      </div>
+    </div>
+  </div>
   `,
+  controllerAs: 'ctrl',
   controller: function() {
+    this.palettes = ['primary', 'accent', 'warn', 'background']
+    this.hues = [100, 200, 300, 400, 500, 600, 700, 800, 900]
   }
 })

+ 1 - 1
app/components/user-area.js

@@ -61,7 +61,7 @@ app.component('appUserArea', {
   `,
   controllerAs: 'ctrl',
   controller: function($mdSidenav, $mdMedia, $scope, cruds) {
-    this.cruds = cruds
+    this.cruds = cruds.filter(crud => crud.showNav !== false)
     $scope.assets = assets
     $scope.$mdMedia = $mdMedia
     this.showNav = false

+ 12 - 1
app/crud/pages/details.js

@@ -1,5 +1,6 @@
 const _ = require('lodash')
 const app = require('../../app')
+const { dollarIcon } = require('../../assets')
 /**
  * @param {CrudPagesOptions} opts 
  */
@@ -33,9 +34,19 @@ const details = (opts) => {
     </md-input-container>
   `
 
+  const currencyInput = column => html`
+    <md-input-container flex>
+      <label>${column.titleName}</label>
+      <input type="number" step="0.01" ng-model="model.${raw(column.camelName)}" />
+      <md-icon md-svg-src="${dollarIcon}"></md-icon>
+    </md-input-container>
+  `
+
   const defaultField = column =>
     column.type === 'autocomplete'
     ? autocompleteInput(column)
+    : column.type === 'currency'
+    ? currencyInput(column)
     : standardInput(column)
 
   const layout = () => {
@@ -116,7 +127,7 @@ const details = (opts) => {
           $location.url(opts.appPrefix)
         } catch (err) {
           console.error(err)
-          $mdToast.showSimple(`Could not save ${opts.titleName}: ${err.message || err}`)
+          $mdToast.showSimple(`Could not save ${opts.titleName}: ${err.message || err.statusText || err}`)
         }
       }
 

+ 1 - 1
app/routes.js

@@ -2,7 +2,7 @@ module.exports = function($routeProvider) {
   $routeProvider.when('/test', {template: '<app-test-page />'})
   $routeProvider.when('/login', {template: '<app-login-page />'})
   $routeProvider.when('/dashboard', {template: '<app-dashboard-page />'})
-  $routeProvider.when('/', {template: '<app-home-page />'})
+  $routeProvider.when('/', {template: '<app-login-page />'})
   $routeProvider.crudRoutes({ camelName: 'user' })
   $routeProvider.crudRoutes({ camelName: 'role' })
   $routeProvider.otherwise({template: '<h1>404</h1>'})

+ 8 - 0
lib/controllers/auth/check.js

@@ -0,0 +1,8 @@
+module.exports = {
+  get: async (req, res) => {
+    if (req.user) {
+      res.status(200).end()
+    }
+    res.status(401).end()
+  }
+}

+ 2 - 1
lib/controllers/auth/index.js

@@ -2,5 +2,6 @@ module.exports = {
   login: require('./login'),
   decode: require('./decode'),
   verify: require('./verify'),
-  permissions: require('./permissions')
+  permissions: require('./permissions'),
+  check: require('./check')
 }

+ 1 - 0
lib/routes.js

@@ -4,6 +4,7 @@ const C = require('./controllers')
 
 module.exports = app => {
   app.post('/api/auth/login', asyncHandler(C.auth.login.post))
+  app.get('/api/auth/check', asyncHandler(C.auth.check.get))
   app.get('/api/auth/permissions', asyncHandler(C.auth.permissions.list))
   crudRoutes({ app, controller: C.user, pascalName: 'User' })
   crudRoutes({ app, controller: C.role, pascalName: 'Role' })

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "@alancnet/material-framework",
-  "version": "1.0.3",
+  "version": "1.0.4",
   "description": "",
   "main": "index.js",
   "scripts": {