cytoscape-angular
Version:
Angular 12+ components for cytoscape charting.
93 lines • 12.8 kB
JavaScript
export class FormInfo {
constructor(title, fieldsets, showSubmitButton = false, submitText = 'Submit', disableSubmitOnFormInvalid = false,
/* if the model has a property that isn't in a fieldset, but it in an fieldset created by the form */
otherFieldsetTitle = null) {
this.title = title;
this.fieldsets = fieldsets;
this.showSubmitButton = showSubmitButton;
this.submitText = submitText;
this.disableSubmitOnFormInvalid = disableSubmitOnFormInvalid;
this.otherFieldsetTitle = otherFieldsetTitle;
}
}
export class FieldsetInfo {
constructor(legend, fieldInfos, displayOnlyIfProperties) {
this.legend = legend;
this.fieldInfos = fieldInfos;
this.displayOnlyIfProperties = displayOnlyIfProperties;
}
showFieldsetForModel(model) {
if (!this.displayOnlyIfProperties) {
return true;
}
for (const fieldInfo of this.fieldInfos) {
for (const modelProperty of Object.keys(model)) {
if (fieldInfo.modelProperty === modelProperty) {
return true;
}
}
}
return false;
}
}
export class FieldInfo {
constructor(/* label to show the user next to the field, can be a function for i18n/dynamic labels */ label,
/* The form has a model, this is the name of the property on the form's model object that this field */
modelProperty,
/* computed from the model property type by default */
type,
/* The tooltip to display on hover */
tooltip,
/* The list of Angular Form Validators for the control or a function that returns such an array */
validators,
/* disable the field if it's not valid */
disableWhenInvalid = false,
/* If true and model[modelProperty] is undefined, don't create a field.*/
hideWhenNoModelProperty = true,
/* Input only - by default the label is used as a placeholder and floats (how to downcast in a template?) */
placeholder,
/* Input only - same as HTML input (how to downcast in a template?) */
inputType = 'text',
/* Input only - same as HTML input (how to downcast in a template?) */
inputSize = 8,
/* Select only either an array of object or the name of a model property or function that is/returns an array of objects */
options,
/* In an options object, what field to display to the user (or function that returns a string
given the option object and the model) */
optionArrayLabelField,
/* In an options object, what field to return for the value of the option
(or function that returns a string given the option object and the model) */
optionArrayValueField) {
this.label = label;
this.modelProperty = modelProperty;
this.type = type;
this.tooltip = tooltip;
this.validators = validators;
this.disableWhenInvalid = disableWhenInvalid;
this.hideWhenNoModelProperty = hideWhenNoModelProperty;
this.placeholder = placeholder;
this.inputType = inputType;
this.inputSize = inputSize;
this.options = options;
this.optionArrayLabelField = optionArrayLabelField;
this.optionArrayValueField = optionArrayValueField;
this.fieldTypes = {};
}
fieldType(model) {
const cached = this.fieldTypes[this.modelProperty];
if (cached) {
return cached;
}
else {
const fieldValueType = typeof model[this.modelProperty];
const result = this.type ? this.type : (this.options ? 'options' : fieldValueType);
this.fieldTypes[this.modelProperty] = result;
return result;
}
}
setValue(newValue, model, modelChange) {
model[this.modelProperty] = newValue;
modelChange.emit({ property: this.modelProperty, value: newValue });
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3l0b3NjYXBlLWFuZ3VsYXIvc3JjL2xpYi9mbHVpZC1mb3JtL2Zvcm0taW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sUUFBUTtJQUNuQixZQUFtQixLQUFhLEVBQ2IsU0FBeUIsRUFDekIsbUJBQW1CLEtBQUssRUFDeEIsYUFBYSxRQUFRLEVBQ3JCLDZCQUE2QixLQUFLO0lBQ3pDLHFHQUFxRztJQUM5RixxQkFBcUIsSUFBSTtRQU56QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBZ0I7UUFDekIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDckIsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUFRO1FBRWxDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBTztJQUM1QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUFtQixNQUFjLEVBQ2QsVUFBdUIsRUFDdkIsdUJBQWtDO1FBRmxDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxlQUFVLEdBQVYsVUFBVSxDQUFhO1FBQ3ZCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBVztJQUNyRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFDRCxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdkMsS0FBSyxNQUFNLGFBQWEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLFNBQVMsQ0FBQyxhQUFhLEtBQUssYUFBYSxFQUFFO29CQUM3QyxPQUFPLElBQUksQ0FBQTtpQkFDWjthQUNGO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxTQUFTO0lBS3BCLFlBQVkseUZBQXlGLENBQ2xGLEtBQXlCO0lBQ2hDLHVHQUF1RztJQUNoRyxhQUFzQjtJQUM3QixzREFBc0Q7SUFDL0MsSUFBZ0I7SUFDdkIscUNBQXFDO0lBQzlCLE9BQWdCO0lBQ3ZCLGtHQUFrRztJQUMzRixVQUFxQztJQUM1Qyx5Q0FBeUM7SUFDbEMscUJBQXFCLEtBQUs7SUFDakMseUVBQXlFO0lBQ2xFLDBCQUEwQixJQUFJO0lBQ3JDLDRHQUE0RztJQUNyRyxXQUFvQjtJQUMzQixzRUFBc0U7SUFDL0QsWUFBb0IsTUFBTTtJQUNqQyxzRUFBc0U7SUFDL0QsWUFBb0IsQ0FBQztJQUM1QiwySEFBMkg7SUFDcEgsT0FBMkI7SUFDbEM7NkNBQ3lDO0lBQ2xDLHFCQUF5QztJQUNoRDtnRkFDNEU7SUFDckUscUJBQXlDO1FBMUJ6QyxVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQUV6QixrQkFBYSxHQUFiLGFBQWEsQ0FBUztRQUV0QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBRWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFaEIsZUFBVSxHQUFWLFVBQVUsQ0FBMkI7UUFFckMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBRTFCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBTztRQUU5QixnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUVwQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUUxQixjQUFTLEdBQVQsU0FBUyxDQUFZO1FBRXJCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBRzNCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBb0I7UUFHekMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFvQjtRQS9CcEQsZUFBVSxHQUFHLEVBQUUsQ0FBQTtJQWlDdkIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ2xELElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUE7U0FDZDthQUFNO1lBQ0wsTUFBTSxjQUFjLEdBQUcsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUNsRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUE7WUFDNUMsT0FBTyxNQUFNLENBQUE7U0FDZDtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsUUFBYSxFQUFFLEtBQWEsRUFBRSxXQUE4QjtRQUNuRSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQTtRQUNwQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7SUFDbkUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6YmFuLXR5cGVzICovXG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuZXhwb3J0IHR5cGUgRmllbGRUeXBlID0gJ1NoYXBlUG9seWdvblBvaW50cycgfCAncGVyY2VudCcgfCAnTm9kZVNoYXBlJ3wgJ0xpbmVTdHlsZScgfCAnVGV4dFRyYW5zZm9ybWF0aW9uJyB8ICdGb250U3R5bGUnIHwgJ0ZvbnRXZWlnaHQnIHwgJ29wdGlvbnMnIHwgJ0NvbG91cicgfCAndW5kZWZpbmVkJyB8ICdvYmplY3QnIHwgJ2Jvb2xlYW4nIHwgJ251bWJlcicgfCAnc3RyaW5nJyB8ICdmdW5jdGlvbicgfCAnc3ltYm9sJyB8ICdiaWdpbnQnXG5cbmV4cG9ydCBjbGFzcyBGb3JtSW5mbyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0aXRsZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwdWJsaWMgZmllbGRzZXRzOiBGaWVsZHNldEluZm9bXSxcbiAgICAgICAgICAgICAgcHVibGljIHNob3dTdWJtaXRCdXR0b24gPSBmYWxzZSxcbiAgICAgICAgICAgICAgcHVibGljIHN1Ym1pdFRleHQgPSAnU3VibWl0JyxcbiAgICAgICAgICAgICAgcHVibGljIGRpc2FibGVTdWJtaXRPbkZvcm1JbnZhbGlkID0gZmFsc2UsXG4gICAgICAgICAgICAgIC8qIGlmIHRoZSBtb2RlbCBoYXMgYSBwcm9wZXJ0eSB0aGF0IGlzbid0IGluIGEgZmllbGRzZXQsIGJ1dCBpdCBpbiBhbiBmaWVsZHNldCBjcmVhdGVkIGJ5IHRoZSBmb3JtICovXG4gICAgICAgICAgICAgIHB1YmxpYyBvdGhlckZpZWxkc2V0VGl0bGUgPSBudWxsKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkc2V0SW5mbyB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsZWdlbmQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgcHVibGljIGZpZWxkSW5mb3M6IEZpZWxkSW5mb1tdLFxuICAgICAgICAgICAgICBwdWJsaWMgZGlzcGxheU9ubHlJZlByb3BlcnRpZXM/OiBzdHJpbmdbXSkge1xuICB9XG5cbiAgc2hvd0ZpZWxkc2V0Rm9yTW9kZWwobW9kZWw6IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kaXNwbGF5T25seUlmUHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgZm9yIChjb25zdCBmaWVsZEluZm8gb2YgdGhpcy5maWVsZEluZm9zKSB7XG4gICAgICBmb3IgKGNvbnN0IG1vZGVsUHJvcGVydHkgb2YgT2JqZWN0LmtleXMobW9kZWwpKSB7XG4gICAgICAgIGlmIChmaWVsZEluZm8ubW9kZWxQcm9wZXJ0eSA9PT0gbW9kZWxQcm9wZXJ0eSkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZpZWxkSW5mbyB7XG4gIHByaXZhdGUgZmllbGRUeXBlcyA9IHt9XG4gIHVwZGF0ZU9uOiAnY2hhbmdlJyB8ICdibHVyJyB8ICdzdWJtaXQnIC8vIHNhbWUgYXMgQWJzdHJhY3RDb250cm9sT3B0aW9uc1xuICBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSB8IEZ1bmN0aW9uXG5cbiAgY29uc3RydWN0b3IoLyogbGFiZWwgdG8gc2hvdyB0aGUgdXNlciBuZXh0IHRvIHRoZSBmaWVsZCwgY2FuIGJlIGEgZnVuY3Rpb24gZm9yIGkxOG4vZHluYW1pYyBsYWJlbHMgKi9cbiAgICAgICAgICAgICAgcHVibGljIGxhYmVsPzogc3RyaW5nIHwgRnVuY3Rpb24sXG4gICAgICAgICAgICAgIC8qIFRoZSBmb3JtIGhhcyBhIG1vZGVsLCB0aGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBvbiB0aGUgZm9ybSdzIG1vZGVsIG9iamVjdCB0aGF0IHRoaXMgZmllbGQgKi9cbiAgICAgICAgICAgICAgcHVibGljIG1vZGVsUHJvcGVydHk/OiBzdHJpbmcsXG4gICAgICAgICAgICAgIC8qIGNvbXB1dGVkIGZyb20gdGhlIG1vZGVsIHByb3BlcnR5IHR5cGUgYnkgZGVmYXVsdCAqL1xuICAgICAgICAgICAgICBwdWJsaWMgdHlwZT86IEZpZWxkVHlwZSxcbiAgICAgICAgICAgICAgLyogVGhlIHRvb2x0aXAgdG8gZGlzcGxheSBvbiBob3ZlciAqL1xuICAgICAgICAgICAgICBwdWJsaWMgdG9vbHRpcD86IHN0cmluZyxcbiAgICAgICAgICAgICAgLyogVGhlIGxpc3Qgb2YgQW5ndWxhciBGb3JtIFZhbGlkYXRvcnMgZm9yIHRoZSBjb250cm9sIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHN1Y2ggYW4gYXJyYXkgKi9cbiAgICAgICAgICAgICAgcHVibGljIHZhbGlkYXRvcnM/OiBWYWxpZGF0b3JGbltdIHwgRnVuY3Rpb24sXG4gICAgICAgICAgICAgIC8qIGRpc2FibGUgdGhlIGZpZWxkIGlmIGl0J3Mgbm90IHZhbGlkICovXG4gICAgICAgICAgICAgIHB1YmxpYyBkaXNhYmxlV2hlbkludmFsaWQgPSBmYWxzZSxcbiAgICAgICAgICAgICAgLyogSWYgdHJ1ZSBhbmQgbW9kZWxbbW9kZWxQcm9wZXJ0eV0gaXMgdW5kZWZpbmVkLCBkb24ndCBjcmVhdGUgYSBmaWVsZC4qL1xuICAgICAgICAgICAgICBwdWJsaWMgaGlkZVdoZW5Ob01vZGVsUHJvcGVydHkgPSB0cnVlLFxuICAgICAgICAgICAgICAvKiBJbnB1dCBvbmx5IC0gYnkgZGVmYXVsdCB0aGUgbGFiZWwgaXMgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGFuZCBmbG9hdHMgKGhvdyB0byBkb3duY2FzdCBpbiBhIHRlbXBsYXRlPykgKi9cbiAgICAgICAgICAgICAgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nLFxuICAgICAgICAgICAgICAvKiBJbnB1dCBvbmx5IC0gc2FtZSBhcyBIVE1MIGlucHV0IChob3cgdG8gZG93bmNhc3QgaW4gYSB0ZW1wbGF0ZT8pICovXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnB1dFR5cGU6IHN0cmluZyA9ICd0ZXh0JyxcbiAgICAgICAgICAgICAgLyogSW5wdXQgb25seSAtIHNhbWUgYXMgSFRNTCBpbnB1dCAoaG93IHRvIGRvd25jYXN0IGluIGEgdGVtcGxhdGU/KSAqL1xuICAgICAgICAgICAgICBwdWJsaWMgaW5wdXRTaXplOiBudW1iZXIgPSA4LFxuICAgICAgICAgICAgICAvKiBTZWxlY3Qgb25seSBlaXRoZXIgYW4gYXJyYXkgb2Ygb2JqZWN0IG9yIHRoZSBuYW1lIG9mIGEgbW9kZWwgcHJvcGVydHkgb3IgZnVuY3Rpb24gdGhhdCBpcy9yZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHMgKi9cbiAgICAgICAgICAgICAgcHVibGljIG9wdGlvbnM/OiBvYmplY3RbXSB8IHN0cmluZyxcbiAgICAgICAgICAgICAgLyogSW4gYW4gb3B0aW9ucyBvYmplY3QsIHdoYXQgZmllbGQgdG8gZGlzcGxheSB0byB0aGUgdXNlciAob3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgc3RyaW5nXG4gICAgICAgICAgICAgIGdpdmVuIHRoZSBvcHRpb24gb2JqZWN0IGFuZCB0aGUgbW9kZWwpICovXG4gICAgICAgICAgICAgIHB1YmxpYyBvcHRpb25BcnJheUxhYmVsRmllbGQ/OiBzdHJpbmcgfCBGdW5jdGlvbixcbiAgICAgICAgICAgICAgLyogSW4gYW4gb3B0aW9ucyBvYmplY3QsIHdoYXQgZmllbGQgdG8gcmV0dXJuIGZvciB0aGUgdmFsdWUgb2YgdGhlIG9wdGlvblxuICAgICAgICAgICAgICAob3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgc3RyaW5nIGdpdmVuIHRoZSBvcHRpb24gb2JqZWN0IGFuZCB0aGUgbW9kZWwpICovXG4gICAgICAgICAgICAgIHB1YmxpYyBvcHRpb25BcnJheVZhbHVlRmllbGQ/OiBzdHJpbmcgfCBGdW5jdGlvblxuICApIHtcbiAgfVxuXG4gIGZpZWxkVHlwZShtb2RlbDogb2JqZWN0KTogRmllbGRUeXBlIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmZpZWxkVHlwZXNbdGhpcy5tb2RlbFByb3BlcnR5XVxuICAgIGlmIChjYWNoZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmllbGRWYWx1ZVR5cGUgPSB0eXBlb2YgbW9kZWxbdGhpcy5tb2RlbFByb3BlcnR5XVxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy50eXBlID8gdGhpcy50eXBlIDogKHRoaXMub3B0aW9ucyA/ICdvcHRpb25zJyA6IGZpZWxkVmFsdWVUeXBlKVxuICAgICAgdGhpcy5maWVsZFR5cGVzW3RoaXMubW9kZWxQcm9wZXJ0eV0gPSByZXN1bHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gIH1cblxuICBzZXRWYWx1ZShuZXdWYWx1ZTogYW55LCBtb2RlbDogb2JqZWN0LCBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4pIHtcbiAgICBtb2RlbFt0aGlzLm1vZGVsUHJvcGVydHldID0gbmV3VmFsdWVcbiAgICBtb2RlbENoYW5nZS5lbWl0KHtwcm9wZXJ0eTogdGhpcy5tb2RlbFByb3BlcnR5LCB2YWx1ZTogbmV3VmFsdWV9KVxuICB9XG59XG5cblxuIl19