mirror of
				https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
				synced 2025-11-04 12:22:47 +00:00 
			
		
		
		
	Merge branch 'public-corpus' of gitlab.ub.uni-bielefeld.de:sfb1288inf/nopaque into public-corpus
This commit is contained in:
		
							
								
								
									
										0
									
								
								app/static/js/Requests/Corpora.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								app/static/js/Requests/Corpora.js
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										37
									
								
								app/static/js/Requests/Requests.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								app/static/js/Requests/Requests.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
Requests = {};
 | 
			
		||||
 | 
			
		||||
Requests.JSONfetch = (input, init={}) => {
 | 
			
		||||
  return new Promise((resolve, reject) => {
 | 
			
		||||
    let fixedInit = {};
 | 
			
		||||
    fixedInit.headers = {};
 | 
			
		||||
    fixedInit.headers['Accept'] = 'application/json';
 | 
			
		||||
    if (init.hasOwnProperty('body')) {
 | 
			
		||||
      fixedInit.headers['Content-Type'] = 'application/json';
 | 
			
		||||
    }
 | 
			
		||||
    fetch(input, Utils.mergeObjectsDeep(init, fixedInit))
 | 
			
		||||
      .then(
 | 
			
		||||
        (response) => {
 | 
			
		||||
          response.json()
 | 
			
		||||
            .then(
 | 
			
		||||
              (json) => {
 | 
			
		||||
                let message = json.message || json;
 | 
			
		||||
                let category = json.category || 'message';
 | 
			
		||||
                app.flash(message, category);
 | 
			
		||||
              },
 | 
			
		||||
              (error) => {
 | 
			
		||||
                app.flash(`[${response.status}]: ${response.statusText}`, 'error');
 | 
			
		||||
              }
 | 
			
		||||
            );
 | 
			
		||||
          if (response.ok) {
 | 
			
		||||
            resolve(response);
 | 
			
		||||
          } else {
 | 
			
		||||
            reject(response);
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        (response) => {
 | 
			
		||||
          app.flash('Something went wrong', 'error');
 | 
			
		||||
          reject(response);
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
  });
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										5
									
								
								app/static/js/Requests/contributions/contributions.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								app/static/js/Requests/contributions/contributions.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
* Contributions                                                              *
 | 
			
		||||
* Fetch requests for /contributions routes                                   *
 | 
			
		||||
*****************************************************************************/
 | 
			
		||||
Requests.contributions = {};
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
* SpaCy NLP Pipeline Models                                                  *
 | 
			
		||||
* Fetch requests for /contributions/spacy-nlp-pipeline-models routes         *
 | 
			
		||||
*****************************************************************************/
 | 
			
		||||
Requests.contributions.spacy_nlp_pipeline_models = {};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.spacy_nlp_pipeline_models.entity = {};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.spacy_nlp_pipeline_models.entity.delete = (spacyNlpPipelineModelId) => {
 | 
			
		||||
  let input = `/contributions/spacy-nlp-pipeline-models/${spacyNlpPipelineModelId}`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'DELETE'
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.spacy_nlp_pipeline_models.entity.isPublic = {};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.spacy_nlp_pipeline_models.entity.isPublic.update = (spacyNlpPipelineModelId, value) => {
 | 
			
		||||
  let input = `/contributions/spacy-nlp-pipeline-models/${spacyNlpPipelineModelId}/is_public`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'PUT',
 | 
			
		||||
    body: JSON.stringify(value)
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
* Tesseract OCR Pipeline Models                                              *
 | 
			
		||||
* Fetch requests for /contributions/tesseract-ocr-pipeline-models routes     *
 | 
			
		||||
*****************************************************************************/
 | 
			
		||||
Requests.contributions.tesseract_ocr_pipeline_models = {};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.tesseract_ocr_pipeline_models.entity = {};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.tesseract_ocr_pipeline_models.entity.delete = (tesseractOcrPipelineModelId) => {
 | 
			
		||||
  let input = `/contributions/tesseract-ocr-pipeline-models/${tesseractOcrPipelineModelId}`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'DELETE'
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.tesseract_ocr_pipeline_models.entity.isPublic = {};
 | 
			
		||||
 | 
			
		||||
Requests.contributions.tesseract_ocr_pipeline_models.entity.isPublic.update = (tesseractOcrPipelineModelId, value) => {
 | 
			
		||||
  let input = `/contributions/tesseract-ocr-pipeline-models/${tesseractOcrPipelineModelId}/is_public`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'PUT',
 | 
			
		||||
    body: JSON.stringify(value)
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										78
									
								
								app/static/js/Requests/corpora/corpora.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								app/static/js/Requests/corpora/corpora.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
* Corpora                                                                    *
 | 
			
		||||
* Fetch requests for /corpora routes                                         *
 | 
			
		||||
*****************************************************************************/
 | 
			
		||||
Requests.corpora = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.delete = (corpusId) => {
 | 
			
		||||
  let input = `/corpora/${corpusId}`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'DELETE'
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.build = (corpusId) => {
 | 
			
		||||
  let input = `/corpora/${corpusId}/build`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'POST',
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.isPublic = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.isPublic.update = (corpusId, value) => {
 | 
			
		||||
  let input = `/corpora/${corpusId}/is_public`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'PUT',
 | 
			
		||||
    body: JSON.stringify(value)
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.files = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.files.ent = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.files.ent.delete = (corpusId, corpusFileId) => {
 | 
			
		||||
  let input = `/corpora/${corpusId}/files/${corpusFileId}`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'DELETE',
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.followers = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.followers.add = (corpusId, usernames) => {
 | 
			
		||||
  let input = `/corpora/${corpusId}/followers`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'POST',
 | 
			
		||||
    body: JSON.stringify(usernames)
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.followers.ent = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.followers.ent.delete = (corpusId, followerId) => {
 | 
			
		||||
  let input = `/corpora/${corpusId}/followers/${followerId}`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'DELETE',
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.followers.ent.role = {};
 | 
			
		||||
 | 
			
		||||
Requests.corpora.ent.followers.ent.role.update = (corpusId, followerId, value) => {
 | 
			
		||||
  let input = `/corpora/${corpusId}/followers/${followerId}/role`;
 | 
			
		||||
  let init = {
 | 
			
		||||
    method: 'PUT',
 | 
			
		||||
    body: JSON.stringify(value)
 | 
			
		||||
  };
 | 
			
		||||
  return Requests.JSONfetch(input, init);
 | 
			
		||||
};
 | 
			
		||||
@@ -1,16 +1,11 @@
 | 
			
		||||
class CorpusDisplay extends RessourceDisplay {
 | 
			
		||||
class CorpusDisplay extends ResourceDisplay {
 | 
			
		||||
  constructor(displayElement) {
 | 
			
		||||
    super(displayElement);
 | 
			
		||||
    this.corpusId = displayElement.dataset.corpusId;
 | 
			
		||||
    this.displayElement
 | 
			
		||||
      .querySelector('.action-button[data-action="build-request"]')
 | 
			
		||||
      .addEventListener('click', (event) => {
 | 
			
		||||
        Utils.buildCorpusRequest(this.userId, this.corpusId);
 | 
			
		||||
      });
 | 
			
		||||
    this.displayElement
 | 
			
		||||
      .querySelector('.action-button[data-action="delete-request"]')
 | 
			
		||||
      .addEventListener('click', (event) => {
 | 
			
		||||
        Utils.deleteCorpusRequest(this.userId, this.corpusId);
 | 
			
		||||
        Requests.corpora.corpus.build(this.corpusId);
 | 
			
		||||
      });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
class JobDisplay extends RessourceDisplay {
 | 
			
		||||
class JobDisplay extends ResourceDisplay {
 | 
			
		||||
  constructor(displayElement) {
 | 
			
		||||
    super(displayElement);
 | 
			
		||||
    this.jobId = this.displayElement.dataset.jobId;
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
class RessourceDisplay {
 | 
			
		||||
class ResourceDisplay {
 | 
			
		||||
  constructor(displayElement) {
 | 
			
		||||
    this.displayElement = displayElement;
 | 
			
		||||
    this.userId = this.displayElement.dataset.userId;
 | 
			
		||||
@@ -119,7 +119,11 @@ class SpaCyNLPPipelineModelList extends ResourceList {
 | 
			
		||||
    let listAction = listActionElement.dataset.listAction;
 | 
			
		||||
    switch (listAction) {
 | 
			
		||||
      case 'toggle-is-public': {
 | 
			
		||||
        Utils.spaCyNLPPipelineModelToggleIsPublicRequest(this.userId, itemId);
 | 
			
		||||
        let newIsPublicValue = listActionElement.checked;
 | 
			
		||||
        Requests.contributions.spacy_nlp_pipeline_models.entity.isPublic.update(itemId, newIsPublicValue)
 | 
			
		||||
          .catch((response) => {
 | 
			
		||||
            listActionElement.checked = !newIsPublicValue;
 | 
			
		||||
          });
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      default: {
 | 
			
		||||
@@ -137,7 +141,37 @@ class SpaCyNLPPipelineModelList extends ResourceList {
 | 
			
		||||
    let listAction = listActionElement === null ? 'view' : listActionElement.dataset.listAction;
 | 
			
		||||
    switch (listAction) {
 | 
			
		||||
      case 'delete-request': {
 | 
			
		||||
        Utils.deleteSpaCyNLPPipelineModelRequest(this.userId, itemId);
 | 
			
		||||
        let values = this.listjs.get('id', itemId)[0].values();
 | 
			
		||||
        let modalElement = Utils.HTMLToElement(
 | 
			
		||||
          `
 | 
			
		||||
            <div class="modal">
 | 
			
		||||
              <div class="modal-content">
 | 
			
		||||
                <h4>Confirm SpaCy NLP Pipeline Model deletion</h4>
 | 
			
		||||
                <p>Do you really want to delete the SpaCy NLP Pipeline Model <b>${values.title}</b>? All files will be permanently deleted!</p>
 | 
			
		||||
              </div>
 | 
			
		||||
              <div class="modal-footer">
 | 
			
		||||
                <a class="btn modal-close waves-effect waves-light">Cancel</a>
 | 
			
		||||
                <a class="action-button btn modal-close red waves-effect waves-light" data-action="confirm">Delete</a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          `
 | 
			
		||||
        );
 | 
			
		||||
        document.querySelector('#modals').appendChild(modalElement);
 | 
			
		||||
        let modal = M.Modal.init(
 | 
			
		||||
          modalElement,
 | 
			
		||||
          {
 | 
			
		||||
            dismissible: false,
 | 
			
		||||
            onCloseEnd: () => {
 | 
			
		||||
              modal.destroy();
 | 
			
		||||
              modalElement.remove();
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        );
 | 
			
		||||
        let confirmElement = modalElement.querySelector('.action-button[data-action="confirm"]');
 | 
			
		||||
        confirmElement.addEventListener('click', (event) => {
 | 
			
		||||
          Requests.contributions.spacy_nlp_pipeline_models.entity.delete(itemId);
 | 
			
		||||
        });
 | 
			
		||||
        modal.open();
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      case 'view': {
 | 
			
		||||
 
 | 
			
		||||
@@ -128,7 +128,11 @@ class TesseractOCRPipelineModelList extends ResourceList {
 | 
			
		||||
    let listAction = listActionElement.dataset.listAction;
 | 
			
		||||
    switch (listAction) {
 | 
			
		||||
      case 'toggle-is-public': {
 | 
			
		||||
        Utils.tesseractOCRPipelineModelToggleIsPublicRequest(this.userId, itemId);
 | 
			
		||||
        let newIsPublicValue = listActionElement.checked;
 | 
			
		||||
        Requests.contributions.tesseract_ocr_pipeline_models.entity.isPublic.update(itemId, newIsPublicValue)
 | 
			
		||||
          .catch((response) => {
 | 
			
		||||
            listActionElement.checked = !newIsPublicValue;
 | 
			
		||||
          });
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      default: {
 | 
			
		||||
@@ -151,7 +155,37 @@ class TesseractOCRPipelineModelList extends ResourceList {
 | 
			
		||||
    let listAction = listActionElement === null ? 'view' : listActionElement.dataset.listAction;
 | 
			
		||||
    switch (listAction) {
 | 
			
		||||
      case 'delete-request': {
 | 
			
		||||
        Utils.deleteTesseractOCRPipelineModelRequest(this.userId, itemId);
 | 
			
		||||
        let values = this.listjs.get('id', itemId)[0].values();
 | 
			
		||||
        let modalElement = Utils.HTMLToElement(
 | 
			
		||||
          `
 | 
			
		||||
            <div class="modal">
 | 
			
		||||
              <div class="modal-content">
 | 
			
		||||
                <h4>Confirm Tesseract OCR Pipeline Model deletion</h4>
 | 
			
		||||
                <p>Do you really want to delete the Tesseract OCR Pipeline Model <b>${values.title}</b>? All files will be permanently deleted!</p>
 | 
			
		||||
              </div>
 | 
			
		||||
              <div class="modal-footer">
 | 
			
		||||
                <a class="btn modal-close waves-effect waves-light">Cancel</a>
 | 
			
		||||
                <a class="action-button btn modal-close red waves-effect waves-light" data-action="confirm">Delete</a>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          `
 | 
			
		||||
        );
 | 
			
		||||
        document.querySelector('#modals').appendChild(modalElement);
 | 
			
		||||
        let modal = M.Modal.init(
 | 
			
		||||
          modalElement,
 | 
			
		||||
          {
 | 
			
		||||
            dismissible: false,
 | 
			
		||||
            onCloseEnd: () => {
 | 
			
		||||
              modal.destroy();
 | 
			
		||||
              modalElement.remove();
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        );
 | 
			
		||||
        let confirmElement = modalElement.querySelector('.action-button[data-action="confirm"]');
 | 
			
		||||
        confirmElement.addEventListener('click', (event) => {
 | 
			
		||||
          Requests.contributions.tesseract_ocr_pipeline_models.entity.delete(itemId);
 | 
			
		||||
        });
 | 
			
		||||
        modal.open();
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      case 'view': {
 | 
			
		||||
 
 | 
			
		||||
@@ -101,13 +101,21 @@ class Utils {
 | 
			
		||||
 | 
			
		||||
  static updateCorpusFollowerRole(corpusId, followerId, roleName) {
 | 
			
		||||
    return new Promise((resolve, reject) => {
 | 
			
		||||
      fetch(`/corpora/${corpusId}/followers/${followerId}/role`, {method: 'POST', headers: {Accept: 'application/json', 'Content-Type': 'application/json'}, body: JSON.stringify({role: roleName})})
 | 
			
		||||
      let fetchRessource = `/corpora/${corpusId}/followers/${followerId}/role`;
 | 
			
		||||
      let fetchOptions = {
 | 
			
		||||
        method: 'POST',
 | 
			
		||||
        headers: {
 | 
			
		||||
          'Accept': 'application/json',
 | 
			
		||||
          'Content-Type': 'application/json'
 | 
			
		||||
        },
 | 
			
		||||
        body: JSON.stringify({role: roleName})
 | 
			
		||||
      };
 | 
			
		||||
      fetch(fetchRessource, fetchOptions)
 | 
			
		||||
        .then(
 | 
			
		||||
          (response) => {
 | 
			
		||||
            if (response.ok) {
 | 
			
		||||
              app.flash('Role updated', 'corpus');
 | 
			
		||||
              resolve(response);
 | 
			
		||||
              return;
 | 
			
		||||
            } else {
 | 
			
		||||
              app.flash(`${response.statusText}`, 'error');
 | 
			
		||||
              reject(response);
 | 
			
		||||
@@ -179,7 +187,15 @@ class Utils {
 | 
			
		||||
 | 
			
		||||
  static unfollowCorpusRequest(corpusId, followerId) {
 | 
			
		||||
    return new Promise((resolve, reject) => {
 | 
			
		||||
      fetch(`/corpora/${corpusId}/followers/${followerId}/unfollow`, {method: 'POST', headers: {Accept: 'application/json'}})
 | 
			
		||||
      let fetchRessource = `/corpora/${corpusId}/followers/${followerId}/unfollow`;
 | 
			
		||||
      let fetchOptions = {
 | 
			
		||||
        method: 'POST',
 | 
			
		||||
        headers: {
 | 
			
		||||
          'Accept': 'application/json',
 | 
			
		||||
          'Content-Type': 'application/json'
 | 
			
		||||
        }
 | 
			
		||||
      };
 | 
			
		||||
      fetch(fetchRessource, fetchOptions)
 | 
			
		||||
        .then(
 | 
			
		||||
          (response) => {
 | 
			
		||||
            if (response.ok) {
 | 
			
		||||
@@ -683,23 +699,27 @@ class Utils {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static tesseractOCRPipelineModelToggleIsPublicRequest(userId, tesseractOCRPipelineModelId, is_public) {
 | 
			
		||||
  static updateTesseractOCRPipelineModelIsPublicRequest(tesseractOCRPipelineModelId, newIsPublicValue) {
 | 
			
		||||
    return new Promise((resolve, reject) => {
 | 
			
		||||
      let tesseractOCRPipelineModel;
 | 
			
		||||
      try {
 | 
			
		||||
        tesseractOCRPipelineModel = app.data.users[userId].tesseract_ocr_pipeline_models[tesseractOCRPipelineModelId];
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        tesseractOCRPipelineModel = {};
 | 
			
		||||
      }
 | 
			
		||||
    
 | 
			
		||||
      fetch(`/contributions/tesseract-ocr-pipeline-models/${tesseractOCRPipelineModelId}/toggle-public-status`, {method: 'POST', headers: {Accept: 'application/json'}})
 | 
			
		||||
      let fetchRessource = `/contributions/tesseract-ocr-pipeline-models/${tesseractOCRPipelineModelId}/is_public`;
 | 
			
		||||
      let fetchOptions = {
 | 
			
		||||
        method: 'PUT',
 | 
			
		||||
        headers: {
 | 
			
		||||
          'Accept': 'application/json',
 | 
			
		||||
          'Content-Type': 'application/json'
 | 
			
		||||
        },
 | 
			
		||||
        body: JSON.stringify(newIsPublicValue)
 | 
			
		||||
      };
 | 
			
		||||
      fetch(fetchRessource, fetchOptions)
 | 
			
		||||
        .then(
 | 
			
		||||
          (response) => {
 | 
			
		||||
            if (response.status === 403) {
 | 
			
		||||
              app.flash('Forbidden', 'error');
 | 
			
		||||
            if (response.ok) {
 | 
			
		||||
              response.json().then((data) => {app.flash(data);});
 | 
			
		||||
              resolve(response);
 | 
			
		||||
            } else {
 | 
			
		||||
              app.flash(`${response.statusText}`, 'error');
 | 
			
		||||
              reject(response);
 | 
			
		||||
            }
 | 
			
		||||
            resolve(response);
 | 
			
		||||
          },
 | 
			
		||||
          (response) => {
 | 
			
		||||
            app.flash('Something went wrong', 'error');
 | 
			
		||||
@@ -709,23 +729,27 @@ class Utils {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  static spaCyNLPPipelineModelToggleIsPublicRequest(userId, spaCyNLPPipelineModelId) {
 | 
			
		||||
  static updateSpaCyNLPPipelineModelIsPublicRequest(SpaCyNLPPipelineModelId, newIsPublicValue) {
 | 
			
		||||
    return new Promise((resolve, reject) => {
 | 
			
		||||
      let spaCyNLPPipelineModel;
 | 
			
		||||
      try {
 | 
			
		||||
        spaCyNLPPipelineModel = app.data.users[userId].spacy_nlp_pipeline_models[spaCyNLPPipelineModelId];
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        spaCyNLPPipelineModel = {};
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      fetch(`/contributions/spacy-nlp-pipeline-models/${spaCyNLPPipelineModelId}/toggle-public-status`, {method: 'POST', headers: {Accept: 'application/json'}})
 | 
			
		||||
      let fetchRessource = `/contributions/spacy-nlp-pipeline-models/${SpaCyNLPPipelineModelId}/is_public`;
 | 
			
		||||
      let fetchOptions = {
 | 
			
		||||
        method: 'PUT',
 | 
			
		||||
        headers: {
 | 
			
		||||
          'Accept': 'application/json',
 | 
			
		||||
          'Content-Type': 'application/json'
 | 
			
		||||
        },
 | 
			
		||||
        body: JSON.stringify(newIsPublicValue)
 | 
			
		||||
      };
 | 
			
		||||
      fetch(fetchRessource, fetchOptions)
 | 
			
		||||
        .then(
 | 
			
		||||
          (response) => {
 | 
			
		||||
            if (response.status === 403) {
 | 
			
		||||
              app.flash('Forbidden', 'error');
 | 
			
		||||
            if (response.ok) {
 | 
			
		||||
              response.json().then((data) => {app.flash(data);});
 | 
			
		||||
              resolve(response);
 | 
			
		||||
            } else {
 | 
			
		||||
              app.flash(`${response.statusText}`, 'error');
 | 
			
		||||
              reject(response);
 | 
			
		||||
            }
 | 
			
		||||
            resolve(response);
 | 
			
		||||
          },
 | 
			
		||||
          (response) => {
 | 
			
		||||
            app.flash('Something went wrong', 'error');
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user