@tangential/configurable-input-widgets
Version:
Input Widgets with persistable, dynamic configuration.
51 lines • 6.1 kB
JavaScript
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=