All Downloads are FREE. Search and download functionalities are using the official Maven repository.

templates.js.main.js Maven / Gradle / Ivy

/*-------------------------------------------------------------------------------------------------------------------*\
|  Copyright (C) 2015-2016 PayPal                                                                                     |
|                                                                                                                     |
|  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance     |
|  with the License.                                                                                                  |
|                                                                                                                     |
|  You may obtain a copy of the License at                                                                            |
|                                                                                                                     |
|       http://www.apache.org/licenses/LICENSE-2.0                                                                    |
|                                                                                                                     |
|  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed   |
|  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for  |
|  the specific language governing permissions and limitations under the License.                                     |
\*-------------------------------------------------------------------------------------------------------------------*/

function displayImage(src, title) {
  "use strict";
  $(".modal-image .modal-body").find("img").attr("src",src);
  $(".modal-image .modal-header .modal-title").text(title);
  $(".modal-image").modal();
}

function displaySource(src, title) {
  "use strict";
  $(".modal-source .modal-body").find("iframe").attr("src", src);
  $(".modal-source .modal-header .modal-title").text(title);
  $(".modal-source").modal();
}
  
/* Main JavaScript for RuntimeReporter */
(function main() {
  "use strict";
  var reports = window.reports;
  var tree = Object.create(null);
  var treeFilter = reports.testMethods, configTreeFilter = reports.configurationMethods;
  var autoHideTree = true;
  var pageSize = 10, configPageSize = 10;
  var index, configIndex;
  var total, configTotal;
  var noOfPage, configNoOfPage;
  var sortedRecords, sortingDirection = {suite: "1", test: "1", packageInfo: "1", className: "1", methodName: "1",
    parameters : "1" };
  var configSortedRecords, configSortingDirection = {suite: "1", test: "1", packageInfo: "1", className: "1",
    methodName: "1", type : "1" };
  var filterSearch, configFilterSearch;
  var autoRefresh;
  var timeRefresh = 300 * 1000;//300 seconds refresh interval
  var localConfigMap = Object.create(null);
  var reportMetaData = reports.reporterMetadata;
  var DISPLAY_LABEL = "displayLabel";

  tree.AllSuites = Object.create(null);
  var root = tree.AllSuites;
  $.each(reports.testMethods, function(ignore, item) {
    var suiteMap = getMap(root, item.suite);
    var testMap = getMap(suiteMap, item.test);
    var packageMap = getMap(testMap, item.packageInfo);
    getMap(packageMap, item.className);
  });

  var uniqueId = 0;
  $.each(root, function(key, value) {
    var id = "#AllSuites";
    uniqueId = uniqueId + 1;
    var suiteId = uniqueId;
    generateInnerTree(id, key, "suite", suiteId);
    $.each(value, function(key1, value1) {
      var id1 = "#" + key + "suite" + suiteId;
      uniqueId = uniqueId + 1;
      var testId = uniqueId;
      generateInnerTree(id1, key1, "test", testId);
      $.each(value1, function(key2, value2) {
        var id2 = "#" + key1 + "test" + testId;
        uniqueId = uniqueId + 1;
        var packageId = uniqueId;
        generateInnerTree(id2, key2, "packageInfo", packageId);
        $.each(value2, function(key3) {
          var id3 = "#" + key2 + "packageInfo" + packageId;
          uniqueId = uniqueId + 1;
          var classId = uniqueId;
          generateInnerTree(id3, key3, "className", classId);
        });
      });
    });
  });

  $(".btn-tree-autohide").click(function() {
    var span = $(".btn-tree-autohide").find("span");
    if ($(span).hasClass("label-success")) {
      $(span).removeClass("label-success").addClass("label-danger").html("Off");
      autoHideTree = false;
    } else {
      $(span).removeClass("label-danger").addClass("label-success").html("On");
      autoHideTree = true;
    }
  });
  
  $("#tree").jstree({
    "core" : { "themes" : { "variant" : "medium" } },
    "checkbox" : { "keep_selected_style" : true }
  });

  $("#tree").on("changed.jstree", function (ignore, data) {
    var searchType = data.node.li_attr["data-type"];
    var searchMap = Object.create(null);

    if (searchType === "all") {
      treeFilter = reports.testMethods;
      configTreeFilter = reports.configurationMethods;
    } else {
      searchMap[searchType] = data.node.text;
      var k = data.node.parents.length - 3, parent;
      while (k >= 0) {
        parent = $("#" + data.node.parents[k]);
        searchMap[parent.attr("data-type")] = parent.attr("data-value");
        k -= 1;
      }
      treeFilter = filterResults(searchMap, reports.testMethods);
      configTreeFilter = filterResults(searchMap, reports.configurationMethods);
    }
    refreshResults();
    if (autoHideTree) {
      $("#bodycontent").toggleClass("toggled");
    }
  });

  $("#display-tree").click(function(e) {
    e.preventDefault();
    $("#bodycontent").toggleClass("toggled");
    $("#treeview-left").css("height", (window.innerHeight - 85) + "px");
  });

  var dateFormatOptions = {
    year: "numeric", month: "short", day: "numeric",
    hour: "2-digit", minute: "2-digit", second:"2-digit"
  };

  var helpers = {
    // Declare date format helper to get readable name and value.
    formatDateValue : function(val, key) {
      var d = new Date(val);
      switch (key) {
      case "currentDate":
        return d.toLocaleString("en-US", dateFormatOptions);
      default:
        return val;
      }
    },
    formatDisplayName : function(key) {
      var labelToRender = key;
      if (reportMetaData.hasOwnProperty(key)) {
        var configProperty = reportMetaData[key];
        if (configProperty.hasOwnProperty(DISPLAY_LABEL)) {
          labelToRender = configProperty.displayLabel;
        }
      }
      return labelToRender;
    }
  };

  $(document).ready(function() {

    function reloadPage() {
      location.reload();
    }

    //Prepare configuration summary content
    $("#config-popover").popover();
    var configData = $.map(reports.configSummary, function(value, key) {
      return {value: helpers.formatDateValue(value, key), key: helpers.formatDisplayName(key)};});
    $("#config-popover").attr("data-content", $("#configImpl").render({"results" : configData}));

    //Prepare local config summary map
    $.each(reports.localConfigSummary, function(ignore, obj) {
      localConfigMap[obj.test] = $.map(obj, function(value, key) {
        return {value: helpers.formatDateValue(value, key), key: helpers.formatDisplayName(key)};});
    });

    autoRefresh = window.setInterval(reloadPage, timeRefresh);

    refreshResults();

    $(".btn-auto-update").click(function() {
      var span = $(this).find("span");
      if ($(span).hasClass("label-success")) {
        $(span).removeClass("label-success").addClass("label-danger").html("Off");
        if (autoRefresh !== null) {
          window.clearInterval(autoRefresh);
        }
      } else {
        $(span).removeClass("label-danger").addClass("label-success").html("On");
        autoRefresh = window.setInterval(reloadPage, timeRefresh);
      }
    });
  });

  function refreshResults() {
    //Load the test case results
    var passed = 0, failed = 0, skipped = 0, running = 0;
    if (reports.reportSummary.testMethodsSummary.passed) {
      passed = reports.reportSummary.testMethodsSummary.passed;
    }
    if (reports.reportSummary.testMethodsSummary.failed) {
      failed = reports.reportSummary.testMethodsSummary.failed;
    }
    if (reports.reportSummary.testMethodsSummary.skipped) {
      skipped = reports.reportSummary.testMethodsSummary.skipped;
    }
    if (reports.reportSummary.testMethodsSummary.running) {
      running = reports.reportSummary.testMethodsSummary.running;
    }

    total = passed + failed + skipped + running;
    generateSummary("passed", passed, total);
    generateSummary("failed", failed, total);
    generateSummary("skipped", skipped, total);
    generateSummary("running", running, total);

    //Pagination for Test case table
    index = 1;
    configIndex = 1;
    sortedRecords = treeFilter;
    filterSearch = sortedRecords;
    total = filterSearch.length;
    noOfPage = Math.ceil(total/pageSize);

    //Registering the util method with view helpers during refresh
    $.views.helpers({
      setStatusAndTimeAsToolTip: function (status, startTime, endTime) {
        "use strict";
        var eStart = "Unavailable";
        if (status !== "Skipped") {
          eStart = helpers.formatDateValue(startTime, "currentDate");
        }
        var eEnd = "Unavailable";
        if (status === "Passed" || status === "Failed") {
          eEnd = helpers.formatDateValue(endTime, "currentDate");
        }
        return "Status: " + status + "\n" + "Started on: " + eStart + "\n" + "Ended at: " + eEnd;
      },
      getLatestImage: function (logs) {
        "use strict";
        if (!logs) {
          return null;
        }
        var i = logs.length - 1;
        while (i >= 0) {
          if (logs[i].image) {
            return logs[i].image;
          }
          i -= 1;
        }
        return null;
      }
    });

    renderPageCombo("#", ".pageSizeCombo");
    renderSearch("#", "#testCaseSearch", sortedRecords);
    $("#" + "testcase-pagination ul .page-number").remove();
    renderPageNumbers("#", 1, noOfPage);
    renderPagination("#");
    if ($("#testcaseParentBody .fixed-table-pagination").is(":visible")) {
      renderTable("#", filterSearch,index,pageSize);
    } else {
      $("#testcaseBody").html($("#gridImpl").render({"results" : treeFilter}));
      afterRender(treeFilter, "");
    }

    //Pagination for Config Test case table
    configSortedRecords = configTreeFilter;
    configFilterSearch = configSortedRecords;
    configTotal = configFilterSearch.length;
    configNoOfPage = Math.ceil(configTotal/configPageSize);

    renderPageCombo("#config-", ".config-pageSizeCombo");
    renderSearch("#config-", "#config-testCaseSearch", configSortedRecords);
    $("#config-" + "testcase-pagination ul .page-number").remove();
    renderPageNumbers("#config-", 1, configNoOfPage);
    renderPagination("#config-");
    renderTable("#config-", configFilterSearch, configIndex, configPageSize);

    $("#testcase-btn-grid").click(function() {
      $("#testcaseParentBody .fixed-table-pagination").hide();
      $("#testcase-btn-list").removeClass("active");
      $("#testcase-btn-grid").addClass("active");
      $("#testcaseBody").html($("#gridImpl").render({"results" : treeFilter}));
      afterRender(treeFilter, "");
    });

    $("#testcase-btn-list").click(function() {
      $("#testcase-btn-grid").removeClass("active");
      $("#testcase-btn-list").addClass("active");
      renderTable("#", filterSearch,index,pageSize);
      $("#testcaseParentBody .fixed-table-pagination").show();
      afterRender(filterSearch,"");
    });

    enableClickForProgressBar("passed");
    enableClickForProgressBar("failed");
    enableClickForProgressBar("skipped");
    enableClickForProgressBar("running");
    $("#statistics-data").click(function() {
      searchResults("");
    });
  }

  function generateSummary(id, status, total) {
    $("#statistics-progress-" + id).css("width",(status * 100 / total)+ "%");
    if (status > 0) {
        $("#statistics-data-" + id).css("width",(status * 100 / total)+ "%").html(status + " " + id);
    } else {
        $("#statistics-data-" + id).css("width","0%").html("");
    }
  }

  function filterResults(searchMap, results) {
    var count = 0, tmpTreeFilter = [];
    $.each(results, function(ignore, testCase) {
        var searchAll = true;
        $.each(searchMap, function(key, value) {
            if(testCase[key] !== value) {
                searchAll = false;
            }
        });
        if (searchAll) {
            tmpTreeFilter[count] = testCase;
            count = count + 1;
        }
    });
    return tmpTreeFilter;
  }

  function generateInnerTree(id, key, type, uniqueId) {
    var leaf = "";
    if (type === "className") {
        leaf = "data-jstree=\"{\"icon\":\"glyphicon glyphicon-leaf\"}\"";
    }
    //Remove dot and spaces from the key
    var id1 = id.replace(/\./g, "").replace(/\s+/g, "");
    var newId = key.replace(/\./g, "").replace(/\s+/g, "") + type + uniqueId;
    if ($(id1 + " ul").length === 0) {
        $(id1).first().append("
  • " + key + "
"); } else { $(id1 + " ul").first().append("
  • " + key + "
  • "); } } function getMap(map, key) { if (!map[key]) { map[key] = Object.create(null); } return map[key]; } function renderPageCombo(pageAdditionalId, comboClassName) { $(comboClassName + " li a").click(function(){ var selText = $(this).text(); $(this).parents(".btn-group").find(".dropdown-toggle").html(selText+" "); var mPageSize = parseInt(selText); var mNoOfPage; var mFilterSearch; if(pageAdditionalId === "#") { pageSize = mPageSize; noOfPage = Math.ceil(total/pageSize); mNoOfPage = noOfPage; index = 1; mFilterSearch = filterSearch; } else { configPageSize = mPageSize; configNoOfPage = Math.ceil(configTotal / configPageSize); mNoOfPage = configNoOfPage; configIndex = 1; mFilterSearch = configFilterSearch; } $(pageAdditionalId + "testcase-pagination ul .page-number").remove(); renderPageNumbers(pageAdditionalId, 1, mNoOfPage); renderTable(pageAdditionalId, mFilterSearch, 1, mPageSize); }); } function renderSorting(pageAdditionalId, tableId, records) { $(tableId + " thead tr th").click(function() { var col = $(this).attr("data-index"); if(col !== "nil") { var direction = getSortingDirection(pageAdditionalId); var asc = direction[col]; direction[col] = -1 * asc; setSortingDirection(pageAdditionalId, direction); records.sort(function(a, b){ return (a[col] === b[col]) ? 0 : ((a[col] > b[col]) ? asc : -1 * asc); }); renderTable(pageAdditionalId, getFilterSearch(pageAdditionalId), getIndex(pageAdditionalId), getPageSize(pageAdditionalId)); var arrowDirection = ""; if(asc === "1") { arrowDirection = "dropup"; } $(tableId + " thead tr th[data-index$=" + col + "]").html($(tableId + " thead tr th[data-index$=" + col + "]").text() + ""); } }); } function renderSearch(pageAdditionalId, searchBoxId, records) { $(searchBoxId).keyup(function() { var val = $.trim($(this).val()).replace("/" + "/g", " ").toLowerCase(); var searchArray = [], j = 0; var i = 0, testCase; while (i < records.length) { testCase = records[i]; if(matchTestCase(testCase, val)) { searchArray[j] = testCase; j += 1; } i += 1; } setFilterSearch(pageAdditionalId, searchArray); setSortedRecords(pageAdditionalId, searchArray); setIndex(pageAdditionalId, 1); setNoOfPage(pageAdditionalId, Math.ceil(getFilterSearch(pageAdditionalId).length / getPageSize(pageAdditionalId))); if(searchBoxId === "#testCaseSearch") { total = filterSearch.length; } else { configTotal = configFilterSearch.length; } $(pageAdditionalId + "testcase-pagination ul .page-number").remove(); renderPageNumbers(pageAdditionalId, 1, getNoOfPage(pageAdditionalId)); renderTable(pageAdditionalId, getFilterSearch(pageAdditionalId), 1, getPageSize(pageAdditionalId)); }); } function renderPagination(pageAdditionalId) { $(pageAdditionalId + "testcase-pagination ul .page-first").click(function() { if(1 !== getIndex(pageAdditionalId)) { setIndex(pageAdditionalId, 1); $(pageAdditionalId + "testcase-pagination ul .page-number").remove(); renderPageNumbers(pageAdditionalId, 1, getNoOfPage(pageAdditionalId)); renderTable(pageAdditionalId, getFilterSearch(pageAdditionalId), getIndex(pageAdditionalId), getPageSize(pageAdditionalId)); } }); $(pageAdditionalId + "testcase-pagination ul .page-pre").click(function() { if(0 < (getIndex(pageAdditionalId) - getPageSize(pageAdditionalId))) { setIndex(pageAdditionalId, (getIndex(pageAdditionalId) - getPageSize(pageAdditionalId))); var k = $(pageAdditionalId + "testcase-pagination ul .page-number").first().find("a").text(); var n = parseInt(k) - 1; if(n > 0) { $(pageAdditionalId + "testcase-pagination ul .page-number").last().remove(); $(pageAdditionalId + "testcase-pagination ul .page-pre").after($("
  • ").attr("data-index",n) .addClass("page-number").append($("").attr("href","#").append(n) )); } renderTable(pageAdditionalId, getFilterSearch(pageAdditionalId), getIndex(pageAdditionalId), getPageSize(pageAdditionalId)); } }); $(pageAdditionalId + "testcase-pagination ul .page-number").click(function() { setIndex(pageAdditionalId,((parseInt($(this).attr("data-index")) - 1) * getPageSize(pageAdditionalId)) + 1); renderTable(pageAdditionalId, getFilterSearch(pageAdditionalId), getIndex(pageAdditionalId), getPageSize(pageAdditionalId)); }); $(pageAdditionalId + "testcase-pagination ul .page-next").click(function() { if(getFilterSearch(pageAdditionalId).length >= (getIndex(pageAdditionalId) + getPageSize(pageAdditionalId))) { setIndex(pageAdditionalId, (getIndex(pageAdditionalId) + getPageSize(pageAdditionalId))); var k = $(pageAdditionalId + "testcase-pagination ul .page-number").last().find("a").text(); var n = parseInt(k) + 1; if(n <= getNoOfPage(pageAdditionalId)) { $(pageAdditionalId + "testcase-pagination ul .page-number").first().remove(); $(pageAdditionalId + "testcase-pagination ul .page-next").before($("
  • ").attr("data-index",n) .addClass("page-number").append($("").attr("href","#").append(n) )); } renderTable(pageAdditionalId, getFilterSearch(pageAdditionalId), getIndex(pageAdditionalId), getPageSize(pageAdditionalId)); } }); $(pageAdditionalId + "testcase-pagination ul .page-last").click(function() { if(getFilterSearch(pageAdditionalId).length >= (getIndex(pageAdditionalId) + getPageSize(pageAdditionalId))) { var divIndex = Math.floor(getFilterSearch(pageAdditionalId).length / getPageSize(pageAdditionalId)); var modIndex = getFilterSearch(pageAdditionalId).length % getPageSize(pageAdditionalId); setIndex(pageAdditionalId, (divIndex * getPageSize(pageAdditionalId)) + 1); if(modIndex === 0) { setIndex(pageAdditionalId, ((divIndex - 1) * getPageSize(pageAdditionalId)) + 1); } $(pageAdditionalId + "testcase-pagination ul .page-number").remove(); var siForPage = (getNoOfPage(pageAdditionalId) - 4); if(siForPage < 1) { siForPage = 1; } renderPageNumbers(pageAdditionalId, siForPage, getNoOfPage(pageAdditionalId)); renderTable(pageAdditionalId, getFilterSearch(pageAdditionalId), getIndex(pageAdditionalId), getPageSize(pageAdditionalId)); } }); } function renderTable(pageAdditionalId, rtFilterSearch, rtIndex, rtPageSize) { var endIndex = rtIndex + rtPageSize - 1; var filterResult = extractResults(rtFilterSearch,rtIndex,endIndex); $(pageAdditionalId + "testcaseBody").html($(pageAdditionalId + "tableImpl").render({"results" : filterResult}, {"startIndex":rtIndex}, {"count": endIndex})); if(pageAdditionalId === "#") { afterRender(filterResult, ""); renderSorting("#", "#paginationTextCaseTable", sortedRecords); } else { afterRender(filterResult, "-config"); renderSorting("#config-", "#paginationTextConfigTable", configSortedRecords); } if(filterSearch.length <= (endIndex - rtIndex)) { endIndex = rtFilterSearch.length; } if(getPageSize(pageAdditionalId) >= rtFilterSearch.length) { $(pageAdditionalId + "testcase-page-info").html("Showing all rows"); } else { $(pageAdditionalId + "testcase-page-info").html("Showing " + rtIndex + " to " + endIndex + " of " + rtFilterSearch.length + " rows"); } $(pageAdditionalId + "testcase-pagination ul .page-number").click(function() { var mIndex = ((parseInt($(this).attr("data-index")) - 1) * rtPageSize) + 1; if(pageAdditionalId === "#") { index = mIndex; } else { configIndex = mIndex; } renderTable(pageAdditionalId, rtFilterSearch,mIndex, rtPageSize); }); } function renderPageNumbers(paginationId, startNumber, mNoOfPage) { var pageLoaded = 0; var i = startNumber; while ((i <= mNoOfPage) && (pageLoaded < 5)) { $(paginationId + "testcase-pagination ul .page-next").before($("
  • ").attr("data-index",i) .addClass("page-number").append($("").attr("href","#").append(i) )); pageLoaded += 1; i += 1; } } function matchTestCase(testCase, val) { if(!matchValue(testCase.status, val) || !matchValue(testCase.suite, val) || !matchValue(testCase.test, val) || !matchValue(testCase.packageInfo, val) || !matchValue(testCase.className, val) || !matchValue(testCase.methodName, val) || !matchValue(testCase.stacktrace, val)) { return true; } return false; } function matchValue(left, right) { if(left === undefined) { left = ""; } var text = left.replace(/\s+/g, " ").toLowerCase(); return !~text.indexOf(right); } function extractResults(data, startIndex, endIndex) { var result = [], j = 0; var i = startIndex - 1; while ((i < endIndex) && (i < data.length)) { result[j] = data[i]; j += 1; i += 1; } return result; } function enableClickForProgressBar(status) { $("#statistics-progress-" + status).click(function() { searchResults(status); }); } function searchResults(data) { var filterCtrl = $("#testCaseSearch"); filterCtrl.val(data); filterCtrl.keyup(); } function afterRender(data, buttonAdditonalClassName) { // The following code snippet helps displaying the tool tip in older version of IE viz 7,8,9 $(document).on("mouseenter", "[data-toggle=tooltip]", function () { "use strict"; $(this).tooltip({ container: "body", trigger: "manual" }).tooltip("show"); }); $(document).on("mouseleave", "[data-toggle=tooltip]", function () { "use strict"; $(this).tooltip("hide"); }); $(".btn-config" + buttonAdditonalClassName).click(function() { var test = $(this).attr("data-index"); $(".modal-config .modal-body").html($("#configImpl").render({"results" : localConfigMap[test]})); $(".modal-config").modal(); }); $(".btn-screenshot" + buttonAdditonalClassName).click(function() { var testcase = data[parseInt($(this).attr("data-index"))]; var params = " "; if (testcase.parameters) { params = testcase.parameters; } $(".modal-screenshot .modal-header .modal-title").text( testcase.packageInfo + "." + testcase.className + "." + testcase.methodName + "(" + params + ")"); $(".modal-screenshot .modal-body").html($("#screenshotImpl").render(testcase)); $(".modal-screenshot").modal(); }); $(".btn-stacktrace" + buttonAdditonalClassName).click(function() { var testcase = data[parseInt($(this).attr("data-index"))]; var params = " "; if (testcase.parameters) { params = testcase.parameters; } $(".modal-stacktrace .modal-header .modal-title").text( testcase.packageInfo + "." + testcase.className + "." + testcase.methodName + "(" + params + ")"); $(".modal-stacktrace .modal-body").html($("#stacktraceImpl").render(testcase, { getUpdatedStackTrace : function(value) { var newValue = "No data to display"; if (value !== null) { var temp = value.replace(/\n/g, "
    "); newValue = temp.replace(/\t/g, "    "); } return newValue; } })); $(".modal-stacktrace").modal(); }); } function setIndex(pageAdditionalId, val) { if(pageAdditionalId === "#") { index = val; } else { configIndex = val; } } function getIndex(pageAdditionalId) { if(pageAdditionalId === "#") { return index; } else { return configIndex; } } function setNoOfPage(pageAdditionalId, val) { if(pageAdditionalId === "#") { noOfPage = val; } else { configNoOfPage = val; } } function getNoOfPage(pageAdditionalId) { if(pageAdditionalId === "#") { return noOfPage; } else { return configNoOfPage; } } function getPageSize(pageAdditionalId) { if(pageAdditionalId === "#") { return pageSize; } else { return configPageSize; } } function setFilterSearch(pageAdditionalId, val) { if(pageAdditionalId === "#") { filterSearch = val; } else { configFilterSearch = val; } } function getFilterSearch(pageAdditionalId) { if(pageAdditionalId === "#") { return filterSearch; } else { return configFilterSearch; } } function setSortedRecords(pageAdditionalId, val) { if(pageAdditionalId === "#") { sortedRecords = val; } else { configSortedRecords = val; } } function setSortingDirection(pageAdditionalId, val) { if(pageAdditionalId === "#") { sortingDirection = val; } else { configSortingDirection = val; } } function getSortingDirection(pageAdditionalId) { if(pageAdditionalId === "#") { return sortingDirection; } else { return configSortingDirection; } } }());




  • © 2015 - 2025 Weber Informatics LLC | Privacy Policy