MediaWiki:Gadget-armory-core.js: Difference between revisions

No edit summary
No edit summary
 
(11 intermediate revisions by the same user not shown)
Line 3: Line 3:


var queryDefaults = {
var queryDefaults = {
slot: 'head',
slot: 'armor',
members: 'any',
supporter: 'any',
tradeable: 'any',
tradeable: 'any',
cbclass: 'any',
modclass: 'any',
restriction: 'surface',
restriction: 'surface',
augmented: 'any',
augmented: 'any',
hiderecolour: true,
tier_min: 100,
tier_min: 1,
tier_max: 500,
tier_max: 120,
tier_min_enabled: true,
tier_min_enabled: true,
tier_max_enabled: false,
tier_max_enabled: false,
Line 17: Line 16:
},
},
queryMap = {
queryMap = {
slot: [ 'head', 'torso',  'legs', 'hands', 'feet', 'main hand weapon', 'off-hand weapon', 'off-hand', '2h weapon', 'neck', 'ring', 'back', 'ammo', 'pocket' ],
slot: [ 'armor', 'shields',  'weapons', 'sensors', 'engines', 'utility' ],
members: [ 'any', 'yes', 'no' ],
supporter: [ 'any', 'yes', 'no' ],
tradeable: [ 'any', 'yes', 'no' ],
tradeable: [ 'any', 'yes', 'no' ],
cbclass: [ 'any', 'melee', 'magic', 'ranged', 'hybrid' ],
modclass: [ 'any', 'Armor', 'Attack', 'Cargo Salvage', 'Cargo Scanner', 'Cargo Shielding', 'Cargo Space', 'Damage', 'Damage Reduction', 'Damage Reflection', 'Defense', 'Engine Efficiency', 'Evasion', 'Hacking', 'Heat Resistance', 'Intel', 'Salvage Chance', 'Sensor Scan Results', 'Shield', 'Shield Boost', 'Shield Recharge', 'Targeting', 'Threat', 'Weapon Recharge' ],
restriction: [ 'any', 'surface', 'dungeoneering', 'quest', 'minigame', 'limited', 'microtransaction', 'removed' ],
restriction: [ 'any', 'surface', 'stories', 'missions', 'encounters', 'outlands', 'events', 'removed' ],
augmented: [ 'any', 'able', 'yes' ],
augmented: [ 'any', 'able', 'yes' ],
hiderecolour: [ false, true ],
},
},
currentQuery,
currentQuery,
Line 29: Line 27:
loadingGif;
loadingGif;


var form, fieldset, slotDropdown, membersSelect, tradeableSelect, classSelect, restrictionSelect, augmentedSelect, recolourCheck, tierMinCheck, tierMaxCheck, tierMinSelect, tierMaxSelect, submitButton, resetButton, toggleAdvButton, copyPermalinkButton, pageButtons, pageFirstButton, pagePrevButton, pageNextButton, resultsLabel;
var form, fieldset, slotDropdown, supporterSelect, tradeableSelect, classSelect, restrictionSelect, augmentedSelect, tierMinCheck, tierMaxCheck, tierMinSelect, tierMaxSelect, submitButton, resetButton, toggleAdvButton, copyPermalinkButton, pageButtons, pageFirstButton, pagePrevButton, pageNextButton, resultsLabel;


var $messages, $results, $selector;
var $messages, $results, $selector;
Line 41: Line 39:
query.push(Math.max(0,queryMap.slot.indexOf(q.slot)));
query.push(Math.max(0,queryMap.slot.indexOf(q.slot)));
query.push('c');
query.push('c');
query.push(Math.max(0,queryMap.cbclass.indexOf(q.cbclass)));
query.push(Math.max(0,queryMap.modclass.indexOf(q.modclass)));
query.push('m');
query.push('m');
query.push(Math.max(0,queryMap.members.indexOf(q.members)));
query.push(Math.max(0,queryMap.supporter.indexOf(q.supporter)));
query.push('t');
query.push('t');
query.push(Math.max(0,queryMap.tradeable.indexOf(q.tradeable)));
query.push(Math.max(0,queryMap.tradeable.indexOf(q.tradeable)));
Line 51: Line 49:
//query.push(Math.max(0,queryMap.augmented.indexOf(q.augmented)));
//query.push(Math.max(0,queryMap.augmented.indexOf(q.augmented)));
query.push('o');
query.push('o');
query.push(Math.max(0,queryMap.hiderecolour.indexOf(q.hiderecolour)));
if (q.tier_min_enabled) {
if (q.tier_min_enabled) {
query.push('l');
query.push('l');
Line 69: Line 66:
slotDropdown = new OO.ui.DropdownInputWidget({
slotDropdown = new OO.ui.DropdownInputWidget({
options: [
options: [
{ data: 'head' , label: 'Head' },
{ data: 'armor' , label: 'Armor' },
{ data: 'torso' , label: 'Body' },
{ data: 'shields' , label: 'Shields' },
{ data: 'legs' , label: 'Legs' },
{ data: 'weapons' , label: 'Weapons' },
{ data: 'hands' , label: 'Hands' },
{ data: 'sensors' , label: 'Sensors' },
{ data: 'feet' , label: 'Feet' },
{ data: 'engines' , label: 'Engines' },
{ data: 'main hand weapon' , label: 'Main hand weapons' },
{ data: 'utility' , label: 'Utility' },
{ data: 'off-hand weapon' , label: 'Off-hand weapons' },
{ data: 'off-hand' , label: 'Other off-hands' },
{ data: '2h weapon' , label: 'Two-handed weapons' },
{ data: 'neck' , label: 'Neck' },
{ data: 'ring' , label: 'Ring' },
{ data: 'back' , label: 'Cape' },
{ data: 'ammo' , label: 'Ammo' },
{ data: 'pocket' , label: 'Pocket' }
],
],
value: params.slot,
value: params.slot,
Line 88: Line 77:
});
});
//membership
//supporterhip
membersSelect = new OO.ui.ButtonSelectWidget({
supporterSelect = new OO.ui.ButtonSelectWidget({
items: [
items: [
new OO.ui.ButtonOptionWidget({ data: 'any', label: 'Any'}),
new OO.ui.ButtonOptionWidget({ data: 'any', label: 'Any'}),
new OO.ui.ButtonOptionWidget({ data: 'yes', label: 'Members\' only' }),
new OO.ui.ButtonOptionWidget({ data: 'no', label: 'Not member\'s only' }),
],
],
align: 'left'
align: 'left'
});
});
membersSelect.selectItemByData(params.members);
supporterSelect.selectItemByData(params.supporter);
//tradeable
//tradeable
Line 116: Line 103:
items: [
items: [
new OO.ui.ButtonOptionWidget({ data: 'any', label: 'Any', title: 'Any class' }),
new OO.ui.ButtonOptionWidget({ data: 'any', label: 'Any', title: 'Any class' }),
new OO.ui.ButtonOptionWidget({ data: 'melee', label: 'Melee' }),
new OO.ui.ButtonOptionWidget({ data: 'armor', label: 'Armor' }),
new OO.ui.ButtonOptionWidget({ data: 'magic', label: 'Magic' }),
new OO.ui.ButtonOptionWidget({ data: 'attack', label: 'Attack' }),
new OO.ui.ButtonOptionWidget({ data: 'ranged', label: 'Ranged' }),
new OO.ui.ButtonOptionWidget({ data: 'cargo salvage', label: 'Cargo Salvage' }),
new OO.ui.ButtonOptionWidget({ data: 'hybrid', label: 'Hybrid', title: 'Hybrid and all-class' }),
new OO.ui.ButtonOptionWidget({ data: 'cargo scanner', label: 'Cargo Scanner' }),
new OO.ui.ButtonOptionWidget({ data: 'cargo shielding', label: 'Cargo Shielding' }),
new OO.ui.ButtonOptionWidget({ data: 'damage', label: 'Damage' }),
new OO.ui.ButtonOptionWidget({ data: 'damage reduction', label: 'Damage Reduction' }),
new OO.ui.ButtonOptionWidget({ data: 'damage reflection', label: 'Damage Reflection' }),
new OO.ui.ButtonOptionWidget({ data: 'defense', label: 'Defense' }),
new OO.ui.ButtonOptionWidget({ data: 'engine efficiency', label: 'Engine Efficiency' }),
new OO.ui.ButtonOptionWidget({ data: 'evasion', label: 'Evasion' }),
new OO.ui.ButtonOptionWidget({ data: 'hacking', label: 'Hacking' }),
new OO.ui.ButtonOptionWidget({ data: 'heat resistance', label: 'Heat Resistance' }),
new OO.ui.ButtonOptionWidget({ data: 'intel', label: 'Intel' }),
new OO.ui.ButtonOptionWidget({ data: 'salvage chance', label: 'Salvage Chance' }),
new OO.ui.ButtonOptionWidget({ data: 'sensor scan results', label: 'Sensor Scan Results' }),
new OO.ui.ButtonOptionWidget({ data: 'shield', label: 'Shield' }),
new OO.ui.ButtonOptionWidget({ data: 'shield boost', label: 'Shield Boost' }),
new OO.ui.ButtonOptionWidget({ data: 'shield recharge', label: 'Shield Recharge' }),
new OO.ui.ButtonOptionWidget({ data: 'targeting', label: 'Targeting' }),
new OO.ui.ButtonOptionWidget({ data: 'threat', label: 'Threat' }),
new OO.ui.ButtonOptionWidget({ data: 'weapon recharge', label: 'Weapon Recharge' }),
],
],
align: 'left'
align: 'left'
});
});
classSelect.selectItemByData(params.cbclass);
classSelect.selectItemByData(params.modclass);
//TODO surface
//TODO surface
Line 131: Line 136:
new OO.ui.ButtonOptionWidget({ data: 'any', label: 'Any', title: 'Everything' }),
new OO.ui.ButtonOptionWidget({ data: 'any', label: 'Any', title: 'Everything' }),
new OO.ui.ButtonOptionWidget({ data: 'surface', label: 'Unrestricted', title: 'Items that are not restricted' }),
new OO.ui.ButtonOptionWidget({ data: 'surface', label: 'Unrestricted', title: 'Items that are not restricted' }),
new OO.ui.ButtonOptionWidget({ data: 'dungeoneering', label: 'Dungeoneering', title: 'Items only available in Daemonheim' }),
new OO.ui.ButtonOptionWidget({ data: 'stories', label: 'Stories', title: 'Items only available from Story completions' }),
new OO.ui.ButtonOptionWidget({ data: 'quest', label: 'Quest', title: 'Items only available during quests' }),
new OO.ui.ButtonOptionWidget({ data: 'missions', label: 'Missions', title: 'Items only available from Mission completions' }),
new OO.ui.ButtonOptionWidget({ data: 'minigame', label: 'Minigame', title: 'Items only available during minigames' }),
new OO.ui.ButtonOptionWidget({ data: 'encounters', label: 'Encounters', title: 'Items only available from Encounter completions' }),
new OO.ui.ButtonOptionWidget({ data: 'limited', label: 'Limited', title: 'Items only available for a limited amount of time' }),
new OO.ui.ButtonOptionWidget({ data: 'outlands', label: 'Outlands', title: 'Items only available from Outlands' }),
new OO.ui.ButtonOptionWidget({ data: 'microtransaction', label: 'MTX', title: 'Items only (reasonably) obtainable via Treasure Hunter, Squeal of Fortune, or Solomon\' General Store' }),
new OO.ui.ButtonOptionWidget({ data: 'events', label: 'Events', title: 'Items only available from Gemini Station Events' }),
]
]
});
});
restrictionSelect.selectItemByData(params.restriction);
restrictionSelect.selectItemByData(params.restriction);


recolourCheck = new OO.ui.CheckboxInputWidget({
selected: params.hiderecolour
});
//Augmentation
//Augmentation
/*
/*
Line 170: Line 172:
//tierMin
//tierMin
tierMinSelect = new OO.ui.NumberInputWidget({
tierMinSelect = new OO.ui.NumberInputWidget({
min: 0,
min: 100,
max: 120,
max: 500,
value: params.tier_min,
value: params.tier_min,
align: 'left',
align: 'left',
Line 179: Line 181:
tierMaxSelect = new OO.ui.NumberInputWidget({
tierMaxSelect = new OO.ui.NumberInputWidget({
min: 0,
min: 0,
max: 120,
max: 500,
value: params.tier_max,
value: params.tier_max,
align: 'left',
align: 'left',
Line 206: Line 208:
//don't reset slot
//don't reset slot
tradeableSelect.selectItemByData(queryDefaults.tradeable);
tradeableSelect.selectItemByData(queryDefaults.tradeable);
membersSelect.selectItemByData(queryDefaults.members);
supporterSelect.selectItemByData(queryDefaults.supporter);
classSelect.selectItemByData(queryDefaults.cbclass);
classSelect.selectItemByData(queryDefaults.modclass);
restrictionSelect.selectItemByData(queryDefaults.restriction);
restrictionSelect.selectItemByData(queryDefaults.restriction);
//augmentedSelect.selectItemByData(queryDefaults.augmented);
//augmentedSelect.selectItemByData(queryDefaults.augmented);
Line 299: Line 301:
new OO.ui.FieldLayout(slotDropdown, { label: 'Slot', align: 'left' }),
new OO.ui.FieldLayout(slotDropdown, { label: 'Slot', align: 'left' }),
new OO.ui.FieldLayout(classSelect, { label: 'Class', align: 'left' }),
new OO.ui.FieldLayout(classSelect, { label: 'Class', align: 'left' }),
new OO.ui.FieldLayout(membersSelect, { label: 'Membership', align: 'left' }),
new OO.ui.FieldLayout(supporterSelect, { label: 'Supporter', align: 'left' }),
new OO.ui.FieldLayout(tradeableSelect, { label: 'Tradeability', align: 'left' }),
new OO.ui.FieldLayout(tradeableSelect, { label: 'Tradeability', align: 'left' }),
new OO.ui.FieldLayout(restrictionSelect, { label: 'Restriction', align: 'left' }),
new OO.ui.FieldLayout(restrictionSelect, { label: 'Restriction', align: 'left' }),
//new OO.ui.FieldLayout(augmentedSelect, { label: 'Augmentation', align: 'left' }),
//new OO.ui.FieldLayout(augmentedSelect, { label: 'Augmentation', align: 'left' }),
new OO.ui.FieldLayout(recolourCheck, { label: 'Hide recolours and dyes?', align: 'left' }),
new OO.ui.LabelWidget({label: 'Tier filters', classes: ['armory-tier-label']}),
new OO.ui.LabelWidget({label: 'Tier filters', classes: ['armory-tier-label']}),
new OO.ui.HorizontalLayout({
new OO.ui.HorizontalLayout({
Line 336: Line 337:
val = classSelect.findSelectedItem();
val = classSelect.findSelectedItem();
if (val !== null) {
if (val !== null) {
values.cbclass = val.getData();
values.modclass = val.getData();
}
}
val = membersSelect.findSelectedItem();
val = supporterSelect.findSelectedItem();
if (val !== null) {
if (val !== null) {
values.members = val.getData();
values.supporter = val.getData();
}
}
Line 358: Line 359:
values.augmented = val.getData();
values.augmented = val.getData();
}*/
}*/
values.hiderecolour = recolourCheck.isSelected();
values.tier_min_enabled = tierMinCheck.isSelected();
values.tier_min_enabled = tierMinCheck.isSelected();
Line 390: Line 390:
switch (letter) {
switch (letter) {
case 's': assignTo('slot', number); break;
case 's': assignTo('slot', number); break;
case 'c': assignTo('cbclass', number); break;
case 'c': assignTo('modclass', number); break;
case 'm': assignTo('members', number); break;
case 'm': assignTo('supporter', number); break;
case 't': assignTo('tradeable', number); break;
case 't': assignTo('tradeable', number); break;
case 'r': assignTo('restriction', number); break;
case 'r': assignTo('restriction', number); break;
Line 423: Line 423:
'{{Armory',
'{{Armory',
'|slot='+params.slot,
'|slot='+params.slot,
'|cbclass='+params.cbclass,
'|modclass='+params.modclass,
'|members='+params.members,
'|supporter='+params.supporter,
'|tradeable='+params.tradeable,
'|tradeable='+params.tradeable,
'|restriction='+params.restriction,
'|restriction='+params.restriction,
//'|augmented='+params.augmented,
//'|augmented='+params.augmented,
'|hiderecolour='+params.hiderecolour,
'|tier_min='+tierMin,
'|tier_min='+tierMin,
'|tier_max='+tierMax,
'|tier_max='+tierMax,