Commit 7f56ed28 authored by Daniel Caillibaud's avatar Daniel Caillibaud

ugrade eslint + bricoles

parent fc4c2751
......@@ -19,7 +19,7 @@ function loadRessources (done) {
.done((err) => done(err))
}
loadRessources.help = () => console.log('Charge des ressources pour l\'environnement de dev / test sesalab')
loadRessources.help = () => console.log('Charge des ressources pour lenvironnement de dev / test sesalab')
module.exports = {
loadRessources
......
......@@ -109,7 +109,7 @@
"postcss-loader": "^3.0.0",
"pre-push": "^0.1.1",
"request": "^2.83.0",
"sass-loader": "^7.1.0",
"sass-loader": "^8.0.0",
"sinon": "^7.4.1",
"sinon-chai": "^3.3.0",
"style-loader": "^1.0.0",
......@@ -183,6 +183,19 @@
"$": true,
"mails": true
}
}, {
"files": "sesalab-commun/checkBrowser.js",
"env": {
"browser": true
},
"parserOptions": {
"ecmaVersion": 5,
"sourceType": "script"
},
"rules": {
"no-var": "off",
"prefer-const": "off"
}
}
]
},
......
This diff is collapsed.
......@@ -140,7 +140,7 @@ module.exports = function ($scope, $http) {
}
function h (obj) {
let output = ['<div class="object" onclick="jQuery(this).toggleClass(\'visible\')">']
let output = ['<div class="object" onclick="jQuery(this).toggleClass(’visible’)">']
_.each(obj, (value, key) => {
output.push('<div class="property">')
output.push('<span class="name">')
......
{
"globals": {
"createError": true
}
}
\ No newline at end of file
const flow = require('an-flow')
const { hasProp } = require('sesajstools')
const createError = require('../tools/createError')
const normalizer = require('./normalizer')
function uniqueNomBuilder () {
......
......@@ -5,7 +5,9 @@ const flow = require('an-flow')
const { difference } = require('lodash')
const { guessNiveau } = require('sesatheque-client/dist/server/config')
const { hasProp } = require('sesajstools')
const normalizer = require('./normalizer')
const createError = require('../tools/createError')
/**
* @service $groupe
......
......@@ -5,6 +5,7 @@ const iconv = require('iconv-lite')
const jschardet = require('jschardet')
const JSZip = require('jszip')
const xml2js = require('xml2js')
const createError = require('../tools/createError')
const ONDE_CSV_SEPARATOR = ';' // pas forcément celui de constants
......
......@@ -337,10 +337,10 @@ app.service('$import', function (Groupe, Utilisateur, $structure, $utilisateur)
// Message à afficher
let message
if (isEleveUpdated) {
message = `L'élève ${eleveToImport.prenom} ${eleveToImport.nom} ( ${classe.nom} ) `
if (isEleveRestored) message += 'était dans la corbeille et '
message += 'a été mis à jour'
if (aChangeDeClasse) message += ' et a changé de classe'
message = `L'élève ${eleveToImport.prenom} ${eleveToImport.nom} (${classe.nom})`
if (isEleveRestored) message += ' était dans la corbeille et'
message += ' a été mis à jour'
if (aChangeDeClasse) message += ' (il a changé de classe)'
message += '.'
}
......
'use strict'
const path = require('path')
const _ = require('lodash')
const formidable = require('formidable')
const anlog = require('an-log')('sesalab-api')
const log = require('sesajstools/utils/log')
const httpErrors = require('http-errors')
const { hasProp } = require('sesajstools')
/**
* Retourne la clé de cache pour le throttle dans ce contexte
* @private
* @param {Context} context
* @returns {string}
*/
function getThrottleKey (context) {
return 'throttle-' + ['ip', 'method', 'path'].map((field) => context.request[field]).join('-')
}
/*
* @preserve This file is part of "sesalab".
* Copyright 2009-2014, arNuméral
......@@ -40,13 +20,29 @@ function getThrottleKey (context) {
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
'use strict'
const path = require('path')
const _ = require('lodash')
const formidable = require('formidable')
const anlog = require('an-log')('sesalab-api')
const log = require('sesajstools/utils/log')
const { hasProp } = require('sesajstools')
/**
* Retourne la clé de cache pour le throttle dans ce contexte
* @private
* @param {Context} context
* @returns {string}
*/
function getThrottleKey (context) {
return 'throttle-' + ['ip', 'method', 'path'].map((field) => context.request[field]).join('-')
}
app.config(function ($cache, $settings, $crypto, $session) {
const isProd = $settings.get('application.isProd', false)
global.createError = (status, message, data) => {
return httpErrors(status, message, { properties: data })
}
/**
* On ajoute des fonctions utilitaires au contexte lassi
* @external Context
......@@ -267,7 +263,7 @@ app.config(function ($cache, $settings, $crypto, $session) {
// Masque les erreurs internes
if (!context.error.status || context.error.status >= 500) {
errorMessage = 'Une erreur interne s\'est produite merci de réessayer plus tard'
errorMessage = 'Une erreur interne sest produite merci de réessayer plus tard'
if (data) delete data.message
}
......
......@@ -18,7 +18,7 @@ app.entity('Message', function () {
type: 'object',
properties: {
oid: { type: 'string' },
author: { type: 'string', description: 'Login de l\'auteur' },
author: { type: 'string', description: 'Login de lauteur' },
title: { type: 'string', minLength: 1 },
content: { type: 'string', minLength: 1 },
date: { instanceof: 'Date' },
......
......@@ -104,7 +104,7 @@ app.service('$resultat', function (Resultat, Sequence, $settings, $utilisateur)
resultat.$reachLast = lastRessourceRid === resultat.ressource.rid
resultat.$sousSequenceName = ssSeqByRid[resultat.ressource.rid]
? ssSeqByRid[resultat.ressource.rid].nom
: 'La ressource n\'est plus dans la séquence'
: 'La ressource nest plus dans la séquence'
})
}
......
......@@ -294,7 +294,7 @@ app.controller(function (Sequence, Utilisateur, $resultat, $sequence, $session)
if (!sequence.owner) {
sequence.owner = utilisateur.oid
} else if (!$sequence.hasWriteAccess(utilisateur, sequence)) {
return context.accessDenied('Vous n\'avez pas les droits d\'édition sur cette séquence')
return context.accessDenied('Vous n’avez pas les droits d’édition sur cette séquence')
}
Sequence.create(sequence).store(this)
......
const httpErrors = require('http-errors')
const createError = (status, message, data) => httpErrors(status, message, { properties: data })
module.exports = createError
......@@ -7,6 +7,7 @@ const _ = require('lodash')
const moment = require('moment-timezone')
const querystring = require('querystring')
const createError = require('../tools/createError')
const { CSV_SEPARATOR, TYPE_ELEVE, TYPE_FORMATEUR } = require('sesalab-commun/constants')
const { formatCsvCell } = require('sesalab-commun/formatString')
const isEmail = require('sesalab-commun/isEmail')
......
const flow = require('an-flow')
const _ = require('lodash')
const constants = require('sesalab-commun/constants.js')
const createError = require('../tools/createError')
const isEmail = require('sesalab-commun/isEmail')
let Groupe, $utilisateur
......
......@@ -82,7 +82,7 @@ app.service('$utilisateur', function (Groupe, Utilisateur, $crypto, $groupe, $ma
* @param {function} cb Callback
*/
function purgeEleve (eleve, cb) {
if (eleve.type !== constants.TYPE_ELEVE) return cb(new Error('L\'utilisateur donné n\'est pas un élève'))
if (eleve.type !== constants.TYPE_ELEVE) return cb(new Error('L’utilisateur donné n’est pas un élève'))
const $resultat = lassi.service('$resultat')
const $seance = lassi.service('$seance')
......
......@@ -4,6 +4,8 @@
const _ = require('lodash')
// const {TYPE_ELEVE} = require('sesalab-commun/constants')
const createError = require('../tools/createError')
/**
* @Service $validator
*
......
// code ES5, si on veut passer ça avant les polyfill de babel & core-js
/* eslint-env browser */
/* eslint-disable no-var */
// cf eslintConfig override pour ce fichier (faut utiliser le parser esprima
// car le parser par défaut d'eslint veut pas de require en es5, il sort :
// Parsing error: sourceType 'module' is not supported when ecmaVersion < 2015. Consider adding `{ ecmaVersion: 2015 }` to the parser options
function checkBrowser () {
function redirect () {
window.location = '/navigateurObsolete.html'
......
......@@ -5,5 +5,5 @@
// https://babeljs.io/blog/2019/03/19/7.4.0
import 'core-js/stable'
// lui ne serait nécessaire que si on utilisait des générateurs
// import 'regenerator-runtime/runtime'
// lui est nécessaire pour les générateurs (on en a pas) mais aussi pour async/await
import 'regenerator-runtime/runtime'
// checkBrowser & bugsnag seront ajouté avant tout ça par webpackConfigBuilder.js
// checkBrowser, bugsnag et polyfill seront ajouté avant tout ça par webpackConfigBuilder.js
const angular = require('angular')
require('angular-sanitize')
require('@uirouter/angularjs')
......
......@@ -58,7 +58,7 @@ app.service('$app', function ($api, $errors, $session) {
isReady = true
// on peut lancer la pile de callback
readyCallbacks.forEach((cb) => cb())
}).catch($errors.handle('Une erreur s\'est produite pendant l\'initialisation de l\'interface\''))
}).catch($errors.handle('Une erreur s’est produite pendant l’initialisation de l’interface\''))
}
/**
......@@ -71,7 +71,7 @@ app.service('$app', function ($api, $errors, $session) {
.then((response) => {
cb(null, response.settings)
})
.catch($errors.handle('Une erreur s\'est produite pendant la récupération des paramètres'))
.catch($errors.handle('Une erreur sest produite pendant la récupération des paramètres'))
}
return {
......
......@@ -20,7 +20,7 @@ app.service('$eleve', function ($api, $errors, $toaster) {
const filtersParam = filters && filters.length ? '?fields=' + filters.join(',') : ''
$api.get(`eleve/${id}/classe${filtersParam}`)
.then(response => callback(null, response))
.catch($errors.handle('Une erreur s\'est produite durant la récupération de la classe de l\'élève', callback))
.catch($errors.handle('Une erreur s’est produite durant la récupération de la classe de l’élève', callback))
}
/**
......@@ -33,7 +33,7 @@ app.service('$eleve', function ($api, $errors, $toaster) {
$api
.post('eleve', utilisateur)
.then(response => callback(null, response))
.catch($errors.handle('Une erreur s\'est produite durant la création du compte', callback))
.catch($errors.handle('Une erreur sest produite durant la création du compte', callback))
}
/**
......@@ -51,7 +51,7 @@ app.service('$eleve', function ($api, $errors, $toaster) {
callback(null, { utilisateurs, readonlyToken: response.readonlyToken })
})
.catch($errors.handle('Une erreur s\'est produite pendant la récupération de l\'utilisateur connecté', callback))
.catch($errors.handle('Une erreur s’est produite pendant la récupération de l’utilisateur connecté', callback))
}
/**
......@@ -64,7 +64,7 @@ app.service('$eleve', function ($api, $errors, $toaster) {
$api
.post('eleve/relogin', { eleve: utilisateur.oid })
.then(response => callback(null, response))
.catch($errors.handle('Une erreur s\'est produite durant la récupération de l\'utilisateur', callback))
.catch($errors.handle('Une erreur s’est produite durant la récupération de l’utilisateur', callback))
}
/**
......@@ -91,7 +91,7 @@ app.service('$eleve', function ($api, $errors, $toaster) {
callback(null, response)
})
.catch($errors.handle('Une erreur s\'est produite durant la récupération des résultats', callback))
.catch($errors.handle('Une erreur sest produite durant la récupération des résultats', callback))
}
/**
......@@ -119,7 +119,7 @@ app.service('$eleve', function ($api, $errors, $toaster) {
// j'ai raté un truc où on passe jamais là car on a jamais de error.status ?
retry()
} else {
$errors.handle('Une erreur s\'est produite, votre résultat n\'est pas sauvegardé', callback)(error)
$errors.handle('Une erreur s’est produite, votre résultat n’est pas sauvegardé', callback)(error)
}
})
}
......@@ -144,7 +144,7 @@ app.service('$eleve', function ($api, $errors, $toaster) {
$api
.put('eleve/' + utilisateur.oid, utilisateur)
.then(response => callback(null, response.utilisateur))
.catch($errors.handle('Une erreur s\'est produite lors de la mise à jour du compte de l\'élève', callback))
.catch($errors.handle('Une erreur s’est produite lors de la mise à jour du compte de l’élève', callback))
}
return {
......
......@@ -33,7 +33,7 @@ app.service('$seance', function ($api, $errors, $exercice, $serie, $session, $ro
// Après avoir chargé l'historique on vérifie si la seance est terminée
this.checkIfCompleted()
})
.catch($errors.handle('Une erreur s\'est produite pendant le chargement de l\'historique de cette séquence'))
.catch($errors.handle('Une erreur s’est produite pendant le chargement de l’historique de cette séquence'))
}
Seance.prototype.is = function (seance) {
......@@ -173,7 +173,7 @@ app.service('$seance', function ($api, $errors, $exercice, $serie, $session, $ro
if (!response.sequence || !response.sequence.oid) throw Error('Réponse invalide')
successCb(response.sequence)
})
.catch($errors.handle('Une erreur s\'est produite lors de la récupération de la séquence'))
.catch($errors.handle('Une erreur sest produite lors de la récupération de la séquence'))
}
/**
......@@ -247,7 +247,7 @@ app.service('$seance', function ($api, $errors, $exercice, $serie, $session, $ro
$api
.get(`resultat/sequence/${sequenceOid}`)
.then((response) => processResultat(response, callback))
.catch($errors.handle('Une erreur s\'est produite durant la récupération des résultats', callback))
.catch($errors.handle('Une erreur sest produite durant la récupération des résultats', callback))
}
/**
......@@ -259,7 +259,7 @@ app.service('$seance', function ($api, $errors, $exercice, $serie, $session, $ro
$api
.get('resultat/autonomie')
.then((response) => processResultat(response, callback))
.catch($errors.handle('Une erreur s\'est produite durant la récupération des résultats', callback))
.catch($errors.handle('Une erreur sest produite durant la récupération des résultats', callback))
}
return {
......
......@@ -17,7 +17,7 @@ app.service('$structure', function ($api, $errors, $toaster) {
$api
.get('structure/' + id)
.then(response => callback(null, response.structure))
.catch($errors.handle('Une erreur s\'est produite pendant la récupération de la structure', callback))
.catch($errors.handle('Une erreur sest produite pendant la récupération de la structure', callback))
}
/**
......@@ -35,7 +35,7 @@ app.service('$structure', function ($api, $errors, $toaster) {
if (!response.structures || !response.structures.length) $toaster.pop('Aucun résultat', 'error', 10000)
callback(null, response.structures)
})
.catch($errors.handle('Une erreur s\'est produite pendant la récupération de la structure', callback))
.catch($errors.handle('Une erreur sest produite pendant la récupération de la structure', callback))
}
return {
......
......@@ -78,7 +78,7 @@ module.exports = function ($app, $eleve, $session, $scope, $state, $window, $pop
$window.location.href = '/front'
},
buttons: [{
caption: 'Fermer la session et retourner à l\'accueil',
caption: 'Fermer la session et retourner à laccueil',
callback: function () {
$session.disconnect()
}
......
......@@ -15,7 +15,7 @@ module.exports = function ($api, $app, $eleve, $scope, $popup, $structure, $toas
function createNewAccount () {
// Il est impossible de créer un compte sur une structure ne possédant pas encore de classe
if (!$scope.structureHasClasses) {
$toaster.pop('Cette structure n\'a pas encore de classe, vous ne pouvez pas y créer de compte', 'info')
$toaster.pop('Cette structure na pas encore de classe, vous ne pouvez pas y créer de compte', 'info')
return
}
......@@ -49,7 +49,7 @@ module.exports = function ($api, $app, $eleve, $scope, $popup, $structure, $toas
height: 175,
buttons: [
{
caption: 'Retourner à l\'accueil',
caption: 'Retourner à laccueil',
callback: function () {
window.location.href = '/'
}
......@@ -172,7 +172,7 @@ module.exports = function ($api, $app, $eleve, $scope, $popup, $structure, $toas
$scope.structureNom = structure.nom
$scope.structures = []
})
.catch($errors.handle('Une erreur s\'est produite durant le changement de structure'))
.catch($errors.handle('Une erreur sest produite durant le changement de structure'))
}
$scope.errors = function (field, index) {
......
......@@ -65,7 +65,7 @@ app.directive('ressourceTree', function ($rootScope, $timeout, $errors) {
error = new Error('app.sesatheque.getEnfants response vide')
}
if (error) {
$errors.handle('Une erreur s\'est produite lors de la récupération d\'une ressource')(error)
$errors.handle('Une erreur s’est produite lors de la récupération d’une ressource')(error)
return
}
......
......@@ -153,7 +153,7 @@ module.exports = function ($api, $eleve, $errors, $scope, $session, $rootScope,
else exercice.nbEssais = 1
$rootScope.$broadcast('exercice::started', exercice)
})
.catch($errors.handle('Une erreur s\'est produite pendant le chargement de la séance'))
.catch($errors.handle('Une erreur sest produite pendant le chargement de la séance'))
} else {
// autonomie, pas d'init de séance
$rootScope.$broadcast('exercice::started', exercice)
......
......@@ -7,7 +7,7 @@ const lines = content.toString().split(/\n/)
let skip = 1
for (let i = 0, ii = lines.length; i < ii; i++) {
const line = lines[i]
if (skip === 1 && line.indexOf('qx.$$packageData[\'0\']') === 0) {
if (skip === 1 && line.indexOf("qx.$$packageData['0']") === 0) {
skip = false
continue
}
......
......@@ -143,7 +143,7 @@ qx.Class.define('sesalab.Application', {
window.top.location = '/'
}
})
.fail(app.errorHandler('Une erreur s\'est produite durant le chargement de l\'utilisateur'))
.fail(app.errorHandler('Une erreur s’est produite durant le chargement de l’utilisateur'))
},
initLanguage: function () {
......@@ -296,7 +296,7 @@ qx.Class.define('sesalab.Application', {
})
.seq(function () {
app.utilisateur.loadUserRessources(
app.errorHandler('Une erreur est survenue pendant le chargement de l\'arbre de ressources', this)
app.errorHandler('Une erreur est survenue pendant le chargement de larbre de ressources', this)
)
})
.done((err, selectedRessourceRids) => {
......
......@@ -199,7 +199,7 @@ qx.Class.define('sesalab.behaviors.Sequence',
defaults: false,
widget: {
label: 'Elève unique',
help: 'Les séquences à élève unique permettent de restreindre l\'accès des exercices à un seul élève y compris lors d\'une connexion multiple.'
help: 'Les séquences à élève unique permettent de restreindre l’accès des exercices à un seul élève y compris lors d’une connexion multiple.'
}
},
......
......@@ -104,7 +104,7 @@ Si votre système / navigateur est configuré pour gérer les liens de type <em>
self.showSentMessage()
})
.catch((err) => {
app.errorHandler('Une erreur est survenue durant l\'envoi du message')(err)
app.errorHandler('Une erreur est survenue durant lenvoi du message')(err)
this.setEnabledAll(true)
})
},
......
......@@ -51,7 +51,7 @@ qx.Class.define('sesalab.dialogs.Preferences', {
// @todo virer cet espacement avec un label vide pour mettre padding ou margin au container suivant ou précédent
this.add(new qx.ui.basic.Label(''))
const sizeContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox(2))
sizeContainer.add(new qx.ui.basic.Label('Taille des éléments à l\'écran'))
sizeContainer.add(new qx.ui.basic.Label('Taille des éléments à lécran'))
const sizes = { smallFont: 'Petite', default: 'Moyenne', bigFont: 'Grande' }
this.selectBox = new qx.ui.form.SelectBox()
......@@ -74,7 +74,7 @@ qx.Class.define('sesalab.dialogs.Preferences', {
if (!this._profilName) {
button.setVisibility('excluded')
label.setValue('Vous devez tout d\'abord indiquer votre profil')
label.setValue('Vous devez tout dabord indiquer votre profil')
this.list.setVisibility('excluded')
}
......
......@@ -5,7 +5,7 @@ qx.Class.define('sesalab.dialogs.ProfilSelection', {
construct: function () {
this.base(arguments, 'Profil')
const label = new qx.ui.basic.Label('Vous devez tout d\'abord indiquer votre profil')
const label = new qx.ui.basic.Label('Vous devez tout dabord indiquer votre profil')
label.setFont('bold')
this.add(label)
const comboBox = new qx.ui.form.ComboBox()
......
......@@ -235,7 +235,7 @@ qx.Class.define('sesalab.pages.Corbeille', {
callback()
}
})
.catch(app.errorHandler('Une erreur s\'est produite durant la récupération des éléments en corbeille'))
.catch(app.errorHandler('Une erreur sest produite durant la récupération des éléments en corbeille'))
},
onSelectionChanged: function (selection) {
const b = sesalab.behaviors
......@@ -403,7 +403,7 @@ qx.Class.define('sesalab.pages.Corbeille', {
app.errorHandler('Une erreur est survenue pendant la sauvegarde du profil')
)
})
.catch(app.errorHandler('Une erreur s\'est produite durant la restauration de l\'élément'))
.catch(app.errorHandler('Une erreur s’est produite durant la restauration de l’élément'))
},
onRestoreRessource: function () {
// TODO Enlever le soft delete de la ressource sur la sésathèque, et la faire réapparaître dans le menu "Mes ressources"
......@@ -433,7 +433,7 @@ qx.Class.define('sesalab.pages.Corbeille', {
app.mesSequences.tree.refresh()
self.buildTree()
})
.catch(app.errorHandler('Une erreur s\'est produite durant la restauration de la séquence'))
.catch(app.errorHandler('Une erreur sest produite durant la restauration de la séquence'))
}
}
})
......@@ -551,7 +551,7 @@ qx.Class.define('sesalab.pages.GestionEleves', {
this()
})
.catch(function (err) {
app.toaster.toast('Une erreur s\'est produite durant le changement de classe')
app.toaster.toast('Une erreur sest produite durant le changement de classe')
console.error('Erreur durant le changement de classe', err)
})
},
......
......@@ -14,7 +14,7 @@ qx.Class.define('sesalab.pages.ImportOfficiel', {
// Choix du message descriptif
let label = '<p>'
if (type === 'onde') {
label += 'L’import des comptes élèves à partir de ONDE nécessite de disposer du fichier CSVExtraction.csv produit par ONDE à partir d\'une base à jour. Vous pouvez vous le procurer sur une clé USB ou vous le faire envoyer par mél par le directeur / la directrice de l\'école si vous n\'y avez pas accès vous-même.<br/><br/>'
label += 'L’import des comptes élèves à partir de ONDE nécessite de disposer du fichier CSVExtraction.csv produit par ONDE à partir d’une base à jour. Vous pouvez vous le procurer sur une clé USB ou vous le faire envoyer par mél par le directeur / la directrice de l’école si vous n’y avez pas accès vous-même.<br/><br/>'
}
if (type === 'siecle') {
label += `L’import des comptes élèves à partir de SIECLE nécessite de disposer du fichier ElevesSansAdresses.xml ou sa version compressée ElevesSansAdresses.zip.<br/>
......
......@@ -9,7 +9,7 @@ qx.Class.define('sesalab.pages.ImportSynthese', {
include: [sesalab.widgets.Helper],
construct: function (stats) {
// stats est un objet de type import~Stats, cf sesalab-api/source/import/service.js
this.base(arguments, 'Synthèse de l\'import', 'view_details')
this.base(arguments, 'Synthèse de limport', 'view_details')
const hasErrors = Array.isArray(stats.errors) && stats.errors.length
const hasEleves = Array.isArray(stats.eleves) && stats.eleves.length
......
......@@ -377,7 +377,7 @@ qx.Class.define('sesalab.pages.Sequence', {
const sequence = this.serializeSequence()
app.sesalab.put('sequence', sequence, {}, (error, result) => {
if (error && error.field) return this.propertyEditor.error(error)
if (error && error.message) return app.errorHandler('Une erreur interne s\'est produite durant la sauvegarde de la séquence')(error)
if (error && error.message) return app.errorHandler('Une erreur interne sest produite durant la sauvegarde de la séquence')(error)
this.model.data.oid = result.sequence.oid
if (this.sequence && this.sequence.$behavior) this.sequence.$behavior.refreshIcon()
if (this.originalSequence && this.originalSequence.$behavior) this.originalSequence.$behavior.refreshIcon()
......@@ -589,7 +589,7 @@ qx.Class.define('sesalab.pages.Sequence', {
onSerieAsNewSequence: function () {
const node = this.tree.getSelectedNode()
if (!node || !node.instanceOf(sesalab.behaviors.Serie)) {
app.toaster.toast('L\'élément selectionné n\'est pas une série valide')
app.toaster.toast('L’élément selectionné n’est pas une série valide')
return
}
......
......@@ -140,7 +140,7 @@ qx.Class.define('sesalab.panels.Classes', {
onExportBilans: function () {
const classeNode = this.tree.getSelectedNode()
if (!classeNode) {
console.error(new Error('Impossible d\'exporter le bilan de l\'élément sélectionné (data null)'))
console.error(new Error('Impossible d’exporter le bilan de l’élément sélectionné (data null)'))
return
}
......@@ -150,7 +150,7 @@ qx.Class.define('sesalab.panels.Classes', {
onShowStudentBilan: function () {
const node = this.tree.getSelectedNode()
if (!node || !node.data) {
console.error(new Error('Impossible d\'afficher le bilan de l\'élément sélectionné (data null)'))
console.error(new Error('Impossible d’afficher le bilan de l’élément sélectionné (data null)'))
return
}
......
......@@ -254,7 +254,7 @@ qx.Class.define('sesalab.panels.MesGroupes', {
this.tree.openNode(this.needStudentNode(node, child))
})
node.data.utilisateurs = node.data.utilisateurs.concat(children)
app.sesalab.put('groupe', node.data, {}, app.errorHandler('Une erreur s\'est produite lors de la mise à jour du groupe'))
app.sesalab.put('groupe', node.data, {}, app.errorHandler('Une erreur sest produite lors de la mise à jour du groupe'))
this.tree.refresh()
})
},
......@@ -284,7 +284,7 @@ qx.Class.define('sesalab.panels.MesGroupes', {
}
app.sesalab.put('groupe', group, {},
app.errorHandler('Une erreur s\'est produite lors de la mise à jour du groupe', (error, response) => {
app.errorHandler('Une erreur sest produite lors de la mise à jour du groupe', (error, response) => {
if (error) {
app.toaster.toast(error.message, 'error')
return
......@@ -306,7 +306,7 @@ qx.Class.define('sesalab.panels.MesGroupes', {
onExportBilans: function () {
const groupNode = this.tree.getSelectedNode()
if (!groupNode) return app.toaster.toast('Impossible d\'exporter l\'élément séléctionné')
if (!groupNode) return app.toaster.toast('Impossible d’exporter l’élément séléctionné')
app.exportGroupBilans(groupNode)
},
......@@ -385,7 +385,7 @@ qx.Class.define('sesalab.panels.MesGroupes', {
}
app.sesalab.put('groupe', group, {},
app.errorHandler('Une erreur s\'est produite lors de l\'ajout du groupe', (error, response) => {
app.errorHandler('Une erreur s’est produite lors de l’ajout du groupe', (error, response) => {
if (error) {
app.toaster.toast(error.message, 'error')
return
......@@ -471,7 +471,7 @@ qx.Class.define('sesalab.panels.MesGroupes', {
self.store()
this()
})
.catch(app.errorHandler('Une erreur s\'est produite durant la suppression d\'un élément'))