Description du programme
Application web de gestion et d'édition de timeway pour installations de traitement de surface (galvanoplastie, phosphatation, etc.).
Version : 2.1.0**0 — © 2026 VK Vision SA
Description
VKTimeway permet de définir, visualiser et éditer graphiquement les cycles de transfert d'un ou de plusieurs robots sur une ligne de traitement de surface. L'application gère :
Architecture
Application **PWA vanilla JS**JS sans framework, fonctionnant entièrement côté client.
App/
Modules JS
VKApp.js`js
#/`, #/machines`machines, …), rendu des pages, modales d'édition, simulateur
VKModels.js`js
Machine, Version, Position, Hoist, Sequence, Timeway, …
VKData.js`js
localStorage
VKDiagram.js`js
VKTimewayGen.js`js
VKReport.js`js
VKI18n.js`js
data-i18n`i18n)
Modèle de données
Machine Id, Name, Number, Client, Location, Remarks, CreatedAt, UpdatedAtToutes les données sont stockées en JSON dans `localStorage`localStorage sous les clés `tw_machines`tw_machines et `tw_versions`tw_versions.
Fonctionnalités principales
Gestion des machines
- Création / modification / suppression de machines
Export / Import des données
localStorage (toutes les machines et versions) au format JSONVersions
Positions, robots (hoists), séquences
- Édition en liste avec validation
Types montées / descentes
- 10 types nommés par version pour les montées et les descentes
liftType, lowerType)Génération automatique de timeway
- Calcul des temps de transfert avec profil de vitesse trapézoïdal :
t = (d/v + ta/2) × 1000`1000 mst = √(2 × ta × d / v) × 1000`1000 msv = vitesse en mm/s, ta = temps acc/déc en sÉditeur graphique de timeway
- Canvas interactif avec zoom et pan
ResizeObserver)localStorage :timeGrid)posGrid)upDown)emptyMove)hoistRange)showLink)collapseGroups) — les positions d'un même groupe sont affichées sur une seule ligneSimulateur de production
- Fenêtre plein écran de simulation multi-cycles
gf) si la position cible est occupéeti/tf sont arrondis à la secondegf != 0`0) et que tminf > cycleTime`cycleTime, le temps d'immersion effectif est calculé : (tf−ti) + floor(tminf / cycleTime) × cycleTime`tminf ne s'applique qu'aux positions avec groupe#N par slot de cycle)Rapports PDF
Générés côté client via **pdfmake**pdfmake (aucun serveur requis, fonctionne offline).
.pdf`pdf.Structure commune des rapports :
- Bandeau d'en-tête (machine, version, titre du rapport, client/localisation)
Internationalisation
Quatre langues supportées : **Français**Français (défaut), **English**English, **Deutsch**Deutsch, **中文**中文 (chinois simplifié).
La langue est sélectionnable depuis la **page d'accueil**accueil et persistée dans `localStorage`localStorage. Le changement est instantané sans rechargement de page.
Utilisation dans le HTML : `data-i18n="clé" sur n'importe quel élément.`
VKI18n.t('clé')`.Installation / Démarrage
Développement
Aucune dépendance serveur. L'application fonctionne directement depuis un navigateur.
App/` via un serveur HTTP local (requis pour le Service Worker) :npx serve App/http://localhost:8080`8080 dans un navigateur moderne**Note :
**L'ouverture directe du fichier`index.(html`html`file://) ne fonctionnera pas avec le Service Worker. Un serveur HTTP est nécessaire.`
Build de distribution (version minifiée)
Un script de build génère une version optimisée dans `Dist/ :`
npm install # une seule foisLe build effectue :
- Concaténation + minification des 7 fichiers JS applicatifs →
`app.bundle.min.(~54% de réduction)js`js
app.css`css → app.min.css`css (~37% de réduction)index.html`html pour référencer les fichiers minifiéssw.js`js avec un nom de cache dédié (vktimeway-dist-v*`)**Important :
**Incrémenter`SW_CACHE_VERSION`SW_CACHE_VERSIONdans`build.à chaque nouveau déploiement pour forcer la mise à jour du cache chez les utilisateurs.js`js
Pour servir la version de distribution :
npx serve Dist/Dépendances front-end (embarquées)
Toutes les dépendances sont incluses dans `App/assets/ — aucune connexion CDN requise.`
Dépendances de build (développement uniquement)
terser
clean-css`css
fs-extra`extra
Structure des routes
#/`
#/machines`machines
#/machines/create`create
#/machines/:id`id
#/machines/:id/version/:vid`vid
Versioning de l'application
La version est définie par la constante `VK_VERSION`VK_VERSION en tête de `VKApp. :js`js
var VK_VERSION = 'ver. 2.1.0';Elle s'affiche automatiquement dans le footer de l'application et est intégrée dans les métadonnées et les noms de fichiers des rapports PDF générés.