Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var categoryArray = [];
  2. var catRows = [];
  3.  
  4. // populate category array from database
  5. // only called on first rendering of the tab, after that the array is filled
  6. if (categoryArray.length == 0) {
  7.     var db = Titanium.Database.open('contentDB');
  8.     var dbrows = db.execute('select category_id, category_name from categories order by category_name asc');
  9.     while (dbrows.isValidRow()) {
  10.         categoryArray.push({
  11.             catid:dbrows.fieldByName('category_id'),
  12.             title:dbrows.fieldByName('category_name')
  13.         });
  14.         Ti.API.info("Found category: "+dbrows.fieldByName('category_name')+" ["+dbrows.fieldByName('category_id')+"]");
  15.         dbrows.next();
  16.     }
  17.     dbrows.close();
  18.     db.close();
  19. }
  20.  
  21. // category table view
  22. for (var c=0;c<categoryArray.length;c++) {
  23.     var row = Ti.UI.createTableViewRow({height:40,backgroundColor:'#ffffff',selectedBackgroundColor:'#eeee33',hasChild:true});
  24.     var item = categoryArray[c];
  25.    
  26.     row.catname = item.title;
  27.     row.catid = item.catid;
  28.                        
  29.     var catName = Ti.UI.createLabel({
  30.         text: item.title,
  31.         color: '#334499',
  32.         textAlign:'left',
  33.         left:4,
  34.         top:8,
  35.         height:'auto',
  36.         font:{fontWeight:'bold',fontSize:20}
  37.     });
  38.     row.add(catName);  
  39.     catRows[c] = row;
  40. }
  41. var categoryTableView = Titanium.UI.createTableView({data:catRows});
  42.  
  43. // a helper function to make the code cleaner below
  44. function composeItemHTML(id, desc) {
  45.     var currentSize = Ti.App.Properties.getInt("fontSize");
  46.    
  47.     var retval = '<html><head>';
  48.     retval += '<style>BODY {color: black;font-family: Arial, Helvetica, Sans-Serif;text-align:center;font-size:'+currentSize+'pt}';
  49.     retval += '</style>';
  50.     retval += '</head><body bgcolor="#660000"><div style="padding: 26px; background-color: white; border: 1px solid; -webkit-border-radius: 5px;text-align:left">';
  51.     retval += desc;
  52.     retval += '</div>';
  53.     retval += '</body></html>';
  54.     return retval;
  55. }
  56.  
  57. function showItemsInCategory(cid,cname) {
  58.         var itemArray = [];
  59.         Ti.API.info("-> "+cname+" <- clicked");
  60.        
  61.         // populate item array from database
  62.         // called every time a category row is clicked
  63.         var db = Titanium.Database.open('contentDB');
  64.         var dbrows = db.execute('select item_id,item_name,item_description from items where category_id=? order by item_name asc',cid);
  65.         while (dbrows.isValidRow()) {
  66.             itemArray.push({
  67.                 item_id:dbrows.fieldByName('item_id'),
  68.                 title:dbrows.fieldByName('item_name'),
  69.                 item_description:dbrows.fieldByName('item_description')
  70.             });
  71.             Ti.API.info("Found item: "+dbrows.fieldByName('item_name')+" ["+dbrows.fieldByName('item_id')+"]");
  72.             dbrows.next();
  73.         }
  74.         dbrows.close();
  75.         db.close();
  76.                
  77.         // create item table view
  78.         itemRows = [];
  79.         for (var c=0;c<itemArray.length;c++)
  80.         {
  81.             var row2 = Ti.UI.createTableViewRow({height:'40',backgroundColor:'#ffffff',selectedBackgroundColor:'#eeee33',hasChild:true});
  82.             var item = itemArray[c];
  83.        
  84.             // assign custom row values
  85.             row2.item_id = item.item_id;
  86.             row2.heading = item.title;
  87.             row2.item_description = item.item_description;
  88.  
  89.             // the label for the item name in tableview row
  90.             var itemTitle = Ti.UI.createLabel({
  91.                 text: item.title,
  92.                 color: '#334499',
  93.                 textAlign:'left',
  94.                 left:4,
  95.                 top:8,
  96.                 height:'auto',
  97.                 font:{fontWeight:'bold',fontSize:20}
  98.             });
  99.             row2.add(itemTitle);
  100.            
  101.             itemRows[c] = row2;
  102.         }
  103.         var itemTableView = Titanium.UI.createTableView({data:itemRows});
  104.         var subWindow = Titanium.UI.createWindow({  
  105.             title:cname,
  106.             backgroundColor:'#000000'
  107.         });
  108.         subWindow.add(itemTableView);
  109.         subWindow.barColor = '#993333';
  110.         Titanium.UI.currentTab.open(subWindow,{animated:true});
  111.        
  112.         // called when user clicks on an item
  113.         itemTableView.addEventListener('click',function(e)
  114.         {          
  115.             var w3 = Ti.UI.createWindow({title:e.row.heading});
  116.             var wb3 = Ti.UI.createWebView();
  117.             wb3.html = composeItemHTML(e.row.item_id,e.row.item_description);
  118.             w3.add(wb3);
  119.             var b3 = Titanium.UI.createButton({
  120.                 title:'Close',
  121.                 style:Titanium.UI.iPhone.SystemButtonStyle.PLAIN
  122.             });
  123.             w3.setLeftNavButton(b3);
  124.             w3.barColor = '#993333';
  125.             b3.addEventListener('click',function()
  126.             {
  127.                 w3.close();
  128.             });        
  129.             w3.open({modal:true});
  130.         });
  131. };
  132.  
  133. // called when use clicks on a category to see items in that category
  134. function handleCategoryClick(e) {              
  135.     showItemsInCategory(e.row.catid,e.row.catname);
  136. }
  137.  
  138. // category view event listener
  139. categoryTableView.addEventListener('click', handleCategoryClick);
  140.  
  141.  
  142. // add category table view to the window
  143. Titanium.UI.currentWindow.add(categoryTableView);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement