Advertisement
Guest User

Fulltime Lecturer

a guest
Jan 22nd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 12.80 KB | None | 0 0
  1. <div class="col-xs-12 col-lg-12">
  2.     <div class="panel">
  3.         <div class="panel-heading"><h4>#{title}</h4></div>
  4.         <div class="panel-body">
  5.             <div class="row">
  6.                 <div class="col-md-6">
  7.                     <dl class="dl-horizontal">
  8.                         <dt><label class="control-label" for="cutoff_id">Cut-Off Date</label></dt>
  9.                         <dd>
  10.                             <select id="cutoff_id" class="form-control active" style="width: 300px" onchange="show_meetings()"></select>
  11.                             <button class="btn btn-xs btn-default" onclick="show_meetings()">
  12.                                 <img src="/img/sync.png"/> Show
  13.                             </button>
  14.                             <button class="btn btn-xs btn-default" onclick="validated_data()">
  15.                                 <img src="/img/check.png"/> Validate
  16.                             </button>
  17.                         </dd>
  18.                     </dl>
  19.                 </div>
  20.                 <div class="col-md-6">
  21.                     <dl class="dl-horizontal">
  22.                         <dt><label class="control-label" for="validate_cutoff_id">Validate Cut-Off Date</label></dt>
  23.                         <dd>
  24.                             <select id="validate_cutoff_id" class="form-control active" style="width: 300px" onchange="show_validated_data()"></select>
  25.                             <button class="btn btn-xs btn-default" onclick="show_validated_data()">
  26.                                 <img src="/img/sync.png"/> Show
  27.                             </button>
  28.                         </dd>
  29.                     </dl>
  30.                 </div>
  31.             </div>
  32.             <hr/>
  33.             <span id="loading"></span>
  34.             <div class="row">
  35.                 <div class="col-md-12">
  36.                     <div id="RECAP_FEE"></div>
  37.                 </div>
  38.             </div>
  39.         </div>
  40.     </div>
  41. </div>
  42. <style>
  43.     hr {
  44.         margin-top    : 4px;
  45.         margin-bottom : 4px;
  46.     }
  47. </style>
  48. <script>
  49.     var _grid = 'RECAP_FEE';
  50.     var majors = { /* majors */ };
  51.     DS.Majors = {};
  52.     DS.ExplainMajors = {};
  53.     DS.MajorStr2Int = {};
  54.     for (var z in majors) {
  55.         var maj = majors[ z ];
  56.         DS.Majors[ maj.id ] = maj.name;
  57.         DS.ExplainMajors[ maj.id ] = { 'name': maj.name, 'parent_id': maj.parent_id };
  58.         DS.MajorStr2Int[ maj.name ] = maj.id;
  59.     }
  60.     var fee_cutoff = { /* fee_cutoff */ };
  61.     var cutoff_validated = { /* cutoff_validated */ };
  62.     $( document ).ready( function() {
  63.         set_cutoff_date();
  64.         set_validated_cutoff_date();
  65.     } );
  66.  
  67.     function set_cutoff_date() {
  68.         var arr_date = {};
  69.         arr_date[''] = '(Unset)';
  70.         for (var z in fee_cutoff) {
  71.             var val = fee_cutoff[ z ].split('|');
  72.             arr_date[ val[ 0 ] ] = val[ 1 ];
  73.         }
  74.         H.Select2ify( '#cutoff_id', arr_date, null, -1 ).focus();
  75.     }
  76.  
  77.     function set_validated_cutoff_date() {
  78.         var arr_date = {};
  79.         for (var z in cutoff_validated) {
  80.             var val = cutoff_validated[ z ].split('|');
  81.             arr_date[ val[ 0 ] ] = val[ 1 ];
  82.             $("#cutoff_id option[value=" + val[ 0 ] + "]").attr('disabled', 'disabled');
  83.         }
  84.         var today = moment().format( Const_YMD );
  85.         var selected = null;
  86.         for( var z in arr_date ) {
  87.             var fc = arr_date[ z ].split( ' ' );
  88.             if( today > fc[ 2 ] ) selected = z;
  89.         }
  90.         H.Select2ify( '#validate_cutoff_id', arr_date, selected, -1 ).focus();
  91.     }
  92.  
  93.     function show_meetings() {
  94.         var cutoff_id = $( '#cutoff_id' ).val();
  95.         var range = $( '#cutoff_id option:selected' ).text();
  96.         range = range.split( ' to ' );
  97.         var start_date = range[ 0 ];
  98.         var end_date = range[ 1 ];
  99.         var values = {
  100.             a: 'list_all',
  101.             cutoff_id: cutoff_id
  102.         };
  103.         H.HorizontalLoading( 'loading' );
  104.         H.Post( values, function( res ) {
  105.             var rows = res.result;
  106.             var fields = [
  107.                 {
  108.                     header: 'A',
  109.                     renderer: function( row ) {
  110.                         return ImpersonateUrl( row.id );
  111.                     }
  112.                 },
  113.                 { header: 'ID', renderer: 'id', type: 'number' },
  114.                 { header: 'Full Name', renderer: 'full_name' },
  115.                 { header: 'NRK', renderer: 'nrk' },
  116.                 { header: 'Assignment Letter Number', renderer: 'letter_no' },
  117.                 { header: 'Lec. Type', renderer: 'lecturer_type' },
  118.                 { header: 'Current JaFung', renderer: H.DefaultLabeler('current_functional_position', DS.JabatanFungsionalDosen) },
  119.                 { header: 'Obligation', renderer: 'teaching_quota', type: 'number' },
  120.                 // { header: 'Additional Quota', renderer: 'additional_quota', type: 'number' },
  121.                 { header: 'Teaching Credit M', renderer: 'teach_m', type: 'float' },
  122.                 { header: 'Teaching Credit N', renderer: 'teach_n', type: 'float' },
  123.                 { header: 'Teaching Credit W', renderer: 'teach_w', type: 'float' },
  124.                 { header: 'Week Count', renderer: 'week_count', type: 'number' },
  125.                 {
  126.                     header: 'Over / Underload Week (M + N)',
  127.                     renderer: function( row ) {
  128.                         var teaching_credit = parseFloat( row.teach_m ) + parseFloat( row.teach_n );
  129.                         return teaching_credit - parseFloat( row.teaching_quota );
  130.                     },
  131.                     type: 'float'
  132.                 },
  133.                 {
  134.                     header: 'Over / Underload Cutoff (M + N)',
  135.                     renderer: function(row) {
  136.                         var teaching_credit = parseFloat( row.teach_m ) + parseFloat( row.teach_n );
  137.                         var n = teaching_credit - parseFloat(row.teaching_quota);
  138.                         if (n > 0) {
  139.                             return n * parseFloat( row.week_count );
  140.                         }
  141.                         return 0;
  142.                     },
  143.                     type: 'float'
  144.                 },
  145.                 {
  146.                     header: 'Teaching Credit W x Week Count',
  147.                     renderer: function(row) {
  148.                         return parseFloat( row.teach_w ) * parseFloat( row.week_count );
  149.                     },
  150.                     type: 'float'
  151.                 }
  152.             ];
  153.             for (var z in DS.Majors) {
  154.                 var major_id = z;
  155.                 var major_name = DS.Majors[ z ];
  156.                 // Plan
  157.                 var plan = {
  158.                     header: 'Plan_' + major_name,
  159.                     renderer: 'ps_' + major_id,
  160.                     type:'float'
  161.                 };
  162.                 fields.push( plan );
  163.                 // Overload
  164.                 var overload = {
  165.                     header: 'Over_' + major_name,
  166.                     renderer: 'ps_' + major_id,
  167.                     type:'float'
  168.                 };
  169.                 fields.push( overload );
  170.             }
  171.             for (var z in rows) {
  172.                 var row = rows[ z ];
  173.                 var homebase_major_id = row.homebase_major_id;
  174.                 var teaching_quota = parseFloat(row.teaching_quota);
  175.                 var teaching_credit = parseFloat( row.teach_m ) + parseFloat( row.teach_n );
  176.                 var homebase_teaching_credit = row[ 'ps_' + homebase_major_id ];
  177.                 var overload = teaching_credit - teaching_quota;
  178.                 if ( overload > 0 && homebase_teaching_credit < teaching_quota) {
  179.                    
  180.                }
  181.            }
  182.  
  183.            new GridBuilder( _grid, {
  184.                table_header: 'Full-Time Lecturer Overload Recap Fee ' + start_date + ' to ' + end_date,
  185.                can_add: false,
  186.                can_reload: false,
  187.                fields: fields,
  188.                order_cols: [ [ 2, 1 ] ],
  189.                rows: res.result
  190.            } );
  191.             $('#loading').text('');
  192.         } );
  193.     }
  194.  
  195.     function show_validated_data() {
  196.         var validate_cutoff_id = $( '#validate_cutoff_id' ).val();
  197.         var range = $( '#validate_cutoff_id option:selected' ).text();
  198.         range = range.split( ' to ' );
  199.         var start_date = range[ 0 ];
  200.         var end_date = range[ 1 ];
  201.         var values = {
  202.             a: 'list_all_validated',
  203.             validate_cutoff_id: validate_cutoff_id
  204.         };
  205.         H.HorizontalLoading( 'loading' );
  206.         H.Post( values, function( res ) {
  207.             var fields = [
  208.                 {
  209.                     header: 'A',
  210.                     renderer: function( row ) {
  211.                         return ImpersonateUrl( row.id );
  212.                     }
  213.                 },
  214.                 { header: 'ID', renderer: 'id', type: 'number' },
  215.                 { header: 'Full Name', renderer: 'full_name' },
  216.                 { header: 'NRK', renderer: 'nrk' },
  217.                 { header: 'Current JaFung', renderer: H.DefaultLabeler('current_functional_position', DS.JabatanFungsionalDosen) },
  218.                 { header: 'Assignment Letter Number', renderer: 'letter_no' },
  219.                 { header: 'Lec. Type', renderer: 'lecturer_type' },
  220.                 { header: 'Obligation', renderer: 'teaching_quota', type: 'number' },
  221.                 // { header: 'Additional Quota', renderer: 'additional_quota', type: 'number' },
  222.                 { header: 'Teaching Credit', renderer: 'sks_oblig', type: 'float' },
  223.                 { header: 'Over / Underload Week', renderer: 'under_overload_week', type: 'float' },
  224.                 { header: 'Over / Underload CutOff', renderer: 'under_overload_cutoff', type: 'float' },
  225.                 { header: 'Teaching Credit M', renderer: 'teach_m', type: 'float' },
  226.                 { header: 'Teaching Credit N', renderer: 'teach_n', type: 'float' },
  227.                 { header: 'Teaching Credit W', renderer: 'teach_w', type: 'float' },
  228.                 { header: 'Week Count', renderer: 'week_count', type: 'number' },
  229.                 {
  230.                     header: 'Over / Underload Week (M + N)',
  231.                     renderer: function(row) {
  232.                         var teaching_credit = parseFloat( row.teach_m ) + parseFloat( row.teach_n );
  233.                         return teaching_credit - parseFloat( row.teaching_quota );
  234.                     },
  235.                     type: 'float'
  236.                 },
  237.                 {
  238.                     header: 'Over / Underload Cutoff (M + N)',
  239.                     renderer: function(row) {
  240.                         var teaching_credit = parseFloat( row.teach_m ) + parseFloat( row.teach_n );
  241.                         var n = teaching_credit - parseFloat(row.teaching_quota);
  242.                         if (n > 0) {
  243.                             return n * parseFloat( row.week_count );
  244.                         }
  245.                         return 0;
  246.                     },
  247.                     type: 'float'
  248.                 },
  249.                 {
  250.                     header: 'Teaching Credit W x Week Count',
  251.                     renderer: function(row) {
  252.                         return parseFloat( row.teach_w ) * parseFloat( row.week_count );
  253.                     },
  254.                     type: 'float'
  255.                 }
  256.             ];
  257.             for (var z in DS.Majors) {
  258.                 var major_id = z;
  259.                 var major_name = DS.Majors[ z ];
  260.                 // Plan
  261.                 var plan = {
  262.                     header: 'Plan_' + major_name,
  263.                     renderer: 'ps_' + major_id,
  264.                     type:'float'
  265.                 };
  266.                 fields.push( plan );
  267.                 // Overload
  268.                 var overload = {
  269.                     header: 'Over_' + major_name,
  270.                     renderer: 'ps_' + major_id,
  271.                     type:'float'
  272.                 };
  273.                 fields.push( overload );
  274.             }
  275.             new GridBuilder( _grid, {
  276.                 table_header: '[ Validated ] Full Time Lecturer Overload Recap Fee ' + start_date + ' to ' + end_date,
  277.                 can_add: false,
  278.                 can_reload: false,
  279.                 fields: fields,
  280.                 order_cols: [ [ 2, 1 ] ],
  281.                 rows: res.result
  282.             } );
  283.             $('#loading').text('');
  284.         } );
  285.     }
  286.  
  287.     function validated_data() {
  288.         var values = {
  289.             a: 'validated_data',
  290.             cutoff_id: $( '#cutoff_id' ).val()
  291.         };
  292.         H.HorizontalLoading( 'loading' );
  293.         H.Post( values, function( res ) {
  294.             if( H.HasAjaxErrors( res ) ) return;
  295.             H.GrowlInfo( res.info );
  296.             $('#loading').text('');
  297.             setInterval(function() {
  298.                 window.location.reload(true);
  299.             }, 2000);
  300.         });
  301.     }
  302. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement