mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-11-04 02:53:06 +00:00 
			
		
		
		
	Apply standard formater and linter on js files
This commit is contained in:
		@@ -1,59 +1,60 @@
 | 
			
		||||
$( function() {
 | 
			
		||||
    buttons = $(".choose_file_button");
 | 
			
		||||
    popups = $(".choose_file_widget");
 | 
			
		||||
    popups.dialog({
 | 
			
		||||
        autoOpen: false,
 | 
			
		||||
        modal: true,
 | 
			
		||||
        width: "90%",
 | 
			
		||||
        create: function (event) {
 | 
			
		||||
            target = $(event.target);
 | 
			
		||||
            target.parent().css({
 | 
			
		||||
                'position': 'fixed',
 | 
			
		||||
                'top': '5%',
 | 
			
		||||
                'bottom': '5%',
 | 
			
		||||
            });
 | 
			
		||||
            target.css("height", "300px");
 | 
			
		||||
            console.log(target);
 | 
			
		||||
/* eslint-disable camelcase */
 | 
			
		||||
$(function () {
 | 
			
		||||
  // const buttons = $('.choose_file_button')
 | 
			
		||||
  const popups = $('.choose_file_widget')
 | 
			
		||||
  popups.dialog({
 | 
			
		||||
    autoOpen: false,
 | 
			
		||||
    modal: true,
 | 
			
		||||
    width: '90%',
 | 
			
		||||
    create: function (event) {
 | 
			
		||||
      const target = $(event.target)
 | 
			
		||||
      target.parent().css({
 | 
			
		||||
        position: 'fixed',
 | 
			
		||||
        top: '5%',
 | 
			
		||||
        bottom: '5%'
 | 
			
		||||
      })
 | 
			
		||||
      target.css('height', '300px')
 | 
			
		||||
      console.log(target)
 | 
			
		||||
    },
 | 
			
		||||
    buttons: [
 | 
			
		||||
      {
 | 
			
		||||
        text: 'Choose',
 | 
			
		||||
        click: function () {
 | 
			
		||||
          console.log($('#file_id'))
 | 
			
		||||
          $('input[name=' + $(this).attr('name') + ']').attr('value', $('#file_id').attr('value'))
 | 
			
		||||
          $(this).dialog('close')
 | 
			
		||||
        },
 | 
			
		||||
        buttons: [
 | 
			
		||||
        {
 | 
			
		||||
            text: "Choose",
 | 
			
		||||
            click: function() {
 | 
			
		||||
                console.log($("#file_id"));
 | 
			
		||||
                $("input[name="+$(this).attr('name')+"]").attr('value', $("#file_id").attr('value'));
 | 
			
		||||
                $( this ).dialog( "close" );
 | 
			
		||||
            },
 | 
			
		||||
            disabled: true,
 | 
			
		||||
        }
 | 
			
		||||
        ],
 | 
			
		||||
    });
 | 
			
		||||
    $( ".choose_file_button" ).button().on( "click", function() {
 | 
			
		||||
        popup = popups.filter("[name="+$(this).attr('name')+"]");
 | 
			
		||||
        console.log(popup);
 | 
			
		||||
        popup.html('<iframe src="/file/popup" width="100%" height="95%"></iframe><div id="file_id" value="null" />');
 | 
			
		||||
        popup.dialog({title: $(this).text()}).dialog( "open" );
 | 
			
		||||
    });
 | 
			
		||||
    $("#quick_notif li").click(function () {
 | 
			
		||||
        $(this).hide();
 | 
			
		||||
    })
 | 
			
		||||
});
 | 
			
		||||
        disabled: true
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  })
 | 
			
		||||
  $('.choose_file_button').button().on('click', function () {
 | 
			
		||||
    const popup = popups.filter('[name=' + $(this).attr('name') + ']')
 | 
			
		||||
    console.log(popup)
 | 
			
		||||
    popup.html('<iframe src="/file/popup" width="100%" height="95%"></iframe><div id="file_id" value="null" />')
 | 
			
		||||
    popup.dialog({ title: $(this).text() }).dialog('open')
 | 
			
		||||
  })
 | 
			
		||||
  $('#quick_notif li').click(function () {
 | 
			
		||||
    $(this).hide()
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
function createQuickNotif(msg) {
 | 
			
		||||
    const el = document.createElement('li')
 | 
			
		||||
    el.textContent = msg
 | 
			
		||||
    el.addEventListener('click', () => el.parentNode.removeChild(el))
 | 
			
		||||
    document.getElementById('quick_notif').appendChild(el)
 | 
			
		||||
function createQuickNotif (msg) { // eslint-disable-line no-unused-vars
 | 
			
		||||
  const el = document.createElement('li')
 | 
			
		||||
  el.textContent = msg
 | 
			
		||||
  el.addEventListener('click', () => el.parentNode.removeChild(el))
 | 
			
		||||
  document.getElementById('quick_notif').appendChild(el)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function deleteQuickNotifs() {
 | 
			
		||||
    const el = document.getElementById('quick_notif')
 | 
			
		||||
    while (el.firstChild) {
 | 
			
		||||
        el.removeChild(el.firstChild)
 | 
			
		||||
    }
 | 
			
		||||
function deleteQuickNotifs () { // eslint-disable-line no-unused-vars
 | 
			
		||||
  const el = document.getElementById('quick_notif')
 | 
			
		||||
  while (el.firstChild) {
 | 
			
		||||
    el.removeChild(el.firstChild)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function display_notif() {
 | 
			
		||||
    $('#header_notif').toggle().parent().toggleClass("white");
 | 
			
		||||
function display_notif () { // eslint-disable-line no-unused-vars
 | 
			
		||||
  $('#header_notif').toggle().parent().toggleClass('white')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// You can't get the csrf token from the template in a widget
 | 
			
		||||
@@ -62,22 +63,21 @@ function display_notif() {
 | 
			
		||||
// Sadly, getting the cookie is not possible with CSRF_COOKIE_HTTPONLY or CSRF_USE_SESSIONS is True
 | 
			
		||||
// So, the true workaround is to get the token from the dom
 | 
			
		||||
// https://docs.djangoproject.com/en/2.0/ref/csrf/#acquiring-the-token-if-csrf-use-sessions-is-true
 | 
			
		||||
function getCSRFToken() {
 | 
			
		||||
    return $("[name=csrfmiddlewaretoken]").val();
 | 
			
		||||
function getCSRFToken () { // eslint-disable-line no-unused-vars
 | 
			
		||||
  return $('[name=csrfmiddlewaretoken]').val()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const initialUrlParams = new URLSearchParams(window.location.search);
 | 
			
		||||
const initialUrlParams = new URLSearchParams(window.location.search) // eslint-disable-line no-unused-vars
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @readonly
 | 
			
		||||
 * @enum {number}
 | 
			
		||||
 */
 | 
			
		||||
const History = {
 | 
			
		||||
    NONE: 0,
 | 
			
		||||
    PUSH: 1,
 | 
			
		||||
    REPLACE: 2,
 | 
			
		||||
};
 | 
			
		||||
  NONE: 0,
 | 
			
		||||
  PUSH: 1,
 | 
			
		||||
  REPLACE: 2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param {string} key
 | 
			
		||||
@@ -85,27 +85,27 @@ const History = {
 | 
			
		||||
 * @param {History} action
 | 
			
		||||
 * @param {URL | null} url
 | 
			
		||||
 */
 | 
			
		||||
function update_query_string(key, value, action = History.REPLACE, url = null) {
 | 
			
		||||
    if (!url){
 | 
			
		||||
        url = new URL(window.location.href);
 | 
			
		||||
    }
 | 
			
		||||
    if (value === undefined || value === null || value === "") {
 | 
			
		||||
        // If the value is null, undefined or empty => delete it
 | 
			
		||||
        url.searchParams.delete(key)
 | 
			
		||||
    } else if (Array.isArray(value)) {
 | 
			
		||||
        url.searchParams.delete(key)
 | 
			
		||||
        value.forEach((v) => url.searchParams.append(key, v))
 | 
			
		||||
    } else {
 | 
			
		||||
        url.searchParams.set(key, value);
 | 
			
		||||
    }
 | 
			
		||||
function update_query_string (key, value, action = History.REPLACE, url = null) { // eslint-disable-line no-unused-vars
 | 
			
		||||
  if (!url) {
 | 
			
		||||
    url = new URL(window.location.href)
 | 
			
		||||
  }
 | 
			
		||||
  if (value === undefined || value === null || value === '') {
 | 
			
		||||
    // If the value is null, undefined or empty => delete it
 | 
			
		||||
    url.searchParams.delete(key)
 | 
			
		||||
  } else if (Array.isArray(value)) {
 | 
			
		||||
    url.searchParams.delete(key)
 | 
			
		||||
    value.forEach((v) => url.searchParams.append(key, v))
 | 
			
		||||
  } else {
 | 
			
		||||
    url.searchParams.set(key, value)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    if (action === History.PUSH) {
 | 
			
		||||
        history.pushState(null, "", url.toString());
 | 
			
		||||
    } else if (action === History.REPLACE) {
 | 
			
		||||
        history.replaceState(null, "", url.toString());
 | 
			
		||||
    }
 | 
			
		||||
  if (action === History.PUSH) {
 | 
			
		||||
    window.history.pushState(null, '', url.toString())
 | 
			
		||||
  } else if (action === History.REPLACE) {
 | 
			
		||||
    window.history.replaceState(null, '', url.toString())
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    return url;
 | 
			
		||||
  return url
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO : If one day a test workflow is made for JS in this project
 | 
			
		||||
@@ -116,27 +116,27 @@ function update_query_string(key, value, action = History.REPLACE, url = null) {
 | 
			
		||||
 * @param {string} url The paginated endpoint to fetch
 | 
			
		||||
 * @return {Promise<Object[]>}
 | 
			
		||||
 */
 | 
			
		||||
async function fetch_paginated(url) {
 | 
			
		||||
  const max_per_page = 199;
 | 
			
		||||
  const paginated_url = new URL(url, document.location.origin);
 | 
			
		||||
  paginated_url.searchParams.set("page_size", max_per_page.toString());
 | 
			
		||||
  paginated_url.searchParams.set("page", "1");
 | 
			
		||||
async function fetch_paginated (url) { // eslint-disable-line no-unused-vars
 | 
			
		||||
  const max_per_page = 199
 | 
			
		||||
  const paginated_url = new URL(url, document.location.origin)
 | 
			
		||||
  paginated_url.searchParams.set('page_size', max_per_page.toString())
 | 
			
		||||
  paginated_url.searchParams.set('page', '1')
 | 
			
		||||
 | 
			
		||||
  let first_page = (await ( await fetch(paginated_url)).json());
 | 
			
		||||
  let results = first_page.results;
 | 
			
		||||
  const first_page = (await (await fetch(paginated_url)).json())
 | 
			
		||||
  const results = first_page.results
 | 
			
		||||
 | 
			
		||||
  const nb_pictures = first_page.count
 | 
			
		||||
  const nb_pages = Math.ceil(nb_pictures / max_per_page);
 | 
			
		||||
  const nb_pages = Math.ceil(nb_pictures / max_per_page)
 | 
			
		||||
 | 
			
		||||
  if (nb_pages > 1) {
 | 
			
		||||
      let promises = [];
 | 
			
		||||
      for (let i = 2; i <= nb_pages; i++) {
 | 
			
		||||
        paginated_url.searchParams.set("page", i.toString());
 | 
			
		||||
        promises.push(
 | 
			
		||||
          fetch(paginated_url).then(res => res.json().then(json => json.results))
 | 
			
		||||
        );
 | 
			
		||||
      }
 | 
			
		||||
      results.push(...(await Promise.all(promises)).flat())
 | 
			
		||||
    const promises = []
 | 
			
		||||
    for (let i = 2; i <= nb_pages; i++) {
 | 
			
		||||
      paginated_url.searchParams.set('page', i.toString())
 | 
			
		||||
      promises.push(
 | 
			
		||||
        fetch(paginated_url).then(res => res.json().then(json => json.results))
 | 
			
		||||
      )
 | 
			
		||||
    }
 | 
			
		||||
    results.push(...(await Promise.all(promises)).flat())
 | 
			
		||||
  }
 | 
			
		||||
  return results;
 | 
			
		||||
  return results
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,4 @@
 | 
			
		||||
/* eslint-disable camelcase */
 | 
			
		||||
/**
 | 
			
		||||
 * Builders to use Select2 in our templates.
 | 
			
		||||
 *
 | 
			
		||||
@@ -157,15 +158,15 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @param {Select2Options} options
 | 
			
		||||
 */
 | 
			
		||||
function sithSelect2(options) {
 | 
			
		||||
  const elem = $(options.element);
 | 
			
		||||
function sithSelect2 (options) { // eslint-disable-line no-unused-vars
 | 
			
		||||
  const elem = $(options.element)
 | 
			
		||||
  return elem.select2({
 | 
			
		||||
    theme: elem[0].multiple ? "classic" : "default",
 | 
			
		||||
    theme: elem[0].multiple ? 'classic' : 'default',
 | 
			
		||||
    minimumInputLength: 2,
 | 
			
		||||
    templateResult: select_item_builder(options.picture_getter),
 | 
			
		||||
    ...options.data_source,
 | 
			
		||||
    ...(options.overrides || {}),
 | 
			
		||||
  });
 | 
			
		||||
    ...(options.overrides || {})
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -179,12 +180,12 @@ function sithSelect2(options) {
 | 
			
		||||
 * @param {Select2Object[]} source The array containing the data
 | 
			
		||||
 * @param {RemoteSourceOptions} options
 | 
			
		||||
 */
 | 
			
		||||
function local_data_source(source, options) {
 | 
			
		||||
  if (!!options.excluded) {
 | 
			
		||||
    const ids = options.excluded();
 | 
			
		||||
    return { data: source.filter((i) => !ids.includes(i.id)) };
 | 
			
		||||
function local_data_source (source, options) { // eslint-disable-line no-unused-vars
 | 
			
		||||
  if (options.excluded) {
 | 
			
		||||
    const ids = options.excluded()
 | 
			
		||||
    return { data: source.filter((i) => !ids.includes(i.id)) }
 | 
			
		||||
  }
 | 
			
		||||
  return { data: source };
 | 
			
		||||
  return { data: source }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -202,11 +203,11 @@ function local_data_source(source, options) {
 | 
			
		||||
 * @param {string} source The url of the endpoint
 | 
			
		||||
 * @param {RemoteSourceOptions} options
 | 
			
		||||
 */
 | 
			
		||||
function remote_data_source(source, options) {
 | 
			
		||||
  jQuery.ajaxSettings.traditional = true;
 | 
			
		||||
  let params = {
 | 
			
		||||
function remote_data_source (source, options) { // eslint-disable-line no-unused-vars
 | 
			
		||||
  jQuery.ajaxSettings.traditional = true
 | 
			
		||||
  const params = {
 | 
			
		||||
    url: source,
 | 
			
		||||
    dataType: "json",
 | 
			
		||||
    dataType: 'json',
 | 
			
		||||
    cache: true,
 | 
			
		||||
    delay: 250,
 | 
			
		||||
    data: function (params) {
 | 
			
		||||
@@ -214,25 +215,25 @@ function remote_data_source(source, options) {
 | 
			
		||||
        search: params.term,
 | 
			
		||||
        exclude: [
 | 
			
		||||
          ...(this.val() || []).map((i) => parseInt(i)),
 | 
			
		||||
          ...(options.excluded ? options.excluded() : []),
 | 
			
		||||
        ],
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
  };
 | 
			
		||||
  if (!!options.result_converter) {
 | 
			
		||||
    params["processResults"] = function (data) {
 | 
			
		||||
      return { results: data.results.map(options.result_converter) };
 | 
			
		||||
    };
 | 
			
		||||
          ...(options.excluded ? options.excluded() : [])
 | 
			
		||||
        ]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (!!options.overrides) {
 | 
			
		||||
    Object.assign(params, options.overrides);
 | 
			
		||||
  if (options.result_converter) {
 | 
			
		||||
    params.processResults = function (data) {
 | 
			
		||||
      return { results: data.results.map(options.result_converter) }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return { ajax: params };
 | 
			
		||||
  if (options.overrides) {
 | 
			
		||||
    Object.assign(params, options.overrides)
 | 
			
		||||
  }
 | 
			
		||||
  return { ajax: params }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function item_formatter(user) {
 | 
			
		||||
function item_formatter (user) { // eslint-disable-line no-unused-vars
 | 
			
		||||
  if (user.loading) {
 | 
			
		||||
    return user.text;
 | 
			
		||||
    return user.text
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -241,21 +242,21 @@ function item_formatter(user) {
 | 
			
		||||
 * @param {null | function(Object):string} picture_getter
 | 
			
		||||
 * @return {function(string): jQuery|HTMLElement}
 | 
			
		||||
 */
 | 
			
		||||
function select_item_builder(picture_getter) {
 | 
			
		||||
function select_item_builder (picture_getter) {
 | 
			
		||||
  return (item) => {
 | 
			
		||||
    const picture =
 | 
			
		||||
      typeof picture_getter === "function" ? picture_getter(item) : null;
 | 
			
		||||
      typeof picture_getter === 'function' ? picture_getter(item) : null
 | 
			
		||||
    const img_html = picture
 | 
			
		||||
      ? `<img 
 | 
			
		||||
          src="${picture_getter(item)}" 
 | 
			
		||||
          alt="${item.text}" 
 | 
			
		||||
          onerror="this.src = '/static/core/img/unknown.jpg'" 
 | 
			
		||||
        />`
 | 
			
		||||
      : "";
 | 
			
		||||
      : ''
 | 
			
		||||
 | 
			
		||||
    return $(`<div class="select-item">
 | 
			
		||||
        ${img_html}
 | 
			
		||||
         <span class="select-item-text">${item.text}</span>
 | 
			
		||||
         </div>`);
 | 
			
		||||
  };
 | 
			
		||||
         </div>`)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user