var itemsToShow = new Array(); //list of indexes to all dives to view var items = new Array(); var start; //index of first element viewed in itemsToShow var sizeofpage; //size of viewed page var numberofwords=0; //just for stats var olditemstoshow; //to reference the indexes to all dives if changed ////////////////////////////////// // // // View Model // // // ////////////////////////////////// /** *This Method view all items *View N pages each of sizeofpage size items. *starting from zero */ function showAllDives(){ for(var i=0 ; i < items.length ; i++){ itemsToShow.push(i); } olditemstoshow = itemsToShow; start=0; viewInPage(); } /** *This function view the 'itemstoshow' in pages. *It start from 'start' variable. *It showes N pages each of sizeofpage size. */ function viewInPage(){ var end = start + sizeofpage -1; if(end >= itemsToShow.length ) end = itemsToShow.length-1; updateView(start,end); } /** *addHTML this Method puts the HTML of items of given indexes *@param {array} indexes array of indexes to put in HTML */ function updateView(start,end){ var divelist = document.getElementById('diveslist'); divelist.innerHTML=""; for(var i=start;i<=end;i++){ divelist.innerHTML+=''+'
'; }; for(var i=0;i'+getlimited(trips[trip].dives[j])+''; } } function unexpand_trip(trip){ trips[trip].expanded = false; var d = document.getElementById("trip_dive_list_"+trip); d.innerHTML=''; } function getItems(){ var count = 0; for(var i in trips){ for(var j in trips[i].dives){ items[count++]=trips[i].dives[j]; } } } ////////////////////////canvas/////////////////// /* Canvas Colors Constants */ var CAMARONE1 = rgb(0,0.4,0); var LIMENADE1 = rgb(0.4,0.8,0); var RIOGRANDE1 = rgb (0.8,0.8,0); var PIRATEGOLD1= rgb(0.8,0.5,0); var RED1 = rgb(1,0,0); /* Some Global variables that hold the current shown dive data. */ var dive_id;//current shown ID var points;//reference to the samples array of the shown dive. var MAX_HEIGHT;//Maximum depth, then its the maximum height for canvas var MAX_WIDTH;//dive duration, then its the maximum width for canvas /** *Return RGB css color string. */ function rgb(r, g, b){ r = Math.floor(r*255); g = Math.floor(g*255); b = Math.floor(b*255); return ["rgb(",r,",",g,",",b,")"].join(""); } /** *This function returns the value scaled to the size of canvas *new scale = (old scale * height of canvas) / max height in dive *to ensure that the dive profile is filling the whole area available */ function scaleHeight(vari){ var height = document.getElementById("profileCanvas").height; max = MAX_HEIGHT; return (vari*height)/max; } /** *This function returns the value scaled to the size of canvas *new scale = (old scale * width of canvas) / max width in dive *to ensure that the dive profile is filling the whole area available */ function scaleWidth(vari){ var width = document.getElementById("profileCanvas").width; max = MAX_WIDTH; return (vari*width)/max; } /** *Show Axis information(Numbers on scale) *put a Number every 300 second scaled to canvas width. */ function canvas_showAxisInfo(){ var c=document.getElementById("profileCanvas"); var ctx=c.getContext("2d"); ctx.font="27px Georgia";/*This is better be a variable scale*/ for (var i=0;i 300 ) return RED1; if (Math.abs(slope) > 180 ) return PIRATEGOLD1; if (Math.abs(slope) > 110 ) return RIOGRANDE1; if (Math.abs(slope) > 70 ) return LIMENADE1; return CAMARONE1; } /** *Return the HTML string for a dive cylinder entry in the table. */ function get_cylinder_HTML(cylinder){ return ''+cylinder.Type+''+cylinder.Size+''+cylinder.WPressure+''+ ''+cylinder.SPressure+''+cylinder.EPressure+''+cylinder.O2+''; } /** *Return HTML table of cylinders of a dive. */ function get_cylinders_HTML(dive){ var result=""; result +='

Dive equipments

'; for (var i in dive.Cylinders){ result+=get_cylinder_HTML(dive.Cylinders[i]); } result+='
TypeSizeWork PressureStart PressureEnd PressureO2
'; return result; } /** *Return HTML main data of a dive */ function get_dive_HTML(dive) { return '

Dive Information

Date: '+dive.date+ '     Time: '+dive.time + '     Location: '+''+ dive.location +''+ '
Rating:'+putRating(dive.rating)+ '   Visibilty:'+putRating(dive.visibility)+ '
'+ '
Air temp: '+dive.temperature.air+ '    Water temp: '+dive.temperature.water + '
DiveMaster: '+dive.divemaster + '

Buddy:

'+dive.buddy + '
Suit: '+dive.suit + '
Tags: '+putTags(dive.tags)+ '

Notes:

' + dive.notes +'
'; }; /** *Main canvas draw function *this calls the axis and grid initialization functions. */ function canvas_draw(){ var c=document.getElementById("profileCanvas"); c.width = window.innerWidth; c.height = window.innerHeight; canvas_showGrid(); canvas_showAxisInfo(); var ctx=c.getContext("2d"); ctx.lineWidth=4 //variable width //draw starting line, draw all samples then draw the final line. canvas_drawline(ctx,[0,0],points[0]); for(var i=1;i0){ showDiveDetails(--dive_id); } }