Al mashriq - The Levant

Delprosjekt:
Programmering av javascript og java-applet

Ansvarlig: Liv Berit Isebakke og Morten Gustavsen (liv.b.isebakke@hiof.no) & (morten.a.gustavsen@hiof.no)

Innledning

En stor del av årets prosjekt har vært å reorganisere avdelingen om Libanon på serveren. Vi har også lagt til nytt stoff om landet. Vi har bl.a laget en del html sider om ulike stedsnavn i Libanon. For å illustrere beliggenheten på disse byene, har vi benyttet Javascript og Java.

Problemstilling

Gi brukeren et inntrykk av hvor de forskjellige byene/stedene befinner seg i Libanon og i forhold til hverandre. Vi ville også prøve å presentere informasjon ved hjelp av en geografisk inndeling.

Gjennomføring

Vi valgte å lage en html-side som inneholdt et kart over Libanon. I tillegg ville det være oppramset en del byer/stedesnavn på siden av kartet. Når brukeren peker med musepekeren over en av av stedsnavnen på siden, vil det bli tegnet en sirkel på kartet som illustrerer hvor dette stedet befinner seg i Libanon. Ved delprosjektets start vurderte vi bruk av Javascript eller Java.

I. Javascript

Denne overnevnte oppgaven kunne lett la seg gjennomføre ved hjelp av Javascript. Løsningsmetoden ville da være slik:
Når brukeren beveger musepekeren over et av stedsnavnene ved siden av kartet, ville javascriptet kalle en funksjon som tegnet et bilde på nytt. Med et java-script ville det være vanskelig å kun tegne rundingen på nytt, man er nødt til å tegne hele bildet på nytt. Denne løsningsmetoden kan man leve med, hvis man ikke skal bytte så mange, eller for store bilder. Hvis dette er tilfelle, vil oppdateringen av bildene være langsom.
.
En løsning på dette problemet, er å laste inn alle bildene før de blir vist på skjermen. Resultatet av dette vil være at nedlastingstiden vil være lang, men oppdateringen av bildene vil være meget kjapp. En slik nedlastningsfunkjon har vi benyttet oss av ved utviklingen av Javascriptet vårt.

Fordelen med Javascript er at browserstøtten er mye bedre. De Javascript funskjonene vi trenger for å kjøre Javascriptet vårt er det t god støtte for helt ned i de tidligeste versjonen av både Netscape og Internet Explorer. Siden vi ikke visste eksakt hvor mange steder vi skulle implementere programmet for, gikk vi for den siste løsningen. Javascript som laster ned alle bildene føre de blir vist fram.

Her viser vi et forslag til hvordan vi prøvde å løse problemet ved hjelp av et Javascript..


II. Java, Write once, debug everywhere?

Etterhvert viste det seg at antall steder som skulle presenteres ble ganske stort, og veileder Børre Ludvigsen informerte oss om at det kunne bli mange flere. vi bestemte oss for å implementere en java applet
Problemet med en java applet er at browserstøtten er betydelig dårligere i forhold til java-script. Man må forholde seg til til en rekke forskjellige nettlesere, versjonsnummer og operativsystemer på en gang, for å lage kode som fungerer på alle plattformer.

Fordelen med Java, er at man slipper å tegne hele bildet på nytt, man kan legge bilder over hverandre. Dette fører til at appleten kun tegner sirkelen på nytt, og ikke et helt nytt kart med en annen sirkel på. En annen fordel med java, er at man kan laste inn data fra en fil. Dette gjør at programmet blir lettere å administrere, fordi man kan legge til data i filen. Programmet vil kunne ta seg av resten. Ved bruk av java-script, må man lage nye bilder for hvert enkelt sted.

III. Implementeringen av Java Applet

Siden denne applikasjonen i prinsippet kunne vokse seg uendelig stor, var et av hovedmålene fra starten av, at administrasjon og vedlikehold skulle være enkelt. Dette problemet løste vi ved at appleten leser inn alle dataene over nettet ved initialisering. Dette fører til at man kan legge til nye steder i applikasjonen enkelt, ved å legge til en ny linje i filen som blir lest. Vi har bygd opp appleten vår på denne måten.

Innlesing av filen coords.dat

Appleten benytter seg av dataene fra filen coords.dat

Baalbak,380,172,circle,baalbek/index.html,City: Baalbak,Caza: Baalbek,Mohafazaat: Beqaa
Jbeil,257,140,circle,jbeil/index.html,City: Jbail,Caza: Jbail,Mohafazaat: Mount Lebanon
Qana,183,368,small_circle,qana/index.html,City: Qana,Caza: Soûr,Mohafazaat: South Lebanon
Saida,207,270,circle,saida/index.html,City: Saida,Caza: Saida,Mohafazaat: South Lebanon

Her ser man de ulike elementene i filen. Alle elementene er separert med et komma.
Først er det stedet som skal presenteres. Deretter koordinatene som sirkelen skal plasseres på. Disse koordinatene blir beregnet fra appletens øverste venstre hjørne, og ikke på bildets øverste venstre hjørne. Derfor så vi det som en nødvendighet at det måtte implementeres en egen admin applet slik at man kunne lett finne koordinatene om et nytt sted skulle legges til. Neste element i filen er om det skal lastes en stor eller liten sirkel, dette avhenger av stedets størrelse.
Deretter følger url'en som skal lastes ned, når brukeren trykker på stedet.
De tre neste elemntene i filen er fakta om byen. Disse faktaopplysningene blir tegnet på skjermen nede til høyre av appleten.

Coords.dat, filen som blir lest av applet

Admin applet

Det som skjer i Admin-appleten i forhold til den originale versjonen, er bare at vi skriver ut x og y koordinatene til statuslinjen i browseren. Derfor var dette en enkel nøtt å knekke. Hvis administrator skal legge til et nytt sted på siden, og trenger koordinatene til det nye stedet, må han gjøre følgende:

  1. Start han Admin Appleten.
  2. Beveger musepekeren over det nye stedet
  3. leser av koordinatene på statusbar
  4. Legger til x og y koordinatene i coords.dat filen
Admin applet
Admin kode

Det som skjer i Admin-appleten i forhold til den originale versjonen, er bare at vi skriver ut x og y koordinatene til statuslinjen i browseren. Derfor var dette en enkel nøtt å knekke. Hvis administrator må legge til et nytt sted, og trenger koordinatene til det nye stedet, må han gjøre følgende:

  1. Start han Admin Appleten.
  2. Beveger musepekeren over det nye stedet
  3. leser av koordinatene på statusbar


IV. Innlesing av parametere fra html-filen places.html

For at appleten skulle være mest mulig fleksibel for administratoren leser appleten en del av parameterne inn fra html filen

Følgende attributter blir lest inn ved initialisering

  1. Fontstørrelse
  2. Antall steder i kolonnen
  3. Antall steder
1. Fontstørrelse

<param name="font_size" value="10">

Her vises et eksempel fra filen places.html. Eksempelet viser hvordan appleten setter fontstørrlesen ved hjelp av innlesing av paramettere i html filen. Vi anser dette som en nødvendighet for å gi administratoren en mulighet til å bestemme hvordan utseendet på applikasjonen blir. Appleten vår regner automatisk ut de nye koordinatene som oppstår ved mouseover.

2. Antall steder i kolonnen

<param name="row" value="25">

Her settes antall steder i hver kolonne, Dette er også gjort med tanke på at administratoren skal kunne påvirke utseendet på appleten. Hvis antall steder varierer, kan man variere kolonnestørrelsen for å påvirke utseende på appleten.

Antall steder

<param name="totallines" value="30">

Denne parameteren har vi satt for å effektivisere appleten. Ved hjelp av denne linjen slipper appleten å beregne antall linjer ved oppstart. Vi kunne godt implementert dette, men programmet måtte ha lest coords.dat filen to ganger, noe som ville gjort appleten mye tregere.

Problemer som har oppstått underveis

Hovedproblemet vårt har først og fremst vært sleipner serveren. Problemet har vært at vi har mistet data to ganger. Av en eller annen grunn har sleipner serveren tømt både back up og original filene våre for data ved kopiering. Det eneste som har vært igjen i filene er to carriage returns. Dette har ført til at vi har måttet ta i bruk eldre versjoner og forbedre disse to ganger. Den første gangen dette skjedde var Lørdag 12.juni, og den andre gangen Søndag 13.juni. Dette har ført til at den versjonen som ligger på almashriq nå ikke er helt bugfri.

Problemer med java

Opprinnelig hadde vi tenkt at musepekeren skulle forandre seg til en "hot-spot" peker for hver gang den beveget seg over et av stedsnavnene på siden. Dette for å vise brukeren at det er en link. Men her oppstår det et problem. Hovedproblemet er at Cursor klassen ligger inne i AWT ( Abstract Windowing Toolkit). Støtten for denne klassen er dårlig i Netscape for Macintosh. Derimot er støtten i Internet Explorer betraktelig bedre.

Vi har ikke klart å få tilgang på gamle versjoner av browsere, så vi vet ikke hvordan appleten fungere i disse.
Siden det først og fremst er cursoren som er problemet, utelot vi å forandre cursoren til hot-spot for å øke kompabiliteten i de ulike browserne.

Vi har dessuten laget en "ren" html side som peker på de ulike stedene vi har laget sider til. Dette har vi gjort for at brukere av browsere som Mosaic og Arena skal kunne få se den informasjonen vi ønsker å formidle.

VI. Bugs i dagens versjon

Når man tar musepekeren over andre kolonne av stedsnavnene, repainter ikke appleten sirkelen kun en gang.
Trykk her for å se på appleten
Trykk her for å se på kildekoden til appleten

Konklusjon :

Vi kunne unngått mye dobbeltarbeid ved å ta back up av arbeidet på forskjellige servere, Og ikke bare i forskjellige kataloger på en server.

Ressurser

  • Java in a nutshell
  • Java, how to program
  • Emacs
  • JDK 1.1.6
  • Artikkel av Tony Espeseth PC WORLD NORGE NR.5 - 1999

Tidsestimering

  • Liv Berit: 50 timer
  • Morten Gustavsen : 48 timer


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

al@mashriq

98/mg/lbi