From 07aaf99c17daac1562b7b4e50a7e4ec6116faaaa Mon Sep 17 00:00:00 2001 From: Douglas Barone Date: Mon, 9 Nov 2020 12:05:21 -0400 Subject: [PATCH] Replaced momentjs with date-fns in web. --- server/src/classes/User.js | 2 +- server/src/resolvers/User.js | 15 ++++--- server/src/typeDefs.js | 10 ++--- web/package-lock.json | 39 ++++++++++++------- web/package.json | 4 +- web/src/components/UserPresenceStatusList.vue | 2 +- web/src/components/WifiDevice.vue | 2 +- web/src/components/widgets/UserInfoWidget.vue | 17 ++++---- web/src/main.js | 3 +- web/src/plugins/date.js | 13 +++++++ web/src/plugins/vue-moment.js | 10 ----- web/src/views/PrintToken.vue | 4 +- web/src/views/UserId.vue | 2 +- 13 files changed, 71 insertions(+), 52 deletions(-) create mode 100644 web/src/plugins/date.js delete mode 100755 web/src/plugins/vue-moment.js diff --git a/server/src/classes/User.js b/server/src/classes/User.js index 2e12849..b486054 100755 --- a/server/src/classes/User.js +++ b/server/src/classes/User.js @@ -269,7 +269,7 @@ class User { const jwtSecret = process.env.JWT_SECRET || 'a good secret' - //@TODO Add momentJs to calculate expiration + // TODO: Add date-fns to calculate expiration const options = { expiresIn: process.env.JWT_EXPIRATION || '72h' } const token = jwt.sign(payload, jwtSecret, options) diff --git a/server/src/resolvers/User.js b/server/src/resolvers/User.js index 5ec6c40..cb316c1 100755 --- a/server/src/resolvers/User.js +++ b/server/src/resolvers/User.js @@ -7,6 +7,9 @@ const User = { groups: async (_, args, { ad }) => _.groups ? _.groups : ad.getGroupMembershipForUser(_.sAMAccountName), + lastLogin: _ => _.lastLogin.toISOString(), + lastLoginPrior: _ => _.lastLoginPrior.toISOString(), + sharedFolders: _ => _.groups ? _.groups @@ -34,11 +37,13 @@ const User = { ) return [] - return prisma.user.findOne({ - where: { - sAMAccountName: _.sAMAccountName - } - }).WifiDevice() + return prisma.user + .findOne({ + where: { + sAMAccountName: _.sAMAccountName + } + }) + .WifiDevice() } } diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index 2318b35..2aea181 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -5,8 +5,8 @@ const typeDefs = gql` "Returns only a few fields of User" basicUser(sAMAccountName: String!): User! @cacheControl(maxAge: 350) - me: User! @auth @cacheControl(maxAge: 30, scope: PRIVATE) - + me: User! @auth + "@cacheControl(maxAge: 30, scope: PRIVATE)" users( where: UserWhereInput! limit: Int = 15 @@ -45,7 +45,7 @@ const typeDefs = gql` directive @auth(roles: [String!]) on FIELD_DEFINITION "A mix between the database User and the Active Directory User" - type User @cacheControl(maxAge: 350, scope: PRIVATE) { + type User { id: ID wifiDevices: [WifiDevice!] @@ -54,8 +54,8 @@ const typeDefs = gql` lastLoginPrior: String roles: [String!] groups: [Group!] - sharedFolders: [String!] - sharedPrinters: [String!] + sharedFolders: [String!] + sharedPrinters: [String!] firstName: String diff --git a/web/package-lock.json b/web/package-lock.json index 8ba7a48..cccecee 100755 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -9720,10 +9720,9 @@ "dev": true }, "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", + "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==" }, "de-indent": { "version": "1.0.2", @@ -14005,6 +14004,12 @@ "figures": "^2.0.0" }, "dependencies": { + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -14744,7 +14749,8 @@ "moment": { "version": "2.29.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", - "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true }, "move-concurrently": { "version": "1.0.1", @@ -19932,6 +19938,21 @@ } } }, + "vue-date-fns": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/vue-date-fns/-/vue-date-fns-2.0.1.tgz", + "integrity": "sha512-j2G97bVOKO0mVfFEnzCu5dQU0dgD8jLAAVU0dGRDqxZzzNXqep7d3WEGuuJ6mNOP5PM7GE+UqpKYfkL/LNmDKQ==", + "requires": { + "date-fns": "^2.0.0" + }, + "dependencies": { + "date-fns": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.16.1.tgz", + "integrity": "sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ==" + } + } + }, "vue-eslint-parser": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz", @@ -20088,14 +20109,6 @@ } } }, - "vue-moment": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vue-moment/-/vue-moment-4.1.0.tgz", - "integrity": "sha512-Gzisqpg82ItlrUyiD9d0Kfru+JorW2o4mQOH06lEDZNgxci0tv/fua1Hl0bo4DozDV2JK1r52Atn/8QVCu8qQw==", - "requires": { - "moment": "^2.19.2" - } - }, "vue-router": { "version": "3.4.6", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.6.tgz", diff --git a/web/package.json b/web/package.json index d031efc..06d4756 100755 --- a/web/package.json +++ b/web/package.json @@ -11,14 +11,14 @@ "dependencies": { "@mdi/font": "^5.6.55", "core-js": "^3.6.5", - "moment": "^2.29.1", + "date-fns": "^2.16.1", "qrcode.vue": "^1.7.0", "roboto-fontface": "*", "validator": "^13.1.17", "vue": "^2.6.12", "vue-apollo": "^3.0.4", + "vue-date-fns": "^2.0.1", "vue-json-pretty": "^1.7.0", - "vue-moment": "^4.1.0", "vue-router": "^3.4.6", "vue-the-mask": "^0.11.1", "vuetify": "^2.3.13", diff --git a/web/src/components/UserPresenceStatusList.vue b/web/src/components/UserPresenceStatusList.vue index 9b933c4..e2d285e 100644 --- a/web/src/components/UserPresenceStatusList.vue +++ b/web/src/components/UserPresenceStatusList.vue @@ -34,7 +34,7 @@ > Visto - {{ userPresence.wifiDevices[0].lastSeen | moment('from') }} + {{ userPresence.wifiDevices[0].lastSeen | from }} On-line diff --git a/web/src/components/WifiDevice.vue b/web/src/components/WifiDevice.vue index 701ed02..3cd424d 100644 --- a/web/src/components/WifiDevice.vue +++ b/web/src/components/WifiDevice.vue @@ -69,7 +69,7 @@ - {{ wifiDevice.lastSeen | moment('LLLL') }} + {{ wifiDevice.lastSeen | from }} Visto pela última vez diff --git a/web/src/components/widgets/UserInfoWidget.vue b/web/src/components/widgets/UserInfoWidget.vue index 84d07da..c4bc7e3 100755 --- a/web/src/components/widgets/UserInfoWidget.vue +++ b/web/src/components/widgets/UserInfoWidget.vue @@ -6,15 +6,12 @@ mdi-login - Seu último login foi - {{ me.lastLogin | moment('from', 'now') }} + + Seu último login foi + {{ me.lastLogin | from }} + - {{ - me.lastLoginPrior - | moment('dddd, DD [de] MMMM [de] YYYY, [às] hh:mm') - }} + {{ me.lastLoginPrior | dateAndTime }} @@ -26,10 +23,10 @@ Você alterou sua senha - {{ me.pwdLastSet | moment('from', 'now') }} - {{ me.pwdLastSet | moment('dddd, DD [de] MMMM [de] YYYY') }} + {{ me.pwdLastSet | dateAndTime }} diff --git a/web/src/main.js b/web/src/main.js index 7bf7018..a33e557 100755 --- a/web/src/main.js +++ b/web/src/main.js @@ -3,11 +3,12 @@ import App from './App.vue' import router from './router' import vuetify from './plugins/vuetify' -import './plugins/vue-moment' import 'roboto-fontface/css/roboto/roboto-fontface.css' import '@mdi/font/css/materialdesignicons.css' import './scss/style.scss' +import './plugins/date' + import { defaultApolloProvider } from './plugins/vue-apollo' Vue.config.productionTip = false diff --git a/web/src/plugins/date.js b/web/src/plugins/date.js new file mode 100644 index 0000000..4565e5d --- /dev/null +++ b/web/src/plugins/date.js @@ -0,0 +1,13 @@ +import Vue from 'vue' +import { format, formatDistance, fromUnixTime } from 'date-fns' +import locale from 'date-fns/locale/pt-BR' + +Vue.filter('dateAndTime', val => + format(new Date(val), "d 'de' MMMM 'de' yyyy 'às' HH:MM", { locale }) +) + +Vue.filter('shortDate', val => format(val, 'dd/MM/yyyy', { locale })) + +Vue.filter('from', val => + formatDistance(new Date(val), Date.now(), { locale, addSuffix: true }) +) diff --git a/web/src/plugins/vue-moment.js b/web/src/plugins/vue-moment.js deleted file mode 100755 index 662c0e7..0000000 --- a/web/src/plugins/vue-moment.js +++ /dev/null @@ -1,10 +0,0 @@ -import Vue from 'vue' -import moment from 'moment' - -require('moment/locale/pt-br') - -import vueMoment from 'vue-moment' - -Vue.use(vueMoment, { - moment -}) diff --git a/web/src/views/PrintToken.vue b/web/src/views/PrintToken.vue index f65d5db..27263b9 100755 --- a/web/src/views/PrintToken.vue +++ b/web/src/views/PrintToken.vue @@ -33,7 +33,7 @@ Válido até {{ tokenInfo.expiration - | moment('dddd, D [de] MMMM [de] YYYY [às] h:mm') + | dateAndtime }} @@ -110,7 +110,7 @@
{{ tokenInfo.user.displayName }}, - {{ tokenInfo.createdAt | moment('DD [de] MMMM [de] YYYY') }} + {{ tokenInfo.createdAt | dateAndTime }}
diff --git a/web/src/views/UserId.vue b/web/src/views/UserId.vue index 29558c5..73277b1 100644 --- a/web/src/views/UserId.vue +++ b/web/src/views/UserId.vue @@ -25,7 +25,7 @@ {{ me.extensionAttribute1 }} / {{ me.department }}
CPF: {{ me.extensionAttribute6 }}
Nasc.: - {{ me.extensionAttribute7 | moment('DD/MM/YYYY') }}
+ {{ me.extensionAttribute7 | shortDate }}