From 6effb7dca270d897f65ff3734095b5f51bfe9159 Mon Sep 17 00:00:00 2001 From: AMontagu Date: Thu, 9 Apr 2020 15:58:47 +0200 Subject: [PATCH] Feature/add presentations (#108) * add presentation listing * filter working * add title filter and input design and add newline at EOF * update text of presentation readme * add pr template and submit presentation message * add real presnetation, pr template, submit text and vue vrsion field * add conditional display and accordion * add new line at the end of json files * change html comment * Update src/.vuepress/config.js * Update src/presentations/README.md * Update language Co-authored-by: Ben Hong --- .../ISSUE_TEMPLATE/presentation-submission.md | 13 ++ .../pull-request-presentation.md | 35 +++++ .../components/PresentationFilters.vue | 141 +++++++++++++++++ .../components/PresentationInfoLine.vue | 32 ++++ src/.vuepress/components/PresentationItem.vue | 71 +++++++++ src/.vuepress/components/PresentationList.vue | 146 ++++++++++++++++++ src/.vuepress/config.js | 13 ++ src/.vuepress/data/index.js | 18 +++ .../Create your own component library.json | 21 +++ .../2018/Setup a complex vue project.json | 21 +++ .../Webpack/2020/The Vue on Webpack.json | 21 +++ src/presentations/README.md | 28 ++++ 12 files changed, 560 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/presentation-submission.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/pull-request-presentation.md create mode 100644 src/.vuepress/components/PresentationFilters.vue create mode 100644 src/.vuepress/components/PresentationInfoLine.vue create mode 100644 src/.vuepress/components/PresentationItem.vue create mode 100644 src/.vuepress/components/PresentationList.vue create mode 100644 src/.vuepress/data/presentations/Components/2018/Create your own component library.json create mode 100644 src/.vuepress/data/presentations/Pattern/2018/Setup a complex vue project.json create mode 100644 src/.vuepress/data/presentations/Webpack/2020/The Vue on Webpack.json create mode 100644 src/presentations/README.md diff --git a/.github/ISSUE_TEMPLATE/presentation-submission.md b/.github/ISSUE_TEMPLATE/presentation-submission.md new file mode 100644 index 0000000..ad7edb4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/presentation-submission.md @@ -0,0 +1,13 @@ +--- +name: Presentation Submission +about: Submit Vue.js presentation to post for the community +title: "[Presentation]" +labels: '' +assignees: '' +--- + +## Presentation + +No need to post an issue for a presentation just get the presentation author authorization and submit a pull request following [this format](https://github.com/vuejs/events/compare/master...presnetation-pr-example?template=pull-request-presentation.md) + +If you meet a deadlink or a wrong informations please contact the author of the presentation. diff --git a/.github/PULL_REQUEST_TEMPLATE/pull-request-presentation.md b/.github/PULL_REQUEST_TEMPLATE/pull-request-presentation.md new file mode 100644 index 0000000..18472f8 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/pull-request-presentation.md @@ -0,0 +1,35 @@ +--- +name: Presentation PR +about: Share a new presnetation +title: '' +labels: '' +assignees: '' +--- + +Thank you for submitting a presentation. + +To submit a presentation you just need to add a json file that contain your data at: src/.vuepress/data/presentations/\[theme\]/\[year\]/presentation-title.json + +The json format is the following, please copy it fully even if some fields are not filled: + +{ + "slides": "", + "author": "", + "sourceLanguage": "", + "city": "", + "country": "", + "vueVersion": "", + "event": { + "name": "", + "link": "" + }, + "gitRepository": "", + "videoLink": "", + "reachSpeaker": { + "twitter": "", + "github": "", + "vueDiscord": "", + "email": "" + }, + "description": "" +} \ No newline at end of file diff --git a/src/.vuepress/components/PresentationFilters.vue b/src/.vuepress/components/PresentationFilters.vue new file mode 100644 index 0000000..5d06688 --- /dev/null +++ b/src/.vuepress/components/PresentationFilters.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/.vuepress/components/PresentationInfoLine.vue b/src/.vuepress/components/PresentationInfoLine.vue new file mode 100644 index 0000000..89e5675 --- /dev/null +++ b/src/.vuepress/components/PresentationInfoLine.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/.vuepress/components/PresentationItem.vue b/src/.vuepress/components/PresentationItem.vue new file mode 100644 index 0000000..ed8c691 --- /dev/null +++ b/src/.vuepress/components/PresentationItem.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/.vuepress/components/PresentationList.vue b/src/.vuepress/components/PresentationList.vue new file mode 100644 index 0000000..dd353f6 --- /dev/null +++ b/src/.vuepress/components/PresentationList.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/.vuepress/config.js b/src/.vuepress/config.js index 87e5af5..32938a7 100644 --- a/src/.vuepress/config.js +++ b/src/.vuepress/config.js @@ -50,6 +50,19 @@ module.exports = { } ] }, + { + text: 'Presentation', + items: [ + { + text: 'Discover', + link: '/presentations/#discover' + }, + { + text: "Submit", + link: '/presentations/#submit' + }, + ] + }, { text: 'Contact', items: [ diff --git a/src/.vuepress/data/index.js b/src/.vuepress/data/index.js index dc36fe3..fd09b89 100644 --- a/src/.vuepress/data/index.js +++ b/src/.vuepress/data/index.js @@ -1,6 +1,8 @@ const dataFiles = require.context(".", false, /\.json$/); +const presentationDataFiles = require.context("./presentations", true, /\.json$/); const data = {}; +const presentationData = {}; dataFiles.keys().forEach((fileName) => { const fileData = dataFiles(fileName); @@ -8,4 +10,20 @@ dataFiles.keys().forEach((fileName) => { data[year] = fileData.default || fileData; }); +presentationDataFiles.keys().forEach((fileName) => { + let fileData = presentationDataFiles(fileName); + fileName = fileName.replace(/\.\//, '').replace(/\.json/, '') + const [theme, year, title] = fileName.split("/", 3) + if (!presentationData[theme]) { + presentationData[theme] = {} + } + if (!presentationData[theme][year]) { + presentationData[theme][year] = [] + } + fileData = fileData.default || fileData; + fileData = {...fileData, title} + presentationData[theme][year].push(fileData.default || fileData) +}); + export default data; +export { data, presentationData}; diff --git a/src/.vuepress/data/presentations/Components/2018/Create your own component library.json b/src/.vuepress/data/presentations/Components/2018/Create your own component library.json new file mode 100644 index 0000000..74c29aa --- /dev/null +++ b/src/.vuepress/data/presentations/Components/2018/Create your own component library.json @@ -0,0 +1,21 @@ +{ + "slides": "https://github.com/AMontagu/vue-components-lib/blob/master/componentReuse.pptx", + "author": "Adrien Montagu", + "sourceLanguage": "French", + "city": "Lyon", + "country": "France", + "vueVersion": "2", + "event": { + "name": "Vue.js Lyon #4", + "link": "https://www.meetup.com/fr-FR/Vue-js-Lyon/events/255052432/" + }, + "gitRepository": "https://github.com/AMontagu/vue-complex-project", + "videoLink": null, + "reachSpeaker": { + "twitter": null, + "github": "https://github.com/amontagu", + "vueDiscord": "Adrien Montagu#0597", + "email": "adrienmontagu@gmail.com" + }, + "description": "Discover how to create your own component library." +} diff --git a/src/.vuepress/data/presentations/Pattern/2018/Setup a complex vue project.json b/src/.vuepress/data/presentations/Pattern/2018/Setup a complex vue project.json new file mode 100644 index 0000000..649218e --- /dev/null +++ b/src/.vuepress/data/presentations/Pattern/2018/Setup a complex vue project.json @@ -0,0 +1,21 @@ +{ + "slides": "https://github.com/AMontagu/vue-complex-project/blob/master/VueWorkshop.pptx", + "author": "Adrien Montagu", + "sourceLanguage": "French", + "city": "Lyon", + "country": "France", + "vueVersion": "2", + "event": { + "name": "Vue.js Lyon Workshop", + "link": "https://www.meetup.com/fr-FR/Vue-js-Lyon/events/253089389/" + }, + "gitRepository": "https://github.com/AMontagu/vue-complex-project", + "videoLink": null, + "reachSpeaker": { + "twitter": null, + "github": "https://github.com/amontagu", + "vueDiscord": "Adrien Montagu#0597", + "email": "adrienmontagu@gmail.com" + }, + "description": "How create a good base for a complex project in Vue ? See how integrate vue-i18n, code splitting, automatic component registration, vuex namespace, with a bonus or login reusable logic (on the separate branch withLogin)" +} diff --git a/src/.vuepress/data/presentations/Webpack/2020/The Vue on Webpack.json b/src/.vuepress/data/presentations/Webpack/2020/The Vue on Webpack.json new file mode 100644 index 0000000..0d129ba --- /dev/null +++ b/src/.vuepress/data/presentations/Webpack/2020/The Vue on Webpack.json @@ -0,0 +1,21 @@ +{ + "slides": null, + "author": "Adrien Montagu", + "sourceLanguage": "English", + "city": "Lyon", + "country": "France", + "vueVersion": "2", + "event": { + "name": "Vue Global Meetup #1", + "link": "https://www.eventbrite.com/e/vue-global-meetup-tickets-101090117262?aff=ebdssbonlinesearch" + }, + "gitRepository": "https://github.com/AMontagu/WebpackAndVue", + "videoLink": null, + "reachSpeaker": { + "twitter": null, + "github": "https://github.com/amontagu", + "vueDiscord": "Adrien Montagu#0597", + "email": "adrienmontagu@gmail.com" + }, + "description": "Let discover how Vue and Webpack work together: Create complex dev server, adding custom plugin, understanding the vue webpack config and more. The slide are coming soon." +} diff --git a/src/presentations/README.md b/src/presentations/README.md new file mode 100644 index 0000000..067bc72 --- /dev/null +++ b/src/presentations/README.md @@ -0,0 +1,28 @@ +--- +sidebar: auto +--- + +# Presentations + +## Introduction + +This is an effort to centralize all public presentations about Vue.js and associated libraries/frameworks. It catalogs presentations by theme and year, and can be used to help speakers find presentations that are open for reuse. So that knowledge can be shared at local events without having to recreate each presentation. + +To submit your go to the end of the page or [click here](/presentations/#submit) + +## Discover + + + + + +## Submit + +Sharing your presentation with the community is entirely voluntary. + +To add your presentation, you need to create a pull request with a JSON file containing all the data about the presentation you want to share. + +Click here to see examples + + +Click here to submit your