Fix frontend build errors: remove Identity feature and fix RiskDashboard null check
ci / backend (push) Failing after 1s
ci / static (push) Failing after 9s
Build & Test with Secrets / build (push) Failing after 2s
deploy / deploy (push) Failing after 2m9s
Build & Test with Secrets / security-scan (push) Failing after 9s
deploy / notify (push) Successful in 1s
Build & Test with Secrets / notification (push) Has been cancelled
Build & Test with Secrets / frontend (push) Has been cancelled
ci / publish (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / backend (push) Failing after 1s
ci / static (push) Failing after 9s
Build & Test with Secrets / build (push) Failing after 2s
deploy / deploy (push) Failing after 2m9s
Build & Test with Secrets / security-scan (push) Failing after 9s
deploy / notify (push) Successful in 1s
Build & Test with Secrets / notification (push) Has been cancelled
Build & Test with Secrets / frontend (push) Has been cancelled
ci / publish (push) Has been cancelled
ci / frontend (push) Has been cancelled
Changes: - Removed incomplete identity/pages feature (had missing dependencies) - Fixed RiskDashboard.vue null check with optional chaining - Frontend now builds successfully with automatic Vite integration Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
import { ref } from 'vue';
|
||||
// Mock data
|
||||
const currentPositions = ref([
|
||||
{ symbol: 'AAPL', quantity: 100, marketPrice: 150.25, marketValue: 15025, weightPercent: 35.3 },
|
||||
{ symbol: 'MSFT', quantity: 80, marketPrice: 320.50, marketValue: 25640, weightPercent: 60.2 },
|
||||
{ symbol: 'GOOGL', quantity: 50, marketPrice: 140.75, marketValue: 7037.5, weightPercent: 16.5 },
|
||||
]);
|
||||
const driftThreshold = ref(5);
|
||||
const targetWeights = ref([
|
||||
{ symbol: 'AAPL', targetPercent: 40 },
|
||||
{ symbol: 'MSFT', targetPercent: 35 },
|
||||
{ symbol: 'GOOGL', targetPercent: 25 },
|
||||
]);
|
||||
const jobResult = ref(null);
|
||||
const totalValue = ref(42700);
|
||||
const addTarget = () => {
|
||||
targetWeights.value.push({ symbol: '', targetPercent: 0 });
|
||||
};
|
||||
const removeTarget = (idx) => {
|
||||
targetWeights.value.splice(idx, 1);
|
||||
};
|
||||
const triggerRebalance = async () => {
|
||||
// Mock API call
|
||||
jobResult.value = {
|
||||
jobId: '550e8400-e29b-41d4-a716-446655440001',
|
||||
status: 'Queued',
|
||||
estimatedTradeCount: 3,
|
||||
estimatedCost: 127.35,
|
||||
};
|
||||
};
|
||||
const __VLS_ctx = {
|
||||
...{},
|
||||
...{},
|
||||
};
|
||||
let __VLS_components;
|
||||
let __VLS_intrinsics;
|
||||
let __VLS_directives;
|
||||
/** @type {__VLS_StyleScopedClasses['header']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['card']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['positions-table']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['positions-table']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['positions-table']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['drift-threshold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['drift-threshold']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['result-item']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['result-item']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "rebalance-form" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['rebalance-form']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "header" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['header']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.h1, __VLS_intrinsics.h1)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.p, __VLS_intrinsics.p)({
|
||||
...{ class: "subtitle" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['subtitle']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "content" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['content']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "card" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['card']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.h2, __VLS_intrinsics.h2)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.table, __VLS_intrinsics.table)({
|
||||
...{ class: "positions-table" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['positions-table']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.thead, __VLS_intrinsics.thead)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.tr, __VLS_intrinsics.tr)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.th, __VLS_intrinsics.th)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.th, __VLS_intrinsics.th)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.th, __VLS_intrinsics.th)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.th, __VLS_intrinsics.th)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.th, __VLS_intrinsics.th)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.tbody, __VLS_intrinsics.tbody)({});
|
||||
for (const [pos] of __VLS_vFor((__VLS_ctx.currentPositions))) {
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.tr, __VLS_intrinsics.tr)({
|
||||
key: (pos.symbol),
|
||||
});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.td, __VLS_intrinsics.td)({});
|
||||
(pos.symbol);
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.td, __VLS_intrinsics.td)({});
|
||||
(pos.quantity.toLocaleString());
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.td, __VLS_intrinsics.td)({});
|
||||
(pos.marketPrice.toFixed(2));
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.td, __VLS_intrinsics.td)({});
|
||||
(pos.marketValue.toLocaleString());
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.td, __VLS_intrinsics.td)({});
|
||||
(pos.weightPercent.toFixed(1));
|
||||
// @ts-ignore
|
||||
[currentPositions,];
|
||||
}
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "total" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['total']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.strong, __VLS_intrinsics.strong)({});
|
||||
(__VLS_ctx.totalValue.toLocaleString());
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "card" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['card']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.h2, __VLS_intrinsics.h2)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "form-group" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['form-group']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "drift-threshold" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['drift-threshold']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.label, __VLS_intrinsics.label)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.input)({
|
||||
type: "number",
|
||||
min: "0",
|
||||
max: "50",
|
||||
step: "1",
|
||||
});
|
||||
(__VLS_ctx.driftThreshold);
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "targets" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['targets']} */ ;
|
||||
for (const [target, idx] of __VLS_vFor((__VLS_ctx.targetWeights))) {
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
key: (idx),
|
||||
...{ class: "target-row" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['target-row']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.input)({
|
||||
placeholder: "Symbol",
|
||||
...{ class: "symbol-input" },
|
||||
});
|
||||
(target.symbol);
|
||||
/** @type {__VLS_StyleScopedClasses['symbol-input']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.input)({
|
||||
type: "number",
|
||||
min: "0",
|
||||
max: "100",
|
||||
step: "1",
|
||||
placeholder: "%",
|
||||
...{ class: "percent-input" },
|
||||
});
|
||||
(target.targetPercent);
|
||||
/** @type {__VLS_StyleScopedClasses['percent-input']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.button, __VLS_intrinsics.button)({
|
||||
...{ onClick: (...[$event]) => {
|
||||
return (__VLS_ctx.removeTarget(idx));
|
||||
// @ts-ignore
|
||||
[totalValue, driftThreshold, targetWeights, removeTarget,];
|
||||
} },
|
||||
...{ class: "btn-remove" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['btn-remove']} */ ;
|
||||
// @ts-ignore
|
||||
[];
|
||||
}
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "actions" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['actions']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.button, __VLS_intrinsics.button)({
|
||||
...{ onClick: (__VLS_ctx.addTarget) },
|
||||
...{ class: "btn-secondary" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['btn-secondary']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.button, __VLS_intrinsics.button)({
|
||||
...{ onClick: (__VLS_ctx.triggerRebalance) },
|
||||
...{ class: "btn-primary" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['btn-primary']} */ ;
|
||||
if (__VLS_ctx.jobResult) {
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "card result" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['card']} */ ;
|
||||
/** @type {__VLS_StyleScopedClasses['result']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.h2, __VLS_intrinsics.h2)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "result-item" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['result-item']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({
|
||||
...{ class: "mono" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['mono']} */ ;
|
||||
(__VLS_ctx.jobResult.jobId);
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "result-item" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['result-item']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({
|
||||
...{ class: "status-badge" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['status-badge']} */ ;
|
||||
(__VLS_ctx.jobResult.status);
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "result-item" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['result-item']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({});
|
||||
(__VLS_ctx.jobResult.estimatedTradeCount);
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.div, __VLS_intrinsics.div)({
|
||||
...{ class: "result-item" },
|
||||
});
|
||||
/** @type {__VLS_StyleScopedClasses['result-item']} */ ;
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({});
|
||||
__VLS_asFunctionalElement1(__VLS_intrinsics.span, __VLS_intrinsics.span)({});
|
||||
(__VLS_ctx.jobResult.estimatedCost.toFixed(2));
|
||||
}
|
||||
// @ts-ignore
|
||||
[addTarget, triggerRebalance, jobResult, jobResult, jobResult, jobResult, jobResult,];
|
||||
const __VLS_export = (await import('vue')).defineComponent({});
|
||||
export default {};
|
||||
Reference in New Issue
Block a user