Repository navigation
ParseJSON global data format functionΒ #228
Description
π Analysis: Time Format Handling in the Codebase
Here's what I found:
1. Input Parsing: Multiple Formats β Milliseconds
Location: parseTime() in data-layer.js (and duplicate in main-legacy.js)
Handles:
"1.5s"β 1500ms"500ms"β 500ms"100Β΅s"β 0.1ms"250ns"β 0.000250ms
Status: β STANDARDIZED - Single function in data-layer.js
2. Output Formatting: Milliseconds β Display Format
Location: Formatters.formatTime() in main-legacy-cleaned.js (line 563)
Converts:
- Milliseconds β
"MM:SS.mmm"format 1500msβ"00:01.500"65000msβ"01:05.000"0msβ"00:00.000"
Status: β NOT IN MODULES - Still in main-legacy-cleaned.js
3. Tooltip Formatting
Location: Formatters.formatTimeTooltip() in main-legacy-cleaned.js (line 590)
Purpose: Shows original time string for precision
- Small values: Shows
"Original: 146.266Β΅s" - Shows original if different from formatted
Status: β NOT IN MODULES
4. Chart Display Formats
Location: ChartTimeUtils / Chart.js config in main-legacy-cleaned.js
Formats:
"HH:mm:ss.SSS"for milliseconds"HH:mm:ss"for seconds"MMM dd HH:mm"for minutes/hours"MMM dd"for days
Status: β IN CHARTS.JS (ChartTimeUtils)
5. Table/UI Display
Location: Scattered throughout tables.js, parsers.js, main-legacy-cleaned.js
Uses:
.toISOString().replace('T', ' ').substring(0, 23) + 'Z'for timestamps.toFixed(2)for durations in secondsformatTime()for consistent MM:SS.mmm display
Status:
π Summary
β Standardized (Good):
- parseTime() - Single function in data-layer.js converts all formats to ms
- parseCouchbaseDateTime() - Single function for CB datetime parsing
β Not Standardized (Needs Work):
- Formatters.formatTime() - Still in main-legacy, should be in ui-helpers.js
- Formatters.formatTimeTooltip() - Still in main-legacy
- Timestamp display - Multiple patterns (
.toISOString(),.substring(0, 23), etc.)
π‘ Recommendation:
Move to ui-helpers.js:
export function formatTime(milliseconds) { ... } // MM:SS.mmm
export function formatTimeTooltip(timeStr, ms) { ... }
export function formatTimestamp(date) { ... } // Standardize timestamp displayThis would centralize ALL time formatting in one place (ui-helpers.js for display, data-layer.js for parsing).
Activity
Fujio-Turner commentedon Nov 7, 2025
Overview
Standardized all timestamp formatting functions across
/liquid_snake/assets/js/*.jsinto a single centralized function inbase.js.Changes Made
1. New Centralized Function:
formatTimestamp()Location:
liquid_snake/assets/js/base.jsSignature:
Supported Formats:
"YYYY-MM-DD HH:MM:SS.sssZ"β "2024-11-07 12:30:45.123Z" (default)"YYYY-MM-DD HH:MM:SS"β "2024-11-07 12:30:45""HH:MM:SS.sss"β "12:30:45.123""HH:MM:SS"β "12:30:45""locale"β Browser's toLocaleString()"iso"β ISO 8601 format with T separatorFeatures:
Dateobjects and string inputs2. Files Updated
base.jsformatTimestamp()function (lines 389-458)window.formatTimestampfor legacy compatibilitymain-legacy.jsconvertedDate.toISOString().replace('T', ' ').substring(0, 23) + 'Z'formatTimestamp(convertedDate, "YYYY-MM-DD HH:MM:SS.sssZ")report.jsnew Date().toLocaleString()(2 occurrences)formatTimestamp(new Date(), "locale")formatTimestampfrom base.js3. Duplicate Patterns Eliminated
Before:
After:
4. Preserved Functions
These functions remain unchanged as they serve different purposes:
charts.js:getChartDate()- Handles timezone conversion (different purpose)convertToTimezone()- Timezone-specific date manipulationdata-layer.js:parseCouchbaseDateTime()- Parses Couchbase format β Date object (parsing, not formatting)Usage Examples
Future Enhancements
To further standardize in the future, consider:
parseCouchbaseDateTime()if parsing logic becomes duplicatedgetChartDate())Real Data Format Analysis
Analyzed actual Couchbase data from
sample/directory:Timestamp Formats Found:
requestTime- ISO 8601 with timezone offset:"2025-08-26T14:06:02.129-05:00"β Handled"2025-08-15T00:01:00.000Z"β Handled#planPreparedTime(in plan JSON) - ISO 8601 UTC:"2025-07-13T10:15:22.124Z"β HandledphaseTimes- Duration strings (NOT timestamps):"15.110ms","8.901Β΅s","32.222ms"Compatibility Verification:
Edge Cases Handled:
-05:00,+00:00)ZTesting
All existing functionality preserved:
test_timestamp_formats.htmlRelated Files
liquid_snake/assets/js/base.js- Core utilityliquid_snake/assets/js/main-legacy.js- Updated usageliquid_snake/assets/js/report.js- Updated usageliquid_snake/assets/js/charts.js- Parsing functions preservedliquid_snake/assets/js/data-layer.js- Parsing functions preservedFujio-Turner commentedon Sep 15, 2026
Done on
release-4.0.0-betavia #264.formatTime/formatTimeTooltipmoved out ofmain-legacy.jsintoapp/assets/js/time-format.js(re-exported fromui-helpers.js)formatTimestamp()frombase.jsformatTimestampduplicate in the AI timelineMerge pull request #264 from Fujio-Turner/fix/issue-228