From 1c55c6f41a32a1aa830b29798d9afd1fb9e3d8dc Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Wed, 19 Oct 2022 11:32:37 +0000 Subject: lint .vue files as well, fixes #1696 Closes #1696 Merge request studip/studip!772 --- .eslintrc.json | 10 +- package.json | 2 +- resources/assets/javascripts/bootstrap/oer.js | 18 ++-- resources/assets/javascripts/lib/blubber.js | 38 ++++---- resources/assets/javascripts/lib/files.js | 24 +++-- resources/assets/javascripts/lib/oer.js | 22 +++-- resources/vue/components/BlubberGlobalstream.vue | 19 ++-- resources/vue/components/BlubberThread.vue | 101 +++++++++++---------- resources/vue/components/BlubberThreadWidget.vue | 9 +- resources/vue/components/CacheAdministration.vue | 8 +- resources/vue/components/Datetimepicker.vue | 2 +- resources/vue/components/EditableList.vue | 38 ++++---- resources/vue/components/FilesTable.vue | 49 +++++----- resources/vue/components/I18nTextarea.vue | 37 +++++--- resources/vue/components/MyCoursesColorPicker.vue | 2 +- resources/vue/components/MyCoursesNavigation.vue | 2 +- resources/vue/components/MyCoursesTables.vue | 2 +- resources/vue/components/MyCoursesTiles.vue | 8 +- resources/vue/components/StudipDialog.vue | 3 +- resources/vue/components/StudipFileSize.vue | 2 + resources/vue/components/StudipMessageBox.vue | 6 +- .../courseware/CoursewareAccordionContainer.vue | 4 +- .../courseware/CoursewareActionWidget.vue | 2 - .../CoursewareBiographyAchievementsBlock.vue | 2 - .../courseware/CoursewareBiographyGoalsBlock.vue | 2 + ...CoursewareBiographyPersonalInformationBlock.vue | 2 - .../components/courseware/CoursewareChartBlock.vue | 2 +- .../courseware/CoursewareContentBookmarks.vue | 1 + .../CoursewareContentOverviewElements.vue | 4 +- .../courseware/CoursewareContentPermissions.vue | 1 + .../courseware/CoursewareDefaultBlock.vue | 8 -- .../courseware/CoursewareDefaultContainer.vue | 1 - .../courseware/CoursewareDialogCardsBlock.vue | 6 +- .../courseware/CoursewareHeadlineBlock.vue | 8 +- .../courseware/CoursewareImageMapBlock.vue | 14 +-- .../courseware/CoursewareKeyPointBlock.vue | 5 +- .../courseware/CoursewareManagerCopySelector.vue | 6 +- .../courseware/CoursewareManagerElement.vue | 5 +- .../courseware/CoursewareManagerLinkSelector.vue | 8 +- .../courseware/CoursewareStructuralElement.vue | 16 ++-- .../vue/components/courseware/CoursewareTabs.vue | 8 +- .../courseware/CoursewareTabsContainer.vue | 4 +- .../courseware/CoursewareTimelineBlock.vue | 6 +- .../components/courseware/CoursewareToolsAdmin.vue | 1 - 44 files changed, 269 insertions(+), 249 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index d9a963e..55c17a0 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,13 +1,16 @@ { - "parser": "@babel/eslint-parser", "parserOptions": { + "parser": "@babel/eslint-parser", "sourceType": "module" }, "env": { "browser": true, "es6": true }, - "extends": "eslint:recommended", + "extends": [ + "eslint:recommended", + "plugin:vue/essential" + ], "globals": { "STUDIP": "writable", "CKEDITOR": "writable", @@ -15,6 +18,9 @@ "_": "writable", "jQuery": "writable" }, + "plugins": [ + "vue" + ], "rules": { "no-unused-vars": "off", diff --git a/package.json b/package.json index 18f37b3..7d8898b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Stud.IP", "private": true, "scripts": { - "lint": "eslint resources/assets/javascripts resources/vue", + "lint": "eslint --ext .js,.vue resources/assets/javascripts resources/vue", "css-lint": "stylelint resources/assets/stylesheets", "webpack-dev": "webpack --config webpack.dev.js --mode development", "webpack-prod": "webpack --config webpack.prod.js --mode production", diff --git a/resources/assets/javascripts/bootstrap/oer.js b/resources/assets/javascripts/bootstrap/oer.js index eff927f..2b47149 100644 --- a/resources/assets/javascripts/bootstrap/oer.js +++ b/resources/assets/javascripts/bootstrap/oer.js @@ -57,14 +57,16 @@ STUDIP.ready(() => { STUDIP.Vue.load().then(({createApp}) => { STUDIP.OER.EditApp = createApp({ el: '.oercampus_editmaterial', - data: { - name: $('.oercampus_editmaterial input.oername').val(), - logo_url: $('.oercampus_editmaterial .logo_file').data("oldurl"), - customlogo: $('.oercampus_editmaterial .logo_file').data("customlogo"), - filename: $('.oercampus_editmaterial .file.drag-and-drop').data("filename"), - filesize: $('.oercampus_editmaterial .file.drag-and-drop').data("filesize"), - tags: $('.oercampus_editmaterial .oer_tags').data("defaulttags"), - minimumTags: 5 + data() { + return { + name: $('.oercampus_editmaterial input.oername').val(), + logo_url: $('.oercampus_editmaterial .logo_file').data("oldurl"), + customlogo: $('.oercampus_editmaterial .logo_file').data("customlogo"), + filename: $('.oercampus_editmaterial .file.drag-and-drop').data("filename"), + filesize: $('.oercampus_editmaterial .file.drag-and-drop').data("filesize"), + tags: $('.oercampus_editmaterial .oer_tags').data("defaulttags"), + minimumTags: 5 + }; }, mounted: function () { jQuery("#difficulty_slider_edit").slider({ diff --git a/resources/assets/javascripts/lib/blubber.js b/resources/assets/javascripts/lib/blubber.js index 6a72382..777f221 100644 --- a/resources/assets/javascripts/lib/blubber.js +++ b/resources/assets/javascripts/lib/blubber.js @@ -19,13 +19,15 @@ const Blubber = { STUDIP.Vue.load().then(({createApp}) => { STUDIP.Blubber.App = createApp({ el: '#layout_container', - data: { - threads: $('.blubber_threads_widget').data('threads_data'), - thread_data: panel_data.thread_data, - active_thread: panel_data.active_thread, - threads_more_down: panel_data.threads_more_down, - waiting: false, - display_context_posting: 0 + data() { + return { + threads: $('.blubber_threads_widget').data('threads_data'), + thread_data: panel_data.thread_data, + active_thread: panel_data.active_thread, + threads_more_down: panel_data.threads_more_down, + waiting: false, + display_context_posting: 0 + }; }, methods: { changeActiveThread: function (thread_id) { @@ -96,13 +98,15 @@ const Blubber = { STUDIP.Vue.load().then(({createApp}) => { createApp({ el: this, - data: { - threads: panel_data.threads_data, - thread_data: panel_data.thread_data, - active_thread: panel_data.active_thread, - threads_more_down: panel_data.threads_more_down, - waiting: false, - display_context_posting: 0 + data () { + return { + threads: panel_data.threads_data, + thread_data: panel_data.thread_data, + active_thread: panel_data.active_thread, + threads_more_down: panel_data.threads_more_down, + waiting: false, + display_context_posting: 0 + }; }, components, }); @@ -186,8 +190,10 @@ const Blubber = { let components = STUDIP.Blubber.components; return createApp({ el: '#blubber_contact_ids', - data: { - users: [] + data () { + return { + users: [] + }; }, methods: { addUser: function (user_id, name) { diff --git a/resources/assets/javascripts/lib/files.js b/resources/assets/javascripts/lib/files.js index 9d06a18..c013107 100644 --- a/resources/assets/javascripts/lib/files.js +++ b/resources/assets/javascripts/lib/files.js @@ -10,11 +10,13 @@ const Files = { STUDIP.Vue.load().then(({createApp}) => { this.filesapp = createApp({ el: "#layout_content", - data: { - "files": jQuery("#files_table_form").data("files") || [], - "folders": jQuery("#files_table_form").data("folders") || [], - "topfolder": jQuery("#files_table_form").data("topfolder"), - "breadcrumbs": jQuery("#files_table_form").data("breadcrumbs") || [] + data() { + return { + files: jQuery("#files_table_form").data("files") || [], + folders: jQuery("#files_table_form").data("folders") || [], + topfolder: jQuery("#files_table_form").data("topfolder"), + breadcrumbs: jQuery("#files_table_form").data("breadcrumbs") || [] + }; }, methods: { hasFilesOfType (type) { @@ -45,11 +47,13 @@ const Files = { STUDIP.Vue.load().then(({createApp}) => { createApp({ el: table, - data: { - "files": jQuery(table).data("files") || [], - "folders": jQuery(table).data("folders") || [], - "topfolder": jQuery(table).data("topfolder"), - "breadcrumbs": jQuery(table).data("breadcrumbs") || [] + data() { + return { + files: jQuery(table).data("files") || [], + folders: jQuery(table).data("folders") || [], + topfolder: jQuery(table).data("topfolder"), + breadcrumbs: jQuery(table).data("breadcrumbs") || [] + }; }, components: { FilesTable, }, }); diff --git a/resources/assets/javascripts/lib/oer.js b/resources/assets/javascripts/lib/oer.js index dac19ec..0542a1e 100644 --- a/resources/assets/javascripts/lib/oer.js +++ b/resources/assets/javascripts/lib/oer.js @@ -37,16 +37,18 @@ const OER = { STUDIP.Vue.load().then(({createApp}) => { STUDIP.OER.Search = createApp({ el: ".oer_search", - data: { - browseMode: false, - tags: $(".oer_search").data("tags"), - tagHistory: [], - searchtext: "", - activeFilterPanel: false, - difficulty: [1, 12], - category: null, - results: false, - material_select_url_template: $(".oer_search").data("material_select_url_template") + data() { + return { + browseMode: false, + tags: $(".oer_search").data("tags"), + tagHistory: [], + searchtext: "", + activeFilterPanel: false, + difficulty: [1, 12], + category: null, + results: false, + material_select_url_template: $(".oer_search").data("material_select_url_template") + }; }, methods: { sync_search_text: function () { diff --git a/resources/vue/components/BlubberGlobalstream.vue b/resources/vue/components/BlubberGlobalstream.vue index 0c4976c..548e1fd 100644 --- a/resources/vue/components/BlubberGlobalstream.vue +++ b/resources/vue/components/BlubberGlobalstream.vue @@ -3,7 +3,7 @@
    -
  1. +
  2. @@ -37,7 +37,8 @@ name: 'blubber-globalstream', data: function () { return { - already_loading_down: 0 + already_loading_down: 0, + streamData: this.stream_data, }; }, props: ['stream_data', 'more_down'], @@ -52,14 +53,14 @@ addPosting: function (posting) { let exists = false; for (let i in this.stream_data) { - if (this.stream_data[i].thread_id === posting.thread_id) { + if (this.streamData[i].thread_id === posting.thread_id) { exists = true; return; } } if (!exists) { posting.class = posting.class + " new"; - this.stream_data.push(posting); + this.streamData.push(posting); this.$nextTick(() => { STUDIP.Markup.element($(this.$el).find(`.postings > li[data-thread_id="${posting.thread_id}"]`)); }); @@ -74,8 +75,8 @@ }); }, computed: { - sortedPostings: function () { - return this.stream_data.sort((a, b) => b.mkdate - a.mkdate); + sortedPostings() { + return [...this.streamData].sort((a, b) => b.mkdate - a.mkdate); } }, directives: { @@ -94,9 +95,9 @@ stream.already_loading_down = 1; let earliest_mkdate = null; - for (let i in stream.stream_data) { - if ((earliest_mkdate === null) || stream.stream_data[i].mkdate < earliest_mkdate) { - earliest_mkdate = stream.stream_data[i].mkdate; + for (let i in stream.streamData) { + if ((earliest_mkdate === null) || stream.streamData[i].mkdate < earliest_mkdate) { + earliest_mkdate = stream.streamData[i].mkdate; } } //load older comments diff --git a/resources/vue/components/BlubberThread.vue b/resources/vue/components/BlubberThread.vue index bb742fe..a3a5d70 100644 --- a/resources/vue/components/BlubberThread.vue +++ b/resources/vue/components/BlubberThread.vue @@ -1,13 +1,13 @@