Advertisement
Guest User

Untitled

a guest
Sep 30th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. /* SETUP DATA */
  3.  
  4. var cgi_src = 'cgi-bin/_inventory.pl';
  5. var pstyle = 'border: 1px solid #DFDFDF; border-radius: 3px';
  6. var config = {
  7.     layout: {
  8.         name: 'layout',
  9.         padding: 10,
  10.         panels: [
  11.             // NAV PANEL (UPPER LEFT)
  12.             { type: 'main', size: "25%",resizable: true, style: pstyle,
  13.                 content: '<div id="navpanel"></div>'},
  14.             // ASSY SELECTOR (LOWER LEFT)
  15.             { type: 'preview', size: "75%",resizable: true, style: pstyle},
  16.             // MAIN PANEL (RIGHT)
  17.             { type: 'right', size: "75%", resizable: true, style: pstyle,
  18.                 content: '<div id="viewer"></div>',        
  19.                 toolbar: {
  20.                     name: 'toolbar',
  21.                     style   : pstyle,
  22.                     //right : 'text on the right',
  23.                     items: [
  24.                         { type: 'button',  id: 'tool-download', caption: 'Download', img: 'icon-page'},
  25.                         { type: 'break' },
  26.                         { type: 'radio',  id: 'tool-list',  group: '1', caption: 'List View', hint: 'Sorted by Reference Designator', checked: true },
  27.                         { type: 'radio',  id: 'tool-kit',  group: '1', caption: 'Kit View', hint: 'Sorted by Part Number' },
  28.                         { type: 'break' },
  29.                         { type: 'button',  id: 'tool-recursive',  caption: 'Recursive Search', html: 'hello' },
  30.                         { type: 'spacer' },
  31.                         { type: 'button',  id: 'tool-print', caption: 'Print', img: 'icon-page'},
  32.                     ],
  33.                     onClick: function (event) {
  34.                         //this.owner.content('toolbar', event);
  35.                     }
  36.                 },
  37.             },
  38.         ]
  39.     },
  40.  
  41.     assygrid: {
  42.         name: 'assygrid',
  43.         //style: 'margin:0px; width:75% ',
  44.         columns: [
  45.             { field: 'proj', caption: 'PROJ', size: '30%' },
  46.             { field: 'assy', caption: 'ASSY', size: '30%' },
  47.             { field: 'var', caption: 'VAR', size: '20%' },
  48.             { field: 'rev', caption: 'REV', size: '20%' },
  49.         ]
  50.     },
  51.     plform: {
  52.         name: 'plform',
  53.         fields: [
  54.             { name: 'PROJ', type: 'text' },
  55.             { name: 'ASSY', type: 'text' },
  56.             { name: 'VAR', type: 'text' },
  57.         ]
  58.     },
  59.     pltable: {
  60.         name: "pltable",
  61.         classField: "REF",
  62.         cols:[
  63.             { field: "REF DES", caption: "REF DES", width: "15%" },
  64.             { field: "II P/N", caption: "PART NUM", width: "15%" },
  65.             { field: "DESCRIPTION", caption: "DESCRIPTION", width: "40%" },
  66.             { field: "MFR", caption: "MFR", width: "10%" },
  67.             { field: "MFR P/N", caption: "MFR P/N", width: "20%" }]
  68.     },
  69.     assyinputs: {
  70.         name: 'assyInputs',
  71.         inputs: [
  72.             { name:'assyProj', caption:'PROJ' },
  73.             { name:'assyAssy', caption:'ASSY' },
  74.             { name:'assyVar', caption:'VAR' } ]
  75.     }
  76. }
  77.  
  78.  
  79.  
  80.  
  81. /* INITIAL SETUP */
  82.  
  83. $(function() {    
  84.     // SETUP PANELS - TOOLBAR INCLUDED (grid is not)
  85.     $('#main').w2layout(config.layout);
  86.     // ADD INPUTS TO NAV PANEL
  87.     $('#navpanel').renderInputs(config.assyinputs)
  88.     // ADD GRID TO ASSY PANEL
  89.     w2ui.layout.content('preview', $().w2grid(config.assygrid));
  90. });
  91.  
  92.  
  93.  
  94.  
  95. /* EVENTS */
  96.  
  97. $(function() {
  98.  
  99.     /* ASSY SEARCH - update ASSYS grid (currently PAGE LOAD - fake search) */
  100.         // add listener here
  101.         $('body').addClass('wait');
  102.         w2ui['assygrid'].reset();
  103.         // fix next line to use inputs...
  104.         $.getJSON(cgi_src,{action:'get_assys', proj:'', assy:'353', var:'01'}, function(result) {
  105.             if(result.assys) {
  106.                 result.assys.forEach(function(element, index){ element.recid = index + 1; });  
  107.                 w2ui['assygrid'].records = result.assys;
  108.                 w2ui['assygrid'].total = result.assys.length;
  109.                 w2ui['assygrid'].refresh();
  110.             }
  111.             $('body').removeClass('wait');
  112.         });
  113.  
  114.     /* ASSY SELECT - pull parts list */
  115.     w2ui['assygrid'].on('select', function(event) {
  116.         event.onComplete = function () {
  117.             this.scrollIntoView();
  118.             if(this.getSelection().length == 1) {
  119.                 $('body').addClass('wait');
  120.                 var plid = this.get(this.getSelection()).partslist_id;
  121.                 $.getJSON(cgi_src,{action:'get_parts_list', plid:plid}, function(result) {
  122.                     $('#viewer')
  123.                         .empty()
  124.                         .renderTable(config.pltable, result.partslist);
  125.                     $('body').removeClass('wait');
  126.                 });
  127.             }
  128.         };
  129.     });
  130.  
  131. });    
  132.  
  133.  
  134. /* FUNCTIONS */
  135.  
  136. // RENDER TABLE
  137. $.fn.renderTable = function (config, data) {
  138.     this.append($('<table>')
  139.         .attr("id", config.name || config.caption)
  140.         .append($('<tbody>')
  141.             // append header row
  142.             .append($('<tr>')
  143.                 .append($.map( config.cols, function(col) { return (
  144.                     $("<th>")
  145.                         .html(col.caption)
  146.                         .css("width", col.width)
  147.                 )}))
  148.             )
  149.             // append data rows
  150.             .append($.map( data, function(row) { return (
  151.                 $('<tr>')
  152.                     .addClass("TBLfield-" + row[config.classField])
  153.                     .append($.map(config.cols, function(col) { return (
  154.                         $("<td>")
  155.                             .html(row[col.field])
  156.                     )}))
  157.             )}))
  158.         )
  159.     );
  160.     return this;
  161. };
  162.  
  163. // RENDER INPUTS
  164. $.fn.renderInputs = function (config) {
  165.     this.append($('<div>')
  166.         .attr ("id", config.name)
  167.         .append($.map( config.inputs, function(input) { return (
  168.             $("<span>")
  169.                 .append(
  170.                     $("<label>")
  171.                         .attr( 'for', input.name)
  172.                         .html(input.caption)
  173.                 )
  174.                 .append(
  175.                     $('<input>')
  176.                         .attr( 'type', 'text')
  177.                         .attr( 'name', input.name)
  178.                         .attr( 'id', input.name)
  179.                 )
  180.             )}))
  181.     );
  182.     return this;
  183. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement