Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5987796
ChangesListViewModel.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
ChangesListViewModel.js
View Options
/**
* View model for the changes list.
*
* @class mw.rcfilters.dm.ChangesListViewModel
* @ignore
* @mixes OO.EventEmitter
*
* @param {jQuery} $initialFieldset The initial server-generated legacy form content
*/
const
ChangesListViewModel
=
function
MwRcfiltersDmChangesListViewModel
(
$initialFieldset
)
{
// Mixin constructor
OO
.
EventEmitter
.
call
(
this
);
this
.
valid
=
true
;
this
.
newChangesExist
=
false
;
this
.
liveUpdate
=
false
;
this
.
unseenWatchedChanges
=
false
;
this
.
extractNextFrom
(
$initialFieldset
);
};
/* Initialization */
OO
.
initClass
(
ChangesListViewModel
);
OO
.
mixinClass
(
ChangesListViewModel
,
OO
.
EventEmitter
);
/* Events */
/**
* The list of changes is now invalid (out of date).
*
* @event invalidate
* @ignore
*/
/**
* The list of changes has been updated.
*
* @event update
* @ignore
* @param {jQuery|string} $changesListContent List of changes
* @param {jQuery} $fieldset Server-generated form
* @param {string} noResultsDetails Type of no result error
* @param {boolean} isInitialDOM Whether the previous dom variables are from the initial page load
* @param {boolean} fromLiveUpdate These are new changes fetched via Live Update
*/
/**
* The existence of changes newer than those currently displayed has changed.
*
* @event newChangesExist
* @param {boolean} newChangesExist
* @ignore
*/
/**
* The state of the 'live update' feature has changed.
*
* @event liveUpdateChange
* @param {boolean} enable
* @ignore
*/
/* Methods */
/**
* Invalidate the list of changes
*
* @fires invalidate
* @ignore
*/
ChangesListViewModel
.
prototype
.
invalidate
=
function
()
{
if
(
this
.
valid
)
{
this
.
valid
=
false
;
this
.
emit
(
'invalidate'
);
}
};
/**
* Update the model with an updated list of changes
*
* @param {jQuery|string} changesListContent
* @param {jQuery} $fieldset
* @param {string} noResultsDetails Type of no result error
* @param {boolean} [isInitialDOM] Using the initial (already attached) DOM elements
* @param {boolean} [separateOldAndNew] Whether a logical separation between old and new changes is needed
* @fires update
*/
ChangesListViewModel
.
prototype
.
update
=
function
(
changesListContent
,
$fieldset
,
noResultsDetails
,
isInitialDOM
,
separateOldAndNew
)
{
const
from
=
this
.
nextFrom
;
this
.
valid
=
true
;
this
.
extractNextFrom
(
$fieldset
);
this
.
checkForUnseenWatchedChanges
(
changesListContent
);
this
.
emit
(
'update'
,
changesListContent
,
$fieldset
,
noResultsDetails
,
isInitialDOM
,
separateOldAndNew
?
from
:
null
);
};
/**
* Specify whether new changes exist
*
* @param {boolean} newChangesExist
* @fires newChangesExist
*/
ChangesListViewModel
.
prototype
.
setNewChangesExist
=
function
(
newChangesExist
)
{
if
(
newChangesExist
!==
this
.
newChangesExist
)
{
this
.
newChangesExist
=
newChangesExist
;
this
.
emit
(
'newChangesExist'
,
newChangesExist
);
}
};
/**
* @return {boolean} Whether new changes exist
*/
ChangesListViewModel
.
prototype
.
getNewChangesExist
=
function
()
{
return
this
.
newChangesExist
;
};
/**
* Extract the value of the 'from' parameter from a link in the field set
*
* @param {jQuery} $fieldset
*/
ChangesListViewModel
.
prototype
.
extractNextFrom
=
function
(
$fieldset
)
{
const
data
=
$fieldset
.
find
(
'.rclistfrom > a, .wlinfo'
).
data
(
'params'
);
if
(
data
&&
data
.
from
)
{
this
.
nextFrom
=
data
.
from
;
this
.
nextFromFormatted
=
data
.
fromFormatted
;
}
};
/**
* @return {string} The 'from' parameter that can be used to query new changes
*/
ChangesListViewModel
.
prototype
.
getNextFrom
=
function
()
{
return
this
.
nextFrom
;
};
/**
* @return {string} The 'from' parameter formatted per the user's datetime format preference
*/
ChangesListViewModel
.
prototype
.
getNextFromFormatted
=
function
()
{
return
this
.
nextFromFormatted
;
};
/**
* Toggle the 'live update' feature on/off
*
* @param {boolean} enable
*/
ChangesListViewModel
.
prototype
.
toggleLiveUpdate
=
function
(
enable
)
{
enable
=
enable
===
undefined
?
!
this
.
liveUpdate
:
enable
;
if
(
enable
!==
this
.
liveUpdate
)
{
this
.
liveUpdate
=
enable
;
this
.
emit
(
'liveUpdateChange'
,
this
.
liveUpdate
);
}
};
/**
* @return {boolean} The 'live update' feature is enabled
*/
ChangesListViewModel
.
prototype
.
getLiveUpdate
=
function
()
{
return
this
.
liveUpdate
;
};
/**
* Check if some of the given changes watched and unseen
*
* @param {jQuery|string} changeslistContent
*/
ChangesListViewModel
.
prototype
.
checkForUnseenWatchedChanges
=
function
(
changeslistContent
)
{
this
.
unseenWatchedChanges
=
changeslistContent
!==
'NO_RESULTS'
&&
changeslistContent
.
find
(
'.mw-changeslist-line-watched'
).
length
>
0
;
};
/**
* @return {boolean} Whether some of the current changes are watched and unseen
*/
ChangesListViewModel
.
prototype
.
hasUnseenWatchedChanges
=
function
()
{
return
this
.
unseenWatchedChanges
;
};
module
.
exports
=
ChangesListViewModel
;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Oct 4, 00:34 (2 w, 6 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
4d/9f/321d512cc57e060fbafdeb41f520
Default Alt Text
ChangesListViewModel.js (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment