Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Document Properties Marker
overridefalse


Short DescriptionModule to provide a filter for a display table macro.
Doctypedocmodulehide
NameFilter Module
Short Name
Parent
Parent Property
property-nameName
hide
Audience
Name List
doctyperole
render-no-hits-as-blanktrue
propertyAudience
empty-as-nonetrue

Subject
Name List
doctypesubject
propertySubject

Categories
Name List
doctypecategory
propertyCategories

Tags
Tag List
propertyTags

Flagshide
Iteration
Iteration
valuefinished

Type
Name List
doctypemodule-type
render-no-hits-as-blanktrue
propertyType

Sort Keyhide



Section
titleDescription

...

Section
titleContent

Below this text is the HTML-Code to be transcluded to provide a filter for a display table macro using the remote controlled feature.

The javascript code uses the variable initialwhere which can be replaced using the transclusion variable replacement feature and be set to the initial where condition used in the display table macro.

Morover two more variables have to be set to provide options for a dropdown.

Full example replacement to put in transclusion box to disable the dropdown:

tableid=fitered
datalistselects=<datalist id="selects"></datalist>
datalistwheres=<datalist id="wheres"></datalist>

Full example replacement to put in transclusion box to set values for the dropdowns:

tableid=filtered
datalistselects=<datalist id="selects"><option value="Name">Name only</option><option value="Name, Short Description, Iteration">With Iteration</option></datalist>
datalistwheres=<datalist id="wheres"><option value="$<Iteration>=[Facade]">Facade</option><option value="$<Iteration>=[Filled]">Filled</option><option value="$<Iteration>=[Finished]">Finished</option></datalist>
Section
hidetrue
titleHide


Section
titleHTML-CODE


HTML
<form id="
filterForm$
filterForm-${tableid}" action="">
  <label for="select">select:</label>
  <input id="
filterSelect$
filterSelect-${tableid}" size="50" type="text" list="
selects$
selects-${tableid}" name="select" autocomplete="on">
  
${datalistselects} where:
<label for="where">where:</label>
  <input id="
filterWhere$
filterWhere-${tableid}" size="50" type="text" list="
wheres$
wheres-${tableid}" name="where" autocomplete="on">
  
${datalistwheres}
<input type="submit" value="Submit">
  <input type="reset" value="Reset">
