aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/helper.ts
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-05-30 16:23:25 +0800
committercrupest <crupest@outlook.com>2020-05-30 16:23:25 +0800
commit232a19d7dfe0e3847b3a9a9a9be83485ffb9031c (patch)
tree2c7463f15cf30b8cbc703cb57bef357796bcd8b9 /Timeline/ClientApp/src/helper.ts
parentfc0521d81aa2293b94ea40b79ec0df80966c0278 (diff)
downloadtimeline-232a19d7dfe0e3847b3a9a9a9be83485ffb9031c.tar.gz
timeline-232a19d7dfe0e3847b3a9a9a9be83485ffb9031c.tar.bz2
timeline-232a19d7dfe0e3847b3a9a9a9be83485ffb9031c.zip
Merge front end to this repo. But I need to wait for aspnet core support for custom port and package manager for dev server.
Diffstat (limited to 'Timeline/ClientApp/src/helper.ts')
-rw-r--r--Timeline/ClientApp/src/helper.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/Timeline/ClientApp/src/helper.ts b/Timeline/ClientApp/src/helper.ts
new file mode 100644
index 00000000..904dcbbe
--- /dev/null
+++ b/Timeline/ClientApp/src/helper.ts
@@ -0,0 +1,35 @@
+//copied from https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter
+export function updateQueryString(
+ key: string,
+ value?: string | null,
+ url?: string
+): string {
+ if (!url) url = window.location.href;
+ const re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi');
+ let hash;
+
+ if (re.test(url)) {
+ if (typeof value !== 'undefined' && value !== null) {
+ return url.replace(re, '$1' + key + '=' + value + '$2$3');
+ } else {
+ hash = url.split('#');
+ url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
+ if (typeof hash[1] !== 'undefined' && hash[1] !== null) {
+ url += '#' + hash[1];
+ }
+ return url;
+ }
+ } else {
+ if (typeof value !== 'undefined' && value !== null) {
+ const separator = url.includes('?') ? '&' : '?';
+ hash = url.split('#');
+ url = hash[0] + separator + key + '=' + value;
+ if (typeof hash[1] !== 'undefined' && hash[1] !== null) {
+ url += '#' + hash[1];
+ }
+ return url;
+ } else {
+ return url;
+ }
+ }
+}