Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiana koloru wykresu w zależności od wartości
Lethys
post
Post #1





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Witam,

Przerzuciłem się na morris js, aby przedstawić dane z bazy.

Generalnie wszystko działa ale mam problem z dodatkowo opcją, tzn. chcę zmienić kolor konkretnego punktu wykresu gdy action=buy

tak wygląda mój JSON:

  1. [{"longdate":"2014-08-20 18:20:01","price":"1620","action":"buy"},{"longdate":"2014-08-20 18:40:01","price":"1640","action":""},{"longdate":"2014-08-20 19:00:01","price":"1620","action":""}]


A tak kod wykresu:

  1. $.getJSON('results.json', function(day_data) {
  2.  
  3. Morris.Line({
  4. element: 'graph',
  5. data: day_data,
  6. xkey: 'longdate',
  7. ykeys: ['price'],
  8. labels: ['Cena'],
  9. pointSize: 4,
  10. lineColors: function(action) {
  11. if(action == "buy") return "#0da3be";
  12. else if(action == "sell") return "#11ca26";
  13. //else return działa bo pobiera ten kolor
  14. else return "#7c7c7c";
  15. },
  16. hoverCallback: function(index, options, content) {
  17. //var displayDate = "<b>"+changeDateFormat(day_data[index]['clock'])+"</b><br>";
  18. var date = "<b><font color='black'>Data: "+day_data[index]['longdate']+"</font></b><br>";
  19. var param1 = "<font color='"+lineColor[0]+"'>Cena - "+day_data[index]['price']+"</font><br>";
  20. return date+param1;
  21. },
  22. xLabelFormat : function (x) {
  23. return changeDateFormat(x);
  24. }
  25.  
  26.  
  27.  
  28.  
  29. });
  30. });


Else return działa, czyli jest problem z odczytaniem tego actiona.

Teoretycznie powinno działać ale nie działa smile.gif

Ten post edytował Lethys 21.08.2014, 11:47:33


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przed chwilą w innym temacie sam pisales, że potrzebujesz zupelnie innej struktury json niż ta co podajesz tutaj. Czyzbys uzywal dwoch roznych skryptow, z ktorych kazdy potrzebuje innej struktury?

poza tym widze tu totalną sprzecznosc....
xkey: 'longdate',
ykeys: ['price'],
labels: ['Cena']

Sie zdecyduj, bo nie chce mi sie wierzyc, ze longdate podaje sie jako tekst, ale juz price jako tablice.

No i co to robi w dziale php? Przecież z php to nie ma żadnego związku. Przenosze


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lethys
post
Post #3





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Cytat(nospor @ 21.08.2014, 11:54:09 ) *
Przed chwilą w innym temacie sam pisales, że potrzebujesz zupelnie innej struktury json niż ta co podajesz tutaj. Czyzbys uzywal dwoch roznych skryptow, z ktorych kazdy potrzebuje innej struktury?

poza tym widze tu totalną sprzecznosc....
xkey: 'longdate',
ykeys: ['price'],
labels: ['Cena']

Sie zdecyduj, bo nie chce mi sie wierzyc, ze longdate podaje sie jako tekst, ale juz price jako tablice.



Tak w poprzednim temacie potrzebowałem innej struktury, ale przeniosłem się na inna biblioteke i teraz inaczej wygląda Json.

Tak longdate jest zapisane jako tekst, a gry price nie zapisze sie jako tablice, to skrypt nie działa, więc jest tak.


Ale nie z tego powodu zakładałem ten topic, nospor może wiesz czemu nie zmienia mi kolorów? wink.gif


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale nie z tego powodu zakładałem ten topic, nospor może wiesz czemu nie zmienia mi kolorów?
A z jakiego jak nie z tego? Zalozyles topic bo ci nie dziala. Ja wskazuje wiec na potencjalne bledy. Nie znam tego liba co uzywasz, moge jedynie tylko sie domyslac co tez uczynilem.

edit: skoro w chodzi ci w else return to zobacz jaką wartosc ma ACTION w tej funkcji i bedziesz wiedzial moze cos wiecej. To jest podstawowe debugowanie, ktore powinienies zrobic samemu przed napisananiem na forum


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lethys
post
Post #5





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Trzeba będzie to prawdopodobnie zrobić za pomoca pętli.

Nadal coś nie działa, przy takim skrypcie nie wyświetla się wykres.

Obecnie tak skrypt wygląda:

  1. $( document ).ready(function() {
  2. var lineColor = ['#7c7c7c','#357ebd'];
  3. var day_data = [];
  4. function changeDateFormat(mydate)
  5. {
  6. var dateDMY = new Date(mydate);
  7. var monthNames = [ "Sty", "Lut", "Mar", "Kwi", "Maj", "Cze",
  8. "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru" ];
  9. var date = dateDMY.getDate();
  10. var month = monthNames[dateDMY.getMonth()];
  11. var year = dateDMY.getFullYear();
  12. var mydate = "";
  13. var seperator = "-";
  14. mydate = mydate.concat(date,seperator,month,seperator,year);
  15. return mydate;
  16. }
  17.  
  18. function drawLine(action){
  19.  
  20. if(!action) return;
  21.  
  22. var color = null;
  23. if(action == "buy") color ="red";
  24. else color = "black";
  25.  
  26. Morris.Line({
  27. element: 'graph',
  28. data: day_data,
  29. action: 'action',
  30. xkey: 'longdate',
  31. ykeys: ['price'],
  32. labels: ['Cena'],
  33. pointSize: 4,
  34. lineColors: function() {
  35. return color;
  36. },
  37. hoverCallback: function(index, options, content) {
  38. //var displayDate = "<b>"+changeDateFormat(day_data[index]['clock'])+"</b><br>";
  39. var date = "<b><font color='black'>Data: "+day_data[index]['longdate']+"</font></b><br>";
  40. var param1 = "<font color='"+lineColor[0]+"'>Cena - "+day_data[index]['price']+"</font><br>";
  41. return date+param1;
  42. },
  43. xLabelFormat : function (x) {
  44. return changeDateFormat(x);
  45. }
  46.  
  47. });
  48. }
  49.  
  50.  
  51. $.getJSON('results.json', function(day_data) {
  52. var l = day_data || [];
  53. for(var i = 0; i < l.length; i++){
  54. drawLine(l[i].action);
  55. }
  56. });
  57.  
  58.  
  59.  
  60. });
  61.  


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sprawdzales w ogole to co napisalem?
Cytat
edit: skoro w chodzi ci w else return to zobacz jaką wartosc ma ACTION w tej funkcji i bedziesz wiedzial moze cos wiecej. To jest podstawowe debugowanie, ktore powinienies zrobic samemu przed napisananiem na forum


Zas co do nowego skryptu:
Nigdzie nie przypisujesz wartosci dla day_data wiec czemu sie dziwisz ze nie dziala? Czemu w ogole nie sprawdzasz czy zmienne na ktorych operujesz zawierają to co mają zawierac? To taki problem sprawdzic? Zapewniem Cie ze jest to szybciej zrobic nic pisac kolejnego posta na forum...


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 19.08.2025 - 19:14