feat(planning): grille hebdomadaire complète avec API et filtres

- Connexion API via proxy Angular (résolution CORS, base path /api)
- Import CSS ng-zorro global pour les modales et composants
- Filtres Camion/Show câblés sur l'affichage de la grille
- Camions affichés via TrucksService (linkés au show du même créneau)
- Panneau de détails : spectacles + camions du jour sélectionné
- Modale de création de spectacle stylisée avec fond et centrage
- Positionnement précis des events à la minute dans leur créneau
- Auto-scroll vers l'heure courante au chargement
- Ligne "maintenant" sur la colonne du jour actuel
- Régénération des services OpenAPI (nouveaux noms de types)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-27 20:36:03 +02:00
parent 150b97cd2e
commit 654b297e2e
3131 changed files with 149304 additions and 104334 deletions
+9 -6
View File
@@ -1,8 +1,8 @@
// Originally normalize-package-data
const { URL } = require('node:url')
const url = require('node:url')
const hostedGitInfo = require('hosted-git-info')
const validateLicense = require('./license.js')
const validateLicense = require('validate-npm-package-license')
const typos = {
dependancies: 'dependencies',
@@ -123,7 +123,8 @@ function normalizeData (data, changes) {
if (typeof data.bugs === 'string') {
if (isEmail(data.bugs)) {
data.bugs = { email: data.bugs }
} else if (URL.canParse(data.bugs)) {
/* eslint-disable-next-line node/no-deprecated-api */
} else if (url.parse(data.bugs).protocol) {
data.bugs = { url: data.bugs }
} else {
changes?.push(`Bug string field must be url, email, or {email,url}`)
@@ -139,7 +140,8 @@ function normalizeData (data, changes) {
const oldBugs = data.bugs
data.bugs = {}
if (oldBugs.url) {
if (URL.canParse(oldBugs.url)) {
/* eslint-disable-next-line node/no-deprecated-api */
if (typeof (oldBugs.url) === 'string' && url.parse(oldBugs.url).protocol) {
data.bugs.url = oldBugs.url
} else {
changes?.push('bugs.url field must be a string url. Deleted.')
@@ -214,7 +216,8 @@ function normalizeData (data, changes) {
changes?.push('homepage field must be a string url. Deleted.')
delete data.homepage
} else {
if (!URL.canParse(data.homepage)) {
/* eslint-disable-next-line node/no-deprecated-api */
if (!url.parse(data.homepage).protocol) {
data.homepage = 'http://' + data.homepage
}
}
@@ -230,7 +233,7 @@ function normalizeData (data, changes) {
changes?.push('No license field.')
} else if (typeof (license) !== 'string' || license.length < 1 || license.trim() === '') {
changes?.push('license should be a valid SPDX license expression')
} else if (!validateLicense(license)) {
} else if (!validateLicense(license).validForNewPackages) {
changes?.push('license should be a valid SPDX license expression')
}
// fixPeople