diff --git a/resources/library/applications/GraphMe.wgt/Grapheur.html b/resources/library/applications/GraphMe.wgt/Grapheur.html deleted file mode 100644 index 23232fff..00000000 --- a/resources/library/applications/GraphMe.wgt/Grapheur.html +++ /dev/null @@ -1,921 +0,0 @@ - - - - - - - - GraphMe - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- - - - GraphMe - - - - - Functions - - - - - Display - - - - - Help - - -
- - -
- 3D -
- - -
-
S
-
^
- -
-
- - -
- -
-
-
-
- -
- f(x) = - - -
- -
-
- - - - - - - - - - - - - - - - -
-
-
-
- -
-
-
+
-
- -
-
·
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

------- Error -------

-
- Cannot draw function ... -

- Invalid character or expression :
- -

- -
- - -
-

------- Error -------

- Check the function and try to draw it again. -

- Error message : . -

- You can find examples of various drawable functions in the help menu. -
- - -
- - - - - - - - -
-
-

------- Error -------

-

- Update to latest version is not available because you already use the latest version. -


- -
- - -
-
-

Preferences saved!

-
- -
- - -
-
-

Automatic update

-

- Do you really want to use the latest online widget version ? -


- - -
- - -
-
-
-
- - - - -
-
- - -
-

Display

- - -
-
- - - -
-
- - - -
-
- - -
- - -
x
-
- - - - - -
- - - - - - - - diff --git a/resources/library/applications/GraphMe.wgt/Grapheur.xhtml b/resources/library/applications/GraphMe.wgt/Grapheur.xhtml new file mode 100644 index 00000000..bfca757c --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/Grapheur.xhtml @@ -0,0 +1,1586 @@ + + + + + + + + + Graphics + + + + + + + + + + + + + + + + + + + Function: + + + +
^
+ +
+ + + +
+ +
+ X-axis:
+ ...
+ Y-axis:
+ ... +
Zoom:
+

+ Color:
+
+

+
+
+ Menus: + + + + + + + +
+
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

------- Error -------

+
+ Impossible to draw the function ... +

+ Error in expression or unexpected char:
+ +

+ +
+ + +
+

------- Error -------

+ Runtime error! Check your function and try to draw it again. +
+ Description and parameters various functions which are available to help. +

+ + +
+ + + + + +
+
+

------- Error -------

+

+ Update to latest version is not available because you already use the latest version. +


+ +
+ + +
+
+

Options saved!

+
+ +
+ + +
+
+
+
+ + +
+
o
+
+ + +
3D
+ + + + diff --git a/resources/library/applications/GraphMe.wgt/Guide_Utilisateur.html b/resources/library/applications/GraphMe.wgt/Guide_Utilisateur.html index a6e2d64e..2caf6a23 100644 --- a/resources/library/applications/GraphMe.wgt/Guide_Utilisateur.html +++ b/resources/library/applications/GraphMe.wgt/Guide_Utilisateur.html @@ -2,200 +2,199 @@ - GraphMe - Guide utilisateur + GraphMe - User's guide.

GraphMe

-

Guide d'utilisation

+

User's guide

  1. Introduction
  2. Installation
  3. -
  4. Afficher le widget
  5. -
  6. Présentation de l'affichage
  7. -
  8. Dessiner une fonction
  9. -
  10. Se déplacer à travers la fonction
  11. -
  12. Le menu des options
  13. -
  14. Le menu des outils
  15. -
  16. Dessiner plusieurs fonctions
  17. -
  18. Mettre à jour GraphMe
  19. +
  20. Review widget
  21. +
  22. View presentation
  23. +
  24. Drawing the function
  25. +
  26. Offset function
  27. +
  28. The options menu
  29. +
  30. the tools menu
  31. +
  32. Drawing some functions
  33. +
  34. GraphMe update
  35. Contact

1. Introduction

- GraphMe est un traceur de fonctions mathématiques que j'ai programmé dans le cadre du travail de maturité gymnasiale. Il est codé en HTML, CSS et JavaScript. Ce grapheur est disponible sur un cd-rom accompagnant mon travail de maturité ainsi que sur internet à la page http://gyb.educanet2.ch/tm-widgets/.ws_gen/?15. Ce document a pour but d'expliquer comment utiliser GraphMe. Il présente ses différentes fonctions ainsi que quelques astuces utiles à l'utilisateur. + GraphMe is a app that is developed using html, javascript and css. It can be used for drawing graphs. This document must explain how to use GraphMe. This app have a different functions and some useful advices for users.

2. Installation

- Le widget que vous pouvez télécharger sur internet est compressé au format zip. Avant de l'utiliser, il est nécessaire de le décompresser. Si vous n'avez aucuns programmes permettant d'ouvrir les fichiers zip, vous pouvez télécharger 7zip sur http://www.7-zip.org/. GraphMe a été conçu pour s'utiliser dans un navigateur internet ou s'intégrer à Uniboard. Pour l'ajouter aux widgets d'Uniboard, il faut copier le dossier « GraphMe.wgt » dans « library/interactive/ ». Par exemple, sous Windows, le widget doit être dans : « C:/Program Files/Uniboard 4/library/interactive/GraphMe.wgt ». Si vous n'avez pas Uniboard, vous pouvez l'obtenir sur http://getuniboard.com/. -

+ This widget can be downloaded from the Internet in a packed format. Before using it must be unpacked. GraphMe was developed for using in web-browsers and integration in Sankore. To add this app in Sankore you should copy folder named "GraphMe.wgt" in "../library/interactive/". For example, on "windows OS" GraphMe must be in folder with following path: "C: / Program Files / Sankore 4/library/interactive/GraphMe.wgt". If you have no Sankore then you can get it on http://getuniboard.com/. +

-

3. Afficher le widget

-
Image de GraphMe dans un navigateur internet
+

3. Review widget

+
Display GraphMe in browsers

- A) Pour afficher le widget dans un navigateur, il faut simplement ouvrir le fichier « Grapheur.xhtml » qui se trouve dans le dossier « GraphMe.wgt » avec votre navigateur internet. Toutefois, certains navigateurs n'arrivent pas à afficher le widget. La liste suivante contient les navigateurs sur lesquels le widget a été testé : + A) To display this app in browser just enough to open the file named "Grapheur.xhtml" (it's in root folder) with your browser. But some browsers can not display app correctly. Below is the list of browsers that are able to display app:

- B) Pour ouvrir le widget dans Uniboard, il faut tout d'abord cliquer sur le bouton « Bibliothèque » en haut de la fenêtre. Ensuite, allez dans l'onglet « Interactif » ou autrement, selon les version d'Uniboard, dans l'onglet « Applications ». Cliquez sur l'icône correspondant à « Traceur de fonctions mathématiques » et finalement sur « Ajouter à la page ». + B) To open widget in Sankore you should first open folder "Application" that is at the left of the screen. Then you must find this app and add it to the page.

-
Image de GraphMe dans Uniboard
+
Display GraphMe in Sankore
-

4. Présentation de l'affichage

+

4. View presentation

    -
  1. Champ permettant de définir la fonction à afficher.
  2. -
  3. Bouton affichant la fonction.
  4. -
  5. Bouton servant à ajouter une nouvelle fonction ou à accéder à l'historique des fonctions.
  6. -
  7. Zone d'affichage.
  8. -
  9. Options d'affichage permettant de définir la partie de la fonction à afficher.
  10. -
  11. Boutons de zoom.
  12. -
  13. Bouton servant à changer la couleur.
  14. -
  15. Boutons accédant aux différents menus.
  16. -
  17. Onglet choisissant entre les fonctions 2D et 3D.
  18. -
  19. Bouton de maximisation du widget.
  20. +
  21. Place for functions display.
  22. +
  23. Button for beginning the work.
  24. +
  25. Button for adding new function or for getting access to functions history.
  26. +
  27. Display.
  28. +
  29. Parameters that define the part of graph that will be displayed.
  30. +
  31. Buttons for zoom.
  32. +
  33. Button for color changing.
  34. +
  35. Buttons for access to menu.
  36. +
  37. Tab-button that toggles 2D and 3D modes.
  38. +
  39. Button for maximize the widget.
-

5. Dessiner une fonction

+

5. Drawing the function

- Pour dessiner une fonction mathématique, il suffit d'entrer celle-ci dans le champ en haut du widget et de cliquer sur le bouton « Afficher ». On peut utiliser différentes fonctions et constantes prédéfinies: + To draw mathematical function just enter it at the top of widget and press button "Display". You can use different functions and predefined constants.

-

Les opérations de base

+

Basic operations:

-

Les fonctions trigonométriques

+

Trigonometric functions

-

Les racines et les puissances

+

Square roots and degrees

-

Les exponentielles et logarithmes

+

Exponential and logarithm

-

Les arrondis

+

Rounding

-

Autres fonctions prédéfinies

+

Other predefined function

-

Les constantes

+

Also are available some constants:

- Il n'est pas toujours facile de comprendre comment écrire la fonction désirée. En effet, une petite faute et elle ne s'affichera pas. De plus, il ne faut pas oublier de mettre un « * » entre les thermes à multiplier et d'utiliser le point « . » pour écrire des nombres à virgule. + Not always it's easy to understand how to record a required function. Really if anywhere you err then graph will not displayed. Also do not forget about "*" (multiply) to multiply and "." (decimal point) to write point.

- Les fonctions en deux dimensions s'écrivent sous la forme : y=[...] et les fonctions en trois dimensions sous la forme : z=[...]. D'autres exemples sont disponibles dans le menu « aide » du widget si vous avez de la peine à entrer une fonction. + The two-dimensional function must be written as y=[...] and the three-dimensional function nust be written as z=[...]. Other examples are available to use in menu "Help" if you have some difficulties with function definition.

-

6. Se déplacer à travers la fonction

+

6. Offset function

- Parfois, lorsqu'on dessine une fonction, la zone visible n'est pas très intéressante. Pour cela, il est utile de déplacer l'affichage ou de définir soi-même la zone à afficher. + Sometimes when you draw the function you don't see all necessary information about this function. In this case you can change position of graph.

- Pour déplacer la fonction, il suffit d'utiliser les flèches de navigation situées dans les quatre bords de l'affichage ou l'outil de déplacement à la souris (dans le menu « Outils »). + To move the function graph just use a navigation arrows that are in the four edges of the display or mouse move tool (menu Service).

- Pour définir la zone à afficher, il faut entrer des valeurs personnalisées dans les champs à gauche du widget. La valeur de gauche doit obligatoirement être plus petite que la valeur de droite. Dans le cas contraire, la fonction ne se dessinera pas. + To define place to display you should enter a custom values in the left side of the widget. The left value must be less than the right value. In other case graph will not displayed.

- Il est possible de zoomer ou dé-zoomer l'affichage en utilisant les boutons du menu de gauche pour voir une plus grande partie de la fonction. Le zoom peut être réinitialisé dans les options. On peut également cliquer deux fois sur le graphique pour zoomer ainsi que dé-zoomer en maintenant la touche « ctrl » appuyée et en cliquant deux fois. + You can increase or decrease the scale of displaying using buttons that are in the left menu. So you'll see more information about function. Zoom can be reset in options.

- +

- Cliquez sur le bouton « Options » à gauche du widget pour ouvrir ce menu. En cliquant à nouveau sur le bouton, cela ferme le menu. Plusieurs onglets permettent de naviguer entre les différentes options. Description des options : + To open the menu you should click a button "Options" that is in the left of the widget. If you click on this button again then menu will close. There are some buttons for navigation between options. Their short description:

- +

- Ce menu permet tout d'abord de choisir l'action de la souris sur le graphique. Il y a le choix entre trois possibilités : + This menu allows you to choose first action of the mouse on the graph. There is a choice of three options:

- Ensuite, ce menu permet aussi de calculer un point de la fonction. Il faut simplement entrer la coordonnée « x » du point dont on veut trouver la coordonnée « y », et appuyer sur le bouton « Évaluer ». Par exemple, si la fonction est « x*x » et qu'on défini « x=2 », alors le point dont la coordonnée sur l'axe des X est « 2 » aura comme coordonnée sur l'axe des Y « 4 ». + Then, this menu also allows to calculate a point of the function. Simply enter the coordinate "x" from the point where we want to find the coordinate "y" and press the "Evaluate". For example, if the function is "x * x" and that defined "x = 2", then the point whose coordinate on the X axis is "2" will be to coordinate on the Y axis "4".

- Un autre outil très utile est l'étude de fonction. Pour étudier la fonction entrée dans le champ en haut du widget, cliquez sur « démarrer l'étude ». Les études de fonction de ce widget ne sont pas fiables à 100% mais servent de complément à une étude de fonction que l'on fait soi-même. Il se peut que cet outil soit amélioré dans une prochaine version du widget. + Another useful tool is the analysis of function. To analyse the function click on "start the analysis". Analyses based on this widget are not 100% reliable, but are complementary to a analysis of function that you are doing yourself. It may be that this tool will be improved in a future version of the widget.

- Dans ce menu, on trouve également des tests d'affichage. Ils permettent d'essayer les différentes méthodes d'affichage et de voir si elles fonctionnent sur le navigateur internet utilisé. + In this menu there are also tests the display. They can try different methods to display and see if they work on the browser used.

-

9. Dessiner plusieurs fonctions

+

9. Drawing some functions

- Pour dessiner plusieurs fonctions simultanément, cliquez sur le petit bouton « + » qui se situe à droite du bouton « Afficher » (point 1). Ensuite, un menu apparaît. + To draw multiple functions simultaneously, click the small "+" button which is located to the right of "View" (point 1). Then, a menu appears.

- Dans ce menu, des onglets permettent d'aller à l'historique ou aux fonctions supplémentaires (point 2). Pour ajouter une fonction, cliquez sur le bouton à droite de la fonction actuelle (point 3). En dessous, une liste contient toutes les fonctions affichées (point 4). Pour supprimer une fonction, il faut simplement cliquer sur le bouton « - » à coté de celle-ci. Il est également possible de modifier la couleur de chaque fonction séparément. + The tabs in this menu can go to the history or the additional features (point 2). To add a function click the button to the right of the current function (point 3). Below is a list that contains all the displayed functions (point 4). To remove a function, just click on the "-" button next to it. It is also possible to change the color of each function separately.

- L'historique permet de revoir toutes les fonctions qui ont déjà été dessinées. Lorsque l'on clique sur une fonction de l'historique, celle qui est dessinée actuellement est remplacée par la fonction de l'historique. + History can review all the functions that have already been drawn. When you click on a function of history current function replaced by the function of history.

- Dessiner plusieurs fonctions simultanément est uniquement possible avec la méthode d'affichage « canvas » en deux dimensions. Par contre, l'historique est utilisable avec toutes les méthodes d'affichage. + "Drawing several functions simultaneously" mode is only possible with the display method "canvas" in two dimensions, but the history can be used with all methods of display.

-

10. Mettre à jour GraphMe

+

10. GraphMe update

- La dernière version du widget est téléchargeable sur la page suivante : http://gyb.educanet2.ch/tm-widgets/.ws_gen/?15. Pour mettre à jour GraphMe, vous pouvez aussi cliquer sur le bouton "Mise à jour" dans le menu des options. + The latest version of the widget can be downloaded from the following page: http://gyb.educanet2.ch/tm-widgets/.ws_gen/?15. To update GraphMe, you can also click on "Update" in the options menu.

11. Contact

- Si vous voulez rapporter un bug, avez une suggestion par rapport au widget ou voulez simplement poser une question, merci de me contacter par e-mail à l'adresse : yannick.vessaz@gmail.com. + If you want to report a bug, have a suggestion from the widget or just want to ask a question, please contact me by e-mail at: yannick.vessaz@gmail.com.

\ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/Images/black/bottom-left.png b/resources/library/applications/GraphMe.wgt/Images/black/bottom-left.png deleted file mode 100644 index 8423b59b..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/bottom-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/bottom-right.png b/resources/library/applications/GraphMe.wgt/Images/black/bottom-right.png deleted file mode 100644 index 915abc13..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/bottom-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/bottom.png b/resources/library/applications/GraphMe.wgt/Images/black/bottom.png deleted file mode 100644 index d61623c7..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/bottom.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/center.png b/resources/library/applications/GraphMe.wgt/Images/black/center.png deleted file mode 100644 index 8ce90552..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/center.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/left.png b/resources/library/applications/GraphMe.wgt/Images/black/left.png deleted file mode 100644 index eeb45738..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/right.png b/resources/library/applications/GraphMe.wgt/Images/black/right.png deleted file mode 100644 index ca19f467..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/top-left.png b/resources/library/applications/GraphMe.wgt/Images/black/top-left.png deleted file mode 100644 index 01fa7a62..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/top-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/top-right.png b/resources/library/applications/GraphMe.wgt/Images/black/top-right.png deleted file mode 100644 index 0fd81158..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/top-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/black/top.png b/resources/library/applications/GraphMe.wgt/Images/black/top.png deleted file mode 100644 index 1b2978ff..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/black/top.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/bottom-left.png b/resources/library/applications/GraphMe.wgt/Images/blue/bottom-left.png deleted file mode 100644 index 59bd3d46..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/bottom-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/bottom-right.png b/resources/library/applications/GraphMe.wgt/Images/blue/bottom-right.png deleted file mode 100644 index 850fb3cf..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/bottom-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/bottom.png b/resources/library/applications/GraphMe.wgt/Images/blue/bottom.png deleted file mode 100644 index 0ff3f4a5..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/bottom.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/center.png b/resources/library/applications/GraphMe.wgt/Images/blue/center.png deleted file mode 100644 index 6b984a2f..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/center.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/left.png b/resources/library/applications/GraphMe.wgt/Images/blue/left.png deleted file mode 100644 index 81b692b1..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/right.png b/resources/library/applications/GraphMe.wgt/Images/blue/right.png deleted file mode 100644 index db5ed624..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/top-left.png b/resources/library/applications/GraphMe.wgt/Images/blue/top-left.png deleted file mode 100644 index e5f38e7d..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/top-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/top-right.png b/resources/library/applications/GraphMe.wgt/Images/blue/top-right.png deleted file mode 100644 index b27b6ec9..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/top-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/blue/top.png b/resources/library/applications/GraphMe.wgt/Images/blue/top.png deleted file mode 100644 index 9538dd53..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/blue/top.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/cursor.png b/resources/library/applications/GraphMe.wgt/Images/cursor.png deleted file mode 100644 index 3170b04a..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/cursor.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom-left.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom-left.png deleted file mode 100644 index cd121e50..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom-right.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom-right.png deleted file mode 100644 index 7c32bb8a..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom.png deleted file mode 100644 index c9e7b15f..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/bottom.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/center.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/center.png deleted file mode 100644 index 20e73707..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/center.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/left.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/left.png deleted file mode 100644 index d88f7bea..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/right.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/right.png deleted file mode 100644 index c3994ad0..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/top-left.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/top-left.png deleted file mode 100644 index 8b03ecca..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/top-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/top-right.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/top-right.png deleted file mode 100644 index 9db3c018..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/top-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/darkblue/top.png b/resources/library/applications/GraphMe.wgt/Images/darkblue/top.png deleted file mode 100644 index 7b068448..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/darkblue/top.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/fond1.png b/resources/library/applications/GraphMe.wgt/Images/fond1.png new file mode 100644 index 00000000..8084981e Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/fond1.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/fond2.png b/resources/library/applications/GraphMe.wgt/Images/fond2.png new file mode 100644 index 00000000..b6e1e839 Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/fond2.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/fond3.png b/resources/library/applications/GraphMe.wgt/Images/fond3.png new file mode 100644 index 00000000..fb2b708e Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/fond3.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/fond4.png b/resources/library/applications/GraphMe.wgt/Images/fond4.png new file mode 100644 index 00000000..0b945c39 Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/fond4.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/fond5.png b/resources/library/applications/GraphMe.wgt/Images/fond5.png new file mode 100644 index 00000000..740163a9 Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/fond5.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gauche1.png b/resources/library/applications/GraphMe.wgt/Images/gauche1.png new file mode 100644 index 00000000..ef1fb6ed Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/gauche1.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gauche2.png b/resources/library/applications/GraphMe.wgt/Images/gauche2.png new file mode 100644 index 00000000..080a17f7 Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/gauche2.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gauche3.png b/resources/library/applications/GraphMe.wgt/Images/gauche3.png new file mode 100644 index 00000000..2fd7dedc Binary files /dev/null and b/resources/library/applications/GraphMe.wgt/Images/gauche3.png differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gradient.png b/resources/library/applications/GraphMe.wgt/Images/gradient.png deleted file mode 100755 index 5fceffec..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/gradient.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gradient1.png b/resources/library/applications/GraphMe.wgt/Images/gradient1.png deleted file mode 100755 index 2b4ba137..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/gradient1.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gradient2.png b/resources/library/applications/GraphMe.wgt/Images/gradient2.png deleted file mode 100644 index 57d0779c..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/gradient2.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gradient3.png b/resources/library/applications/GraphMe.wgt/Images/gradient3.png deleted file mode 100644 index 441ccf51..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/gradient3.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/gradient4.png b/resources/library/applications/GraphMe.wgt/Images/gradient4.png deleted file mode 100644 index c3449f77..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/gradient4.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/mini_icon.png b/resources/library/applications/GraphMe.wgt/Images/mini_icon.png deleted file mode 100644 index bddfac5d..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/mini_icon.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/move.png b/resources/library/applications/GraphMe.wgt/Images/move.png deleted file mode 100644 index 045554aa..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/move.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/tangent.png b/resources/library/applications/GraphMe.wgt/Images/tangent.png deleted file mode 100644 index f08c37d8..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/tangent.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/bottom-left.png b/resources/library/applications/GraphMe.wgt/Images/white/bottom-left.png deleted file mode 100644 index 8e8312e3..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/bottom-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/bottom-right.png b/resources/library/applications/GraphMe.wgt/Images/white/bottom-right.png deleted file mode 100644 index 4e691af1..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/bottom-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/bottom.png b/resources/library/applications/GraphMe.wgt/Images/white/bottom.png deleted file mode 100644 index 43ddff4f..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/bottom.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/center.png b/resources/library/applications/GraphMe.wgt/Images/white/center.png deleted file mode 100644 index 4068e6f1..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/center.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/left.png b/resources/library/applications/GraphMe.wgt/Images/white/left.png deleted file mode 100644 index b2116a17..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/right.png b/resources/library/applications/GraphMe.wgt/Images/white/right.png deleted file mode 100644 index c6e32ad4..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/top-left.png b/resources/library/applications/GraphMe.wgt/Images/white/top-left.png deleted file mode 100644 index 7c3a5766..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/top-left.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/top-right.png b/resources/library/applications/GraphMe.wgt/Images/white/top-right.png deleted file mode 100644 index 037ffc80..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/top-right.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/Images/white/top.png b/resources/library/applications/GraphMe.wgt/Images/white/top.png deleted file mode 100644 index 1bd3bf4d..00000000 Binary files a/resources/library/applications/GraphMe.wgt/Images/white/top.png and /dev/null differ diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Affichage.js b/resources/library/applications/GraphMe.wgt/JavaScript/Affichage.js deleted file mode 100644 index 9407063d..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Affichage.js +++ /dev/null @@ -1,386 +0,0 @@ - -// Convertir une coordonnée sur le graphique en position relative à l'affichage (ou à l'écran si ecran = true) -function coordToPosX(x, ecran){ - if(ecran){ - return coordToPosX(x, false)+affichage.offsetLeft; - } - else{ - return (x - affichage.xGauche) * affichage.multX; - } -} -function coordToPosY(y, ecran){ - if(ecran){ - return coordToPosY(y, false)+affichage.offsetTop; - } - else{ - return affichage.hauteur - (y - affichage.yBas) * affichage.multY; - } -} - -var affichage = { - // Options - id : "affichage", - largeur : 640, // Set by init - hauteur : 430, // Set by init - couleurFond : "rgba(0,0,0,0)", - - // Bornes (zone d'affichage) - xGauche : -5.5, // Set by init - xDroite : 5.5, // Set by init - yBas : -3.7, - yHaut : 3.7, - - multX : 1, - multY : 1, - - // Axes - axes : true, - couleurAxes : "rgba(0,0,0,0.5)", - widthAxes : 2, - // Grille - grille : true, - couleurGrille : "rgba(255,255,255,0.1)", - widthGrille : 2, - // Echelle - echelle : true, - couleurEchelle : "rgba(255,255,255,1)", - - // Précision - precision : 100, - precisionAmelioree : true, // false = fonction plus jolie lorsqu'on dé-zoom, true = affichage plus rapide lors du dé-zoom. - - // Méthode et style - methode : "canvas", - style : "continu", - - // Variable définies lors de l'initialisation - canvas : null, - ctx : null, - object : null, - offsetTop : null, // Position de l'affichage par rapport à la page - offsetLeft : null, - - init : function(element, width, height){ - this.setBornes(); - - // Supprimer le contenu de l'affichage - if(!element){ - element = document.getElementById(this.id); - } - if(element.hasChildNodes()){ - while(element.childNodes.length >= 1 ){ - element.removeChild(element.firstChild); - } - } - - // Définir la taille - this.largeur = width || element.clientWidth; - this.hauteur = height || element.clientHeight; - - // Set left and right proportionally to width, height, top and bottom - var centerX = this.xGauche + (this.xDroite - this.xGauche)/2; - var centerY = this.yBas + (this.yHaut - this.yBas)/2; - var dx = ((this.yHaut - this.yBas) / 2) * this.largeur / this.hauteur; - this.xGauche = Math.round((centerX - dx)*100)/100; - this.xDroite= Math.round((centerX + dx)*100)/100; - this.setBornes(); - - // Récupérer la position - var boundingClientRect = element.getBoundingClientRect(); - this.offsetTop = boundingClientRect.top; - this.offsetLeft = boundingClientRect.left; - - // Sélectionner la méthode d'affichage - if(this.methode == "svg"){ -// this.object = document.createElement("embed"); -// this.object.type = "image/svg+xml"; -// this.object.src = "AffichageSVG.svg"; - this.object = document.getElementById("embedSVG"); - this.object.width = this.largeur; - this.object.height = this.hauteur; - this.object.style.top = this.offsetTop +1 +"px"; - this.object.style.left = this.offsetLeft +1 +"px"; - this.object.style.display = "block"; -// element.appendChild(this.object); - -// affichage.ctx = svg; -// affichage.dessiner(); -// // Exécuter this.dessiner() maintenant ne va pas car svg n'est pas -// // encore défini dans cette fonction, il faut en lancer un nouvelle... - setTimeout("affichage.ctx = svg", 50); - setTimeout("affichage.dessiner()", 100); - } - else if(this.methode == "uniboard"){ - if(window.uniboard || window.sankore){ - try{ - initUniboard(); - this.ctx = uniboard; - this.dessiner(); - } - catch(err){ - alert(err.message); - } - } - else{ - this.methode = "canvas"; - this.setOptions(); - this.init(); - } - } - else{ - document.getElementById("embedSVG").style.display = "none"; - - this.canvas = document.createElement("canvas"); - this.canvas.width = this.largeur; - this.canvas.height = this.hauteur; - element.appendChild(this.canvas); - - this.ctx = this.canvas.getContext("2d"); - - this.dessiner(); - } - - // Événements - if(window.addEventListener){ - element = document.getElementById("eventAffichage"); - element.addEventListener('DOMMouseScroll', souris.wheel, false); - element.onmousewheel = souris.wheel; - element.oncontextmenu = ctxMenu.ouvrir; - } - }, - - calculer : function(){ - this.getBornes(); - this.getOptions(); - if(fonction3D){ - display3D.draw() - } - else{ - this.dessiner(); - } - saveOptions(); - }, - - dessiner : function(){ - try{ -// var ti = new Date().getTime(); - var precision; - if(this.precisionAmelioree){ - precision = 10/this.precision; - } - else{ - precision = Math.abs(this.xDroite - this.xGauche)/this.precision; - } - this.multX = this.largeur/Math.abs(this.xDroite - this.xGauche); - this.multY = this.hauteur/Math.abs(this.yHaut - this.yBas); - - var ctx = new Object(); - ctx = this.ctx; - ctx.clearRect(0,0,this.largeur,this.hauteur); - - ctx.fillStyle = this.couleurFond; - ctx.fillRect(0,0,this.largeur,this.hauteur); - - ctx.strokeOpacity = 1; // svg - - // Couleur pour l'aire sous la fonction - ctx.fillStyle = "rgba(0,180,255,0.3)"; - - // Fonctions - for(var i=0; i x : ajouter = 0.5") - } - - this.xGauche -= ajouter; - this.xDroite += ajouter; - - // Vertical - diffBornes = Math.abs(this.yHaut - this.yBas); - ajouter = Math.round(diffBornes * (facteur-1)*2)/4; - if(ajouter == 0){ - ajouter = 0.25; -// log("affichage.zoom -> y : ajouter = 0.5") - } - - this.yBas -= ajouter; - this.yHaut += ajouter; - - this.dessiner(); - this.setBornes(); - - saveOptions(); - } -}; diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Affichage3D.js b/resources/library/applications/GraphMe.wgt/JavaScript/Affichage3D.js old mode 100755 new mode 100644 index 9cf88b63..b6ff0e70 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Affichage3D.js +++ b/resources/library/applications/GraphMe.wgt/JavaScript/Affichage3D.js @@ -1,407 +1,332 @@ - -var fonction3D = false; -var outilPrecedent = ""; +var ctx +var centreX, centreY +var echelle3D = 50 +var precisionDroite3D = 0.02 +var precisionFonction3D = 0.2 +var fonction3D = false +var angle = Math.PI/8 +var valeurZoom3D = 1 +var gauche3D = -6.5 +var droite3D = 6.5 +var outilPrecedent = "" +var rouge3D = 0 +var vert3D = 1 +var bleu3D = 2 +var couleurGenerale = 0 function activer3D(){ - if(fonction3D){ // Si activé alors on le désative - fonction3D = false; - outil.choisir(outilPrecedent); - document.getElementById('onglet3D').innerHTML = "3D"; - document.getElementById('zoomButtons').style.display = "block"; - document.getElementById('toolButtons').style.display = "block"; - affichage.init(); - outil.init(); - affichage.initZoom2(document.getElementById('zoomDefaut').value); - } - else{ // Sinon on l'active - fonction3D = true; - outilPrecedent = outil.actuel; - outil.choisir("deplacement"); - document.getElementById('onglet3D').innerHTML = "2D"; - document.getElementById('zoomButtons').style.display = "none"; - document.getElementById('toolButtons').style.display = "none"; - display3D.init(); - outil.liste = []; - outil.init(); - message.supprimer(); - } - cacherMenu(); - if(fonction3D){ - if(document.getElementById('input3D').value == ""){ - afficherMenu('menuFonctions3D'); - } - else{ - display3D.draw(); - } - } - saveOptions(); + if(fonction3D){ // Si activé alors on le désative + fonction3D = false + choixOutil(outilPrecedent) + document.getElementById('onglet3D').innerHTML = "3D" + largeur = 500 + document.getElementById("affichage").style.width = largeur+"px" + document.getElementById("affichage").style.left = "129px" + document.getElementById("flecheGauche").style.left = "137px" + document.getElementById("flecheHaut").style.left = "345px" + document.getElementById("flecheBas").style.left = "345px" + document.getElementById("gauche").style.display = "block" + document.getElementById("gauche3D").style.display = "none" + var elements = document.getElementsByClassName("menu") + for(var i=0; i' + ctx = document.getElementById('canvas').getContext('2d') + ctx.clearRect(0, 0, 640, 480) + ctx.fillStyle = "rgba(0, 0, 0, 0.5)" + ctx.fillRect(0,0,640,480) + axes() } -var display3D = { - canvas: null, - ctx: null, - width: 0, - height: 0, - centerX: 0, - centerY: 0, - scale: 50, - linePrecision: 0.02, - functionPrecision: 0.2, - angle: Math.PI/8, - zoomValue: 1, - left: -6.5, - right: 6.5, - rouge3D: 0, - vert3D: 1, - bleu3D: 2, - couleurGenerale: 0, - background: "rgba(0, 0, 0, 0.5)", - - init: function(width, height){ - var displayElement = document.getElementById("affichage"); - - // Clear displayElement content - if(displayElement.hasChildNodes()){ - while(displayElement.childNodes.length >= 1 ){ - displayElement.removeChild(displayElement.firstChild); - } - } - - // Setup sizes - this.width = width || displayElement.clientWidth; - this.height = height || displayElement.clientHeight; - this.centerX = this.width / 2; - this.centerY = this.height / 2; - - // Create canvas - this.canvas = document.createElement("canvas"); - this.canvas.width = this.width; - this.canvas.height = this.height; - displayElement.appendChild(this.canvas); - - this.ctx = this.canvas.getContext('2d'); - this.clear(); - }, - - clear: function(){ - var ctx = this.ctx; - ctx.clearRect(0, 0, this.width, this.height); - ctx.fillStyle = this.background; - ctx.fillRect(0, 0, this.width, this.height); - this.axes(); - }, - - draw: function(){ - // var ti = new Date().getTime(); - // this.init(); - this.clear(); - - var txtFct = fct.remplacer(fct.verifier(document.getElementById("input3D").value)); - if(txtFct == ""){ - return; - } - - var func = new CartesianFunction(txtFct); - - if(document.getElementById("selectAffichage3D").value == "points"){ - var coordX, coordY, coordZ; - for(var x=this.left; xthis.left; x1-=this.functionPrecision){ - for(var y1=this.right; y1>this.left; y1-=this.functionPrecision){ - x = x1; - y = y1; - z1 = func.f(x,y); - x2 = x1 - this.functionPrecision; - y2 = y1; - x = x2; - //y = y2; - z2 = func.f(x,y); - x3 = x2; - y3 = y2 - this.functionPrecision; - //x = x3; - y = y3; - z3 = func.f(x,y); - x4 = x3 + this.functionPrecision; - y4 = y3; - x = x4; - //y = y4; - z4 = func.f(x,y); - if(isNaN(z1)||isNaN(z2)||isNaN(z3)||isNaN(z4)){ - continue; - } - this.polygone3D(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4); - } - } - } - } - // var tf = new Date().getTime(); - // window.console.log(tf-ti); - }, - - // Dessine un point à la position (x, y, z) - point3D: function(x, y, z){ - var posX = (Math.sin(this.angle)*x + Math.cos(this.angle)*y)*this.scale; - var posZ = -(z - Math.cos(this.angle)*x/2.6 + Math.sin(this.angle)*y/2.6)*this.scale; +function dessiner3D(eq){ + initialise3D() + if(document.getElementById("selectAffichage3D").value == "points"){ + var coordX, coordY, coordZ + for(var x=gauche3D; x 1){ + opacity = 1 + } + if(opacity < 0){ + opacity = 0 + } + if(couleur[0] > 255){ + couleur[0] = 255 + } + if(couleur[0] < 0){ + couleur[0] = 0 + } + if(couleur[1] > 255){ + couleur[1] = 255 + } + if(couleur[1] < 0){ + couleur[1] = 0 + } - var opacity = Math.round((1-((5+y*Math.sin(this.angle)-x*Math.cos(this.angle)) / 450)*this.scale)*1000)/1000; - var couleur = new Array(); - couleur[0] = Math.round((5+z)*this.scale); - couleur[1] = Math.round(510 - (5+z)*this.scale); - couleur[2] = this.couleurGenerale; - if(opacity > 1){ opacity = 1; } - if(opacity < 0){ opacity = 0; } - if(couleur[0] > 255){ couleur[0] = 255; } - if(couleur[0] < 0){ couleur[0] = 0; } - if(couleur[1] > 255){ couleur[1] = 255; } - if(couleur[1] < 0){ couleur[1] = 0; } + ctx.save() + ctx.translate(centreX, centreY) + ctx.scale(valeurZoom3D, valeurZoom3D) + ctx.fillStyle = "rgba("+couleur[rouge3D]+","+couleur[vert3D]+", "+couleur[bleu3D]+", "+opacity+")" + ctx.fillRect(posX-1, posZ-1, 2, 2) + ctx.restore() +} + +// Dessine un polygone qui a comme sommets : (x1, y1, z1) , (x2, y2, z2), (x3, y3, z3) et (x4, y4, z4) +function polygone3D(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4){ + ctx.save() + ctx.translate(centreX, centreY) + ctx.scale(valeurZoom3D, valeurZoom3D) + ctx.beginPath() + ctx.moveTo((Math.sin(angle)*x1 + Math.cos(angle)*y1)*echelle3D , -(z1 - Math.cos(angle)*x1/2.6 + Math.sin(angle)*y1/2.6)*echelle3D) + ctx.lineTo((Math.sin(angle)*x2 + Math.cos(angle)*y2)*echelle3D , -(z2 - Math.cos(angle)*x2/2.6 + Math.sin(angle)*y2/2.6)*echelle3D) + ctx.lineTo((Math.sin(angle)*x3 + Math.cos(angle)*y3)*echelle3D , -(z3 - Math.cos(angle)*x3/2.6 + Math.sin(angle)*y3/2.6)*echelle3D) + ctx.lineTo((Math.sin(angle)*x4 + Math.cos(angle)*y4)*echelle3D , -(z4 - Math.cos(angle)*x4/2.6 + Math.sin(angle)*y4/2.6)*echelle3D) - var ctx = this.ctx; - ctx.save(); - ctx.translate(this.centerX, this.centerY); - ctx.scale(this.zoomValue, this.zoomValue); - ctx.fillStyle = "rgba("+couleur[this.rouge3D]+","+couleur[this.vert3D]+", "+couleur[this.bleu3D]+", "+opacity+")"; - ctx.fillRect(posX-1, posZ-1, 2, 2); - ctx.restore(); - }, - - // Dessine un polygone qui a comme sommets : (x1, y1, z1) , (x2, y2, z2), (x3, y3, z3) et (x4, y4, z4) - polygone3D: function(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4){ - var ctx = this.ctx; - ctx.save(); - ctx.translate(this.centerX, this.centerY); - ctx.scale(this.zoomValue, this.zoomValue); - ctx.beginPath(); - ctx.moveTo((Math.sin(this.angle)*x1 + Math.cos(this.angle)*y1)*this.scale , -(z1 - Math.cos(this.angle)*x1/2.6 + Math.sin(this.angle)*y1/2.6)*this.scale); - ctx.lineTo((Math.sin(this.angle)*x2 + Math.cos(this.angle)*y2)*this.scale , -(z2 - Math.cos(this.angle)*x2/2.6 + Math.sin(this.angle)*y2/2.6)*this.scale); - ctx.lineTo((Math.sin(this.angle)*x3 + Math.cos(this.angle)*y3)*this.scale , -(z3 - Math.cos(this.angle)*x3/2.6 + Math.sin(this.angle)*y3/2.6)*this.scale); - ctx.lineTo((Math.sin(this.angle)*x4 + Math.cos(this.angle)*y4)*this.scale , -(z4 - Math.cos(this.angle)*x4/2.6 + Math.sin(this.angle)*y4/2.6)*this.scale); + var opacity = Math.round((1-((5+y1*Math.sin(angle)-x1*Math.cos(angle)) / 450)*echelle3D)*1000)/1000 + var couleur = new Array() + couleur[0] = Math.round((5+z1)*echelle3D) + couleur[1] = Math.round(510 - (5+z1)*echelle3D) + couleur[2] = couleurGenerale + if(opacity > 1){ + opacity = 1 + } + if(opacity < 0){ + opacity = 0 + } + if(couleur[0] > 255){ + couleur[0] = 255 + } + if(couleur[0] < 0){ + couleur[0] = 0 + } + if(couleur[1] > 255){ + couleur[1] = 255 + } + if(couleur[1] < 0){ + couleur[1] = 0 + } - var opacity = Math.round((1-((5+y1*Math.sin(this.angle)-x1*Math.cos(this.angle)) / 450)*this.scale)*1000)/1000; - var couleur = new Array(); - couleur[0] = Math.round((5+z1)*this.scale); - couleur[1] = Math.round(510 - (5+z1)*this.scale); - couleur[2] = this.couleurGenerale; - if(opacity > 1){ opacity = 1; } - if(opacity < 0){ opacity = 0; } - - // for(var i=0; i 255){ couleur[0] = 255; } - if(couleur[0] < 0){ couleur[0] = 0; } - if(couleur[1] > 255){ couleur[1] = 255; } - if(couleur[1] < 0){ couleur[1] = 0; } + ctx.fillStyle = "rgba("+couleur[rouge3D]+","+couleur[vert3D]+", "+couleur[bleu3D]+", "+opacity+")" + ctx.closePath() + ctx.fill() + ctx.restore() +} - ctx.fillStyle = "rgba("+couleur[this.rouge3D]+","+couleur[this.vert3D]+", "+couleur[this.bleu3D]+", "+opacity+")"; - ctx.strokeStyle = "rgba(0,0,0,0.1)"; - ctx.closePath(); - ctx.fill(); - ctx.stroke(); - ctx.restore(); - }, +// Dessine les axes +function axes(){ + for(var i=-5; i<5; i+=precisionDroite3D){ + point3D(0, 0, i) + } + for(var i=-5.5; i<5.5; i+=precisionDroite3D){ + point3D(i, 0, 0) + } + for(var i=-5.5; i<5.5; i+=precisionDroite3D){ + point3D(0, i, 0) + } +} - // Dessine les axes - axes: function(){ - for(var i=-5; i<5; i+=this.linePrecision){ - this.point3D(0, 0, i); - } - for(var i=-5.5; i<5.5; i+=this.linePrecision){ - this.point3D(i, 0, 0); - } - for(var i=-5.5; i<5.5; i+=this.linePrecision){ - this.point3D(0, i, 0); - } - }, +function cube(x, y, z, r){ + // Face de devant + for(var i=0; i 255){ - this.couleurGenerale = 255; - } - switch(document.getElementById("selectRouge3D").value){ - case "plus": - this.rouge3D = 0; - rouge = 255; - sensRouge = -1; - break; - case "moins": - this.rouge3D = 1; - rouge = 0; - sensRouge = 1; - break; - case "tout": - this.rouge3D = 2; - rouge = this.couleurGenerale; - sensRouge = 0; - break; - } - switch(document.getElementById("selectVert3D").value){ - case "plus": - this.vert3D = 0; - vert = 255; - sensVert = -1; - break; - case "moins": - this.vert3D = 1; - vert = 0; - sensVert = 1; - break; - case "tout": - this.vert3D = 2; - vert = this.couleurGenerale; - sensVert = 0; - break; - } - switch(document.getElementById("selectBleu3D").value){ - case "plus": - this.bleu3D = 0; - bleu = 255; - sensBleu = -1; - break; - case "moins": - this.bleu3D = 1; - bleu = 0; - sensBleu = 1; - break; - case "tout": - this.bleu3D = 2; - bleu = this.couleurGenerale; - sensBleu = 0; - break; - } - document.getElementById("apercuCouleur3D").innerHTML = "."; - for(var i=0; i."; - } - if(this.ctx){ - this.draw(); - } - }, - - zoom: function(value){ - if(!fonction3D){ - return; - } - this.zoomValue *= value; - this.left /= value; - this.right /= value; - this.functionPrecision /= value; - this.linePrecision /= value; - //alert(this.zoomValue+" ; "+this.left+" ; "+this.right+" ; "+this.functionPrecision+" ; "+this.linePrecision); - this.draw(); - }, - - move: function(value){ - this.angle += Math.PI/32 * value; - this.draw(); - }, - - initZoom: function(){ - this.angle = Math.PI/8; - this.zoomValue = 1; - this.left = -6.5; - this.right = 6.5; - this.draw(); - } -}; +// Change les couleurs de l'affichage 3D et affiche l'aperçu de celles-ci. +function checkCouleurs3D(){ + var rouge, vert, bleu + var sensRouge, sensVert, sensBleu + var precisionApercu = 64 + couleurGenerale = parseInt(document.getElementById("couleur3Dgenerale").value) + if(!couleurGenerale){ + couleurGenerale = 0 + } + if(couleurGenerale < 0){ + couleurGenerale = 0 + } + if(couleurGenerale > 255){ + couleurGenerale = 255 + } + switch(document.getElementById("selectRouge3D").value){ + case "plus": + rouge3D = 0 + rouge = 255 + sensRouge = -1 + break + case "moins": + rouge3D = 1 + rouge = 0 + sensRouge = 1 + break + case "tout": + rouge3D = 2 + rouge = couleurGenerale + sensRouge = 0 + break + } + switch(document.getElementById("selectVert3D").value){ + case "plus": + vert3D = 0 + vert = 255 + sensVert = -1 + break + case "moins": + vert3D = 1 + vert = 0 + sensVert = 1 + break + case "tout": + vert3D = 2 + vert = couleurGenerale + sensVert = 0 + break + } + switch(document.getElementById("selectBleu3D").value){ + case "plus": + bleu3D = 0 + bleu = 255 + sensBleu = -1 + break + case "moins": + bleu3D = 1 + bleu = 0 + sensBleu = 1 + break + case "tout": + bleu3D = 2 + bleu = couleurGenerale + sensBleu = 0 + break + } + document.getElementById("apercuCouleur3D").innerHTML = "." + for(var i=0; i." + } +} +function zoom3D(valeur){ + valeurZoom3D *= valeur + gauche3D /= valeur + droite3D /= valeur + precisionFonction3D /= valeur + precisionDroite3D /= valeur + //alert(valeurZoom3D+" ; "+gauche3D+" ; "+droite3D+" ; "+precisionFonction3D+" ; "+precisionDroite3D) + actualiserGraph() +} \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/AffichageSVG.svg b/resources/library/applications/GraphMe.wgt/JavaScript/AffichageSVG.svg deleted file mode 100644 index ac73b17a..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/AffichageSVG.svg +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/AffichageStandard.js b/resources/library/applications/GraphMe.wgt/JavaScript/AffichageStandard.js new file mode 100644 index 00000000..b5ab2aad --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/JavaScript/AffichageStandard.js @@ -0,0 +1,432 @@ +// ------------------ SVG et canvas ------------------ + +// Cette fonction calcule tous les points de la fonction mathématique. +// Elle place chaque coordonnée "x" et "y" dans les tableaux "pointX" et "pointY" +// A la fin, elle choisi la méthode d'affichage entre : +// 1) une seule image SVG +// 2) plusieurs images SVG + function evaluerSVG(eq) { + borneXGauche = parseFloat(document.getElementById("borneXGauche").value) + borneXDroite = parseFloat(document.getElementById("borneXDroite").value) + borneYGauche = parseFloat(document.getElementById("borneYGauche").value) + borneYDroite = parseFloat(document.getElementById("borneYDroite").value) + multiplicateurX = largeur/Math.abs(borneXDroite - borneXGauche) + multiplicateurY = hauteur/Math.abs(borneYDroite - borneYGauche) + lineWidth = document.getElementById("inputTaille").value + var i = 0 + var y1, p1 + + for(x=borneXGauche; x<=(borneXDroite+5*precision); x=x+precision){ + y = eval(eq) + if(!isNaN(y)){ + i++ + pointX[i] = (x - borneXGauche) * multiplicateurX + pointY[i] = hauteur - ((y - borneYGauche) * multiplicateurY) + pente[i] = hauteur - (((y-y1)/precision - borneYGauche)* multiplicateurY) + pente2[i] = hauteur - ((((y-y1)/precision-p1)/precision - borneYGauche)* multiplicateurY) + p1 = (y-y1)/precision + y1 = y + } + } + pente[1]=pente[2] + pente2[2]=pente2[3] + pente2[1]=pente2[2] + + //alert(pointX+'\n'+pointY) + if(document.getElementById("selectMethodeAffichage").value == "svg2"){ + calculerGraphSVG2(i) + } + else{ + calculerGraphSVG(i) + } + } + +// Même fonction mais pour dessiner à l'aide de canvas + function evaluerCanvas(eq) { + borneXGauche = parseFloat(document.getElementById("borneXGauche").value) + borneXDroite = parseFloat(document.getElementById("borneXDroite").value) + borneYGauche = parseFloat(document.getElementById("borneYGauche").value) + borneYDroite = parseFloat(document.getElementById("borneYDroite").value) + multiplicateurX = largeur/Math.abs(borneXDroite - borneXGauche) + multiplicateurY = hauteur/Math.abs(borneYDroite - borneYGauche) + lineWidth = document.getElementById("inputTaille").value + var i = 0 + var y1, p1 + + for(x=borneXGauche; x<=(borneXDroite+5*precision); x=x+precision){ + y = eval(eq) + i++ + if(!isNaN(y)){ + pointX[i] = (x - borneXGauche) * multiplicateurX + pointY[i] = hauteur - ((y - borneYGauche) * multiplicateurY) + pente[i] = hauteur - (((y-y1)/precision - borneYGauche)* multiplicateurY) + pente2[i] = hauteur - ((((y-y1)/precision-p1)/precision - borneYGauche)* multiplicateurY) + p1 = (y-y1)/precision + y1 = y + } + else{ + pointX[i] = "undefined" + pointY[i] = "undefined" + pente[i] = "undefined" + pente2[i] = "undefined" + } + } + pente[1]=pente[2] + pente2[2]=pente2[3] + pente2[1]=pente2[2] + + calculerGraphCanevas(i) + } + + +// ---- SVG (une image) ---- +// Génère le code HTML qui permet d'afficher le graphique et le place dans la div "affichage" + function calculerGraphSVG2(fin){ + image = "" + for (i=1; i' + } + graphique = '' + graphique = graphique + '' + image = ''+image+graphique+' ' + document.getElementById("affichage").innerHTML = image + //alert(image) + } + +// ---- SVG (images multiples) ---- +// Créé les différents éléments pour dessiner la fonction mathématique +// et les place dans la div "affichage" + function calculerGraphSVG(fin){ + document.getElementById("affichage").innerHTML = "" + svg = document.createElementNS("http://www.w3.org/2000/svg", "svg") + svg.setAttribute("width", "100%") + svg.setAttribute("height", "100%") + for (i=1; ihauteur)){ + i++ + } + if ((pointY[i]>hauteur) && (pointY[i+1]<0)){ + i++ + } + var ligne = document.createElementNS("http://www.w3.org/2000/svg", "line") + ligne.setAttribute("x1", pointX[i]+decalageX) + ligne.setAttribute("x2", pointX[i+1]+decalageX) + ligne.setAttribute("y1", pointY[i]+decalageY) + ligne.setAttribute("y2", pointY[i+1]+decalageY) + ligne.setAttribute("stroke", couleurFonction) + ligne.setAttribute("stroke-width", lineWidth) + svg.appendChild(ligne) + } + + // dérivée + if(document.getElementById("checkDerivee").checked){ + for (i=1; i' + ctx = document.getElementById('canvas').getContext('2d') + var undefined = true + // Autres fonctions + for(var i=0; i-20 && yhauteur)){ + sankore.moveTo(pointX[i+1]+decalageX,pointY[i+1]+decalageY) + continue + } + sankore.drawLineTo(pointX[i]+decalageX, pointY[i]+decalageY, lineWidth) + } + + //dessiner le cadre + sankore.moveTo(0+decalageX,0+decalageY) + sankore.drawLineTo(largeur+decalageX, 0+decalageY, lineWidth) + sankore.drawLineTo(largeur+decalageX, hauteur+decalageY, lineWidth) + sankore.drawLineTo(0+decalageX, hauteur+decalageY, lineWidth) + sankore.drawLineTo(0+decalageX, 0+decalageY, lineWidth) + + //dessiner les axes + sankore.moveTo((-borneXGauche*multiplicateurX)+decalageX, 0+decalageY) + sankore.drawLineTo((-borneXGauche*multiplicateurX)+decalageX, hauteur+decalageY, lineWidth) + sankore.moveTo(0+decalageX, (hauteur-(-borneYGauche*multiplicateurY))+decalageY) + sankore.drawLineTo(largeur+decalageX, (hauteur-(-borneYGauche*multiplicateurY))+decalageY, lineWidth) + + decalageX += 250 + decalageY += 200 + largeur -= 100 + hauteur -= 100 + sankore.setTool('arrow') + } + \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/AffichageXPM.js b/resources/library/applications/GraphMe.wgt/JavaScript/AffichageXPM.js new file mode 100644 index 00000000..6c1e8d1e --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/JavaScript/AffichageXPM.js @@ -0,0 +1,65 @@ +// -------------------- XPM -------------------- +// Diverses fonctions permettant de dessiner la fonction mathématique à +// l'aide d'une image au format XPM + +// Permet de calculer tous les points de l'image et de les placer dans un tableau. +// Chaque "case" du tableau est un point de l'image. +// Plus tard, chaque pixel de l'image correspondra a une case du tableau. +// Le pixel sera blanc si la "case" vaut 0 et sera noir si la "case" vaut 1 + function evaluerXPM(eq){ + tableauUni(0) + var y = 0 + BoucleFor: for (x=0; xhauteur-1){ break BoucleFor } + tableau[y][x] = 1 + } + tableau.reverse() + graphique = "" + calculerGraphXPM() + } + +// Permet de remplir le tableau avec uniquement des 1 ou des 0. +// (pour que l'image soit toute blanche ou toute noir) + function tableauUni(valeurCouleur){ + for (i=0; i" + document.getElementById("affichage").innerHTML = image + } \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/CartesianFunction.js b/resources/library/applications/GraphMe.wgt/JavaScript/CartesianFunction.js deleted file mode 100644 index 8ea53c78..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/CartesianFunction.js +++ /dev/null @@ -1,337 +0,0 @@ - -function CartesianFunction(txtFct){ - - this.setFct = function(txt){ - this.fct = txt; - this.f = new Function("x", "y", "return "+this.fct); - } - - if(txtFct){ - this.setFct(txtFct); - } - this.couleur = fct.couleur; - this.width = document.getElementById("inputTaille").value; - this.aire = document.getElementById("checkAire").checked ? true : false; - this.derivee1 = document.getElementById("checkDerivee1").checked ? true : false; - this.couleurDerivee1 = "rgba(255,128,0,1)"; - this.derivee2 = document.getElementById("checkDerivee2").checked ? true : false; - this.couleurDerivee2 = "rgba(255,255,0,1)"; - this.primitive1 = document.getElementById("checkPrimitive1").checked ? true : false; - this.couleurPrimitive1 = "rgba(255,50,0,1)"; - this.conditionInitiale = 0; - this.style = document.getElementById("selectStyle").value; - - this.getX = function(x){ - return x; - }; - - this.getY = function(x){ - return this.f(x); - }; - - this.set = function(f){ - this.setFct(fct.remplacer(fct.verifier(f.fct))); - this.couleur = f.couleur; - this.couleurDerivee1 = f.couleurD1; - this.couleurDerivee2 = f.couleurD2; - this.couleurPrimitive1 = f.couleurP1; - this.width = f.width; - this.style = f.style; - this.aire = f.aire; - this.derivee1 = f.derivee1; - this.derivee2 = f.derivee2; - this.primitive1 = f.primitive1; - this.conditionInitiale = f.conditionInitiale; - return this; - }; - - this.get = function(){ - var f = {}; - f.type = "cartesian"; - f.fct = this.fct; - f.couleur = this.couleur; - f.couleurD1 = this.couleurDerivee1; - f.couleurD2 = this.couleurDerivee2; - f.couleurP1 = this.couleurPrimitive1; - f.width = this.width; - f.style = this.style; - f.aire = this.aire; - f.derivee1 = this.derivee1; - f.derivee2 = this.derivee2; - f.primitive1 = this.primitive1; - f.conditionInitiale = this.conditionInitiale; - return f; - }; - - this.readableText = function(){ - return "f(x) = " + this.fct; - }; - - this.plot = function(ctx, precision, affichage){ - var x, y; - var pointX, pointY; - var nonDefini; - - if(this.style == "points"){ - precision *= 2; - } - - // Dérivée première - if(this.derivee1){ - ctx.beginPath(); - ctx.strokeStyle = this.couleurDerivee1; - ctx.fillStyle = this.couleurDerivee1; - ctx.moveTo(-100,-100); - nonDefini = 1; - var pente; - var x0 = affichage.xGauche-precision; - var y0 = this.f(x0); - - for(x = affichage.xGauche-precision*2; x <= affichage.xDroite+precision; x+=precision){ - // Evaluer la valeur y du point x - y = this.f(x); - if(!isNaN(y)){ - // Transformation des coordonnées - pente = (y-y0)/precision; - pointX = (x-precision/2 - affichage.xGauche) * affichage.multX; - pointY = affichage.hauteur - (pente - affichage.yBas) * affichage.multY; - y0 = y; - - // Dessiner la dérivée - if(nonDefini>0){ - nonDefini--; - ctx.moveTo(pointX, pointY); - } - else{ - if(this.style == "continu"){ - ctx.lineTo(pointX, pointY); - } - else if(this.style == "points"){ - ctx.beginPath(); - ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); - ctx.fill(); - } - else{ - ctx.lineTo(pointX, pointY); - nonDefini = 1; - } - } - } - else{ - nonDefini = 2; - } - } - if(this.style != "points"){ - ctx.stroke(); - } - } - - // Dérivée seconde - if(this.derivee2){ - ctx.beginPath(); - ctx.strokeStyle = this.couleurDerivee2; - ctx.fillStyle = this.couleurDerivee2; - ctx.moveTo(-100,-100); - nonDefini = 1; - var pente, pente2; - var x0 = affichage.xGauche-precision; - var y0 = this.f(x0); - var p0 = 0; - - for(x = affichage.xGauche-precision*3; x <= affichage.xDroite+precision; x+=precision){ - // Evaluer la valeur y du point x - y = this.f(x); - if(!isNaN(y)){ - // Transformation des coordonnées - p = (y-y0)/precision; - pente = (p-p0)/precision; - pointX = (x-precision/2 - affichage.xGauche) * affichage.multX; - pointY = affichage.hauteur - (pente - affichage.yBas) * affichage.multY; - y0 = y; - p0 = p; - - // Dessiner la dérivée seconde - if(nonDefini>0){ - nonDefini--; - ctx.moveTo(pointX, pointY); - } - else{ - if(this.style == "continu"){ - ctx.lineTo(pointX, pointY); - } - else if(this.style == "points"){ - ctx.beginPath(); - ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); - ctx.fill(); - } - else{ - ctx.lineTo(pointX, pointY); - nonDefini = 1; - } - } - } - else{ - nonDefini = 3; - } - } - if(this.style != "points"){ - ctx.stroke(); - } - } - - // Primitive première - if(this.primitive1){ - ctx.beginPath(); - ctx.strokeStyle = this.couleurPrimitive1; - ctx.fillStyle = this.couleurPrimitive1; - ctx.moveTo(-affichage.xGauche*affichage.multX,affichage.hauteur-(this.conditionInitiale-affichage.yBas)*affichage.multY); - nonDefini = 0; - var pente, y0; - var conditionInitiale = this.conditionInitiale; -// precision /= 4; - - // Partie droite - y0 = conditionInitiale; - for(x = precision; x <= affichage.xDroite+precision; x+=precision){ - // Evaluer la valeur y du point x - pente = this.f(x); - if(!isNaN(pente)){ - // Transformation des coordonnées - y = y0 + pente * precision; - - pointX = (x - affichage.xGauche) * affichage.multX; - pointY = affichage.hauteur - (y - affichage.yBas) * affichage.multY; - y0 = y; - - // Dessiner la primitive - if(nonDefini>0){ - nonDefini--; - ctx.moveTo(pointX, pointY); - } - else{ - if(this.style == "continu"){ - ctx.lineTo(pointX, pointY); - } - else if(this.style == "points"){ - ctx.beginPath(); - ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); - ctx.fill(); - } - else{ - ctx.lineTo(pointX, pointY); - nonDefini = 1; - } - } - } - else{ - nonDefini = 2; - } - } - if(this.style != "points"){ - ctx.stroke(); - } - // Partie gauche - ctx.beginPath(); - ctx.moveTo(-affichage.xGauche*affichage.multX,affichage.hauteur-(this.conditionInitiale-affichage.yBas)*affichage.multY); - nonDefini = 0; - y0 = conditionInitiale; - for(x = -precision; x >= affichage.xGauche-precision; x-=precision){ - // Evaluer la valeur y du point x - pente = this.f(x); - if(!isNaN(pente)){ - // Transformation des coordonnées - y = y0 - pente * precision; - - pointX = (x - affichage.xGauche) * affichage.multX; - pointY = affichage.hauteur - (y - affichage.yBas) * affichage.multY; - y0 = y; - - // Dessiner la primitive - if(nonDefini>0){ - nonDefini--; - ctx.moveTo(pointX, pointY); - } - else{ - if(this.style == "continu"){ - ctx.lineTo(pointX, pointY); - } - else if(this.style == "points"){ - ctx.beginPath(); - ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); - ctx.fill(); - } - else{ - ctx.lineTo(pointX, pointY); - nonDefini = 1; - } - } - } - else{ - nonDefini = 2; - } - } - if(this.style != "points"){ - ctx.stroke(); - } - } - - // Fonction - ctx.beginPath(); - ctx.lineWidth = this.width; - if(affichage.methode == "uniboard"){ - ctx.lineWidth *= 3; - } - ctx.strokeStyle = this.couleur; - ctx.fillStyle = this.couleur; - ctx.moveTo(-100,-100); - nonDefini = true; - for(x = affichage.xGauche-precision; x <= affichage.xDroite+precision; x+=precision){ - // Evaluer la valeur y du point x - y = this.f(x); - if(!isNaN(y) && y <= affichage.yHaut+Math.abs(affichage.yHaut) && y >= affichage.yBas-Math.abs(affichage.yBas)){ - // Transformation des coordonnées - pointX = (x - affichage.xGauche) * affichage.multX; - pointY = affichage.hauteur - (y - affichage.yBas) * affichage.multY; - - // Dessiner la fonction - if(nonDefini){ - nonDefini = false; - ctx.moveTo(pointX, pointY); - } - else{ - if(this.style == "continu"){ - ctx.lineTo(pointX, pointY); - } - else if(this.style == "points"){ - ctx.beginPath(); - ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); - ctx.fill(); - } - else{ - ctx.lineTo(pointX, pointY); - nonDefini = true; - } - } - - // Dessiner l'aire sous la fonction - if(this.aire){ - var zero = affichage.hauteur + affichage.yBas * affichage.multY; - var l = precision*affichage.multX; - ctx.fillStyle = "rgba(0,180,255,0.3)"; - ctx.fillRect(pointX-l/2, zero, l , pointY-zero); - ctx.fillStyle = this.couleur; - } - } - else{ - nonDefini = true; - } - } - if(this.style != "points"){ - ctx.stroke(); - } - - if(this.style == "points"){ - precision /= 2; - } - }; -} diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/ColorPicker.js b/resources/library/applications/GraphMe.wgt/JavaScript/ColorPicker.js index ac4383ef..a90b82e6 100644 --- a/resources/library/applications/GraphMe.wgt/JavaScript/ColorPicker.js +++ b/resources/library/applications/GraphMe.wgt/JavaScript/ColorPicker.js @@ -1,580 +1,108 @@ // -------------------- Color Picker -------------------- -var idColor = ""; +var idColor = "" // Différentes fonctions nécessaire au Color Picker (menu du choix de la couleur) +function colorSV(e){ + var element = document.getElementById('colorSV') + var posDivY = 0 + var posDivX = 0 + while(element){ + posDivY = posDivY + element.offsetTop + posDivX = posDivX + element.offsetLeft + element = element.offsetParent + } + document.getElementById("info").innerHTML = posDivX+" ; "+posDivY + S = 100-Math.round((e.clientY - posDivY -0)/255*100) + V = Math.round((e.clientX - posDivX -0)/255*100) + document.getElementById("inputValeur").value = V + document.getElementById("inputSaturation").value = S + document.getElementById("ligneValeur").setAttribute("x1", e.clientX-posDivX) + document.getElementById("ligneValeur").setAttribute("x2", e.clientX-posDivX) + document.getElementById("ligneSaturation").setAttribute("y1", e.clientY-posDivY) + document.getElementById("ligneSaturation").setAttribute("y2", e.clientY-posDivY) + colorRGB() +} -var colorPicker = { - // Configuration - idSV : "canvasSV", // id du canvas affichant la saturation et la valeur - idT : "canvasT", // id du canvas affichant la teinte - idO : "canvasO", // id du canvas affichant l'opacité - width : 250, // largeur - height : 250, // hauteur - rayonRonds : 5, // rayon des ronds - ombreActive : "0px 0px 3px rgba(150,200,255,1), 0px 0px 8px rgba(64,190,255,1)", - ombreInactive : "0px 0px 5px rgba(64,64,64,0.4)", - - // Variables définies lors de l'initialisation - canvasSV : null, - canvasT : null, - canvasO : null, - ctxSV : null, - ctxT : null, - ctxO : null, - lingradS : null, - lingradV : null, - lingradT : null, - - // Couleurs - backgroundColor : "rgb(193,255,0)", - saturation : 100, - valeur : 100, - teinte : 75, - rouge : 193, - vert : 255, - bleu : 0, - opacity: 1, - // Couleurs RGB sans application de la saturation et de la valeur - r : 255, - g : 0, - b : 0, - - // Autres variables - sourisDown : false, // Indique si on clique sur le colorPicker ou pas - sourisDehors : true, // Indique si la souris est en-dehors du colorPicker lors d'un clique - idColor : null, - - // Fonction d'initialisation - init : function(id){ - // Récupérer les éléments - this.canvasSV = document.getElementById(this.idSV); - this.canvasT = document.getElementById(this.idT); - this.canvasO = document.getElementById(this.idO); - - // Définir la taille - this.canvasSV.width = this.width; - this.canvasSV.height = this.height; - this.canvasSV.style.width = this.width + "px"; - this.canvasSV.style.height = this.height + "px"; - - this.canvasT.width = this.width/10; - this.canvasT.height = this.height; - this.canvasT.style.width = this.width/10 + "px"; - this.canvasT.style.height = this.height + "px"; - - this.canvasO.width = this.width*1.15; - this.canvasO.height = this.height/10; - this.canvasO.style.width = this.width*1.15 + "px"; - this.canvasO.style.height = this.height/10 + "px"; - - // Initialisation canvas - this.ctxSV = this.canvasSV.getContext("2d"); - this.ctxT = this.canvasT.getContext("2d"); - this.ctxO = this.canvasO.getContext("2d"); - - // Création des dégradés - this.lingradV = this.ctxSV.createLinearGradient(0, 0, 0, this.height); - this.lingradV.addColorStop(0, 'rgba(255,255,255,0)'); - this.lingradV.addColorStop(1, 'rgba(255,255,255,1)'); - - this.lingradS = this.ctxSV.createLinearGradient(0, 0, this.width, 0); - this.lingradS.addColorStop(0, 'rgba(0,0,0,1)'); - this.lingradS.addColorStop(1, 'rgba(0,0,0,0)'); - - this.lingradT = this.ctxT.createLinearGradient(0, 0, 0, this.height); - this.lingradT.addColorStop(0, 'rgb(255,0,0)'); - this.lingradT.addColorStop(1/6, 'rgb(255,255,0)'); - this.lingradT.addColorStop(2/6, 'rgb(0,255,0)'); - this.lingradT.addColorStop(3/6, 'rgb(0,255,255)'); - this.lingradT.addColorStop(4/6, 'rgb(0,0,255)'); - this.lingradT.addColorStop(5/6, 'rgb(255,0,255)'); - this.lingradT.addColorStop(1, 'rgb(255,0,0)'); - - // Événements roulette (initialisé seulement une fois) - if(window.addEventListener && !this.idColor){ - this.canvasSV.addEventListener('DOMMouseScroll', function(event){colorPicker.eventWheel(event, colorPicker.idSV)}, false); - this.canvasSV.onmousewheel = function(event){colorPicker.eventWheel(event, colorPicker.idSV)}; - this.canvasT.addEventListener('DOMMouseScroll', function(event){colorPicker.eventWheel(event, colorPicker.idT)}, false); - this.canvasT.onmousewheel = function(event){colorPicker.eventWheel(event, colorPicker.idT)}; - this.canvasO.addEventListener('DOMMouseScroll', function(event){colorPicker.eventWheel(event, colorPicker.idO)}, false); - this.canvasO.onmousewheel = function(event){colorPicker.eventWheel(event, colorPicker.idO)}; - } - - // Définir la couleur - this.idColor = id; - var couleur = eval(document.getElementById(this.idColor).title); -// alert(id+" ; "+couleur) - document.getElementById("apercuCouleur").style.backgroundColor = couleur; - document.getElementById("apercuCouleur2").style.backgroundColor = couleur; - this.definirCouleur(couleur); - - // Dessiner - this.dessiner(); - this.dessinerApercu(); - - // Définir les valeurs des inputs - this.definirInputs(); - - // Définir le style de l'ombre - this.sourisOut(); - - }, - - definirCouleur : function(colorRGB){ - var table = /(.*?)rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(colorRGB); - if (table == null){ - table = /(.*?)rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(colorRGB); - } - if(table == null){ - return ""; - } - this.rouge = parseInt(table[2]); - this.vert = parseInt(table[3]); - this.bleu = parseInt(table[4]); - this.RGB_SVT(); - }, - - sourisClick : function(id){ - this.sourisDown = id; - if(id != this.idO){ - document.getElementById(id).style.boxShadow = this.ombreActive; - } - }, - - sourisOut : function(){ - this.canvasSV.style.boxShadow = this.ombreInactive; - this.canvasT.style.boxShadow = this.ombreInactive; - }, - - sourisOver : function(id){ - if(this.sourisDown == id && id != this.idO){ - document.getElementById(id).style.boxShadow = this.ombreActive; - } - }, - - sourisUp : function(){ - this.sourisDown = false; - this.canvasSV.style.boxShadow = this.ombreInactive; - this.canvasT.style.boxShadow = this.ombreInactive; - this.dessinerO(); - }, - - eventWheel : function(event, id){ - if(!event) event = window.event; - if(event.wheelDelta){ - if(event.wheelDelta < 0){ - colorPicker.sourisWheelUp(id); - } - else{ - colorPicker.sourisWheelDown(id); - } - } - else if(event.detail){ - if(event.detail > 0){ - colorPicker.sourisWheelUp(id); - } - else{ - colorPicker.sourisWheelDown(id); - } - } - }, - - sourisWheelUp : function(id){ - switch(id){ - case this.idT: - colorPicker.ajouterT(5); - break; - case this.idO: - colorPicker.ajouterO(0.1); - break; - case this.idSV: - colorPicker.ajouterS(-5); - break; - } - }, - - sourisWheelDown : function(id){ - switch(id){ - case this.idT: - colorPicker.ajouterT(-5); - break; - case this.idO: - colorPicker.ajouterO(-0.1); - break; - case this.idSV: - colorPicker.ajouterS(5); - break; - } - }, - - ajouterT : function(nbr){ - this.teinte += nbr; - if(this.teinte < 0){ - this.teinte = 0; - } - else if(this.teinte > 360){ - this.teinte = 360; - } - this.SVT_RGB(); - }, - - ajouterO : function(nbr){ - this.opacity = Math.round((this.opacity+nbr)*100)/100; - if(this.opacity < 0){ - this.opacity = 0; - } - else if(this.opacity > 1){ - this.opacity = 1; - } - this.SVT_RGB(); - }, - - ajouterS : function(nbr){ - this.saturation += nbr; - if(this.saturation < 0){ - this.saturation = 0; - } - else if(this.saturation > 100){ - this.saturation = 100; - } - this.SVT_RGB(); - }, - - // Lors du déplacement de la souris - moveSV : function(event){ - // Vérifie si on appuie sur la souris - if(this.sourisDown != this.idSV){ - return 0; - } - - var element = this.canvasSV; - var posDivY = 0; - var posDivX = 0; - - // Récupérer la position du canvas par rapport à la page - while(element){ - posDivY = posDivY + element.offsetTop; - posDivX = posDivX + element.offsetLeft; - element = element.offsetParent; - } - - // Définir la saturation et la valeur à partir de la position de la souris - this.saturation = 100-Math.round((event.clientY - posDivY -1)/(this.height+1)*100); - this.valeur = Math.round((event.clientX - posDivX -1)/(this.width+1)*100); - - this.SVT_RGB(); - }, - moveT : function(event){ - if(this.sourisDown != this.idT){ - return 0; - } - var element = this.canvasT; - var posDivY = 0; - - while(element){ - posDivY = posDivY + element.offsetTop; - element = element.offsetParent; - } - - this.teinte = Math.round( (event.clientY - posDivY -0) / (this.height+1)*360); - - this.SVT_RGB(); - }, - - SVT_RGB : function(){ - this.T_rgb(); - this.rouge = Math.round((this.r + (255-this.r) * (-1) * (this.saturation-100) / 100 )* this.valeur / 100); - this.vert = Math.round((this.g + (255-this.g) * (-1) * (this.saturation-100) / 100 )* this.valeur / 100); - this.bleu = Math.round((this.b + (255-this.b) * (-1) * (this.saturation-100) / 100 )* this.valeur / 100); - - this.definirInputs(); - this.dessinerApercu(); - this.dessiner(); - }, - - T_rgb : function(){ - var r,g,b = 0; - var T = this.teinte; - +function colorT(e){ + var element = document.getElementById('colorT') + var posDiv = 0 + while(element){ + posDiv = posDiv + element.offsetTop + element = element.offsetParent + } + T = (e.clientY - posDiv -0) / 256*360 + r,g,b = 0 + while (true){ if (T<60){ - r = 255; - g = T/60*255; - b = 0; - } - else if (T<120){ - r = (255-(T%60/60*255))%256; - g = 255; - b = 0; - } - else if (T<180){ - r = 0; - g = 255; - b = T%60/60*255; - } - else if (T<240){ - r = 0; - g = (255-(T%60/60*255))%256; - b = 255; - } - else if (T<300){ - r = T%60/60*255; - g = 0; - b = 255; - } - else if (T<360){ - r = 255; - g = 0; - b = (255-(T%60/60*255))%256; - } - else{ - r = 255; - g = 0; - b = 0; - } - - this.r = Math.round(r); - this.g = Math.round(g); - this.b = Math.round(b); - }, - - RGB_SVT : function(){ - // Voir http://fr.wikipedia.org/wiki/Teinte_Saturation_Valeur#Conversion_de_RVB_vers_TSV - var r = this.rouge/255; - var g = this.vert/255; - var b = this.bleu/255; - if(!isFinite(r)){ - r = 0; - } - if(!isFinite(g)){ - g = 0; - } - if(!isFinite(b)){ - b = 0; - } - var max = Math.max(r,g,b); - var min = Math.min(r,g,b); - var s, v, t; - // Teinte - switch(max){ - case r: - t = (60 * (g-b)/(max-min) + 360) % 360; - break; - case g: - t = 60 * (b-r)/(max-min) + 120; - break; - case b: - t = 60 * (r-g)/(max-min) + 240; - break; - default: /* case min: */ - t = 0; - break; - } - - // Saturation - if(max == 0){ - s = 0; - } - else{ - s = 1-(min/max); - } - - // Valeur - v = max; - - // Définir les variables - this.saturation = s*100; - this.valeur = v*100; - this.teinte = Math.round(t); - this.T_rgb(); - }, - - dessiner : function(){ - var ctxSV = this.ctxSV; - var ctxT = this.ctxT; - // Fond - ctxSV.fillStyle = "rgb("+this.r+","+this.g+","+this.b+")"; - ctxSV.fillRect(0, 0, this.width, this.height); - // Dégradés - ctxSV.fillStyle = this.lingradV; - ctxSV.fillRect(0, 0, this.width, this.height); - ctxSV.fillStyle = this.lingradS; - ctxSV.fillRect(0, 0, this.width, this.height); - // Souris - var x = Math.round(this.width*this.valeur/100); - var y = Math.round(this.height-this.height*this.saturation/100); - ctxSV.beginPath(); - ctxSV.arc(x, y, this.rayonRonds, 0, 2*Math.PI, true); - ctxSV.strokeStyle = "rgba(255,255,255,0.8)"; - ctxSV.shadowOffsetX = 1; - ctxSV.shadowOffsetY = 1; - ctxSV.shadowColor = "rgba(0,0,0,1)"; - ctxSV.shadowBlur = 2; - ctxSV.lineWidth = 1.5; - ctxSV.stroke(); - - // Fond Teinte - ctxT.fillStyle = this.lingradT; - ctxT.fillRect(0, 0, this.width/10, this.height); - // Souris Teinte - var pos = Math.round(0.99*this.height*this.teinte/360); - ctxT.fillStyle = "rgba(255,255,255,0.8)"; - ctxT.shadowOffsetX = 0; - ctxT.shadowOffsetY = 0; - ctxT.shadowColor = "rgba(0,0,0,1)"; - ctxT.shadowBlur = 3; - ctxT.fillRect(0, pos, this.width/10, 2); - - // Désactiver les ombres - ctxSV.shadowColor = "rgba(0,0,0,0)"; - ctxT.shadowColor = "rgba(0,0,0,0)"; - - this.dessinerO(); - }, - - dessinerApercu : function(){ - document.getElementById("apercuCouleur").style.backgroundColor = "rgba("+this.rouge+","+this.vert+","+this.bleu+","+this.opacity+")"; - }, - - definirInputs : function(){ - document.getElementById("inputValeur").value = this.valeur; - document.getElementById("inputSaturation").value = this.saturation; - document.getElementById("inputTeinte").value = this.teinte; - document.getElementById("inputRouge").value = this.rouge; - document.getElementById("inputVert").value = this.vert; - document.getElementById("inputBleu").value = this.bleu; - document.getElementById("inputOpacity").value = this.opacity; - }, - - recupererInputs : function(){ - this.valeur = parseInt(document.getElementById("inputValeur").value); - this.saturation = parseInt(document.getElementById("inputSaturation").value); - this.teinte = parseInt(document.getElementById("inputTeinte").value); - this.opacity = parseFloat(document.getElementById("inputOpacity").value); - this.SVT_RGB(); - - this.definirInputs(); - this.dessinerApercu(); - this.dessiner(); - }, - recupererInputs2 : function(){ - this.rouge = parseInt(document.getElementById("inputRouge").value); - this.vert = parseInt(document.getElementById("inputVert").value); - this.bleu = parseInt(document.getElementById("inputBleu").value); - this.RGB_SVT(); - - this.definirInputs(); - this.dessinerApercu(); - this.dessiner(); - }, - - moveO : function(event){ - if(this.sourisDown != this.idO){ - return 0; - } - - var element = this.canvasO; - var posDivX = 0; - while(element){ - posDivX = posDivX + element.offsetLeft; - element = element.offsetParent; - } - - this.opacity = Math.round( (event.clientX - posDivX -this.width/10) / (this.width*0.9)*100)/100; - if(this.opacity < 0){ - this.opacity = 0; - } - else if(this.opacity > 1){ - this.opacity = 1; - } - this.dessinerO(); - this.definirInputs(); - this.dessinerApercu(); - }, - - dessinerO : function(){ - var ctx = this.ctxO; - - ctx.shadowBlur = 2; - - // Ligne - if(this.sourisDown == this.idO){ - ctx.shadowColor = "rgba(0,50,100,1)"; - } - else{ - ctx.shadowColor = "rgba(0,0,0,1)"; - } - ctx.globalAlpha = 1; - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 0; - ctx.fillStyle = "rgba("+this.rouge+","+this.vert+","+this.bleu+",1)"; - ctx.clearRect(0,0,this.width*1.15,this.height); - ctx.fillRect(this.width/10, this.height/20-1, this.width*0.9, 3); - - // Rond - var x = this.width/10 + this.width*0.9*this.opacity-1; - var y = this.height/20; - if(this.sourisDown == this.idO){ - ctx.fillStyle = "rgba(0,40,80,1)"; - ctx.strokeStyle = "rgba(230,250,255,0.8)"; - } - else{ - ctx.fillStyle = "rgba(0,0,0,1)"; - ctx.strokeStyle = "rgba(255,255,255,0.8)"; - } - ctx.globalAlpha = 0.1+this.opacity*0.9; - ctx.beginPath(); - ctx.arc(x, y, this.rayonRonds+1, 0, 2*Math.PI, true); - ctx.shadowColor = "rgba(0,0,0,1)"; - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 1; - ctx.lineWidth = 1; - ctx.fill(); - ctx.stroke(); - - // Petits ronds - ctx.globalAlpha = 1; - ctx.shadowColor = "rgba(0,0,0,1)"; - - ctx.beginPath(); - ctx.arc(8, this.height/20+0.5, this.rayonRonds, 0, 2*Math.PI, true); - ctx.strokeStyle = "rgba(0,0,0,0.5)"; - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 0; - ctx.lineWidth = 1; - ctx.stroke(); - - ctx.beginPath(); - ctx.arc(this.width*1.08, this.height/20+0.5, this.rayonRonds, 0, 2*Math.PI, true); - ctx.strokeStyle = "rgba(0,0,0,0.8)"; - ctx.fillStyle = "rgba(0,0,0,0.6)"; - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 0; - ctx.lineWidth = 1; - ctx.stroke(); - ctx.fill(); - }, - - exporterCouleur : function(){ - eval(document.getElementById(this.idColor).title+' = "rgba(" + this.rouge +", " + this.vert + ", " + this.bleu +", "+this.opacity+")"'); - document.getElementById(this.idColor).style.backgroundColor = eval(document.getElementById(this.idColor).title); - }, - - fermer : function(){ - colorPicker.exporterCouleur(); - if(colorPicker.idColor == 'buttonColor'){ - cacherMenu(); - } - else if(dernierMenu == "menuFonctions"){ - editeur.getOptions(); - afficherMenu(dernierMenu); - } - else{ - cacherMenu(); - } - actualiserGraph(); + r = 255 + g = T/60*255 + b = 0 + break + } + if (T<=120){ + r = (255-(T%60/60*255))%256 + g = 255 + b = 0 + break + } + if (T<180){ + r = 0 + g = 255 + b = T%60/60*255 + break + } + if (T<=240){ + r = 0 + g = (255-(T%60/60*255))%256 + b = 255 + break + } + if (T<300){ + r = T%60/60*255 + g = 0 + b = 255 + break + } + if (T<360){ + r = 255 + g = 0 + b = (255-(T%60/60*255))%256 + break + } + r = 255 + g = 0 + b = 0 + break } -}; + T = Math.round(T) + r = Math.round(r) + g = Math.round(g) + b = Math.round(b) + document.getElementById("inputTeinte").value = T + document.getElementById("colorSV").style.backgroundColor = "rgb("+r+","+g+","+b+")" + document.getElementById("ligneTeinte").setAttribute("y2", e.clientY-posDiv) + document.getElementById("ligneTeinte").setAttribute("y1", e.clientY-posDiv) + colorRGB() +} +function colorRGB(){ + var S = document.getElementById("inputSaturation").value + var V = document.getElementById("inputValeur").value + var rouge = Math.round((r + (255-r) * (-1) * (S-100) / 100 )* V / 100) + var vert = Math.round((g + (255-g) * (-1) * (S-100) / 100 )* V / 100) + var bleu = Math.round((b + (255-b) * (-1) * (S-100) / 100 )* V / 100) + document.getElementById("inputRouge").value = rouge + document.getElementById("inputVert").value = vert + document.getElementById("inputBleu").value = bleu + eval(document.getElementById(idColor).title+' = "rgba(" + rouge +", " + vert + ", " + bleu +", "+document.getElementById("inputOpacity").value+")"') + document.getElementById(idColor).style.backgroundColor = eval(document.getElementById(idColor).title) + document.getElementById("apercuCouleur").style.backgroundColor = eval(document.getElementById(idColor).title) +} +function colorPicker(id){ + idColor = id + document.getElementById("apercuCouleur").style.backgroundColor = eval(document.getElementById(idColor).title) + document.getElementById("apercuCouleur2").style.backgroundColor = eval(document.getElementById(idColor).title) +} diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Editeur.js b/resources/library/applications/GraphMe.wgt/JavaScript/Editeur.js deleted file mode 100644 index ee9017d0..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Editeur.js +++ /dev/null @@ -1,216 +0,0 @@ - -var editeur = { - idFct : 0, - fct : { - fct : "", - fctX : "", - fctY : "", - from : 0, - to : 2*Math.PI, - couleur : "", - couleurD1 : "", - couleurD2 : "", - couleurP1 : "", - width : 2, - style : "continu", - aire : false, - derivee1 : false, - derivee2 : false, - primitive1 : false, - conditionInitiale : 0 - }, - editer : function(id){ - this.idFct = id; - if(fct.list[this.idFct]){ - document.getElementById("editeurFonction").style.visibility = "visible"; - this.setOptions(); - } - else{ - document.getElementById("editeurFonction").style.visibility = "hidden"; - } - fct.updateList(); - }, - couleur : function(id){ - colorPicker.init(id); - afficherMenu('menuCouleur'); - }, - getOptions : function(){ - this.fct.fct = document.getElementById("editeurInput").value; - this.fct.fctX = document.getElementById("editeurFctX").value; - this.fct.fctY = document.getElementById("editeurFctY").value; - this.fct.from = document.getElementById("editeurFrom").value; - this.fct.to = document.getElementById("editeurTo").value; - this.fct.width = document.getElementById("editeurWidth").value; - this.fct.style = document.getElementById("editeurStyle").value; - this.fct.aire = document.getElementById("editeurAire").checked ? true : false; - this.fct.derivee1 = document.getElementById("editeurD1").checked ? true : false; - this.fct.derivee2 = document.getElementById("editeurD2").checked ? true : false; - this.fct.primitive1 = document.getElementById("editeurP1").checked ? true : false; - if(this.fct.primitive1){ - document.getElementById("editeurConditionInitiale").disabled = ""; - document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(0,0,0)" - } - else{ - document.getElementById("editeurConditionInitiale").disabled = "disabled"; - document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(128,128,128)" - } - this.fct.conditionInitiale = parseFloat(document.getElementById("editeurConditionInitiale").value); - - fct.list[this.idFct].set(this.fct); - - fct.updateList(); - historique.ajouter(fct.list[this.idFct]); - this.apercu(); - }, - setOptions : function(){ - var f = fct.list[this.idFct].get(); - for(var i in f){ - this.fct[i] = f[i]; - } - - this.setDisplayStyle(); - - document.getElementById("editeurInput").value = this.fct.fct; - document.getElementById("editeurFctX").value = this.fct.fctX; - document.getElementById("editeurFctY").value = this.fct.fctY; - document.getElementById("editeurFrom").value = this.fct.from; - document.getElementById("editeurTo").value = this.fct.to; - document.getElementById("editeurCouleur").style.backgroundColor = this.fct.couleur; - document.getElementById("editeurCouleurD1").style.backgroundColor = this.fct.couleurD1; - document.getElementById("editeurCouleurD2").style.backgroundColor = this.fct.couleurD2; - document.getElementById("editeurCouleurP1").style.backgroundColor = this.fct.couleurP1; - document.getElementById("editeurWidth").value = this.fct.width; - document.getElementById("editeurStyle").value = this.fct.style; - document.getElementById("editeurAire").checked = this.fct.aire ? "checked" : ""; - document.getElementById("editeurD1").checked = this.fct.derivee1 ? "checked" : ""; - document.getElementById("editeurD2").checked = this.fct.derivee2 ? "checked" : ""; - document.getElementById("editeurP1").checked = this.fct.primitive1 ? "checked" : ""; - if(this.fct.primitive1){ - document.getElementById("editeurConditionInitiale").disabled = ""; - document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(0,0,0)" - } - else{ - document.getElementById("editeurConditionInitiale").disabled = "disabled"; - document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(128,128,128)" - } - document.getElementById("editeurConditionInitiale").value = this.fct.conditionInitiale; - - document.getElementById("outputX").innerHTML = " "; - document.getElementById("outputAire").innerHTML = " "; - this.apercu(); - }, - setDisplayStyle : function(){ - if(fct.list[this.idFct] instanceof CartesianFunction){ - document.getElementById("editeurFctPrefix").textContent = "f(x) = "; - document.getElementById("editeurFctDiv").style.display = "block"; - document.getElementById("editeurFctXYDiv").style.display = "none"; - document.getElementById("editeurRangeDiv").style.display = "none"; - document.getElementById("editeurDeriveesDiv").style.display = "block"; - document.getElementById("editeurStyleDiv").style.display = "block"; - document.getElementById("editeurAireDiv").style.display = "block"; - } - else if(fct.list[this.idFct] instanceof ImplicitFunction){ - document.getElementById("editeurFctPrefix").textContent = ""; - document.getElementById("editeurFctDiv").style.display = "block"; - document.getElementById("editeurFctXYDiv").style.display = "none"; - document.getElementById("editeurRangeDiv").style.display = "none"; - document.getElementById("editeurDeriveesDiv").style.display = "none"; - document.getElementById("editeurStyleDiv").style.display = "none"; - document.getElementById("editeurAireDiv").style.display = "none"; - } - else if(fct.list[this.idFct] instanceof PolarFunction){ - document.getElementById("editeurFctPrefix").textContent = "r(t) = "; - document.getElementById("editeurFctDiv").style.display = "block"; - document.getElementById("editeurFctXYDiv").style.display = "none"; - document.getElementById("editeurRangeDiv").style.display = "block"; - document.getElementById("editeurDeriveesDiv").style.display = "none"; - document.getElementById("editeurStyleDiv").style.display = "block"; - document.getElementById("editeurAireDiv").style.display = "none"; - } - else if(fct.list[this.idFct] instanceof ParametricFunction){ - document.getElementById("editeurFctDiv").style.display = "none"; - document.getElementById("editeurFctXYDiv").style.display = "block"; - document.getElementById("editeurRangeDiv").style.display = "block"; - document.getElementById("editeurDeriveesDiv").style.display = "none"; - document.getElementById("editeurStyleDiv").style.display = "block"; - document.getElementById("editeurAireDiv").style.display = "none"; - } - }, - etudier : function(){ - fct.etudier(this.idFct); - }, - supprimer : function(){ - fct.enlever(this.idFct); - if(!fct.list[this.idFct]){ - this.editer(this.idFct - 1); - } - else{ - this.editer(this.idFct); - } - }, - dupliquer : function(){ - fct.dupliquer(this.idFct); - this.editer(this.idFct + 1); - }, - apercu : function(){ - editorPreview.drawFunction(fct.list[this.idFct]); - } -}; - - -var editorPreview = { - id : "editeurApercu", - - xGauche : -5, - xDroite : 5, - yBas : -4, - yHaut : 4, - - largeur : 0, - hauteur : 0, - multX : 1, - multY : 1, - - ctx: null, - - init : function(){ - var canvas = document.getElementById("editeurApercu"); - this.ctx = canvas.getContext("2d"); - this.largeur = canvas.width; - this.hauteur = canvas.height; - this.multX = this.largeur/Math.abs(this.xDroite - this.xGauche); - this.multY = this.hauteur/Math.abs(this.yHaut - this.yBas); - this.precision = Math.abs(this.xDroite - this.xGauche)/50; - }, - - drawFunction : function(func){ - var x, y, pointX, pointY; - var ctx = this.ctx; - ctx.clearRect(0,0,100,80); - ctx.globalAlpha = 0.7; - ctx.fillStyle = "rgba(0,0,0,0.5)" - ctx.fillRect(0,39.5, 100, 1); - ctx.fillRect(49.5,0, 1, 80); - ctx.beginPath(); -// ctx.lineWidth = func.width/1.8; -// ctx.strokeStyle = func.couleur; -// ctx.moveTo(-100,-100); -// for(x = -5; x <= 5; x+=0.2){ -// // Evaluer la valeur y du point x -// try{ -// y = func.f(x); -// } -// catch(e){} -// if(!isNaN(y)){ -// // Transformation des coordonnées -// pointX = x * 10 + 50; -// pointY = 40 - y * 10; -// -// // Dessiner la fonction -// ctx.lineTo(pointX, pointY); -// } -// } - func.plot(ctx, this.precision, this); -// ctx.stroke(); - } -}; diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Etude.js b/resources/library/applications/GraphMe.wgt/JavaScript/Etude.js new file mode 100644 index 00000000..fea7d280 --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/JavaScript/Etude.js @@ -0,0 +1,356 @@ + +// -------------------- Etude de fonctions -------------------- + +var etudeX = new Array() +var etudeY = new Array() +var etudeD = new Array() +var limGauche = new Array() +var limDroite = new Array() +var listeIndefini = new Array() +var listeZeros = new Array() +var intervalEtudeGauche = -50 +var intervalEtudeDroite = 50 +var precisionEtude = 0.001 + +function etudier(fct){ + if(check(fct)){ + prepareEtude(fct) + pariteFct() + signeFct(fct) + asymptotes() + courbure() + ensembleDefinition() + } +} + +// Préparation à l'étude de fonction +function prepareEtude(fct){ + listeIndefini = new Array() + var f = function(x){ + return eval(fct) + } + // Calcul de tous les points de la fonction + var i = 0 + for(var x=intervalEtudeGauche; x<=intervalEtudeDroite; x+=precisionEtude){ + etudeX[i] = x + etudeY[i] = Math.round(f(x)*10000)/10000 + etudeD[i] = Math.round(1000000*(f(x+0.0001)-f(x-0.0001))/(2*0.0001))/1000000 + i++ + } + // Calcul des extrémités de la fonction + var x = -100000 + limGauche[0] = f(x) + x = -10000 + limGauche[1] = f(x) + x = 100000 + limDroite[0] = f(x) + x = 10000 + limDroite[1] = f(x) +} + +// Recherche de l'ensemble de définition +function ensembleDefinition(){ + var fctDefinie = false + var dejaDefinie = false + var EDF = "" + if(!isNaN(limGauche[0])){ + fctDefinie = true + dejaDefinie = true + EDF += "]-∞;" + } + if(!isNaN(limGauche[1]) && !fctDefinie){ + fctDefinie = true + dejaDefinie = true + EDF += "]-∞;" + } + for(var i=0; i0){ + positif = Math.floor(etudeY[posZero+i]) + } + else{ + positif = Math.ceil(etudeY[posZero+i]) + } + if(etudeY[posZero-i]>0){ + negatif = Math.floor(etudeY[posZero-i]) + } + else{ + negatif = Math.ceil(etudeY[posZero-i]) + } + + if(positif<25000 && positif>-25000){ + if(positif != negatif){ + paire = false + //alert(i+" ; "+posZero+" ; "+etudeX.length+" ; "+positif+" ; "+negatif) + } + if(positif != (-negatif)){ + impaire = false + } + } + } + if(paire){ + document.getElementById("etudeParite").innerHTML = sankoreLang[lang].ev; + } + else if(impaire){ + document.getElementById("etudeParite").innerHTML = sankoreLang[lang].unev; + } + else{ + document.getElementById("etudeParite").innerHTML = sankoreLang[lang].na; + } +} + +function zeroFct(){ + listeZeros = new Array() + var listeZerosArr = new Array() + var precZeros = 5 + for(var i=0; i0){ + signe[0] = "+" + signePlus[0] = limGauche[1] + signeMoins[0] = limGauche[0] + } + else{ + signe[0] = "-" + signePlus[0] = limGauche[1] + signeMoins[0] = limGauche[0] + } + for(var i=0; i0){ + dernier = i + } + } + if(signe[signe.length-1]=="-"){ + if(etudeY[i]>0){ + signe.push("+") + signePlus.push(etudeX[i]) + signeMoins.push(etudeX[dernier]) + //alert(signe+" ; "+signePlus+'\n'+etudeY[i+1]+" ; "+etudeY[i]+" ; "+etudeY[i-1]+" ; "+etudeY[i-2]+'\n'+etudeX[i+1]+" ; "+etudeX[i]+" ; "+etudeX[i-1]+" ; "+etudeX[i-2]) + } + else if(etudeY[i]<0){ + dernier = i + } + } + } + var valeurPlus, valeurMoins, millieu, precisionZero + listeZeros = new Array() + for(var i=1; i0){ + x = millieu + if(eval(fct)>0){ + valeurPlus=millieu + } + else if(eval(fct)<0){ + valeurMoins=millieu + } + else{ + break + } + } + else if(eval(fct)<0){ + x = millieu + if(eval(fct)<0){ + valeurPlus=millieu + } + else if(eval(fct)>0){ + valeurMoins=millieu + } + else{ + break + } + } + else{ + millieu = valeurPlus + break + } + x = valeurPlus + precisionZero = eval(fct) + x = valeurMoins + precisionZero -= eval(fct) + if(precisionZero>0.0001){ + break + } + } + listeZeros.push(Math.round(millieu*100)/100) + } + var texteZeros = "" + if(listeZeros==""){ + zeroFct() + texteZeros = "~ " + } + var texte = sankoreLang[lang].signe; + var aSupprimer = new Array() + for(var i=0; i" + if(listeZeros[i]!=undefined){ + x = listeZeros[i] + if(isFinite(eval(fct))){ + texte += ""+listeZeros[i]+"" + } + else{ + texte += ""+listeZeros[i]+"" + listeIndefini.push(listeZeros[i]) + aSupprimer.push(i) + } + } + } + document.getElementById("etudeSigne").innerHTML = texte + for(var i=0; i" + sankoreLang[lang].curve_higher + "" + } + else if(limGauche[0]>limRound){ + document.getElementById("etudeAHG").innerHTML = "y = "+limRound +" " + sankoreLang[lang].curve_lower + "" + } + else{ + document.getElementById("etudeAHG").innerHTML = "y = "+limRound + } + } + else{ + document.getElementById("etudeAHG").innerHTML = sankoreLang[lang].na; + } + if(Math.abs(limDroite[0])<1000){ + var limRound = Math.round(limDroite[0]*100)/100 + if(limDroite[0]" + sankoreLang[lang].curve_lower + "" + } + else if(limDroite[0]>limRound){ + document.getElementById("etudeAHD").innerHTML = "y = "+limRound +" " + sankoreLang[lang].curve_higher + "" + } + else{ + document.getElementById("etudeAHD").innerHTML = "y = "+limRound + } + } + else{ + document.getElementById("etudeAHD").innerHTML = sankoreLang[lang].na; + } + // Verticales + var texteAV = "" + for(var i=0; i" + } + document.getElementById("etudeAV").innerHTML = texteAV +} + +function courbure(){ + var texteMin = ""; + var texteMax = ""; + var texteI = ""; + var nbrI = 0; + var i; + for(i=0; i0){ + texteMin += "
" + sankoreLang[lang].min + "("+Math.round(etudeX[i]*10000)/10000+";"+etudeY[i]+")"; + } + else if(etudeD[i-1]>0 && etudeD[i+1]<0){ + texteMax += "
" + sankoreLang[lang].max + "("+Math.round(etudeX[i]*10000)/10000+";"+etudeY[i]+")"; + } + else{ + nbrI++; + texteI += '
I'+nbrI+"("+Math.round(etudeX[i]*10000)/10000+";"+etudeY[i]+")"; + } + } + } + if(texteMin==""){ + texteMin = "
" + sankoreLang[lang].no_min; + } + if(texteMax==""){ + texteMax = "
" + sankoreLang[lang].no_max; + } + if(texteI==""){ + texteI = "
Aucun I"; + } + document.getElementById("etudeMin").innerHTML = texteMin; + document.getElementById("etudeMax").innerHTML = texteMax; +} \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Etudes.js b/resources/library/applications/GraphMe.wgt/JavaScript/Etudes.js deleted file mode 100644 index ade1cf4f..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Etudes.js +++ /dev/null @@ -1,520 +0,0 @@ - -// -------------------- Etudes de fonctions -------------------- - -function consoleInfos(){ - var table = []; - for(var i in arguments){ - table.push(arguments[i]); - } - document.getElementById("infos").innerHTML += table +"
"; -} - -Array.prototype.first = function(){ - return this[0]; -} -Array.prototype.last = function(){ - return this[this.length-1]; -} -Array.prototype.removeDoubles = function(){ - // Sort numerically - this.sort(function(nbr1,nbr2){return nbr1-nbr2}); - // Remove doubles - for(var i=1; i' - } - else{ - txtSigne += ''+listeNbr[i][0]+'' - } - switch(b){ - case -1: - txtSigne += "-"; - dernierSigne = "-"; - break; - case 1: - txtSigne += "+"; - dernierSigne = "+"; - break; - } - } - document.getElementById("etudeSigneRow").innerHTML = txtSigne; -// consoleInfos(""+txtSigne+"
Signe :
"); - }, - - asymptotesNum : function(){ - var f = this.f; - // Verticales - var texteA = ""; - for(var i=0; i0){ - if(txtMinMax != ""){ - txtMinMax += "
"; - } - txtMinMax += "Min("+this.listeX[i]+";"+this.round(this.listeY[i])+")"; - } - else if(a>0 && b<0){ - if(txtMinMax != ""){ - txtMinMax += "
"; - } - txtMinMax += "Max("+this.listeX[i]+";"+this.round(this.listeY[i])+")"; - } - } -// consoleInfos(txtMinMax); - if(txtMinMax == ""){ - txtMinMax = "none"; - try{ - txtMinMax = languages.getText("none_m"); - } - catch(e){} - } - document.getElementById("etudeMinMax").innerHTML = txtMinMax; - }, - - pointI : function(){ - // Rechercher des zéros dans les points calculés - var listeID = []; -// for(var i=1; i("+this.listeX[i]+";"+this.round(this.listeY[i])+")"; - } -// consoleInfos(txtI); - if(txtI == ""){ - txtI = "none"; - try{ - txtI = languages.getText("none_m"); - } - catch(e){} - } - document.getElementById("etudeI").innerHTML = txtI; - }, - -} diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Fonction.js b/resources/library/applications/GraphMe.wgt/JavaScript/Fonction.js deleted file mode 100644 index 91e65de5..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Fonction.js +++ /dev/null @@ -1,226 +0,0 @@ - -var fct = { - list : [], - couleur : "rgba(193,255,0,1)", - colorsList : ["rgba(255,0,0,1)","rgba(255,128,0,1)","rgba(255,255,0,1)","rgba(128,255,0,1)","rgba(0,255,0,1)","rgba(0,255,128,1)","rgba(0,255,255,1)","rgba(0,128,255,1)","rgba(0,0,255,1)","rgba(128,0,255,1)","rgba(255,0,255,1)","rgba(255,0,128,1)"], - interdit : [";", "interdit", "'", '"', "eval", "new", "uniboard", "sankore", "=", "document", "window", "alert", "fct", "affichage", "colorPicker", "languages"], - - functionFromObject: function(f){ - if(f.type == "cartesian"){ - return new CartesianFunction().set(f); - } - else if(f.type == "implicit"){ - return new ImplicitFunction().set(f); - } - else if(f.type == "polar"){ - return new PolarFunction().set(f); - } - else if(f.type == "parametric"){ - return new ParametricFunction().set(f); - } - console.err("Unknown function:", f); - }, - - addCartesian : function(txt){ - var txtFct = this.remplacer(this.verifier(txt)); - if(txtFct == ""){ - return false; - } - - var f = new CartesianFunction(txtFct); - this.add(f, true); - - return true; - }, - - addImplicit : function(txtFct){ - var equalPos = txtFct.indexOf("="); - if(equalPos >= 0){ - txtFct = txtFct.replace("=", "-(") + ")"; - } - txtFct = this.remplacer(this.verifier(txtFct)); - if(txtFct == ""){ - return false; - } - - var f = new ImplicitFunction(txtFct); - this.add(f, true); - - return true; - }, - - addPolar : function(txt){ - var txtFct = this.remplacer(this.verifier(txt)); - if(txtFct == ""){ - return false; - } - - var f = new PolarFunction(txtFct); - this.add(f, true); - - return true; - }, - - addParametric : function(txtX, txtY){ - var fctX = this.remplacer(this.verifier(txtX)); - var fctY = this.remplacer(this.verifier(txtY)); - if(fctX == "" || fctY == ""){ - return false; - } - - var f = new ParametricFunction(fctX, fctY); - this.add(f, true); - - return true; - }, - - add : function(f, useRandomColor){ - this.list.unshift(f); - if(useRandomColor){ - f.couleur = this.colorsList[alea(0,this.colorsList.length-1)]; - } - historique.ajouter(f); - this.updateList(); - editeur.editer(0); - }, - - ajouter : function(){ - var type = document.getElementById("functionType").value; - if(type == "cartesian"){ - var input = document.getElementById("input"); - if(this.addCartesian(input.value)){ - input.value = ""; - } - } - else if(type == "implicit"){ - var input = document.getElementById("implicitInput"); - if(this.addImplicit(input.value)){ - input.value = ""; - } - } - else if(type == "polar"){ - var input = document.getElementById("polarInput"); - if(this.addPolar(input.value)){ - input.value = ""; - } - } - else if(type == "parametric"){ - var inputX = document.getElementById("parametricInputX"); - var inputY = document.getElementById("parametricInputY"); - if(this.addParametric(inputX.value, inputY.value)){ - inputX.value = ""; - inputY.value = ""; - } - } - }, - - changeType : function(type){ - document.getElementById("cartesianDiv").style.display = "none"; - document.getElementById("implicitDiv").style.display = "none"; - document.getElementById("polarDiv").style.display = "none"; - document.getElementById("parametricDiv").style.display = "none"; - document.getElementById(type+"Div").style.display = "initial"; - }, - - enlever : function(id){ - this.list.splice(id, 1); - this.updateList(); - }, - - dupliquer : function(id){ - var newFct = this.functionFromObject(this.list[id].get()); - newFct.couleur = this.colorsList[alea(0,this.colorsList.length-1)]; - this.list.splice(id+1, 0, newFct); - this.updateList(); - }, - - etudier : function(id){ - etude.etudier(this.list[id].fct); - afficherMenu("menuEtude"); - }, - - updateList : function(){ - var texteFctSupp = ""; - for(var i=0; i'+this.list[i].fct+''; - } - document.getElementById("fonctionsSupp").innerHTML = texteFctSupp; - affichage.dessiner(); - saveOptions(); - }, - - verifier : function(txtFonction){ - for(var i=0; i 0){ - editeur.editer(0); - } - } -}; diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/ImplicitFunction.js b/resources/library/applications/GraphMe.wgt/JavaScript/ImplicitFunction.js deleted file mode 100644 index 4fcb90b5..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/ImplicitFunction.js +++ /dev/null @@ -1,79 +0,0 @@ - -function ImplicitFunction(txtFct){ - - this.setFct = function(txt){ - this.fct = txt; - this.f = new Function("x", "y", "return "+this.fct); - } - - if(txtFct){ - this.setFct(txtFct); - } - this.couleur = fct.couleur; - this.width = document.getElementById("inputTaille").value; - this.style = document.getElementById("selectStyle").value; - - this.getX = function(x){ - return x; - }; - - this.getY = function(x){ - return -1000000; - }; - - this.set = function(f){ - var equalPos = f.fct.indexOf("="); - if(equalPos >= 0){ - f.fct = f.fct.replace("=", "-(") + ")"; - } - this.setFct(fct.remplacer(fct.verifier(f.fct))); - this.couleur = f.couleur; - this.width = f.width; - this.style = f.style; - return this; - }; - - this.get = function(){ - var f = {}; - f.type = "implicit"; - f.fct = this.fct; - f.couleur = this.couleur; - f.width = this.width; - f.style = this.style; - return f; - }; - - this.readableText = function(){ - return this.fct + " = 0"; - }; - - this.plot = function(ctx, precision, affichage){ - var epsilon = 0.01; - var width2 = this.width / 2; - precision /= 20; - - ctx.beginPath(); - ctx.lineWidth = this.width; - ctx.strokeStyle = this.couleur; - ctx.fillStyle = this.couleur; - ctx.moveTo(-100,-100); - for(var x = affichage.xGauche-precision; x <= affichage.xDroite+precision; x+=precision){ - for(var y = affichage.yBas-precision; y <= affichage.yHaut+precision; y+=precision){ - // Compute function for current (x, y) position - z = this.f(x, y); - // Check condition f(x, y) = 0 - if(!isNaN(z) && Math.abs(z) < epsilon){ - // Transform coordinates - var pointX = (x - affichage.xGauche) * affichage.multX; - var pointY = affichage.hauteur - (y - affichage.yBas) * affichage.multY; - - ctx.fillRect(pointX-width2, pointY-width2, this.width, this.width); -// ctx.beginPath(); -// ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); -// ctx.fill(); - } - } - } -// ctx.stroke(); - }; -} diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Interface.js b/resources/library/applications/GraphMe.wgt/JavaScript/Interface.js index e90111e5..34a1bef2 100644 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Interface.js +++ b/resources/library/applications/GraphMe.wgt/JavaScript/Interface.js @@ -1,10 +1,6 @@ // -------------------- Fonctions de l'interface -------------------- - -var menuActuel = "divInputRapide" -var dernierMenu = "" - var pleinEcran = false var maximise = true var tailleFenetreX = window.innerWidth @@ -16,56 +12,23 @@ var AncienneMethodeAffichage = 0 function afficherMenu(id){ if (menuActuel == id){ cacherMenu() - dernierMenu = false; } else { - if (menuActuel != ""){ - dernierMenu = menuActuel; + if (menuActuel !== ""){ cacherMenu() } menuActuel = id document.getElementById(id).style.display = "block" - message.supprimer(); } } // Permet de cacher le menu actuellement affiché function cacherMenu(){ - if(menuActuel != ""){ - document.getElementById(menuActuel).style.display = "none" - menuActuel = "" - } + document.getElementById(menuActuel).style.display = "none" + menuActuel = "" } -// Affiche un message d'erreur -function afficherErreur(message){ - document.getElementById("spanErreurFct").innerHTML = message; - afficherMenu("erreurFct"); -} - -// Messages d'info - -var message = { - liste : [], - ajouter : function(x, y, contenu){ - var newDiv = document.createElement("div"); - newDiv.style.left = x + "px"; - newDiv.style.top = y + "px"; - - var textDiv = document.createElement("span"); - textDiv.innerHTML = contenu; - newDiv.appendChild(textDiv); - - document.getElementById("divMessages").appendChild(newDiv); - }, - supprimer : function(){ - var div = document.getElementById("divMessages"); - div.innerHTML = ""; - } -}; - - -// ---- Minimiser ou Maximiser le widget (pour Uniboard) ---- +// ---- Minimiser ou Maximiser le widget (pour sankore) ---- function miniMax(){ if (maximise){ maximise = false @@ -86,17 +49,6 @@ function miniMax(){ } } -// Affiche le menu + -function menuFonctions(){ - if(fonction3D){ - afficherMenu('menuHistorique'); - } - else{ - afficherMenu('menuFonctions'); - editeur.editer(0); - } -} - // Action des petits bouton + et - dans les options function boutonPlus(id, nombre){ var element = document.getElementById(id) @@ -112,73 +64,101 @@ function boutonMoins(id, nombre){ } // Changer de thème -function changerTheme(theme){ - var positions = [ - "top-left", - "top", - "top-right", - "right", - "bottom-right", - "bottom", - "bottom-left", - "left", - "center" - ]; - for(var i=0; i'; -// txtHTML += ''; -// txtHTML += ''; - } - document.getElementById("newVersion").innerHTML = txtHTML; - - afficherMenu("mAj"); + afficherMenu("mAj") + choixOutil("deplacement") + document.getElementById("thisVersion").innerHTML = '' + document.getElementById("newVersion").innerHTML = '' } function checkboxMaJ(){ - if(versionOnline()){ + if(document.location.href=='http://gyb.educanet2.ch/tm-widgets/yannick/GraphMe.wgt/Grapheur.xhtml'){ afficherMenu('erreurMaJ') document.getElementById("checkMaJ").checked = false } @@ -223,52 +194,20 @@ function checkboxMaJ(){ } function majAuto(){ -// var audio = new Audio(); -// audio.src = "version.ogg"; -// audio.load(); -// setTimeout(function(){ -// window.console.log(" "+audio.duration); -// }, 0) - if(versionOnline()){ - document.getElementById("cacheMaJ").style.display = "block"; - document.getElementById("checkMaJ").disabled = true; - document.getElementById("checkMaJ").checked = true; + if(document.location.href=='http://gyb.educanet2.ch/tm-widgets/yannick/GraphMe.wgt/Grapheur.xhtml'){ + document.getElementById("cacheMaJ").style.display = "block" + document.getElementById("checkMaJ").checked = true } else{ if(document.getElementById("checkMaJ").checked){ - afficherMenu('demandeMaJ'); - } - } -} -function majAccept(){ -// document.location.href='http://gyb.educanet2.ch/tm-widgets/yannick/GraphMe.wgt/Grapheur.html'; - for(var i=0; i' - window.open(lien, "_blank") -} + cacherMenu() + agrandirAffichage() + document.getElementById("affichage").innerHTML = '' +} \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Languages.js b/resources/library/applications/GraphMe.wgt/JavaScript/Languages.js deleted file mode 100644 index ad5f9f04..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Languages.js +++ /dev/null @@ -1,508 +0,0 @@ - -var languages = { - current: "en", - - init: function(){ - var lang = this.navigatorLanguage(); - if(lang){ - lang = lang.substr(0,2); - this.set(lang); - } - }, - - navigatorLanguage: function(){ - if(window.sankore){ - return sankore.locale(); - } - return navigator.language || navigator.userLanguage; - }, - - set: function(lang){ - if(lang in langTexts){ - this.current = lang; - this.setTexts(langTexts[lang]); - } - }, - - getText: function(id){ - return langTexts[this.current][id]; - }, - - setTexts: function(texts){ - this.id("graphMeButton").textContent = texts.widgetName; - this.id("functionsButton").textContent = texts.functions; - this.id("displayButton").textContent = texts.display; - this.id("helpButton").textContent = texts.help; - - this.id("boutonAgrandir").title = texts.fullscreen; - this.id("boutonSaveGraph").title = texts.save; - this.id("inputRapideButton").value = texts.displayAction; - - this.id("pointTool").title = texts.pointTool; - this.id("moveTool").title = texts.moveTool; - this.id("tangentTool").title = texts.tangentTool; - - this.id("menuExempleCloseButton").value = texts.close; - - this.id("menuGraphMeOptionsTab").textContent = texts.options; - this.id("menuGraphMeAboutTab").textContent = texts.about; - this.id("widgetOptions").textContent = texts.widgetOptions; - this.id("widgetTheme").textContent = texts.widgetTheme; - this.id("selectThemeDarkBlue").textContent = texts.darkBlue; - this.id("selectThemeBlack").textContent = texts.black; - this.id("selectThemeBlue").textContent = texts.blue; - this.id("selectThemeWhite").textContent = texts.white; - this.id("resetWidgetButton").value = texts.resetWidget; - this.id("checkForUpdateButton").value = texts.checkForUpdate; - this.id("menuGraphMeCloseButton").value = texts.close; - - this.id("menuCreditsOptionsTab").textContent = texts.options; - this.id("menuCreditsAboutTab").textContent = texts.about; - this.id("widgetDevelopedBy").textContent = texts.widgetDevelopedBy; - this.id("widgetContactInfo").textContent = texts.widgetContactInfo; - this.id("widgetBackgroundSource").textContent = texts.widgetBackgroundSource; - this.id("changelogButton").textContent = texts.changelogButton; - this.id("menuCreditsCloseButton").value = texts.close; - - this.id("changelogTitle").textContent = texts.changelogTitle; - this.id("menuChangelogBackButton").value = texts.back; - this.id("menuChangelogCloseButton").value = texts.close; - - this.id("menuAffichageDisplayParametersTab").textContent = texts.displayParameters; - this.id("menuAffichageFunctionsParametersTab").textContent = texts.functionsParameters; - this.id("plotRange").textContent = texts.plotRange; - this.id("xAxis").textContent = texts.xAxis; - this.id("yAxis").textContent = texts.yAxis; - this.id("xAxisTo").textContent = texts.to; - this.id("yAxisTo").textContent = texts.to; - this.id("defaultZoom").textContent = texts.defaultZoom; - this.id("defaultDisplayParameters").value = texts.defaultDisplayParameters; - this.id("displayOptions").textContent = texts.options; - this.id("displayMethod").textContent = texts.displayMethod; - this.id("showGrid").textContent = texts.showGrid; - this.id("showAxis").textContent = texts.showAxis; - this.id("showScale").textContent = texts.showScale; - this.id("graphAccuracy").textContent = texts.graphAccuracy; - this.id("improveAccuracy").textContent = texts.improveAccuracy; - this.id("menuAffichageOkButton").value = texts.ok; - - this.id("menuFunctionParametersDisplayParametersTab").textContent = texts.displayParameters; - this.id("menuFunctionParametersFunctionsParametersTab").textContent = texts.functionsParameters; - this.id("defaultFunctionParameters").textContent = texts.defaultFunctionParameters; - this.id("thickness").textContent = texts.thickness; - this.id("drawDerivativeAndPrimitive").textContent = texts.drawDerivativeAndPrimitive; - this.id("drawArea").textContent = texts.drawArea; - this.id("lineStyle").textContent = texts.lineStyle; - this.id("selectStyleLine").textContent = texts.styleLine; - this.id("selectStyleDotted").textContent = texts.styleDotted; - this.id("selectStyleDashed").textContent = texts.styleDashed; - this.id("menuFunctionParametersCloseButton").value = texts.close; - - this.id("display3D").textContent = texts.display3D; - this.id("displayStyle").textContent = texts.displayStyle; - this.id("displayStyleSurfaces").textContent = texts.styleSurfaces; - this.id("displayStyleDotted").textContent = texts.styleDotted; - this.id("resetDisplay3D").value = texts.resetDisplay; - this.id("graphAccuracy3D").textContent = texts.graphAccuracy; - this.id("colorsConfig").textContent = texts.colorsConfig; - this.id("useRedFor").textContent = texts.useRedFor; - this.id("useGreenFor").textContent = texts.useGreenFor; - this.id("useBlueFor").textContent = texts.useBlueFor; - this.id("redPositive").textContent = texts.positiveValues; - this.id("redNegative").textContent = texts.negativeValues; - this.id("redAlways").textContent = texts.always; - this.id("greenPositive").textContent = texts.positiveValues; - this.id("greenNegative").textContent = texts.negativeValues; - this.id("greenAlways").textContent = texts.always; - this.id("bluePositive").textContent = texts.positiveValues; - this.id("blueNegative").textContent = texts.negativeValues; - this.id("blueAlways").textContent = texts.always; - this.id("globalValue").textContent = texts.globalValue; - this.id("globalValueRange").textContent = texts.globalValueRange; - this.id("menuAffichage3dOk").value = texts.ok; - - this.id("menuAideUsageTab").textContent = texts.usage; - this.id("menuAideExamplesTab").textContent = texts.examples; - this.id("howItWorks").textContent = texts.howItWorks; - this.id("howItWorksText").textContent = texts.howItWorksText; - this.id("availableFunctionsText").textContent = texts.availableFunctionsText; - this.id("basicOperations").textContent = texts.basicOperations; - this.id("plus").textContent = texts.plus; - this.id("minus").textContent = texts.minus; - this.id("multiplication").textContent = texts.multiplication; - this.id("division").textContent = texts.division; - this.id("modulus").textContent = texts.modulus; - this.id("trigonometricFunctions").textContent = texts.trigonometricFunctions; - this.id("sine").textContent = texts.sine; - this.id("cosine").textContent = texts.cosine; - this.id("tangent").textContent = texts.tangent; - this.id("cotangent").textContent = texts.cotangent; - this.id("secant").textContent = texts.secant; - this.id("cosecant").textContent = texts.cosecant; - this.id("arcSine").textContent = texts.arcSine; - this.id("arcCosine").textContent = texts.arcCosine; - this.id("arcTangent").textContent = texts.arcTangent; - this.id("arcCotangent").textContent = texts.arcCotangent; - this.id("hyperbolicFunctions").textContent = texts.hyperbolicFunctions; - this.id("hypSine").textContent = texts.hypSine; - this.id("hypCosine").textContent = texts.hypCosine; - this.id("hypTangent").textContent = texts.hypTangent; - this.id("hypCotangent").textContent = texts.hypCotangent; - this.id("hypSecant").textContent = texts.hypSecant; - this.id("hypCosecant").textContent = texts.hypCosecant; - this.id("hypArcSine").textContent = texts.hypArcSine; - this.id("hypArcCosine").textContent = texts.hypArcCosine; - this.id("hypArcTangent").textContent = texts.hypArcTangent; - this.id("hypArcCotangent").textContent = texts.hypArcCotangent; - this.id("powerAndRoot").textContent = texts.powerAndRoot; - this.id("squareRoot").textContent = texts.squareRoot; - this.id("power").textContent = texts.power; - this.id("xPowY").textContent = texts.xPowY; - this.id("root").textContent = texts.root; - this.id("rootText").textContent = texts.rootText; - this.id("expAndLog").textContent = texts.expAndLog; - this.id("naturalLog").textContent = texts.naturalLog; - this.id("decimalLog").textContent = texts.decimalLog; - this.id("absValue").textContent = texts.absValue; - this.id("rounding").textContent = texts.rounding; - this.id("roundText").textContent = texts.roundText; - this.id("ceilText").textContent = texts.ceilText; - this.id("floorText").textContent = texts.floorText; - this.id("constants").textContent = texts.constants; - this.id("keyboardShortcuts").textContent = texts.keyboardShortcuts; - this.id("moveLeft").textContent = texts.moveLeft; - this.id("moveTop").textContent = texts.moveTop; - this.id("moveRight").textContent = texts.moveRight; - this.id("moveBottom").textContent = texts.moveBottom; - this.id("menuAideCloseButton").value = texts.close; - - this.id("menuAideExemplesUsageTab").textContent = texts.usage; - this.id("menuAideExemplesExamplesTab").textContent = texts.examples; - this.id("examplesText").textContent = texts.examplesText; - this.id("functions2d").textContent = texts.functions2d; - this.id("functions3d").textContent = texts.functions3d; - this.id("menuAideExemplesCloseButton").value = texts.close; - - this.id("functionStudyTitle").textContent = texts.functionStudy; - this.id("domainOfDefinition").textContent = texts.domainOfDefinition; - this.id("symmetry").textContent = texts.symmetry; - this.id("zeros").textContent = texts.zeros; - this.id("sign").textContent = texts.sign; - this.id("asymptotes").textContent = texts.asymptotes; - this.id("extremums").textContent = texts.extremums; - this.id("inflexionPoints").textContent = texts.inflexionPoints; - this.id("functionStudyText").textContent = texts.functionStudyText; - this.id("menuEtudeBackButton").value = texts.back; - this.id("menuEtudeCloseButton").value = texts.close; - - this.id("menuFonctionsFunctionsTab").textContent = texts.functions; - this.id("menuFonctionsHistoryTab").textContent = texts.history; - this.id("newFunction").textContent = texts.newFunction; - this.id("functionTypeCartesian").textContent = texts.cartesian; - this.id("functionTypeImplicit").textContent = texts.implicit; - this.id("functionTypePolar").textContent = texts.polar; - this.id("functionTypeParametric").textContent = texts.parametric; - this.id("addFunctionButton").value = texts.add; - this.id("functionsListText").textContent = texts.functionsListText; - - this.id("editorEditPageEditTab").textContent = texts.edit; - this.id("editorEditPageToolsTab").textContent = texts.tools; - this.id("editorRangeFrom").textContent = texts.from; - this.id("editorRangeTo").textContent = texts.to; - this.id("editorThickness").textContent = texts.thickness; - this.id("editorColor").textContent = texts.color; - this.id("editorDerivatives").textContent = texts.derivatives; - this.id("editorPrimitive").textContent = texts.primitive; - this.id("editorLineStyle").textContent = texts.lineStyle; - this.id("editorStyleLine").textContent = texts.styleLine; - this.id("editorStyleDotted").textContent = texts.styleDotted; - this.id("editorStyleDashed").textContent = texts.styleDashed; - this.id("editorDrawArea").textContent = texts.drawArea; - this.id("editorDuplicate").value = texts.duplicate; - this.id("editorRemove").value = texts.remove; - - this.id("editorToolsPageEditTab").textContent = texts.edit; - this.id("editorToolsPageToolsTab").textContent = texts.tools; - this.id("computePoint").textContent = texts.computePoint; - this.id("computePointButton").value = texts.compute; - this.id("computeArea").textContent = texts.computeArea; - this.id("areaFrom").textContent = texts.from; - this.id("areaTo").textContent = texts.to; - this.id("computeAreaButton").value = texts.compute; - this.id("functionStudy").textContent = texts.functionStudy; - this.id("functionStudyButton").value = texts.startStudy; - this.id("editorToolsDuplicate").value = texts.duplicate; - this.id("editorToolsRemove").value = texts.remove; - this.id("menuFonctionsCloseButton").value = texts.close; - - this.id("input3dDisplayButton").value = texts.displayAction; - - this.id("menuHistoriqueFunctionsTab").textContent = texts.functions; - this.id("menuHistoriqueHistoryTab").textContent = texts.history; - this.id("latestDisplayedFunctions").textContent = texts.latestDisplayedFunctions; - this.id("menuHistoriqueCloseButton").value = texts.close; - - this.id("chooseColor").textContent = texts.chooseColor; - this.id("colorPickerColor").textContent = texts.color; - this.id("colorPickerValue").textContent = texts.value; - this.id("colorPickerSaturation").textContent = texts.saturation; - this.id("colorPickerRed").textContent = texts.red; - this.id("colorPickerGreen").textContent = texts.green; - this.id("colorPickerBlue").textContent = texts.blue; - this.id("inputOpacity").textContent = texts.opacity; - this.id("apercuCouleur").title = texts.newColor; - this.id("apercuCouleur2").title = texts.oldColor; - this.id("colorPickerCancelButton").value = texts.cancel; - this.id("colorPickerOkButton").value = texts.ok; - - this.id("blackListError").textContent = texts.error; - this.id("cannotDrawFunction").textContent = texts.cannotDrawFunction; - this.id("invalidExpression").textContent = texts.invalidExpression; - this.id("blackListErrorOkButton").value = texts.ok; - this.id("fctError").textContent = texts.error; - this.id("checkTheFunction").textContent = texts.checkTheFunction; - this.id("errorMessage").textContent = texts.errorMessage; - this.id("youCanFindExamples").textContent = texts.youCanFindExamples; - this.id("fctErrorHelpButton").value = texts.help; - this.id("fctErrorOkButton").value = texts.ok; - - this.id("menuSaveGraphTitle").textContent = texts.saveGraph; - this.id("saveWidthText").textContent = texts.width; - this.id("saveHeightText").textContent = texts.height; - this.id("saveBackgroundColor").textContent = texts.backgroundColor; - this.id("imageFormat").textContent = texts.imageFormat; - this.id("menuSaveGraphCancelButton").value = texts.cancel; - this.id("menuSaveGraphOkButton").value = texts.ok; - - this.id("saveImageTitle").textContent = texts.saveImageTitle; - this.id("saveImageText").textContent = texts.saveImageText; - this.id("menuSaveImageCloseButton").value = texts.close; - - this.id("updateTitle").textContent = texts.update; - this.id("currentVersion").textContent = texts.currentVersion; - this.id("latestVersionAvailable").textContent = texts.latestVersionAvailable; -// this.id("useLatestVersionText").textContent = texts.useLatestVersionText; -// this.id("useLatestVersion").value = texts.useLatestVersion; - this.id("updateBackButton").value = texts.back; - this.id("updateOkButton").value = texts.ok; - - this.id("updateErrorTitle").textContent = texts.error; - this.id("updateErrorText").textContent = texts.updateErrorText; - this.id("updateErrorOkButton").value = texts.ok; - - this.id("ctxMenuDisplay").textContent = texts.display; - this.id("ctxMenuAxes").textContent = texts.axes; - this.id("ctxMenuScale").textContent = texts.scale; - this.id("ctxMenuGrid").textContent = texts.grid; - this.id("ctxMenuReset").value = texts.reset; - this.id("ctxMenuSave").value = texts.save; - }, - - class: function(className){ - return document.getElementsByClassName(className); - }, - - id: function(id){ - return document.getElementById(id); - } -}; - - -var langTexts = { - "fr": { - "widgetName": "GraphMe", - "functions": "Fonctions", - "display": "Affichage", - "help": "Aide", - "close": "Fermer", - "back": "Retour", - "ok": "Ok", - "fullscreen": "Plein écran", - "save": "Sauvegarder", - "displayAction": "Afficher", - "pointTool": "Outil point", - "moveTool": "Outil déplacement", - "tangentTool": "Outil tangente", - "options": "Options", - "about": "À propos", - "darkBlue": "Bleu foncé", - "black": "Noir", - "blue": "Bleu", - "white": "Blanc", - "widgetOptions": "Options du widget", - "widgetTheme": "Thème du widget", - "resetWidget": "Réinitialiser le widget", - "checkForUpdate": "Vérifier les mises à jour", - "widgetDevelopedBy": "Widget réalisé par", - "widgetContactInfo": "Si vous voulez rapporter un bug, avez une suggestion par rapport au widget ou voulez simplement poser une question, merci de me contacter par e-mail à l'adresse suivante", - "widgetBackgroundSource": "Les images d'arrière-plan viennent de l'environnement de bureau KDE", - "changelogButton": "qu'est-ce qui a changé?", - "changelogTitle": "Notes de version", - "displayParameters": "Paramètres d'affichage", - "functionsParameters": "Paramètres des fonctions", - "plotRange": "Zone d'affichage", - "xAxis": "Axe des X", - "yAxis": "Axe des Y", - "to": "à", - "defaultZoom": "Zoom par défaut", - "defaultDisplayParameters": "Réinitialiser l'affichage", - "displayMethod": "Méthode d'affichage du graphique", - "showGrid": "Afficher la grille", - "showAxis": "Afficher les axes", - "showScale": "Afficher l'échelle", - "graphAccuracy": "Précision du graphique, points calculés", - "improveAccuracy": "Améliorer la précision lors d'un zoom arrière (plus lent)", - "defaultFunctionParameters": "Paramètres par défaut des fonctions", - "thickness": "Épaisseur", - "drawDerivativeAndPrimitive": "Dessiner les dérivées et primitives", - "drawArea": "Dessiner l'aire sous la fonction", - "lineStyle": "Style de ligne", - "styleLine": "continu", - "styleDotted": "points", - "styleDashed": "traits", - "display3D": "Affichage 3D", - "displayStyle": "Style d'affichage", - "styleSurfaces": "surfaces", - "resetDisplay": "Réinitialiser l'affichage", - "colorsConfig": "Configuration des couleurs", - "useRedFor": "utiliser le rouge pour", - "useGreenFor": "utiliser le vert pour", - "useBlueFor": "utiliser le bleu pour", - "positiveValues": "valeur positive", - "negativeValues": "valeur négative", - "always": "toujours", - "globalValue": "Valeur générale", - "globalValueRange": "(entre 0 et 255)", - "usage": "Utilisation", - "examples": "Exemples", - "howItWorks": "Fonctionnement", - "howItWorksText": "Ce widget vous permet de dessiner des fonctions mathématiques. Entrez une première fonction dans le champ en haut du widget et cliquez sur le bouton \"Afficher\". Ouvrez le menu \"Fonctions\" pour modifier votre fonction ou en ajouter une nouvelle.", - "availableFunctionsText": "Vous pouvez saisir les fonctions mathématiques suivantes", - "basicOperations": "Les opérations de base", - "plus": "Addition", - "minus": "Soustraction", - "multiplication": "Multiplication", - "division": "Division", - "modulus": "Modulo", - "trigonometricFunctions": "Les fonctions trigonométriques", - "sine": "Sinus", - "cosine": "Cosinus", - "tangent": "Tangente", - "cotangent": "Cotangente", - "secant": "Secante", - "cosecant": "Cosecante", - "arcSine": "Arcsinus", - "arcCosine": "Arccosinus", - "arcTangent": "Arctangente", - "arcCotangent": "Arccotangente", - "hyperbolicFunctions": "Les fonctions hyperboliques", - "hypSine": "Sinus hyp", - "hypCosine": "Cosinus hyp", - "hypTangent": "Tangente hyp", - "hypCotangent": "Cotangente hyp", - "hypSecant": "Secante hyp", - "hypCosecant": "Cosecante hyp", - "hypArcSine": "Arcsinus hyp", - "hypArcCosine": "Arccosinus hyp", - "hypArcTangent": "Arctangente hyp", - "hypArcCotangent": "Arccotangente hyp", - "powerAndRoot": "Les racines et les puissances", - "squareRoot": "Racine carrée", - "power": "Puissances", - "xPowY": "Élève x à une puissance y", - "root": "Racines", - "rootText": "Racine y d'un nombre x", - "expAndLog": "Les exponentielles et logarithmes", - "naturalLog": "logarithme naturel", - "decimalLog": "logarithme de base", - "absValue": "La valeur absolue d'un nombre", - "rounding": "Les arrondis", - "roundText": "arrondit à l'entier le plus proche", - "ceilText": "arrondit à l'entier supérieur", - "floorText": "arrondit à l'entier inférieur", - "constants": "Constantes", - "keyboardShortcuts": "Raccourcis clavier", - "moveLeft": "déplacer le graphique à gauche", - "moveTop": "déplacer le graphique en haut", - "moveRight": "déplacer le graphique à droite", - "moveBottom": "déplacer le graphique en bas", - "examplesText": "(Vous pouvez cliquer sur un exemple pour l'afficher. Pensez à ajuster la précision du graphique dans les options si nécessaire.)", - "functions2d": "Fonctions 2D", - "functions3d": "Fonctions 3D", - "saveGraph": "Enregistrer le graphique", - "functionStudy": "Étude de fonction", - "domainOfDefinition": "Ensemble de définition", - "symmetry": "Parité", - "zeros": "Zéros de la fonction", - "sign": "Signe", - "asymptotes": "Asymptotes", - "extremums": "Extremums", - "inflexionPoints": "Points d'inflexion", - "functionStudyText": "L'outil permettant d'étudier les fonctions n'est pas fiable à 100%. Pensez à vérifier les résultats de l'étude avant d'en faire une quelconque utilisation.", - "history": "Historique", - "newFunction": "Nouvelle fonction", - "cartesian": "Cartésienne", - "implicit": "Implicite", - "polar": "Polaire", - "parametric": "Paramétrique", - "add": "Ajouter", - "functionsListText": "Fonction dessinées", - "edit": "Modifier", - "tools": "Outils", - "from": "de", - "to": "à", - "color": "Couleur", - "derivatives": "Dérivées", - "primitive": "Primitive", - "duplicate": "Dupliquer", - "remove": "Supprimer", - "computePoint": "Calculer un point de la fonction", - "compute": "Calculer", - "computeArea": "Calculer l'aire sous la fonction", - "startStudy": "Démarrer l'étude", - "latestDisplayedFunctions": "Dernières fonctions dessinées", - "chooseColor": "Choix de la couleur", - "value": "Valeur", - "saturation": "Saturation", - "red": "Rouge", - "green": "Vert", - "blue": "Bleu", - "opacity": "Opacité", - "oldColor": "Ancienne Couleur", - "newColor": "Nouvelle Couleur", - "cancel": "Annuler", - "error": "Erreur", - "cannotDrawFunction": "Impossible de dessiner la fonction", - "invalidExpression": "Expression ou caractère invalide", - "checkTheFunction": "Vérifiez la fonction que vous vouliez dessiner", - "errorMessage": "Message d'erreur", - "youCanFindExamples": "Une description ainsi que des exemples des différentes fonctions que vous pouvez dessiner se trouvent dans l'aide", - "width": "Largeur", - "height": "Hauteur", - "backgroundColor": "Couleur de fond", - "imageFormat": "Format de l'image", - "update": "Mise à jour", - "currentVersion": "Version en cours d'utilisation", - "latestVersionAvailable": "Dernière version disponible en ligne", - "useLatestVersionText": "Vous pouvez remplacer la version en cours d'utilisation par une version du widget en ligne. Notez que ceci ne met pas à jour le widget. Il faudra réitérer cette procédure la prochaine fois que vous l'utiliserez.", - "useLatestVersion": "Utiliser la dernière version", - "updateErrorText": "Il est impossible de mettre à jour le widget vers la version en ligne car vous utilisez déjà la version en ligne", - "axes": "Axes", - "scale": "Échelle", - "grid": "Grille", - "reset": "Réinitialiser", - "saveImageTitle": "Sauvegarder l'image", - "saveImageText": "Cliquez avec le bouton de droite sur l'image et sélectionnez \"Enregistrer l'image\". Il est aussi possible de choisir \"Copier l'image\" et ensuite la coller dans une autre application.", - - /* Inside code */ - "even": "paire", - "odd": "impaire", - "none_f": "aucune", - "none_m": "aucun", - "clickHereToModify": "Cliquez ici pour modifier les fonctions ou en ajouter une nouvelle.", - "enterFunction": "Entrez une fonction à dessiner", - "needHelp": "Consulter l'aide", - "unableLoadParameters": "Impossible de charger les paramètres enregistrés..." - } -}; - diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Outils.js b/resources/library/applications/GraphMe.wgt/JavaScript/Outils.js old mode 100755 new mode 100644 index 82f9aa91..0915a333 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Outils.js +++ b/resources/library/applications/GraphMe.wgt/JavaScript/Outils.js @@ -1,446 +1,252 @@ // -------------------- Fonctions des outils -------------------- +var listeFonctions = new Array() +var listeCouleurs = new Array() +var historique = new Array() +var ctxT -// Permet d'afficher la valeur en "y" pour un point donné en "x" -function calculerPoint() { - x = document.getElementById("inputX").value; - document.getElementById("outputX").innerHTML = " f(x) = "+fct.list[editeur.idFct].f(x)+""; - //alert("Si x = "+x+" \nf(x) = "+eval(fonction)+"") -} +// Cette fonction permet d'effectuer un zoom. Elle change la valeur des inputs à gauche +// qui définnissent la zone à afficher et actualise le graphique. +function zoom(valeur){ + var diffBornes = Math.abs(parseFloat(document.getElementById("borneXGauche").value) - parseFloat(document.getElementById("borneXDroite").value)) + var ajouter = (diffBornes * valeur - diffBornes)/2 + var nouvelleValeur = parseFloat(document.getElementById("borneXGauche").value) - ajouter + if (nouvelleValeur < 0){ nouvelleValeur = Math.ceil(nouvelleValeur) } + if (nouvelleValeur > 0){ nouvelleValeur = Math.floor(nouvelleValeur) } + if (nouvelleValeur == parseFloat(document.getElementById("borneXGauche").value) && valeur>1){ nouvelleValeur=nouvelleValeur-1 } + if (nouvelleValeur == parseFloat(document.getElementById("borneXGauche").value) && valeur<1){ nouvelleValeur=nouvelleValeur+1 } + document.getElementById("borneXGauche").value = nouvelleValeur + var nouvelleValeur = parseFloat(document.getElementById("borneXDroite").value) + ajouter + if (nouvelleValeur < 0){ nouvelleValeur = Math.ceil(nouvelleValeur) } + if (nouvelleValeur > 0){ nouvelleValeur = Math.floor(nouvelleValeur) } + if (nouvelleValeur == parseFloat(document.getElementById("borneXDroite").value) && valeur>1){ nouvelleValeur=nouvelleValeur+1 } + if (nouvelleValeur == parseFloat(document.getElementById("borneXDroite").value) && valeur<1){ nouvelleValeur=nouvelleValeur-1 } + document.getElementById("borneXDroite").value = nouvelleValeur + var diffBornes = Math.abs(parseFloat(document.getElementById("borneYGauche").value) - parseFloat(document.getElementById("borneYDroite").value)) + var ajouter = (diffBornes * valeur - diffBornes)/2 + var nouvelleValeur = parseFloat(document.getElementById("borneYGauche").value) - ajouter + if (nouvelleValeur < 0){ nouvelleValeur = Math.ceil(nouvelleValeur) } + if (nouvelleValeur > 0){ nouvelleValeur = Math.floor(nouvelleValeur) } + if (nouvelleValeur == parseFloat(document.getElementById("borneYGauche").value) && valeur>1){ nouvelleValeur=nouvelleValeur-1 } + if (nouvelleValeur == parseFloat(document.getElementById("borneYGauche").value) && valeur<1){ nouvelleValeur=nouvelleValeur+1 } + document.getElementById("borneYGauche").value = nouvelleValeur + var nouvelleValeur = parseFloat(document.getElementById("borneYDroite").value) + ajouter + if (nouvelleValeur < 0){ nouvelleValeur = Math.ceil(nouvelleValeur) } + if (nouvelleValeur > 0){ nouvelleValeur = Math.floor(nouvelleValeur) } + if (nouvelleValeur == parseFloat(document.getElementById("borneYDroite").value) && valeur>1){ nouvelleValeur=nouvelleValeur+1 } + if (nouvelleValeur == parseFloat(document.getElementById("borneYDroite").value) && valeur<1){ nouvelleValeur=nouvelleValeur-1 } + document.getElementById("borneYDroite").value = nouvelleValeur -// Historique - -var historique = { - liste : [], - - actualiser : function(){ - var texteHistorique = "" - for(var i=0; i'; - texteHistorique += this.liste[i].readableText(); - texteHistorique += '
'; - } - document.getElementById("spanHistorique").innerHTML = texteHistorique - document.getElementById("divHistorique").scrollTop = 0 - }, - - use : function(index){ - fct.add(this.liste[index]); - }, - - ajouter : function(func){ - if(func.fct == ""){ - return; - } - for(var i=0; i' + texteFctSupp += ' ....
' + } + document.getElementById("fonctionsSupp").innerHTML = texteFctSupp + actualiserGraph() +} -// Outils de la souris +function actualiserHistorique(){ + var texteHistorique = "" + for(var i=0; i'+historique[i]+'
' + } + document.getElementById("spanHistorique").innerHTML = texteHistorique + document.getElementById("divHistorique").scrollTop = 0 +} -var outil = { - // - idAffichage : "affichageOutils", - - // Outil sélectionné - actuel : "point", - - // Canvas - canvas : null, - ctx : null, - - width: 0, - height: 0, - - // Liste des éléments à dessiner - liste : [], - - // Fonction d'initialisation - init : function(width, height){ - var element = document.getElementById(this.idAffichage); - if(element.hasChildNodes()){ - while(element.childNodes.length >= 1 ){ - element.removeChild(element.firstChild); - } - } - - this.width = width || element.clientWidth; - this.height = height || element.clientHeight; - -// element.style.width = affichage.largeur +"px"; -// element.style.height = affichage.hauteur +"px"; -// element.style.left = document.getElementById(affichage.id).offsetLeft+1 +"px"; -// element.style.top = document.getElementById(affichage.id).offsetTop+1 +"px"; - - this.canvas = document.createElement("canvas"); - this.canvas.width = this.width; - this.canvas.height = this.height; - element.appendChild(this.canvas); - this.ctx = this.canvas.getContext('2d'); - }, - - // Permet de changer d'outil et de faire différentes actions lors du choix de l'outil - choisir : function(nom){ - document.getElementById("pointTool").className = "toolButton"; - document.getElementById("moveTool").className = "toolButton"; - document.getElementById("tangentTool").className = "toolButton"; - switch(nom){ - case 'point': - document.getElementById("pointTool").className += " selectedTool"; - break; - case 'deplacement': - document.getElementById("moveTool").className += " selectedTool"; - break; - case 'tangente': - document.getElementById("tangentTool").className += " selectedTool"; - break; - } - if(nom == 'deplacement'){ - document.getElementById("eventAffichage").style.cursor = "move"; - } - else{ - document.getElementById("eventAffichage").style.cursor = "auto"; - } - this.dessinerListe(); - this.actuel = nom; - saveOptions(); - }, - - // Gestion des événements reçus de l'objet souris - move : function(x, y, xInit, yInit, active){ - switch(this.actuel){ - case "deplacement": - if(active){ - this.deplacement(x, y, xInit, yInit); - } - break; - case "point": - this.point(x, y); - break; - case "tangente": - this.tangente(x, y); - break; - } - }, - - down : function(x, y){ - switch(this.actuel){ - case "point": - this.point(x, y, true) - break; - case "tangente": - this.tangente(x, y, true); - break; - } - }, - - // Fonctions des outils - deplacement : function(x, y, xInit, yInit){ - var valeurX = (x-xInit)/affichage.multX; - var valeurY = (yInit-y)/affichage.multY; - if(Math.round(Math.abs(valeurX)) > 0){ - if(fonction3D){ - affichage.deplacerX(Math.round(2*valeurX)/2); - } - else{ - affichage.deplacerX(-Math.round(2*valeurX)/2); - } - souris.xInit = x; - } - if(Math.round(Math.abs(valeurY)) > 0){ - affichage.deplacerY(-Math.round(2*valeurY)/2); - souris.yInit = y; - } - }, - - point : function(sourisX, sourisY, ajouterDansListe){ - var ctx = new Object(); - ctx = this.ctx; - - // Dessiner les points et tangentes supplémentaires - this.dessinerListe(); - - for(var i=0; i func.endAngle){ - continue; - } - } - var x = func.getX(t); - var y = func.getY(t); - - // Afficher les coordonnées et le point sous la souris - if(!isNaN(x) && !isNaN(y)){ - if(ajouterDansListe){ - this.ajouterPoint(x, y, func.couleur); - } - this.dessinerPoint(x, y, func.couleur); - } - } - }, - dessinerPoint : function(x, y, couleur){ - var ctx = new Object(); - ctx = this.ctx; - - // Conversion des coordonnées - var posX = coordToPosX(x) + 1; - var posY = coordToPosY(y) + 1; - - ctx.shadowColor = couleur; - ctx.shadowBlur = 4; - - // Texte - var txtPos = "("+Math.round(x*100)/100+";"+Math.round(y*100)/100+")"; - ctx.fillStyle = "rgba(255,255,255,0.5)"; - try{ - ctx.bulle(posX+7, posY-7, txtPos.length*5.5, 20); - } - catch(err){ - ctx.fillRect(posX+7, posY-27, txtPos.length*5.5, 20); - } - - ctx.fillStyle = "black"; - ctx.shadowColor = "black"; - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 1; - ctx.shadowBlur = 2; - ctx.fillText(txtPos, posX+8+txtPos.length/4, posY-13); - - // Rond - ctx.beginPath(); - ctx.arc(posX, posY, 4, 0, 2*Math.PI, true); - - ctx.shadowColor = couleur; - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 0; - ctx.shadowBlur = 4; +// Permet de changer d'outil et de faire différentes actions lors du choix de l'outil +function choixOutil(nom){ + outil = nom + if(outil == 'deplacement'){ + document.getElementById("affichage").style.cursor = "move" + document.getElementById("info").style.display = "none" + } + else{ + document.getElementById("affichage").style.cursor = "auto" + document.getElementById("info").style.display = "block" + } - ctx.fillStyle = "rgba(0,0,0,1)"; - ctx.strokeStyle = "rgba(255,255,255,0.8)"; - ctx.lineWidth = 1; - ctx.fill() - ctx.stroke(); - }, - - tangente : function(sourisX, sourisY, ajouterDansListe){ - var delta = 0.001; - - var ctx = new Object(); - ctx = this.ctx; - - // Dessiner les points et tangentes supplémentaires - this.dessinerListe(); - - // Dessiner les tangentes des fonctions - for(var i=0; i func.endAngle){ - continue; - } - } - var t1 = t + delta; - var x = func.getX(t); - var x1 = func.getX(t1); - // Calcul de deux valeurs y et de la pente - var y = func.getY(t); - var y1 = func.getY(t1); - var pente; - if(x1 != x){ - pente = (y1-y)/(x1-x); - } - else{ - pente = Number.POSITIVE_INFINITY; - } - - // Dessiner la pente; - if(!isNaN(x) && !isNaN(y) && !isNaN(y1)){ - if(ajouterDansListe){ - this.ajouterTangente(x, y, pente, func.couleur); - } - this.dessinerTangente(x, y, pente, func.couleur); - } - } - }, - dessinerTangente : function(x, y, pente, couleur){ - var ctx = new Object(); - ctx = this.ctx; - - // Conversion des coordonnées - var posX = coordToPosX(x) + 1; - var posY = coordToPosY(y) + 1; - - // Carré - ctx.shadowColor = couleur; - ctx.shadowBlur = 4; - - ctx.fillStyle = "white"; - ctx.fillRect(posX-3, posY-3, 6, 6); - - // Pente - ctx.strokeStyle = "white"; - ctx.lineWidth = 2; - ctx.beginPath(); - var pente2 = pente * (affichage.hauteur/affichage.largeur) * (affichage.xDroite-affichage.xGauche)/(affichage.yHaut-affichage.yBas); - ctx.moveTo(0, posY+posX*pente2); - ctx.lineTo(affichage.largeur, posY+posX*pente2-affichage.largeur*pente2); - ctx.stroke(); - - // Texte - var txtPente; - if(isFinite(pente)){ - txtPente = pente.toFixed(2); - } - else{ - txtPente = "∞" - } - ctx.fillStyle = "rgba(255,255,255,0.5)"; - try{ - ctx.bulle(posX+7, posY-7, txtPente.length*5.5+1, 20); - } - catch(err){ - ctx.fillRect(posX+7, posY-27, txtPente.length*5.5, 20); - } - - ctx.fillStyle = "black"; - ctx.shadowColor = "black"; - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 1; - ctx.shadowBlur = 2; - ctx.fillText(txtPente, posX+8+txtPente.length/4, posY-13); - }, - - ajouterPoint : function(x, y, couleur){ - var newPoint = { - x : x, - y : y, - couleur : couleur, - dessiner : function(){ - outil.dessinerPoint(this.x, this.y, this.couleur); + if(outil == 'point'){ + document.getElementById("point").style.display = "block" + } + else{ + document.getElementById("point").style.display = "none" + } + + if(outil == 'tangente'){ + document.getElementById("tangente").innerHTML = '' + ctxT = document.getElementById('canvasT').getContext('2d') + } + else{ + document.getElementById("tangente").innerHTML = "" + ctxT = null + } +} + +// Fonctions servant à gérer les événements de la souris +function sourisDown(){ + mouseDown = true + posSourisXinit = posSourisX + posSourisYinit = posSourisY +} +function sourisUp(){ + mouseDown = false +} +function sourisMove(event){ + posSourisX = event.clientX + posSourisY = event.clientY + if(mouseDown){ + if(outil == "deplacement"){ + var valeurX = (posSourisX-posSourisXinit)/multiplicateurX + var valeurY = (posSourisYinit-posSourisY)/multiplicateurY + if(Math.round(Math.abs(valeurX)) > 0){ + deplacerX(-Math.round(2*valeurX)/2) + posSourisXinit = posSourisX } - }; - this.liste.push(newPoint); - }, - ajouterTangente : function(x, y, pente, couleur){ - var newTangente = { - x : x, - y : y, - pente : pente, - couleur : couleur, - dessiner : function(){ - outil.dessinerTangente(this.x, this.y, this.pente, this.couleur); + if(Math.round(Math.abs(valeurY)) > 0){ + deplacerY(-Math.round(2*valeurY)/2) + posSourisYinit = posSourisY } - }; - this.liste.push(newTangente); - }, - dessinerListe : function(){ - if(!this.ctx){ - return; + //decalageX = posSourisX-posSourisXinit + //decalageY = posSourisY-posSourisYinit + //actualiserGraph() } - this.ctx.clearRect(0,0,affichage.largeur*2,affichage.hauteur*2); - for(var i=0; i affichage.largeur+affichage.offsetLeft || posX < affichage.offsetLeft || posY > affichage.hauteur+affichage.offsetTop || posX < affichage.offsetTop){ - continue; - } - var txt = '
' + ctx = document.getElementById('canvas').getContext('2d') + var lingrad = ctx.createLinearGradient(100,100,largeur-100,hauteur-100) + lingrad.addColorStop(0, 'rgba(0,50,255,1)') + lingrad.addColorStop(1, 'rgba(0,255,255,1)') + ctx.fillStyle = lingrad + ctx.textAlign = "center" + ctx.font = "72px bold" + ctx.fillText("Canvas", largeur/2, hauteur/2-1) +} +function testXPM(){ + document.getElementById("affichage").innerHTML = '' +} + + // ---- Aire sous la fonction (intégrale) ---- function AireSousFct(fct, a, b, n){ var aire, largeurRect, gaucheRect, droiteRect, millieuRect, hauteurRect, aireRect; - var f = new Function("x", "return "+fct); + var f = function(x){ + return eval(fct); + }; aire = 0; largeurRect = (b-a)/n; for(var i=0; i'; - afficherMenu('menuSaveImage'); - - display3D.background = background; - setTimeout(function(){ - display3D.init(); - display3D.draw(); - }, 1); - } - else{ - if(affichage.methode == "canvas"){ - var l = affichage.largeur; - var h = affichage.hauteur; - var c = affichage.couleurFond; - - affichage.largeur = parseInt(document.getElementById("saveWidth").value); - affichage.hauteur = parseInt(document.getElementById("saveHeight").value); - affichage.couleurFond = backgroundSauvegarde; - - var newDiv = document.createElement("div"); - affichage.init(newDiv, userWidth, userHeight); - - outil.init(); - outil.dessinerListe(); - affichage.ctx.drawImage(outil.canvas,0,0); - - var dataURL; - if(document.getElementById("selectSaveType").value == "jpg"){ - dataURL = affichage.canvas.toDataURL("image/jpeg"); - } - else{ - dataURL = affichage.canvas.toDataURL(); - } - document.getElementById("saveImageContent").innerHTML = ''; - afficherMenu('menuSaveImage'); - - affichage.largeur = l; - affichage.hauteur = h; - affichage.couleurFond = c; - affichage.init(); - outil.init(); - } - else if(affichage.methode == "svg"){ - window.open("JavaScript/AffichageSVG.svg"); - } - } -} + actualiserGraph(); +} \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/ParametricFunction.js b/resources/library/applications/GraphMe.wgt/JavaScript/ParametricFunction.js deleted file mode 100644 index 30ed4271..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/ParametricFunction.js +++ /dev/null @@ -1,116 +0,0 @@ - - -function ParametricFunction(fctX, fctY){ - - this.setFct = function(fctX, fctY){ - this.fct = "x(t) = " + fctX + " ; y(t) = " + fctY; - this.fctX = fctX; - this.fctY = fctY; - this.fx = new Function("t", "return "+this.fctX); - this.fy = new Function("t", "return "+this.fctY); - } - - if(fctX && fctY){ - this.setFct(fctX, fctY); - } - this.couleur = fct.couleur; - this.width = document.getElementById("inputTaille").value; - this.startAngle = 0; - this.endAngle = 2*Math.PI; - this.from = "0"; - this.to = "2*pi"; - this.style = document.getElementById("selectStyle").value; - - this.getX = function(t){ - return this.fx(t); - }; - - this.getY = function(t){ - return this.fy(t); - }; - - this.set = function(f){ - var fctX = fct.remplacer(fct.verifier(f.fctX)); - var fctY = fct.remplacer(fct.verifier(f.fctY)); - this.setFct(fctX, fctY); - this.couleur = f.couleur; - this.width = f.width; - this.style = f.style; - this.from = f.from; - this.to = f.to; - this.startAngle = eval(fct.remplacer(fct.verifier(f.from))); - this.endAngle = eval(fct.remplacer(fct.verifier(f.to))); - return this; - }; - - this.get = function(){ - var f = {}; - f.type = "parametric"; - f.fctX = this.fctX; - f.fctY = this.fctY; - f.couleur = this.couleur; - f.width = this.width; - f.style = this.style; - f.from = this.from; - f.to = this.to; - return f; - }; - - this.readableText = function(){ - return "x(t) = " + this.fctX + "; y(t) = " + this.fctY; - }; - - this.setStartEnd = function(start, end){ - if(start > end){ - var tmp = start; - start = end; - end = start; - } - this.startAngle = start; - this.endAngle = end; - }; - - this.plot = function(ctx, precision, affichage){ - if(this.style == "points"){ - precision *= 2; - } - - ctx.beginPath(); - ctx.lineWidth = this.width; - ctx.strokeStyle = this.couleur; - ctx.fillStyle = this.couleur; - notDefined = true; - for(var t = this.startAngle; t <= this.endAngle; t+=precision){ - var x = this.fx(t); - var y = this.fy(t); - if(!isNaN(x) && !isNaN(y)){ - // Transform coordinates - var pointX = (x - affichage.xGauche) * affichage.multX; - var pointY = affichage.hauteur - (y - affichage.yBas) * affichage.multY; - - // Draw point - if(notDefined){ - notDefined = false; - ctx.moveTo(pointX, pointY); - } - else{ - if(this.style == "continu"){ - ctx.lineTo(pointX, pointY); - } - else if(this.style == "points"){ - ctx.beginPath(); - ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); - ctx.fill(); - } - else{ - ctx.lineTo(pointX, pointY); - notDefined = true; - } - } - } - } - if(this.style != "points"){ - ctx.stroke(); - } - }; -} diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/PolarFunction.js b/resources/library/applications/GraphMe.wgt/JavaScript/PolarFunction.js deleted file mode 100644 index 52dd7e79..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/PolarFunction.js +++ /dev/null @@ -1,112 +0,0 @@ - -function PolarFunction(txtFct){ - - this.setFct = function(txt){ - this.fct = txt; - this.f = new Function("t", "return "+this.fct); - }; - - if(txtFct){ - this.setFct(txtFct); - } - this.couleur = fct.couleur; - this.width = document.getElementById("inputTaille").value; - this.startAngle = 0; - this.endAngle = 2*Math.PI; - this.from = "0"; - this.to = "2*pi"; - this.style = document.getElementById("selectStyle").value; - - this.getX = function(t){ - var r = this.f(t); - return r * Math.cos(t); - }; - - this.getY = function(t){ - var r = this.f(t); - return r * Math.sin(t); - }; - - this.set = function(f){ - this.setFct(fct.remplacer(fct.verifier(f.fct))); - this.couleur = f.couleur; - this.width = f.width; - this.style = f.style; - this.from = f.from; - this.to = f.to; - this.startAngle = eval(fct.remplacer(fct.verifier(f.from))); - this.endAngle = eval(fct.remplacer(fct.verifier(f.to))); - return this; - }; - - this.get = function(){ - var f = {}; - f.type = "polar"; - f.fct = this.fct; - f.couleur = this.couleur; - f.width = this.width; - f.style = this.style; - f.from = this.from; - f.to = this.to; - return f; - }; - - this.readableText = function(){ - return "r(t) = " + this.fct; - }; - - this.setStartEnd = function(start, end){ - if(start > end){ - var tmp = start; - start = end; - end = start; - } - this.startAngle = start; - this.endAngle = end; - }; - - this.plot = function(ctx, precision, affichage){ - if(this.style == "points"){ - precision *= 2; - } - - ctx.beginPath(); - ctx.lineWidth = this.width; - ctx.strokeStyle = this.couleur; - ctx.fillStyle = this.couleur; - notDefined = true; - for(var t = this.startAngle; t <= this.endAngle; t+=precision){ - var r = this.f(t); - if(!isNaN(r)){ - // Transform coordinates - var x = r * Math.cos(t); - var y = r * Math.sin(t); - var pointX = (x - affichage.xGauche) * affichage.multX; - var pointY = affichage.hauteur - (y - affichage.yBas) * affichage.multY; - - // Draw point - if(notDefined){ - notDefined = false; - ctx.moveTo(pointX, pointY); - } - else{ - if(this.style == "continu"){ - ctx.lineTo(pointX, pointY); - } - else if(this.style == "points"){ - ctx.beginPath(); - ctx.arc(pointX, pointY, this.width, 0, 2*Math.PI, true); - ctx.fill(); - } - else{ - ctx.lineTo(pointX, pointY); - notDefined = true; - } - } - } - } - if(this.style != "points"){ - ctx.stroke(); - } - }; -} diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Sauvegardes.js b/resources/library/applications/GraphMe.wgt/JavaScript/Sauvegardes.js index 54b3829d..91b3514a 100644 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Sauvegardes.js +++ b/resources/library/applications/GraphMe.wgt/JavaScript/Sauvegardes.js @@ -1,6 +1,4 @@ -// Fonctions permettant de sauvegarder les options - -var optionsLoaded = false; +var listeOptions = ["theme","precision","decalageX","decalageY","epaisseur","grille","axes","echelle","zoom","methode","methode3D","precision3D","maj"]; function setCookie(nom,valeur){ var jours = 545; // Durée de validité des cookies @@ -33,74 +31,89 @@ function delCookie(nom){ } function saveOptions(){ - if(!optionsLoaded){ - return; - } - var state = JSON.stringify(widget.getState()); - if(window.sankore){ - sankore.setPreference("state", state); - } - else if(navigator.cookieEnabled){ - setCookie("state", state); - } + setCookie("theme",document.getElementById("selectTheme").value); + setCookie("precision",document.getElementById("inputPrecision").value); + setCookie("decalageX",document.getElementById("inputDecalageX").value); + setCookie("decalageY",document.getElementById("inputDecalageY").value); + setCookie("epaisseur",document.getElementById("inputTaille").value); + setCookie("grille",document.getElementById("checkGrille").checked); + setCookie("axes",document.getElementById("checkAxes").checked); + setCookie("echelle",document.getElementById("checkEchelle").checked); + setCookie("zoom",document.getElementById("zoomDefaut").value); + setCookie("methode",document.getElementById("selectMethodeAffichage").value); + setCookie("methode3D",document.getElementById("selectAffichage3D").value); + setCookie("precision3D",document.getElementById("inputPrecision3D").value); + setCookie("maj",document.getElementById("checkMaJ").checked); + document.getElementById("infoSauvegarde").style.display = "block" } function loadOptions(){ - var state; - if(window.sankore){ - state = sankore.preference("state", null); - } - else if(navigator.cookieEnabled){ - state = getCookie("state"); - } - if(!state){ - optionsLoaded = true; - return; - } - var stateObject = JSON.parse(state); - var goodState = widget.getState(); - if(!checkState(stateObject, goodState)){ - loadOptionsFailed(); - } - try{ - widget.setState(stateObject); - optionsLoaded = true; + if(navigator.cookieEnabled){ + if(checkOptions()){ + document.getElementById("selectTheme").value = getCookie("theme"); + changerTheme(document.getElementById("selectTheme").value); + document.getElementById("inputPrecision").value = getCookie("precision"); + document.getElementById("inputDecalageX").value = getCookie("decalageX"); + document.getElementById("inputDecalageY").value = getCookie("decalageY"); + document.getElementById("inputTaille").value = getCookie("epaisseur"); + if(getCookie("grille")=="true"){ + document.getElementById("checkGrille").checked = true; + } + else{ + document.getElementById("checkGrille").checked = false; + } + if(getCookie("axes")=="true"){ + document.getElementById("checkAxes").checked = true; + } + else{ + document.getElementById("checkAxes").checked = false; + } + if(getCookie("echelle")=="true"){ + document.getElementById("checkEchelle").checked = true; + } + else{ + document.getElementById("checkEchelle").checked = false; + } + document.getElementById("zoomDefaut").value = getCookie("zoom"); + document.getElementById("selectMethodeAffichage").value = getCookie("methode"); + document.getElementById("selectAffichage3D").value = getCookie("methode3D"); + document.getElementById("inputPrecision3D").value = getCookie("precision3D"); + if(getCookie("maj")=="true"){ + document.getElementById("checkMaJ").checked = true; + } + else{ + document.getElementById("checkMaJ").checked = false; + } + actualiserGraph(); + } + else{ + if(document.cookie!=""){ + alert("It's can't be downloaded ..."); + } + } } - catch(e){ - loadOptionsFailed(); + else{ + document.getElementById("cacheCookies").style.display = "block"; } } -function loadOptionsFailed(){ - var text = "Unable to load the saved parameters..."; - try{ - text = languages.getText("unableLoadParameters"); +function delOptions(){ + var i; + for(i=0; i 0){ - affichage.zoom(1.25); - } - else{ - affichage.zoom(0.8); - } - } - }, - dblClick : function(event){ - if(event.ctrlKey){ - affichage.zoom(1.25) - display3D.zoom(1.25) - } - else{ - affichage.zoom(0.8) - display3D.zoom(0.8) - } - } -} - -var ctxMenu = { - id : "ctxMenu", - ouvert : false, - - ouvrir : function(){ - if(!fonction3D){ - ctxMenu.ouvert = true; - - var element = document.getElementById("ctxMenu"); - var x = souris.xInit; - var y = souris.yInit; - // var x = 300; - // var y = 300; - element.style.display = "block"; - element.style.left = (x+1)+"px"; - element.style.top = (y+1)+"px"; - - // Désactive le menu du navigateur - return false; - } - }, - - fermer : function(){ - ctxMenu.ouvert = false; - - var element = document.getElementById("ctxMenu"); - element.style.display = "none"; - } -} - diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Utils.js b/resources/library/applications/GraphMe.wgt/JavaScript/Utils.js deleted file mode 100644 index f7dcbf7c..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Utils.js +++ /dev/null @@ -1,228 +0,0 @@ - -// Lance la procédure pour dessiner la fonction qui se trouve dans l'input en haut du widget. -// Permet aussi d'actualiser le graphique. -function actualiserGraph(){ - affichage.calculer(); -} - -// Retourne l'index du dernier endroit où se trouve listCharacter dans une chaîne de caractère. -String.prototype.getLastIndexOf = function(listCharacter, minPos, maxPos){ - var count = 0; - var parenthese = false; - if(!maxPos){ - maxPos = this.length; - } - for(var i=maxPos; i>=minPos; i--){ - if(this.charAt(i) == ")"){ - count++; - parenthese = true; - } - else if(this.charAt(i) == "("){ - count--; - } -// window.console.log(this.charAt(i)+" ; "+count); - for(var j=0; j0){ - return 1; - } - else{ - return undefined; - } -} - -function round(valeur){ - return Math.round(valeur); -} -function ceil(valeur){ - return Math.ceil(valeur); -} -function floor(valeur){ - return Math.floor(valeur); -} -function random(){ - return Math.random(); -} diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/Widget.js b/resources/library/applications/GraphMe.wgt/JavaScript/Widget.js deleted file mode 100644 index 100d109a..00000000 --- a/resources/library/applications/GraphMe.wgt/JavaScript/Widget.js +++ /dev/null @@ -1,186 +0,0 @@ -var listeServeurs = [ - 'http://yannick.vessaz.net/GraphMe/GraphMe.wgt/' - /*'http://gyb.educanet2.ch/tm-widgets/yannick/GraphMe.wgt/'*/ -]; - -var widget = { - init: function(){ -// try{ - document.getElementById('inputRapide').value = ""; - document.getElementById('selectTheme').value = "darkblue"; - affichage.setOptions(); - document.getElementById('zoomDefaut').value = "3.7"; - document.getElementById('functionType').value = "cartesian"; - document.getElementById('inputTaille').value = "3"; - document.getElementById('checkDerivee1').checked = false; - document.getElementById('checkDerivee2').checked = false; - document.getElementById('checkPrimitive1').checked = false; - document.getElementById('checkAire').checked = false; - document.getElementById('selectStyle').value = "continu"; - document.getElementById('input3D').value = ""; - document.getElementById('inputPrecision3D').value = "0.2"; - document.getElementById('selectAffichage3D').value = "surfaces"; - document.getElementById('selectRouge3D').value = "plus"; - document.getElementById('selectVert3D').value = "moins"; - document.getElementById('selectBleu3D').value = "tout"; - document.getElementById('couleur3Dgenerale').value = "0"; - - affichage.init(); - outil.init(); - editorPreview.init(); - display3D.checkCouleurs3D(); - loadOptions(); - - if(!fonction3D){ - if(fct.list.length == 0){ - this.displayStartInput(); - } - else if(!window.sankore){ - this.displayFunctionsHelp(); - } - } -// } -// catch(err){ -// alert(err+'\n'+err.stack); -// } - }, - - displayStartInput: function(){ - document.getElementById('divInputRapide').style.display = "block"; - var textEnterFunction = "Enter a cartesian function"; - try{ - textEnterFunction = languages.getText("enterFunction"); - } - catch(e){} - var textNeedHelp = "Need help ?"; - try{ - textNeedHelp = languages.getText("needHelp"); - } - catch(e){} - - var text = textEnterFunction + '. '+ textNeedHelp +'' - - message.ajouter(275,75,text); - setTimeout(message.supprimer, 15000); - - document.getElementById('inputRapide').focus(); - }, - - addStartFunction: function(){ - message.supprimer(); - document.getElementById('divInputRapide').style.display = 'none'; - document.getElementById('input').value = document.getElementById('inputRapide').value; - fct.ajouter(); - this.displayFunctionsHelp(); - }, - - displayFunctionsHelp: function(){ - var text = "Click here to modify the functions or add a new function."; - try{ - text = languages.getText("clickHereToModify"); - } - catch(e){} - setTimeout(function(){message.ajouter(220,35,text)}, 50); - setTimeout(message.supprimer, 5000); - }, - - resize: function(){ - if(fonction3D){ - display3D.init(); - display3D.draw(); - } - else{ - affichage.init(); - } - outil.init(); - }, - - reset: function(){ - delOptions(); - window.location.reload(); - }, - - getState: function(){ - var state = { - theme: document.getElementById("selectTheme").value, - displayMethod: document.getElementById("selectMethodeAffichage").value, - defaultZoom: document.getElementById("zoomDefaut").value, - displayGrid: document.getElementById("checkGrille").checked, - displayAxes: document.getElementById("checkAxes").checked, - displayScale: document.getElementById("checkEchelle").checked, - accuracy: document.getElementById("inputPrecision").value, - improvedAccuracy: document.getElementById("checkPrecision").checked, - thickness: document.getElementById("inputTaille").value, - lineStyle: document.getElementById("selectStyle").value, - derivative1: document.getElementById("checkDerivee1").checked, - derivative2: document.getElementById("checkDerivee2").checked, - primitive: document.getElementById("checkPrimitive1").checked, - drawArea: document.getElementById("checkAire").checked, - lineStyle3D: document.getElementById("selectAffichage3D").value, - accuracy3D: document.getElementById("inputPrecision3D").value, - plotHistory: historique.get(), - functions: fct.get(), - display3D: fonction3D, - input3D: document.getElementById('input3D').value, - currentTool: outil.actuel - }; - if(window.sankore){ - state.fullScreen = pleinEcran; - state.displayLeft = affichage.xGauche; - state.displayRight = affichage.xDroite; - state.displayUp = affichage.yHaut; - state.displayDown = affichage.yBas; - } - return state; - }, - - setState: function(state){ - document.getElementById("selectTheme").value = state.theme; - document.getElementById("selectMethodeAffichage").value = state.displayMethod; - document.getElementById("zoomDefaut").value = state.defaultZoom; - document.getElementById("checkGrille").checked = state.displayGrid; - document.getElementById("checkAxes").checked = state.displayAxes; - document.getElementById("checkEchelle").checked = state.displayScale; - document.getElementById("inputPrecision").value = state.accuracy; - document.getElementById("checkPrecision").checked = state.improvedAccuracy; - document.getElementById("inputTaille").value = state.thickness; - document.getElementById("selectStyle").value = state.lineStyle; - document.getElementById("checkDerivee1").checked = state.derivative1; - document.getElementById("checkDerivee2").checked = state.derivative2; - document.getElementById("checkPrimitive1").checked = state.primitive; - document.getElementById("checkAire").checked = state.drawArea; - document.getElementById("selectAffichage3D").value = state.lineStyle3D; - document.getElementById("inputPrecision3D").value = state.accuracy3D; - historique.set(state.plotHistory); - fct.set(state.functions); - document.getElementById('input3D').value = state.input3D || ""; - if(state.display3D){ - activer3D(); - } - - if(window.sankore){ - if(state.fullScreen){ - agrandirAffichage(); - } - affichage.xGauche = state.displayLeft; - affichage.xDroite = state.displayRight; - affichage.yHaut = state.displayUp; - affichage.yBas = state.displayDown; - affichage.setBornes(); - } - - affichage.getOptions(); - if(!window.sankore){ - affichage.initZoom2(document.getElementById('zoomDefaut').value); - } - changerTheme(document.getElementById("selectTheme").value); - if(state.display3D){ - display3D.draw(); - } - else{ - affichage.dessiner(); - } - - outil.choisir(state.currentTool); - } -}; diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/jquery-1.3.2.min.js b/resources/library/applications/GraphMe.wgt/JavaScript/jquery-1.3.2.min.js new file mode 100644 index 00000000..b1ae21d8 --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/JavaScript/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/jquery.disable.text.select.js b/resources/library/applications/GraphMe.wgt/JavaScript/jquery.disable.text.select.js new file mode 100644 index 00000000..2e06f673 --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/JavaScript/jquery.disable.text.select.js @@ -0,0 +1,62 @@ +/** + * .disableTextSelect - Disable Text Select Plugin + * + * Version: 1.1 + * Updated: 2007-11-28 + * + * Used to stop users from selecting text + * + * Copyright (c) 2007 James Dempster (letssurf@gmail.com, http://www.jdempster.com/category/jquery/disabletextselect/) + * + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + **/ + +/** + * Requirements: + * - jQuery (John Resig, http://www.jquery.com/) + **/ +(function($) { + if ($.browser.mozilla) { + $.fn.disableTextSelect = function() { + return this.each(function() { + $(this).css({ + 'MozUserSelect' : 'none' + }); + }); + }; + $.fn.enableTextSelect = function() { + return this.each(function() { + $(this).css({ + 'MozUserSelect' : '' + }); + }); + }; + } else if ($.browser.msie) { + $.fn.disableTextSelect = function() { + return this.each(function() { + $(this).bind('selectstart.disableTextSelect', function() { + return false; + }); + }); + }; + $.fn.enableTextSelect = function() { + return this.each(function() { + $(this).unbind('selectstart.disableTextSelect'); + }); + }; + } else { + $.fn.disableTextSelect = function() { + return this.each(function() { + $(this).bind('mousedown.disableTextSelect', function() { + return false; + }); + }); + }; + $.fn.enableTextSelect = function() { + return this.each(function() { + $(this).unbind('mousedown.disableTextSelect'); + }); + }; + } +})(jQuery); \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/JavaScript/languages.js b/resources/library/applications/GraphMe.wgt/JavaScript/languages.js new file mode 100644 index 00000000..06a4fd70 --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/JavaScript/languages.js @@ -0,0 +1,675 @@ +var sankoreLang = { + "en":{ + "fnc":"Function: ", + "display":"Display", + "x_axis":"X-axis", + "y_axis":"Y-axis", + "zoom":"Zoom", + "color":"Color:", + "menus":"Menu", + "tools":"Tools", + "options":"Options", + "help":"Help", + "about":"About", + "mouse_events":"Mouse events:", + "moving":"Moving", + "tangente":"Tangente", + "point":"Point", + "choosing_color":"Choosing the color:", + "value":"Value:", + "saturation":"Saturation:", + "red":"Red:", + "green":"Green:", + "blue":"Blue:", + "opacity":"Opacity:", + "check":"Check", + "derivative":"Derivative:", + "square_under_func":"Square under function:", + "from":"From", + "to":"To", + "calculate":"Calculate", + "draw":"Draw", + "point_calculate":"Calculate the point on the function:", + "estimate":"Estimate", + "analysis_of_func":"Analysis of function:", + "start_to_analysis":"Start to analysis", + "quit":"Quit", + "display_test":"Display the test:", + "test":"Test", + "widget":"Widget", + "widget_options":"Widget options", + "themes_of_widget":"Themes of the widget:", + "black":"Black", + "white":"White", + "control_options":"Control options:", + "save":"Save", + "load":"Load", + "del":"Delete", + "save_a_widget_options":"Save a widget options in cookies or load an options from cookies or delete a registered options.", + "auto_update":"Automatically update when a widget opening.", + "reload_widget":"Reload widget", + "update":"Update", + "the_graphical":"The graphical method displaying:", + "lines":"lines", + "points":"points", + "image":"image", + "zoom_def":"Zoom default:", + "update_zoom":"Update zoom", + "show_grid":"Show grid", + "show_axis":"Show axis", + "scale":"Scale", + "thickness":"Thickness:", + "offset_diagram":"Offset diagram:", + "accuracy_graph":"Accuracy graph:", + "show_the_style":"Show the style:", + "surfaces":"surfaces", + "points":"points", + "reset_display":"Reset display", + "accuracy_func":"Accuracy function:", + "use_the_color":"Use the color:", + "positive_value":"positive value", + "negative_value":"negative value", + "general_value":"general value", + "how_it_work":"How it works", + "this_widget_allow":"This widget allows to draw mathematical function. Enter function in the field in the top part of the widget and press\"Display\"", + "you_can_enter":"You can enter following mathematical functions:", + "basic_operations":"Basic operations", + "plus":"Plus", + "minus":"Minus", + "multi":"Multiplication", + "division":"Division", + "mod":"Mod", + "trigonometric":"Trigonometric functions", + "sine":"Sine", + "cosine":"Cosine", + "tangent":"Tangent", + "cotangent":"Cotangent", + "secant":"Secant", + "cosecant":"Cosecant", + "arc_sine":"Arc sine", + "arc_cosine":"Arc cosine", + "arc_tangent":"Arc tangent", + "arc_cotangent":"Arc cotangent", + "hyperbolic_func":"Hyperbolic functions", + "hyp_sine":"Hyperbolic sine", + "hyp_cosine":"Hyperbolic cosine", + "hyp_tangent":"Hyperbolic tangent", + "hyp_cotangent":"Hyperbolic cotangent", + "hyp_secant":"Hyperbolic secant", + "hyp_cosecant":"Hyperbolic cosecant", + "hyp_arc_sine":"Hyperbolic arc sine", + "hyp_arc_cosine":"Hyperbolic arc cosine", + "hyp_arc_tangent":"Hyperbolic arc tangent", + "hyp_arc_cotangent":"Hyperbolic arc cotangent", + "square_roots_and_degrees":"Square roots and degrees", + "square_root":"Square root", + "degree":"Degree", + "root":"Root", + "variable_x":"Variable x to the power y", + "root_y":"Root y of x", + "exponential":"Exponential and logarithm", + "natural_log":"Natural logarithm", + "decimal_log":"Decimal logarithm", + "abs":"Absolute number value", + "rounding":"Rounding", + "round_nearest":"Rounding to the nearest whole number", + "round_nearest_big":"Rounding to the nearest whole number in a big way", + "round_nearest_small":"Rounding to the nearest whole number the smaller side", + "consts":"Constants", + "available_const":"Also are some constants available:", + "keys":"Keyboard keys", + "moved_left":"Graph will be moved left", + "moved_top":"Graph will be moved top", + "moved_right":"Graph will be moved right", + "moved_botom":"Graph will be moved bottom", + "guide":"User's guide", + "using":"Using", + "examples":"Examples", + "other":"Other", + "you_can_view":"You can view example. Don't forget to set a accuracy in option if it will be necessary.", + "save_graph":"Save graph", + "in_some_browsers":"In some browsers when display method \"Canvas\" used you can save graph by clcking it with right mouse button and selecting \"Save image\". Also you can save 3D-graphs.", + "offset":"Offset", + "if_graph_isnt":"If graph isn't in the right plase (larger than canvas) then can you set necessary parameters graph displaying in settings menu.", + "history":"History", + "current":"Current", + "additional":"Additional", + "left_arrow":"left arrow", + "right_arrow":"right arrow", + "top_arrow":"top arrow", + "bottom_arrow":"bottom arrow", + "or":"or", + "funcs":"Functions", + "widget_is_developed":"Widget is developed by", + "if_you_want_to":"If you want to inform about a bug, make a proposal or just ask some questions. You can contact to me at the following e-mail:", + "if_you_want_to_change":"If you want to change background design then you can contact at following address:", + "set_of_def":"Set of definitions:", + "parity":"Parity:", + "zeros":"Zeros of function:", + "signe":"Sign:", + "asympt":"Asymptotes", + "min":"Min", + "ev":"even", + "unev":"uneven", + "na":"n/a", + "curve_lower":"curve is lower than a AH", + "curve_higher":"curve is higher than a AH", + "max":"Max", + "no_min":"No minimum", + "no_max":"No maximum", + "tool_for":"Tool for analysis of function is not reliable on 100%. Don't forget check results of analysis before use it.", + "ah_left":"AH left:", + "ah_right":"AH right:", + "av":"AV:", + "options_saved":"Options saved!", + "cur_version":"Current version:", + "last_version":"The last on-line version:", + "using_web":"This widget is available to using on web-site:", + "show_saved":"Now parameters will be saved" + }, + "ru":{ + "fnc": "Функция: ", + "display":"Показать", + "x_axis":"ось X", + "y_axis":"ось Y", + "zoom":"Размер", + "color":"Цвет:", + "menus":"Меню", + "tools":"Инструменты", + "options":"Опции", + "help":"Помощь", + "about":"О программе", + "mouse_events":"События мыши:", + "moving":"Движение", + "tangente":"Касательная", + "point":"Точка", + "choosing_color":"Выбор цвета:", + "value":"Значение:", + "saturation":"Насыщенность:", + "red":"Красный:", + "green":"Зеленый:", + "blue":"Голубой:", + "opacity":"Прозрачность:", + "check":"Применить", + "derivative":"Производная:", + "square_under_func":"Область функции:", + "from":"От", + "to":"До", + "calculate":"Посчитать", + "draw":"Зарисовать", + "point_calculate":"Рассчитать точку функции:", + "estimate":"Оценить", + "analysis_of_func":"Анализ функции:", + "start_to_analysis":"Начать анализ", + "quit":"Выйти", + "display_test":"Показать тест:", + "test":"Тест", + "widget":"Виджет", + "widget_options":"Настройки виджета", + "themes_of_widget":"Темы виджета:", + "black":"Черный", + "white":"Белый", + "control_options":"Опции управления:", + "save":"Сохранить", + "load":"Загрузить", + "del":"Удалить", + "save_a_widget_options":"Сохранить или загрузить настройки виджета в/из куки-файлов, или же удалить выбранные опции", + "auto_update":"Автоматическое обновление виджета при загрузке", + "reload_widget":"Перегрузить виджет", + "update":"Обновить", + "the_graphical":"Графический метод отображения:", + "lines":"линии", + "points":"точки", + "image":"изображения", + "zoom_def":"Размер по-умолчанию:", + "update_zoom":"Изменить размер:", + "show_grid":"Показать таблицу", + "show_axis":"Показать оси", + "scale":"Масштаб", + "thickness":"Толщина", + "offset_diagram":"Смещение диаграммы:", + "accuracy_graph":"Точность графика:", + "show_the_style":"Показать стиль:", + "surfaces":"поверхности", + "points":"точки", + "reset_display":"Обновить отображение", + "accuracy_func":"Точность функции:", + "use_the_color":"Использовать цвет:", + "positive_value":"положительное значение", + "negative_value":"отрицательное значение", + "general_value":"основное значение", + "how_it_work":"Как это работает", + "this_widget_allow":"Этот виджет позволяет рисовать математические функции. Введите функцию в верхней части виджета и нажмите \"Показать\"", + "you_can_enter":"Вы можете использовать следующие математические функции:", + "basic_operations":"Основные операции", + "plus":"Сложение", + "minus":"Вычетание", + "multi":"Произведение", + "division":"Частное", + "mod":"Остаток от деления", + "trigonometric":"Тригонометрические функции", + "sine":"Синус", + "cosine":"Косинус", + "tangent":"Тангенс", + "cotangent":"Котангенс", + "secant":"Секанс", + "cosecant":"Косеканс", + "arc_sine":"Арксинус", + "arc_cosine":"Арккосинус", + "arc_tangent":"Арктангенс", + "arc_cotangent":"Арккотангенс", + "hyperbolic_func":"Гиперболические функции", + "hyp_sine":"Гиперболический синус", + "hyp_cosine":"Гиперболический косинус", + "hyp_tangent":"Гиперболический тангенс", + "hyp_cotangent":"Гиперболический котангенс", + "hyp_secant":"Гиперболический секанс", + "hyp_cosecant":"Гиперболический косеканс", + "hyp_arc_sine":"Гиперболический арксинус", + "hyp_arc_cosine":"Гиперболический арккосинус", + "hyp_arc_tangent":"Гиперболический арктангенс", + "hyp_arc_cotangent":"Гиперболический арккотангенс", + "square_roots_and_degrees":"Квардатные корни и степени", + "square_root":"Квадратный корень", + "degree":"Степень", + "root":"Корень", + "variable_x":"Переменная х в степени у", + "root_y":"Корень y степени x", + "exponential":"Экспоненты и логарифмы", + "natural_log":"Натуральный логарифм", + "decimal_log":"Десятичный логарифм", + "abs":"Абсолютное значение числа", + "rounding":"Округление", + "round_nearest":"Округление до ближайшего целого числа", + "round_nearest_big":"Округление до ближайшего целого числа в большую сторону", + "round_nearest_small":"Округление до ближайшего целого числа в меньую сторону", + "consts":"Константы", + "available_const":"Также доступны некоторые константы:", + "keys":"Горячие клавиши", + "moved_left":"График будет сдвинут влево", + "moved_top":"График будет сдвинут вверх", + "moved_right":"График будет сдвинут вправо", + "moved_bottom":"График будет сдвинут вниз", + "guide":"Руководство пользователя", + "using":"Использование", + "examples":"Примеры", + "other":"Другое", + "you_can_view":"Вы можете посмотреть примеры. Не забывайте выставить точность в настройках, если это необходимо.", + "save_graph":"Сохранить график", + "in_some_browsers":"В некоторых браузерах при выборе метода отоюражения \"Canvas\" вы можете сохранить гафик кликом ПКМ на нем и выбором пункта \"Сохранить изображение\". Таким же способом вы можете сохранять 3D-графики.", + "offset":"Смещение", + "if_graph_isnt":"Если график арсположен в неправильном месте (больше, чем холст), то Вы можете выставить необходимые параметры отображения графа в настройках виджета.", + "history":"История", + "current":"Текущие", + "additional":"Дополнительные", + "left_arrow":"стрелка влево", + "right_arrow":"стрелка вправо", + "top_arrow":"стрелка вверх", + "bottom_arrow":"стрелка вниз", + "or":"или", + "funcs":"Функции", + "widget_is_developed":"Виджет разработан ", + "if_you_want_to":"Если вы хотите сообщить о проблеме, внести предложение или задать некоторые вопросы, то можете связаться со мной через электронную почту:", + "if_you_want_to_change":"Если вы хотите изменить дизайн, обращайтесь по адресу:", + "set_of_def":"Набор определений:", + "parity":"Равенство:", + "zeros":"Нули функции:", + "signe":"Знак:", + "asympt":"Ассимптоты", + "min":"Мин", + "ev":"равны", + "unev":"не равны", + "na":"не определено", + "curve_lower":"кривая ниже, чем горизонтальная ассимптота", + "curve_higher":"кривая выше, чем горизонтальная ассимптота", + "max":"Макс", + "no_min":"Нет минимума", + "no_max":"Нет максимума", + "tool_for":"Анализ функции не надежен на 100%. Не забывайте проверить результат анализа перед их использованием.", + "ah_left":"ГА слева:", + "ah_right":"ГА справа:", + "av":"ВА:", + "options_saved":"Настройки сохранены!", + "cur_version":"Текущая версия:", + "last_version":"Последняя он-лайн версия:", + "using_web":"Этот виджет доступен для использования на сайте:", + "show_saved":"Теперь параметры будут сохранены" + }, + "fr":{ + "fnc":"Fonction: ", + "display":"Afficher", + "x_axis":"Axe des X de:", + "y_axis":"Axe des Y de:", + "zoom":"Zoom", + "color":"Couleur:", + "menus":"Menus", + "tools":"Outils", + "options":"Options", + "help":"Aide", + "about":"À propos", + "mouse_events":"Action de la souris:", + "moving":"Déplacement", + "tangente":"Tangente", + "point":"Point", + "choosing_color":"Choix de la couleur:", + "value":"Valeur:", + "saturation":"Saturation:", + "red":"Rouge:", + "green":"Vert:", + "blue":"Bleu:", + "opacity":"Opacité:", + "check":"Valider", + "derivative":"Dessiner la dérivée de la fonction:", + "square_under_func":"Aire sous la fonction:", + "from":"From", + "to":"To", + "calculate":"Calculer", + "draw":"Dessiner", + "point_calculate":"Calculer un point de la fonction:", + "estimate":"Évaluer", + "analysis_of_func":"Analyse de la fonction:", + "start_to_analysis":"Démarrer l'étude", + "quit":"Fermer", + "display_test":"Afficher les tests:", + "test":"Test", + "widget":"Widget", + "widget_options":"Options du widget", + "themes_of_widget":"Thème du widget:", + "black":"Noir", + "white":"Blanc", + "control_options":"Gèrer les options:", + "save":"Sauvegarder", + "load":"Charger", + "del":"Supprimer", + "save_a_widget_options":"Sauvegarder les options du widget dans les cookies, charger les options depuis les cookies ou supprimer les options actuellement enregistrées.", + "auto_update":"Mise à jour automatique à l'ouverture du widget.", + "reload_widget":"Recharger le widget", + "update":"Mise à jour", + "the_graphical":"Méthode d'affichage du graphique:", + "lines":"lignes", + "points":"points", + "image":"image", + "zoom_def":"Zoom par défaut:", + "update_zoom":"Réinitialiser le zoom", + "show_grid":"Afficher la grille", + "show_axis":"Afficher les axes ", + "scale":"Afficher l'échelle ", + "thickness":"Épaisseur de la fonction:", + "offset_diagram":"Décalage du graphique:", + "accuracy_graph":"Précision des calculs du graphique:", + "show_the_style":"Style d'affichage:", + "surfaces":"surfaces", + "points":"points", + "reset_display":"Réinitialiser l'affichage", + "accuracy_func":"Précision de la fonction:", + "use_the_color":"Utilisation des couleurs:", + "positive_value":"valeur positive", + "negative_value":"valeur négative", + "general_value":"valeur générale", + "how_it_work":"Fonctionnement", + "this_widget_allow":"Ce widget vous permet de dessiner des fonctions mathématiques. Entrez une fonction dans le champ en haut du widget et cliquez sur le bouton \"Afficher\".", + "you_can_enter":"Vous pouvez saisir les fonctions mathématiques suivantes:", + "basic_operations":"Les opérations de base", + "plus":"Addition", + "minus":"Soustraction", + "multi":"Multiplication", + "division":"Division", + "mod":"Modulo", + "trigonometric":"Les fonctions trigonométriques", + "sine":"Sinus", + "cosine":"Cosinus", + "tangent":"Tangente", + "cotangent":"Cotangente", + "secant":"Secante", + "cosecant":"Cosecante", + "arc_sine":"Arcsinus", + "arc_cosine":"Arccosinus", + "arc_tangent":"Arctangente", + "arc_cotangent":"Arccotangente", + "hyperbolic_func":"Les fonctions hyperboliques", + "hyp_sine":"Sinus hyp", + "hyp_cosine":"Cosinus hyp", + "hyp_tangent":"Tangente hyp", + "hyp_cotangent":"Cotangente hyp", + "hyp_secant":"Secante hyp", + "hyp_cosecant":"Cosecante hyp", + "hyp_arc_sine":"Arcsinus hyp", + "hyp_arc_cosine":"Arccosinus hyp", + "hyp_arc_tangent":"Arctangente hyp", + "hyp_arc_cotangent":"Arccotangente hyp", + "square_roots_and_degrees":"Les racines et les puissances", + "square_root":"Racine carrée", + "degree":"Puissances", + "root":"Racines", + "variable_x":"Élève x à une puissance y", + "root_y":"Racine y d'un nombre x", + "exponential":"Les exponentielles et logarithmes", + "natural_log":"logarithme naturel", + "decimal_log":"logarithme de base", + "abs":"La valeur absolue d'un nombre", + "rounding":"Les arrondis", + "round_nearest":"arrondit à l'entier le plus proche", + "round_nearest_big":"arrondit à l'entier supérieur", + "round_nearest_small":"arrondit à l'entier inférieur", + "consts":"Constantes", + "available_const":"Quelques constantes sont aussi disponibles:", + "keys":"Touches clavier", + "moved_left":"déplacer le graphique à gauche", + "moved_top":"déplacer le graphique en haut", + "moved_right":"déplacer le graphique à droite", + "moved_botom":"déplacer le graphique en bas", + "guide":"Guide d'utilisation", + "using":"Utilisation", + "examples":"Exemples", + "other":"Autres", + "you_can_view":"Vous pouvez cliquer sur un exemple pour l'afficher. Pensez à ajuster la précision du graphique dans les options si nécessaire", + "save_graph":"Enregistrer le graphique", + "in_some_browsers":"Dans certains navigateurs, lorsque vous utilisez la méthode d'affichage \"Canvas\", vous pouvez sauvegarder le graphique en cliquant avec le bouton de droite de la souris sur celui-ci et en séléctionnant \"Enregistrer l'image\". Vous pouvez aussi sauvegarder le graphique 3D. ", + "offset":"Décalage", + "if_graph_isnt":"Si le graphique n'est pas à la bonne place (il dépasse de la zone prévue), ajustez le \"décalage du graphique\" dans le menu des options. Pour Konqueror, il faut utiliser un décalage de x=122 et y=48.", + "history":"Historique", + "current":"Actuelle", + "additional":"Supplémentaires", + "left_arrow":"flèche gauche", + "right_arrow":"flèche droite", + "top_arrow":"flèche haut", + "bottom_arrow":"flèche bas", + "or":"ou", + "funcs":"Fonction", + "widget_is_developed":"Widget réalisé par", + "if_you_want_to":"Si vous voulez rapporter un bug, avez une suggestion par rapport au widget ou voulez simplement poser une question, merci de me contacter par:", + "if_you_want_to_change":"Les images d'arrière-plan du widget on été tirées des thèmes du bureau \"plasma-desktop\" de l'environnement:", + "set_of_def":"Ensemble de définition:", + "parity":"Parité:", + "zeros":"Zéros de la fonction:", + "signe":"Signe:", + "asympt":"Asymptotes", + "min":"Min", + "ev":"paire", + "unev":"impaire", + "na":"aucune", + "curve_lower":"courbe au-dessus de l'AH", + "curve_higher":"courbe au-dessous de l'AH", + "max":"Max", + "no_min":"Aucun minimum", + "no_max":"Aucun maximum", + "tool_for":"L'outil permettant d'étudier les fonctions n'est pas fiable à 100%. Pensez à vérifier les résultats de l'étude avant d'en faire une quelconque utilisation.", + "ah_left":"AH gauche:", + "ah_right":"AH droite:", + "av":"AV:", + "options_saved":"Options sauvegardées!", + "cur_version":"Version en cours d'utilisation:", + "last_version":"Dernière version disponible en ligne:", + "using_web":"Ce widget est également utilisable dans un navigateur internet sur le site:", + "show_saved":"Options actuellement sauvegardées" + }, + "sk":{ + "fnc":"Funkcia: ", + "display":"Zobraziť", + "x_axis":"Os x", + "y_axis":"Os y", + "zoom":"Lupa", + "color":"Farba:", + "menus":"Menu", + "tools":"Nástroje", + "options":"Možnosti", + "help":"Pomoc", + "about":"O aplikácii", + "mouse_events":"Činnosti s myšou:", + "moving":"Presúvanie", + "tangente":"Dotyčnica", + "point":"Bod", + "choosing_color":"Výber farby:", + "value":"Hodnota:", + "saturation":"Nasýtenie:", + "red":"Červená:", + "green":"Zelená:", + "blue":"Modrá:", + "opacity":"Priehľadnosť:", + "check":"Vyskúšať", + "derivative":"Derivovaná funkcia:", + "square_under_func":"Štvorec pod funkciou:", + "from":"Od", + "to":"Do", + "calculate":"Vypočítať", + "draw":"Vyznačiť", + "point_calculate":"Vypočítať bod podľa funkcie:", + "estimate":"Odhadnúť", + "analysis_of_func":"Analýza funkcie:", + "start_to_analysis":"Spustiť analýzu", + "quit":"Koniec", + "display_test":"Zobraziť test:", + "test":"Test", + "widget":"Widget", + "widget_options":"Možnosti widgetu", + "themes_of_widget":"Farba widgetu:", + "black":"čierna", + "white":"biela", + "control_options":"Možnosti ovládania:", + "save":"Uložiť", + "load":"Spustiť", + "del":"Vymazať", + "save_a_widget_options":"Uloží nastavenia widgetu do cookies alebo spustí nastavenia z cookies alebo vymaže uložené nastavenia.", + "auto_update":"Automaticky aktualizovať pri otvorení widgetu.", + "reload_widget":"Znova spustiť widget", + "update":"Aktualizovať", + "the_graphical":"Spôsob grafického zobrazenia: ", + "lines":"čiary", + "points":"body", + "image":"obrázok", + "zoom_def":"Predvolená lupa:", + "update_zoom":"Aktualizovať lupu", + "show_grid":"Zobraziť mriežku", + "show_axis":"Zobraziť os", + "scale":"Mierka", + "thickness":"Hrúbka:", + "offset_diagram":"Posunúť diagram:", + "accuracy_graph":"Presnosť grafu:", + "show_the_style":"Zobraziť štýl:", + "surfaces":"plocha", + "points":"body", + "reset_display":"Obnoviť zobrazenie", + "accuracy_func":"Presnosť funkcie:", + "use_the_color":"Použiť farbu:", + "positive_value":"positívna hodnota", + "negative_value":"negatívna hodnota", + "general_value":"všeobecná hodnota", + "how_it_work":"Ako to funguje", + "this_widget_allow":"Tento widget vám umožňuje nakresliť graf matematickej funkcie. Zadajte funkciu do poľa v hornej časti a stlačte tlačidlo\"Zobraziť\"", + "you_can_enter":"Môžete zadať tieto matematické funkcie:", + "basic_operations":"Základné operácie", + "plus":"plus", + "minus":"mínus", + "multi":"násobenie", + "division":"delenie", + "mod":"mod", + "trigonometric":"Trigonometrické funkcie", + "sine":"sínus", + "cosine":"kosínus", + "tangent":"tangens", + "cotangent":"kotangens", + "secant":"sekant", + "cosecant":"kosekant", + "arc_sine":"arkus sínus", + "arc_cosine":"arkus kosínus", + "arc_tangent":"arkus tangens", + "arc_cotangent":"arkus kotangens", + "hyperbolic_func":"Hyperbolické funkcie", + "hyp_sine":"hyperbolický sínus", + "hyp_cosine":"hyperbolický kosínus", + "hyp_tangent":"hyperbolický tangens", + "hyp_cotangent":"hyperbolický kotangens", + "hyp_secant":"hyperbolický sekant", + "hyp_cosecant":"hyperbolický kosecant", + "hyp_arc_sine":"hyperbolický arkus sínus", + "hyp_arc_cosine":"hyperbolický arkus kosínus", + "hyp_arc_tangent":"hyperbolický arkus tangens", + "hyp_arc_cotangent":"hyperbolický arkus kotangens", + "square_roots_and_degrees":"Mocminy a odmocniny", + "square_root":"Druhá odmocnina", + "degree":"Mocniny", + "root":"Odmocniny", + "variable_x":"hodnota x umocnená na y", + "root_y":"Odmocnina y z čísla x", + "exponential":"Exponenciálne funkcie a logaritmy", + "natural_log":"Prirodzený logaritmus", + "decimal_log":"Dekadický logaritmus", + "abs":"Absolútna hodnota čísla", + "rounding":"Zaokrúhľovanie", + "round_nearest":"zaokrúhlenie na najbližšie celé číslo", + "round_nearest_big":"zaokrúhlenie na najbližšie väčšie celé číslo", + "round_nearest_small":"zaokrúhlenie na najbližšie menšie celé číslo", + "consts":"Konštanty", + "available_const":"K dispozíci je aj niekoľko konštánt:", + "keys":"Klávesové skratky", + "moved_left":"graf sa posunie doľava", + "moved_top":"graf sa posunie nahor", + "moved_right":"graf sa posunie doprava", + "moved_botom":"graf sa posunie nadol", + "guide":"Používateľská príručka", + "using":"Použitie", + "examples":"Príklady", + "other":"Iné", + "you_can_view":"Tento príklad si môžete zobraziť. Nezabudnite v možnostiach nastaviť presnosť, ak to bude potrebné.", + "save_graph":"Uloženie grafu", + "in_some_browsers":"V niektorých prehliadačoch pri použití metódy zobrazenia \"Plátno\" môžete uložiť graf tak, že naň kliknete pravým tlačidlom myši a vyberiete možnosť \"Uložiť obrázok\". Môžete ukladať aj 3D-grafy.", + "offset":"Posun", + "if_graph_isnt":"Ak graf nie je na správnom mieste (je väčší ako plátno), môžete nastaviť potrebné nastavenia v menu.", + "history":"História", + "current":"Súčasná", + "additional":"Ďalšia", + "left_arrow":"šípka doľava", + "right_arrow":"šípka doprava", + "top_arrow":"šípka nahor", + "bottom_arrow":"šípka nadol", + "or":"alebo", + "funcs":"Funkcie", + "widget_is_developed":"Widget programuje", + "if_you_want_to":"Ak nás chcete informovať o chybe, napísať nám podnet alebo sa len niečo opýtať, môžete napísať na tento e-mail:", + "if_you_want_to_change":"Ak chcete zmeniť dizajn pozadia, potom môžete napísať na túto adresu:", + "set_of_def":"Definičný obor:", + "parity":"Párnosť:", + "zeros":"Núl vo funcii:", + "signe":"Znamienko:", + "asympt":"Asymptoty", + "min":"Min", + "ev":"párna", + "unev":"nepárna", + "na":"–", + "curve_lower":"Krivka je nižšie ako HA", + "curve_higher":"Krivka je vyššie ako HA", + "max":"Max", + "no_min":"Žiadne minimum", + "no_max":"Žiadne maximum", + "tool_for":"Nástroj na analýzu funkcie nie je spoľahlivý na 100 %. Nezabudnite si skontrolovať výsledky analýzy predtým, ako ich použijete.", + "ah_left":"HA vľavo:", + "ah_right":"HA vpravo:", + "av":"AV:", + "options_saved":"Nastavenia uložené!", + "cur_version":"Súčasná verzia:", + "last_version":"Najnovšia on-line verzia:", + "using_web":"Tento widget je dostupný na používanie na stránke:", + "show_saved":"Teraz budú parametre uložené" + } + +}; diff --git a/resources/library/applications/GraphMe.wgt/Style/ColorPicker.css b/resources/library/applications/GraphMe.wgt/Style/ColorPicker.css deleted file mode 100644 index 8ec2103b..00000000 --- a/resources/library/applications/GraphMe.wgt/Style/ColorPicker.css +++ /dev/null @@ -1,56 +0,0 @@ -/* ColorPicker */ -#canvasSV{ - width: 250px; - height: 250px; - border: 1px solid black; -} -#canvasT{ - width: 25px; - height: 250px; - border: 1px solid black; - position: relative; - left: 10px; -} -#canvasO{ - width: 290px; - height: 25px; - position: relative; - top: 5px; -} - -/* Valeurs de la couleur dans le ColorPicker */ -#colorValues{ - position: relative; - left: 10px; - font-size: 11px; - float: right; -} -#colorValues td{ - vertical-align: middle; - text-align: right; -} - -/* Aperçus dans le ColorPicker */ -#apercuCouleur{ - position: absolute; - right: 20px; - bottom: 40px; - width: 40px; - height: 30px; - border: 1px white solid; - border-radius: 5px; - -webkit-border-radius: 5px; - background-color: rgb(193,255,0); -} - -#apercuCouleur2{ - position: absolute; - right: 65px; - bottom: 40px; - width: 40px; - height: 30px; - border: 1px white solid; - border-radius: 5px; - -webkit-border-radius: 5px; - background-color: rgb(193,255,0); -} diff --git a/resources/library/applications/GraphMe.wgt/Style/Haut.css b/resources/library/applications/GraphMe.wgt/Style/Haut.css deleted file mode 100644 index 329a839f..00000000 --- a/resources/library/applications/GraphMe.wgt/Style/Haut.css +++ /dev/null @@ -1,341 +0,0 @@ -/* Boutons qui sont en haut du widget */ -#haut{ - position: absolute; - top: 0px; - left: 8px; - right: 0px; - height: 30px; - z-index: 2; - pointer-events: none; -} - -#haut > *{ - pointer-events: auto; -} - -/* Onglets */ -.ongletHaut{ -/* background-color: rgba(255, 255, 255, 0.3); */ - background-image: url('../Images/gradient2.png'); - border-color: rgba(255, 255, 255, 0.2); - border-style: none solid solid solid; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - border-width: 1px; - box-shadow: 0px 0px 2px rgba(0,0,0,0.5); - color: white; - font-size: 16px; - text-align: center; - display: inline-block; - min-width: 90px; - height: 19px; - margin-right: 5px; - padding: 2px 8px; - opacity: 0.9; - cursor: pointer; - vertical-align: bottom; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ongletHaut:hover{ - background-color: rgba(0,180,255,0.3); -/* border-color: rgba(255, 255, 255, 0.6); */ - box-shadow:0px 0px 6px rgba(0,180,255,1), 0px 0px 3px rgba(0,0,0,1); - opacity: 1; -} -.ongletHaut:active{ - background-color: rgba(0,90,128,0.3); - box-shadow:0px 0px 6px rgba(0,90,128,1), 0px 0px 3px rgba(0,0,0,1); - position: relative; - color: rgba(255,255,255,0.8); - padding-top: 1px; - bottom: 1px; -} -.premierOngletHaut{ - font-weight: bold; - background-color: rgba(255,160,0,0.3); -} -.premierOngletHaut:hover{ - background-color: rgba(255,160,0,0.5); - box-shadow:0px 0px 6px rgba(255,160,0,1), 0px 0px 3px rgba(0,0,0,1); -} -.premierOngletHaut:active{ - background-color: rgba(128,80,0,0.5); - box-shadow:0px 0px 6px rgba(128,80,0,1), 0px 0px 3px rgba(0,0,0,1); -/* position: relative; */ -/* bottom: 1px; */ -} - -/* Bouton qui sert à choisir entre l'affichage 3D et 2D */ -#onglet3D{ - position: absolute; - top: 8px; - left: 538px; - width: 40px; - height: 19px; - padding-top: 2px; - color: white; - font-size: 16px; - text-align: center; - background-color: rgba(255,255,255,0); - background-image: url('../Images/gradient2.png'); -/* background-image: url("../Images/onglet1.png"); */ - border: 1px solid rgba(255,255,255,0.2); - border-bottom: none; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - box-shadow: 0px 0px 2px rgba(0,0,0,0.2); - cursor: pointer; - opacity: 0.8; - z-index: 3; -} -#onglet3D:hover{ - background-color: rgba(255, 255, 255, 0.2); - box-shadow: 0px 0px 4px rgba(255,255,255,1); - opacity: 1; -} -#onglet3D:active{ - background-color: rgba(255, 255, 255, 0.1); - box-shadow: 0px 0px 4px rgba(255,255,255,0.5); - top: 9px; - color: rgba(255,255,255,0.8); -} - -/* Petits boutons en haut à droite du widget */ -#topRightButtons{ - position: absolute; - right: 10px; - top: 3px; - z-index: 4; -} -.miniBouton{ - display: inline-block; - width: 12px; - height: 12px; - color: white; - font-size: 12px; - text-align: center; - background-color: rgba(255,255,255,0); - background-image: url('../Images/gradient.png'); - background-position: 0px 0px; - border: 1px solid rgba(255,255,255,0.5); - border-radius: 6px; - -webkit-border-radius: 6px; - box-shadow: 0px 0px 2px rgba(0,0,0,1); - cursor: pointer; - opacity: 0.5; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.miniBouton:hover{ - opacity: 1; - box-shadow: 0px 0px 4px rgba(255,255,255,1); -} -.miniBouton:active{ - box-shadow: 0px 0px 4px rgba(255,255,255,0.5); - border: 1px solid rgba(255,255,255,0.4); - width: 11px; - height: 11px; - font-size: 11px; - margin-left: 1px; -} - -/* Bouton permettant de minimiser et maximiser le widget */ -/* Non utilisé pour le moment...*/ -#miniMax{ - position: absolute; - left: 564px; - top: 3px; - z-index: 3; -} - -/* Boutons pour changer l'action de la souris*/ -#zoomButtons{ - position: absolute; - left: 13px; - top: 70px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -#toolButtons{ - position: absolute; - left: 23px; - top: 103px; - padding: 2px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -#toolButtons .toolButton{ - margin-bottom: 5px; - margin-top: 0px; -} -#toolButtons .toolButton:active{ - margin-bottom: 7px; -} - -.toolButton{ - margin-left: auto; - margin-right: auto; - width: 16px; - height: 16px; - color: white; - font-size: 14px; - text-align: center; - font-weight: bold; - background-color: rgba(255,255,255,0); - background-image: url('../Images/gradient.png'); - background-position: 0px 0px; - border: 1px solid rgba(255,255,255,0.5); - border-radius: 100%; - -webkit-border-radius: 10px; - box-shadow: 0px 0px 2px rgba(0,0,0,1); - cursor: pointer; - opacity: 0.5; -} -.toolButton:hover{ - opacity: 1; - box-shadow: 0px 0px 4px rgba(255,255,255,1); -} -.toolButton:active{ - box-shadow: 0px 0px 4px rgba(255,255,255,0.5); - border: 1px solid rgba(255,255,255,0.4); - width: 14px; - height: 14px; - font-size: 12px; - position: relative; - top: 1px; -} - -.toolButton.selectedTool{ -/* background-color: rgba(255,255,255,0); */ - background-color: rgba(0,180,255,0.3); - box-shadow:0px 0px 6px rgba(0,180,255,1), 0px 0px 3px rgba(0,0,0,1); - opacity: 0.7; -} - -.zoomButton{ - display: inline-block; - width: 22px; - height: 22px; - border-radius: 6px; - box-sizing: border-box; - padding: 2px; -} -.zoomButton:active{ - width: 20px; - height: 20px; - top: 0px; -} - -#zoomOut{ - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; -} -#zoomOut:active{ - margin-left: 2px; -} - -#zoomIn{ - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -.toolButton > .icon{ - background-size: 100%; - width: 100%; - height: 100%; -} - -#moveTool > .icon{ - background-image: url('../Images/move.png'); -} - -#tangentTool> .icon{ - background-image: url('../Images/tangent.png'); -} - -/* Joystick de déplacement */ -#zoneJoystick{ - position: absolute; - left: 8px; - top: 8px; - width: 50px; - height: 50px; - padding-left: 6px; - padding-top: 6px; -/* border: 1px solid green; */ - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -} - -#joystick{ - width: 40px; - height: 40px; - color: white; - font-size: 14px; - text-align: center; - font-weight: bold; - background-color: rgba(255,255,255,0.2); - background-image: url('../Images/gradient4.png'); - background-position: 0px 0px; - border: 1px solid rgba(255,255,255,0.5); - border-radius: 25px; /*100% bug dans uniboard*/ - -webkit-border-radius: 25px; - box-shadow: 0px 0px 2px rgba(0,0,0,1); - cursor: pointer; - opacity: 0.5; -} -#joystick:hover{ - opacity: 1; - box-shadow: 0px 0px 2px rgba(255,255,255,1); -} -#joystick:active{ -/* box-shadow: 0px 0px 4px rgba(255,255,255,0.5); */ -/* border: 1px solid rgba(255,255,255,0.4); */ -/* width: 38px; */ -/* height: 38px; */ -/* font-size: 12px; */ -/* position: relative; */ -/* top: 1px; */ -/* left: 1px; */ -/* margin-bottom: 7px; */ -} -#joystick table{ - border-collapse: collapse; - width: 40px; - height: 40px; - font-size: 11px; -} -#joystick table tr td{ - padding: 0px; - text-shadow: 0px 0px 5px black; -/* border: 1px solid orange; */ - opacity: 0.5; -} -#joystick table tr td:hover{ - text-shadow: 0px 0px 3px white; - opacity: 1; -} -#joystick table tr td:active{ - opacity: 0.8; -} diff --git a/resources/library/applications/GraphMe.wgt/Style/Menus.css b/resources/library/applications/GraphMe.wgt/Style/Menus.css deleted file mode 100644 index 5a04ab64..00000000 --- a/resources/library/applications/GraphMe.wgt/Style/Menus.css +++ /dev/null @@ -1,238 +0,0 @@ -/* Style pour les menus */ -.menu{ - position: absolute; - top: 0%; - width: 100%; - max-width: 800px; - min-height: 411px; - max-height: 100%; - overflow: auto; - background-color: rgba(255, 255, 255, 0.7); - border-style: none; - border-width: 1px; - border-color: rgba(0,70,128, 0.9); - border-radius: 4px; - -webkit-border-radius: 4px; - z-index: 2; - display: none; - box-sizing: border-box; -} -.barreBasMenu{ - position: absolute; - bottom: 0px; -/* right: 0px; */ -} -.barreBasMenu > div{ - position: fixed; - width: 100%; - max-width: 800px; - box-sizing: border-box; - /* right: 0px; */ -/* bottom: 14px; */ -} -.barreBasMenu > div > div{ - position: absolute; - bottom: 0px; - right: 0px; - width: 100%; - box-sizing: border-box; - padding-right: 28px; -/* background-color: rgba(255,0,0,0.3); */ - text-align: right; -} -.contenuMenu{ - font-size: 14px; - padding: 15px; - padding-top: 40px; -/* overflow: auto; */ -/* height: 100%; */ -/* position: absolute; */ -/* top: 0px; */ -/* bottom: 0px; */ -} -.avecBordures{ -/* border-top: 1px solid rgba(255, 255, 255, 0.4); */ -/* height: 80% */ -} -.ongletMenu{ - position: fixed; -/* top: 0px; */ - width: 100%; - max-width: 800px; -/* height: 50px; */ -/* background-color: rgba(255,0,0,0.3); */ -/* border-spacing: 15px; */ - box-sizing: border-box; - padding-right: 14px; - text-align: center; - z-index: 1; -} -.ongletMenu > div{ -/* position: fixed; */ -/* width: inherit; */ -/* top: 0px; */ -/* left: 0px; */ -/* right: 0px; */ -} -.deuxOnglets span{ - width: 44%; -} -.troisOnglets span{ - width: 28%; -} -.ongletMenu span{ - display: inline-block; - min-width: 150px; - padding: 5px; - margin: 0px 7px; - text-align: center; - font-weight: normal; - background-color: rgba(255, 255, 255, 0.8); - background-image: url('../Images/gradient3.png'); - border: 1px solid rgba(255, 255, 255, 0.9); - border-top: none; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - box-shadow: 0px 0px 3px rgba(0,0,0,0.5); - opacity: 0.7; - cursor: pointer; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ongletMenu span.ongletMenuActuel{ - opacity: 0.9; - font-weight: bold; - background-color: rgba(255, 255, 255, 0.9); -} -.ongletMenu span:hover{ - opacity: 1; - box-shadow:0px 0px 3px rgba(0,0,0,0.5), 0px 0px 7px rgba(255,255,255,1); -} -.ongletMenu span:active{ - opacity: 0.7; - font-weight: bold; - box-shadow:0px 0px 3px rgba(0,0,0,0.5), 0px 0px 7px rgba(255,255,255,0.5); -} -.menu table.colonnes tr td{ - vertical-align: top; -} -.menu table.colonnes tr td{ - border-left: 1px solid rgba(255,255,255,0.5); - padding-left: 4px; -} -.menu table.colonnes tr td.premiereColonne{ - border: none; - padding-right: 4px; -} - - -.miniMenu{ - position: absolute; - top: 45%; - left: 50%; - margin-left: -160px; - margin-top: -120px; - width: 320px; - min-height: 240px; - padding: 5px; - text-align: center; - font-size: 14px; - overflow: auto; - background-color: rgba(255, 255, 255, 0.6); - background-image: url('../Images/gradient2.png'); - background-size: 100% 100%; - box-shadow: 0px 0px 5px rgba(0,0,0,0.5); - border-style: solid; - border-width: 1px; - border-color: rgba(255,255,255, 0.5); - border-radius: 8px; - -webkit-border-radius: 8px; - z-index: 2; - display: none; -} -.alertMenu{ - position: absolute; - top: 126px; - left: 206px; - width: 220px; - height: 140px; - padding: 10px; - text-align: center; - font-size: 14px; - overflow: auto; - background-color: rgba(255, 255, 255, 0.9); - background-image: url('../Images/gradient2.png'); - background-size: 100% 100%; - border-style: solid; - border-width: 1px; - border-color: rgba(0,70,128, 0.9); - border-radius: 15px; - -webkit-border-radius: 15px; - z-index: 3; - display: none; -} -.miniMenu select{ -/* width: 65px; */ -} -.miniMenu input{ - width: 45%; - height: 32px; -} -.miniMenu input.smallInput{ - width: 45%; - height: 16px; -} -.alertMenu input{ - width: 45%; - height: 32px; -} - - -/* Menu "à propos" */ -#credits{ - width: 80%; - margin: auto; - margin-top: 10px; -} -#credits tr td{ - padding: 10px; - width: 100%; - height: 150px; - text-align: center; - text-shadow: 2px 2px 6px rgba(255,255,255,1); - vertical-align: middle; - background-color: rgba(255,220,150,0.5); - background-image: url('../Images/gradient2.png'); - background-size: 100% 100%; - border: 1px solid rgba(255,230,150,0.6); - border-radius: 10px; - -webkit-border-radius: 10px; - box-shadow: 0px 0px 8px rgba(140,70,0,0.5) ; -} -#credits tr td img{ - float: left; - margin-top: 20px; - margin-bottom: 20px; -} -#credits tr td a{ - font-size: 80%; -} -#credits tr td h3{ - text-align:center; -} - -#saveImageContent{ - width: 100%; - height: 100%; - box-sizing: border-box; - padding-bottom: 30px; -} -#saveImageContent img{ - max-width: 100%; - max-height: 100%; -} diff --git a/resources/library/applications/GraphMe.wgt/Style/Widget.css b/resources/library/applications/GraphMe.wgt/Style/Widget.css deleted file mode 100644 index ae120352..00000000 --- a/resources/library/applications/GraphMe.wgt/Style/Widget.css +++ /dev/null @@ -1,659 +0,0 @@ -body{ - background-color: transparent; - font-family: Sans-Serif; -} -table tr td{ - padding: 0px; -} - -/* Widget background */ -html, body{ - height: 100%; - margin: 0px; -} - -#background{ - width: 100%; - height: 100%; - border-spacing: 0; - border-collapse: collapse; -} -.background-border-x{ - height: 14px; - padding: 0px; - background-color: "black"; -} -.background-border-y{ - width: 14px; - padding: 0px; - background-color: "black"; -} -#background-top-left{ - background-image: url('../Images/darkblue/top-left.png'); - background-size: 100% 100%; -} -#background-top{ - background-image: url('../Images/darkblue/top.png'); - background-size: 100% 100%; -} -#background-top-right{ - background-image: url('../Images/darkblue/top-right.png'); - background-size: 100% 100%; -} -#background-bottom-left{ - background-image: url('../Images/darkblue/bottom-left.png'); - background-size: 100% 100%; -} -#background-bottom{ - background-image: url('../Images/darkblue/bottom.png'); - background-size: 100% 100%; -} -#background-bottom-right{ - background-image: url('../Images/darkblue/bottom-right.png'); - background-size: 100% 100%; -} -#background-left{ - background-image: url('../Images/darkblue/left.png'); - background-size: 100% 100%; -} -#background-right{ - background-image: url('../Images/darkblue/right.png'); - background-size: 100% 100%; -} -#background-center{ - background-image: url('../Images/darkblue/center.png'); - background-size: 100% 100%; - height: 100%; - padding-top: 30px; - position: relative; -} - -/* Widget center */ -#widgetCenter{ - height: 100%; - position: relative; -} - -/* Zone d'affichage des fonctions */ -#eventAffichage{ - height: 100%; - position: relative; -} -#eventAffichage canvas{ - display: block; -} -#affichage{ - height: 100%; - box-sizing: border-box; - overflow: hidden; - border: 1px solid rgba(255,255,255,0.5); - border-radius: 5px; - -webkit-border-radius: 5px; -} -#affichageOutils{ - position: absolute; - top: 0px; - box-sizing: border-box; - height: 100%; - width: 100%; -} - -#divInputRapide{ - display: none; - position: absolute; - top: 11px; - left: 108px; - padding: 3px; - color: white; - text-align: center; - border: 1px solid rgba(255,255,255,0.2); - border-radius: 5px; - -webkit-border-radius: 5px; - box-shadow: 0px 0px 2px rgba(0,0,0,0.5); - background-image: url('../Images/gradient3.png'); - background-color: rgba(255,255,255,0.1); - background-size: 100% 100%; - z-index: 2; -} -#inputRapide{ - width: 270px; -} - -#menuFonctions3D{ - position: absolute; - top: 11px; - left: 108px; - padding: 3px; - color: white; - text-align: center; - border: 1px solid rgba(255,255,255,0.2); - border-radius: 5px; - -webkit-border-radius: 5px; - box-shadow: 0px 0px 2px rgba(0,0,0,0.5); - background-image: url('../Images/gradient3.png'); - background-color: rgba(255,255,255,0.1); - background-size: 100% 100%; - z-index: 2; -} -#input3D{ - width: 265px; -} - -/* Messages */ -#divMessages div{ - position: absolute; - background-image: url('../Images/cursor.png'); - background-repeat: no-repeat; - z-index: 4; - pointer-events: none; - min-height: 24px; -} -#divMessages div span{ - position: relative; - left: 19px; - top: 20px; - padding: 2px; - color: white; - font-size: 11px; - text-align: center; - border: 1px solid rgba(255,255,255,0.2); - border-radius: 5px; - -webkit-border-radius: 5px; - box-shadow: 0px 0px 2px rgba(0,0,0,0.5); - text-shadow: 0px 0px 3px rgba(0,165,255,0.7); - background-image: url('../Images/gradient2.png'); - background-color: rgba(0,86,134,0.6); - pointer-events: auto; -} -#divMessages div span a{ - color : rgb(135,210,255); - cursor: pointer; -} -#divMessages div span a:hover{ - color : rgb(110,200,255); - text-decoration: underline; - text-decoration-style: dotted; -} - - -/* Taille standard des boutons*/ -.bouton{ - /*width: 100px;*/ - height: 25px; - font-size: 12px; -} - -/* Boutons qui sont dans la partie gauche et qui ouvrent les différents menus */ -.boutonGauche{ - width: 100%; - height: 32px; - text-align: center; -} - -/* Aperçu couleur 3D*/ -#apercuCouleur3D{ - border: 1px solid rgba(0, 0, 0, 0.7); - border-radius: 4px; - -webkit-border-radius: 4px; -} - -/* Taille des champs contenant seulement 2 ou 3 caractères */ -.smallInput{ - width: 35px; -} -.mediumInput{ - width: 45px; -} - - -/* Boutons qui ouvrent le ColorPicker */ -.boutonCouleur{ - position: relative; - left: 2px; - top: 4px; - width: 15px; - height: 15px; - border: 1px solid rgba(0,0,0,0.5); - border-radius: 5px; - -webkit-border-radius: 5px; - background-color: rgba(0,128,255,0.8); - display: inline-block; - cursor:pointer; - opacity: 0.7; -} -.boutonCouleur:hover{ - box-shadow: 0px 0px 2px rgba(0,128,255,1); - opacity: 1; -} - -/* Texte d'information (plus petit) */ -.texteSecondaire{ - font-size: 11px; - color: rgba(0,0,0,0.5); - margin-left: 10px; -} - -/* Style pour le texte où on peut cliquer dessus */ -.survol{ - cursor: pointer; - color: rgb(0,70,120); -} -.survol:hover{ - color: rgb(0,110,150); - opacity: 0.7; -/* text-shadow: 0px 0px 3px white; */ -} - -/* Texte en gras */ -.gras{ - font-weight: bold; -} - -/* Flèches permettant de deplacer l'affichage */ -.flecheDeplacement{ - color: black; - text-shadow: 0px 0px 20px rgba(255,255,255,1); - opacity: 0; - font-size: 56px; - text-align: center; - cursor: pointer; - z-index: 1; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.flecheDeplacement:hover{ - opacity: 0.4; -} -.flecheDeplacement:active{ - opacity: 0.3; -} -#flecheHaut{ - position: absolute; - top: 15px; - left: 50%; - margin-left: -35px; - width: 70px; - height: 55px; -} -#flecheBas{ - position: absolute; - bottom: 20px; - left: 50%; - margin-left: -35px; - width: 70px; - height: 55px; -} -#flecheGauche{ - position: absolute; - top: 50%; - margin-top: -36px; - left: 15px; - width: 55px; - height: 70px; -} -#flecheDroite{ - position: absolute; - top: 50%; - margin-top: -36px; - right: 15px; - width: 55px; - height: 70px; -} - - -/* Boutons permettant de choisir l'action de la souris dans le menu des outils */ -.choixOutil{ - width: 125px; - height: 40px; - font-size: 14px; - cursor: pointer; -} - - -/* Petits boutons plus et moins dans les options */ -.boutonPlus{ - position: relative; - top: -7px; - left: -5px; - width: 10px; - height: 10px; - font-size: 9px; - text-align: center; - background-color: rgba(0, 140, 255, 0.2); - border: 1px rgba(0,0,0,0.5) solid; - border-radius: 3px; - -webkit-border-radius: 3px; - cursor: pointer; - display: inline-block; -} -.boutonMoins{ - position: relative; - top: 6px; - left: -17px; - width: 10px; - height: 10px; - font-size: 9px; - text-align: center; - background-color: rgba(0, 140, 255, 0.2); - border: 1px rgba(0,0,0,0.5) solid; - border-radius: 3px; - -webkit-border-radius: 3px; - cursor: pointer; - display: inline-block; -} -.boutonPlus:hover{ - border: 1px rgba(0,0,0,0.7) solid; - background-color: rgba(0, 140, 255, 0.5); -} -.boutonMoins:hover{ - border: 1px rgba(0,0,0,0.7) solid; - background-color: rgba(0, 140, 255, 0.5); -} - - - -/* Menu etudes fonctions*/ -#menuEtude p{ - margin-top: 7px; - margin-bottom: 0px; -/* font-weight: bold; */ -} -#menuEtude span{ -/* font-weight : normal; */ -} -/* Tableau du signe dans le menu d'étude de la fonction*/ -#etudeSigne{ -/* border-collapse: collapse; */ - border-spacing: 0px; -} -#etudeSigne td{ - min-width: 25px; - text-align: center; - padding: 0px; -} -#etudeSigne td.premier{ - font-weight: bold; -} -#etudeSigne td.bordure{ - border: 1px solid black; - border-radius: 3px; - -webkit-border-radius: 3px; -} -#etudeSigne td.fondNoir{ - background-color: rgba(0,0,0,0.5); -} - -/* Titres des menus */ -h1{ - font-size: 16px; - font-weight: 600; - text-align: center; - /*font-style: italic;*/ - margin-top: 15px; - margin-bottom: 25px; -} -h2{ - font-size: 14px; - font-weight: normal; - font-style: italic; - margin-top: 30px; -} -h3{ - font-size: 16px; - font-weight: 600; - text-align: left; - /*font-style: italic;*/ - margin-top: 7px; - margin-bottom: 20px; -} -h4{ - font-size: 16px; - font-weight: 600; - text-align: center; - /*font-style: italic;*/ - margin-top: 15px; - margin-bottom: 10px; -} - - -/* Menu Mise à Jour */ -#mAj{ - text-align: center; - font-size: 14px; -} -#mAj h1{ - font-size: 22px; - margin-top: 5px; - margin-bottom: 15px; -} -#mAj span object{ - position: relative; - bottom: 4px; - width: 150px; - height: 27px; - overflow: hidden; -} -#mAj input{ - min-height: 27px; -} - -.boutonSauvegarde{ - width: 100px; - height: 32px; -} -#cacheCookies{ - position: absolute; - top: 150px; - left: 10px; - width: 93%; - height: 150px; - background-color: rgba(255,255,255,0.7); - border: 1px rgba(255,255,255,0.8) solid; - border-radius: 3px; - -webkit-border-radius: 3px; - text-align: center; - display: none; -} -#cacheMaJ{ - position: absolute; - padding-top: 20px; - padding-bottom: 10px; - top: 250px; - left: 14px; - width: 93%; - height: 25px; - background-color: rgba(255,255,255,0.8); - border: 1px rgba(255,255,255,0.8) solid; - border-radius: 3px; - -webkit-border-radius: 3px; - text-align: center; - font-weight: bold; - display: none; -} - -/* Menu clique droite sur le graphique */ -#ctxMenu{ - position: absolute; - border: 1px solid black; - border-radius: 5px; - background-color: rgba(255,255,255,0.8); - box-shadow: 0px 0px 5px rgba(0,64,126,0.5); - font-size: 12px; - padding: 2px; - z-index: 2; - display: none; -} -#ctxMenu input.bouton{ - width: 140px; - height: 25px; -} -#ctxMenu h1{ - font-size: 14px; - text-align: center; - text-decoration: underline; - text-shadow: 0px 0px 4px rgba(0,100,200,0.7); - margin: 3px; -} -#ctxMenu div.fermer{ - position: absolute; - right: 0px; - top: 0px; - width: 10px; - height: 10px; - font-size: 10px; - cursor: pointer; - opacity: 0.7; -} -#ctxMenu div.fermer:hover{ - text-shadow: 0px 0px 2px rgba(0,128,255,1); - opacity: 1; -} -.miniCouleur{ - display: inline-block; - width: 10px; - height: 10px; - border: 1px solid rgba(0,0,0,0.5); - border-radius: 3px; - background-color: rgba(0,128,255,0.8); - cursor: pointer; - opacity: 0.7; -} -.miniCouleur:hover{ - box-shadow: 0px 0px 2px rgba(0,128,255,1); - opacity: 1; -} - -/* Editeur de fonctions dans le menu + */ -#functionMenuRight{ - position: absolute; - right: 15px; - width: 45%; - box-sizing: border-box; -} -#functionMenuLeft{ - max-width: 50%; -/* min-height: 400px; */ - box-sizing: border-box; -} -#fonctionsSupp{ - width: 100%; - min-height: 305px; -/* height: 245px; */ -/* border: 1px solid blue; */ - overflow: auto; -} -.spanFonction{ -/* width: 320px; */ - border: 1px solid rgba(0,0,0,0.3); - border-radius: 5px; - background-color: rgba(255,255,255,0.2); - background-image: url('../Images/gradient2.png'); - background-position: 0px -2px; - box-shadow: 0px 0px 4px rgba(0,64,126,0.2); - padding: 2px; - margin: 4px; - font-weight: bold; - text-align: center; - overflow: hidden; - cursor: pointer; -} -.spanFonction:hover{ - background-color: rgba(164,228,255,0.2); - box-shadow: 0px 0px 2px rgba(0,150,255,0.6); -} -.spanFonctionSelect{ - background-color: rgba(118,214,255,0.4); - border-color: rgba(0,63,126,0.3); -} -.spanFonctionSelect:hover{ - background-color: rgba(118,214,255,0.6); -} -#editeurFonction{ -/* position: absolute; */ -/* right: 15px; */ -/* top: 45px; */ - min-width: 300px; -/* height: 75%; */ - border: 1px solid rgba(255,255,255,0.7); -/* border-top: 1px solid rgba(255,255,255,0.3); */ - border-radius: 5px; - background-color: rgba(255,255,255,0.2); - background-image: url('../Images/gradient2.png'); - background-size: 100% 100%; - box-shadow: 0px 0px 4px rgba(0,64,126,0.2); - font-size: 12px; - padding: 2px; -} -#editeurApercu{ - position: relative; - display : block; - margin : auto; - width: 100px; - height : 80px; - border: 1px solid white; - border-radius: 3px; - background-color: rgba(255,255,255,0.8); - box-shadow: 0px 0px 2px rgba(0,64,126,0.5); - font-size: 12px; - padding: 2px; -} -.editeurOnglets{ - position: relative; - bottom: 3px; - width: 100%; - text-align: center; -} -.editeurOnglets span{ - display: inline-block; - min-width: 70px; - width: 40%; - padding: 5px; - margin: 0px 2px; - text-align: center; - font-weight: normal; - background-color: rgba(255, 255, 255, 0.7); - background-image: url('../Images/gradient3.png'); - border: 1px solid rgba(255, 255, 255, 0.9); - border-top: 1px solid white; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; - -webkit-border-bottom-left-radius: 6px; - -webkit-border-bottom-right-radius: 6px; - box-shadow: 0px 0px 3px rgba(0,0,0,0.5); - opacity: 0.5; - cursor: pointer; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.editeurOnglets span.ongletActuel{ - opacity: 0.8; - font-weight: bold; -} -.editeurOnglets span:hover{ - opacity: 1; - box-shadow:0px 0px 3px rgba(0,0,0,0.5), 0px 0px 7px rgba(255,255,255,1); -} -.editeurOnglets span:active{ - opacity: 0.7; - font-weight: bold; - box-shadow:0px 0px 3px rgba(0,0,0,0.5), 0px 0px 7px rgba(255,255,255,0.5); -} - -#divSuppOutil div{ - position: absolute; - width: 10px; - height: 10px; - font-size: 10px; - cursor: pointer; - opacity: 1; - z-index: 1; -} -#divSuppOutil div:hover{ - color: rgb(200,0,0); -} diff --git a/resources/library/applications/GraphMe.wgt/Style/default.css b/resources/library/applications/GraphMe.wgt/Style/default.css new file mode 100644 index 00000000..1fd90946 --- /dev/null +++ b/resources/library/applications/GraphMe.wgt/Style/default.css @@ -0,0 +1,659 @@ +/* ----------------- */ +/* CSS */ +/* ----------------- */ + + +/* Arrière plan du widget */ +body{ + background-image: url('../Images/fond2.png'); + background-repeat: no-repeat; + background-position: 0px 0px; +} + +/* Zone d'affichage des fonctions */ +#affichage{ + position: absolute; + top: 52px; + left: 129px; + width: 500px; + height: 400px; + overflow:hidden; + border: 2px solid black; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +/* Texte et boutons qui sont en haut du widget */ +#haut{ + position: relative; + top: 13px; + left: 20px; + width: 500px; + z-index: 2; +} + +/* Champ permettant d'entrer la fonction à dessiner */ +#inputEq{ + width: 200px; +} + +/* Texte à côté du champ de la fonction à dessiner */ +#texteFonction{ + color: white; + font-weight: bold; +} + +/* Partie gauche du widget comprenant les boutons des menus et les options rapides */ +#gauche{ + position: absolute; + top: 62px; + left: 18px; + width: 100px; + height: 380px; + padding: 2px; + color: white; + font-size: 80%; + background-image: url('../Images/gauche2.png'); + border-color: black; + /*border-width: 2px;*/ + border-width: 0px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +/* Boutons qui sont dans la partie gauche et qui ouvrent les différents menus */ +.boutonGauche{ + width: 100%; + height: 32px; + text-align: center; +} + +/* Partie gauche du widget lorsque l'affichage 3D est activé */ +#gauche3D{ + position: absolute; + left: -149px; + top: 234px; + width: 360px; + height: 32px; + padding: 2px; + padding-left: 14px; + border: 2px solid rgba(255, 255, 255, 0.4); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + background-color: rgba(255, 255, 255, 0.3); + -moz-transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -o-transform: rotate(270deg); + display: none; + z-index: -1; +} +#gauche3D input.boutonGauche3D{ + width: 90px; + height: 30px; +} + +/* Style pour les menus */ +.menu{ + position: absolute; + top: 68px; + left: 121px; + width: 450px; + height: 350px; + padding: 10px; + overflow: hidden; + background-color: rgba(255, 255, 255, 0.7); + border-style: none; + border-width: 1px; + border-color: rgba(0,70,128, 0.9); + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + z-index: 2; + display: none; +} +.barreBasMenu{ + position: absolute; + right: 0px; + bottom: 0px; +} +.contenuMenu{ + font-size: 14px; + padding: 10px; + overflow: auto; + max-height: 315px; +} +.avecBordures{ + border-top: 1px solid rgba(255, 255, 255, 0.4); + height: 80% +} +.ongletMenu{ + position: relative; + top: 3px; + width: 100%; +} +.ongletMenu tr td{ + width: 30%; + height: 30px; + text-align: center; + font-weight: normal; + background-color: rgba(255, 255, 255, 0.7); + border: 1px solid rgba(255, 255, 255, 0.9); + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + opacity: 0.5; + cursor: pointer; +} +.ongletMenu tr td:hover{ + opacity: 1; +} +.ongletMenu tr td.ongletMenuActuel{ + position:relative; + top:-1px; + opacity: 0.9; + font-weight: bold; + border-bottom : none; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + -moz-border-radius-bottomleft: 0px; + -moz-border-radius-bottomright: 0px; + -webkit-border-bottom-left-radius: 0px; + -webkit-border-bottom-right-radius: 0px; +} +.miniMenu{ + position: absolute; + top: 120px; + left: 170px; + width: 320px; + height: 240px; + padding: 10px; + text-align: center; + font-size: 14px; + overflow: auto; + background-color: rgba(255, 255, 255, 0.9); + border-style: solid; + border-width: 1px; + border-color: rgba(0,70,128, 0.9); + border-radius: 15px; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + z-index: 2; + display: none; +} +.alertMenu{ + position: absolute; + top: 170px; + left: 220px; + width: 220px; + height: 140px; + padding: 10px; + text-align: center; + font-size: 14px; + overflow: auto; + background-color: rgba(255, 255, 255, 0.9); + border-style: solid; + border-width: 1px; + border-color: rgba(0,70,128, 0.9); + border-radius: 15px; + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + z-index: 3; + display: none; +} +.miniMenu input{ + width: 45%; + height: 32px; +} +.alertMenu input{ + width: 45%; + height: 32px; +} + +/* Menu des crédits */ +#credits{ + width: 80%; + margin: auto; +} +#credits tr td{ + padding: 20px; + width: 100%; + height: 150px; + text-align: center; + vertical-align: middle; + background-color: rgba(255, 255, 255, 0.7); + border: 2px solid white; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} +#credits tr td img{ + float: left; +} +#credits tr td a{ + font-size: 80%; +} +#credits tr td h3{ + text-align:center; +} + +/* Aperçu couleur 3D*/ +#apercuCouleur3D{ + border: 1px solid rgba(0, 0, 0, 0.7); + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; +} + +/* Taille des champs contenant seulement 2 ou 3 caractères */ +.smallInput{ + width: 35px; +} + +/* Choix de la saturation et de la valeur dans le ColorPicker */ +#colorSV{ + float: left; + width: 255px; + height: 255px; + border: 1px solid black; + background-color: red; + cursor: crosshair; +} + +/* Choix de la teinte dans le ColorPicker */ +#colorT{ + float: left; + width: 20px; + height: 255px; + margin-left: 10px; + border: 1px solid black; + background-color: black; + cursor: crosshair; +} + +/* Valeurs de la couleur dans le ColorPicker */ +#colorValues{ + position: relative; + left: 10px; + font-size: 80%; +} + +/* Boutons qui ouvrent le ColorPicker */ +/*Menu de gauche*/ +#buttonColor{ + float: left; + position: relative; + left: 75px; + top: -18px; + width: 20px; + height: 20px; + border: 1px white solid; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + background-color: rgb(193,255,0); + cursor:pointer; +} +#buttonColor:hover{ + border-width: 2px; + left: 74px; + top: -19px; +} + +#apercuCouleur{ + position: absolute; + right: 20px; + bottom: 40px; + width: 40px; + height: 30px; + border: 1px white solid; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + background-color: rgb(193,255,0); +} + +#apercuCouleur2{ + position: absolute; + right: 65px; + bottom: 40px; + width: 40px; + height: 30px; + border: 1px white solid; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + background-color: rgb(193,255,0); +} + +/*Fonctions supplémentaires*/ +.boutonCouleur{ + position: relative; + left: 2px; + top: 0px; + width: 20px; + height: 20px; + color: rgba(0,0,0,0); + border: 1px white solid; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + background-color: rgb(0,171,255); + cursor:pointer; +} +.boutonCouleur:hover{ + border-width: 2px; + left: 1px; + top: 0px; +} + +/* Texte d'information (plus petit) */ +.texteSecondaire{ + font-size: 11px; + color: rgba(0,0,0,0.5); + margin-left: 10px; +} + +/* Style pour le texte où on peut cliquer dessus */ +.survol{ + cursor: pointer; +} +.survol:hover{ + color: rgba(0,0,0,0.5); +} + +/* Texte en gras */ +.gras{ + font-weight: bold; +} + +/* Flèches permettant de deplacer l'affichage */ +.flecheDeplacement{ + color: black; + opacity: 0; + font-size: 56px; + text-align: center; + cursor: pointer; + z-index: 1; +} +.flecheDeplacement:hover{ + opacity: 0.4; +} +#flecheHaut{ + position: absolute; + top: 46px; + left: 345px; + width: 70px; + height: 55px; +} +#flecheBas{ + position: absolute; + top: 381px; + left: 345px; + width: 70px; + height: 55px; +} +#flecheGauche{ + position: absolute; + top: 216px; + left: 137px; + width: 55px; + height: 70px; +} +#flecheDroite{ + position: absolute; + top: 216px; + left: 567px; + width: 55px; + height: 70px; +} + +/* Bouton permettant de minimiser et maximiser le widget */ +#miniMax{ + position: absolute; + right: 10px; + top: 10px; + font-size: 24px; + color: rgba(0,0,0,0.4); + cursor: pointer; +} +#miniMax:hover{ + color: rgba(0,0,0,1); +} + +/* Boutons permettant de choisir l'action de la souris dans le menu des outils */ +.choixOutil{ + width: 125px; + height: 40px; + font-size: 14px; + cursor: pointer; +} + +/* Point sous la souris */ +#point{ + position: absolute; + top: -10px; + left: -10px; + color: white; +} +/* Coordonnées du points sous la souris */ +#info{ + position: absolute; + top: 57px; + left: 137px; + color: white; +} +/* Outil de tangente */ +#tangente{ + position: absolute; + top: 52px; + left: 129px; + width: 500px; + height: 400px; + z-index: -1; +} + +/* Petits boutons plus et moins dans les options */ +.boutonPlus{ + position: relative; + top: -7px; + left: -5px; + width: 10px; + height: 10px; + font-size: 9px; + text-align: center; + background-color: rgba(0, 140, 255, 0.2); + border: 1px rgba(0,0,0,0.5) solid; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + cursor: pointer; + display: inline-block; +} +.boutonMoins{ + position: relative; + top: 6px; + left: -17px; + width: 10px; + height: 10px; + font-size: 9px; + text-align: center; + background-color: rgba(0, 140, 255, 0.2); + border: 1px rgba(0,0,0,0.5) solid; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + cursor: pointer; + display: inline-block; +} +.boutonPlus:hover{ + border: 1px rgba(0,0,0,0.7) solid; + background-color: rgba(0, 140, 255, 0.5); +} +.boutonMoins:hover{ + border: 1px rgba(0,0,0,0.7) solid; + background-color: rgba(0, 140, 255, 0.5); +} + +/* Bouton qui sert à choisir entre l'affichage 3D et 2D */ +#onglet3D{ + position: absolute; + top: 30px; + left: 570px; + width: 40px; + height: 21px; + color: white; + text-align: center; + background-color: rgba(255, 255, 255, 0.4); + background-image: url("../Images/onglet1.png"); + border: 1px solid black; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + cursor: pointer; + opacity: 0.4; + z-index: 3; +} +#onglet3D:hover{ + opacity: 0.9; +} + +/* Tableau du signe dans le menu d'étude de la fonction*/ +#etudeSigne td{ + min-width: 25px; + text-align: center; +} +#etudeSigne td.border{ + border: 1px solid black; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +#etudeSigne td.infini{ + background-color: rgba(0,0,0,0.5); +} + +/* Titres des menus */ +h1{ + font-size: 16px; + font-weight: 600; + text-align: center; + /*font-style: italic;*/ + margin-top: 15px; + margin-bottom: 25px; +} +h2{ + font-size: 14px; + font-weight: normal; + font-style: italic; + margin-top: 30px; +} +h3{ + font-size: 16px; + font-weight: 600; + text-align: left; + /*font-style: italic;*/ + margin-top: 10px; + margin-bottom: 20px; +} +h4{ + font-size: 16px; + font-weight: 600; + text-align: center; + /*font-style: italic;*/ + margin-top: 15px; + margin-bottom: 10px; +} + +/* Petits boutons en haut à droite du widget */ +.miniBouton{ + width: 12px; + height: 12px; + color: white; + font-size: 12px; + text-align: center; + background-color: rgba(255,255,255,0.5); + border: 1px solid white; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + cursor: pointer; + opacity: 0.5; +} +.miniBouton:hover{ + opacity: 1; +} +#boutonAgrandir{ + position: absolute; + left: 635px; + top: 11px; + z-index: 3; +} +#boutonFermer{ + position: absolute; + left: 615px; + top: 11px; + z-index: 3; +} + +/* Menu Mise à Jour */ +#mAj{ + text-align: center; + font-size: 14px; +} +#mAj h1{ + font-size: 22px; + margin-top: 5px; + margin-bottom: 15px; +} +#mAj span object{ + position: relative; + bottom: 4px; + width: 150px; + height: 27px; + overflow: hidden; +} +#mAj input{ + height: 32px; +} + +.boutonSauvegarde{ + width: 100px; + height: 32px; +} +#cacheCookies{ + position: absolute; + top: 170px; + left: 14px; + width: 93%; + height: 130px; + background-color: rgba(255,255,255,0.7); + border: 1px rgba(255,255,255,0.8) solid; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + text-align: center; + display: none; +} +#cacheMaJ{ + position: absolute; + padding-top: 10px; + top: 270px; + left: 14px; + width: 93%; + height: 25px; + background-color: rgba(255,255,255,0.8); + border: 1px rgba(255,255,255,0.8) solid; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + text-align: center; + font-weight: bold; + display: none; +} \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/config.xml b/resources/library/applications/GraphMe.wgt/config.xml old mode 100755 new mode 100644 index dcac2d1a..00a066d3 --- a/resources/library/applications/GraphMe.wgt/config.xml +++ b/resources/library/applications/GraphMe.wgt/config.xml @@ -1,10 +1,10 @@ - Mathematical function plotter - + identifier="http://getuniboard.com/" + version="1.3" + width="675" + height="490" + ub:resizable="false"> + Traceur de fonctions mathématiques + diff --git a/resources/library/applications/GraphMe.wgt/version.html b/resources/library/applications/GraphMe.wgt/version.html index 1f113fd2..97104ccc 100644 --- a/resources/library/applications/GraphMe.wgt/version.html +++ b/resources/library/applications/GraphMe.wgt/version.html @@ -1,11 +1,10 @@ - GraphMe - Version - 2.1.0 (2018-06-04) + 1.3.1 (2010/09/25) - + \ No newline at end of file diff --git a/resources/library/applications/GraphMe.wgt/version.txt b/resources/library/applications/GraphMe.wgt/version.txt deleted file mode 100644 index 17984092..00000000 --- a/resources/library/applications/GraphMe.wgt/version.txt +++ /dev/null @@ -1,294 +0,0 @@ - - ██████ ███ ███ - ██ ██████ █████ ██████ ██ ██ ████ ████ ███████ - ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ - ██ ███ ███████ ███████ ██████ ███████ ██ ██ ██ █████ - ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ - ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███████ - - ----- 2.1 ---- - -Général: - - Résolution de bugs avec l'historique des fonctions - - Reprogrammation de la liste des fonctions - - Gestion des erreurs lors de la restauration de l'état sauvegardé - - Sauvegarde du mode d'affichage en cours, 3D ou 2D - - Sauvegarde de l'état de la liste des fonctions - - Sauvegarde de l'outil sélectionné - - Icône du widget amélioré pour OpenBoard - -Interface: - - Amélioration de l'interface pour le changelog et l'aide - - Masquage des boutons de l'affichage en plein à écran avec OpenBoard - - Amélioration de l'affichage des fonctions dans l'historique - - Message d'info au chargement du widget en cas de fonctions restaurées - - Thème bleu foncé avec les coins carrés - -Outils: - - Correction des outils décalés par rapport à la souris - - ----- 2.0.x ---- - - - (2.0.2) Amélioration de la sauvegarde du graphique en image: - affichage de l'image générée dans un menu - - (2.0.1) Cacher les nouveaux boutons de zoom en mode affichage 3D - - Bug: Impossible de changer de thème avec OpenBoard - - Bug: Les fonctions d'exemple ne fonctionnent pas si un autre type - que cartésien est sélectionné dans l'interface des fonctions - - ----- 2.0 ---- - -Général: - - Nouvelle interface adaptive selon la taille de la fenêtre - - Bug: Passer de 3D à 2D essaie de dessiner la fonction 3D en 2D - - Mettre en évidence l'outil sélectionné - - Boutons de zoom - - Historique des dernières fonctions pour tous les types de fonction - - Réinitialisation des inputs quand la page est actualisée - - Sauvegarde de l'état des inputs et de l'historique - - ----- 1.6 ---- - -Fonctions: - - Fonctions implicites (Par exemple un cercle: y^2 + x^2 = 9) - - Fonctions polaires (Par exemple une spirale: r(t) = t) - - Fonctions paramétriques (Par exemple un cercle: x(t) = cos(t) et y(t) = sin(t)) - -Interface: - - Traduction anglais/français selon la langue du navigateur - - Police d'écriture sans-serif - - Aperçu des fonctions implicites, polaires et paramétriques - - Dans la liste des fonctions, afficher la fonction ouverte dans l'éditeur - - Bug: L'éditeur permet d'éditer une fonction alors que la liste est vide - - Bug: Le choix du style de ligne par défaut ne fonctionne pas - - Bug: Bouton non cliquable près d'un message d'aide - -Outils: - - Outil point et tangente pour les fonctions polaires et paramétriques. - - ----- 1.5.x ---- - - - (1.5.1) Sauvegarde du graphique 3D - - Amélioration du menu des mises à jour, prise en compte de tous les serveur - - Menu pour afficher les options sauvegardées dans les cookies - - Correction des problèmes de l'échelle et de la grille du graphique - - Bug: L'outil déplacement est stoppé quand on passe sur une flèche de déplacement - - ----- 1.5 ---- - -Fonction: - - Pouvoir changer le style de chaque fonction (ligne, points, traits) - - Bug: l'outil déplacement est toujours actif quand on sort du graphique - - Bug: le bouton dupliquer dans l'éditeur fonctionne mal - - Condition initiale de la primitive à coté de F(x) dans l'éditeur - (utilisation de disabled="disabled" lorsque F(x) n'est pas coché) - - Bug: impossible de modifier la fonction principale avec l'éditeur de fonctions - - Nouveau menu pour modifier les valeurs par défaut des fonctions - -Affichage 3D: - - La partie de la fonction éloignée est maintenant dessinée après la partie proche - - La grille est plus visible - -Outils: - - Suppression du menu des outils - - Outils pour chaque fonction dans le menu "fonctions" - -Interface: - - Nouvelle interface. Onglets en haut du widget. Boutons "animés" - - Modifier l'aide pour qu'elle corresponde à la nouvelle interface - - Suppression de la sélection du texte sur les boutons et les onglets - - Joystick de déplacement en haut à gauche de l'affichage - - Choix des outils à la souris plus facile (ajout de boutons à gauche de l'affichage) - - Zone de texte au millieu de l'écran pour écrire facilement la première fonction - Focus automatique sur la zone - - Bulles d'aide - - ----- 1.4.x ---- - - - (1.4.3) ColorPicker: Récupérer la bonne couleur lors de l'ouverture - - ColorPicker: Pouvoir changer la couleur à partir des inputs - - ColorPicker: Choisir la couleur avec la roulette de la souris - - (1.4.2) Amélioration de la qualité et de la rapidité des études de fonction - - Pouvoir choisir la fonction à étudier - - Bug: impossible de modifier les fonctions depuis l'éditeur - - (1.4.1) Choisir la taille et la couleur de fond du graphique sauvegardé - - L'utilisation de ^ dans les fonctions n'est possible qu'avec un chiffre. - Il faudrait pouvoir écrire 2^x ou 4^(x+2) - - Bug: fermer le menu clique droit ajoute un point sur le graphique - - ----- 1.4 ---- - -Fonctions: - - Affichages canvas, svg et uniboard complétement refaits - - Grande amélioration des perfomances d'affichage 2D et 3D en définissant - les fonctions avec "new Function()" - - Amélioration des fonctions supplémentaires - - Suppression de la méthode d'affichage xpm - - Style de la fonction (continu, points, traits) - - Bug: la fonction 3D "sin(x)+cos(y)" afficher l'erreur "y is not defined"; - - Couleur aléatoire pour les nouvelles fonctions supplémentaires - -Interface: - - Menu clique droite sur le graphique - - Fenêtre d'édition des fonctions supplémentaires - - Désactiver le bouton de mise à jour automatique lorsqu'on utilise la version online du widget - (utiliser disabled="disabled") - -Outils: - - Outils pour le nouvel affichage - - Outil point refait avec canvas - - Déplacer les informations des outils (point et tangente) à coté de la souris - - Bug: le déplacement de l'affichage 3D à la souris va dans le mauvais sens - - Cliquer permet de conserver le point ou la tangente actuelle - - Tous les outils fonctionnent en plein écran - - Outils sur plusieurs fonctions - -ColorPicker: - - Bug: mauvaise couleur lorsque la teinte est à 240 ou 120 - -Général: - - Abandon du format xhtml pour passer à l'html5 - - Sauvegardes pour les nouvelles options - - Amélioration des messages d'erreur - - Amélioration du système de mise à jour - - ----- 1.3.x ---- - - - (1.3.4) ColorPicker: Slide barre permettant de changer la transparence - - ColorPicker: Reprogrammer en canvas - - (1.3.3) Sauvegarde du graphique - - Remplacer les ^ par pow() pour pouvoir écrire des fonctions plus facilement, - comme x^2 ou (4-x)^5 - - La couleur des fonctions supplémentaires n'est pas toujours juste - - (1.3.2) Modification de la taille des boutons - - (1.3.1) Mise à jour automatique - - ----- 1.3 ---- - -Fonctions: - - Amélioration des études de fonctions - - Pouvoir dessiner la dérivée seconde - - Corriger la tangente lorsque la zone d'affichage est modifiée - - Corriger l'échelle lors du déplacement de la fonction - - Ajout des fonctions sec, csc, arcsec, arccsc, sinh, cosh, tanh, coth, sech, csch - ainsi que arcsinh, arccosh, arctanh et arccoth - - Supprimer les traits où la fonction n'est pas définie - - Corriger l'outil point sur certaines fonctions (root(x,4)) - (problème lié à la fonction non-définie) - - Aire sous la fonction - - Corrigé bug canvas lors de l'agrandissement - - Les outils de la souris ne fonctionnent pas au survol des flèches de déplacement - -Interface: - - Sauvegarder les options - - Explication de la sauvegarde du graphique dans l'aide - - Guide d'utilisation - - Corrections dans l'aide - -ColorPicker: - - Aperçu de la couleur - -Autres: - - Modification de la précision par défaut - - ----- 1.2 ---- - -Fonctions: - - Dessiner plusieurs fonctions - - Historique - - Bug: certaines fonctions ne s'affichent pas correctement - exemples: pow(1-x*x*x, 1/3) , pow(x*x*x-3*x, 1/3) , pow(x*x*x-3*x+2, 1/3) - - Corriger l'affichage de la dérivée lorsqu'on change la précision d'affichage - - Corriger l'affichage des coordonnées - - Gestion des erreurs avec try and catch - - Outil tangente - -Interface: - - Défilement des menus - - Tests d'affichage - - Bouton de maximisation du widget - - Mise à Jour - - -Affichage 3D: - - Zoom - - - -------------------------------- - Idées d'améliorations futures -------------------------------- - -Fonctions: - - Ajouter les fonctions arcsech et arccsch - - Détecter et mettre en évidence les AV - - Progression pendant le calcul des fonctions 3D - - Progression pendant l'étude de fonction - - Écrire le nom de la fonction sur le graphique - - Récupérer la fonction à partir de l'URL, pour pouvoir - envoyer le lien d'une fonction à qqn - - Bug: la puissance de la fonction sin(x)*cos(x)^2 n'est pas remplacée juste - - Sauvegarder l'historique - - Afficher le type de fonction dans l'éditeur - - Ne pas choisir aléatoirement la même couleur qu'une couleur déjà utilisée - - Amélioration du dessin des fonctions implicites - - Aperçu des fonctions d'exemple avant de les ajouter au graphique - -Fonction 3D: - - Amélioration du choix de la couleur (interpolation entre 2 couleurs) - - Affichage 3D avec WebGL - -Outils: - - Outils point et tangente pour les fonctions implicites - - Personnalisation de la sauvegarde du graphique - - Magnétisme de l'outil point - - Calculer le volume du corps de rotation de la fonction - - Outil affichant le cercle tangent à la courbe (selon la seconde dérivée) - - Utiliser le point de la fonction le plus proche de la position de la souris - -Affichage: - - Style de grille: quadrillée, polaire, aucune - - Mode "trigonomètrique" pour que l'échelle soit affichée sur des multiples de PI - - Mode d'affichage ASCII - -Affichage uniboard: - - Finir de coder - - Choisir où placer le graphique - - Uniboard 3D - -Interface: - - Option pour redimensionner le widget dans OpenBoard / Sankoré - - Bulles d'aide - - Scroll dans uniboard - - Menu clique droit dans uniboard - - Le bouton actualiser dans le menu étude n'actualise pas forcément la bonne fonction - - Icone du bouton sauvegarder - - Cacher le joystick et les boutons des outils en mode plein écran après 5s - -ColorPicker: - - Dessiner avec svg lorsqu'on choisit svg dans les options - - Vérifier les valeurs entrées dans les inputs - - Annuler le choix de la couleur ne revient pas au menu précédent - -Général: - - Récupérer le numéro de la version en ligne pour comparer les versions - - Multithreading -!- Rendu des dessins progressivement de plus en plus précis - - Sauvegarder les options automatiquement, bouton reset dans le menu GraphMe - -Script portable: - - Créer un script pour intégrer le widget à n'importe quelle page web - - Personnalisation de la taille du widget portable - - Déplacement du widget comme une fenêtre -