@explorable-viz/fluid 0.7.61 → 0.7.62
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/dist/fluid/fluid/example/linked-inputs/energyscatter.fld +1 -2
- package/dist/fluid/fluid/example/linked-inputs/mini-energyscatter.fld +1 -2
- package/dist/fluid/fluid/example/plot/non-renewables.fld +3 -4
- package/dist/fluid/fluid/example/slicing/linked-outputs/stacked-bar-scatter-plot.fld +1 -2
- package/dist/fluid/fluid/lib/convolution.fld +4 -3
- package/dist/fluid/shared/fluid.mjs +5 -5
- package/dist/fluid/shared/load-figure.js +98 -150
- package/package.json +1 -1
|
@@ -19,6 +19,5 @@ let plot year countries =
|
|
|
19
19
|
in ScatterPlot {
|
|
20
20
|
caption: "Clean energy efficiency vs. proportion of renewable energy capacity",
|
|
21
21
|
points: plot 2018 [ "BRA", "CHN", "DEU", "FRA", "EGY", "IND", "JPN", "MEX", "NGA", "USA" ],
|
|
22
|
-
|
|
23
|
-
ylabel: "Clean Capacity Factor"
|
|
22
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
|
24
23
|
}
|
|
@@ -25,6 +25,5 @@ in ScatterPlot {
|
|
|
25
25
|
x: country.nonRenewables / country.totalCap,
|
|
26
26
|
y: country.renCapFactor
|
|
27
27
|
}| country <- energy 2018 ["USA"]],
|
|
28
|
-
|
|
29
|
-
ylabel: "Clean Capacity Factor"
|
|
28
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
|
30
29
|
}
|
|
@@ -2,8 +2,8 @@ let countries = ["BRA", "EGY", "IND", "JPN"];
|
|
|
2
2
|
let totalFor year country =
|
|
3
3
|
let [ row ] = [ row | row <- nonRenewables, row.year == year, row.country == country ]
|
|
4
4
|
in row.nuclearOut + row.gasOut + row.coalOut + row.petrolOut;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
let stack year = [ { y: country, z: totalFor year country } | country <- countries ];
|
|
6
|
+
let yearData year = [ row | row <- nonRenewables, row.year == year, row.country `elem` countries ]
|
|
7
7
|
in MultiView {
|
|
8
8
|
barChart: BarChart {
|
|
9
9
|
caption: "Non-renewables output",
|
|
@@ -16,7 +16,6 @@ in MultiView {
|
|
|
16
16
|
x: sum [ row.nuclearOut | row <- yearData year ],
|
|
17
17
|
y: sum [ row.nuclearCap | row <- yearData year ]
|
|
18
18
|
} | year <- [2014..2018] ],
|
|
19
|
-
|
|
20
|
-
ylabel: "Nuclear output"
|
|
19
|
+
labels: { x: "Nuclear capacity", y: "Nuclear output" }
|
|
21
20
|
}
|
|
22
21
|
}
|
|
@@ -33,7 +33,6 @@ MultiView {
|
|
|
33
33
|
in ScatterPlot {
|
|
34
34
|
caption: "Clean energy efficiency vs proportion of renewable energy capacity",
|
|
35
35
|
points: plot 2018 [ "BRA", "CHN", "DEU", "FRA", "EGY", "IND", "JPN", "MEX", "NGA", "USA" ],
|
|
36
|
-
|
|
37
|
-
ylabel: "Clean Capacity Factor"
|
|
36
|
+
labels: { x: "Renewables/TotalEnergyCap", y: "Clean Capacity Factor" }
|
|
38
37
|
}
|
|
39
38
|
}
|
|
@@ -2,15 +2,16 @@ let zero n = const n;
|
|
|
2
2
|
wrap n n_max = ((n - 1) `mod` n_max) + 1;
|
|
3
3
|
extend n = min (max n 1);
|
|
4
4
|
|
|
5
|
-
let convolve image kernel
|
|
5
|
+
let convolve image kernel boundary =
|
|
6
6
|
let ((m, n), (i, j)) = (dims image, dims kernel);
|
|
7
7
|
(half_i, half_j) = (i `quot` 2, j `quot` 2);
|
|
8
8
|
area = i * j
|
|
9
9
|
in [| let weightedSum = sum [
|
|
10
10
|
image!(x, y) * kernel!(i' + 1, j' + 1)
|
|
11
11
|
| (i', j') <- range (0, 0) (i - 1, j - 1),
|
|
12
|
-
let x =
|
|
13
|
-
let y =
|
|
12
|
+
let x = boundary (m' + i' - half_i) m,
|
|
13
|
+
let y = boundary (n' + j' - half_j) n,
|
|
14
14
|
x >= 1, x <= m, y >= 1, y <= n
|
|
15
15
|
] in weightedSum `quot` area
|
|
16
16
|
| (m', n') in (m, n) |];
|
|
17
|
+
|
|
@@ -10170,8 +10170,7 @@ var dataTypes = /* @__PURE__ */ foldrArray(Cons)(Nil)([
|
|
|
10170
10170
|
/* @__PURE__ */ $Tuple("Viewport", 9)
|
|
10171
10171
|
]),
|
|
10172
10172
|
/* @__PURE__ */ dataType("Transform")([/* @__PURE__ */ $Tuple("Scale", 2), /* @__PURE__ */ $Tuple("Translate", 2)]),
|
|
10173
|
-
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
|
10174
|
-
/* @__PURE__ */ dataType("Explanation")([/* @__PURE__ */ $Tuple("Explained", 2)])
|
|
10173
|
+
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
|
10175
10174
|
]);
|
|
10176
10175
|
var ctrToDataType = /* @__PURE__ */ (() => fromFoldable2(foldableList)(bindList.bind(listMap((d) => listMap((v) => $Tuple(
|
|
10177
10176
|
v,
|
|
@@ -28437,8 +28436,8 @@ var dispatchCommand = (v) => {
|
|
|
28437
28436
|
return _bind(evaluate(v._1))((v1) => _liftEffect(log(intercalate4("\n")(removeDocWS(prettyVal(highlightableUnit).pretty(v1)).lines))));
|
|
28438
28437
|
}
|
|
28439
28438
|
if (v.tag === "Publish") {
|
|
28440
|
-
return
|
|
28441
|
-
})(_liftEffect(publish(v._1)(v._2)))
|
|
28439
|
+
return _map((v$1) => {
|
|
28440
|
+
})(_liftEffect(publish(v._1)(v._2)));
|
|
28442
28441
|
}
|
|
28443
28442
|
fail();
|
|
28444
28443
|
};
|
|
@@ -28447,7 +28446,8 @@ var callback = (v) => {
|
|
|
28447
28446
|
return log(showErrorImpl(v._1));
|
|
28448
28447
|
}
|
|
28449
28448
|
if (v.tag === "Right") {
|
|
28450
|
-
return
|
|
28449
|
+
return () => {
|
|
28450
|
+
};
|
|
28451
28451
|
}
|
|
28452
28452
|
fail();
|
|
28453
28453
|
};
|
|
@@ -27787,8 +27787,7 @@ var dataTypes = /* @__PURE__ */ foldrArray(Cons)(Nil)([
|
|
|
27787
27787
|
/* @__PURE__ */ $Tuple("Viewport", 9)
|
|
27788
27788
|
]),
|
|
27789
27789
|
/* @__PURE__ */ dataType("Transform")([/* @__PURE__ */ $Tuple("Scale", 2), /* @__PURE__ */ $Tuple("Translate", 2)]),
|
|
27790
|
-
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
|
27791
|
-
/* @__PURE__ */ dataType("Explanation")([/* @__PURE__ */ $Tuple("Explained", 2)])
|
|
27790
|
+
/* @__PURE__ */ dataType("Marker")([/* @__PURE__ */ $Tuple("Arrowhead", 0)])
|
|
27792
27791
|
]);
|
|
27793
27792
|
var ctrToDataType = /* @__PURE__ */ (() => fromFoldable(foldableList)(bindList.bind(listMap((d) => listMap((v) => $Tuple(
|
|
27794
27793
|
v,
|
|
@@ -34840,7 +34839,6 @@ var forDefs = (\u03C1) => (\u03C3) => {
|
|
|
34840
34839
|
};
|
|
34841
34840
|
|
|
34842
34841
|
// output-es/Primitive/index.js
|
|
34843
|
-
var $Explanation = (_1, _2, _3) => ({ tag: "Explanation", _1, _2, _3 });
|
|
34844
34842
|
var fanin2 = /* @__PURE__ */ fanin(categoryFn)(choiceFn);
|
|
34845
34843
|
var isZeroNumber = { isZero: ($0) => 0 === $0 };
|
|
34846
34844
|
var isZeroInt = { isZero: ($0) => 0 === $0 };
|
|
@@ -34916,30 +34914,6 @@ var number5 = {
|
|
|
34916
34914
|
return typeError(v)("Float");
|
|
34917
34915
|
}
|
|
34918
34916
|
};
|
|
34919
|
-
var linkedTextEntry = {
|
|
34920
|
-
pack: (v) => {
|
|
34921
|
-
if (v.tag === "Left") {
|
|
34922
|
-
return $BaseVal("Str", v._1);
|
|
34923
|
-
}
|
|
34924
|
-
if (v.tag === "Right") {
|
|
34925
|
-
return $BaseVal(
|
|
34926
|
-
"Constr",
|
|
34927
|
-
"Explained",
|
|
34928
|
-
$List("Cons", $Val(v._1._1, $BaseVal("Str", v._1._2)), $List("Cons", $Val(v._1._3._1, v._1._3._2), Nil))
|
|
34929
|
-
);
|
|
34930
|
-
}
|
|
34931
|
-
fail();
|
|
34932
|
-
},
|
|
34933
|
-
unpack: (v) => {
|
|
34934
|
-
if (v.tag === "Str") {
|
|
34935
|
-
return $Either("Left", v._1);
|
|
34936
|
-
}
|
|
34937
|
-
if (v.tag === "Constr" && v._2.tag === "Cons" && v._2._1._2.tag === "Str" && v._2._2.tag === "Cons" && v._2._2._2.tag === "Nil" && v._1 === "Explained") {
|
|
34938
|
-
return $Either("Right", $Explanation(v._2._2._1._1, v._2._1._2._1, v._2._2._1));
|
|
34939
|
-
}
|
|
34940
|
-
return typeError(v)("String or Explanation");
|
|
34941
|
-
}
|
|
34942
|
-
};
|
|
34943
34917
|
var intOrNumberOrString = {
|
|
34944
34918
|
pack: (v) => {
|
|
34945
34919
|
if (v.tag === "Left") {
|
|
@@ -36593,7 +36567,19 @@ var reflectDictSelState\u{1D54A}$x215ValS3 = {
|
|
|
36593
36567
|
})()
|
|
36594
36568
|
})
|
|
36595
36569
|
};
|
|
36596
|
-
var reflectDictSelState\u{1D54A}$x215ValS12 = {
|
|
36570
|
+
var reflectDictSelState\u{1D54A}$x215ValS12 = {
|
|
36571
|
+
from: () => (r) => ({
|
|
36572
|
+
x: (() => {
|
|
36573
|
+
const $0 = $$get2(showString)(mapDictString)("x")(r);
|
|
36574
|
+
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
|
36575
|
+
})(),
|
|
36576
|
+
y: (() => {
|
|
36577
|
+
const $0 = $$get2(showString)(mapDictString)("y")(r);
|
|
36578
|
+
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
|
36579
|
+
})()
|
|
36580
|
+
})
|
|
36581
|
+
};
|
|
36582
|
+
var reflectDictSelState\u{1D54A}$x215ValS23 = { from: () => (r) => ({ x: get_intOrNumber("x")(r), y: get_intOrNumber("y")(r) }) };
|
|
36597
36583
|
|
|
36598
36584
|
// output-es/App.View.LineChart/index.js
|
|
36599
36585
|
var identity27 = (x2) => x2;
|
|
@@ -36622,7 +36608,7 @@ var reflectDictSelState\u{1D54A}$x215ValS4 = {
|
|
|
36622
36608
|
const $0 = $$get2(showString)(mapDictString)("name")(r);
|
|
36623
36609
|
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
|
36624
36610
|
})(),
|
|
36625
|
-
points: arrayMap(dict(reflectDictSelState\u{1D54A}$
|
|
36611
|
+
points: arrayMap(dict(reflectDictSelState\u{1D54A}$x215ValS23.from()))(reflectValSelState\u{1D54A}ArrayV.from()($$get2(showString)(mapDictString)("points")(r)._2))
|
|
36626
36612
|
})
|
|
36627
36613
|
};
|
|
36628
36614
|
var reflectValSelState\u{1D54A}LinePl = {
|
|
@@ -36897,114 +36883,84 @@ var drawableLineChart = {
|
|
|
36897
36883
|
}
|
|
36898
36884
|
};
|
|
36899
36885
|
|
|
36900
|
-
// output-es/App.View.LinkedText/
|
|
36901
|
-
|
|
36902
|
-
|
|
36903
|
-
|
|
36904
|
-
}
|
|
36905
|
-
return this;
|
|
36886
|
+
// output-es/App.View.LinkedText/index.js
|
|
36887
|
+
var for_4 = /* @__PURE__ */ for_(applicativeEffect)(foldableArray);
|
|
36888
|
+
var forWithIndex_2 = /* @__PURE__ */ forWithIndex_(applicativeEffect)(foldableWithIndexArray);
|
|
36889
|
+
var reflectValSelState\u{1D54A}Linked = {
|
|
36890
|
+
from: () => (r) => arrayMap((v) => $Tuple(v._2.tag === "Str" ? v._2._1 : typeError(v._2)("Str"), v._1))(reflectValSelState\u{1D54A}ArrayV.from()(r))
|
|
36906
36891
|
};
|
|
36907
|
-
|
|
36908
|
-
|
|
36909
|
-
selClasses: selClasses2,
|
|
36910
|
-
selClassesFor: selClassesFor2,
|
|
36911
|
-
join: join3
|
|
36912
|
-
}, div, view2, selListener2) {
|
|
36913
|
-
div.selectAll("span").each(function(textElem) {
|
|
36914
|
-
var sel;
|
|
36915
|
-
if (textElem.conts.tag == "Left") {
|
|
36916
|
-
sel = accessAnn(view2[textElem.i]);
|
|
36917
|
-
} else {
|
|
36918
|
-
sel = accessAnn(view2[textElem.i]);
|
|
36919
|
-
}
|
|
36920
|
-
select_default2(this).classed(selClasses2, false).classed(selClassesFor2(sel), true).on("mousedown", (e) => {
|
|
36921
|
-
selListener2(e);
|
|
36922
|
-
}).on("mouseenter", (e) => {
|
|
36923
|
-
selListener2(e);
|
|
36924
|
-
}).on("mouseleave", (e) => {
|
|
36925
|
-
selListener2(e);
|
|
36926
|
-
});
|
|
36927
|
-
});
|
|
36928
|
-
}
|
|
36929
|
-
function drawLinkedText_({
|
|
36930
|
-
explanation,
|
|
36931
|
-
contents,
|
|
36932
|
-
accessAnn
|
|
36933
|
-
}, uiHelpers2, {
|
|
36934
|
-
divId,
|
|
36935
|
-
suffix,
|
|
36936
|
-
view: view2
|
|
36937
|
-
}, selListener2) {
|
|
36892
|
+
var setSelState3 = (v) => (redraw) => (rootElement) => {
|
|
36893
|
+
const $0 = selectAll2(".linked-text")(rootElement);
|
|
36938
36894
|
return () => {
|
|
36939
|
-
const
|
|
36940
|
-
|
|
36941
|
-
|
|
36942
|
-
|
|
36943
|
-
|
|
36944
|
-
|
|
36945
|
-
|
|
36946
|
-
|
|
36947
|
-
|
|
36948
|
-
|
|
36895
|
+
const elems$p = $0();
|
|
36896
|
+
return for_4(elems$p)((elem2) => {
|
|
36897
|
+
const $1 = datum2(elem2);
|
|
36898
|
+
return () => {
|
|
36899
|
+
const v1 = $1();
|
|
36900
|
+
const $2 = definitely("index within bounds")(index(v)(v1.i));
|
|
36901
|
+
const $3 = styles(elem2)(fromFoldable10([
|
|
36902
|
+
$Tuple("border-bottom", isTransient($2._2) ? "1px solid blue" : "none"),
|
|
36903
|
+
$Tuple(
|
|
36904
|
+
"background",
|
|
36905
|
+
(() => {
|
|
36906
|
+
if (isPrimary($2._2) && isPersistent($2._2)) {
|
|
36907
|
+
return "#93E9BE";
|
|
36908
|
+
}
|
|
36909
|
+
if (isSecondary($2._2) && isPersistent($2._2)) {
|
|
36910
|
+
return "rgb(226, 226, 226)";
|
|
36911
|
+
}
|
|
36912
|
+
return "white";
|
|
36913
|
+
})()
|
|
36914
|
+
),
|
|
36915
|
+
$Tuple(
|
|
36916
|
+
"color",
|
|
36917
|
+
(() => {
|
|
36918
|
+
if (isPrimary($2._2) && isTransient($2._2)) {
|
|
36919
|
+
return "blue";
|
|
36920
|
+
}
|
|
36921
|
+
if (isSecondary($2._2) && isTransient($2._2)) {
|
|
36922
|
+
return "royalblue";
|
|
36923
|
+
}
|
|
36924
|
+
return "black";
|
|
36925
|
+
})()
|
|
36926
|
+
)
|
|
36927
|
+
]))();
|
|
36928
|
+
return for_2(["mousedown", "mouseenter", "mouseleave"])((ev) => on(ev)(redraw)($3))();
|
|
36929
|
+
};
|
|
36930
|
+
})();
|
|
36949
36931
|
};
|
|
36950
|
-
}
|
|
36951
|
-
var drawLinkedText = (x1) => (x2) => (x3) => (x4) => drawLinkedText_(x1, x2, x3, x4);
|
|
36952
|
-
|
|
36953
|
-
// output-es/App.View.LinkedText/index.js
|
|
36954
|
-
var linkedTextHelpers = {
|
|
36955
|
-
explanation: (v) => {
|
|
36956
|
-
if (v.tag === "Left") {
|
|
36957
|
-
return v._1._1;
|
|
36958
|
-
}
|
|
36959
|
-
if (v.tag === "Right") {
|
|
36960
|
-
return v._1._1._2;
|
|
36961
|
-
}
|
|
36962
|
-
fail();
|
|
36963
|
-
},
|
|
36964
|
-
contents: (v) => {
|
|
36965
|
-
if (v.tag === "Left") {
|
|
36966
|
-
return v._1._1;
|
|
36967
|
-
}
|
|
36968
|
-
if (v.tag === "Right") {
|
|
36969
|
-
if (v._1._1._3._2.tag === "Str") {
|
|
36970
|
-
return v._1._1._3._2._1;
|
|
36971
|
-
}
|
|
36972
|
-
return typeError(v._1._1._3._2)("Str");
|
|
36973
|
-
}
|
|
36974
|
-
fail();
|
|
36975
|
-
},
|
|
36976
|
-
accessAnn: (v) => {
|
|
36977
|
-
if (v.tag === "Left") {
|
|
36978
|
-
return v._1._2;
|
|
36979
|
-
}
|
|
36980
|
-
if (v.tag === "Right") {
|
|
36981
|
-
return v._1._1._1;
|
|
36982
|
-
}
|
|
36983
|
-
fail();
|
|
36984
|
-
}
|
|
36985
36932
|
};
|
|
36933
|
+
var createRootElement2 = (v) => (div) => (childId) => {
|
|
36934
|
+
const $0 = createChild(div)(showElementType.show(Text2))(fromFoldable10([
|
|
36935
|
+
classes(["linked-text-parent"]),
|
|
36936
|
+
$Tuple("id", childId)
|
|
36937
|
+
]));
|
|
36938
|
+
return () => {
|
|
36939
|
+
const rootElement = $0();
|
|
36940
|
+
forWithIndex_2(v)((i) => (elem2) => {
|
|
36941
|
+
const $1 = createChild(rootElement)(showElementType.show(Text2))(fromFoldable10([
|
|
36942
|
+
classes(["linked-text"]),
|
|
36943
|
+
$Tuple("id", childId)
|
|
36944
|
+
]));
|
|
36945
|
+
return () => {
|
|
36946
|
+
const elem$p = $1();
|
|
36947
|
+
const $2 = setText(elem2._1)(elem$p)();
|
|
36948
|
+
return setDatum({ i })($2)();
|
|
36949
|
+
};
|
|
36950
|
+
})();
|
|
36951
|
+
return rootElement;
|
|
36952
|
+
};
|
|
36953
|
+
};
|
|
36954
|
+
var drawable2LinkedText = { createRootElement: createRootElement2, setSelState: setSelState3 };
|
|
36986
36955
|
var drawableLinkedText = {
|
|
36987
36956
|
draw: (rSpec) => (figVal) => (v) => (redraw) => {
|
|
36988
|
-
const $0 =
|
|
36989
|
-
const $1 = selListener(figVal)(redraw)((v1) => (x2) => constrArg("LinkedText")(0)(listElement(v1.i)(x2)));
|
|
36957
|
+
const $0 = selListener(figVal)(redraw)((v1) => (x2) => constrArg("LinkedText")(0)(listElement(v1.i)(x2)));
|
|
36990
36958
|
return () => {
|
|
36991
|
-
const $
|
|
36992
|
-
return $
|
|
36959
|
+
const $1 = $0();
|
|
36960
|
+
return draw$p(drawable2LinkedText)(uiHelpers)(rSpec)($1)();
|
|
36993
36961
|
};
|
|
36994
36962
|
}
|
|
36995
36963
|
};
|
|
36996
|
-
var reflectValSelState\u{1D54A}Linked = {
|
|
36997
|
-
from: () => (r) => arrayMap((x2) => {
|
|
36998
|
-
const $0 = linkedTextEntry.unpack(x2._2);
|
|
36999
|
-
if ($0.tag === "Left") {
|
|
37000
|
-
return $Either("Left", $Tuple($0._1, x2._1));
|
|
37001
|
-
}
|
|
37002
|
-
if ($0.tag === "Right") {
|
|
37003
|
-
return $Either("Right", $Tuple($0._1, x2._1));
|
|
37004
|
-
}
|
|
37005
|
-
fail();
|
|
37006
|
-
})(reflectValSelState\u{1D54A}ArrayV.from()(r))
|
|
37007
|
-
};
|
|
37008
36964
|
|
|
37009
36965
|
// output-es/App.View.MatrixView/foreign.js
|
|
37010
36966
|
function setSelState4({
|
|
@@ -37188,8 +37144,7 @@ function drawScatterPlot_(scatterPlotHelpers2, uiHelpers2, {
|
|
|
37188
37144
|
view: {
|
|
37189
37145
|
caption,
|
|
37190
37146
|
points,
|
|
37191
|
-
|
|
37192
|
-
ylabel
|
|
37147
|
+
labels
|
|
37193
37148
|
}
|
|
37194
37149
|
}, listener) {
|
|
37195
37150
|
return () => {
|
|
@@ -37215,8 +37170,8 @@ function drawScatterPlot_(scatterPlotHelpers2, uiHelpers2, {
|
|
|
37215
37170
|
rootElement.append("g").attr("transform", "translate(0," + height + ")").call(axisBottom(x2).tickSizeOuter(0)).selectAll("text").style("text-anchor", "middle");
|
|
37216
37171
|
const y2 = linear2().domain([Math.min(0, y_min), y_max]).range([height, 0]);
|
|
37217
37172
|
rootElement.append("g").call(axisLeft(y2).tickSizeOuter(0));
|
|
37218
|
-
rootElement.append("text").attr("x", width).attr("y", height + 25).style("text-anchor", "end").style("font-size", "10px").text(val(
|
|
37219
|
-
rootElement.append("text").attr("transform", "rotate(-90)").attr("x", -margin.top).attr("y", -margin.left + 20).style("text-anchor", "end").style("font-size", "10px").text(val(
|
|
37173
|
+
rootElement.append("text").attr("x", width).attr("y", height + 25).style("text-anchor", "end").style("font-size", "10px").text(val(labels.x));
|
|
37174
|
+
rootElement.append("text").attr("transform", "rotate(-90)").attr("x", -margin.top).attr("y", -margin.left + 20).style("text-anchor", "end").style("font-size", "10px").text(val(labels.y));
|
|
37220
37175
|
rootElement.append("g").selectAll("circle").data([...points.entries()].map(([i, point2]) => {
|
|
37221
37176
|
return { i, point: point2 };
|
|
37222
37177
|
})).enter().append("circle").classed("scatterplot-point", true).attr("cx", ({ point: point2 }) => x2(val(point2.x))).attr("cy", ({ point: point2 }) => y2(val(point2.y))).attr("stroke-width", 0.5);
|
|
@@ -37236,15 +37191,8 @@ var reflectDictSelState\u{1D54A}$x215ValS5 = {
|
|
|
37236
37191
|
const $0 = $$get2(showString)(mapDictString)("caption")(r);
|
|
37237
37192
|
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
|
37238
37193
|
})(),
|
|
37239
|
-
points: arrayMap(dict(reflectDictSelState\u{1D54A}$
|
|
37240
|
-
|
|
37241
|
-
const $0 = $$get2(showString)(mapDictString)("xlabel")(r);
|
|
37242
|
-
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
|
37243
|
-
})(),
|
|
37244
|
-
ylabel: (() => {
|
|
37245
|
-
const $0 = $$get2(showString)(mapDictString)("ylabel")(r);
|
|
37246
|
-
return $Tuple($0._2._2.tag === "Str" ? $0._2._2._1 : typeError($0._2._2)("Str"), $0._2._1);
|
|
37247
|
-
})()
|
|
37194
|
+
points: arrayMap(dict(reflectDictSelState\u{1D54A}$x215ValS23.from()))(reflectValSelState\u{1D54A}ArrayV.from()($$get2(showString)(mapDictString)("points")(r)._2)),
|
|
37195
|
+
labels: dict(reflectDictSelState\u{1D54A}$x215ValS12.from())($$get2(showString)(mapDictString)("labels")(r)._2)
|
|
37248
37196
|
})
|
|
37249
37197
|
};
|
|
37250
37198
|
var scatterPlotHelpers = {
|
|
@@ -37334,12 +37282,12 @@ var toStringWith = (v) => {
|
|
|
37334
37282
|
// output-es/App.View.TableView/index.js
|
|
37335
37283
|
var $Filter = (tag) => tag;
|
|
37336
37284
|
var toUnfoldable9 = /* @__PURE__ */ toUnfoldable4(unfoldableArray);
|
|
37337
|
-
var
|
|
37285
|
+
var forWithIndex_3 = /* @__PURE__ */ forWithIndex_(applicativeEffect)(foldableWithIndexArray);
|
|
37338
37286
|
var $$for = /* @__PURE__ */ (() => {
|
|
37339
37287
|
const traverse2 = traversableArray.traverse(applicativeEffect);
|
|
37340
37288
|
return (x2) => (f) => traverse2(f)(x2);
|
|
37341
37289
|
})();
|
|
37342
|
-
var
|
|
37290
|
+
var for_5 = /* @__PURE__ */ for_(applicativeEffect)(foldableArray);
|
|
37343
37291
|
var Interactive = /* @__PURE__ */ $Filter("Interactive");
|
|
37344
37292
|
var prim = (v) => {
|
|
37345
37293
|
if (v._2.tag === "Int") {
|
|
@@ -37363,7 +37311,7 @@ var record_isVisible = (r) => filter((v) => {
|
|
|
37363
37311
|
}
|
|
37364
37312
|
fail();
|
|
37365
37313
|
})(r).length !== 0;
|
|
37366
|
-
var
|
|
37314
|
+
var createRootElement3 = (v) => (div) => (childId) => {
|
|
37367
37315
|
const $0 = v.colNames;
|
|
37368
37316
|
const $1 = v.filter;
|
|
37369
37317
|
const $2 = v.rows;
|
|
@@ -37381,7 +37329,7 @@ var createRootElement2 = (v) => (div) => (childId) => {
|
|
|
37381
37329
|
const colNames$p = ["__n", ...$0];
|
|
37382
37330
|
const $4 = createChild(rootElement)(showElementType.show(THead))(fromFoldable10([]))();
|
|
37383
37331
|
const row = createChild($4)(showElementType.show(TR))(fromFoldable10([]))();
|
|
37384
|
-
|
|
37332
|
+
forWithIndex_3(colNames$p)((j) => (colName) => {
|
|
37385
37333
|
const value = (() => {
|
|
37386
37334
|
if (colName === "__n") {
|
|
37387
37335
|
if ($1 === "Relevant") {
|
|
@@ -37403,7 +37351,7 @@ var createRootElement2 = (v) => (div) => (childId) => {
|
|
|
37403
37351
|
};
|
|
37404
37352
|
})();
|
|
37405
37353
|
const body = createChild(rootElement)(showElementType.show(TBody))(fromFoldable10([]))();
|
|
37406
|
-
|
|
37354
|
+
forWithIndex_3($2)((i) => (row$1) => {
|
|
37407
37355
|
const $5 = createChild(body)(showElementType.show(TR))(fromFoldable10([
|
|
37408
37356
|
classes(["table-row"])
|
|
37409
37357
|
]));
|
|
@@ -37411,7 +37359,7 @@ var createRootElement2 = (v) => (div) => (childId) => {
|
|
|
37411
37359
|
return () => {
|
|
37412
37360
|
const $7 = $5();
|
|
37413
37361
|
const row$p = $6($7)();
|
|
37414
|
-
return
|
|
37362
|
+
return forWithIndex_3([showIntImpl(i + 1 | 0), ...arrayMap(prim)(row$1)])((j) => (value) => {
|
|
37415
37363
|
const $8 = createChild(row$p)(showElementType.show(TD))(fromFoldable10([
|
|
37416
37364
|
classes(j >= 0 ? ["table-cell"] : [])
|
|
37417
37365
|
]));
|
|
@@ -37487,7 +37435,7 @@ var setSelState6 = (v) => (redraw) => (rootElement) => {
|
|
|
37487
37435
|
const $3 = selectAll2(".table-cell")(rootElement);
|
|
37488
37436
|
return () => {
|
|
37489
37437
|
const cells = $3();
|
|
37490
|
-
|
|
37438
|
+
for_5(cells)((cell) => {
|
|
37491
37439
|
const $42 = datum2(cell);
|
|
37492
37440
|
return () => {
|
|
37493
37441
|
const v12 = $42();
|
|
@@ -37545,11 +37493,11 @@ var setSelState6 = (v) => (redraw) => (rootElement) => {
|
|
|
37545
37493
|
};
|
|
37546
37494
|
})();
|
|
37547
37495
|
const v1 = partition(snd)(a$p);
|
|
37548
|
-
|
|
37496
|
+
for_5(v1.no)((() => {
|
|
37549
37497
|
const $42 = classed("hidden")(true);
|
|
37550
37498
|
return (x2) => $42(x2._1);
|
|
37551
37499
|
})())();
|
|
37552
|
-
|
|
37500
|
+
for_5(v1.yes)((() => {
|
|
37553
37501
|
const $42 = classed("hidden")(false);
|
|
37554
37502
|
return (x2) => $42(x2._1);
|
|
37555
37503
|
})())();
|
|
@@ -37557,7 +37505,7 @@ var setSelState6 = (v) => (redraw) => (rootElement) => {
|
|
|
37557
37505
|
setText($1 + " (" + showIntImpl($0.length - v1.no.length | 0) + " of " + showIntImpl($0.length) + ")")($4)();
|
|
37558
37506
|
};
|
|
37559
37507
|
};
|
|
37560
|
-
var drawable2TableView = { createRootElement:
|
|
37508
|
+
var drawable2TableView = { createRootElement: createRootElement3, setSelState: setSelState6 };
|
|
37561
37509
|
var drawableTableView = {
|
|
37562
37510
|
draw: (rSpec) => (figVal) => (v) => (redraw) => {
|
|
37563
37511
|
const $0 = selListener(figVal)(redraw)((v1) => (x2) => listElement(v1.i)(dictVal(v1.colName)(x2)));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@explorable-viz/fluid",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.62",
|
|
4
4
|
"description": "Fluid is an experimental programming language which integrates a bidirectional dynamic analysis to connect outputs to data sources in a fine-grained way. Fluid is implemented in PureScript and runs in the browser.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|