tutaj - Dawid Grochowski
Transkrypt
tutaj - Dawid Grochowski
Sprawozdanie z przedmiotu: Języki Internetowe Temat: „Przelicznik miar” Wykonał: Dawid Grochowski, w50009 Prowadzący: mgr Pawel Cudek 2014 Cel projektu Celem projektu było utworzenie strony internetowej opartej o technologie Html, css, jQuery oraz PHP. Strona internetowa wykorzystując jQuery miała w założeniu przeliczać dynamicznie różne wartości, np. ciśnienie, moc, objętość, temperaturę. Założenia • Stworzenie struktury plików. Pliki oparte o HTML. • Podział każdego pliku na nagłówek, menu, zawartość oraz stopkę, zapis ich w plikach php. • Utworzenie przelicznika czasu, ciśnienia, długości, masy, mocy, objętości, powierzchni, prędkości, temperatury. Skrypt przeliczający przy pomocy biblioteki jQuery. • Tworzenie ciasteczka przechowującego dane o ostatnio odwiedzonej przez nas podstronie z wykorzystaniem PHP oraz stworzenie przekierowania. Zewnętrzne biblioteki/skrypty jQuery - biblioteka jQuery jest frameworkiem do języka Java Script. Dzięki jQuery kod jest bardziej czytelny niż w czystym Java Script, wiele instrukcji jest uproszczonych, np. zamiast pisać "GetElementById" wystarczy napisać znak "$". Źródło: http://jquery.com/ jQuery UI - gotowy zestaw elementów interfejsu użytkownika do implementacji na własnej stronie www. JQuery UI jak sama nazwa wskazuje oparty jest na bibliotece jQuery. Dzięki UI możemy w krótkim czasie dodać ciekawe elementy interaktywne do naszej strony. Źródło: https://jqueryui.com/ Zebra Cookie - biblioteka odpowiedzialna za tworzenie ciasteczek do przechowywania danych u klienta odwiedzającego stronę. Cookies są tworzone przy użyciu jQuery. Źródło: http://stefangabos.ro/jquery/zebra-cookie/ Jq Tiles - plugin galerii utworzony w jQuery. Dzięki temu skryptowi wyświetlane są obrazy, możemy dodać także opis do każdego z nich oraz zmienić efekty przejść pomiędzy zdjęciami. Źródło: http://elclanrs.github.io/jq-tiles/ Opis podstron Strona została utworzona jako przelicznik miar. Do tego celu utworzono podstrony, w których zaimplementowano uniwersalny skrypt jQuery, dzięki któremu po wpisaniu w jednym polu danej wartości, w wszystkich innych polach natychmiastowo pojawi się przeliczona wartość. Dzięki temu, że skrypt jest uniwersalny, większość podstron takich jak czas, moc lub objętość zastosowano to samo rozwiązanie, co w dużym stopniu ułatwia dokonywanie zmian oraz zmniejsza poziom skomplikowania całego projektu. Skrypt przeliczający za każdym razem sprowadza obliczenia do jednej postaci, z której przelicza po odpowiednich "wagach" na inne wartości. Wyjątkiem jest przeliczanie temperatury, tam skrypt stosuje odpowiednie wzory do przeliczeń. Struktura podstron jest także podzielona, dzięki czemu wszystkie podstrony korzystają z jednego nagłówka, jednego menu i jednej stopki, zmienia się jedynie główna zawartość. Jedynie ostatnia kategoria, tj. UI/PLUGIN nie wykorzystuje skryptu przeliczania, bo zawarta w niej jest galeria oraz datapicker. Wykorzystane wzory Podczas realizacji projektu korzystałem z wzorów, na podstawie których utworzyłem skrypty obliczające dane wartości. 1) czas • sekunda - podstawowa jednostka, którą obrałem do obliczeń • nano-, mikro-, mili- sekunda na podstawie http://pl.wikipedia.org/wiki/Sekunda • minuta na podstawie http://pl.wikipedia.org/wiki/Minuta • godzina i dzień na podstawie http://pl.wikipedia.org/wiki/Godzina • tydzień, miesiąc, rok na podstawie wcześniej utworzonych wzorów 2) ciśnienie • bar - podstawowa jednostka, którą obrałem do obliczeń • paskal, psi, newton/milimetr, kilogram/milimetr, atmosfera techniczna, atmosfera fizyczna, tor na podstawie http://pl.wikipedia.org/wiki/Ci%C5%9Bnienie • hektopaskal na podstawie http://pl.wikipedia.org/wiki/Hektopaskal 3) długość • metr - podstawowa jednostka, którą obrałem do obliczeń • mili-, centy-, decy-, kilo- metry na podstawie http://pl.wikipedia.org/wiki/Metr • cal, stopa, jard na podstawie http://www.przelicznikmiar.pl/dlugosci.html • mila, mila morska na podstawie http://pl.wikipedia.org/wiki/Mila 4) masa • gram - podstawowa jednostka, którą obrałem do obliczeń • mili-, deka-, kilo- gram na podstawie http://pl.wikipedia.org/wiki/Kilogram • tona na podstawie http://pl.wikipedia.org/wiki/Tona • funt, stone (UK), uncja, karat na podstawie http://www.przelicznikmiar.pl/masy.html 5) moc • koń mechaniczny - podstawowa jednostka, którą obrałem do obliczeń • kilowat na podstawie http://pl.wikipedia.org/wiki/Kilowat 6) objętość • litr - podstawowa jednostka, którą obrałem do obliczeń • mili-, hekto- litr na podstawie http://pl.wikipedia.org/wiki/Litr • kubik, baryłka, pinta (US), pinta (UK) na podstawie http://www.przelicznikmiar.pl/objetosci.html • galon (US), galon (UK) na podstawie http://pl.wikipedia.org/wiki/Obj%C4%99to%C5%9B%C4%87 7) powierzchnia • metr kw. - podstawowa jednostka, którą obrałem do obliczeń • centy-, kilo- metr kwadratowy, hektar, ar na podstawie http://pl.wikipedia.org/wiki/Metr_kwadratowy • akr na podstawie http://pl.wikipedia.org/wiki/Akr • mila, cal, jard, stopa kwadratowa na podstawie http://www.przelicznikmiar.pl/powierzchni.html 8) prędkość • kilometry/godzinę - podstawowa jednostka, którą obrałem do obliczeń • mila/godzinę na podstawie http://pl.wikipedia.org/wiki/Mila_na_godzin%C4%99 9) temperatura • stopnie Celsjusza - podstawowa jednostka, którą obrałem do obliczeń • stopnie Kelvina, Fahrenheita na podstawie http://pl.wikipedia.org/wiki/Skala_Celsjusza • stopnie Rankine'a na podstawie http://pl.wikipedia.org/wiki/Skala_Rankine%27a • stopnie Réaumura na podstawie http://pl.wikipedia.org/wiki/Skala_R%C3%A9aumura • stopnie Rømera na podstawie http://pl.wikipedia.org/wiki/Skala_R%C3%B8mera • stopnie Newtona na podstawie http://pl.wikipedia.org/wiki/Skala_Newtona • stopnie Delisle'a na podstawie http://pl.wikipedia.org/wiki/Skala_Delisle%27a Napotkane problemy Podczas pracy z polami wprowadzania danych (input) napotkałem na problem, który pojawiał się podczas wpisywania wartości innej, niż wartość numeryczna w polu (inne znaki, niż liczby oraz wartość pusta). Podczas wprowadzania niepoprawnych wartości naszym oczom ukazywał się komunikat NaN we wszystkich polach. Problem został rozwiązany poprzez wprowadzenie warunku, który sprawdza, czy wpisane w danym polu wartości są numerami i wykonuje skrypt tylko wtedy, jeśli warunek jest spełniony. Po wpisaniu wartości innych, niż liczby- skrypt nie wykonuje żadnej widocznej dla użytkownika akcji. Kolejnym problemem było aktualizowanie się aktywnego pola (czyli tego, w którym użytkownik właśnie wpisuje wartości). Podczas wpisywania wartości dany input przeliczał sam siebie, co powodowało aktualizowanie się wartości w aktywnym polu, a co za tym idzie - mogło to powodować cofanie się usuwanych liczb lub przeskakiwanie kursora. Po próbie wpisania na przykład liczby 2 w polu odpowiadającym za skalę Fahrenheita automatycznie do pola zostawała wpisana następująca wartość: To samo działo się przy próbie usuwania pojedynczych znaków. Rozwiązanie zastosowane przeze mnie polega na sprawdzeniu, czy aktualne pole, które skrypt zamierza aktualizować jest polem aktywnym (tym, w którym użytkownik właśnie wprowadził zmianę). Jeśli warunek jest spełniony, to skrypt pomija linię, w której ma za zadanie przypisać nową wartość do pola. Wnioski Realizacja projektu przebiegła sprawnie, ponieważ od początku miałem pomysł na rozwiązanie problemu przeliczania wartości. Wybranie biblioteki jQuery było dobrym posunięciem. Zaimplementowanie dynamicznie zmieniających się wartości, czyli przeliczania miar bez konieczności przeładowania strony w znacznym stopniu ułatwia korzystanie z skryptu. Napisany przeze mnie skrypt pozwolił na zrealizowanie przeliczania miar takich, jak czas, ciśnienie, długość, masa, moc, objętość, powierzchnia, prędkość oraz temperatura. Skrypt przeliczania posiada dwie drogi. W zależności od tego, czy ma przeliczać temperaturę, czy inne wartości - wybiera odpowiednią metodę. Przeliczanie wartości innych, niż temperatura polega na sprowadzeniu danych do pewnej ustalonej, podstawowej wartości. Dzieje się to po przemnożeniu naszych danych przez odpowiednią wagę. Na przykład dla czasu podstawową wartością będzie sekunda, czyli sekunda będzie miała wagę 1. Wartością mniejszą będzie w tym wypadku milisekunda, czyli 1000 sekund, stąd wynika, że waga milisekundy, to 1000. Głównym polem będzie to, w które aktualnie wpisaliśmy wartość. Dzieląc to pole przez jego wagę otrzymamy wartość podstawową, teraz posiadając wartość podstawową możemy wyznaczyć wartości pozostałych pól mnożąc przez ich wagi. Jeśli w polu milisekunda wpiszemy 5, to skrypt wykona dzielenie tej wartości przez 1000, co da wynik 0.005. Jest to wartość podstawowa, w tym momencie przystąpi do obliczania pozostałych pól, czyli odpowiednio przemnoży tę wartość przez 1000000 dla mikrosekundy oraz przez 1 dla sekundy. W ten prosty sposób możemy obliczać większość wartości fizycznych, wystarczy tylko wcześniej zadeklarować ich wagi. Przeliczanie wartości temperatury polega na sprowadzeniu aktualnie aktywnego pola do wartości zapisanej w skali Celsjusza. Po wykonaniu tego zadania skrypt przelicza wszystkie inne pola na odpowiadające im skale według odpowiednio ustalonych wcześniej wzorów. Skrypt posiada także możliwość zaokrąglania wartości, co jest oparte na gotowym rozwiązaniu dostępnym w jQuery, czyli zaokrąglanie do wybranego miejsca po przecinku. Zaimplementowanie zaokrąglania wartości ma na celu poprawę czytelności wyników. Oczywiście korzystanie z tego rozwiązania jest dobrowolne, wedle preferencji użytkownika. Strona główna przelicznika jest pusta, posiada jedynie menu. Po pierwszym wejściu na witrynę użytkownik zapewne wybierze pewien element z menu nawigacyjnego, a jego wybór zostanie zapisany do ciasteczka. Po każdym kolejnym wejściu na stronę główną użytkownik zostanie domyślnie przeniesiony na ostatnio odwiedzaną na przeliczniku podstronę. Ma to na celu ułatwienie korzystania z przelicznika. Osoby korzystające ze skryptu po ostatniej wizycie mogą chcieć skorzystać z przeliczania tych samych miar fizycznych, z których korzystały przed wyjściem. Automatyczne przeniesienie ich na ostatnio odwiedzaną podstronę może zniwelować ich czas szukania odpowiedniej kategorii w menu. Przekierowanie nie wpływa negatywnie na korzystanie z przelicznika, ponieważ w każdej chwili użytkownik może za pomocą menu nawigacyjnego przejść do innej podstrony. Dawid Grochowski, 4IID, w50009