widget-iccandle 0.0.28 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -0
- package/dist/lib/data-feed.d.ts +2 -1
- package/dist/lib/data-feed.d.ts.map +1 -1
- package/dist/selector-widget.cjs +8 -8
- package/dist/selector-widget.js +1130 -1121
- package/dist/tradingview/TradingviewChart.d.ts.map +1 -1
- package/dist/tradingview/scanner-popup.d.ts +2 -1
- package/dist/tradingview/scanner-popup.d.ts.map +1 -1
- package/dist/tradingview/selector-widget.d.ts.map +1 -1
- package/dist/tradingview/types.d.ts +10 -0
- package/dist/tradingview/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -47,3 +47,49 @@ function ChartWithScanner() {
|
|
|
47
47
|
|
|
48
48
|
- TradingView Charting Library types (e.g. `IChartingLibraryWidget`, `EntityId`, `DrawingEventType`, `ResolutionString`).
|
|
49
49
|
- Internal: `ScannerPopUp`, selector constants (`DateRangeOptions`, `SearchComponentSpacing`, `WINDOW_SIZE`), data-feed types (`RequestPattern`, `SymbolData`), and utils (`debounce`, `getBarDurationMs`, `normalizeTimestamp`).
|
|
50
|
+
|
|
51
|
+
## Datafeed integration
|
|
52
|
+
|
|
53
|
+
To display news events as timescale marks on the TradingView chart, add the following implementation to your `data-feed.ts` (inside the `dataFeed` object), replacing the existing `getTimescaleMarks` stub:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
getTimescaleMarks: async (
|
|
57
|
+
symbolInfo: LibrarySymbolInfo,
|
|
58
|
+
from: number,
|
|
59
|
+
to: number,
|
|
60
|
+
onResult: GetMarksCallback<TimescaleMark>
|
|
61
|
+
) => {
|
|
62
|
+
const marks: TimescaleMark[] = [];
|
|
63
|
+
|
|
64
|
+
// ... add your code here
|
|
65
|
+
try {
|
|
66
|
+
const allNewsEvents = JSON.parse(
|
|
67
|
+
localStorage.getItem("tv:selected-news-events") || "[]"
|
|
68
|
+
) as NewsEventType[];
|
|
69
|
+
|
|
70
|
+
allNewsEvents?.forEach(
|
|
71
|
+
({ id, timestamp, event_name, currency }) => {
|
|
72
|
+
if (!id || !Number.isFinite(timestamp) || timestamp <= 0) return;
|
|
73
|
+
const hasAlready = marks.some((m) => String(m.id) === String(id));
|
|
74
|
+
if (hasAlready) return;
|
|
75
|
+
|
|
76
|
+
marks.push({
|
|
77
|
+
id,
|
|
78
|
+
time: timestamp / 1000,
|
|
79
|
+
color: "green",
|
|
80
|
+
label: event_name.slice(0, 1) || "N",
|
|
81
|
+
tooltip: [event_name],
|
|
82
|
+
...(currency
|
|
83
|
+
? { imageUrl: `/images/symbols/${currency}.svg` }
|
|
84
|
+
: {}),
|
|
85
|
+
showLabelWhenImageLoaded: true,
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
);
|
|
89
|
+
} catch {
|
|
90
|
+
// no-op
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
onResult(marks);
|
|
94
|
+
}
|
|
95
|
+
```
|
package/dist/lib/data-feed.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Bar, DatafeedErrorCallback, HistoryCallback, LibrarySymbolInfo, OnReadyCallback, PeriodParams, ResolutionString, ResolveCallback, SearchSymbolsCallback } from "../../public/charting_library";
|
|
1
|
+
import type { Bar, DatafeedErrorCallback, GetMarksCallback, HistoryCallback, LibrarySymbolInfo, OnReadyCallback, PeriodParams, ResolutionString, ResolveCallback, SearchSymbolsCallback, TimescaleMark } from "../../public/charting_library";
|
|
2
2
|
import { DataStatus } from "@/constants/selector.constant";
|
|
3
3
|
declare const dataFeed: (handleOpenPricingCard: (dataStatus: DataStatus) => void, tabValue: string, dayResolution?: ResolutionString) => {
|
|
4
4
|
onReady: (callback: OnReadyCallback) => void;
|
|
@@ -7,6 +7,7 @@ declare const dataFeed: (handleOpenPricingCard: (dataStatus: DataStatus) => void
|
|
|
7
7
|
getBars: (symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, periodParams: PeriodParams, onResult: HistoryCallback, onError: DatafeedErrorCallback) => Promise<void>;
|
|
8
8
|
subscribeBars: (symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: (bar: Bar) => void, _subscriberUID: string, onResetCacheNeededCallback: () => void) => void;
|
|
9
9
|
unsubscribeBars: (listenerGUID: string) => void;
|
|
10
|
+
getTimescaleMarks: (_symbolInfo: LibrarySymbolInfo, _from: number, _to: number, onResult: GetMarksCallback<TimescaleMark>) => Promise<void>;
|
|
10
11
|
};
|
|
11
12
|
export default dataFeed;
|
|
12
13
|
//# sourceMappingURL=data-feed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-feed.d.ts","sourceRoot":"","sources":["../../src/lib/data-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,qBAAqB,
|
|
1
|
+
{"version":3,"file":"data-feed.d.ts","sourceRoot":"","sources":["../../src/lib/data-feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EAEd,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EAAE,UAAU,EAAiB,MAAM,+BAA+B,CAAC;AAyB1E,QAAA,MAAM,QAAQ,GACZ,uBAAuB,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,EACvD,UAAU,MAAM,EAChB,gBAAgB,gBAAgB;wBAEZ,eAAe;+BAmBtB,MAAM,YACP,MAAM,cACJ,MAAM,YACR,qBAAqB;gCAwCnB,MAAM,aACP,eAAe,WACjB,qBAAqB;0BAgElB,iBAAiB,cACjB,gBAAgB,gBACd,YAAY,YAChB,eAAe,WAChB,qBAAqB;gCAuFlB,iBAAiB,cACjB,gBAAgB,UACpB,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,kBACV,MAAM,8BACM,MAAM,IAAI;oCAWR,MAAM;qCAIvB,iBAAiB,SACvB,MAAM,OACR,MAAM,YACD,gBAAgB,CAAC,aAAa,CAAC;CA4B3C,CAAC;AAEH,eAAe,QAAQ,CAAC"}
|