dosubot[bot] commented on issue #28615:
URL: https://github.com/apache/superset/issues/28615#issuecomment-2368486975

   <!-- Answer -->
   To update the timestamp format options in the Apache Superset UI when using 
a Docker image without building from sources, you can modify the 
`setupFormatters.ts` file to include your desired timestamp formats. Here is an 
example of how you can add a new timestamp format:
   
   ```ts
   import {
     createDurationFormatter,
     getNumberFormatter,
     getNumberFormatterRegistry,
     NumberFormats,
     getTimeFormatterRegistry,
     SMART_DATE_ID,
     SMART_DATE_DETAILED_ID,
     SMART_DATE_VERBOSE_ID,
     createSmartDateFormatter,
     createSmartDateVerboseFormatter,
     createSmartDateDetailedFormatter,
   } from '@superset-ui/core';
   import { FormatLocaleDefinition } from 'd3-format';
   import { TimeLocaleDefinition } from 'd3-time-format';
   
   export default function setupFormatters(
     d3NumberFormat: Partial<FormatLocaleDefinition>,
     d3TimeFormat: Partial<TimeLocaleDefinition>,
   ) {
     getNumberFormatterRegistry()
       .setD3Format(d3NumberFormat)
       // Add shims for format strings that are deprecated or common typos.
       // Temporary solution until performing a db migration to fix this.
       .registerValue(',0', getNumberFormatter(',.4~f'))
       .registerValue('null', getNumberFormatter(',.4~f'))
       .registerValue('%', getNumberFormatter('.0%'))
       .registerValue('.', getNumberFormatter('.4~f'))
       .registerValue(',f', getNumberFormatter(',d'))
       .registerValue(',r', getNumberFormatter(',.4f'))
       .registerValue('0f', getNumberFormatter(',d'))
       .registerValue(',#', getNumberFormatter(',.4~f'))
       .registerValue('$,f', getNumberFormatter('$,d'))
       .registerValue('0%', getNumberFormatter('.0%'))
       .registerValue('f', getNumberFormatter(',d'))
       .registerValue(',.', getNumberFormatter(',.4~f'))
       .registerValue('.1%f', getNumberFormatter('.1%'))
       .registerValue('1%', getNumberFormatter('.0%'))
       .registerValue('3%', getNumberFormatter('.0%'))
       .registerValue(',%', getNumberFormatter(',.0%'))
       .registerValue('.r', getNumberFormatter('.4~f'))
       .registerValue('$,.0', getNumberFormatter('$,d'))
       .registerValue('$,.1', getNumberFormatter('$,.1~f'))
       .registerValue(',0s', getNumberFormatter(',.4~f'))
       .registerValue('%%%', getNumberFormatter('.0%'))
       .registerValue(',0f', getNumberFormatter(',d'))
       .registerValue('+,%', getNumberFormatter('+,.0%'))
       .registerValue('$f', getNumberFormatter('$,d'))
       .registerValue('+,', getNumberFormatter(NumberFormats.INTEGER_SIGNED))
       .registerValue(',2f', getNumberFormatter(',.4~f'))
       .registerValue(',g', getNumberFormatter(',.4~f'))
       .registerValue('int', getNumberFormatter(NumberFormats.INTEGER))
       .registerValue('.0%f', getNumberFormatter('.1%'))
       .registerValue('$,0', getNumberFormatter('$,.4f'))
       .registerValue('$,0f', getNumberFormatter('$,.4f'))
       .registerValue('$,.f', getNumberFormatter('$,.4f'))
       .registerValue('DURATION', createDurationFormatter())
       .registerValue(
         'DURATION_SUB',
         createDurationFormatter({ formatSubMilliseconds: true }),
       );
   
     const timeFormatterRegistry = getTimeFormatterRegistry();
   
     timeFormatterRegistry
       .setD3Format(d3TimeFormat)
       .registerValue(
         SMART_DATE_ID,
         createSmartDateFormatter(timeFormatterRegistry.d3Format),
       )
       .registerValue(
         SMART_DATE_VERBOSE_ID,
         createSmartDateVerboseFormatter(timeFormatterRegistry.d3Format),
       )
       .registerValue(
         SMART_DATE_DETAILED_ID,
         createSmartDateDetailedFormatter(timeFormatterRegistry.d3Format),
       )
       .registerValue(
         'NEW_TIMESTAMP_FORMAT', // Add your new timestamp format here
         createSmartDateFormatter('%Y-%m-%d %H:%M:%S.%L'), // Example format
       )
       .registerValue(
         'DD_MM_YYYY', // Add your new timestamp format here
         createSmartDateFormatter('%d.%m.%Y'), // Example format
       )
       .setDefaultKey(SMART_DATE_ID);
   }
   ```
   
   After modifying the `setupFormatters.ts` file, you need to ensure that the 
changes are reflected in your Docker container. You can achieve this by 
mounting the modified file into the Docker container or by creating a custom 
Docker image that includes your changes 
<sup>[[1]](https://github.com/apache/superset/blob/master/superset-frontend/src/setup/setupFormatters.ts)</sup>.
   
   
   <!-- Dosu Comment Footer -->
   *To continue talking to [Dosu](https://dosu.dev), mention @dosu.*
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to