From f8cbdc528ee25ffeaaa45a660af703ce7360c7d0 Mon Sep 17 00:00:00 2001 From: Ewen Le Bihan Date: Sun, 26 Apr 2020 12:07:01 +0200 Subject: [PATCH 1/4] =?UTF-8?q?=F0=9F=8E=A8=20Format=20nuxt=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nuxt.config.js | 64 +++++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/nuxt.config.js b/nuxt.config.js index 5502e8c..5a2ea65 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -3,10 +3,10 @@ const metaInfo = { 'Gérez vos notes, prises de cours, devoirs et autres en un seul endroit. Une application web faite par un étudiant, pour les étudiants.', title: "schoolsyst: une nouvelle façon d'étudier", url: 'https://www.schoolsyst.com', // We link to the presentation website for SEO tags, better for discovery. - imagePath: '/assets/schoolsyst-social-preview-card.png' // Hosted on the presentation website + imagePath: '/assets/schoolsyst-social-preview-card.png', // Hosted on the presentation website } -const getSocialCardPreviewTags = (data) => { +const getSocialCardPreviewTags = data => { const tags = [] // Prepend the url to the image data.image = data.url + data.imagePath @@ -14,11 +14,11 @@ const getSocialCardPreviewTags = (data) => { const namespaces = ['og', 'twitter'] const properties = ['title', 'url', 'image', 'description'] - namespaces.forEach((namespace) => { - properties.forEach((prop) => { + namespaces.forEach(namespace => { + properties.forEach(prop => { tags.push({ name: `${namespace}:${prop}`, - content: data[prop] + content: data[prop], }) }) }) @@ -35,7 +35,7 @@ export default { */ head: { title: 'schoolsyst', - titleTemplate: (titleChunk) => { + titleTemplate: titleChunk => { return !titleChunk || titleChunk === 'schoolsyst' ? 'schoolsyst' : titleChunk + ' · schoolsyst' @@ -50,47 +50,47 @@ export default { content: 'A complete, centralized school management system made for students, by a student.' || process.env.npm_package_description || - '' + '', }, { name: 'apple-mobile-web-app-title', content: 'Schoolsyst' }, { name: 'application-name', content: 'Schoolsyst' }, { name: 'msapplication-TileColor', content: '#2d89ef' }, - { name: 'theme-color', content: '#1389df' } + { name: 'theme-color', content: '#1389df' }, ], link: [ { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }, { rel: 'apple-touch-icon', sizes: '180x180', - href: '/apple-touch-icon.png' + href: '/apple-touch-icon.png', }, { rel: 'icon', type: 'image/png', sizes: '32x32', - href: '/favicon-32x32.png' + href: '/favicon-32x32.png', }, { rel: 'icon', type: 'image/png', sizes: '16x16', - href: '/favicon-16x16.png' + href: '/favicon-16x16.png', }, { rel: 'manifest', href: '/site.webmanifest' }, - { rel: 'mask-icon', href: '/safari-pinned-tab.svg', color: '#1389fd' } + { rel: 'mask-icon', href: '/safari-pinned-tab.svg', color: '#1389fd' }, ], script: [ { - src: '/lottie.min.js' - } - ] + src: '/lottie.min.js', + }, + ], }, /* ** Customize the progress-bar color */ loading: { color: 'var(--blue)', - height: '2px' + height: '2px', }, /* ** Global CSS @@ -106,7 +106,7 @@ export default { // Icons '~/assets/fonts/Material-Icons/import.css', // Plugins - '~/plugins/v-tooltip.scss' + '~/plugins/v-tooltip.scss', ], /* ** Plugins to load before mounting the App @@ -118,14 +118,14 @@ export default { '~plugins/v-tooltip.js', '~plugins/vue-konva.js', '~plugins/vue2-touch-events', - { src: '~plugins/ga.js', mode: 'client' } + { src: '~plugins/ga.js', mode: 'client' }, ], /* ** Nuxt.js dev-modules */ buildModules: [ // Doc: https://github.com/nuxt-community/eslint-module - '@nuxtjs/eslint-module' + '@nuxtjs/eslint-module', // // Doc: https://github.com/nuxt-community/stylelint-module // '@nuxtjs/stylelint-module' ], @@ -138,14 +138,14 @@ export default { '@nuxtjs/pwa', '@nuxtjs/auth', '@nuxtjs/toast', - ['nuxt-vue-select', {}] + ['nuxt-vue-select', {}], ], /* ** Toasts */ toast: { position: 'bottom-left', - duration: 3000 + duration: 3000, }, /* ** Auth module configuration. @@ -156,24 +156,24 @@ export default { login: '/login', logout: '/login', callback: false, - home: false + home: false, }, strategies: { local: { endpoints: { login: { url: '/auth/', method: 'post', propertyName: 'token' }, user: { url: '/users/self/', method: 'get', propertyName: '' }, - logout: { url: '/auth/logout/', method: 'post' } + logout: { url: '/auth/logout/', method: 'post' }, }, tokenRequired: true, - tokenType: 'Bearer' - } + tokenType: 'Bearer', + }, }, // resetOnError: true, - rewriteRedirects: false + rewriteRedirects: false, }, router: { - middleware: ['auth'] + middleware: ['auth'], }, /* ** Axios module configuration @@ -183,7 +183,7 @@ export default { baseURL: process.env.NODE_ENV === 'development' ? 'http://localhost:9999/api' - : 'https://api.schoolsyst.com/api' + : 'https://api.schoolsyst.com/api', }, /* ** Build configuration @@ -196,7 +196,7 @@ export default { if (ctx.isDev) { config.devtool = ctx.isClient ? 'source-map' : 'inline-source-map' } - } + }, }, pwa: { meta: { @@ -207,7 +207,7 @@ export default { theme_color: '#ffffff', lang: 'fr', // Needed to make sure it works w/ iOS, will do testing (See: https://medium.com/@firt/dont-use-ios-web-app-meta-tag-irresponsibly-in-your-progressive-web-apps-85d70f4438cb) - nativeUI: true - } - } + nativeUI: true, + }, + }, } From b2a6ba75d7e3756695aec7281ecdc3c2719c2d4e Mon Sep 17 00:00:00 2001 From: Ewen Le Bihan Date: Sun, 26 Apr 2020 12:10:45 +0200 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=99=88=20Ignore=20.now=20folder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 8703365..0db40ed 100644 --- a/.gitignore +++ b/.gitignore @@ -91,3 +91,6 @@ sw.* # Files marked as sensitive *.nogit.* + +# Now by Vercel +.now/ From ce50e0f71634ef7a3f02829f4b00432cf906c4dd Mon Sep 17 00:00:00 2001 From: Ewen Le Bihan Date: Sun, 26 Apr 2020 12:33:25 +0200 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=9A=B8=20=20Different?= =?UTF-8?q?=20submitting=20states?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/LoadingSpinner.vue | 134 +++++++++++++++++++++++ components/ModalAddReport.vue | 196 +++++++++++++++++++++++----------- components/ModalObject.vue | 39 +++++-- components/ScreenLoading.vue | 57 ++++++++++ components/ScreenSuccess.vue | 6 +- layouts/default.vue | 4 +- 6 files changed, 359 insertions(+), 77 deletions(-) create mode 100644 components/LoadingSpinner.vue create mode 100644 components/ScreenLoading.vue diff --git a/components/LoadingSpinner.vue b/components/LoadingSpinner.vue new file mode 100644 index 0000000..585d91f --- /dev/null +++ b/components/LoadingSpinner.vue @@ -0,0 +1,134 @@ + + + diff --git a/components/ModalAddReport.vue b/components/ModalAddReport.vue index c4c811c..daf5bdc 100644 --- a/components/ModalAddReport.vue +++ b/components/ModalAddReport.vue @@ -3,78 +3,87 @@ v-bind="{...description, action, validation}" @submit="handleSubmit()" @delete="$emit('delete')" - :add-button-text="canSubmit ? 'Envoyer' : false" + @close="handleClosed()" + :add-button-text="submitButtonText" :modal-title="modalTitle" :delete-button-text="null" + :close-on-form-submit="closeOnFormSubmit" + :close-button="!submitting" + :class="{submitting, submitted, errored, 'come-back-later': !canSubmit}" ) - template(v-if="canSubmit") - .report-type - InputButtonsSelect( - :values="reportTypes" - :value="value.type" - @input="$emit('input', { ...value, type: $event })" - ) - .report-title - InputField( - type="text" - name="title" - :value="value.title" - @input="$emit('input', { ...value, title: $event })" - ) Titre - .report-message - template(v-if="value.type === 'BUG'") + transition + template(v-if="submitting") + ScreenLoading(small :fullscreen="false") + p Soumission de votre {{ this.value.type === 'BUG' ? 'rapport' : 'idée' }}... + template(v-else-if="submitted") + ScreenSuccess(small @cta="seeReports()" image="thumbs-up" :fullscreen="false") + h1 Merci pour votre contribution ! + template(#cta) Voir vos rapports + template(v-else-if="canSubmit") + .report-type + InputButtonsSelect( + :values="reportTypes" + :value="value.type" + @input="$emit('input', { ...value, type: $event })" + ) + .report-title InputField( - type="block" - name="what" - :value="message.what", - @input="handleMessageInput('what', $event)" - placeholder="Décrivez le comportement du bug et comment vous l'avez rencontré" - ) Que s'est-il passé ? - InputField( - type="block" - name="expected" - :value="message.expected", - @input="handleMessageInput('expected', $event)" - placeholder="Décrivez le comportement correct qui aurait dû avoir lieu si le bug n'existait pas" - ) À quoi vous attendiez-vous ? - template(v-else) - InputField( - type="block" - name="problem" - :value="message.problem", - @input="handleMessageInput('problem', $event)" - placeholder="Si votre solution ne répond pas à un problème en particulier, expliquez pourquoi elle est utile" - ) Quel est le problème ? - InputField( - type="block" - name="solution" - :value="message.solution", - @input="handleMessageInput('solution', $event)" - placeholder="N'hésitez pas à rajouter des captures d'écrans et autres ressources que vous pensez utiles." - ) Quel est votre solution ? - p.notice - | Votre rapport sera publié #[a(href="https://github.com/schoolsyst/frontend/issues" target="_blank") sur GitHub], où votre nom d'utilisateur - | , navigateur, OS et type d'appareil seront visibles, afin d'aider le réglage de votre problème. - template(v-else-if="submitted") - ScreenSuccess(small @cta="$router.push('/reports')" image="thumbs-up") - h1 Merci pour votre contribution ! - template(#cta) Voir vos rapports - template(v-else="!canSubmit") - ScreenEmpty(small @cta="$router.push('/')") - template(#smiley) T_T - h1 Revenez demain. - p Pour éviter les abus, il est impossible de publier plus de 5 rapports par jour. Merci pour vos contributions acharnées ! - p Vous pouvez toujours créer votre demande sur github.com directement, mais il faudra vous faudra un compte GitHub. - template(#cta) Créer une demande sur GitHub + type="text" + name="title" + :value="value.title" + @input="$emit('input', { ...value, title: $event })" + ) Titre + .report-message + template(v-if="value.type === 'BUG'") + InputField( + type="block" + name="what" + :value="message.what", + @input="handleMessageInput('what', $event)" + placeholder="Décrivez le comportement du bug et comment vous l'avez rencontré" + ) Que s'est-il passé ? + InputField( + type="block" + name="expected" + :value="message.expected", + @input="handleMessageInput('expected', $event)" + placeholder="Décrivez le comportement correct qui aurait dû avoir lieu si le bug n'existait pas" + ) À quoi vous attendiez-vous ? + template(v-else) + InputField( + type="block" + name="problem" + :value="message.problem", + @input="handleMessageInput('problem', $event)" + placeholder="Si votre solution ne répond pas à un problème en particulier, expliquez pourquoi elle est utile" + ) Quel est le problème ? + InputField( + type="block" + name="solution" + :value="message.solution", + @input="handleMessageInput('solution', $event)" + placeholder="N'hésitez pas à rajouter des captures d'écrans et autres ressources que vous pensez utiles." + ) Quel est votre solution ? + p.notice + | Votre rapport sera publié #[a(href="https://github.com/schoolsyst/frontend/issues" target="_blank") sur GitHub], où votre nom d'utilisateur + | , navigateur, OS et type d'appareil seront visibles, afin d'aider le réglage de votre problème. + template(v-else) + ScreenEmpty(small @cta="$router.push('/')") + template(#smiley) T_T + h1 Revenez demain. + p Pour éviter les abus, il est impossible de publier plus de 5 rapports par jour. Merci pour vos contributions acharnées ! + p Vous pouvez toujours créer votre demande sur github.com directement, mais il faudra vous faudra un compte GitHub. + template(#cta) Créer une demande sur GitHub diff --git a/components/ScreenLoading.vue b/components/ScreenLoading.vue new file mode 100644 index 0000000..85ee0c0 --- /dev/null +++ b/components/ScreenLoading.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/components/ScreenSuccess.vue b/components/ScreenSuccess.vue index eeebb47..621f4ea 100644 --- a/components/ScreenSuccess.vue +++ b/components/ScreenSuccess.vue @@ -1,5 +1,5 @@