FilterHandler lets you filter columns from files and databases.
Here is a sample configuration to filter data columns from a CSV file:
url:
flags:
pattern: /$YAMLURL/flags
handler: FilterHandler
kwargs:
url: $YAMLPATH/flags.csv
Name
columnName
and continent
columnsName
without filtering Name=Andorra
and Continent
by filtering Name=Andorra
Name
sorted by Name
column in ascending orderName
sorted by c8
column in descending orderCredits to @nikhil.kabbin for the contribution.
FormHandler now supports applying modify
on multiple datasets.
If you have multiple datasets,
modify:
can modify all of these datasets – and join them if required.
This example has two modify:
–
the first for a single query, the second applies on both datasets.
url:
formhandler-modify-multi:
pattern: /$YAMLURL/modify-multi
handler: FormHandler
kwargs:
symbols:
url: sqlite:///$YAMLPATH/../datahandler/database.sqlite3
table: flags
query: "SELECT Continent, COUNT(DISTINCT Symbols) AS dsymbols FROM flags GROUP BY Continent"
# Modify ONLY this query. Adds rank column to symbols dataset
modify: data.assign(rank=data['dsymbols'].rank())
colors:
url: $YAMLPATH/flags.csv
function: data.groupby('Continent').sum().reset_index()
# Modify BOTH datasets. data is a dict of DataFrames.
modify: data['colors'].merge(data['symbols'], on='Continent')
modify:
can be any expression that uses data
, which is a dict of DataFrames
{'colors': DataFrame(...), 'symbols': DataFrame(...)
. It can return a single
DataFrame or any dict of DataFrames.
Dropdown component that integrates well with g1.urlfilter
$.dropdown
requires bootstrap-select
library and its dependencies.
Examples:
<div class="container1"></div>
<script>
$(".container1").dropdown({ data: ["Red", "Green", "Blue"] });
</script>
The above code snippet renders a dropdown with 3 options Red, Green, Blue using bootstrap-select library.
<div class="container2"></div>
<script>
$(".container2").dropdown({ key: "colors", data: ["Red", "Green", "Blue"] });
</script>
key
enables urlfilter
for dropdown
. If Red
option is selected from dropdown,
URL is appended with ?colors=Red
By default, the selected dropdown values are appended to URL query string.
To append to the hash instead, use target: '#'
.
<div class="container3"></div>
<script>
$(".container3").dropdown({
key: "colors",
data: ["Red", "Green", "Blue"],
target: "#",
});
</script>
To change URL without reloading the page, use target: 'pushState'
.
To use bootstrap-select
options, use options:
<div class="container5"></div>
<script>
$(".container5").dropdown({
data: ["Red", "Green", "Blue"],
key: "colors",
options: {
style: "btn-primary",
liveSearch: true,
},
});
</script>
load
is triggered after dropdown is renderedchange
is triggered whenever dropdown value is changed<div class="container5"></div>
<script>
$(".container5")
.on("load", function () {
// Your code here
})
.on("change", function () {
// Your code here
})
.dropdown({
key: "colors",
data: ["Red", "Green", "Blue"],
});
</script>
Credits to @pragnya.reddy for the contribution.
DBAuth now allows you to encrypt the password on client-side (browser) before submitting the credentials. @sundeep.mallu
Smart Alerts now has a video tutorial.
Following examples are updated:
Mapviewer tutorial is updated with
g1.mapviewer
usage with examples
of controls, colors, click events, tooltip.
Video tutorial on Mapviewer usage is added.
Brief overview of Map tools (Mapshaper, QGIS) is provided in the tutorial.
Logviewer now runs in a separate thread in the background by default, allowing gramex to start faster. Metric calculations and underlying queries are updated. Logviewer Usage options and example(s) are updated.
Speech recognition demo now has a speech player (talks insights to you!) using speech synthesis API. Contributed by @dhiraj.eadara
g1.js
is upgraded to 0.9.0
, which comes with
gramex.cache.query
used to cache result every time same query is called with state=None
,
thereby, leaking memory. This is now plugged. #444gramex init
fails if git
was not configured. Error reporting is now improved.
#469To upgrade Gramex, run:
pip install --verbose gramex==1.40
To upgrade apps dependencies, run:
gramex setup --all
This downloads Chromium and other front-end dependencies. That may take time.