Le calculateur javascript sciwebjs permet d'effectuer des calculs scientifiques sur un client HTML (compatible HTML5). Il est consitué d'un ensemble de fonctions et de classes javascript pour le calcul scientifique, le tracé 2D, le tracé 3D, traitement d'image et de vidéo, etc. Le code javascript figure dans des boîtes de saisie que l'utilisateur peut modifier et exécuter lui-même. Le code javascript contenu dans une boîte de saisie est appelé bloc de calcul.
Le premier exemple ci-dessous est une boîte de saisi contenant quelques lignes simples de javascript :
Dans la présente page, le code est déjà exécuté. L'utilisateur peut l'exécuter à nouveau, après éventuelle modification, en cliquant sur le bouton Exécuter. La fonction disp est propre à sciwebjs; elle permet d'afficher une information textuelle dans la page HTML, juste après la boîte de saisie. Le bouton Aide permet d'obtenir de l'aide sur une fonction de sciwebjs sélectionnée dans la boîte de saisie. Le bouton nouveau permet d'ouvrir une nouvelle boîte de saisie entre celle-ci et la suivante.
Voyons une seconde boîte de saisie effectuant le tracé de la fonction définie précédemment :
Le code javascript comporte plusieurs fonctions de sciwebjs : fig, plotframe, plotgrid, plotlabels et fplot2d. Les fonctions usuelles de sciwebjs comme celles-ci sont définis dans l'espace de nom global de javascript. Il faut faire attention à ne pas redéfinir ces symboles. On remarque que les arguments des fonctions sont transmis sous forme de propriétés d'objets javascript. La figure est générée sous forme d'un Canvas HTML5.
Ce calculateur fonctionne entièrement sur le client. Aucune donnée n'est transmise au serveur. En conséquence, les modifications apportées par l'utilisateur sont perdues lorsque la page est rechargée.
Lorsque les blocs de calcul sont automatiquement exécutés au chargement de la page, il sont exécutés dans l'ordre. Dans certains, les blocs de calcul devront être exécutés sur demande de l'utilisateur (bouton Exécuter) car ils font appel à des fonctions asynchrones.