</form>
<script> AJS.toInit(function() {





<form id="filterForm${tableid}" action=""> select: <input id="filterSelect${tableid}" size="50" type="text" list="selects${tableid}" name="select" > ${datalistselects} where: <input id="filterWhere${tableid}" size="50" type="text" list="wheres${tableid}" name="where"> ${datalistwheres} <input type="submit" value="Submit"> <input type="reset" value="Reset"> </form> <script> AJS.toInit(function() { function appendToQueryString( queryString, queryParam ) { if(queryString.trim()) { queryString=queryString + "&" + queryParam; } else { queryString="?"+queryParam; }
  } else {
                initialWhere = $('#${tableid} table').attr('data-projectdoc-query-where');
                console.debug("In Check 1 c: initial where is: " + initialWhere);
                console.debug("In Check 1 c : original where is: " + originalWhere);
            }
            if (typeof initialWhere == 'undefined' || initialWhere == null) {
                console.debug("Check 1 : initial is set to empty string.");
                initialWhere = null;
                console.debug("In Check 1/1 : initial where is: " + initialWhere);
            }
        } else {
            console.debug("Check 1 : initial where is not empty");
            console.debug("In Check 1 : initial where is: " + initialWhere);
        }

        $('#filterForm${tableid} datalist').attr('id', function(index, id) {
            return id + "${tableid}";
        })

        $("#filterSelect${tableid}").val(originalSelect);
        $("#filterWhere${tableid}").val(originalWhere);

        $('#filterForm${tableid}').submit(function(evt) {
            evt.preventDefault();

            var tableId = "${tableid}";
            var $select = $('#filterSelect${tableid}').val();
            var $where = $('#filterWhere${tableid}').val();

            var $queryString = "";
            if (oldQueryParams.trim()) {
                $queryString = appendToQueryString($queryString, oldQueryParams.substr(1));
            }
            if (typeof initialWhere == 'undefined' || initialWhere == null) {
                console.debug("Check 2 : initial where is empty");
            } else {
                console.debug("Check 2 : initial where is not empty");
                if (initialWhere == originalWhere) {
                    console.debug("In Check 2 b : initial where is: " + initialWhere);
                    console.debug("In Check 2 b : original where is: " + originalWhere);
                } else {
                    $queryString = appendToQueryString($queryString, "${tableid}initialWhere=" + encodeURI(initialWhere));
                    console.debug("In Check 2 c: initial where is: " + initialWhere);
                    console.debug("In Check 2 c : original where is: " + originalWhere);
                }
                console.debug("In Check 2 : initial where is: " + initialWhere);
                console.debug("In Check 2 : querystring is: " + $queryString);
            }
            if ($select.trim()) {
                var $encodedSelect = encodeURI($select);
       
return
 
queryString;
    
 
}; var
 
urlParams
 
= new
 
URLSearchParams(window.location.search);
var 
originalSelect
$selectQueryParam =
urlParams.get('${tableid}:select'); var originalWhere = urlParams.get('${tableid}customWhere'); var initialWhere = urlParams.get('${tableid}initialWhere');
 tableId + ":" + "select" + "=" + $encodedSelect;
        
var
 
oldQueryParams
 
=
 
"" urlParams.forEach(function(value,
 
key)
 
{
  
if(!key.startsWith("${tableid}")) { oldQueryParams=appendToQueryString(oldQueryParams, key+"="+encodeURI(value)); } }); if (initialWhere != null && initialWhere
 $queryString = appendToQueryString($queryString, $selectQueryParam);
            }

            if ($where.trim())
 
{
console.debug("initial
 
where
 
is
 
NOT
 
empty");
    
} else {
  
console.debug("initial
 
where
 
is
 
empty");
  
 var 
initialWhere
$encodedCustomWhere = 
$('#${tableid} table').attr('data-projectdoc-query-where'
encodeURI($where);
   
}
    
$('#filterForm${tableid}
 
datalist').attr('id',
 
function(index,
 
id)
 
{
     var $customWhereQueryParam 
return
= 
id+
"${tableid}customWhere" + "=" + $encodedCustomWhere;

          
})
     
$("#filterSelect${tableid}").val(originalSelect); $("#filterWhere${tableid}").val(originalWhere); $('#filterForm${tableid}').submit(function(evt) { evt.preventDefault();
 var $encodedWhere = "";

            
var
 
tableId
 
=
 
"${tableid}"; var $select = $('#filterSelect${tableid}').val(); var $where = $('#filterWhere${tableid}').val(); var $queryString=""; if(oldQueryParams.trim())
 if (typeof initialWhere == 'undefined' || initialWhere == null) {
           
{
         
$queryString=appendToQueryString($queryString, oldQueryParams.substr(1));
console.debug("Check 3 : initial where is empty");
              
}
      
$queryString=appendToQueryString($queryString, "${tableid}initialWhere=" +
$encodedWhere = encodeURI(
initialWhere
$where)
)
;
               
if ($select.trim())
 } else {
    
var
 
$encodedSelect
 
= encodeURI($select);
         
var
 
$selectQueryParam
 
=
 
tableId
 
+
 
":"+"select"+"="+$encodedSelect; $queryString=appendToQueryString($queryString, $selectQueryParam); } if ($where.trim()) { var $encodedCustomWhere = encodeURI(
console.debug("Check 3 : initial where is not empty");
                    $encodedWhere = encodeURI(initialWhere + " AND " + $where);
       
var
    
$customWhereQueryParam
 
=
 
"${tableid}customWhere"+"="+$encodedCustomWhere;
   
var
}
 
$encodedWhere
 
=
 
encodeURI(initialWhere
 
+
 
"
 
AND
 
"
 
+
 
$where);
       var $whereQueryParam = tableId + ":" + "where" + "=" + $encodedWhere;
                $queryString = appendToQueryString($queryString, $whereQueryParam);
                $queryString = appendToQueryString($queryString, $customWhereQueryParam);
            }
    
$queryString
 
=
 
appendToQueryString($queryString,
 
$customWhereQueryParam
 
);
  
}
  $action = window.location.href.split('?')[0] + $queryString;
            $('#filterForm').attr('action', $action);
            console.debug($action);
            window.location.href = $action;
        });
    }
)
;

</script>
HTML
<form id="filterForm${tableid}" action="">
  <label 
function appendToQueryString( queryString, queryParam ) { if(queryString.trim()) { queryString=queryString + "&" + queryParam; } else { queryString="?"+queryParam; } return queryString; }; var urlParams = new URLSearchParams(window.location.search); var originalSelect = urlParams.get('${tableid}:select'); var originalWhere = urlParams.get('${tableid}customWhere'); var initialWhere = urlParams.get('${tableid}initialWhere'); var oldQueryParams = "" urlParams.forEach(function(value, key) { if(!key.startsWith("${tableid}")) { oldQueryParams=appendToQueryString(oldQueryParams, key+"="+encodeURI(value)); } }); if (initialWhere != null && initialWhere.trim()) { console.debug("initial where is NOT empty"); } else { console.debug("initial where is empty"); initialWhere = $('#${tableid} table').attr('data-projectdoc-query-where'); } $('#filterForm${tableid} datalist').attr('id', function(index, id) {
for="select">select:</label>
  <input id="filterSelect${tableid}" size="50" type="text" list="selects${tableid}" name="select" autocomplete="on">
  ${datalistselects}
  <label for="where">where:</label>
  <input id="filterWhere${tableid}" size="50" type="text" list="wheres${tableid}" name="where" autocomplete="on">
  ${datalistwheres}
  <input type="submit" value="Submit">
  <input type="reset" value="Reset">
</form>
<script>
AJS.toInit(
    function() {
	 const logToConsole = false;
	  if (logToConsole) AJS.log("[copy-page-id] Registering action 'Copy Page ID to Clipboard' to keydown 'p'...");

        console.debug('${datalistselects}')
        function appendToQueryString(queryString, queryParam) {
            if (queryString.trim()) {
                queryString = queryString + "&" + queryParam;
            } else {
                queryString = "?" + queryParam;
            }
            return 
id+"${tableid}"
queryString;
        }
)
;

        var urlParams = new 
$("#filterSelect${tableid}").val(originalSelect
URLSearchParams(window.location.search);
        var 
$("#filterWhere$
originalSelect = urlParams.get('${tableid}
").val(originalWhere); $('#filterForm${tableid}').submit(function(evt) { evt.preventDefault();
:select');
        var originalWhere = urlParams.get('${tableid}customWhere');
        var 
tableId
initialWhere = 
"
urlParams.get('${tableid}
"
initialWhere');
   
var
 
$select
 
= $('#filterSelect${tableid}').val(); var $where = $('#filterWhere${tableid}').val(); var $queryString=""; if(oldQueryParams.trim())
   console.debug("From Queryparam : initial where is: " + initialWhere);

        var oldQueryParams = ""
        urlParams.forEach(function(value, key) {
      
{
      
if 
$queryString=appendToQueryString($queryString, oldQueryParams.substr(1));
(!key.startsWith("${tableid}")) {
           
}
     oldQueryParams 
$queryString
= appendToQueryString(
$queryString
oldQueryParams, 
"${tableid}initialWhere
key + "=" + encodeURI(
initialWhere
value));
           
if ($select.trim()) {
 }
     
var
 
$encodedSelect
 
=
 
encodeURI($select
});

       
var $selectQueryParam
 if (typeof initialWhere == 
tableId + ":"+"select"+"="+$encodedSelect;
'undefined' || initialWhere == null) {
       
$queryString=appendToQueryString($queryString,
 
$selectQueryParam);
 
}
  
if
 
($where
console.
trim()) { var $encodedCustomWhere = encodeURI($where
debug("Check 1 a: initial where is empty");
       
var
 
$customWhereQueryParam
 
=
 
"${tableid}customWhere"+"="+$encodedCustomWhere;
  if 
var
(initialWhere 
$encodedWhere
== 
encodeURI(initialWhere + " AND " + $where);
originalWhere) {
           
var
 
$whereQueryParam
 
=
 
tableId
 
+ ":"+"where"+"="+$encodedWhere; $queryString = appendToQueryString($queryString, $whereQueryParam
 console.debug("In Check 1 b : initial where is: " + initialWhere);
       
$queryString
 
=
 
appendToQueryString($queryString,
 
$customWhereQueryParam
 
);
  
}
  
$action
 
= window.location.href.split('?')[0] + $queryString; $('#filterForm').attr('action', $action); console.debug($action);
console.debug("In Check 1 b : original where is: " + originalWhere);
          
window.location.href=$action; }); }); </script>
Section
titleHTML Code
Code Block


Section
titleTranscluded By
Display Table
render-no-hits-as-blanktrue
selectName, Short Description, Doctype
sort-bySort Key, Name
where$<TranscludedDocumentTitles>=[${Space Key}.${Title}]

...