From 38173633006b4a79de06601c85c4d0c347fb85aa Mon Sep 17 00:00:00 2001
From: Simon Mayer <simon.mayer@onb.ac.at>
Date: Tue, 13 Sep 2022 14:45:26 +0200
Subject: [PATCH] Add URL prefix via JS for all JS GET/POST requests

---
 app/javascript/packs/application.js       |  9 +++++++
 app/javascript/packs/utils/dataset_api.js | 30 ++++++++++++-----------
 app/javascript/packs/utils/search_api.js  | 10 +++++---
 3 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
index b7e5812..bcb3bf1 100644
--- a/app/javascript/packs/application.js
+++ b/app/javascript/packs/application.js
@@ -29,3 +29,12 @@ window.Panzoom = require('@panzoom/panzoom')
 import "./application.scss"
 const images = require.context('../images', true)
 import Chart from 'chart.js/auto'
+
+export function addPrefixURL() {
+    var prefix = document.querySelector('#newspaper-platform');
+    if (prefix != null) {
+        return prefix.dataset.prefix;
+    } else {
+        return "";
+    }
+}
diff --git a/app/javascript/packs/utils/dataset_api.js b/app/javascript/packs/utils/dataset_api.js
index ef24e57..49c848a 100644
--- a/app/javascript/packs/utils/dataset_api.js
+++ b/app/javascript/packs/utils/dataset_api.js
@@ -1,8 +1,10 @@
+import {addPrefixURL} from "../application.js"
+
 export class DatasetAPI {
     static create_dataset(title, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/dataset/create",
+            url: addPrefixURL() + "/dataset/create",
             data: { title: title },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -18,7 +20,7 @@ export class DatasetAPI {
     static rename_dataset(id, title, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/dataset/rename",
+            url: addPrefixURL() + "/dataset/rename",
             data: { id: id, title: title },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -34,7 +36,7 @@ export class DatasetAPI {
     static import_dataset(id, title, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/dataset/import",
+            url: addPrefixURL() + "/dataset/import",
             data: { original_dataset_id: id, title: title },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -51,7 +53,7 @@ export class DatasetAPI {
     static delete_dataset(datasetId, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/dataset/delete",
+            url: addPrefixURL() + "/dataset/delete",
             data: { dataset_id: datasetId },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -68,7 +70,7 @@ export class DatasetAPI {
     static update_datasets_list(callback) {
         $.ajax({
             type: "GET",
-            url: "/en/tool/newspapers-platform/datasets/update",
+            url: addPrefixURL() + "/datasets/update",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -85,7 +87,7 @@ export class DatasetAPI {
     static setCurrentWorkingDataset(datasetId, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/datasets/working_dataset",
+            url: addPrefixURL() + "/datasets/working_dataset",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -101,7 +103,7 @@ export class DatasetAPI {
     static addSelectedDocumentsToWorkingDataset(documentsIds, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/datasets/add_selected_documents",
+            url: addPrefixURL() + "/datasets/add_selected_documents",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -117,7 +119,7 @@ export class DatasetAPI {
     static addSelectedCompoundToWorkingDataset(compoundId, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/datasets/add_compound",
+            url: addPrefixURL() + "/datasets/add_compound",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -133,7 +135,7 @@ export class DatasetAPI {
     static removeSelectedDocumentsToWorkingDataset(documentsIds, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/datasets/remove_selected_documents",
+            url: addPrefixURL() + "/datasets/remove_selected_documents",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -149,7 +151,7 @@ export class DatasetAPI {
     static addAllDocumentsToWorkingDataset(searchParams, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/datasets/add_all_documents",
+            url: addPrefixURL() + "/datasets/add_all_documents",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -165,7 +167,7 @@ export class DatasetAPI {
     static exportDataset(datasetId, exportType, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/datasets/export_dataset",
+            url: addPrefixURL() + "/datasets/export_dataset",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -182,7 +184,7 @@ export class DatasetAPI {
     static paginateDataset(datasetId, page, per_page, sort, sort_order, type, callback) {
         $.ajax({
             type: "POST",
-            url: `/en/tool/newspapers-platform/dataset/${datasetId}/paginate`,
+            url: addPrefixURL() + `/dataset/${datasetId}/paginate`,
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -199,7 +201,7 @@ export class DatasetAPI {
     static getDatasets(callback) {
         $.ajax({
             type: "GET",
-            url: "/en/tool/newspapers-platform/datasets/list",
+            url: addPrefixURL() + "/datasets/list",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
@@ -213,7 +215,7 @@ export class DatasetAPI {
     static toggleSharingStatus(dataset_id, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/dataset/toggle_sharing_status",
+            url: addPrefixURL() + "/dataset/toggle_sharing_status",
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
             },
diff --git a/app/javascript/packs/utils/search_api.js b/app/javascript/packs/utils/search_api.js
index 8c56006..a0a83e0 100644
--- a/app/javascript/packs/utils/search_api.js
+++ b/app/javascript/packs/utils/search_api.js
@@ -1,9 +1,11 @@
+import {addPrefixURL} from "../application.js"
+
 export class SearchAPI {
 
     static load_dataset_named_entities(dataset_id, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/dataset_named_entities",
+            url: addPrefixURL() + "/dataset_named_entities",
             data: { dataset_id: dataset_id },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -20,7 +22,7 @@ export class SearchAPI {
     static load_named_entities(docs_ids, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/named_entities",
+            url: addPrefixURL() + "/named_entities",
             data: { docs_ids: docs_ids },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -37,7 +39,7 @@ export class SearchAPI {
     static facetPagination(fieldName, nbPages, currentPage, callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/catalog/facet_pagination",
+            url: addPrefixURL() + "/catalog/facet_pagination",
             data: { field_name: fieldName, nb_pages: nbPages, current_page: currentPage },
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
@@ -54,7 +56,7 @@ export class SearchAPI {
     static wideDatesHistogram(callback) {
         $.ajax({
             type: "POST",
-            url: "/en/tool/newspapers-platform/catalog/wide_dates_histogram",
+            url: addPrefixURL() + "/catalog/wide_dates_histogram",
             data: {},
             headers: {
                 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
-- 
GitLab