solid-ui 2.4.22-3e0d1a42 → 2.4.22-4485d5d9
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 +23 -58
- package/dist/main.js +310 -180
- package/dist/main.js.map +1 -1
- package/lib/utils/label.js +1 -1
- package/lib/utils/label.js.map +1 -1
- package/lib/versionInfo.js +5 -5
- package/lib/versionInfo.js.map +1 -1
- package/lib/widgets/buttons.d.ts.map +1 -1
- package/lib/widgets/buttons.js +2 -0
- package/lib/widgets/buttons.js.map +1 -1
- package/lib/widgets/forms.js +302 -174
- package/lib/widgets/forms.js.map +1 -1
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -15172,7 +15172,7 @@ function slice(s, suffix) {
|
|
|
15172
15172
|
|
|
15173
15173
|
function getWellKnownLabel(thing) {
|
|
15174
15174
|
return _solidLogic.store.any(thing, UI.ns.ui('label')) || // Prioritize ui:label
|
|
15175
|
-
_solidLogic.store.any(thing, UI.ns.link('message')) || _solidLogic.store.any(thing, UI.ns.vcard('fn')) || _solidLogic.store.any(thing, UI.ns.foaf('name')) || _solidLogic.store.any(thing, UI.ns.dct('title')) || _solidLogic.store.any(thing, UI.ns.dc('title')) || _solidLogic.store.any(thing, UI.ns.rss('title')) || _solidLogic.store.any(thing, UI.ns.contact('fullName')) || _solidLogic.store.any(thing, _solidLogic.store.sym('http://www.w3.org/2001/04/roadmap/org#name')) || _solidLogic.store.any(thing, UI.ns.cal('summary')) || _solidLogic.store.any(thing, UI.ns.foaf('nick')) || _solidLogic.store.any(thing, UI.ns.as('name')) || _solidLogic.store.any(thing, UI.ns.schema('name')) || _solidLogic.store.any(thing, UI.ns.rdfs('label'));
|
|
15175
|
+
_solidLogic.store.any(thing, UI.ns.link('message')) || _solidLogic.store.any(thing, UI.ns.vcard('fn')) || _solidLogic.store.any(thing, UI.ns.foaf('name')) || _solidLogic.store.any(thing, UI.ns.dct('title')) || _solidLogic.store.any(thing, UI.ns.dc('title')) || _solidLogic.store.any(thing, UI.ns.rss('title')) || _solidLogic.store.any(thing, UI.ns.contact('fullName')) || _solidLogic.store.any(thing, _solidLogic.store.sym('http://www.w3.org/2001/04/roadmap/org#name')) || _solidLogic.store.any(thing, UI.ns.cal('summary')) || _solidLogic.store.any(thing, UI.ns.foaf('nick')) || _solidLogic.store.any(thing, UI.ns.as('name')) || _solidLogic.store.any(thing, UI.ns.schema('name')) || _solidLogic.store.any(thing, UI.ns.rdfs('label')) || _solidLogic.store.any(thing, _solidLogic.store.sym('http://www.w3.org/2004/02/skos/core#prefLabel'));
|
|
15176
15176
|
}
|
|
15177
15177
|
//# sourceMappingURL=label.js.map
|
|
15178
15178
|
|
|
@@ -15192,11 +15192,11 @@ Object.defineProperty(exports, "__esModule", ({
|
|
|
15192
15192
|
}));
|
|
15193
15193
|
exports.versionInfo = void 0;
|
|
15194
15194
|
var versionInfo = {
|
|
15195
|
-
buildTime: '2022-05-
|
|
15196
|
-
commit: '
|
|
15195
|
+
buildTime: '2022-05-20T08:02:01Z',
|
|
15196
|
+
commit: '4485d5d9aa24db1f33b7a2a1441a868b72cfa617',
|
|
15197
15197
|
npmInfo: {
|
|
15198
15198
|
'solid-ui': '2.4.22',
|
|
15199
|
-
npm: '6.14.
|
|
15199
|
+
npm: '6.14.17',
|
|
15200
15200
|
ares: '1.18.1',
|
|
15201
15201
|
brotli: '1.0.9',
|
|
15202
15202
|
cldr: '40.0',
|
|
@@ -15205,12 +15205,12 @@ var versionInfo = {
|
|
|
15205
15205
|
modules: '83',
|
|
15206
15206
|
napi: '8',
|
|
15207
15207
|
nghttp2: '1.42.0',
|
|
15208
|
-
node: '14.19.
|
|
15208
|
+
node: '14.19.2',
|
|
15209
15209
|
openssl: '1.1.1n',
|
|
15210
15210
|
tz: '2021a3',
|
|
15211
15211
|
unicode: '14.0',
|
|
15212
15212
|
uv: '1.42.0',
|
|
15213
|
-
v8: '8.4.371.23-node.
|
|
15213
|
+
v8: '8.4.371.23-node.87',
|
|
15214
15214
|
zlib: '1.2.11'
|
|
15215
15215
|
}
|
|
15216
15216
|
};
|
|
@@ -16280,6 +16280,7 @@ function openHrefInOutlineMode(e) {
|
|
|
16280
16280
|
|
|
16281
16281
|
if (dom.outlineManager) {
|
|
16282
16282
|
// @@ TODO Remove the use of document as a global object
|
|
16283
|
+
// TODO fix dependency cycle to solid-panes by calling outlineManager
|
|
16283
16284
|
;
|
|
16284
16285
|
dom.outlineManager.GotoSubject(_solidLogic.store.sym(uri), true, undefined, true, undefined);
|
|
16285
16286
|
} else if (window && window.panes && window.panes.getOutliner) {
|
|
@@ -16407,6 +16408,7 @@ function linkButton(dom, object) {
|
|
|
16407
16408
|
b.textContent = 'Goto ' + utils.label(object);
|
|
16408
16409
|
b.addEventListener('click', function (_event) {
|
|
16409
16410
|
// b.parentNode.removeChild(b)
|
|
16411
|
+
// TODO fix dependency cycle to solid-panes by calling outlineManager
|
|
16410
16412
|
;
|
|
16411
16413
|
dom.outlineManager.GotoSubject(object, true, undefined, true, undefined);
|
|
16412
16414
|
}, true);
|
|
@@ -17147,6 +17149,7 @@ exports.findClosest = findClosest;
|
|
|
17147
17149
|
exports.formsFor = formsFor;
|
|
17148
17150
|
exports.makeDescription = makeDescription;
|
|
17149
17151
|
exports.makeSelectForCategory = makeSelectForCategory;
|
|
17152
|
+
exports.makeSelectForChoice = makeSelectForChoice;
|
|
17150
17153
|
exports.makeSelectForNestedCategory = makeSelectForNestedCategory;
|
|
17151
17154
|
exports.makeSelectForOptions = makeSelectForOptions;
|
|
17152
17155
|
exports.newButton = newButton;
|
|
@@ -17258,14 +17261,16 @@ _fieldFunction.field[ns.ui('Form').uri] = _fieldFunction.field[ns.ui('Group').ur
|
|
|
17258
17261
|
var ui = ns.ui;
|
|
17259
17262
|
if (container) container.appendChild(box); // Prevent loops
|
|
17260
17263
|
|
|
17264
|
+
if (!form) return;
|
|
17261
17265
|
var key = subject.toNT() + '|' + form.toNT();
|
|
17262
17266
|
|
|
17263
17267
|
if (already[key]) {
|
|
17264
17268
|
// been there done that
|
|
17265
|
-
box.appendChild(dom.createTextNode('Group: see above ' + key));
|
|
17266
|
-
|
|
17269
|
+
box.appendChild(dom.createTextNode('Group: see above ' + key)); // TODO fix dependency cycle to solid-panes by calling outlineManager
|
|
17270
|
+
// const plist = [$rdf.st(subject, ns.owl('sameAs'), subject)] // @@ need prev subject
|
|
17271
|
+
// dom.outlineManager.appendPropertyTRs(box, plist)
|
|
17272
|
+
// dom.appendChild(plist)
|
|
17267
17273
|
|
|
17268
|
-
dom.outlineManager.appendPropertyTRs(box, plist);
|
|
17269
17274
|
return box;
|
|
17270
17275
|
}
|
|
17271
17276
|
|
|
@@ -17366,47 +17371,43 @@ _fieldFunction.field[ns.ui('Options').uri] = function (dom, container, already,
|
|
|
17366
17371
|
values = kb.each(subject, dependingOn);
|
|
17367
17372
|
}
|
|
17368
17373
|
|
|
17369
|
-
|
|
17370
|
-
|
|
17371
|
-
|
|
17372
|
-
for (var i = 0; i < cases.length; i++) {
|
|
17373
|
-
var c = cases[i];
|
|
17374
|
-
var tests = kb.each(c, ui('for'), null, formDoc); // There can be multiple 'for'
|
|
17374
|
+
for (var i = 0; i < cases.length; i++) {
|
|
17375
|
+
var c = cases[i];
|
|
17376
|
+
var tests = kb.each(c, ui('for'), null, formDoc); // There can be multiple 'for'
|
|
17375
17377
|
|
|
17376
|
-
|
|
17378
|
+
var match = false;
|
|
17377
17379
|
|
|
17378
|
-
|
|
17379
|
-
|
|
17380
|
-
|
|
17380
|
+
for (var j = 0; j < tests.length; j++) {
|
|
17381
|
+
var _iterator = _createForOfIteratorHelper(values),
|
|
17382
|
+
_step;
|
|
17381
17383
|
|
|
17382
|
-
|
|
17383
|
-
|
|
17384
|
-
|
|
17385
|
-
|
|
17384
|
+
try {
|
|
17385
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
17386
|
+
var value = _step.value;
|
|
17387
|
+
var test = tests[j];
|
|
17386
17388
|
|
|
17387
|
-
|
|
17388
|
-
|
|
17389
|
-
}
|
|
17389
|
+
if (value.sameTerm(tests) || value.termType === test.termType && value.value === test.value) {
|
|
17390
|
+
match = true;
|
|
17390
17391
|
}
|
|
17391
|
-
} catch (err) {
|
|
17392
|
-
_iterator.e(err);
|
|
17393
|
-
} finally {
|
|
17394
|
-
_iterator.f();
|
|
17395
17392
|
}
|
|
17393
|
+
} catch (err) {
|
|
17394
|
+
_iterator.e(err);
|
|
17395
|
+
} finally {
|
|
17396
|
+
_iterator.f();
|
|
17396
17397
|
}
|
|
17398
|
+
}
|
|
17397
17399
|
|
|
17398
|
-
|
|
17399
|
-
|
|
17400
|
-
|
|
17401
|
-
if (!_field3) {
|
|
17402
|
-
box.appendChild((0, _error.errorMessageBlock)(dom, 'No "use" part for case in form ' + form));
|
|
17403
|
-
return box;
|
|
17404
|
-
} else {
|
|
17405
|
-
appendForm(dom, box, already, subject, _field3, dataDoc, callbackFunction);
|
|
17406
|
-
}
|
|
17400
|
+
if (match) {
|
|
17401
|
+
var _field3 = kb.the(c, ui('use'));
|
|
17407
17402
|
|
|
17408
|
-
|
|
17403
|
+
if (!_field3) {
|
|
17404
|
+
box.appendChild((0, _error.errorMessageBlock)(dom, 'No "use" part for case in form ' + form));
|
|
17405
|
+
return box;
|
|
17406
|
+
} else {
|
|
17407
|
+
appendForm(dom, box, already, subject, _field3, dataDoc, callbackFunction);
|
|
17409
17408
|
}
|
|
17409
|
+
|
|
17410
|
+
break;
|
|
17410
17411
|
}
|
|
17411
17412
|
} // @@ Add box.refresh() to sync fields with values
|
|
17412
17413
|
|
|
@@ -17795,8 +17796,7 @@ _fieldFunction.field[ns.ui('Multiple').uri] = function (dom, container, already,
|
|
|
17795
17796
|
}
|
|
17796
17797
|
|
|
17797
17798
|
var multipleUIlabel = kb.any(form, ui('label'));
|
|
17798
|
-
if (!multipleUIlabel) multipleUIlabel = utils.label(property
|
|
17799
|
-
|
|
17799
|
+
if (!multipleUIlabel) multipleUIlabel = utils.label(property);
|
|
17800
17800
|
var min = kb.any(form, ui('min')); // This is the minimum number -- default 0
|
|
17801
17801
|
|
|
17802
17802
|
min = min ? 0 + min.value : 0;
|
|
@@ -18136,6 +18136,7 @@ _fieldFunction.field[ns.ui('Classifier').uri] = function (dom, container, alread
|
|
|
18136
18136
|
** -- radio buttons
|
|
18137
18137
|
** -- auto-complete typing
|
|
18138
18138
|
**
|
|
18139
|
+
** TODO: according to ontology ui:choice can also have ns.ui('default') - this is not implemented yet
|
|
18139
18140
|
*/
|
|
18140
18141
|
|
|
18141
18142
|
|
|
@@ -18144,8 +18145,6 @@ _fieldFunction.field[ns.ui('Choice').uri] = function (dom, container, already, s
|
|
|
18144
18145
|
var kb = _solidLogic.store;
|
|
18145
18146
|
var formDoc = form.doc ? form.doc() : null; // @@ if blank no way to know
|
|
18146
18147
|
|
|
18147
|
-
var uiMultipleInUse = false; // this signals to ui:choice that it is part of a ui:multiple
|
|
18148
|
-
|
|
18149
18148
|
var multiSelect = false;
|
|
18150
18149
|
var p;
|
|
18151
18150
|
var box = dom.createElement('div');
|
|
@@ -18175,87 +18174,77 @@ _fieldFunction.field[ns.ui('Choice').uri] = function (dom, container, already, s
|
|
|
18175
18174
|
|
|
18176
18175
|
var follow = kb.anyJS(form, ui('follow'), null, formDoc); // data doc moves to new subject?
|
|
18177
18176
|
|
|
18178
|
-
var possible = [];
|
|
18179
|
-
var possibleProperties;
|
|
18180
|
-
var firstSelectOptionText = '* Select for ' + utils.label(subject, true) + ' *'; // if we do NOT have a container it means it is a ui:Multiple
|
|
18181
|
-
// only important for the first option text in select
|
|
18182
|
-
|
|
18183
|
-
if (!container) {
|
|
18184
|
-
uiMultipleInUse = true;
|
|
18185
|
-
firstSelectOptionText = utils.label(subject, true);
|
|
18186
|
-
}
|
|
18187
|
-
|
|
18188
18177
|
var opts = {
|
|
18189
18178
|
form: form,
|
|
18190
18179
|
subForm: subForm,
|
|
18191
18180
|
multiSelect: multiSelect,
|
|
18192
|
-
firstSelectOptionText: firstSelectOptionText,
|
|
18193
|
-
uiMultipleInUse: uiMultipleInUse,
|
|
18194
18181
|
disambiguate: false
|
|
18195
18182
|
};
|
|
18196
|
-
possible = kb.each(undefined, ns.rdf('type'), uiFrom, formDoc);
|
|
18197
18183
|
|
|
18198
|
-
|
|
18199
|
-
possible
|
|
18200
|
-
|
|
18184
|
+
function getSelectorOptions() {
|
|
18185
|
+
var possible = [];
|
|
18186
|
+
var possibleProperties;
|
|
18187
|
+
possible = kb.each(undefined, ns.rdf('type'), uiFrom, formDoc);
|
|
18201
18188
|
|
|
18189
|
+
for (var x in kb.findMembersNT(uiFrom)) {
|
|
18190
|
+
possible.push(kb.fromNT(x));
|
|
18191
|
+
} // Use rdfs
|
|
18202
18192
|
|
|
18203
|
-
if (uiFrom.sameTerm(ns.rdfs('Class'))) {
|
|
18204
|
-
for (p in buttons.allClassURIs()) {
|
|
18205
|
-
possible.push(kb.sym(p));
|
|
18206
|
-
} // log.debug("%%% Choice field: possible.length 2 = "+possible.length)
|
|
18207
18193
|
|
|
18208
|
-
|
|
18209
|
-
|
|
18194
|
+
if (uiFrom.sameTerm(ns.rdfs('Class'))) {
|
|
18195
|
+
for (p in buttons.allClassURIs()) {
|
|
18196
|
+
possible.push(kb.sym(p));
|
|
18197
|
+
} // log.debug("%%% Choice field: possible.length 2 = "+possible.length)
|
|
18210
18198
|
|
|
18211
|
-
|
|
18212
|
-
|
|
18213
|
-
}
|
|
18199
|
+
} else if (uiFrom.sameTerm(ns.rdf('Property'))) {
|
|
18200
|
+
possibleProperties = buttons.propertyTriage(kb);
|
|
18214
18201
|
|
|
18215
|
-
|
|
18216
|
-
|
|
18217
|
-
|
|
18202
|
+
for (p in possibleProperties.op) {
|
|
18203
|
+
possible.push(kb.fromNT(p));
|
|
18204
|
+
}
|
|
18218
18205
|
|
|
18219
|
-
|
|
18220
|
-
|
|
18221
|
-
|
|
18206
|
+
for (p in possibleProperties.dp) {
|
|
18207
|
+
possible.push(kb.fromNT(p));
|
|
18208
|
+
}
|
|
18222
18209
|
|
|
18223
|
-
|
|
18224
|
-
|
|
18225
|
-
|
|
18210
|
+
opts.disambiguate = true; // This is a big class, and the labels won't be enough.
|
|
18211
|
+
} else if (uiFrom.sameTerm(ns.owl('ObjectProperty'))) {
|
|
18212
|
+
possibleProperties = buttons.propertyTriage(kb);
|
|
18213
|
+
|
|
18214
|
+
for (p in possibleProperties.op) {
|
|
18215
|
+
possible.push(kb.fromNT(p));
|
|
18216
|
+
}
|
|
18226
18217
|
|
|
18227
|
-
|
|
18228
|
-
|
|
18229
|
-
|
|
18218
|
+
opts.disambiguate = true;
|
|
18219
|
+
} else if (uiFrom.sameTerm(ns.owl('DatatypeProperty'))) {
|
|
18220
|
+
possibleProperties = buttons.propertyTriage(kb);
|
|
18230
18221
|
|
|
18231
|
-
|
|
18232
|
-
|
|
18222
|
+
for (p in possibleProperties.dp) {
|
|
18223
|
+
possible.push(kb.fromNT(p));
|
|
18224
|
+
}
|
|
18225
|
+
|
|
18226
|
+
opts.disambiguate = true;
|
|
18233
18227
|
}
|
|
18234
18228
|
|
|
18235
|
-
|
|
18236
|
-
}
|
|
18229
|
+
return sortByLabel(possible);
|
|
18230
|
+
} // TODO: this checks for any occurrence, regardless of true or false setting
|
|
18237
18231
|
|
|
18238
|
-
var sortedPossible = sortByLabel(possible); // TODO: this checks for any occurrence, regardless of true or false setting
|
|
18239
18232
|
|
|
18240
18233
|
if (kb.any(form, ui('canMintNew'))) {
|
|
18241
18234
|
opts.mint = '* Create new *'; // @@ could be better
|
|
18242
18235
|
}
|
|
18243
18236
|
|
|
18244
|
-
var selector
|
|
18245
|
-
rhs.appendChild(selector);
|
|
18246
|
-
var object;
|
|
18237
|
+
var selector;
|
|
18247
18238
|
|
|
18248
|
-
|
|
18249
|
-
|
|
18250
|
-
|
|
18251
|
-
|
|
18252
|
-
|
|
18253
|
-
|
|
18254
|
-
if (object && subForm) {
|
|
18255
|
-
removeNextSiblingsAfterElement(selector);
|
|
18256
|
-
addSubFormChoice(dom, rhs, already, object, subForm, follow ? object.doc() : dataDoc, callbackFunction);
|
|
18257
|
-
}
|
|
18239
|
+
rhs.refresh = function () {
|
|
18240
|
+
var selectorOptions = getSelectorOptions();
|
|
18241
|
+
selector = makeSelectForChoice(dom, rhs, kb, subject, property, selectorOptions, uiFrom, opts, dataDoc, callbackFunction);
|
|
18242
|
+
rhs.innerHTML = '';
|
|
18243
|
+
rhs.appendChild(selector);
|
|
18244
|
+
};
|
|
18258
18245
|
|
|
18246
|
+
rhs.refresh();
|
|
18247
|
+
if (selector && selector.refresh) selector.refresh();
|
|
18259
18248
|
return box;
|
|
18260
18249
|
};
|
|
18261
18250
|
/**
|
|
@@ -18476,7 +18465,8 @@ function promptForNew(dom, kb, subject, predicate, theClass, form, dataDoc, call
|
|
|
18476
18465
|
b.setAttribute('type', 'button');
|
|
18477
18466
|
b.setAttribute('style', 'float: right;');
|
|
18478
18467
|
b.innerHTML = 'Goto ' + utils.label(theClass);
|
|
18479
|
-
b.addEventListener('click',
|
|
18468
|
+
b.addEventListener('click', // TODO fix dependency cycle to solid-panes by calling outlineManager
|
|
18469
|
+
function (_e) {
|
|
18480
18470
|
dom.outlineManager.GotoSubject(theClass, true, undefined, true, undefined);
|
|
18481
18471
|
}, false);
|
|
18482
18472
|
return box;
|
|
@@ -18611,18 +18601,15 @@ function makeDescription(dom, kb, subject, predicate, dataDoc, callbackFunction)
|
|
|
18611
18601
|
// @param subject - a term, the subject of the statement(s) being edited.
|
|
18612
18602
|
// @param predicate - a term, the predicate of the statement(s) being edited
|
|
18613
18603
|
// @param possible - a list of terms, the possible value the object can take
|
|
18614
|
-
// @param options.
|
|
18615
|
-
//
|
|
18616
|
-
// option for none selected (for non multiSelect)
|
|
18617
|
-
// @param options.uiMultipleInUse - signals that the ui:choise is used with a ui:multiple
|
|
18618
|
-
// @param options.mint - User may create thing if this sent to the prompt string eg "New foo"
|
|
18604
|
+
// @param options.nullLabel - a string to be displayed as the
|
|
18605
|
+
// option for none selected (for non multiple)
|
|
18619
18606
|
// @param options.subForm - If mint, then the form to be used for minting the new thing
|
|
18620
18607
|
// @param dataDoc - The web document being edited
|
|
18621
18608
|
// @param callbackFunction - takes (boolean ok, string errorBody)
|
|
18622
18609
|
*/
|
|
18623
18610
|
|
|
18624
18611
|
|
|
18625
|
-
function makeSelectForOptions(dom, kb, subject, predicate, possible,
|
|
18612
|
+
function makeSelectForOptions(dom, kb, subject, predicate, possible, options, dataDoc, callbackFunction) {
|
|
18626
18613
|
log.debug('Select list length now ' + possible.length);
|
|
18627
18614
|
var n = 0;
|
|
18628
18615
|
var uris = {}; // Count them
|
|
@@ -18639,7 +18626,7 @@ function makeSelectForOptions(dom, kb, subject, predicate, possible, uiFrom, opt
|
|
|
18639
18626
|
} // uris is now the set of possible options
|
|
18640
18627
|
|
|
18641
18628
|
|
|
18642
|
-
if (n === 0
|
|
18629
|
+
if (n === 0) {
|
|
18643
18630
|
return (0, _error.errorMessageBlock)(dom, "Can't do selector with no options, subject= " + subject + ' property = ' + predicate + '.');
|
|
18644
18631
|
}
|
|
18645
18632
|
|
|
@@ -18665,6 +18652,8 @@ function makeSelectForOptions(dom, kb, subject, predicate, possible, uiFrom, opt
|
|
|
18665
18652
|
actual = getActual();
|
|
18666
18653
|
|
|
18667
18654
|
var onChange = function onChange(_e) {
|
|
18655
|
+
select.disabled = true; // until data written back - gives user feedback too
|
|
18656
|
+
|
|
18668
18657
|
var ds = [];
|
|
18669
18658
|
var is = [];
|
|
18670
18659
|
|
|
@@ -18674,43 +18663,18 @@ function makeSelectForOptions(dom, kb, subject, predicate, possible, uiFrom, opt
|
|
|
18674
18663
|
}
|
|
18675
18664
|
};
|
|
18676
18665
|
|
|
18677
|
-
var newObject;
|
|
18678
|
-
|
|
18679
18666
|
for (var _i = 0; _i < select.options.length; _i++) {
|
|
18680
18667
|
var opt = select.options[_i];
|
|
18681
|
-
|
|
18682
|
-
if (opt.selected && opt.AJAR_mint) {
|
|
18683
|
-
// not sure if this 'if' is used because I cannot find mintClass
|
|
18684
|
-
if (options.mintClass) {
|
|
18685
|
-
var thisForm = promptForNew(dom, kb, subject, predicate, options.mintClass, null, dataDoc, function (ok, body) {
|
|
18686
|
-
if (!ok) {
|
|
18687
|
-
callbackFunction(ok, body, {
|
|
18688
|
-
change: 'new'
|
|
18689
|
-
}); // @@ if ok, need some form of refresh of the select for the new thing
|
|
18690
|
-
}
|
|
18691
|
-
});
|
|
18692
|
-
select.parentNode.appendChild(thisForm);
|
|
18693
|
-
newObject = thisForm.AJAR_subject;
|
|
18694
|
-
} else {
|
|
18695
|
-
newObject = newThing(dataDoc);
|
|
18696
|
-
}
|
|
18697
|
-
|
|
18698
|
-
is.push($rdf.st(subject, predicate, kb.sym(newObject), dataDoc));
|
|
18699
|
-
if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc)); // not sure if this 'if' is used because I cannot find mintStatementsFun
|
|
18700
|
-
|
|
18701
|
-
if (options.mintStatementsFun) {
|
|
18702
|
-
is = is.concat(options.mintStatementsFun(newObject));
|
|
18703
|
-
}
|
|
18704
|
-
|
|
18705
|
-
select.currentURI = newObject;
|
|
18706
|
-
}
|
|
18707
|
-
|
|
18708
18668
|
if (!opt.AJAR_uri) continue; // a prompt or mint
|
|
18709
18669
|
|
|
18710
18670
|
if (opt.selected && !(opt.AJAR_uri in actual)) {
|
|
18711
18671
|
// new class
|
|
18712
18672
|
is.push($rdf.st(subject, predicate, kb.sym(opt.AJAR_uri), dataDoc));
|
|
18713
|
-
|
|
18673
|
+
}
|
|
18674
|
+
|
|
18675
|
+
if (!opt.selected && opt.AJAR_uri in actual) {
|
|
18676
|
+
// old class
|
|
18677
|
+
removeValue(kb.sym(opt.AJAR_uri));
|
|
18714
18678
|
}
|
|
18715
18679
|
|
|
18716
18680
|
if (opt.selected) select.currentURI = opt.AJAR_uri;
|
|
@@ -18730,29 +18694,25 @@ function makeSelectForOptions(dom, kb, subject, predicate, possible, uiFrom, opt
|
|
|
18730
18694
|
sel = sel.superSelect;
|
|
18731
18695
|
}
|
|
18732
18696
|
|
|
18733
|
-
log.info('selectForOptions: data doc = ' + dataDoc);
|
|
18697
|
+
log.info('selectForOptions: data doc = ' + dataDoc);
|
|
18698
|
+
kb.updater.update(ds, is, function (uri, ok, body) {
|
|
18699
|
+
actual = getActual(); // refresh
|
|
18734
18700
|
|
|
18735
|
-
removeNextSiblingsAfterElement(select);
|
|
18736
|
-
addSubFormChoice(dom, select.parentNode, {}, $rdf.sym(select.currentURI), options.subForm, dataDoc, function (ok, body) {
|
|
18737
18701
|
if (ok) {
|
|
18738
|
-
|
|
18739
|
-
actual = getActual(); // refresh
|
|
18740
|
-
|
|
18741
|
-
if (!success) select.parentNode.appendChild((0, _error.errorMessageBlock)(dom, 'Error updating select: ' + errorBody));
|
|
18742
|
-
});
|
|
18743
|
-
if (callbackFunction) callbackFunction(ok, {
|
|
18744
|
-
widget: 'select',
|
|
18745
|
-
event: 'new'
|
|
18746
|
-
});
|
|
18702
|
+
select.disabled = false; // data written back
|
|
18747
18703
|
} else {
|
|
18748
|
-
select.parentNode.appendChild((0, _error.errorMessageBlock)(dom, 'Error updating data in
|
|
18704
|
+
return select.parentNode.appendChild((0, _error.errorMessageBlock)(dom, 'Error updating data in select: ' + body));
|
|
18749
18705
|
}
|
|
18706
|
+
|
|
18707
|
+
if (callbackFunction) callbackFunction(ok, {
|
|
18708
|
+
widget: 'select',
|
|
18709
|
+
event: 'change'
|
|
18710
|
+
});
|
|
18750
18711
|
});
|
|
18751
18712
|
};
|
|
18752
18713
|
|
|
18753
18714
|
var select = dom.createElement('select');
|
|
18754
18715
|
select.setAttribute('style', style.formSelectSTyle);
|
|
18755
|
-
if (options.multiSelect) select.setAttribute('multiSelect', 'true');
|
|
18756
18716
|
select.currentURI = null;
|
|
18757
18717
|
|
|
18758
18718
|
select.refresh = function () {
|
|
@@ -18795,22 +18755,11 @@ function makeSelectForOptions(dom, kb, subject, predicate, possible, uiFrom, opt
|
|
|
18795
18755
|
select.appendChild(option);
|
|
18796
18756
|
}
|
|
18797
18757
|
|
|
18798
|
-
if (
|
|
18799
|
-
var mint = dom.createElement('option');
|
|
18800
|
-
mint.appendChild(dom.createTextNode(options.mint));
|
|
18801
|
-
mint.AJAR_mint = true; // Flag it
|
|
18802
|
-
|
|
18803
|
-
select.insertBefore(mint, select.firstChild);
|
|
18804
|
-
}
|
|
18805
|
-
|
|
18806
|
-
if (!select.currentURI && options.uiMultipleInUse) {
|
|
18758
|
+
if (!select.currentURI) {
|
|
18807
18759
|
var prompt = dom.createElement('option');
|
|
18808
|
-
prompt.appendChild(dom.createTextNode(options.
|
|
18809
|
-
prompt.disabled = true;
|
|
18810
|
-
prompt.value = true;
|
|
18811
|
-
prompt.hidden = true;
|
|
18812
|
-
prompt.selected = true;
|
|
18760
|
+
prompt.appendChild(dom.createTextNode(options.nullLabel));
|
|
18813
18761
|
select.insertBefore(prompt, select.firstChild);
|
|
18762
|
+
prompt.selected = true;
|
|
18814
18763
|
}
|
|
18815
18764
|
|
|
18816
18765
|
if (editable) {
|
|
@@ -18829,27 +18778,16 @@ function makeSelectForOptions(dom, kb, subject, predicate, possible, uiFrom, opt
|
|
|
18829
18778
|
function makeSelectForCategory(dom, kb, subject, category, dataDoc, callbackFunction) {
|
|
18830
18779
|
var du = kb.any(category, ns.owl('disjointUnionOf'));
|
|
18831
18780
|
var subs;
|
|
18832
|
-
var multiSelect = false;
|
|
18833
18781
|
|
|
18834
18782
|
if (!du) {
|
|
18835
18783
|
subs = kb.each(undefined, ns.rdfs('subClassOf'), category);
|
|
18836
|
-
multiSelect = true;
|
|
18837
18784
|
} else {
|
|
18838
18785
|
subs = du.elements;
|
|
18839
18786
|
}
|
|
18840
18787
|
|
|
18841
18788
|
log.debug('Select list length ' + subs.length);
|
|
18842
|
-
|
|
18843
|
-
|
|
18844
|
-
return (0, _error.errorMessageBlock)(dom, "Can't do " + (multiSelect ? 'multiple ' : '') + 'selector with no subclasses of category: ' + category);
|
|
18845
|
-
}
|
|
18846
|
-
|
|
18847
|
-
if (subs.length === 1) {
|
|
18848
|
-
return (0, _error.errorMessageBlock)(dom, "Can't do " + (multiSelect ? 'multiple ' : '') + 'selector with only 1 subclass of category: ' + category + ':' + subs[1]);
|
|
18849
|
-
}
|
|
18850
|
-
|
|
18851
|
-
return makeSelectForOptions(dom, kb, subject, ns.rdf('type'), subs, null, {
|
|
18852
|
-
multiSelect: multiSelect
|
|
18789
|
+
return makeSelectForOptions(dom, kb, subject, ns.rdf('type'), subs, {
|
|
18790
|
+
nullLabel: '* Select type *'
|
|
18853
18791
|
}, dataDoc, callbackFunction);
|
|
18854
18792
|
}
|
|
18855
18793
|
/** Make SELECT element to select subclasses recurively
|
|
@@ -18883,8 +18821,7 @@ function makeSelectForNestedCategory(dom, kb, subject, category, dataDoc, callba
|
|
|
18883
18821
|
function onChange(ok, body) {
|
|
18884
18822
|
if (ok) update();
|
|
18885
18823
|
callbackFunction(ok, body);
|
|
18886
|
-
}
|
|
18887
|
-
|
|
18824
|
+
}
|
|
18888
18825
|
|
|
18889
18826
|
var select = makeSelectForCategory(dom, kb, subject, category, dataDoc, onChange);
|
|
18890
18827
|
container.appendChild(select);
|
|
@@ -19039,6 +18976,199 @@ function newThing(doc) {
|
|
|
19039
18976
|
var now = new Date();
|
|
19040
18977
|
return $rdf.sym(doc.uri + '#' + 'id' + ('' + now.getTime()));
|
|
19041
18978
|
}
|
|
18979
|
+
/** Make SELECT element to select options
|
|
18980
|
+
//
|
|
18981
|
+
// @param subject - a term, the subject of the statement(s) being edited.
|
|
18982
|
+
// @param predicate - a term, the predicate of the statement(s) being edited
|
|
18983
|
+
// @param possible - a list of terms, the possible value the object can take
|
|
18984
|
+
// @param options.multiSelect - Boolean - Whether more than one at a time is allowed
|
|
18985
|
+
// @param options.uiMultipleInUse - signals that the ui:choise is used with a ui:multiple
|
|
18986
|
+
// @param options.mint - User may create thing if this sent to the prompt string eg "New foo"
|
|
18987
|
+
// @param options.subForm - If mint, then the form to be used for minting the new thing
|
|
18988
|
+
// @param dataDoc - The web document being edited
|
|
18989
|
+
// @param callbackFunction - takes (boolean ok, string errorBody)
|
|
18990
|
+
*/
|
|
18991
|
+
|
|
18992
|
+
|
|
18993
|
+
function makeSelectForChoice(dom, container, kb, subject, predicate, possible, uiFrom, options, dataDoc, callbackFunction) {
|
|
18994
|
+
var n = 0;
|
|
18995
|
+
var uris = {}; // Count them
|
|
18996
|
+
|
|
18997
|
+
var editable = kb.updater.editable(dataDoc.uri);
|
|
18998
|
+
|
|
18999
|
+
for (var i = 0; i < possible.length; i++) {
|
|
19000
|
+
var sub = possible[i]; // @@ Maybe; make this so it works with blank nodes too
|
|
19001
|
+
|
|
19002
|
+
if (!sub.uri) debug.warn("makeSelectForOptions: option does not have an uri: ".concat(sub, ", with predicate: ").concat(predicate));
|
|
19003
|
+
if (!sub.uri || sub.uri in uris) continue;
|
|
19004
|
+
uris[sub.uri] = true;
|
|
19005
|
+
n++;
|
|
19006
|
+
} // uris is now the set of possible options
|
|
19007
|
+
|
|
19008
|
+
|
|
19009
|
+
if (n === 0 && !options.mint) {
|
|
19010
|
+
return (0, _error.errorMessageBlock)(dom, "Can't do selector with no options, subject= " + subject + ' property = ' + predicate + '.');
|
|
19011
|
+
}
|
|
19012
|
+
|
|
19013
|
+
log.debug('makeSelectForOptions: dataDoc=' + dataDoc);
|
|
19014
|
+
|
|
19015
|
+
function determinFirstSelectOption() {
|
|
19016
|
+
var firstSelectOptionText = '--- classify ---';
|
|
19017
|
+
var option = dom.createElement('option');
|
|
19018
|
+
|
|
19019
|
+
if (predicate && !(predicate.termType === 'BlankNode')) {
|
|
19020
|
+
firstSelectOptionText = '* Select for property: ' + utils.label(predicate) + ' *';
|
|
19021
|
+
}
|
|
19022
|
+
|
|
19023
|
+
if (subject && !(subject.termType === 'BlankNode')) {
|
|
19024
|
+
firstSelectOptionText = '* Select for ' + utils.label(subject, true) + ' *';
|
|
19025
|
+
}
|
|
19026
|
+
|
|
19027
|
+
option.appendChild(dom.createTextNode(firstSelectOptionText));
|
|
19028
|
+
option.disabled = true;
|
|
19029
|
+
option.value = true;
|
|
19030
|
+
option.hidden = true;
|
|
19031
|
+
option.selected = true;
|
|
19032
|
+
return option;
|
|
19033
|
+
}
|
|
19034
|
+
|
|
19035
|
+
var onChange = function onChange(_e) {
|
|
19036
|
+
select.refresh();
|
|
19037
|
+
};
|
|
19038
|
+
|
|
19039
|
+
var select = dom.createElement('select');
|
|
19040
|
+
select.setAttribute('style', style.formSelectSTyle);
|
|
19041
|
+
if (options.multiSelect) select.setAttribute('multiSelect', 'true');
|
|
19042
|
+
select.currentURI = null;
|
|
19043
|
+
var object = kb.any(subject, predicate);
|
|
19044
|
+
if (object) select.currentURI = object;
|
|
19045
|
+
|
|
19046
|
+
for (var uri in uris) {
|
|
19047
|
+
select.appendChild(createOption(uri));
|
|
19048
|
+
}
|
|
19049
|
+
|
|
19050
|
+
if (editable && options.mint) {
|
|
19051
|
+
var mint = dom.createElement('option');
|
|
19052
|
+
mint.appendChild(dom.createTextNode(options.mint));
|
|
19053
|
+
mint.AJAR_mint = true; // Flag it
|
|
19054
|
+
|
|
19055
|
+
select.insertBefore(mint, select.firstChild);
|
|
19056
|
+
}
|
|
19057
|
+
|
|
19058
|
+
if (select.children.length === 0) select.insertBefore(determinFirstSelectOption(), select.firstChild);
|
|
19059
|
+
|
|
19060
|
+
select.refresh = function () {
|
|
19061
|
+
select.disabled = true; // unlocked any conflict we had got into
|
|
19062
|
+
|
|
19063
|
+
var ds = [];
|
|
19064
|
+
var is = [];
|
|
19065
|
+
|
|
19066
|
+
var removeValue = function removeValue(t) {
|
|
19067
|
+
if (kb.holds(subject, predicate, t, dataDoc)) {
|
|
19068
|
+
ds.push($rdf.st(subject, predicate, t, dataDoc));
|
|
19069
|
+
}
|
|
19070
|
+
};
|
|
19071
|
+
|
|
19072
|
+
var newObject;
|
|
19073
|
+
|
|
19074
|
+
for (var _i3 = 0; _i3 < select.options.length; _i3++) {
|
|
19075
|
+
var opt = select.options[_i3];
|
|
19076
|
+
|
|
19077
|
+
if (opt.selected && opt.AJAR_mint) {
|
|
19078
|
+
// not sure if this 'if' is used because I cannot find mintClass
|
|
19079
|
+
if (options.mintClass) {
|
|
19080
|
+
var thisForm = promptForNew(dom, kb, subject, predicate, options.mintClass, null, dataDoc, function (ok, body) {
|
|
19081
|
+
if (!ok) {
|
|
19082
|
+
callbackFunction(ok, body, {
|
|
19083
|
+
change: 'new'
|
|
19084
|
+
}); // @@ if ok, need some form of refresh of the select for the new thing
|
|
19085
|
+
}
|
|
19086
|
+
});
|
|
19087
|
+
select.parentNode.appendChild(thisForm);
|
|
19088
|
+
newObject = thisForm.AJAR_subject;
|
|
19089
|
+
} else {
|
|
19090
|
+
newObject = newThing(dataDoc);
|
|
19091
|
+
}
|
|
19092
|
+
|
|
19093
|
+
is.push($rdf.st(subject, predicate, kb.sym(newObject), dataDoc));
|
|
19094
|
+
if (uiFrom) is.push($rdf.st(newObject, ns.rdf('type'), kb.sym(uiFrom), dataDoc)); // not sure if this 'if' is used because I cannot find mintStatementsFun
|
|
19095
|
+
|
|
19096
|
+
if (options.mintStatementsFun) {
|
|
19097
|
+
is = is.concat(options.mintStatementsFun(newObject));
|
|
19098
|
+
}
|
|
19099
|
+
|
|
19100
|
+
select.currentURI = newObject;
|
|
19101
|
+
}
|
|
19102
|
+
|
|
19103
|
+
if (!opt.AJAR_uri) continue; // a prompt or mint
|
|
19104
|
+
|
|
19105
|
+
if (opt.selected) select.currentURI = opt.AJAR_uri;
|
|
19106
|
+
}
|
|
19107
|
+
|
|
19108
|
+
var sel = select.subSelect; // All subclasses must also go
|
|
19109
|
+
|
|
19110
|
+
while (sel && sel.currentURI) {
|
|
19111
|
+
removeValue(kb.sym(sel.currentURI));
|
|
19112
|
+
sel = sel.subSelect;
|
|
19113
|
+
}
|
|
19114
|
+
|
|
19115
|
+
sel = select.superSelect; // All superclasses are redundant
|
|
19116
|
+
|
|
19117
|
+
while (sel && sel.currentURI) {
|
|
19118
|
+
removeValue(kb.sym(sel.currentURI));
|
|
19119
|
+
sel = sel.superSelect;
|
|
19120
|
+
}
|
|
19121
|
+
|
|
19122
|
+
log.info('selectForOptions: data doc = ' + dataDoc);
|
|
19123
|
+
|
|
19124
|
+
if (select.currentURI) {
|
|
19125
|
+
removeNextSiblingsAfterElement(select);
|
|
19126
|
+
addSubFormChoice(dom, container, {}, $rdf.sym(select.currentURI), options.subForm, dataDoc, function (ok, body) {
|
|
19127
|
+
if (ok) {
|
|
19128
|
+
kb.updater.update(ds, is, function (uri, success, errorBody) {
|
|
19129
|
+
if (!success) container.appendChild((0, _error.errorMessageBlock)(dom, 'Error updating select: ' + errorBody));
|
|
19130
|
+
});
|
|
19131
|
+
if (callbackFunction) callbackFunction(ok, {
|
|
19132
|
+
widget: 'select',
|
|
19133
|
+
event: 'new'
|
|
19134
|
+
}); // widgets.refreshTree(container)
|
|
19135
|
+
} else {
|
|
19136
|
+
container.appendChild((0, _error.errorMessageBlock)(dom, 'Error updating data in field of select: ' + body));
|
|
19137
|
+
}
|
|
19138
|
+
});
|
|
19139
|
+
}
|
|
19140
|
+
|
|
19141
|
+
select.disabled = false;
|
|
19142
|
+
};
|
|
19143
|
+
|
|
19144
|
+
function createOption(uri) {
|
|
19145
|
+
var option = dom.createElement('option');
|
|
19146
|
+
var c = kb.sym(uri);
|
|
19147
|
+
|
|
19148
|
+
if (options.disambiguate) {
|
|
19149
|
+
option.appendChild(dom.createTextNode(utils.labelWithOntology(c, true))); // Init. cap
|
|
19150
|
+
} else {
|
|
19151
|
+
option.appendChild(dom.createTextNode(utils.label(c, true))); // Init.
|
|
19152
|
+
}
|
|
19153
|
+
|
|
19154
|
+
var backgroundColor = kb.any(c, kb.sym('http://www.w3.org/ns/ui#backgroundColor'));
|
|
19155
|
+
|
|
19156
|
+
if (backgroundColor) {
|
|
19157
|
+
option.setAttribute('style', 'background-color: ' + backgroundColor.value + '; ');
|
|
19158
|
+
}
|
|
19159
|
+
|
|
19160
|
+
option.AJAR_uri = uri;
|
|
19161
|
+
if (c.toString() === '' + select.currentURI) option.selected = true;
|
|
19162
|
+
return option;
|
|
19163
|
+
}
|
|
19164
|
+
|
|
19165
|
+
if (editable) {
|
|
19166
|
+
select.addEventListener('change', onChange, false);
|
|
19167
|
+
}
|
|
19168
|
+
|
|
19169
|
+
select.refresh();
|
|
19170
|
+
return select;
|
|
19171
|
+
} // makeSelectForChoice
|
|
19042
19172
|
//# sourceMappingURL=forms.js.map
|
|
19043
19173
|
|
|
19044
19174
|
/***/ }),
|