Sitic has submitted this change and it was merged.
Change subject: Add support for subdivided watchlists
......................................................................
Add support for subdivided watchlists
Bug: T109188
Change-Id: Ie304ae098488c00a8fe924f6b30f254983d1a1c5
---
M frontend/src/app/filters.js
M frontend/src/app/main/main.controller.js
M frontend/src/app/main/main.html
M frontend/src/app/services.js
M frontend/src/components/notifications/notifications.html
M frontend/src/components/settings/settings.html
A frontend/src/components/watchlist/seperated.html
R frontend/src/components/watchlist/unified.html
M frontend/src/i18n/de.json
M frontend/src/i18n/en.json
M frontend/src/i18n/qqq.json
11 files changed, 89 insertions(+), 18 deletions(-)
Approvals:
Sitic: Verified; Looks good to me, approved
diff --git a/frontend/src/app/filters.js b/frontend/src/app/filters.js
index 48a9021..8f3376f 100644
--- a/frontend/src/app/filters.js
+++ b/frontend/src/app/filters.js
@@ -4,7 +4,7 @@
.filter('urlEncode', urlEncodeFilter)
.filter('list', listFilter)
.filter('watchlist', watchlistFilter)
- .filter('projects', projectsFilter)
+ .filter('projectList', projectsFilter)
;
/**
@@ -99,7 +99,11 @@
}
function projectsFilter () {
- return function (items, projects) {
- return items.filter(projectsFilterFunc, projects)
+ return function (items, config) {
+ return items.filter(projectListFilterFunc, config)
};
}
+
+function projectListFilterFunc (items) {
+ return (this.projectsSelected.indexOf(items) > -1);
+}
diff --git a/frontend/src/app/main/main.controller.js
b/frontend/src/app/main/main.controller.js
index 373ac21..ac0db54 100644
--- a/frontend/src/app/main/main.controller.js
+++ b/frontend/src/app/main/main.controller.js
@@ -1,7 +1,8 @@
'use strict';
angular.module('crosswatch')
- .controller('MainCtrl', function (textDirection) {
+ .controller('MainCtrl', function (textDirection, dataService) {
var vm = this;
vm.textDirection = textDirection;
+ vm.config = dataService.config;
});
diff --git a/frontend/src/app/main/main.html b/frontend/src/app/main/main.html
index 01e1c92..7565173 100644
--- a/frontend/src/app/main/main.html
+++ b/frontend/src/app/main/main.html
@@ -3,7 +3,8 @@
<div layout="column" flex class="md-padding" role="main">
<div ng-include="'components/settings/settings.html'"></div>
<div ng-include="'components/notifications/notifications.html'"></div>
- <div ng-include="'components/watchlist/watchlist.html'"></div>
+ <div ng-if="!ctrl.config.subdivided"
ng-include="'components/watchlist/unified.html'"></div>
+ <div ng-if="ctrl.config.subdivided"
ng-include="'components/watchlist/seperated.html'"></div>
</div>
<ng-include src="'components/footer/footer.html'"></ng-include>
diff --git a/frontend/src/app/services.js b/frontend/src/app/services.js
index 1859ce2..3156bda 100644
--- a/frontend/src/app/services.js
+++ b/frontend/src/app/services.js
@@ -44,6 +44,10 @@
*/
vm.watchlist.active = [];
/**
+ * Watchlist sorted as array per project
+ */
+ vm.watchlist.perProject = {};
+ /**
* loading spinner
*/
vm.watchlist.loading = true;
@@ -106,7 +110,12 @@
/**
* Automatically show diff, if edit is unreviewed and user has review right
*/
- flaggedrevsDiff: true
+ flaggedrevsDiff: true,
+ /**
+ * true: show subdivided wikis watchlist
+ * false: show unified wikis watchlist
+ */
+ subdivided: false
};
// Get config from localstorage or create from defaultconfig
if (localStorageService.get('config') !== null) {
@@ -176,6 +185,12 @@
for (var i=0; i < entries.length; i++) {
vm.watchlist.dict[entries[i].id] = entries[i];
}
+
+ if (!Array.isArray(vm.watchlist.perProject[project])) {
+ vm.watchlist.perProject[project] = entries;
+ } else {
+ Array.prototype.push.apply(vm.watchlist.perProject[project], entries);
+ }
};
/**
@@ -215,10 +230,11 @@
vm.resetWatchlist = function () {
vm.watchlist.original = [];
vm.watchlist.filtered = [];
- vm.watchlist.dict = [];
+ vm.watchlist.dict = {};
vm.watchlist.active.length = 0; /* preserve pointer, slow due to GC */
vm.notifications.length = 0;
vm.watchlist.loading = true;
+ vm.watchlist.perProject = {};
vm.queryWatchlist();
vm.saveConfig();
};
diff --git a/frontend/src/components/notifications/notifications.html
b/frontend/src/components/notifications/notifications.html
index 9153d1f..4409e9d 100644
--- a/frontend/src/components/notifications/notifications.html
+++ b/frontend/src/components/notifications/notifications.html
@@ -1,6 +1,6 @@
-<div ng-controller="NotificationsCtrl as ctrl" layout="row"
layout-align="center center" class="md-padding">
- <md-whiteframe class="md-whiteframe-z5" ng-class="(ctrl.config.oneline) ?
'whitebox-oneline' : 'whitebox'"
- ng-if="ctrl.notifications.length">
+<div ng-controller="NotificationsCtrl as ctrl" layout="row"
layout-align="center center" class="md-padding"
+ ng-if="ctrl.notifications.length">
+ <md-whiteframe class="md-whiteframe-z5" ng-class="(ctrl.config.oneline) ?
'whitebox-oneline' : 'whitebox'">
<md-toolbar class='md-small-tall'>
<div class="md-toolbar-tools">
<h1>
diff --git a/frontend/src/components/settings/settings.html
b/frontend/src/components/settings/settings.html
index 2f4f1b2..4cf99d7 100644
--- a/frontend/src/components/settings/settings.html
+++ b/frontend/src/components/settings/settings.html
@@ -54,6 +54,10 @@
<p translate="ONELINE"></p>
<md-checkbox ng-model="ctrl.config.oneline"
ng-change="ctrl.saveConfig()"></md-checkbox>
</md-list-item>
+ <md-list-item>
+ <p translate="SUBDIVIDED"></p>
+ <md-checkbox ng-model="ctrl.config.subdivided"
ng-change="ctrl.saveConfig()"></md-checkbox>
+ </md-list-item>
</div>
</md-list>
</div>
@@ -85,16 +89,20 @@
<div flex="50">
<md-list layout="column" class="md-padding">
<md-list-item>
- <p translate="FLAGS"></p>
- <md-checkbox ng-model="ctrl.config.flagsenable"
ng-change="ctrl.saveConfig()"></md-checkbox>
+ <p translate="SUBDIVIDED"></p>
+ <md-checkbox ng-model="ctrl.config.subdivided"
ng-change="ctrl.saveConfig()"></md-checkbox>
+ </md-list-item>
+ <md-list-item title="{{'FLAGGEDREVS_TOOLTIP' | translate}}">
+ <p translate="FLAGGEDREVS_OPTION"></p>
+ <md-checkbox ng-model="ctrl.config.flaggedrevsDiff"
ng-change="ctrl.resetWatchlist()"></md-checkbox>
</md-list-item>
<md-list-item title="{{'ORES_TOOLTIP' | translate}}">
<p translate="ORES_OPTION"></p>
<md-checkbox ng-model="ctrl.config.oresDiff"
ng-change="ctrl.resetWatchlist()"></md-checkbox>
</md-list-item>
- <md-list-item title="{{'FLAGGEDREVS_TOOLTIP' | translate}}">
- <p translate="FLAGGEDREVS_OPTION"></p>
- <md-checkbox ng-model="ctrl.config.flaggedrevsDiff"
ng-change="ctrl.resetWatchlist()"></md-checkbox>
+ <md-list-item>
+ <p translate="FLAGS"></p>
+ <md-checkbox ng-model="ctrl.config.flagsenable"
ng-change="ctrl.saveConfig()"></md-checkbox>
</md-list-item>
</md-list>
</div>
diff --git a/frontend/src/components/watchlist/seperated.html
b/frontend/src/components/watchlist/seperated.html
new file mode 100644
index 0000000..e06a340
--- /dev/null
+++ b/frontend/src/components/watchlist/seperated.html
@@ -0,0 +1,38 @@
+<div ng-controller="WatchlistCtrl as ctrl" class="md-padding">
+ <div layout="row" layout-align="center center" class="md-padding"
ng-if="ctrl.watchlist.loading">
+ <md-whiteframe class="md-whiteframe-z5 whitebox">
+ <md-toolbar class='md-small-tall'>
+ <div class="md-toolbar-tools">
+ <h1>
+ {{'WATCHLIST' | translate}}
+ </h1>
+ </div>
+ </md-toolbar>
+ <md-list>
+ <md-list-item layout="row" layout-align="center center">
+ <md-progress-circular md-mode="indeterminate"></md-progress-circular>
+ </md-list-item>
+ </md-list>
+ </md-whiteframe>
+ </div>
+ <div ng-repeat="project in ctrl.config.projectsSelected |
projectList:ctrl.config" class="md-padding"
+ layout="row" layout-align="center center"
ng-if="(ctrl.watchlist.perProject[project] | watchlist:ctrl.config).length">
+ <md-whiteframe class="md-whiteframe-z5" ng-class="(ctrl.config.oneline) ?
'whitebox-oneline' : 'whitebox'">
+ <md-toolbar class='md-small-tall'>
+ <div class="md-toolbar-tools">
+ <h1>
+ {{project}}
+ </h1>
+ </div>
+ </md-toolbar>
+ <md-list class="watchlist-container">
+ <md-list-item layout="row" class="watchlist"
+ ng-class="[{'watchlist-list-item-oneline':
ctrl.config.oneline}, ctrl.config.projectColors[event.project]]"
+ ng-repeat="event in ctrl.watchlist.perProject[project] |
watchlist:ctrl.config track by event.id">
+ <watchlist-entry ng-click="ctrl.clicked(event)"
md-ink-ripple></watchlist-entry>
+ <md-divider></md-divider>
+ </md-list-item>
+ </md-list>
+ </md-whiteframe>
+ </div>
+</div>
diff --git a/frontend/src/components/watchlist/watchlist.html
b/frontend/src/components/watchlist/unified.html
similarity index 100%
rename from frontend/src/components/watchlist/watchlist.html
rename to frontend/src/components/watchlist/unified.html
diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json
index 0534c7b..4afc13a 100644
--- a/frontend/src/i18n/de.json
+++ b/frontend/src/i18n/de.json
@@ -74,5 +74,6 @@
"WATCHLIST_ADD": "Diese Seite zu meiner Beobachtungsliste hinzufügen",
"ORES_OPTION": "Zeige Versionsänderungen für ORES vorhergesagten Reverts",
"PENDING_EDITS": "sichten",
- "FLAGGEDREVS_OPTION": "Zeige Versionsänderungen für ungesichtete
Bearbeitungen"
+ "FLAGGEDREVS_OPTION": "Zeige Versionsänderungen für ungesichtete
Bearbeitungen",
+ "SUBDIVIDED": "Zeige die Beobachtungsliste für jedes wiki seperat"
}
diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json
index 8ffad14..c03facc 100644
--- a/frontend/src/i18n/en.json
+++ b/frontend/src/i18n/en.json
@@ -92,5 +92,6 @@
"FLAGGEDREVS_OPTION": "Show diff for pending changes needing review",
"FLAGGEDREVS_TOOLTIP": "Show diff for unreviewed changes, if you have the
review permission for a wiki which uses the FlaggedRevs extension.",
"SHOW_DIFF": "show diff",
- "COLLAPSE": "collapse"
+ "COLLAPSE": "collapse",
+ "SUBDIVIDED": "Show individual watchlist for each wiki"
}
diff --git a/frontend/src/i18n/qqq.json b/frontend/src/i18n/qqq.json
index a60c829..5386e89 100644
--- a/frontend/src/i18n/qqq.json
+++ b/frontend/src/i18n/qqq.json
@@ -60,5 +60,6 @@
"FLAGGEDREVS_OPTION": "Checkbox to enable the option, pending changes are
edits needing review (for
[[:mw:Help:Extension:FlaggedRevs|Extension:FlaggedRevs]])",
"FLAGGEDREVS_TOOLTIP": "Tooltip for \"FLAGGEDREVS_OPTION\"",
"SHOW_DIFF": "Tooltip for button to show diff preview",
- "COLLAPSE": "Tooltip for button to collapse the expanded view"
+ "COLLAPSE": "Tooltip for button to collapse the expanded view",
+ "SUBDIVIDED": "Checkbox to switch to a subdiveded watchlist (shows the
watchlist for each wiki separately), instead of a combined watchlist"
}
--
To view, visit https://gerrit.wikimedia.org/r/231789
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie304ae098488c00a8fe924f6b30f254983d1a1c5
Gerrit-PatchSet: 5
Gerrit-Project: labs/tools/crosswatch
Gerrit-Branch: master
Gerrit-Owner: Sitic <[email protected]>
Gerrit-Reviewer: Siebrand <[email protected]>
Gerrit-Reviewer: Sitic <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits