MediaWiki:Gadget-templating.js: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
| Line 81: | Line 81: | ||
snak._variation._valueView.widgetEventPrefix + 'afterstartediting', | snak._variation._valueView.widgetEventPrefix + 'afterstartediting', | ||
function() { | function() { | ||
valSelector = snak._variation._valueView._expert.$input.data().entityselector; | valSelector = snak._variation._valueView._expert.$input.data().entityselector; | ||
valval = getPropertyEntity(claim.value.mainVal); | valval = getPropertyEntity(claim.value.mainVal); | ||
valSelector.element.val(valval.label); | valSelector.element.val(valval.label); | ||
valSelector._trigger("change"); | valSelector._trigger("change"); | ||
valSelector._select(valval); | valSelector._select(valval); | ||
qlistview = sv._qualifiers; | qlistview = sv._qualifiers; | ||
qlistview.enterNewItem(); | qlistview.enterNewItem(); | ||
var qsnaklistview = qlistview.value()[qlistview.value().length - 1]; | var qsnaklistview = qlistview.value()[qlistview.value().length - 1]; | ||
qsnaklistview.enterNewItem(); | qsnaklistview.enterNewItem(); | ||
qslv = $(sv._qualifiers.items().first()).data().snaklistview; | qslv = $(sv._qualifiers.items().first()).data().snaklistview; | ||
qsnak = qslv._listview.items().first().data().snakview; | qsnak = qslv._listview.items().first().data().snakview; | ||
qsel = qsnak._getPropertySelector(); | qsel = qsnak._getPropertySelector(); | ||
| Line 111: | Line 104: | ||
qsnak._variation._valueView.widgetEventPrefix + 'afterstartediting', | qsnak._variation._valueView.widgetEventPrefix + 'afterstartediting', | ||
function() { | function() { | ||
qvalSelector = qsnak._variation._valueView._expert.$input.data().entityselector; | qvalSelector = qsnak._variation._valueView._expert.$input.data().entityselector; | ||
qvalval = getPropertyEntity(claim.value.mainVal); | qvalval = getPropertyEntity(claim.value.mainVal); | ||
| Line 121: | Line 112: | ||
valSelector._trigger("change"); | valSelector._trigger("change"); | ||
qvalSelector._select(qvalval); | qvalSelector._select(qvalval); | ||
} | } | ||
); | ); | ||
| Line 130: | Line 119: | ||
qsnak._variation._valueView.widgetEventPrefix + 'change', | qsnak._variation._valueView.widgetEventPrefix + 'change', | ||
function() { | function() { | ||
toolbar = item.statementgroupview.statementlistview._listview.items().last().data().edittoolbar; | toolbar = item.statementgroupview.statementlistview._listview.items().last().data().edittoolbar; | ||
toolbar._controller.stopEditing(false); | toolbar._controller.stopEditing(false); | ||
}); | }); | ||
} | } | ||
); | ); | ||
| Line 144: | Line 128: | ||
snak._variation._valueView.widgetEventPrefix + 'change', | snak._variation._valueView.widgetEventPrefix + 'change', | ||
function() { | function() { | ||
toolbar = item.statementgroupview.statementlistview._listview.items().last().data().edittoolbar; | toolbar = item.statementgroupview.statementlistview._listview.items().last().data().edittoolbar; | ||
toolbar._controller.stopEditing(false); | toolbar._controller.stopEditing(false); | ||
}); | }); | ||
| Line 157: | Line 138: | ||
function applyTemplate(templateName) { | function applyTemplate(templateName) { | ||
WbTemplates[templateName].prefilledClaims.forEach(claim => { | WbTemplates[templateName].prefilledClaims.forEach(claim => { | ||
prefillStatement(claim, | prefillStatement(claim, false); | ||
}); | }); | ||
WbTemplates[templateName].userDefinedClaims.forEach(claim => { | WbTemplates[templateName].userDefinedClaims.forEach(claim => { | ||
prefillStatement(claim, | prefillStatement(claim, true); | ||
}); | }); | ||
Revision as of 06:24, 14 March 2025
console.log('test');
mw.loader.using('ext.maps', function() {
mw.hook('wikipage.maps').add(function(maps) {
console.log('Maps loaded:', maps);
});
});
WbTemplates = {
"person": {
"prefilledClaims": [{
"property": {id: "P1", label: "instance of", datatype: "wikibase-item"},
"value": {
"mainVal": "Q78"
}
}],
"userDefinedClaims": [{
"property": {id: "P162", label: "has authorized access point for person [a/datatype] (RDA:P50411)"},
datatype: "string"
}],
},
"corporate": {
"prefilledClaims": [{
"property": "P1",
"value": {
"mainVal": "Q72"
}
}]
},
};
function statementExists(property, value) {
items.toArray().some(item => !!$(item).data().propertyId && $(item).data().statementgroupview.options.value.getKey() === property &&
$(item).data().statementgroupview.options.value.getItemContainer().toArray().some(claimItem =>
claimItem.getClaim().getMainSnak().getValue().getSerialization() === value));
}
function getPropertyEntity(property) {
return {
"id": `${property.id}`,
"title": `Property:${property.id}`,
"datatype": property.datatype,
"label": property.label,
};
}
function prefillStatement(claim, onlyProperty) {
statementListView = $(".wikibase-statementgrouplistview").first().data().wikibaseStatementgrouplistview;
statementListView.enterNewItem();
items = statementListView.listview.items();
item = items.last().data();
sv = item.statementgroupview.statementlistview._listview.items().first().data().statementview;
snak = sv.$mainSnak.data().snakview;
es = getPropertyEntity(claim.property);
selector = snak._getPropertySelector();
selector.element.val(es.label);
selector._trigger('change');
selector._select(es);
if(onlyProperty) return;
snak._variation._valueView.element.one(
snak._variation._valueView.widgetEventPrefix + 'afterstartediting',
function() {
valSelector = snak._variation._valueView._expert.$input.data().entityselector;
valval = getPropertyEntity(claim.value.mainVal);
valSelector.element.val(valval.label);
valSelector._trigger("change");
valSelector._select(valval);
qlistview = sv._qualifiers;
qlistview.enterNewItem();
var qsnaklistview = qlistview.value()[qlistview.value().length - 1];
qsnaklistview.enterNewItem();
qslv = $(sv._qualifiers.items().first()).data().snaklistview;
qsnak = qslv._listview.items().first().data().snakview;
qsel = qsnak._getPropertySelector();
qsel.element.val(es.label);
qsel._trigger('change');
qsel._select(es);
qsnak._variation._valueView.element.one(
qsnak._variation._valueView.widgetEventPrefix + 'afterstartediting',
function() {
qvalSelector = qsnak._variation._valueView._expert.$input.data().entityselector;
qvalval = getPropertyEntity(claim.value.mainVal);
qvalSelector.element.val(qvalval.label);
qvalSelector._trigger("change");
valSelector._trigger("change");
qvalSelector._select(qvalval);
}
);
qsnak._variation._valueView.element.one(
qsnak._variation._valueView.widgetEventPrefix + 'change',
function() {
toolbar = item.statementgroupview.statementlistview._listview.items().last().data().edittoolbar;
toolbar._controller.stopEditing(false);
});
}
);
snak._variation._valueView.element.one(
snak._variation._valueView.widgetEventPrefix + 'change',
function() {
toolbar = item.statementgroupview.statementlistview._listview.items().last().data().edittoolbar;
toolbar._controller.stopEditing(false);
});
}
function applyTemplate(templateName) {
WbTemplates[templateName].prefilledClaims.forEach(claim => {
prefillStatement(claim, false);
});
WbTemplates[templateName].userDefinedClaims.forEach(claim => {
prefillStatement(claim, true);
});
}
$(".wikibase-entitytermsview").append('<select id="wbtemplate"></select><button id="applyTemplateBtn">Apply template</button>');
Object.entries(WbTemplates).forEach(entry => {
$('#wbtemplate').append($('<option>', {
value: entry[0],
text: entry[0]
}));
});
$("#applyTemplateBtn").on("click", function() {
applyTemplate($("#wbtemplate").find(":selected").val());
});