aboutsummaryrefslogtreecommitdiff
path: root/resources/assets/javascripts
diff options
context:
space:
mode:
authorMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2023-04-05 09:42:50 +0000
committerMarcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>2023-04-05 09:42:50 +0000
commitebaaa758a3fee40b45d5385cee5be411d47f7b1c (patch)
treeebb1da5636745e77ada5650d0a6c342b18fc71e3 /resources/assets/javascripts
parenta1cef8653cf6bb70bde54df0e970a63083d7f803 (diff)
Add TypeScript support, fixes #2376
Closes #2376 Merge request studip/studip!1676
Diffstat (limited to 'resources/assets/javascripts')
-rw-r--r--resources/assets/javascripts/bootstrap/application.js2
-rw-r--r--resources/assets/javascripts/bootstrap/multi_select.js2
-rw-r--r--resources/assets/javascripts/chunks/vue.js2
-rw-r--r--resources/assets/javascripts/init.js4
-rw-r--r--resources/assets/javascripts/lib/calendar.js2
-rw-r--r--resources/assets/javascripts/lib/event-bus.d.ts2
-rw-r--r--resources/assets/javascripts/lib/event-bus.ts (renamed from resources/assets/javascripts/lib/event-bus.js)0
-rw-r--r--resources/assets/javascripts/lib/forum.js2
-rw-r--r--resources/assets/javascripts/lib/gettext.js2
-rw-r--r--resources/assets/javascripts/lib/url_helper.d.ts33
-rw-r--r--resources/assets/javascripts/lib/url_helper.ts (renamed from resources/assets/javascripts/lib/url_helper.js)15
-rw-r--r--resources/assets/javascripts/studip-ui.js2
12 files changed, 53 insertions, 15 deletions
diff --git a/resources/assets/javascripts/bootstrap/application.js b/resources/assets/javascripts/bootstrap/application.js
index f97dd90..1f0561e 100644
--- a/resources/assets/javascripts/bootstrap/application.js
+++ b/resources/assets/javascripts/bootstrap/application.js
@@ -1,5 +1,5 @@
import { $gettext } from '../lib/gettext.js';
-import eventBus from "../lib/event-bus";
+import eventBus from "../lib/event-bus.ts";
/* ------------------------------------------------------------------------
* application.js
diff --git a/resources/assets/javascripts/bootstrap/multi_select.js b/resources/assets/javascripts/bootstrap/multi_select.js
index 38fa362..9e817b8 100644
--- a/resources/assets/javascripts/bootstrap/multi_select.js
+++ b/resources/assets/javascripts/bootstrap/multi_select.js
@@ -1,5 +1,5 @@
import { $gettext } from '../lib/gettext.js';
-import eventBus from "../lib/event-bus";
+import eventBus from "../lib/event-bus.ts";
eventBus.on('studip:set-locale', () => {
$.extend($.ui.multiselect, {
diff --git a/resources/assets/javascripts/chunks/vue.js b/resources/assets/javascripts/chunks/vue.js
index 53748c9..cf95ed3 100644
--- a/resources/assets/javascripts/chunks/vue.js
+++ b/resources/assets/javascripts/chunks/vue.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
import Vuex from 'vuex';
import Router from "vue-router";
-import eventBus from '../lib/event-bus.js';
+import eventBus from '../lib/event-bus.ts';
import GetTextPlugin from 'vue-gettext';
import { getLocale, getVueConfig } from '../lib/gettext.js';
import PortalVue from 'portal-vue';
diff --git a/resources/assets/javascripts/init.js b/resources/assets/javascripts/init.js
index e01f84e..a37a466 100644
--- a/resources/assets/javascripts/init.js
+++ b/resources/assets/javascripts/init.js
@@ -16,13 +16,13 @@ import CalendarDialog from './lib/calendar_dialog.js';
import Clipboard from './lib/clipboard.js';
import Cookie from './lib/cookie.js';
import CourseWizard from './lib/course_wizard.js';
-import createURLHelper from './lib/url_helper.js';
+import { createURLHelper } from './lib/url_helper.ts';
import CSS from './lib/css.js';
import Dates from './lib/dates.js';
import Dialog from './lib/dialog.js';
import DragAndDropUpload from './lib/drag_and_drop_upload.js';
import enrollment from './lib/enrollment.js';
-import eventBus from './lib/event-bus.js';
+import eventBus from './lib/event-bus.ts';
import extractCallback from './lib/extract_callback.js';
import Files from './lib/files.js';
import FilesDashboard from './lib/files_dashboard.js';
diff --git a/resources/assets/javascripts/lib/calendar.js b/resources/assets/javascripts/lib/calendar.js
index bfe0054..2f1cd67 100644
--- a/resources/assets/javascripts/lib/calendar.js
+++ b/resources/assets/javascripts/lib/calendar.js
@@ -1,5 +1,5 @@
import { $gettext } from '../lib/gettext.js';
-import eventBus from "./event-bus";
+import eventBus from "./event-bus.ts";
eventBus.on('studip:set-locale', () => {
Calendar.day_names = [
diff --git a/resources/assets/javascripts/lib/event-bus.d.ts b/resources/assets/javascripts/lib/event-bus.d.ts
new file mode 100644
index 0000000..812c738
--- /dev/null
+++ b/resources/assets/javascripts/lib/event-bus.d.ts
@@ -0,0 +1,2 @@
+declare const eventBus: import("mitt").Emitter;
+export default eventBus;
diff --git a/resources/assets/javascripts/lib/event-bus.js b/resources/assets/javascripts/lib/event-bus.ts
index 3f6a58d..3f6a58d 100644
--- a/resources/assets/javascripts/lib/event-bus.js
+++ b/resources/assets/javascripts/lib/event-bus.ts
diff --git a/resources/assets/javascripts/lib/forum.js b/resources/assets/javascripts/lib/forum.js
index fbada1f..8dcc076 100644
--- a/resources/assets/javascripts/lib/forum.js
+++ b/resources/assets/javascripts/lib/forum.js
@@ -1,5 +1,5 @@
import { $gettext } from "./gettext.js";
-import eventBus from "./event-bus";
+import eventBus from "./event-bus.ts";
eventBus.on('studip:set-locale', () => {
Forum.warning_text = $gettext('Wenn Sie die Seite verlassen, gehen ihre Änderungen verloren!');
diff --git a/resources/assets/javascripts/lib/gettext.js b/resources/assets/javascripts/lib/gettext.js
index 0e3eb9a..5742466 100644
--- a/resources/assets/javascripts/lib/gettext.js
+++ b/resources/assets/javascripts/lib/gettext.js
@@ -1,6 +1,6 @@
import { translate } from 'vue-gettext';
import defaultTranslations from '../../../../locale/de/LC_MESSAGES/js-resources.json';
-import eventBus from './event-bus.js';
+import eventBus from './event-bus.ts';
const DEFAULT_LANG = 'de_DE';
const DEFAULT_LANG_NAME = 'Deutsch';
diff --git a/resources/assets/javascripts/lib/url_helper.d.ts b/resources/assets/javascripts/lib/url_helper.d.ts
new file mode 100644
index 0000000..ec8920e
--- /dev/null
+++ b/resources/assets/javascripts/lib/url_helper.d.ts
@@ -0,0 +1,33 @@
+/**
+ * This class helps to handle URLs of hyperlinks and change their parameters.
+ * For example a javascript-page may open an item and the user expects other links
+ * on the same page to "know" that this item is now open. But because we don't use
+ * PHP session-variables here, this is difficult to use. This class can help. You
+ * can overwrite the href-attribute of the link by:
+ *
+ * [code]
+ * link.href = STUDIP.URLHelper.getURL("adresse.php?hello=world#anchor");
+ * [/code]
+ * Returns something like:
+ * "http://uni-adresse.de/studip/adresse.php?hello=world&mandatory=parameter#anchor"
+ */
+declare class URLHelper {
+ base_url: string;
+ parameters: Record<string, string>;
+ constructor(base_url?: string, parameters?: {});
+ /**
+ * returns a readily encoded URL with the mandatory parameters and additionally passed
+ * parameters.
+ *
+ * @param url string: any url-string
+ * @param param_object map: associative object for extra values
+ * @param ignore_params boolean: ignore previously bound parameters
+ * @return: url with all necessary and additional parameters, encoded
+ */
+ getURL(url: string, param_object: any, ignore_params: boolean): string;
+}
+export declare function createURLHelper(config: {
+ base_url?: string;
+ parameters?: Record<string, string>;
+}): URLHelper;
+export {};
diff --git a/resources/assets/javascripts/lib/url_helper.js b/resources/assets/javascripts/lib/url_helper.ts
index 0aa08c3..b9ebbf6 100644
--- a/resources/assets/javascripts/lib/url_helper.js
+++ b/resources/assets/javascripts/lib/url_helper.ts
@@ -13,7 +13,10 @@
*/
class URLHelper {
- constructor(base_url = null, parameters = {}) {
+ base_url: string;
+ parameters: Record<string, string>;
+
+ constructor(base_url = "", parameters = {}) {
//the base url for all links
this.base_url = base_url;
@@ -30,7 +33,7 @@ class URLHelper {
* @param ignore_params boolean: ignore previously bound parameters
* @return: url with all necessary and additional parameters, encoded
*/
- getURL(url, param_object, ignore_params) {
+ getURL(url: string, param_object: any, ignore_params: boolean): string {
let result;
if (url === '' || url.match(/^[?#]/)) {
@@ -40,14 +43,14 @@ class URLHelper {
}
if (!ignore_params) {
- for (let key in this.parameters) {
+ for (const key in this.parameters) {
if (!result.searchParams.has(key)) {
result.searchParams.set(key, this.parameters[key]);
}
}
}
- for (let key in param_object) {
+ for (const key in param_object) {
if (param_object[key] !== null) {
result.searchParams.set(key, param_object[key]);
} else {
@@ -59,6 +62,6 @@ class URLHelper {
}
}
-export default function createURLHelper(config) {
- return new URLHelper(config && config.base_url, config && config.parameters);
+export function createURLHelper(config: { base_url?: string, parameters?: Record<string, string>}): URLHelper {
+ return new URLHelper(config?.base_url, config?.parameters);
}
diff --git a/resources/assets/javascripts/studip-ui.js b/resources/assets/javascripts/studip-ui.js
index fdb3255..41897b2 100644
--- a/resources/assets/javascripts/studip-ui.js
+++ b/resources/assets/javascripts/studip-ui.js
@@ -1,5 +1,5 @@
import { $gettext } from './lib/gettext.js';
-import eventBus from "./lib/event-bus";
+import eventBus from "./lib/event-bus.ts";
/**
* This file contains extensions/adjustments for jQuery UI.