Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4113069
ChangesLimitPopupWidget.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
ChangesLimitPopupWidget.js
View Options
const
ValuePickerWidget
=
require
(
'./ValuePickerWidget.js'
);
/**
* Widget defining the popup to choose number of results.
*
* @class mw.rcfilters.ui.ChangesLimitPopupWidget
* @ignore
* @extends OO.ui.Widget
*
* @param {mw.rcfilters.dm.FilterGroup} limitModel Group model for 'limit'
* @param {mw.rcfilters.dm.FilterItem} groupByPageItemModel Group model for 'limit'
* @param {Object} [config] Configuration object
*/
const
ChangesLimitPopupWidget
=
function
MwRcfiltersUiChangesLimitPopupWidget
(
limitModel
,
groupByPageItemModel
,
config
)
{
config
=
config
||
{};
// Parent
ChangesLimitPopupWidget
.
super
.
call
(
this
,
config
);
this
.
limitModel
=
limitModel
;
this
.
groupByPageItemModel
=
groupByPageItemModel
;
this
.
valuePicker
=
new
ValuePickerWidget
(
this
.
limitModel
,
{
label
:
mw
.
msg
(
'rcfilters-limit-title'
)
}
);
this
.
groupByPageCheckbox
=
new
OO
.
ui
.
CheckboxInputWidget
(
{
selected
:
this
.
groupByPageItemModel
.
isSelected
()
}
);
// Events
this
.
valuePicker
.
connect
(
this
,
{
choose
:
[
'emit'
,
'limit'
]
}
);
this
.
groupByPageCheckbox
.
connect
(
this
,
{
change
:
[
'emit'
,
'groupByPage'
]
}
);
this
.
groupByPageItemModel
.
connect
(
this
,
{
update
:
'onGroupByPageModelUpdate'
}
);
// HACK: Directly connect to the checkbox click event so that we can save the preference
// when the user explicitly interacts with the checkbox rather than when the checkbox changes
// state. This is to make sure that we only save preference when the user explicitly interacts
// with the UI.
this
.
groupByPageCheckbox
.
$element
.
on
(
'click'
,
this
.
onGroupByPageUserClick
.
bind
(
this
)
);
// Initialize
this
.
$element
.
addClass
(
'mw-rcfilters-ui-changesLimitPopupWidget'
)
.
append
(
this
.
valuePicker
.
$element
,
OO
.
ui
.
isMobile
()
?
undefined
:
new
OO
.
ui
.
FieldLayout
(
this
.
groupByPageCheckbox
,
{
align
:
'inline'
,
label
:
mw
.
msg
(
'rcfilters-group-results-by-page'
)
}
).
$element
);
this
.
valuePicker
.
selectWidget
.
$element
.
attr
(
'aria-label'
,
mw
.
msg
(
'rcfilters-limit-title'
)
);
};
/* Initialization */
OO
.
inheritClass
(
ChangesLimitPopupWidget
,
OO
.
ui
.
Widget
);
/* Events */
/**
* A limit item was chosen.
*
* @event limit
* @param {string} name Item name
* @ignore
*/
/**
* Results are grouped by page
*
* @event groupByPage
* @param {boolean} isGrouped The results are grouped by page
* @ignore
*/
/**
* Respond to group by page model update
*/
ChangesLimitPopupWidget
.
prototype
.
onGroupByPageModelUpdate
=
function
()
{
this
.
groupByPageCheckbox
.
setSelected
(
this
.
groupByPageItemModel
.
isSelected
()
);
};
/**
* Respond to user explicitly clicking the Group by page checkbox
*/
ChangesLimitPopupWidget
.
prototype
.
onGroupByPageUserClick
=
function
()
{
this
.
emit
(
'groupByPageUserClick'
,
this
.
groupByPageCheckbox
.
isSelected
()
);
};
module
.
exports
=
ChangesLimitPopupWidget
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Aug 18, 23:11 (1 d, 13 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
49/a8/a1cd6f6197e3b6be9cd58cc210c5
Default Alt Text
ChangesLimitPopupWidget.js (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment