Interface FormattingInfoProvider

Extension point of the FormatterFacade. An FormattingInfoProvider is requested for each column and field combination. It provides metadata about how a column should be rendered. These metadata is attached to a column and used to pick the correct formatter.

NOTE: This interface is a proof of concept please provide feedback if you use it.

A FormatterInfoProvider needs to be registered as provides: result-api.FormattingInfoProvider.

Example: CustomFormatting

 export class CustomFormatting implements FormattingInfoProvider {

resolveFormattingInfo(
fields: FieldData[],
context: {
dataSourceId: string;
isDomainValueField(fieldName: string): boolean;
hasFormatter(formatterId: string): boolean;
defaultFormat(field: DatasetField): FormattingInfo | undefined;
}
): FormattingInfo | "hide" | undefined {
if (fields.length !== 1) {
// support only single field columns
return undefined;
}

if (context.dataSourceId === "my-datasource") {
const fieldName = fields[0]!.name;
if (fieldName.startWith("Shape")){
// hide unwanted fields
return "hide";
}

if (fieldName === "X-Coord" || fieldName === "Y-Coord" ){
// show coordinates without grouping and always 3 digits
return {
formatterId: "intl-number",
align: "right",
formatterOptions: {
minFractionDigits: 3,
maxFractionDigits: 3,
useGrouping: false
}
};

if (fieldName === "Creation-Date"){
return {
formatterId: "intl-datetime",
formatterOptions: {
dateTimeFormat: "date" // date | time | datetime
}
};
}
}
}
interface FormattingInfoProvider {
    resolveFormattingInfo(fields, context): undefined | FormattingInfo | "hide";
}

Methods

  • Resolve a formatting infos for a column, which may be a combination of multiple fields.

    Parameters

    • fields: FieldData[]

      the dataset fields referenced by a column.

    • context: {
          dataSourceId: string;
          defaultFormat(field): undefined | FormattingInfo;
          hasFormatter(formatterId): boolean;
          isDomainValueField(fieldName): boolean;
      }
      context: {
      // dataSourceId to react to special datasets
      dataSourceId: string;
      // method to check if a field is a domain value field.
      isDomainValueField(fieldName: string): boolean;
      // method to check if a formatter is available
      hasFormatter(formatterId: string): boolean;
      // method to lookup the default formatting info for a field
      defaultFormat(field: DatasetField): FormattingInfo | undefined;
      }
      • dataSourceId: string
      • defaultFormat:function
        • Parameters

          • field: FieldData

          Returns undefined | FormattingInfo

      • hasFormatter:function
        • Parameters

          • formatterId: string

          Returns boolean

      • isDomainValueField:function
        • Parameters

          • fieldName: string

          Returns boolean

    Returns undefined | FormattingInfo | "hide"

    • 'hide' if the column should complete be hidden
    • undefined if this provider can not provide information, this means the next provider is checked or the default format is applied
    • FormattingInfo a formatting info for this column

Generated using TypeDoc