|
diff --git a/ord_interface/editor/js/amounts.js b/ord_interface/editor/js/amounts.js
index 84d74722..5afdad54 100644
--- a/ord_interface/editor/js/amounts.js
+++ b/ord_interface/editor/js/amounts.js
@@ -22,6 +22,7 @@ exports = {
unload,
};
+const asserts = goog.require('goog.asserts');
const utils = goog.require('ord.utils');
const Amount = goog.require('proto.ord.Amount');
@@ -31,6 +32,9 @@ const Moles = goog.require('proto.ord.Moles');
const MolesUnit = goog.require('proto.ord.Moles.MolesUnit');
const Volume = goog.require('proto.ord.Volume');
const VolumeUnit = goog.require('proto.ord.Volume.VolumeUnit');
+const UnmeasuredAmount = goog.require('proto.ord.UnmeasuredAmount');
+const UnmeasuredAmountType =
+ goog.require('proto.ord.UnmeasuredAmount.UnmeasuredAmountType');
/**
* Initializes the selector for an Amount section.
@@ -149,6 +153,10 @@ function load(node, amount) {
: null;
utils.setOptionalBool($('.amount_includes_solutes.optional_bool', node),
solutes);
+ } else if (amount.hasUnmeasured()) {
+ const unmeasured = amount.getUnmeasured();
+ utils.setSelector($('.unmeasured_amount_type', node), unmeasured.getType());
+ $('.unmeasured_amount_details', node).text(unmeasured.getDetails());
}
}
@@ -161,10 +169,13 @@ function unload(node) {
const amount = new Amount();
// NOTE(kearnes): Take the closest amount section; there may be others
// nested deeper (e.g. in ProductMeasurement fields under a ReactionProduct).
- node = $('.amount', node).first();
+ if (!$(node).hasClass("amount")) {
+ node = $('.amount', node).first();
+ }
const value = parseFloat($('.amount_value', node).text());
const precision = parseFloat($('.amount_precision', node).text());
const units = $('.amount_units', node).val();
+ const unmeasuredDetails = $('.unmeasured_amount_details', node).text();
if (MassUnit[units]) {
const message = new Mass();
if (!isNaN(value)) {
@@ -206,6 +217,15 @@ function unload(node) {
if (solutes !== null) {
amount.setVolumeIncludesSolutes(solutes);
}
+ } else if (unmeasuredDetails) {
+ const unmeasured = new UnmeasuredAmount();
+ const unmeasuredType =
+ utils.getSelectorText($('.unmeasured_amount_type', node)[0]);
+ unmeasured.setType(UnmeasuredAmountType[unmeasuredType]);
+ unmeasured.setDetails(asserts.assertString(unmeasuredDetails));
+ if (!utils.isEmptyMessage(unmeasured)) {
+ amount.setUnmeasured(unmeasured);
+ }
}
return amount;
}
diff --git a/ord_interface/editor/js/utils.js b/ord_interface/editor/js/utils.js
index ffff6131..dcfde36c 100644
--- a/ord_interface/editor/js/utils.js
+++ b/ord_interface/editor/js/utils.js
@@ -561,6 +561,7 @@ async function compareDataset(fileName, dataset) {
if (xhr.status === 200) {
resolve();
} else {
+ console.log(xhr.response);
reject();
}
};
diff --git a/ord_interface/editor/py/serve.py b/ord_interface/editor/py/serve.py
index d5a2050c..a7284d76 100644
--- a/ord_interface/editor/py/serve.py
+++ b/ord_interface/editor/py/serve.py
@@ -533,8 +533,8 @@ def compare(name):
local_ascii = text_format.MessageToString(local)
if remote_ascii != local_ascii:
diff = difflib.context_diff(local_ascii.splitlines(), remote_ascii.splitlines(), n=10)
- print(f"Datasets differ:\n{pprint.pformat(list(diff))}")
- return "differs", 409 # "Conflict"
+ diff_text = pprint.pformat(list(diff))
+ return diff_text, 409 # "Conflict"
return "equals"
|