How startyr/calculatorx works
CalculatorX is a HarmonyOS calculator whose main workflow turns formula input into a structured MathJSON expression, computes it through native math engines, presents a formatted result, and can retain the calculation in local history. The graph also preserves the documented graphing, exchange, programmer, and settings capabilities as separate product branches. The README documents the overall pipeline; sampled native sources confirm AST parsing, matrix routing, equation solving, and graph sampling. Several UI and exchange links use README descriptions and tree paths, since their implementation sources were not sampled.
Main entry points: Index.ets Calculator workspace · EngineService.ets Engine service · engine.cpp Native router · GraphingCalc.ets Graphing workspace
Components 25
App interaction
- Calculator workspace
entry/src/main/ets/pages/Index.ets - Formula input
entry/src/main/resources/rawfile/calculator.html - Input translation
entry/src/main/ets/utils/InputTranslator.ets - Calc modes
entry/src/main/ets/components/ScientificCalc.ets - Matrix tools
entry/src/main/ets/components/MatrixCalc.ets - Equation solver
entry/src/main/ets/components/EquationSolver.ets
Compute engines
- Engine service
entry/src/main/ets/utils/EngineService.ets - Native router
entry/src/main/cpp/engine.cpp - MathJSON parser
entry/src/main/cpp/core/parser.cpp - Matrix operations
entry/src/main/cpp/core/MatrixParser.cpp - SymEngine
entry/src/main/cpp/core/parser.cpp - Giac CAS
entry/src/main/cpp/core/giac_bridge.cpp - Result formatting
entry/src/main/cpp/utils/FormatUtils.cpp
Specialized tools
- Graphing workspace
entry/src/main/ets/components/graphing/GraphingCalc.ets - Graph sampler
entry/src/main/cpp/core/GraphingEngine.cpp - Currency converter
entry/src/main/ets/components/exchange/rates/ExchangeRate.ets - Rates and cache
entry/src/main/ets/components/exchange/rates/CurrencyData.ets - Programmer mode
entry/src/main/ets/components/EquationSolver.ets - Programmer engine
entry/src/main/ets/utils/base/ProgrammerEngine.ets
Local state
- History views
entry/src/main/ets/pages/history/HistoryManager.ets - Calculation history
entry/src/main/ets/database/HistoryRepository.ets - Preferences UI
entry/src/main/ets/pages/settings/Settings.ets - User preferences
entry/src/main/ets/utils/PreferenceManager.ets
Other components
- Calculator user
- Exchange rate source
Connections 32
- Calculator user → Calculator workspace: uses
- Calculator workspace → Formula input: opens
- Calculator user → Formula input: enters formula
- Formula input → Input translation: produces input
- Input translation → Engine service: submits AST
- Calculator workspace → Calc modes: selects mode
- Calculator workspace → Matrix tools: opens
- Calculator workspace → Equation solver: opens
- Calc modes → Engine service: requests calculation
- Matrix tools → Engine service: requests calculation
- Equation solver → Engine service: requests solving
- Engine service → Native router: invokes N-API
- Native router → MathJSON parser: parses AST
- MathJSON parser → Matrix operations: routes matrix AST
- Native router → Giac CAS: solves equations
- Native router → SymEngine: evaluates expressions
- Native router → Result formatting: formats result
- Native router → Graph sampler: samples graph data
- Graphing workspace → Engine service: requests graph data
- Graphing workspace → Graph sampler: configures graph
- Calculator workspace → Graphing workspace: opens
- Calculator workspace → Currency converter: opens
- Currency converter → Rates and cache: reads rates
- Rates and cache → Exchange rate source: refreshes rates
- Calculator workspace → Programmer mode: opens
- Programmer mode → Programmer engine: evaluates operations
- Calculator workspace → History views: opens
- History views → Calculation history: reads and manages
- Calculator workspace → Calculation history: records calculations
- Calculator workspace → Preferences UI: opens
- Preferences UI → User preferences: saves settings
- Engine service → User preferences: reads calculation options