Skip to content

Commit a27f4f1

Browse files
committed
Add Editable Annotations to Config
1 parent adaf9e3 commit a27f4f1

File tree

1 file changed

+59
-106
lines changed

1 file changed

+59
-106
lines changed

src/FSharp.Plotly/Config.fs

Lines changed: 59 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,42 @@
11
namespace FSharp.Plotly
22

3-
//full attributes from the plotly docs :
4-
//var configAttributes = {
5-
// staticPlot: {
6-
// valType: 'boolean',
7-
// dflt: false,
8-
// description: [
9-
// 'Determines whether the graphs are interactive or not.',
10-
// 'If *false*, no interactivity, for export or image generation.'
11-
// ].join(' ')
12-
// },
3+
//Missing imploementations (from full attributes from the plotly docs) :
4+
//To string: -> edits: {AnnotationEditOptions}
5+
type AnnotationEditOptions =
6+
///Determines if the main anchor of the annotation is editable.The main anchor corresponds to the',
7+
///text (if no arrow) or the arrow (which drags the whole thing leaving the arrow length & direction unchanged).
8+
|AnnotationPosition
9+
///Has only an effect for annotations with arrows. Enables changing the length and direction of the arrow.
10+
|AnnotationTail
11+
///Enables editing annotation text.
12+
|AnnotationText
13+
///Enables editing axis title text.
14+
|AxisTitleText
15+
///Enables moving colorbars.
16+
|ColorbarPosition
17+
///Enables editing colorbar title text.
18+
|ColorbarTitleText
19+
///Enables moving the legend.
20+
|LegendPosition
21+
///Enables editing the trace name fields from the legend
22+
|LegendText
23+
///Enables moving shapes.
24+
|ShapePosition
25+
26+
static member toString aeo =
27+
match aeo with
28+
|AnnotationPosition -> "annotationPosition"
29+
|AnnotationTail -> "annotationTail"
30+
|AnnotationText -> "annotationText"
31+
|AxisTitleText -> "axisTitleText"
32+
|ColorbarPosition -> "colorbarPosition"
33+
|ColorbarTitleText -> "colorbarTitleText"
34+
|LegendPosition -> "legendPosition"
35+
|LegendText -> "legendText"
36+
|ShapePosition -> "shapePosition"
1337

14-
// plotlyServerURL: {
15-
// valType: 'string',
16-
// dflt: 'https://plot.ly',
17-
// description: [
18-
// 'Sets base URL for the \'Edit in Chart Studio\' (aka sendDataToCloud) mode bar button',
19-
// 'and the showLink/sendData on-graph link'
20-
// ].join(' ')
21-
// },
2238

23-
// editable: {
24-
// valType: 'boolean',
25-
// dflt: false,
26-
// description: [
27-
// 'Determines whether the graph is editable or not.',
28-
// 'Sets all pieces of `edits`',
29-
// 'unless a separate `edits` config item overrides individual parts.'
30-
// ].join(' ')
31-
// },
32-
// edits: {
33-
// annotationPosition: {
34-
// valType: 'boolean',
35-
// dflt: false,
36-
// description: [
37-
// 'Determines if the main anchor of the annotation is editable.',
38-
// 'The main anchor corresponds to the',
39-
// 'text (if no arrow) or the arrow (which drags the whole thing leaving',
40-
// 'the arrow length & direction unchanged).'
41-
// ].join(' ')
42-
// },
43-
// annotationTail: {
44-
// valType: 'boolean',
45-
// dflt: false,
46-
// description: [
47-
// 'Has only an effect for annotations with arrows.',
48-
// 'Enables changing the length and direction of the arrow.'
49-
// ].join(' ')
50-
// },
51-
// annotationText: {
52-
// valType: 'boolean',
53-
// dflt: false,
54-
// description: 'Enables editing annotation text.'
55-
// },
56-
// axisTitleText: {
57-
// valType: 'boolean',
58-
// dflt: false,
59-
// description: 'Enables editing axis title text.'
60-
// },
61-
// colorbarPosition: {
62-
// valType: 'boolean',
63-
// dflt: false,
64-
// description: 'Enables moving colorbars.'
65-
// },
66-
// colorbarTitleText: {
67-
// valType: 'boolean',
68-
// dflt: false,
69-
// description: 'Enables editing colorbar title text.'
70-
// },
71-
// legendPosition: {
72-
// valType: 'boolean',
73-
// dflt: false,
74-
// description: 'Enables moving the legend.'
75-
// },
76-
// legendText: {
77-
// valType: 'boolean',
78-
// dflt: false,
79-
// description: 'Enables editing the trace name fields from the legend'
80-
// },
81-
// shapePosition: {
82-
// valType: 'boolean',
83-
// dflt: false,
84-
// description: 'Enables moving shapes.'
85-
// },
86-
// titleText: {
87-
// valType: 'boolean',
88-
// dflt: false,
89-
// description: 'Enables editing the global layout title.'
90-
// }
91-
// },
9239

93-
// autosizable: {
94-
// valType: 'boolean',
95-
// dflt: false,
96-
// description: [
97-
// 'Determines whether the graphs are plotted with respect to',
98-
// 'layout.autosize:true and infer its container size.'
99-
// ].join(' ')
100-
// },
101-
// responsive: {
102-
// valType: 'boolean',
103-
// dflt: false,
104-
// description: [
105-
// 'Determines whether to change the layout size when window is resized.',
106-
// 'In v2, this option will be removed and will always be true.'
107-
// ].join(' ')
108-
// },
10940
// fillFrame: {
11041
// valType: 'boolean',
11142
// dflt: false,
@@ -467,7 +398,9 @@ type Config() =
467398
?Autosizable : bool,
468399
?Responsive : bool,
469400
?ShowEditInChartStudio : bool,
470-
?ToImageButtonOptions : ToImageButtonOptions
401+
?ToImageButtonOptions : ToImageButtonOptions,
402+
?Editable : bool,
403+
?EditableAnnotations : seq<AnnotationEditOptions>
471404
) =
472405
Config()
473406
|> Config.style
@@ -476,7 +409,9 @@ type Config() =
476409
?Autosizable = Autosizable,
477410
?Responsive = Responsive,
478411
?ToImageButtonOptions = ToImageButtonOptions,
479-
?ShowEditInChartStudio = ShowEditInChartStudio
412+
?ShowEditInChartStudio = ShowEditInChartStudio,
413+
?Editable = Editable,
414+
?EditableAnnotations = EditableAnnotations
480415
)
481416

482417

@@ -489,7 +424,9 @@ type Config() =
489424
?Autosizable : bool,
490425
?Responsive : bool,
491426
?ToImageButtonOptions : ToImageButtonOptions,
492-
?ShowEditInChartStudio : bool
427+
?ShowEditInChartStudio : bool,
428+
?Editable : bool,
429+
?EditableAnnotations : seq<AnnotationEditOptions>
493430

494431
) =
495432
fun (config:Config) ->
@@ -498,4 +435,20 @@ type Config() =
498435
Responsive |> DynObj.setValueOpt config "responsive"
499436
ToImageButtonOptions |> DynObj.setValueOpt config "toImageButtonOptions"
500437
ShowEditInChartStudio |> DynObj.setValueOpt config "showEditInChartStudio"
438+
Editable |> DynObj.setValueOpt config "editable"
439+
EditableAnnotations
440+
|> Option.map
441+
(fun edits ->
442+
let ed = DynamicObj()
443+
edits
444+
|> Seq.iter
445+
(fun edit ->
446+
let fieldName =
447+
AnnotationEditOptions.toString edit
448+
ed?(fieldName) <- true
449+
)
450+
ed
451+
)
452+
|> DynObj.setValueOpt config "edits"
453+
501454
config

0 commit comments

Comments
 (0)