docs-v2/assets/js/flux-group-keys.js

158 lines
5.1 KiB
JavaScript
Raw Normal View History

Flux restructure (#3141) * initial changes for flux restructure * added all aliases * added introduced date to all flux functions * marked linearBins and logarithmicBins as draft * migrated flux stdlib to new flux section, added version range to article template * fixed list-all-functions shortcode * duplicated and reordered flux spec, added page-nav shortcode, closes #1870 * added filtering functionality to list-all-functions shortcode * added function tags * Stdlib reorg (#2130) * consolidated influxdb packages * stdlib rename and reorg * reorg existing contrib docs * added keep-url to http.get example * reorg built-in directory, add function types docs * updated links * updated all related links * fixed reference links in influxdb docs * updated all internal flux links * updated flux links in influxdb * one last link update * restyle product dropdown * update flux links in influxdb 1.7 and 1.8 * fixed shortcode call * updated task options in flux options doc * Flux 'interpolate' package (#2148) * add interpolate package, closes #1649 * added missing page description to interpolate package doc * removed unnecessary space from interpolate description * updated interpolate package description * ported from() note to new flux section * New list filter javascript (#2185) * generalized list filtering for telegraf plugins and flux functions * added flux tags, updated filter list functionality * added more flux tags * added new experimental functions * updated derivative params * ported over new experimental functions * fixed bad copy-pasta * ported new notification endpoints into new flux docs * updated flux function categories * ported flux changes from master * fixed product dropdown * fixed regexp.findString example * ported flux 0.109 changes * updated array package aliases and supported version * ported new functions into flux dir * added aliases to interpolate package * ported flux v0.114 packages * added enterpise logic to url selector modal * fix minor typo * Update Flux param type convention (#2515) * fix minor typo * WIP new flux data type convention * wip more param type updates * cleaned up function type specs * ported flux 0.115.0 packages and functions * ported tickscript package * ported today function * added aliases to tickscript pkg * updated timedMovingAverage params example * updated to function with remote creds * port flux 0.118 changes over * port flux changes into flux-restructure * ported changes from flux 0.123.0 and updated flux function docs * updated contrib package summary * updated function definition of schema.tagValues * ported recent flux changes to the restructure branch * port changes from master * Flux get started (#3036) * Flux group keys demo (#2553) * interactive group key example * added js and shortcode for group key demo * updated group key demo to address PR feedback * shortened sample data set * Flux get started intro and data model (#2619) * starting flux intro content, resolved merge conflicts * WIP flux get started docs * WIP flux get started * flux get started intro and data model * Apply suggestions from code review Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * Update content/flux/v0.x/get-started/data-model.md Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * addressed PR feedback in flux get started * updated flux docs landing page * more updates to flux landing page Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Flux query basics (#2887) * WIP flux query basics * WIP flux query basics * WIP flux query basics * WIP flux query basics * wrap up content for flux query basics * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * properly close code block on flux query basics * Flux – query data (#2891) * added query data sources with flux and query influxdb * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Update content/flux/v0.x/query-data/influxdb.md * Query Prometheus with Flux (#2893) * query prometheus with flux * Apply suggestions from code review Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * Query CSV data with Flux (#2895) * query csv data with flux * address PR feedback * Update content/flux/v0.x/query-data/csv.md * update flux query data sources landing page * updated flux query data doc formats and links * Query SQL databases (#2922) * WIP query sql guides * query SQL data sources, closes #1738 * updated related link on sql.from * added link to stream of tables and updated text * updated connection string text * updated query sql landing page and children hr styles * updated sql query docs to address PR feedback * added missing colon * Query Google Cloud Bigtable with Flux (#2928) * Query Google Cloud Bigtable with Flux * updated doc structure of query bigtable doc * fixed typo in bigquery doc * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * Work with Flux data types (#2967) * scaffolding for flux types, work with strings * Apply suggestions from code review Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * removed note about interpolation vs concatenation * updated wording of variable type association * generalized type inference * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * WIP work with ints * reverted int content * updated strings doc to address PR feedback * added description to data types landing page * Apply suggestions from code review * Update content/flux/v0.x/data-types/basic/string.md * updated composite front-matter * Work with time types in Flux (#2974) * work with time types in flux, closes #2260 * updated time type doc * fixed type in time type description * fixed typo * updated work with time doc * fixed typos * updated verbiage * added related links * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * updated time type doc to address PR feedback Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Work with booleans (#2975) * work with boolean types * updated working with booleans * updated verbiage * added related links * Update content/flux/v0.x/data-types/basic/boolean.md * Work with bytes types (#2976) * work with bytes types * added toc to bytes type doc * Apply suggestions from code review Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * updated work with bytes doc * fixed typo * added related links Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * Work with durations (#2977) * work with durations in flux * added keywords to duration doc to improve searchability * minor updates to duration type doc * updated verbiage * added related links and removed toDuration from menu * Update content/flux/v0.x/data-types/basic/duration.md * Work with null types (#2978) * WIP null types * work with null types in flux * updated null types doc * Update content/flux/v0.x/data-types/basic/null.md Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Work with floats (#2979) * work with floats in flux * Apply suggestions from code review Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * Apply suggestions from code review * updated floats type doc * Update content/flux/v0.x/data-types/basic/float.md * updated verbiage * added related links * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Work with integers (#2980) * WIP work with ints * work with integers * work with integers * updated float to int behavior, added related links, closes #2973 * added toc to ints doc * Apply suggestions from code review Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Update content/flux/v0.x/data-types/basic/integer.md Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Work with uintegers (#2981) * WIP work with uints * work with uints * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * fixed minor type * Work with records (#2982) * work with records in flux * updated record type doc * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Work with arrays (#2983) * work with arrays * added array.from example, added related links * Work with dictionaries (#2984) * WIP work with dicts * work with dictionaries * added related links to dict package * added introduced version to dict package * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * added sample dict output Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Work with functions (#2985) * work with functions * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * revamped type landing pages * marked union types as draft * miscellaneous updates * Work with regular expression (#3024) * work with regular expression types, closes #2573, closes influxdata/flux#3741 * add context for quoteMeta function * Apply suggestions from code review Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * fix latest links in page descriptions * updated influxdb links * Flux syntax basics (#3033) * flux syntax basics * Apply suggestions from code review Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> * updated function description * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Apply suggestions from code review * Update content/flux/v0.x/get-started/syntax-basics.md Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> * added table param to transformations, closes #2392 (#3039) * updated flux function links * update algolia configuration to fix search, closes #1902 (#3042) * ported notes in the from function doc * Flux package options (#3083) * add now option to universe package * added missing package options, closes #2464 * addressed PR feedback * Flux transformation input/output examples (#3103) * added flux/sample shortcode * standardize flux package titles and list titles * added start and stop columns as an option with flux/sample shortcode * minor updates to stdlib * WIP add input and output examples to flux transformations * WIP removed sample data demo from universe index page * WIP function input and output examples * WIP flux input output examples * WIP flux input output examples * flux transformation input and output examples * Add Flux 'sampledata' package (#3088) * add flux sampledata package * updated sampledata example titles * Write data with Flux (#3084) * WIP write to sql data sources * write to sql data sources * added write data to influxdb with flux doc * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * made sql headings specific to each db * updated write to influxdb * added tag to influxdb to example * restructred influxdb write examples as code tabs Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> * fixed list on influxdb write with flux page * Flux move changelog (#3117) * updated flux redirects in edge.js * move flux changelog into Flux restructure * add flux redirects to edge.js * removed extra parentheses from monitor.notify examples, closes #2505 * updated flux release notes with flux 0.129.0 * moved from and to into the influxdata/influxdb package * updated notes on to and from docs * added flux card to homepage * added flux-0.130.0 to flux release notes * flux link cleanup * updated experimental message, closes #3097 (#3128) * Remove Flux stdlib and language from InfluxDB (#3133) * remove flux stdlib and lang from influxdb, update flux get-started, closes #2132 * flux link cleanup * cleaned up prometheus verbiage, updated flux data type links * function cleanup * fixed sidenav toggle button * updated group key links, added aliases for flux landing page * fixed broken links, commented out prometheus content, updated flux types names * added flux links to the left nav * fixed flux links in kapacitor docs * temporarily disable search (#3134) * merged master and updated telegraf plugins Co-authored-by: pierwill <19642016+pierwill@users.noreply.github.com> Co-authored-by: kelseiv <47797004+kelseiv@users.noreply.github.com> Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
2021-09-16 22:19:21 +00:00
var tablesElement = $("#flux-group-keys-demo #grouped-tables")
// Sample data
let data = [
[
{ _time: "2021-01-01T00:00:00Z", _measurement: "example", loc: "rm1", sensorID: "A123", _field: "temp", _value: 110.3 },
{ _time: "2021-01-01T00:01:00Z", _measurement: "example", loc: "rm1", sensorID: "A123", _field: "temp", _value: 112.5 },
{ _time: "2021-01-01T00:02:00Z", _measurement: "example", loc: "rm1", sensorID: "A123", _field: "temp", _value: 111.9 }
],
[
{ _time: "2021-01-01T00:00:00Z", _measurement: "example", loc: "rm1", sensorID: "A123", _field: "hum", _value: 73.4 },
{ _time: "2021-01-01T00:01:00Z", _measurement: "example", loc: "rm1", sensorID: "A123", _field: "hum", _value: 73.7 },
{ _time: "2021-01-01T00:02:00Z", _measurement: "example", loc: "rm1", sensorID: "A123", _field: "hum", _value: 75.1 }
],
[
{ _time: "2021-01-01T00:00:00Z", _measurement: "example", loc: "rm2", sensorID: "B456", _field: "temp", _value: 108.2 },
{ _time: "2021-01-01T00:01:00Z", _measurement: "example", loc: "rm2", sensorID: "B456", _field: "temp", _value: 108.5 },
{ _time: "2021-01-01T00:02:00Z", _measurement: "example", loc: "rm2", sensorID: "B456", _field: "temp", _value: 109.6 }
],
[
{ _time: "2021-01-01T00:00:00Z", _measurement: "example", loc: "rm2", sensorID: "B456", _field: "hum", _value: 71.8 },
{ _time: "2021-01-01T00:01:00Z", _measurement: "example", loc: "rm2", sensorID: "B456", _field: "hum", _value: 72.3 },
{ _time: "2021-01-01T00:02:00Z", _measurement: "example", loc: "rm2", sensorID: "B456", _field: "hum", _value: 72.1 }
]
]
// Default group key
let groupKey = ["_measurement", "loc", "sensorID", "_field"]
// Build a table group (group key and table) using an array of objects
function buildTable(inputData) {
// Build the group key string
function wrapString(column, value) {
var stringColumns = ["_measurement", "loc", "sensorID", "_field"]
if (stringColumns.includes(column)) {
return '"' + value + '"'
} else {
return value
}
}
var groupKeyString = "Group key = [" + (groupKey.map(column => column + ": " + wrapString(column, (inputData[0])[column])) ).join(", ") + "]";
var groupKeyLabel = document.createElement("p");
groupKeyLabel.className = "table-group-key"
groupKeyLabel.innerHTML = groupKeyString
// Extract column headers
var columns = [];
for (var i = 0; i < inputData.length; i++) {
for (var key in inputData[i]) {
if (columns.indexOf(key) === -1) {
columns.push(key);
}
}
}
// Create the table element
var table = document.createElement("table");
// Create the table header
for (let i = 0; i < columns.length; i++) {
var header = table.createTHead();
var th = document.createElement("th");
th.innerHTML = columns[i];
if (groupKey.includes(columns[i])) {
th.className = "grouped-by";
}
header.appendChild(th);
}
// Add inputData to the HTML table
for (let i = 0; i < inputData.length; i++) {
tr = table.insertRow(-1);
for (let j = 0; j < columns.length; j++) {
var td = tr.insertCell(-1);
td.innerHTML = inputData[i][columns[j]];
// Highlight the value if column is part of the group key
if (groupKey.includes(columns[j])) {
td.className = "grouped-by";
}
}
}
// Create a table group with group key and table
var tableGroup = document.createElement("div");
tableGroup.innerHTML += groupKeyLabel.outerHTML + table.outerHTML
return tableGroup
}
// Clear and rebuild all HTML tables
function buildTables(data) {
existingTables = tablesElement[0]
while (existingTables.firstChild) {
existingTables.removeChild(existingTables.firstChild);
}
for (let i = 0; i < data.length; i++) {
var table = buildTable(data[i])
tablesElement.append(table);
}
}
// Group data based on the group key and output new tables
function groupData() {
let groupedData = data.flat()
function groupBy(array, f) {
var groups = {};
array.forEach(function (o) {
var group = JSON.stringify(f(o));
groups[group] = groups[group] || [];
groups[group].push(o);
});
return Object.keys(groups).map(function (group) {
return groups[group];
})
}
groupedData = groupBy(groupedData, function (r) {
return groupKey.map(v => r[v]);
});
buildTables(groupedData);
}
// Get selected column names
var checkboxes = $("input[type=checkbox]");
function getChecked() {
var checked = [];
for (var i = 0; i < checkboxes.length; i++) {
var checkbox = checkboxes[i];
if (checkbox.checked) checked.push(checkbox.name);
}
return checked;
}
function toggleCheckbox(element) {
element.checked = !element.checked;
}
// Build example group function
function buildGroupExample() {
var columnCollection = getChecked().map(i => '<span class=\"s2\">"' + i + '"</span>').join(", ")
$("pre#group-by-example")[0].innerHTML = "data\n <span class='nx'>|></span> group(columns<span class='nx'>:</span> [" + columnCollection + "])";
}
$(".column-list label").click(function () {
toggleCheckbox($(this))
groupKey = getChecked();
groupData();
buildGroupExample();
});
// Group and render tables on load
groupData()