UNPKG

@tangential/configurable-input-widgets

Version:

Input Widgets with persistable, dynamic configuration.

51 lines 6.1 kB
import { ObjectUtil } from '@tangential/core'; import { ConfigurableInputType } from '../configurable-input-type'; import { TextIval } from './text-ival'; /** * == Reporting * Text types can represent things like: * * Quick notes, such as idea, or a Capture for 'I met a new person', and the persons name is the value. * * Mood / Feeling * * Name of a food eaten * * Name of a place visited. * * Name of a medication taken. * * * === Charts/Graphs * A text value is hard to plot in isolation. But consider the case of 'met a person'. In this case we could * plot time on the horizontal axis and number of people met per range. This would become a stacked bar chart? * * For something like mood, let's consider two cases: * 1) The capture is 'When' and 'Mood'. In this case we can have an arbitrary number of points in a day, * and the user is probably going to want to correlate this value to time of day. * - Go with a scatter plot, with days of the week on the X and hour of day on the Y, with the field as the point * label. * 2) The capture is 'When', 'Feeling<text>', 'Weight<numeric>'. * */ const Model = { maxLength: 50, minLength: 0, defaultValue: null }; export class TextType extends ConfigurableInputType { constructor(config) { super(config || {}); } getInputTypeKey() { return TextType.TYPE_NAME; } isNumeric() { return false; } createValue(cfg, key) { cfg = cfg || {}; return new TextIval({ value: cfg.value || this.defaultValue }, key || this.$key); } } TextType.$model = ObjectUtil.assignDeep({}, ConfigurableInputType.$model, Model); TextType.TYPE_NAME = 'Text'; ConfigurableInputType.register(TextType); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ2VudGlhbC9jb25maWd1cmFibGUtaW5wdXQtd2lkZ2V0cy9zcmMvbGliL2RhdGEtdHlwZS90ZXh0L3RleHQtdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksVUFBVSxFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUE0QixNQUFNLDRCQUE0QixDQUFBO0FBQzNGLE9BQU8sRUFBQyxRQUFRLEVBQWEsTUFBTSxhQUFhLENBQUE7QUFTaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUdILE1BQU0sS0FBSyxHQUFlO0lBQ3hCLFNBQVMsRUFBSyxFQUFFO0lBQ2hCLFNBQVMsRUFBSyxDQUFDO0lBQ2YsWUFBWSxFQUFFLElBQUk7Q0FDbkIsQ0FBQTtBQUVELE1BQU0sT0FBTyxRQUFTLFNBQVEscUJBQXFCO0lBUWpELFlBQVksTUFBbUI7UUFDN0IsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQTtJQUMzQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFnQixFQUFFLEdBQVk7UUFDeEMsR0FBRyxHQUFHLEdBQUcsSUFBUyxFQUFFLENBQUE7UUFDcEIsT0FBTyxJQUFJLFFBQVEsQ0FBQztZQUNsQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWTtTQUN0QyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7QUF4QmUsZUFBTSxHQUFlLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUVuRixrQkFBUyxHQUFHLE1BQU0sQ0FBQTtBQTBCcEMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtKc29uaWZpZWQsIE9iamVjdFV0aWx9IGZyb20gJ0B0YW5nZW50aWFsL2NvcmUnXG5pbXBvcnQge0NvbmZpZ3VyYWJsZUlucHV0VHlwZSwgQ29uZmlndXJhYmxlSW5wdXRUeXBlSnNvbn0gZnJvbSAnLi4vY29uZmlndXJhYmxlLWlucHV0LXR5cGUnXG5pbXBvcnQge1RleHRJdmFsLCBUZXh0SXZhbElGfSBmcm9tICcuL3RleHQtaXZhbCdcblxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRUeXBlSUYgZXh0ZW5kcyBDb25maWd1cmFibGVJbnB1dFR5cGVKc29uIHtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyXG4gIG1pbkxlbmd0aD86IG51bWJlclxuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiA9PSBSZXBvcnRpbmdcbiAqIFRleHQgdHlwZXMgY2FuIHJlcHJlc2VudCB0aGluZ3MgbGlrZTpcbiAqICAqIFF1aWNrIG5vdGVzLCBzdWNoIGFzIGlkZWEsIG9yIGEgQ2FwdHVyZSBmb3IgJ0kgbWV0IGEgbmV3IHBlcnNvbicsIGFuZCB0aGUgcGVyc29ucyBuYW1lIGlzIHRoZSB2YWx1ZS5cbiAqICAqIE1vb2QgLyBGZWVsaW5nXG4gKiAgKiBOYW1lIG9mIGEgZm9vZCBlYXRlblxuICogICogTmFtZSBvZiBhIHBsYWNlIHZpc2l0ZWQuXG4gKiAgKiBOYW1lIG9mIGEgbWVkaWNhdGlvbiB0YWtlbi5cbiAqXG4gKlxuICogPT09IENoYXJ0cy9HcmFwaHNcbiAqIEEgdGV4dCB2YWx1ZSBpcyBoYXJkIHRvIHBsb3QgaW4gaXNvbGF0aW9uLiBCdXQgY29uc2lkZXIgdGhlIGNhc2Ugb2YgJ21ldCBhIHBlcnNvbicuIEluIHRoaXMgY2FzZSB3ZSBjb3VsZFxuICogcGxvdCB0aW1lIG9uIHRoZSBob3Jpem9udGFsIGF4aXMgYW5kIG51bWJlciBvZiBwZW9wbGUgbWV0IHBlciByYW5nZS4gVGhpcyB3b3VsZCBiZWNvbWUgYSBzdGFja2VkIGJhciBjaGFydD9cbiAqXG4gKiBGb3Igc29tZXRoaW5nIGxpa2UgbW9vZCwgbGV0J3MgY29uc2lkZXIgdHdvIGNhc2VzOlxuICogICAxKSBUaGUgY2FwdHVyZSBpcyAnV2hlbicgYW5kICdNb29kJy4gSW4gdGhpcyBjYXNlIHdlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcG9pbnRzIGluIGEgZGF5LFxuICogICBhbmQgdGhlIHVzZXIgaXMgcHJvYmFibHkgZ29pbmcgdG8gd2FudCB0byBjb3JyZWxhdGUgdGhpcyB2YWx1ZSB0byB0aW1lIG9mIGRheS5cbiAqICAgLSBHbyB3aXRoIGEgc2NhdHRlciBwbG90LCB3aXRoIGRheXMgb2YgdGhlIHdlZWsgb24gdGhlIFggYW5kIGhvdXIgb2YgZGF5IG9uIHRoZSBZLCB3aXRoIHRoZSBmaWVsZCBhcyB0aGUgcG9pbnRcbiAqICAgICBsYWJlbC5cbiAqICAgMikgVGhlIGNhcHR1cmUgaXMgJ1doZW4nLCAnRmVlbGluZzx0ZXh0PicsICdXZWlnaHQ8bnVtZXJpYz4nLlxuICpcbiAqL1xuXG5cbmNvbnN0IE1vZGVsOiBUZXh0VHlwZUlGID0ge1xuICBtYXhMZW5ndGg6ICAgIDUwLFxuICBtaW5MZW5ndGg6ICAgIDAsXG4gIGRlZmF1bHRWYWx1ZTogbnVsbFxufVxuXG5leHBvcnQgY2xhc3MgVGV4dFR5cGUgZXh0ZW5kcyBDb25maWd1cmFibGVJbnB1dFR5cGUgaW1wbGVtZW50cyBKc29uaWZpZWQ8VGV4dFR5cGUsIFRleHRUeXBlSUY+LCBUZXh0VHlwZUlGIHtcbiAgc3RhdGljIG92ZXJyaWRlICRtb2RlbDogVGV4dFR5cGVJRiA9IE9iamVjdFV0aWwuYXNzaWduRGVlcCh7fSwgQ29uZmlndXJhYmxlSW5wdXRUeXBlLiRtb2RlbCwgTW9kZWwpXG5cbiAgc3RhdGljIG92ZXJyaWRlIFRZUEVfTkFNRSA9ICdUZXh0J1xuICBtYXhMZW5ndGg6IG51bWJlclxuICBtaW5MZW5ndGg6IG51bWJlclxuICBvdmVycmlkZSBkZWZhdWx0VmFsdWU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFRleHRUeXBlSUYpIHtcbiAgICBzdXBlcihjb25maWcgfHwge30pXG4gIH1cblxuICBnZXRJbnB1dFR5cGVLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGV4dFR5cGUuVFlQRV9OQU1FXG4gIH1cblxuICBpc051bWVyaWMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjcmVhdGVWYWx1ZShjZmc/OiBUZXh0SXZhbElGLCBrZXk/OiBzdHJpbmcpOiBhbnkge1xuICAgIGNmZyA9IGNmZyB8fCA8YW55Pnt9XG4gICAgcmV0dXJuIG5ldyBUZXh0SXZhbCh7XG4gICAgICB2YWx1ZTogY2ZnLnZhbHVlIHx8IHRoaXMuZGVmYXVsdFZhbHVlXG4gICAgfSwga2V5IHx8IHRoaXMuJGtleSk7XG4gIH1cblxufVxuXG5Db25maWd1cmFibGVJbnB1dFR5cGUucmVnaXN0ZXIoVGV4dFR5cGUpXG4iXX0=