Skip to content

Instantly share code, notes, and snippets.

@jdunkerley
Created December 3, 2017 20:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jdunkerley/39b0d95b454e9544814607718f93a48b to your computer and use it in GitHub Desktop.
Save jdunkerley/39b0d95b454e9544814607718f93a48b to your computer and use it in GitHub Desktop.
GroupedRecordIDGUI
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>GroupedRecordID</title>
<script type="text/javascript">
document.write(`<link rel="import" href="${window.Alteryx.LibDir}2/lib/includes.html">`)
</script>
</head>
<body>
<form>
<fieldset>
<label for="dataFieldName">Field Name</label>
<ayx data-ui-props='{type:"TextBox", widgetId:"dataFieldName"}'></ayx>
<ayx data-ui-props='{type:"CheckBox", widgetId:"dataLastColumn", label:"Add Field As Last Column"}'></ayx>
<label for="dataFieldType">Field Type</label>
<ayx data-ui-props='{type:"DropDown", widgetId:"dataFieldType"}'></ayx>
<label for="dataStringSize">String Size</label>
<ayx data-ui-props='{type:"NumericSpinner", widgetId:"dataStringSize"}'></ayx>
<label for="dataStartingValue">Initial Value</label>
<ayx data-ui-props='{type:"NumericSpinner", widgetId:"dataStartingValue"}'></ayx>
<label for="dataGroupingFields">Grouping Fields</label>
<ayx data-ui-props='{type:"ListBox", widgetId:"dataGroupingFields", searchable: false}'></ayx>
<label for="dataSortingFields">Sorting Fields</label>
<ayx data-ui-props='{type:"ListBox", widgetId:"dataSortingFields", searchable: false}'></ayx>
<label for="dataDescendingFields">Descending Fields</label>
<ayx data-ui-props='{type:"ListBox", widgetId:"dataDescendingFields", searchable: false}'></ayx>
</fieldset>
</form>
<script type="text/javascript" src="GroupedRecordIDGUI.js"></script>
</body>
</html>
/**
* Specify actions that will take place before the tool's configuration is loaded into the manager.
* @param manager The data manager.
* @param AlteryxDataItems The data items in use on this page.
* @param json Configuration
*/
Alteryx.Gui.BeforeLoad = (manager, AlteryxDataItems, json) => {
const dataFieldNameItem = new AlteryxDataItems.SimpleString('FieldName', {})
dataFieldNameItem.setValue('RecordID')
manager.addDataItem(dataFieldNameItem)
manager.bindDataItemToWidget(dataFieldNameItem, 'dataFieldName')
const dataLastColumnItem = new AlteryxDataItems.SimpleBool('LastColumn', {})
dataLastColumnItem.setValue(true)
manager.addDataItem(dataLastColumnItem)
manager.bindDataItemToWidget(dataLastColumnItem, 'dataLastColumn')
const dataFieldTypeItem = new AlteryxDataItems.StringSelector('FieldType', {
optionList: [
'Byte',
'Int16',
'Int32',
'Int64',
'String',
'WString',
'V_String',
'V_WString'
].map(a => { return {label: a, value: a} })
})
dataFieldTypeItem.setValue('Int64')
manager.addDataItem(dataFieldTypeItem)
manager.bindDataItemToWidget(dataFieldTypeItem, 'dataFieldType')
const dataStringSize = new AlteryxDataItems.ConstrainedInt('StringSize', {min: 1, max: 1073741823})
dataStringSize.setValue(5)
manager.addDataItem(dataStringSize)
manager.bindDataItemToWidget(dataStringSize, 'dataStringSize')
const dataStartingValue = new AlteryxDataItems.ConstrainedInt('StartingValue', {})
dataStartingValue.setValue(1)
manager.addDataItem(dataStartingValue)
manager.bindDataItemToWidget(dataStartingValue, 'dataStartingValue')
const dataGroupingFields = new AlteryxDataItems.FieldSelectorMulti('GroupingFields', {manager: manager, connectionIndex: 0, anchorIndex: 0, delimiter: '","'})
setJsonSerialiser(dataGroupingFields)
manager.addDataItem(dataGroupingFields)
manager.bindDataItemToWidget(dataGroupingFields, 'dataGroupingFields')
const dataSortingFields = new AlteryxDataItems.FieldSelectorMulti('SortingFields', {manager: manager, connectionIndex: 0, anchorIndex: 0, delimiter: '","'})
setJsonSerialiser(dataSortingFields)
manager.addDataItem(dataSortingFields)
manager.bindDataItemToWidget(dataSortingFields, 'dataSortingFields')
const dataDescendingFields = new AlteryxDataItems.FieldSelectorMulti('DescendingFields', {manager: manager, connectionIndex: 0, anchorIndex: 0, delimiter: '","'})
setJsonSerialiser(dataDescendingFields)
manager.addDataItem(dataDescendingFields)
manager.bindDataItemToWidget(dataDescendingFields, 'dataDescendingFields')
}
function setJsonSerialiser (item) {
const innerFn = item.fromJson
item.fromJson = (e, t, n) => (typeof n === 'string' && innerFn(e, t, n.replace(/(^")|("$)/g, '')))
item.toJson = (e, t) => e({ DataItem: `"${item.getValue().join(item.getDelimiter())}"`, DataName: item.getDataName() })
}
/**
* Specify actions that will take place before the tool's configuration is loaded into the manager.
* @param manager The data manager.
* @param AlteryxDataItems The data items in use on this page.
*/
Alteryx.Gui.AfterLoad = (manager, AlteryxDataItems) => {
}
/**
* Reformat the JSON to the style we need
* @param json Configuration
*/
Alteryx.Gui.BeforeGetConfiguration = (json) => {
return json
}
/**
* Set the tool's default annotation on the canvas.
* @param manager The data manager.
* @returns {string}
*/
Alteryx.Gui.Annotation = (manager) => ''
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment