refactor: reorganize first page card modules
This commit is contained in:
@@ -1,17 +0,0 @@
|
||||
export const MAX_TABS = 5;
|
||||
export const MAX_ITEMS = 3;
|
||||
export const MAX_TAGS = 3;
|
||||
export const MAX_SHOW_KEYS = 3;
|
||||
export const MAX_DOUBLE_KEYS = 2;
|
||||
|
||||
export const BLACK_LIST: string[] = [
|
||||
'合约代码',
|
||||
'合约简称',
|
||||
'收盘价',
|
||||
'最新价',
|
||||
'涨跌幅',
|
||||
'code',
|
||||
'market_id',
|
||||
'market_code',
|
||||
'最新涨跌幅',
|
||||
];
|
||||
File diff suppressed because it is too large
Load Diff
@@ -23,8 +23,8 @@ import { AiDiagnosisNodeComponent } from '../../node/view/AiDiagnosisNodeCompone
|
||||
import { AiRiseFallNodeComponent } from '../../node/view/AiRiseFallNodeComponent'
|
||||
import { HotListNodeComponent } from '../../node/view/HotListNodeComponent'
|
||||
import { CommodityOptionsNodeComponent } from '../../node/view/CommodityOptionsNodeComponent'
|
||||
import { MarketRankingNodeComponent } from '../../market-ranking/MarketRankingNodeComponent'
|
||||
import { AiPickNodeComponent } from '../../ai-pick/AiPickNodeComponent'
|
||||
import { MarketRankingNodeComponent } from '../../node/view/MarketRankingNodeComponent'
|
||||
import { AiPickNodeComponent } from '../../node/view/AiPickNodeComponent'
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
export const MAX_TABS = 5;
|
||||
export const MAX_ITEMS = 3;
|
||||
export const MAX_TAGS = 3;
|
||||
export const MAX_SHOW_KEYS = 3;
|
||||
export const MAX_DOUBLE_KEYS = 2;
|
||||
|
||||
export const BLACK_LIST: Resource[] = [
|
||||
$r('app.string.ai_pick_contract_code'),
|
||||
$r('app.string.ai_pick_contract_nickname'),
|
||||
$r('app.string.ai_pick_close_price'),
|
||||
$r('app.string.ai_pick_latest_price'),
|
||||
$r('app.string.ai_pick_change_percent'),
|
||||
$r('app.string.ai_pick_code'),
|
||||
$r('app.string.ai_pick_market_id'),
|
||||
$r('app.string.ai_pick_market_code'),
|
||||
$r('app.string.ai_pick_latest_change_percent'),
|
||||
];
|
||||
+11
-10
@@ -1,20 +1,21 @@
|
||||
import { MetricId, PeriodId, PeriodRange, SortOrder, TabMetric } from './MarketRankingModels';
|
||||
import { TableConstants } from './TableConstants';
|
||||
import { MetricId, PeriodId, PeriodRange, SortOrder, TabMetric } from '../node/model/MarketRankingModels';
|
||||
import { XTableConstants } from './MarketRankingTableConstants';
|
||||
import { TableConstants } from "@b2c/lib_baseui";
|
||||
|
||||
// 一级 Tab 配置:涨幅/跌幅/涨速/跌速/成交额/日增仓。
|
||||
export const TAB_METRICS: TabMetric[] = [
|
||||
{ id: MetricId.RISE, label: $r('app.string.market_ranking_tab_rise'), api: 'rise_percent', hqId: TableConstants.DATA_ID_ZF, sortOrder: SortOrder.ASC, hasChildren: false },
|
||||
{ id: MetricId.FALL, label: $r('app.string.market_ranking_tab_fall'), api: 'fall_percent', hqId: TableConstants.DATA_ID_ZF, sortOrder: SortOrder.DESC, hasChildren: false },
|
||||
{ id: MetricId.RISE_SPEED, label: $r('app.string.market_ranking_tab_rise_speed'), api: 'rise_percent', hqId: TableConstants.DATA_ID_CHG_SPEED_1MIN, sortOrder: SortOrder.ASC, hasChildren: true },
|
||||
{ id: MetricId.FALL_SPEED, label: $r('app.string.market_ranking_tab_fall_speed'), api: 'fall_percent', hqId: TableConstants.DATA_ID_CHG_SPEED_1MIN, sortOrder: SortOrder.DESC, hasChildren: true },
|
||||
{ id: MetricId.TURN_OVER, label: $r('app.string.market_ranking_tab_turnover'), api: 'turnover', hqId: TableConstants.DATA_ID_TURNOVER, sortOrder: SortOrder.ASC, hasChildren: false },
|
||||
{ id: MetricId.INCRE_POSIT, label: $r('app.string.market_ranking_tab_increase_position'), api: 'increase_position', hqId: TableConstants.DATA_ID_INCRE_POSIT, sortOrder: SortOrder.ASC, hasChildren: false },
|
||||
{ id: MetricId.RISE_SPEED, label: $r('app.string.market_ranking_tab_rise_speed'), api: 'rise_percent', hqId: XTableConstants.DATA_ID_CHG_SPEED_1MIN, sortOrder: SortOrder.ASC, hasChildren: true },
|
||||
{ id: MetricId.FALL_SPEED, label: $r('app.string.market_ranking_tab_fall_speed'), api: 'fall_percent', hqId: XTableConstants.DATA_ID_CHG_SPEED_1MIN, sortOrder: SortOrder.DESC, hasChildren: true },
|
||||
{ id: MetricId.TURN_OVER, label: $r('app.string.market_ranking_tab_turnover'), api: 'turnover', hqId: XTableConstants.DATA_ID_TURNOVER, sortOrder: SortOrder.ASC, hasChildren: false },
|
||||
{ id: MetricId.INCRE_POSIT, label: $r('app.string.market_ranking_tab_increase_position'), api: 'increase_position', hqId: TableConstants.DATA_ID_RZC, sortOrder: SortOrder.ASC, hasChildren: false },
|
||||
];
|
||||
|
||||
// 二级 Tab 配置:仅涨速/跌速下出现,按周期筛选
|
||||
export const PERIOD_RANGES: PeriodRange[] = [
|
||||
{ id: PeriodId.ONE_MIN, label: $r('app.string.market_ranking_period_1min'), api: 'one_minute', hqId: TableConstants.DATA_ID_CHG_SPEED_1MIN },
|
||||
{ id: PeriodId.FIVE_MIN, label: $r('app.string.market_ranking_period_5min'), api: 'five_minute', hqId: TableConstants.DATA_ID_CHG_SPEED_5MIN },
|
||||
{ id: PeriodId.TEN_MIN, label: $r('app.string.market_ranking_period_10min'), api: 'ten_minute', hqId: TableConstants.DATA_ID_CHG_SPEED_10MIN },
|
||||
{ id: PeriodId.FIFTEEN_MIN, label: $r('app.string.market_ranking_period_15min'), api: 'fifteen_minute', hqId: TableConstants.DATA_ID_CHG_SPEED_15MIN },
|
||||
{ id: PeriodId.ONE_MIN, label: $r('app.string.market_ranking_period_1min'), api: 'one_minute', hqId: XTableConstants.DATA_ID_CHG_SPEED_1MIN },
|
||||
{ id: PeriodId.FIVE_MIN, label: $r('app.string.market_ranking_period_5min'), api: 'five_minute', hqId: XTableConstants.DATA_ID_CHG_SPEED_5MIN },
|
||||
{ id: PeriodId.TEN_MIN, label: $r('app.string.market_ranking_period_10min'), api: 'ten_minute', hqId: XTableConstants.DATA_ID_CHG_SPEED_10MIN },
|
||||
{ id: PeriodId.FIFTEEN_MIN, label: $r('app.string.market_ranking_period_15min'), api: 'fifteen_minute', hqId: XTableConstants.DATA_ID_CHG_SPEED_15MIN },
|
||||
];
|
||||
@@ -0,0 +1,11 @@
|
||||
// 市场排名使用的 4106 行情字段 ID,且"@b2c/lib_baseui"的TableConstants不存在的
|
||||
export class XTableConstants {
|
||||
static readonly DATA_ID_TURNOVER: number = 19; // 成交额
|
||||
static readonly DATA_ID_CHG_SPEED_1MIN: number = 34874; // 1 分钟涨跌速
|
||||
static readonly DATA_ID_CHG_SPEED_5MIN: number = 34325; // 5 分钟涨跌速
|
||||
static readonly DATA_ID_CHG_SPEED_10MIN: number = 34875; // 10 分钟涨跌速
|
||||
static readonly DATA_ID_CHG_SPEED_15MIN: number = 34876; // 15 分钟涨跌速
|
||||
|
||||
private constructor() {
|
||||
}
|
||||
}
|
||||
+9
-9
@@ -11,9 +11,9 @@ import {
|
||||
RawPickTabItem,
|
||||
RawStrategyDetail,
|
||||
RawStrategyItem,
|
||||
} from './AiPickModels';
|
||||
import { getResData, getTableList, ResData } from './AiPickUtils';
|
||||
import { MAX_ITEMS, MAX_TABS, MAX_TAGS } from './AiPickConstant';
|
||||
} from '../node/model/AiPickModels';
|
||||
import { getResData, getTableList, ResData } from '../util/AiPickUtils';
|
||||
import { MAX_ITEMS, MAX_TABS, MAX_TAGS } from '../constants/AiPickConstant';
|
||||
|
||||
const EMPTY_RAW_STRATEGY_ITEM: RawStrategyItem = {};
|
||||
const EMPTY_RAW_STRATEGY_DETAIL: RawStrategyDetail = {
|
||||
@@ -22,7 +22,7 @@ const EMPTY_RAW_STRATEGY_DETAIL: RawStrategyDetail = {
|
||||
strategy_type: '',
|
||||
};
|
||||
|
||||
function parseRawTab(item: RawPickTabItem): PickTabData {
|
||||
function parseRawTab(context: Context, item: RawPickTabItem): PickTabData {
|
||||
const isSystemPeriod: boolean = item.type === 'system_period';
|
||||
const strategyItem: RawStrategyItem = (
|
||||
isSystemPeriod ? item.system_strategy : item.custom_strategy
|
||||
@@ -30,7 +30,7 @@ function parseRawTab(item: RawPickTabItem): PickTabData {
|
||||
const strategyDetail: RawStrategyDetail = (
|
||||
isSystemPeriod ? strategyItem.system_strategy : strategyItem.custom_strategy
|
||||
) ?? EMPTY_RAW_STRATEGY_DETAIL;
|
||||
const resData: ResData = getResData(strategyItem);
|
||||
const resData: ResData = getResData(context, strategyItem);
|
||||
const allItems: PickContractItem[] =
|
||||
getTableList(resData.list, resData.resultValueList);
|
||||
const strategy: PickStrategy = {
|
||||
@@ -57,10 +57,10 @@ function parseRawTab(item: RawPickTabItem): PickTabData {
|
||||
return tabData;
|
||||
}
|
||||
|
||||
function parseRawTabs(rawTabs: RawPickTabItem[]): PickTabData[] {
|
||||
function parseRawTabs(context: Context, rawTabs: RawPickTabItem[]): PickTabData[] {
|
||||
return rawTabs
|
||||
.slice(0, MAX_TABS)
|
||||
.map((item: RawPickTabItem): PickTabData => parseRawTab(item));
|
||||
.map((item: RawPickTabItem): PickTabData => parseRawTab(context, item));
|
||||
}
|
||||
|
||||
export class AiPickDataFetcher {
|
||||
@@ -77,7 +77,7 @@ export class AiPickDataFetcher {
|
||||
return FirstPageCardsConfigLoader.getConfig()?.aiPick;
|
||||
}
|
||||
|
||||
async fetchCardData(): Promise<PickTabData[]> {
|
||||
async fetchCardData(context: Context): Promise<PickTabData[]> {
|
||||
const cardConfig: AllCardsCard | undefined = this.fetchCardConfig();
|
||||
const modData: ModDataItem | undefined = cardConfig?.mod_data[0];
|
||||
const configuredUrl: string = modData?.url ?? '';
|
||||
@@ -105,7 +105,7 @@ export class AiPickDataFetcher {
|
||||
if (responseCode !== 0 || result.data === undefined) {
|
||||
throw new Error('response code: ' + responseCode);
|
||||
}
|
||||
return parseRawTabs(result.data);
|
||||
return parseRawTabs(context, result.data);
|
||||
} catch (requestError) {
|
||||
const errorInfo: Error = requestError as Error;
|
||||
HXLog.e('AiPickDataFetcher', 'fetchCardData error: ' + errorInfo.message);
|
||||
@@ -1,21 +0,0 @@
|
||||
// 市场排名使用的 4106 行情字段 ID。
|
||||
export class TableConstants {
|
||||
static readonly DATA_ID_CODE_4: number = 4; // 合约代码
|
||||
static readonly DATA_ID_PRE_PRICE: number = 6; // 昨收价
|
||||
static readonly DATA_ID_OPEN_PRICE: number = 7; // 今日开盘价
|
||||
static readonly DATA_ID_PRICE: number = 10; // 最新价
|
||||
static readonly DATA_ID_TURNOVER: number = 19; // 成交额
|
||||
static readonly DATA_ID_NAME: number = 55; // 合约名称
|
||||
static readonly DATA_ID_JSJ: number = 66; // 昨日结算价
|
||||
static readonly DATA_ID_CHG_SPEED_5MIN: number = 34325; // 5 分钟涨跌速
|
||||
static readonly DATA_ID_INCRE_POSIT: number = 34355; // 日增仓
|
||||
static readonly DATA_ID_ZF: number = 34818; // 涨跌幅
|
||||
static readonly DATA_ID_CHG_SPEED_1MIN: number = 34874; // 1 分钟涨跌速
|
||||
static readonly DATA_ID_CHG_SPEED_10MIN: number = 34875; // 10 分钟涨跌速
|
||||
static readonly DATA_ID_CHG_SPEED_15MIN: number = 34876; // 15 分钟涨跌速
|
||||
static readonly DATA_ID_ZF_YTD: number = 34877; // 涨跌幅(昨结算价基准)
|
||||
static readonly DATA_ID_MARKET: number = 36103; // 市场 ID
|
||||
|
||||
private constructor() {
|
||||
}
|
||||
}
|
||||
@@ -11,8 +11,8 @@ import {
|
||||
CardData,
|
||||
PickContractItem,
|
||||
PickTabData,
|
||||
} from '../../ai-pick/AiPickModels';
|
||||
import { getUniqueContracts } from '../../ai-pick/AiPickUtils';
|
||||
} from '../model/AiPickModels';
|
||||
import { getUniqueContracts } from '../../util/AiPickUtils';
|
||||
|
||||
const FRAME_ID = 2201;
|
||||
const PAGE_ID = 4106;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { AbsRowData, RowData, TableData } from '@b2b/hq_table';
|
||||
import { TableConstants as BaseTableConstants, TableRequestClient } from '@b2c/lib_baseui';
|
||||
import { TableConstants as BaseTableConstants, TableConstants, TableRequestClient } from '@b2c/lib_baseui';
|
||||
import { RequestHelper, StuffTableStruct } from '@kernel/lib_communication';
|
||||
import {
|
||||
QuoteCustomSettingManager,
|
||||
@@ -12,12 +12,12 @@ import {
|
||||
RankItem,
|
||||
RecommendFuturesItem,
|
||||
TabMetric,
|
||||
} from '../../market-ranking/MarketRankingModels';
|
||||
} from '../model/MarketRankingModels';
|
||||
import {
|
||||
PERIOD_RANGES,
|
||||
TAB_METRICS,
|
||||
} from '../../market-ranking/MarketRankingConstant';
|
||||
import { TableConstants } from '../../market-ranking/TableConstants';
|
||||
} from '../../constants/MarketRankingConstant';
|
||||
import { XTableConstants } from '../../constants/MarketRankingTableConstants';
|
||||
|
||||
const FRAME_ID = 2201;
|
||||
const PAGE_ID = 4106;
|
||||
@@ -90,10 +90,10 @@ class MarketRankingTableRequestClient extends TableRequestClient {
|
||||
};
|
||||
item.price = this.getNumber(row, TableConstants.DATA_ID_PRICE);
|
||||
item.price_chg = this.getNumber(row, TableConstants.DATA_ID_ZF);
|
||||
if (this.sortId === TableConstants.DATA_ID_TURNOVER) {
|
||||
item.turnover = this.getNumber(row, TableConstants.DATA_ID_TURNOVER);
|
||||
} else if (this.sortId === TableConstants.DATA_ID_INCRE_POSIT) {
|
||||
item.incre_posit = this.getNumber(row, TableConstants.DATA_ID_INCRE_POSIT);
|
||||
if (this.sortId === XTableConstants.DATA_ID_TURNOVER) {
|
||||
item.turnover = this.getNumber(row, XTableConstants.DATA_ID_TURNOVER);
|
||||
} else if (this.sortId === TableConstants.DATA_ID_RZC) {
|
||||
item.incre_posit = this.getNumber(row, TableConstants.DATA_ID_RZC);
|
||||
} else if (this.sortId !== TableConstants.DATA_ID_ZF) {
|
||||
item.chg_speed = this.getNumber(row, this.sortId);
|
||||
}
|
||||
|
||||
+6
-6
@@ -1,14 +1,14 @@
|
||||
import { http } from '@kit.NetworkKit';
|
||||
import { HXLog } from 'biz_common';
|
||||
import { buildHeader } from '../util/Header';
|
||||
import { FirstPageDebugUtil } from '../util/FirstPageDebugUtil';
|
||||
import { FirstPageCardsConfigLoader } from '../node/datacenter/FirstPageCardsConfigLoader';
|
||||
import { AllCardsCard } from '../node/model/AiDiagnosisNodeModel';
|
||||
import { buildHeader } from '../../util/Header';
|
||||
import { FirstPageDebugUtil } from '../../util/FirstPageDebugUtil';
|
||||
import { FirstPageCardsConfigLoader } from './FirstPageCardsConfigLoader';
|
||||
import { AllCardsCard } from '../model/AiDiagnosisNodeModel';
|
||||
import {
|
||||
RecommendFuturesItem,
|
||||
RecommendFuturesResponse,
|
||||
} from './MarketRankingModels';
|
||||
import { PERIOD_RANGES, TAB_METRICS } from './MarketRankingConstant';
|
||||
} from '../model/MarketRankingModels';
|
||||
import { PERIOD_RANGES, TAB_METRICS } from '../../constants/MarketRankingConstant';
|
||||
|
||||
export class MarketRankingDataFetcher {
|
||||
private static readonly instance: MarketRankingDataFetcher = new MarketRankingDataFetcher();
|
||||
+8
-8
@@ -1,23 +1,23 @@
|
||||
import { emitter } from '@kit.BasicServicesKit';
|
||||
import { enableDarkMode } from '@kernel/theme_manager';
|
||||
import { EmitterConstants, GlobalContext, jumpToQuote } from 'biz_common';
|
||||
import { AiPickDataFetcher } from './AiPickDataFetcher';
|
||||
import { AiPickHqRequestClient } from '../node/clients/AiPickHqRequestClient';
|
||||
import { AiPickDataFetcher } from '../../datacenter/AiPickDataFetcher';
|
||||
import { AiPickHqRequestClient } from '../clients/AiPickHqRequestClient';
|
||||
import {
|
||||
CardData,
|
||||
PickContractItem,
|
||||
PickStrategy,
|
||||
PickTabData,
|
||||
} from './AiPickModels';
|
||||
} from '../model/AiPickModels';
|
||||
import {
|
||||
cellColor,
|
||||
cellValue,
|
||||
formatColName,
|
||||
getUniqueContracts,
|
||||
} from './AiPickUtils';
|
||||
import { AllCardsCard } from '../node/model/AiDiagnosisNodeModel';
|
||||
import { RouterUtil } from '../util/RouterUtil';
|
||||
import { getResourceString } from '../util/ResourceUtil';
|
||||
} from '../../util/AiPickUtils';
|
||||
import { AllCardsCard } from '../model/AiDiagnosisNodeModel';
|
||||
import { RouterUtil } from '../../util/RouterUtil';
|
||||
import { getResourceString } from '../../util/ResourceUtil';
|
||||
|
||||
interface StrategyDescParams {
|
||||
tabIdx: number;
|
||||
@@ -168,7 +168,7 @@ export struct AiPickNodeComponent {
|
||||
}
|
||||
try {
|
||||
const tabs: PickTabData[] =
|
||||
await AiPickDataFetcher.getInstance().fetchCardData();
|
||||
await AiPickDataFetcher.getInstance().fetchCardData(getContext());
|
||||
if (!this.isCurrentDataRequest(requestVersion)) {
|
||||
return;
|
||||
}
|
||||
+8
-8
@@ -4,19 +4,19 @@ import {
|
||||
MetricId,
|
||||
PeriodRange,
|
||||
RankItem, RecommendFuturesItem, TabMetric,
|
||||
} from './MarketRankingModels';
|
||||
import { MarketRankingDataFetcher } from './MarketRankingDataFetcher';
|
||||
} from '../model/MarketRankingModels';
|
||||
import { MarketRankingDataFetcher } from '../datacenter/MarketRankingDataFetcher';
|
||||
import {
|
||||
cardDataToContracts,
|
||||
contractsToPlaceholderCardData,
|
||||
} from './MarketRankingDataMapper';
|
||||
import { MarketRankingHqRequestClient } from '../node/clients/MarketRankingHqRequestClient';
|
||||
import { formatGreatNumber, formatPercent, riseFallColor } from '../common/NumberFormat';
|
||||
import { AllCardsCard } from '../node/model/AiDiagnosisNodeModel';
|
||||
import { PERIOD_RANGES, TAB_METRICS } from './MarketRankingConstant';
|
||||
} from '../../util/MarketRankingDataMapper';
|
||||
import { MarketRankingHqRequestClient } from '../clients/MarketRankingHqRequestClient';
|
||||
import { formatGreatNumber, formatPercent, riseFallColor } from '../../util/NumberFormat';
|
||||
import { AllCardsCard } from '../model/AiDiagnosisNodeModel';
|
||||
import { PERIOD_RANGES, TAB_METRICS } from '../../constants/MarketRankingConstant';
|
||||
import { enableDarkMode } from '@kernel/theme_manager';
|
||||
import { EmitterConstants, GlobalContext, jumpToQuote, PreferenceService } from 'biz_common';
|
||||
import { RouterUtil } from '../util/RouterUtil';
|
||||
import { RouterUtil } from '../../util/RouterUtil';
|
||||
|
||||
const NORMAL_SIZE = 3;
|
||||
const MAX_SIZE = 5;
|
||||
@@ -17,7 +17,7 @@ import { FistPageSelfCodeGridItemView } from '../../views/FistPageSelfCodeGridIt
|
||||
import { HXUtils, TableConstants } from '@b2c/lib_baseui';
|
||||
import { QuoteCustomSettingManager, StandardPriceType } from 'biz_quote';
|
||||
|
||||
//TableRowBGView TableConstants
|
||||
//TableRowBGView XTableConstants
|
||||
|
||||
/**
|
||||
* 每页显示item数量3
|
||||
|
||||
@@ -7,14 +7,15 @@ import {
|
||||
RawFieldItem,
|
||||
RawResultItem,
|
||||
RawStrategyItem,
|
||||
} from './AiPickModels';
|
||||
import { BLACK_LIST, MAX_DOUBLE_KEYS, MAX_SHOW_KEYS } from './AiPickConstant';
|
||||
} from '../node/model/AiPickModels';
|
||||
import { BLACK_LIST, MAX_DOUBLE_KEYS, MAX_SHOW_KEYS } from '../constants/AiPickConstant';
|
||||
import {
|
||||
formatGreatNumber,
|
||||
formatPercent,
|
||||
formatPrice,
|
||||
riseFallColor,
|
||||
} from '../common/NumberFormat';
|
||||
} from './NumberFormat';
|
||||
import { getResourceString } from './ResourceUtil';
|
||||
|
||||
const EMPTY_EXTRA_FIELDS: Record<string, string> = {};
|
||||
|
||||
@@ -25,10 +26,11 @@ export interface ResData {
|
||||
list: RawDetailItem[];
|
||||
}
|
||||
|
||||
export function filterFieldKey(key: string): boolean {
|
||||
export function filterFieldKey(context: Context, key: string): boolean {
|
||||
const blackList = BLACK_LIST.map(value => getResourceString(context, value))
|
||||
const extBlackList: string[] =
|
||||
BLACK_LIST.map((value: string): string => `期货@${value}`);
|
||||
const inBlack: boolean = BLACK_LIST.includes(key) || extBlackList.includes(key);
|
||||
blackList.map((value: ResourceStr): string => `期货@${value}`);
|
||||
const inBlack: boolean = blackList.includes(key) || extBlackList.includes(key);
|
||||
const isChangeField: boolean =
|
||||
key.startsWith('涨跌幅[') || key.startsWith('期货@涨跌幅[');
|
||||
return !inBlack && !isChangeField;
|
||||
@@ -39,6 +41,13 @@ export function formatBigData(value: number | string): string {
|
||||
if (Number.isNaN(numericValue)) {
|
||||
return `${value}`;
|
||||
}
|
||||
const formattedValue: number = Number(numericValue.toFixed(3));
|
||||
const absoluteValue: number = Math.abs(formattedValue);
|
||||
|
||||
if (absoluteValue < 1e4) {
|
||||
return `${formattedValue}`;
|
||||
}
|
||||
|
||||
return formatGreatNumber(numericValue);
|
||||
}
|
||||
|
||||
@@ -67,13 +76,13 @@ export function getResultValueList(
|
||||
});
|
||||
}
|
||||
|
||||
export function getResData(strategyItem: RawStrategyItem): ResData {
|
||||
export function getResData(context: Context, strategyItem: RawStrategyItem): ResData {
|
||||
const rawFieldList: RawFieldItem[] = strategyItem.field_list ?? [];
|
||||
const resultList: RawResultItem[] = strategyItem.origin_result_list ?? [];
|
||||
const list: RawDetailItem[] = strategyItem.detail_list ?? [];
|
||||
const doubleList: RawFieldItem[] = rawFieldList.filter(
|
||||
(field: RawFieldItem): boolean =>
|
||||
field.type === 'DOUBLE' && filterFieldKey(field.key),
|
||||
field.type === 'DOUBLE' && filterFieldKey(context, field.key),
|
||||
);
|
||||
const doubleListKeys: string[] =
|
||||
doubleList.map((field: RawFieldItem): string => field.key);
|
||||
@@ -113,12 +122,12 @@ export function getTableList(
|
||||
|
||||
export function getUniqueContracts(cardData: CardData): PickContractItem[] {
|
||||
const contracts: PickContractItem[] = [];
|
||||
const contractKeys: string[] = [];
|
||||
const contractKeys: Set<string> = new Set();
|
||||
cardData.tabs.forEach((tab: PickTabData): void => {
|
||||
tab.items.forEach((item: PickContractItem): void => {
|
||||
const contractKey: string = `${item.contract}_${item.market}`;
|
||||
if (!contractKeys.includes(contractKey)) {
|
||||
contractKeys.push(contractKey);
|
||||
if (!contractKeys.has(contractKey)) {
|
||||
contractKeys.add(contractKey);
|
||||
contracts.push(item);
|
||||
}
|
||||
});
|
||||
+1
-1
@@ -2,7 +2,7 @@ import {
|
||||
CardData,
|
||||
RankItem,
|
||||
RecommendFuturesItem,
|
||||
} from './MarketRankingModels';
|
||||
} from '../node/model/MarketRankingModels';
|
||||
|
||||
export function cardDataToContracts(cardData: CardData): RecommendFuturesItem[] {
|
||||
return cardData.tableList.map((item: RankItem): RecommendFuturesItem => ({
|
||||
@@ -119,6 +119,42 @@
|
||||
"name": "solid_grey_900",
|
||||
"value": "#3B3B3B"
|
||||
},
|
||||
{
|
||||
"name": "commodity_options_expire_label_color",
|
||||
"value": "#CCA670"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_rank_bg_1",
|
||||
"value": "#ff2436"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_rank_bg_2",
|
||||
"value": "#ff661a"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_rank_bg_3",
|
||||
"value": "#ff9500"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_red",
|
||||
"value": "#ff2436"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_orange",
|
||||
"value": "#ff661a"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_blue",
|
||||
"value": "#3366ff"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_acid_blue",
|
||||
"value": "#14ccbd"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_green",
|
||||
"value": "#07ab4b"
|
||||
},
|
||||
{
|
||||
"name": "hotlist_purple",
|
||||
"value": "#b341d9"
|
||||
|
||||
@@ -307,6 +307,39 @@
|
||||
{
|
||||
"name": "card_explain_confirm",
|
||||
"value": "我知道了"
|
||||
},
|
||||
{
|
||||
"name": "ai_pick_contract_code",
|
||||
"value": "合约代码"
|
||||
},
|
||||
{
|
||||
"name": "ai_pick_contract_nickname",
|
||||
"value": "合约简称"
|
||||
},
|
||||
{
|
||||
"name": "ai_pick_close_price",
|
||||
"value": "收盘价"
|
||||
},
|
||||
{
|
||||
"name": "ai_pick_latest_price",
|
||||
"value": "最新价"
|
||||
}, {
|
||||
"name": "ai_pick_change_percent",
|
||||
"value": "涨跌幅"
|
||||
},{
|
||||
"name": "ai_pick_code",
|
||||
"value": "code"
|
||||
},
|
||||
{
|
||||
"name": "ai_pick_market_id",
|
||||
"value": "market_id"
|
||||
},{
|
||||
"name": "ai_pick_market_code",
|
||||
"value": "market_code"
|
||||
},
|
||||
{
|
||||
"name": "ai_pick_latest_change_percent",
|
||||
"value": "最新涨跌幅"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
"value": "page from package"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user