JAVASCRIPT   37

form.js

Guest on 13th October 2021 05:00:57 PM

  1. var call_php = function(url,jIn,jOut)
  2. {
  3.         return $.ajax(
  4.                 {
  5.                         url: url,
  6.                         method: 'POST',
  7.                         dataType: "json",
  8.                         contentType:"application/json; charset=utf8",
  9.                         data: JSON.stringify(jIn),
  10.                         success: jOut,
  11.                 })
  12. }
  13.  
  14. function initialise(refresh)
  15. {
  16.         //      if(document.location.ancestorOrigins[0] != "https://appcom")
  17.         //      {
  18.         //              //console.log("Not embedded");
  19.         //      }
  20.         //      else
  21.         //      {
  22.         //              //console.log("Embedded in Smartsheet");
  23.         //      }
  24. //      console.log("URL: " + window.location.href);
  25. //      console.log("Opener: " + window.parent.location.href);
  26. //      console.log("Referrer: " + document.referrer);
  27. //      console.log("Referrer: " + document.referrer);
  28.         $('#pwcontainer').css('display','inline-block');
  29.         var detail_div = document.getElementById("view_detail_" + document.getElementById("group").innerHTML);
  30.  
  31.         if(detail_div !== null)
  32.         {
  33.                 view_detail("", 0);
  34.         }
  35.         view_table(refresh);
  36.         display_dt();
  37.         display_user();
  38. }
  39.  
  40. function select_colour(number, total)
  41. {
  42.         //const h = ((number * 137.508)/360) - Math.floor((number * 137.508)/360); // golden angle
  43.         const h = (1 / (total + 1)) * number;
  44.         const s = 0.5;
  45.         //const s = Math.random();
  46.         //const s = Math.round((1 / (total + 1)) * number, 3);
  47.         const l = 0.75;
  48.         //const l = Math.random();
  49.  
  50.         var r, g, b;
  51.  
  52.         var hue2rgb = function hue2rgb(p, q, t)
  53.         {
  54.                 if(t < 0) t += 1;
  55.                 if(t > 1) t -= 1;
  56.                 if(t < 1/6) return p + (q - p) * 6 * t;
  57.                 if(t < 1/2) return q;
  58.                 if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
  59.                 return p;
  60.         }
  61.  
  62.         var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
  63.         var p = 2 * l - q;
  64.         r = hue2rgb(p, q, h + 1/3);
  65.         g = hue2rgb(p, q, h);
  66.         b = hue2rgb(p, q, h - 1/3);
  67.  
  68.         return "rgba(" + Math.round(r * 255) + "," + Math.round(g * 255) + "," + Math.round(b * 255) + ", 0.8)";
  69. }
  70.  
  71. function hslToRgb(h, s, l){
  72.     var r, g, b;
  73.  
  74.     if(s == 0){
  75.         r = g = b = l; // achromatic
  76.     }else{
  77.         var hue2rgb = function hue2rgb(p, q, t){
  78.             if(t < 0) t += 1;
  79.             if(t > 1) t -= 1;
  80.             if(t < 1/6) return p + (q - p) * 6 * t;
  81.             if(t < 1/2) return q;
  82.             if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
  83.             return p;
  84.         }
  85.  
  86.         var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
  87.         var p = 2 * l - q;
  88.         r = hue2rgb(p, q, h + 1/3);
  89.         g = hue2rgb(p, q, h);
  90.         b = hue2rgb(p, q, h - 1/3);
  91.     }
  92. }
  93.  
  94. function draw_barchart(charttitle, chartlabels, bgcolours, bordercolours, chartdata, charttype)
  95. {
  96.         var ctx = document.getElementById("canvas_" + charttitle).getContext('2d');
  97.  
  98.         var colstr = new Array();
  99.  
  100.         for( let i = 0; i < chartdata.length; i++ )
  101.         {
  102.                 colstr.push("rgba(" + Math.floor(Math.random() * 255) + ", " + Math.floor(Math.random() * 255) + ", " + Math.floor(Math.random() * 255) + ", 1)");
  103.         }
  104.  
  105.         Chart.defaults.global.defaultFontSize = 9;
  106.  
  107.         var myChart = new Chart(ctx, {
  108.                 type: charttype,
  109.                 data: {
  110.                         labels: chartlabels,
  111.                         datasets: [{
  112.                                 data: chartdata,
  113.                                 backgroundColor: colstr,
  114.                                 borderColor: colstr,
  115.                                 borderWidth: 1
  116.                         }]
  117.                 },
  118.                 options: {
  119.                         responsive: true,
  120.                         plugins: {
  121.                                 datalabels: {
  122.                                         labels: {
  123.                                                 title: {
  124.                                                         font: {
  125.                                                                 size: 10
  126.                                                         }
  127.                                                 }
  128.                                         }
  129.                                 },
  130.                                 legend: {
  131.                                         labels: {
  132.                                                 title: {
  133.                                                         display: false
  134.                                                 }
  135.                                         }
  136.                                 }
  137.                         }
  138.                 }
  139.         });
  140. }
  141.  
  142. /*
  143. function current_factor(period)
  144. {
  145.         if(period = "This Working Week")
  146.         {
  147.                 var rightNow = new Date();
  148.                 var daynow = rightNow.getDay();
  149.                 var hournow = rightNow.toLocaleString('en-GB', {hour: '2-digit', hour12: false, timeZone: 'Europe/London' });
  150.                 var minutenow = rightNow.toLocaleString('en-GB', {minute: '2-digit', hour12: false, timeZone: 'Europe/London' });
  151.        
  152.  
  153.                 if(hournow > 16)
  154.                 {
  155.                         var minuteslefttoday = 0;
  156.                 }
  157.                 else if(hournow < 9)
  158.                 {
  159.                         var minuteslefttoday = 60 * 8;
  160.                 }
  161.                 else
  162.                 {
  163.                         var minuteslefttoday = (60 - minutenow) + (60 * (16 - hournow));
  164.                 }
  165.         }
  166. }
  167. */
  168.  
  169.  
  170. function draw_chart(charttitle, chartlabels, bgcolours, bordercolours, chartdata, charttype, colours, operation, limits, is_popup)
  171. {
  172.         if(is_popup)
  173.         {
  174.                 var ctx = document.getElementById("canvas_popup").getContext('2d');
  175.         }
  176.         else
  177.         {
  178.                 var ctx = document.getElementById("canvas_" + charttitle).getContext('2d');
  179.         }
  180.  
  181.  
  182.         if(charttitle == "C33")
  183.         {
  184.                 console.log("C33::::: CHARTLABELS: " + chartlabels + ", CHARTDATA: " + chartdata + ", LIMITS: " + limits);
  185.                 chartlabels = ["Sarah Johansen","Adam Martin","Stuart Hedderwick","Ben Honey","Jade Wyatt"];
  186.                 chartdata = [94, 93, 99, 94, 92];
  187.                 limits = [80,100];
  188.         }
  189.         if(charttitle == "C42")
  190.         {
  191. //              chartlabels = ["Sarah Johansen","Adam Martin","Stuart Hedderwick","Ben Honey","Jade Wyatt"];
  192. //              chartdata = [48, 52, 33, 61, 44];
  193. //              limits = [0,100];
  194.  
  195.                 var rightNow = new Date();
  196.                 var day = rightNow.getDay() - 1;
  197.                 var hour = rightNow.toLocaleString('en-GB', {hour: '2-digit', hour12: false, timeZone: 'Europe/London' });
  198.                 var minute = rightNow.toLocaleString('en-GB', {minute: '2-digit', hour12: false, timeZone: 'Europe/London' });
  199.  
  200.                 if(hour > 16)
  201.                 {
  202.                         var minutestoday = 0;
  203.                         day = day + 1;
  204.                 }
  205.                 else if(hour < 9)
  206.                 {
  207.                         var minutestoday = 0;
  208.                 }
  209.                 else
  210.                 {
  211.                         var minutestoday = parseFloat(minute) + parseFloat((60) * (hour-9));
  212.                 }
  213.  
  214.                 var fractionofday = parseFloat(minutestoday / (60 * 8));
  215.                 var fractionofweek = parseFloat(day) + parseFloat(fractionofday);
  216.                 console.log("Minutes Today: " + minutestoday + ", Fraction of Day: " + fractionofday + "Fraction of Week: " + fractionofweek);
  217.                 var newchartdata = new Array();
  218.                 var newlimit = 0;
  219.  
  220.                 chartdata.forEach(function(a)
  221.                 {
  222.                         newchartdata.push(Math.round(a/fractionofweek));
  223.                         if(a > newlimit)
  224.                         {
  225.                                 newlimit = a;
  226.                         }
  227.                 });
  228.  
  229.                 chartdata = newchartdata;
  230.                 limits[1] = newlimit;
  231.                 console.log("New Limits: " + limits);
  232.         }
  233.  
  234.         var txt = chartlabels.toString();
  235.         var label = new Array();
  236.         label = txt.split(",");
  237.  
  238.         var txt = chartdata.toString();
  239.         var datapoint = new Array();
  240.         datapoint = txt.split(",");
  241.  
  242.         var maxval = parseInt(limits[1]);
  243.  
  244.         if(charttype == "pie" || charttype == "doughnut")
  245.         {
  246.                 var fontsize = 12;
  247.         }
  248.         else
  249.         {  
  250.                 var fontsize = 10;
  251.         }
  252.  
  253.         var rgbastr = new Array();
  254.         var maxred = 100;
  255.         var maxgreen = 200;
  256.         var maxblue = 100;
  257.  
  258.         if(colours == "")
  259.         {
  260.                 for( let i = 0; i < chartdata.length; i++ )
  261.                 {
  262.                         //rgbastr.push("rgba(" + Math.floor(Math.random() * maxred) + ", " + Math.floor(Math.random() * maxgreen) + ", " + Math.floor(Math.random() * maxblue) + ", 0.8)");
  263.                         //rgbastr.push("rgba(52, " + Math.floor(Math.random() * maxgreen) + ", 180, 0.5)");
  264.                         var colour = select_colour(i+1, chartdata.length);
  265.                         rgbastr.push(colour);
  266.                         //console.log("Hue: " + c);
  267.                         //colstr.push(c);
  268.                 }
  269.         }
  270.         else
  271.         {
  272.                 var colstr = new Array();
  273.                 colstr = colours.split("|");
  274.                 var rgba = new Array();
  275.  
  276.                 label.forEach(function(lbl)
  277.                         {
  278.                                 colstr.forEach(function(c,i)
  279.                                         {
  280.                                                 rgba = c.split(":");
  281.                                                 if(rgba[0] == lbl)
  282.                                                 {
  283.                                                         if((operation == "Count vs Baseline" || operation == "Percentage vs Baseline") && lbl.includes("Baseline") === false)
  284.                                                         {
  285.                                                                 if(datapoint[i] == Math.max(...datapoint))
  286.                                                                 {
  287.                                                                         rgbastr.push(rgba[2]);
  288.                                                                 }
  289.                                                                 else
  290.                                                                 {
  291.                                                                         rgbastr.push(rgba[1]);
  292.                                                                 }
  293.                                                         }
  294.                                                         else
  295.                                                         {
  296.                                                                 rgbastr.push(rgba[1]);
  297.                                                         }
  298.                                                 }
  299.                                         });
  300.                         });
  301.         }
  302.  
  303.         Chart.defaults.global.defaultFontSize = 9;
  304.  
  305.         if(charttype == "pie" || charttype == "doughnut")
  306.         {
  307.                 var myChart = new Chart(ctx, {
  308.                         type: charttype,
  309.                         data: {
  310.                                 labels: chartlabels,
  311.                                 datasets: [{
  312.                                         data: chartdata,
  313.                                         backgroundColor: rgbastr,
  314.                                         borderColor: rgbastr,
  315.                                         borderWidth: 1
  316.                                 }]
  317.                         },
  318.                         options: {
  319.                                 responsive: false,
  320.                                 plugins: {
  321.                                         datalabels: {
  322.                                                 labels: {
  323.                                                         title: {
  324.                                                                 font: {
  325.                                                                         size: fontsize
  326.                                                                 }
  327.                                                         }
  328.                                                 }
  329.                                         },
  330.                                         legend: {
  331.                                                 labels: {
  332.                                                         title: {
  333.                                                                 display: true
  334.                                                         }
  335.                                                 }
  336.                                         }
  337.                                 },
  338.                                 onClick:function(e)
  339.                                 {
  340.                                         var activePoints = myChart.getElementsAtEvent(e);
  341.                                         var selectedIndex = activePoints[0]._index;
  342.                                         routeToTable(charttitle, this.data.labels[selectedIndex]);
  343.                                 }
  344.                         }
  345.                 });
  346.         }
  347.         else
  348.         {
  349.  
  350.                 var myChart = new Chart(ctx, {
  351.                         type: charttype,
  352.                         data: {
  353.                                 labels: chartlabels,
  354.                                 datasets: [
  355.                                         {
  356.                                                 type: charttype,
  357.                                                 data: chartdata,
  358.                                                 backgroundColor: rgbastr,
  359.                                                 borderColor: rgbastr,
  360.                                                 borderWidth: 1
  361.                                         }
  362.                                 ]
  363.                         },
  364.                         options: {
  365.                                 responsive: false,
  366.                                 plugins: {
  367.                                         datalabels: {
  368.                                                 labels: {
  369.                                                         title: {
  370.                                                                 font: {
  371.                                                                         size: fontsize
  372.                                                                 }
  373.                                                         }
  374.                                                 }
  375.                                         },
  376.                                         legend: {
  377.                                                 labels: {
  378.                                                         title: {
  379.                                                                 display: true
  380.                                                         }
  381.                                                 }
  382.                                         }
  383.                                 },
  384.                                 scales: {
  385.                                         xAxes: [{
  386.                                                 display: true,
  387.                                                 stacked: true,
  388.                                                 ticks: {
  389.                                                         beginAtZero: true,
  390.                                                         max: maxval
  391.                                                 }
  392.                                         }],
  393.                                         yAxes: [{
  394.                                                 display: true,
  395.                                                 stacked: true,
  396.                                                 ticks: {
  397.                                                         beginAtZero: true,
  398.                                                         max: maxval
  399.                                                 }
  400.                                         }]
  401.                                 },
  402.                                 legend: {
  403.                                         display: false
  404.                                 },
  405.                                 onClick:function(e)
  406.                                 {
  407.                                         var activePoints = myChart.getElementsAtEvent(e);
  408.                                         var selectedIndex = activePoints[0]._index;
  409.                                         routeToTable(charttitle, this.data.labels[selectedIndex]);
  410.                                 }
  411.                         }
  412.                 });
  413.         }
  414. }
  415.  
  416. function routeToTable(charttitle, label)
  417. {
  418.         close_popup();
  419.         var go = false;
  420.  
  421.         if(document.getElementById("client").innerHTML == "lev")
  422.         {
  423.                 var thissite = document.getElementById("site").value;
  424.                 var thisbuilding = document.getElementById("building").value;
  425.                 var thisfloor = document.getElementById("floor").value;
  426.                 var thislab = document.getElementById("lab").value;
  427.                 var thistester = document.getElementById("tester").value;
  428.                 var thistested = "all";
  429.                 var thisresult = "all";
  430.                 var thistype = document.getElementById("equipment_type").value;
  431.                 var thiserror = "all";
  432.                 var thisweek = document.getElementById("test_week").value;
  433.  
  434.                 if(charttitle == "A31" && label == "Tested")
  435.                 {
  436.                         thistested = label;
  437.                         go = true;
  438.                 }
  439.                 else if(charttitle == "A41")
  440.                 {
  441.                         thisresult = label;
  442.                         go = true;
  443.                 }
  444.                 else if(charttitle == "A42")
  445.                 {
  446.                         thiserror = label;
  447.                         go = true;
  448.                 }
  449.                 else if(charttitle == "C31" || charttitle == "C32" || charttitle == "C33" || charttitle == "C41")
  450.                 {
  451.                         thistester = label;
  452.                         go = true;
  453.                 }
  454.  
  455.                 if(go == true)
  456.                 {
  457.                         document.getElementById("thisview").value = "B";
  458.  
  459.                         $('#pwcontainer').css('display','inline-block');
  460.                         var details = new Array();
  461.                         details.push(document.getElementById("client").innerHTML);
  462.                         details.push(document.getElementById("sid").innerHTML);
  463.                         details.push("B");
  464.                         document.getElementById("group").innerHTML = document.getElementById("thisview").value;
  465.  
  466.                         $.when(call_php("view_group.php", details)).done(function(data)
  467.                                 {
  468.                                         var result = JSON.stringify(data);
  469.                                         result = result.replace(/["]+/g, '');
  470.                                                 document.getElementById("outerdiv").innerHTML = result;
  471.                                                 document.getElementById("thisview").value = "B";
  472.  
  473.                                                 document.getElementById("site").options[document.getElementById("site").options.length] = new Option(thissite, thissite);
  474.                                                 selectElement("site", thissite);
  475.                                                 document.getElementById("building").options[document.getElementById("building").options.length] = new Option(thisbuilding, thisbuilding);
  476.                                                 selectElement("building", thisbuilding);
  477.                                                 document.getElementById("floor").options[document.getElementById("floor").options.length] = new Option(thisfloor, thisfloor);
  478.                                                 selectElement("floor", thisfloor);
  479.                                                 document.getElementById("lab").options[document.getElementById("lab").options.length] = new Option(thislab, thislab);
  480.                                                 selectElement("lab", thislab);
  481.                                                 document.getElementById("tester").options[document.getElementById("tester").options.length] = new Option(thistester, thistester);
  482.                                                 selectElement("tester", thistester);
  483.                                                 document.getElementById("tested").options[document.getElementById("tested").options.length] = new Option(thistested, thistested);
  484.                                                 selectElement("tested", thistested);
  485.                                                 document.getElementById("equipment_type").options[document.getElementById("equipment_type").options.length] = new Option(thistype, thistype);
  486.                                                 selectElement("equipment_type", thistype);
  487.                                                 document.getElementById("overall_result").options[document.getElementById("overall_result").options.length] = new Option(thisresult, thisresult);
  488.                                                 selectElement("overall_result", thisresult);
  489.                                                 document.getElementById("error").options[document.getElementById("error").options.length] = new Option(thiserror, thiserror);
  490.                                                 selectElement("error", thiserror);
  491.                                                 document.getElementById("test_week").options[document.getElementById("test_week").options.length] = new Option(thisweek, thisweek);
  492.                                                 selectElement("test_week", thisweek);
  493.  
  494.                                                 view_table(0);
  495.                                         })
  496.                                                 .fail(function(data)
  497.                                                         {
  498.                                                                 alert("Fail: routToTable. Data: " + JSON.stringify(data));
  499.                                                         });
  500.                 }
  501.         }
  502.         else
  503.         {
  504.                 if(null !== document.getElementById("chartfilter_" + charttitle))
  505.                 {
  506.                         var bits = new Array();
  507.                         bits = document.getElementById("chartfilter_" + charttitle).innerHTML.split(":::");
  508.  
  509.                         var filters = document.getElementById("fullfilterlist").innerHTML;
  510.                         var filter = new Array();
  511.                         filter = filters.split(",");
  512.  
  513.                         val = new Array();
  514.  
  515.                         filter.forEach(function(f)
  516.                         {
  517.                                 if(f.substring(0,1) == "*")
  518.                                 {
  519.                                         f = f.substring(1);
  520.                                 }
  521.  
  522.                                 if(f == bits[1])
  523.                                 {
  524.                                         val[f] = label;
  525.                                 }
  526.                                 else
  527.                                 {
  528.                                         if(null !== document.getElementById(f))
  529.                                         {
  530.                                                 val[f] = document.getElementById(f).value;
  531.                                         }
  532.                                         else
  533.                                         {
  534.                                                 val[f] = "all";
  535.                                         }
  536.                                 }
  537.                         });
  538.  
  539.                         go = true;
  540.                 }
  541.  
  542.                 if(go == true)
  543.                 {
  544.                         document.getElementById("thisview").value = "B";
  545.  
  546.                         $('#pwcontainer').css('display','inline-block');
  547.                         var details = new Array();
  548.                         details.push(document.getElementById("client").innerHTML);
  549.                         details.push(document.getElementById("sid").innerHTML);
  550.                         details.push("B");
  551.                         document.getElementById("group").innerHTML = document.getElementById("thisview").value;
  552.  
  553.                         $.when(call_php("view_group.php", details)).done(function(data)
  554.                         {
  555.                                 var result = JSON.stringify(data);
  556.                                 result = result.replace(/["]+/g, '');
  557.                                 document.getElementById("outerdiv").innerHTML = result;
  558.                                 document.getElementById("thisview").value = "B";
  559.  
  560.                                 filter.forEach(function(f)
  561.                                 {
  562.                                         document.getElementById(f).options[document.getElementById(f).options.length] = new Option(val[f], val[f]);
  563.                                         selectElement(f, val[f]);
  564.                                 });
  565.  
  566.                                 view_table(0);
  567.                         })
  568.                         .fail(function(data)
  569.                         {
  570.                                 alert("Fail: routToTable. Data: " + JSON.stringify(data));
  571.                         });
  572.                 }
  573.         }
  574. }
  575.  
  576. function refreshpage()
  577. {
  578.         initialise(1);
  579.         //console.log("EMAIL");
  580.         //console.log("EMAIL: " + parent.document.getElementById("data-email-address"));
  581. //      myStorage = window.sessionStorage;
  582. //      console.log("Sesh: " + crossDomainFrame.parent);
  583. }
  584.  
  585. function defaults()
  586. {
  587. //      if(document.getElementById("test_week").value != "This Week")
  588. //      {
  589. //              var refresh = 2;
  590. //      }
  591. //      else
  592. //      {
  593.                 var refresh = 0;
  594. //      }
  595.         var filterlist = new Array();
  596.         filterlist = push_filter_details(filterlist);
  597.         console.log("Filter List = " + filterlist);
  598.  
  599.         for(i=3; i < (filterlist[2] * 2) + 3 ; i = i + 2)
  600.         {
  601.                 document.getElementById(filterlist[i]).value = "all";
  602.         }
  603.         //console.log("Employee: " + document.getElementById("employee").innerHTML);
  604.         //console.log("Project: " + document.getElementById("project").innerHTML);
  605.         //console.log("Date: " + document.getElementById("date").innerHTML);
  606.         view_table(refresh);
  607. }
  608.  
  609. function push_filter_details(d)
  610. {
  611.         d.push(document.getElementById("client").innerHTML);
  612.         d.push(document.getElementById("sid").innerHTML);
  613.  
  614.         var filters = document.getElementById("fullfilterlist").innerHTML;
  615.         var filter = new Array();
  616.         filter = filters.split(",");
  617.         d.push(filter.length);
  618.  
  619.         var loop = 0;
  620.         filter.forEach(function(f)
  621.                 {
  622.                         d.push(f);
  623.                         var item = new Array();
  624.                         item = f.split("|");
  625.  
  626.                         //if(null !== document.getElementById(item[0]))
  627.                         if(null !== document.getElementById(item[0]))
  628.                         {
  629.                                 d.push(document.getElementById(item[0]).value);
  630.                         }
  631.                         else if(item[0].charAt(0) == "*" && null !== document.getElementById(item[0].substring(1)))
  632.                         {
  633.                                 d.push(document.getElementById(item[0].substring(1)).value);
  634.                         }
  635.                         else
  636.                         {
  637.                                 d.push("all");
  638.                         }
  639.                         loop++;
  640.                 });
  641.  
  642.         return d;
  643. }
  644.  
  645. function display_dt()
  646. {
  647.         var refresh=1000;
  648.         mytime=setTimeout('display_dateandtime()',refresh);
  649. }
  650.  
  651. function display_dateandtime()
  652. {
  653.         var x = new Date();
  654.         document.getElementById('dateandtime').innerHTML = x.toLocaleString({ weekday: 'short', month: 'short', year: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' });
  655.         display_dt();
  656. }
  657.  
  658. function display_user()
  659. {
  660.         if(null !== document.getElementById("ssuser"))
  661.         {
  662.                 document.getElementById('user').innerHTML = document.getElementById("ssuser").innerHTML;
  663.         }
  664. }
  665.  
  666. function selectElement(id, valueToSelect)
  667. {
  668.         let element = document.getElementById(id);
  669.         element.value = valueToSelect;
  670. }
  671.  
  672.  
  673. function view_group()
  674. {
  675.         $('#pwcontainer').css('display','inline-block');
  676.         var details = new Array();
  677.         var newgroup = document.getElementById("thisview").value;
  678.         details.push(document.getElementById("client").innerHTML);
  679.         details.push(document.getElementById("sid").innerHTML);
  680.         details.push(newgroup);
  681.         document.getElementById("group").innerHTML = document.getElementById("thisview").value;
  682.  
  683.         $.when(call_php("view_group.php", details)).done(function(data)
  684.         {
  685.                 var result = JSON.stringify(data);
  686.                 result = result.replace(/["]+/g, '');
  687.                 document.getElementById("outerdiv").innerHTML = result;
  688.                 document.getElementById("thisview").value = newgroup;
  689.                 view_table("");
  690.         })
  691.         .fail(function(data)
  692.         {
  693.                 alert("Fail: view_group. Data: " + JSON.stringify(data));
  694.         });
  695. }
  696.  
  697. function view_table(refresh)
  698. {
  699.         var table_block = "view";
  700.         var details = new Array();
  701.         details = push_filter_details(details);
  702.         var filters = document.getElementById("filterlist").innerHTML;
  703.         var filter = new Array();
  704.         filter = filters.split(":::");
  705.         details.push(filter[filter.length-1]);
  706.         details.push(refresh);
  707.  
  708.         console.log("IN VIEW TABLE: " + details);
  709.  
  710.         $.when(call_php("view_table.php", details)).done(function(data)
  711.         {
  712.                 var result = JSON.stringify(data);
  713.                 result = result.replace(/["]+/g, '');
  714.                 document.getElementById(table_block).innerHTML = result;
  715.  
  716.                 if(result.includes("^^^") === true)
  717.                 {
  718.                         var paramstr = new Array();
  719.                         paramstr = result.split("^^^");
  720.  
  721.                         paramstr.forEach(function(str1)
  722.                         {
  723.                                 if(str1.includes("|||") === true)
  724.                                 {
  725.                                         var str2 = new Array();
  726.                                         str2 = str1.split("|||");
  727.                                         var thisparam = str2[0];
  728.                                         var thisvalue = str2[1];
  729.  
  730.                                         if(thisparam == "view_text_A32")
  731.                                         {
  732.                                                 var str3 = new Array();
  733.                                                 var str4 = document.getElementById('chartdata_A31').innerHTML;
  734.                                                 str3 = str4.split(":::");
  735.                                                 var numerator = parseInt(str3[0]);
  736.                                                 var str5 = new Array();
  737.                                                 var str6 = document.getElementById('chartlimits_A31').innerHTML;
  738.                                                 var str5 = str6.split(":::");
  739.                                                 var denominator = parseInt(str5[1]);
  740.                                                 var pc = parseInt((100 * numerator) / denominator) + "%<br><div class='pctext' border=0>of tests<br>completed</div><div class='baselinetext'><br><br>Baseline: " + thisvalue;
  741.                                                 document.getElementById(thisparam).innerHTML = pc;
  742.                                         }
  743.                                         else if(thisparam == "view_text_A33")
  744.                                         {
  745.                                                 //document.getElementById(thisparam).innerHTML = thisvalue + "<br><div class='pctext'>tests<br>remaining</div><div class='baselinetext'>" + str2[2] + " man days<br>remaining<br>after today";
  746.                                                 document.getElementById(thisparam).innerHTML = str2[2] + "<br><div class='pctext'>tests<br>remaining</div><div class='baselinetext'>" + str2[3] + " man days<br>remaining<br>after today";
  747.                                         }
  748.                                         else if(thisparam == "view_text_A34")
  749.                                         {
  750.                                                 var str7 = new Array();
  751.                                                 var str8 = document.getElementById('view_text_params_A33').innerHTML;
  752.                                                 str7 = str8.split("|||");
  753.                                                 var str9 = str7[3];
  754.                                                 var str10 = str7[4].split("^^^");
  755.                                                 var mandaysleft = parseInt(str9);
  756.                                                 var mandaystotal = mandaysleft + parseInt(str10[0]);
  757.  
  758.                                                 var baserate = Math.round(str7[1] / mandaystotal);
  759.  
  760.                                                 var rightNow = new Date();
  761.                                                 hournow = rightNow.toLocaleString('en-GB', {hour: '2-digit', hour12: false, timeZone: 'Europe/London' });
  762.                                                 minutenow = rightNow.toLocaleString('en-GB', {minute: '2-digit', hour12: false, timeZone: 'Europe/London' });
  763.  
  764.                                                 // Assume working hours of 9 - 5
  765.  
  766.                                                 if(hournow > 16)
  767.                                                 {
  768.                                                         var minuteslefttoday = 0;
  769.                                                 }
  770.                                                 else if(hournow < 9)
  771.                                                 {
  772.                                                         var minuteslefttoday = 60 * 8;
  773.                                                 }
  774.                                                 else
  775.                                                 {
  776.                                                         var minuteslefttoday = (60 - minutenow) + (60 * (16 - hournow));
  777.                                                 }
  778.  
  779.                                                 var mandaysleft = mandaysleft + (thisvalue * (minuteslefttoday / (60 * 8)));
  780.  
  781.                                                 if(mandaysleft == 0)
  782.                                                 {
  783.                                                         rate = "N/A";
  784.                                                 }
  785.                                                 else
  786.                                                 {
  787.                                                         var rate = Math.round(str7[2] / mandaysleft);
  788.                                                 }
  789.                                                 document.getElementById(thisparam).innerHTML = rate + "<br><div class='pctext'>tests per day<br>per tester</div><div class='baselinetext'><br><br>Baseline: " + baserate;
  790.                                         }
  791.                                         else
  792.                                         {
  793.                                                 document.getElementById(thisparam).innerHTML = thisvalue;
  794.                                         }
  795.                                 }
  796.                         });
  797.                 }
  798.  
  799.                 var totalstr = document.getElementById("totalstr").innerHTML;
  800.  
  801.                 if(refresh != -1)
  802.                 {
  803.                         var loop = 0;
  804.                         filter.forEach(function(f)
  805.                         {
  806.                                 if(loop > 0 && loop <= filter[0])
  807.                                 {
  808.                                         amend_filter(f);
  809.                                 }
  810.                                 loop++;
  811.                         });
  812.                 }
  813.  
  814.                 var widget = new Array();
  815.                 widget = (document.getElementById("widgets").innerHTML).split(":::");
  816.  
  817.                 var loading_complete = false;
  818.                 widget.forEach(function(w)
  819.                 {
  820.                         if(null !== document.getElementById("chart_" + w) && (refresh != 1 || (null !== document.getElementById("chartfilter_" + w) && document.getElementById("chartfilter_" + w).innerHTML.substring(0,3) == "yes")))
  821.                         {
  822.                                 var chart_params = document.getElementById("chart_" + w).innerHTML;
  823.                                 var param = new Array();
  824.                                 param = chart_params.split(":::");
  825.                                 if(param[4] == "Doughnut Chart")
  826.                                 {
  827.                                         view_chart(param[0], w, "doughnut", param[7], param[6], param[3], param[8], false);
  828.                                         loading_complete = true;
  829.                                 }
  830.                                 else if(param[4] == "Pie Chart")
  831.                                 {
  832.                                         view_chart(param[0], w, "pie", param[7], param[6], param[3], param[8], false);
  833.                                         loading_complete = true;
  834.                                 }
  835.                                 else if(param[4] == "Bar Chart")
  836.                                 {
  837.                                         if(param[5] == "Horizontal")
  838.                                         {
  839.                                                 view_chart(param[0], w, "horizontalBar", param[7], param[6], param[3], param[8], false);
  840.                                                 loading_complete = true;
  841.                                         }
  842.                                         else
  843.                                         {
  844.                                                 view_chart(param[0], w, "bar", param[7], param[6], param[3], param[8], false);
  845.                                                 loading_complete = true;
  846.                                         }
  847.                                 }
  848.                         }
  849.                         else if(null !== document.getElementById("chartlabels_" + w))
  850.                         {
  851.                                 if(document.getElementById("chartlabels_" + w).innerHTML == "Sum Text")
  852.                                 {
  853.                                         document.getElementById("view_text_" + w).innerHTML = document.getElementById("chartlimits_" + w).innerHTML + document.getElementById("chartdata_" + w).innerHTML + "<br><div class='pctext'>" + document.getElementById("chartfilter_" + w).innerHTML + "</div>";
  854.  
  855.                                         if(null !== document.getElementById("chartcolour_" + w) && document.getElementById("chartcolour_" + w).innerHTML != "")
  856.                                         {
  857.                                                 document.getElementById("view_text_" + w).style.color = document.getElementById("chartcolour_" + w).innerHTML;
  858.                                         }
  859.  
  860.                                         loading_complete = true;
  861.                                 }
  862.                         }
  863.                 });
  864.  
  865.                 if(loading_complete == false)
  866.                 {
  867.                         complete_loading();
  868.                 }
  869.         })
  870.         .fail(function(data)
  871.         {
  872.                 alert("Fail: view_table. Data: " + JSON.stringify(data));
  873.         });
  874. }
  875.  
  876. function enlarge_chart(c)
  877. {
  878.         var c2 = c.innerHTML;
  879.         var c3 = c2.indexOf("enlarge_chart");
  880.         var chartname = c2.substring(c3 + 14, c3 + 17);
  881.  
  882.         var chart_params = document.getElementById("chart_" + chartname).innerHTML;
  883.         var param = new Array();
  884.         param = chart_params.split(":::");
  885.         if(param[4] == "Doughnut Chart")
  886.         {
  887.                 charttype = "doughnut";
  888.         }
  889.         else if(param[4] == "Pie Chart")
  890.         {
  891.                 charttype = "pie";
  892.         }
  893.         else if(param[4] == "Bar Chart")
  894.         {
  895.                 if(param[5] == "Horizontal")
  896.                 {
  897.                         charttype = "horizontalBar";
  898.                 }
  899.                 else
  900.                 {
  901.                         charttype = "bar";
  902.                 }
  903.         }
  904.  
  905.         $('#outertable').toggleClass('blur');
  906.         view_chart(param[0], chartname, charttype, 700, 1000, "", "", true);
  907.         $('#popup').show();
  908. }
  909.  
  910. function amend_filter(thisdiv)
  911. {
  912.         var details = new Array();
  913.         details = push_filter_details(details);
  914.         details.push(thisdiv);
  915.  
  916.         $.when(call_php("amend_filter.php", details)).done(function(data)
  917.         {
  918.                 var result = JSON.stringify(data);
  919.                 result = result.replace(/["]+/g, '');
  920.                 document.getElementById(thisdiv + "div").innerHTML = result;
  921.         })
  922.         .fail(function(data)
  923.         {
  924.                 alert("Fail: amend_filter: " + thisdiv + " Data: " + data);
  925.         });
  926. }
  927.  
  928. function update_detail(id)
  929. {
  930.         var details = new Array();
  931.         details.push(document.getElementById("client").innerHTML);
  932.         details.push(document.getElementById("sid").innerHTML);
  933.         details.push(id);
  934.  
  935.         details.push(document.getElementById("editlist").innerHTML);
  936.  
  937.         var item = document.getElementById("editlist").innerHTML.split(":::");
  938.         var thisid = "";
  939.         var thisval = "";
  940.  
  941.         item.forEach(function(f)
  942.         {
  943.                 details.push(document.getElementById(f).value);
  944.                 thisid = f.substring(5);
  945.                 if(null !==  document.getElementById(thisid))
  946.                 {
  947.                         document.getElementById(thisid).innerHTML = document.getElementById(f).value;
  948.                 }
  949.         });
  950.  
  951.         $.when(call_php("update_detail.php", details)).done(function(data)
  952.         {
  953.                 var result = JSON.stringify(data);
  954.                 result = result.replace(/["]+/g, '');
  955.         })
  956.         .fail(function(data)
  957.         {
  958.                 console.log("FAIL: " + data);
  959.                 alert("Fail: update_detail: Data: " + data);
  960.         });
  961. }
  962.  
  963. function rgbToHex(col)
  964. {
  965.     if(col.charAt(0)=='r')
  966.     {
  967.         col=col.replace('rgb(','').replace(')','').split(',');
  968.         var r=parseInt(col[0], 10).toString(16);
  969.         var g=parseInt(col[1], 10).toString(16);
  970.         var b=parseInt(col[2], 10).toString(16);
  971.         r=r.length==1?'0'+r:r; g=g.length==1?'0'+g:g; b=b.length==1?'0'+b:b;
  972.         var colHex='#'+r+g+b;
  973.         return colHex;
  974.     }
  975. }
  976.  
  977. function search_table(sheet_id)
  978. {
  979.         var searchobject = document.getElementById("SearchVal_" + sheet_id);
  980.         var searchstring = searchobject.value;
  981.         var tablename = sheet_id + "_table";
  982.  
  983.         var thistable = document.getElementById(tablename).innerHTML;
  984.  
  985.         $(thistable).find("div").each
  986.         (
  987.                 function()
  988.                 {
  989.                         if($(this).attr('class') == "divTableRow")
  990.                         {
  991.                                 if($(this).text().includes(searchstring) == false)
  992.                                 {
  993.                                         $("#" + jQuery(this).attr('id')).hide();
  994.                                 }
  995.                                 else
  996.                                 {
  997.                                         $("#" + jQuery(this).attr('id')).show();
  998.                                 }
  999.                         }
  1000.                 }
  1001.         );
  1002. }
  1003.  
  1004. function clear_search(sheet_id)
  1005. {
  1006.         var searchobject = document.getElementById("SearchVal_" + sheet_id);
  1007.         var searchstring = searchobject.value;
  1008.         var tablename = sheet_id + "_table";
  1009.  
  1010.         var thistable = document.getElementById(tablename).innerHTML;
  1011.        
  1012.         $(thistable).find("div").each
  1013.         (
  1014.                 function()
  1015.                 {
  1016.                         if($(this).attr('class') == "divTableRow")
  1017.                         {
  1018.                                 $("#" + jQuery(this).attr('id')).show();
  1019.                         }
  1020.                 }
  1021.         );
  1022.        
  1023.         $(searchobject).val("");
  1024. }
  1025.  
  1026.  
  1027. function view_detail(id, edit)
  1028. {
  1029.         var group = document.getElementById("group").innerHTML;
  1030.  
  1031.         if(null !== document.getElementById("detailid") && document.getElementById("detailid").innerHTML != "")
  1032.         {
  1033.                 var previd = document.getElementById("detailid").innerHTML;
  1034.                 var prevbg = rgbToHex(document.getElementById("detailbg").innerHTML);
  1035.                 if(prevbg == "#dcebf8")
  1036.                 {
  1037.                         var newbg = "#ffffff";
  1038.                 }
  1039.                 else
  1040.                 {
  1041.                         var newbg = "#ebf1f5";
  1042.                 }
  1043.                 if(null !== document.getElementById(previd))
  1044.                 {
  1045.                         document.getElementById(previd).style.background = newbg;
  1046.                 }
  1047.         }
  1048.  
  1049.         if(null !== document.getElementById(id))
  1050.         {
  1051.                 var obj = document.getElementById(id);
  1052.                 document.getElementById("detailbg").innerHTML = window.getComputedStyle(obj).backgroundColor;
  1053.                 document.getElementById("detailid").innerHTML = id;
  1054.                 document.getElementById(id).style.background = "#ffffcc";
  1055.         }
  1056.  
  1057.         var detail_block = "view_detail_" + group;
  1058.         var details = new Array();
  1059.         details.push(document.getElementById("client").innerHTML);
  1060.         details.push(document.getElementById("sid").innerHTML);
  1061.         details.push(id);
  1062.         details.push(edit);
  1063.         details.push(0);
  1064.  
  1065.         console.log("SENDING TO VIEW DETAILS: " + details);
  1066.  
  1067.         $.when(call_php("view_detail.php", details)).done(function(data)
  1068.         {
  1069.                 var result = JSON.stringify(data);
  1070.                 result = result.replace(/["]+/g, '');
  1071.                 document.getElementById(detail_block).innerHTML = result;
  1072.         })
  1073.         .fail(function(data)
  1074.         {
  1075.                 alert("Fail: view_detail. Data: " + data);
  1076.         });
  1077. }
  1078.  
  1079. function close_popup()
  1080. {
  1081.         $('#popup').hide();
  1082.         $('#outertable').toggleClass('unblur');
  1083. }
  1084.  
  1085. function view_chart(title, chartname, type, height, width, colours, operation, is_popup)
  1086. {
  1087.         var chart_block = "view_chart_" + chartname;
  1088.         var details = new Array();
  1089.         details.push(document.getElementById("client").innerHTML);
  1090.         details.push(document.getElementById("sid").innerHTML);
  1091.         details.push(title);
  1092.         if(is_popup)
  1093.         {
  1094.                 details.push("popup");
  1095.         }
  1096.         else
  1097.         {
  1098.                 details.push(chartname);
  1099.         }
  1100.         details.push(height);
  1101.         details.push(width);
  1102.  
  1103.         $.when(call_php("view_chart.php", details)).done(function(data)
  1104.         {
  1105.                 var result = JSON.stringify(data);
  1106.                 result = result.replace(/["]+/g, '');
  1107.  
  1108.                 if(is_popup)
  1109.                 {
  1110.                         $("#view_chart_popup").show();
  1111.                         document.getElementById("view_chart_popup").innerHTML = result;
  1112.                 }
  1113.                 else
  1114.                 {
  1115.                         $("#" + chart_block).show();
  1116.                         document.getElementById(chart_block).innerHTML = result;
  1117.                 }
  1118.  
  1119.                 if(null !== document.getElementById("chartdata_" + chartname))
  1120.                 {
  1121.                         var values = document.getElementById("chartdata_" + chartname).innerHTML;
  1122.                 }
  1123.                 else
  1124.                 {
  1125.                         var values = "";
  1126.                 }
  1127.  
  1128.                 if(null !== document.getElementById("chartlabels_" + chartname))
  1129.                 {
  1130.                         var labels = document.getElementById("chartlabels_" + chartname).innerHTML;
  1131.                 }
  1132.                 else
  1133.                 {
  1134.                         var labels = "";
  1135.                 }
  1136.  
  1137.                 if(null !== document.getElementById("chartlimits_" + chartname))
  1138.                 {
  1139.                         var limits = document.getElementById("chartlimits_" + chartname).innerHTML;
  1140.                 }
  1141.                 else
  1142.                 {
  1143.                         var limits = "";
  1144.                 }
  1145.  
  1146.                 var thislabels = new Array();
  1147.                 thislabels = labels.split(":::");
  1148.                 var thisdata = new Array();
  1149.                 thisdata = values.split(":::");
  1150.                 var thislimits = new Array();
  1151.                 thislimits = limits.split(":::");
  1152.        
  1153.                 draw_chart(chartname, thislabels, "", "", thisdata, type, colours, operation, thislimits, is_popup);
  1154.  
  1155.                 complete_loading();
  1156.         })
  1157.         .fail(function(data)
  1158.         {
  1159.                 alert("Fail: view_chart. Data: " + data);
  1160.         });
  1161. }
  1162.  
  1163. function complete_loading()
  1164. {
  1165.         $('#pwcontainer').css('display','none');
  1166.         $('#formdiv').show();
  1167.  
  1168.         if(document.getElementById("show_table").innerHTML == "yes")
  1169.         {
  1170.                 $('#view').show();
  1171.         }
  1172.  
  1173.         if(null !== document.getElementById("view_chart"))
  1174.         {
  1175.                 $('#view_chart').show();
  1176.         }
  1177.  
  1178.         if(null !== document.getElementById("view_detail_" + document.getElementById("group").innerHTML))
  1179.         {
  1180.                 $('#view_detail_' + document.getElementById("group").innerHTML).show();
  1181.         }
  1182.         $('#refreshimage').show();
  1183. }

Raw Paste


Login or Register to edit or fork this paste. It's free.