Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Prawidłowe rozumiemie kodu
Caporeira
post 11.12.2014, 16:52:20
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 27.11.2014

Ostrzeżenie: (0%)
-----


  1. webMI.data.subscribe(webMI.query["base"] + ".Data.Status", function(e) {
  2. var motor = "silnik";
  3. var estop = e.value[0];
  4. var off = e.value[1];
  5. var error = e.value[2];
  6. var inspection = e.value[3];
  7. var maintenance = e.value[4];
  8. var jam = e.value[5];
  9. var running = e.value[6];
  10. var ready = e.value[7];
  11. estop_active = false;
  12.  
  13. // set state error when node state is "bad"
  14. var unknown = (e.status > 0);
  15.  
  16. if (unknown) {
  17. webMI.gfx.setFill(motor, "#e6e6e6");
  18. state_color = "#f2f2f2";
  19. }
  20. else if (estop){
  21. webMI.gfx.setFill(motor, {0:"#ff0000",2:"#bb0000",4:"#ff0000",6:"#bb0000",8:"#ff0000",10:"#bb0000"});
  22. state_color = "#bb0000";
  23. estop_active = true;
  24. }
  25. else if (off){
  26. webMI.gfx.setFill(motor, "#c8c8c8");
  27. state_color = "#c8c8c8";
  28. }
  29. else if (error){
  30. webMI.gfx.setFill(motor, "#ff0000");
  31. state_color = "#ff0000";
  32. }
  33. else if (maintenance) {
  34. webMI.gfx.setFill(motor, "#0000ff");
  35. state_color = "#0000ff";
  36. }
  37. else if (jam) {
  38. webMI.gfx.setFill(motor, "#ffaa00");
  39. state_color = "#ffaa00";
  40. }
  41. else if (running) {
  42. webMI.gfx.setFill(motor, "#00c800");
  43. state_color = "#00c800";
  44. }
  45. else if (ready) {
  46. webMI.gfx.setFill(motor, "#007700");
  47. state_color = "#009900";
  48. }
  49. // unknown state
  50. else {
  51. webMI.gfx.setFill(motor, "#e6e6e6");
  52. state_color = "#f2f2f2";
  53. }
  54. Info.Color = state_color;
  55. });

Chcę zrozumieć ten kod. Na daną chwilę rozumiem go tak że:
  1. webMI.data.subscribe(webMI.query["base"] + ".Data.Status", function(e)

query sprawdza zmienną Status. Base że to w tym samym folderze (czyli coś jak lokalna lokalizacja). .Data.Status to folder pod którym znajduję się zmienna.
function(e) to funkcja obsługująca zdarzenia. Zmienna Status jest jednowymiarową tablicą bitową (z wartościami Boolean).

  1. var motor = "silnik";
  2. var estop = e.value[0];
  3. var off = e.value[1];
  4. var error = e.value[2];

Tutaj następuje przypisanie wartości z tablicy do zmiennych. Np. wartość tablicy drugiej przypisana jest do zmiennej off.
Kiedy w tablicy nr 2 znajdzie się wartość True wtedy wykona się kawałek kodu:
  1. else if (off){
  2. webMI.gfx.setFill(motor, "#c8c8c8");
  3. state_color = "#c8c8c8";

Dokładnie to obiekt o nazwie silnik zmieni kolor.
Ale po co jest tutaj zmienna state_color ?
Co powoduje taki zapis ? Info.Color = state_color;
e.value reaguje na zmianę wartości, a e.status ? (var unknown = (e.status > 0)wink.gif
Go to the top of the page
+Quote Post
PrinceOfPersia
post 11.12.2014, 17:30:42
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


za mało informacji. To jest pytanie dotyczące raczej biblioteki, z której korzystasz. Byś musiał podać większy kontekst.
BTW. to jest JavaScript po stronie serwera(NodeJS) czy przeglądarki? Wygląda jak coś serwerowego.

EDIT:
chyba, że chodzi o sam styl pisania...
Cytat
Ale po co jest tutaj zmienna state_color ?
Co powoduje taki zapis ? Info.Color = state_color;

przypuszczam, że żeby nie powtarzać się (google: Don\'t Repeat Yourself). W zasadzie, żeby zachować jakość kodu to zamiast pisać
Kod
webMI.gfx.setFill(motor, \"#c8c8c8\");

z 10 razy też powinno się wydzielić zmienną np. motor_color = \'#c8c8c8\', i analogicznie na końcu tylko wywoływać funkcję webMI.gfx.setFill...

w ten sposób jeśli np. w przyszłej wersji biblioteki np. funkcja setFill stanie się przestarzała, a wprowadzą np. setFillColor, to będziemy musieli nanieść zmiany tylko w jednym miejscu.

Ten post edytował PrinceOfPersia 11.12.2014, 17:36:48


--------------------
Go to the top of the page
+Quote Post
Caporeira
post 17.12.2014, 10:16:11
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 27.11.2014

Ostrzeżenie: (0%)
-----


Możliwe że to biblioteka webMI ?

W jaki sposób sprawdzić można co to za biblioteka ? Wiekszy kontekst ?
Program z którego korzystam poniekąd sam tworzy kod stąd te powielenia w skrypcie.

Jest to po stronie serwera.

Znalazłem coś takiego w Helpie:
The display editor supports SVG Tiny 1.2
http://www.w3.org/TR/SVGTiny12/REC-SVGTiny12-20081222.pdf

Więc może o tę bibliotekę się rozchodzi ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 03:01