This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sample_code:visitor_log [2014/11/11 21:56] stevegarman [Notes] larger databàses |
sample_code:visitor_log [2014/12/07 05:05] (current) |
||
---|---|---|---|
Line 7: | Line 7: | ||
//Visitor sign-in app by Steve Garman | //Visitor sign-in app by Steve Garman | ||
//saves one day's data as a JSON string in a file | //saves one day's data as a JSON string in a file | ||
- | |||
//Global variables | //Global variables | ||
- | var recArray = [], fileFolder = "/ | + | var recArray = [], |
+ | | ||
+ | | ||
//Global layouts and controls | //Global layouts and controls | ||
- | var scrollr, layScroll, edtName, edtOrg, edtVehicle, | + | var scrollr, layScroll, edtName, edtOrg, edtVehicle, edtReason; |
//Called when application is started. | //Called when application is started. | ||
- | function OnStart(){ | + | function OnStart() |
- | if( ! app.IsTablet()) app.SetOrientation(" | + | |
- | //file variables | + | |
- | var d = new Date(); | + | //file variables |
- | jsonPath = fileFolder + " | + | var d = new Date(); |
- | | + | jsonPath = fileFolder + " |
- | + " | + | d.toISOString().slice(0, |
- | app.MakeFolder(fileFolder) | + | app.MakeFolder(fileFolder) |
- | //Create main layout. | + | //Create main layout. |
- | var lay = app.CreateLayout( " | + | var lay = app.CreateLayout(" |
- | //Create a scroller and add it to main layout | + | //Create a scroller and add it to main layout |
- | scrollr = app.CreateScroller( 1.0, 0.8 ); | + | scrollr = app.CreateScroller(1.0, |
- | lay.AddChild( scrollr ); | + | lay.AddChild(scrollr); |
- | //Create a layout inside scroller. | + | //Create a layout inside scroller. |
- | layScroll = app.CreateLayout( " | + | layScroll = app.CreateLayout(" |
- | scrollr.AddChild( layScroll ); | + | scrollr.AddChild(layScroll); |
- | + | ||
- | //Create a sign-in layout | + | //Create a sign-in layout |
- | var layNew = app.CreateLayout( " | + | var layNew = app.CreateLayout(" |
- | edtName = app.CreateTextEdit("", | + | edtName = app.CreateTextEdit("", |
- | edtName.SetHint(" | + | edtName.SetHint(" |
- | layNew.AddChild(edtName); | + | layNew.AddChild(edtName); |
- | edtOrg = app.CreateTextEdit("", | + | edtOrg = app.CreateTextEdit("", |
- | edtOrg.SetHint(" | + | edtOrg.SetHint(" |
- | layNew.AddChild(edtOrg); | + | layNew.AddChild(edtOrg); |
- | edtVehicle = app.CreateTextEdit("", | + | edtVehicle = app.CreateTextEdit("", |
- | edtVehicle.SetHint(" | + | edtVehicle.SetHint(" |
- | layNew.AddChild(edtVehicle); | + | layNew.AddChild(edtVehicle); |
- | edtReason = app.CreateTextEdit("", | + | edtReason = app.CreateTextEdit("", |
- | edtReason.SetHint(" | + | edtReason.SetHint(" |
- | layNew.AddChild(edtReason); | + | layNew.AddChild(edtReason); |
- | var btnCreate = app.CreateButton(" | + | var btnCreate = app.CreateButton(" |
- | btnCreate.SetOnTouch(btnCreate_OnClick); | + | btnCreate.SetOnTouch(btnCreate_OnClick); |
- | layNew.AddChild(btnCreate); | + | layNew.AddChild(btnCreate); |
- | + | ||
- | //Add sign-in layout to main layout | + | //Add sign-in layout to main layout |
- | lay.AddChild(layNew); | + | lay.AddChild(layNew); |
- | | + | |
- | app.AddLayout( lay ); | + | app.AddLayout(lay); |
- | //check if today' | + | //check if today' |
- | if(app.FileExists(jsonPath)){ | + | if (app.FileExists(jsonPath)) |
- | loadJSONfile(); | + | |
- | } | + | |
- | }//OnStart | + | } |
+ | } //OnStart | ||
- | function btnCreate_OnClick( ){ | + | function btnCreate_OnClick() |
- | app.HideKeyboard(); | + | |
- | var name = edtName.GetText(); | + | |
- | var org = edtOrg.GetText(); | + | var name = edtName.GetText(); |
- | var reg = edtVehicle.GetText(); | + | var org = edtOrg.GetText(); |
- | var reason = edtReason.GetText(); | + | var reg = edtVehicle.GetText(); |
- | //check required fields | + | var reason = edtReason.GetText(); |
- | var errs = ""; | + | //check required fields |
- | if ( name == "" | + | var errs = ""; |
- | if ( reason == "" | + | if (name == "" |
- | if ( errs != "" | + | if (reason == "" |
- | //bail out | + | if (errs != "" |
- | app.Alert( errs + " | + | |
- | return; | + | |
- | } | + | app.Alert(errs + " |
- | // clear sign-in form for next visitor | + | return; |
- | edtName.SetText("" | + | } |
- | edtOrg.SetText("" | + | // clear sign-in form for next visitor |
- | edtVehicle.SetText("" | + | edtName.SetText("" |
- | edtReason.SetText("" | + | edtOrg.SetText("" |
- | // create a record | + | edtVehicle.SetText("" |
- | var obj = {}; | + | edtReason.SetText("" |
- | obj.name = name; | + | // create a record |
- | obj.org = org; | + | var obj = {}; |
- | obj.reg = reg; | + | obj.name = name; |
- | obj.reason = reason; | + | obj.org = org; |
- | var d = new Date(); | + | obj.reg = reg; |
- | obj.timeIn = d.toTimeString().slice(0, | + | obj.reason = reason; |
- | obj.timeOut = " | + | var d = new Date(); |
- | // add this record to the array | + | obj.timeIn = d.toTimeString().slice(0, |
- | recArray.push( obj ); | + | obj.timeOut = " |
- | saveJSONfile(); | + | // add this record to the array |
- | // display record on scroller | + | recArray.push(obj); |
- | layScroll.AddChild( recordLayout(obj) ); | + | saveJSONfile(); |
- | scrollr.ScrollTo(0, | + | // display record on scroller |
- | }// | + | layScroll.AddChild(recordLayout(obj)); |
+ | scrollr.ScrollTo(0, | ||
+ | } // | ||
- | function btnOut_OnClick( ){ | + | function btnOut_OnClick() |
- | //has this visitor already signed out? | + | |
- | if (this.GetText() != " | + | |
- | //not yet, so record time out | + | if (this.GetText() != " |
- | var d = new Date(); | + | //not yet, so record time out |
- | this.obj.timeOut = d.toTimeString().slice(0, | + | var d = new Date(); |
- | this.SetText(this.obj.timeOut); | + | this.obj.timeOut = d.toTimeString().slice(0, |
- | //update copy of recArray on file | + | this.SetText(this.obj.timeOut); |
- | saveJSONfile(); | + | //update copy of recArray on file |
- | }// | + | saveJSONfile(); |
+ | } // | ||
- | function recordLayout(obj){ | + | function recordLayout(obj) |
- | //create a new horizontal layout to display this record | + | |
- | var newlay = app.CreateLayout( " | + | |
- | var txt = app.CreateText(obj.name, | + | var newlay = app.CreateLayout(" |
- | newlay.AddChild(txt); | + | var txt = app.CreateText(obj.name, |
- | txt = app.CreateText(obj.org, | + | newlay.AddChild(txt); |
- | newlay.AddChild(txt); | + | txt = app.CreateText(obj.org, |
- | txt = app.CreateText(obj.reg, | + | newlay.AddChild(txt); |
- | newlay.AddChild(txt); | + | txt = app.CreateText(obj.reg, |
- | txt = app.CreateText(obj.reason, | + | newlay.AddChild(txt); |
- | newlay.AddChild(txt); | + | txt = app.CreateText(obj.reason, |
- | txt = app.CreateText(obj.timeIn, | + | newlay.AddChild(txt); |
- | newlay.AddChild(txt); | + | txt = app.CreateText(obj.timeIn, |
- | var btn = app.CreateButton(obj.timeOut, | + | newlay.AddChild(txt); |
- | btn.obj = obj; | + | var btn = app.CreateButton(obj.timeOut, |
- | btn.SetOnTouch(btnOut_OnClick); | + | btn.obj = obj; |
- | newlay.AddChild(btn); | + | btn.SetOnTouch(btnOut_OnClick); |
- | return newlay; | + | newlay.AddChild(btn); |
- | }// | + | return newlay; |
+ | } // | ||
- | function saveJSONfile(){ | + | function saveJSONfile() |
- | //update copy of recArray on file | + | |
- | var s = JSON.stringify(recArray); | + | |
- | app.WriteFile(jsonPath, | + | var s = JSON.stringify(recArray); |
- | }// | + | app.WriteFile(jsonPath, |
+ | } // | ||
- | function loadJSONfile(){ | + | function loadJSONfile() |
- | //read copy of recArray from file | + | |
- | var s = app.ReadFile(jsonPath) | + | |
- | recArray = JSON.parse(s) | + | var s = app.ReadFile(jsonPath) |
- | var len = recArray.length; | + | recArray = JSON.parse(s) |
- | for (var i=0; i< | + | var len = recArray.length; |
- | var obj = recArray[i]; | + | for (var i = 0; i < len; i++) |
- | layScroll.AddChild( recordLayout(obj) ); | + | |
- | } | + | |
- | scrollr.ScrollTo(0, | + | layScroll.AddChild(recordLayout(obj)); |
- | }// | + | } |
+ | scrollr.ScrollTo(0, | ||
+ | } // | ||
</ | </ |