jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/363316 )

Change subject: BSUsageTracker: Used ExtJS grid indstead of simple table on 
special page
......................................................................


BSUsageTracker: Used ExtJS grid indstead of simple table on special page

=> #6655

Change-Id: I28c74cd27bbca8a65bb8e2745f92ac627cf55983
---
M UsageTracker/extension.json
A UsageTracker/resources/BS.UsageTracker/panel/Manager.js
A UsageTracker/resources/ext.bluespice.usagetracker.manager.js
A UsageTracker/src/api/UsageTrackerStore.php
M UsageTracker/src/specials/SpecialUsageTracker.php
5 files changed, 158 insertions(+), 41 deletions(-)

Approvals:
  Mglaser: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/UsageTracker/extension.json b/UsageTracker/extension.json
index 6afd443..f401b0e 100644
--- a/UsageTracker/extension.json
+++ b/UsageTracker/extension.json
@@ -14,6 +14,9 @@
                        "extPath": "/BlueSpiceExtensions/UsageTracker"
                }
        },
+       "APIModules": {
+               "bs-usagetracker-store": 
"BS\\UsageTracker\\api\\UsageTrackerStore"
+       },
        "MessagesDirs": {
                "UsageTracker": [
                        "i18n"
@@ -30,7 +33,8 @@
                "BS\\UsageTracker\\Collectors\\Property": 
"src/collectors/Property.php",
                "BS\\UsageTracker\\Collectors\\Tag": "src/collectors/Tag.php",
                "BS\\UsageTracker\\Jobs\\UsageTrackerCollectJob": 
"src/jobs/UsageTrackerCollectJob.php",
-               "BS\\UsageTracker\\CollectorResult": "src/CollectorResult.php"
+               "BS\\UsageTracker\\CollectorResult": "src/CollectorResult.php",
+               "BS\\UsageTracker\\api\\UsageTrackerStore": 
"src/api/UsageTrackerStore.php"
        },
        "Hooks": {
                "LoadExtensionSchemaUpdates": "UsageTracker::getSchemaUpdates"
@@ -38,5 +42,26 @@
        "JobClasses": {
                "usageTrackerCollectJob": 
"BS\\UsageTracker\\Jobs\\UsageTrackerCollectJob"
        },
+       "ResourceModules": {
+               "ext.UsageTracker.manager": {
+                       "scripts": [
+                               "ext.bluespice.usagetracker.manager.js"
+                       ],
+                       "styles": [],
+                       "messages": [
+                               "bs-usagetracker-col-identifier",
+                               "bs-usagetracker-col-desc",
+                               "bs-usagetracker-col-count",
+                               "bs-usagetracker-col-last-updated"
+                       ],
+                       "dependencies": [
+                               "ext.bluespice.extjs"
+                       ]
+               }
+       },
+       "ResourceFileModulePaths": {
+               "localBasePath": "resources",
+               "remoteExtPath": "BlueSpiceExtensions/UsageTracker/resources"
+       },
        "manifest_version": 1
 }
diff --git a/UsageTracker/resources/BS.UsageTracker/panel/Manager.js 
b/UsageTracker/resources/BS.UsageTracker/panel/Manager.js
new file mode 100644
index 0000000..6bb7c2f
--- /dev/null
+++ b/UsageTracker/resources/BS.UsageTracker/panel/Manager.js
@@ -0,0 +1,77 @@
+Ext.define( 'BS.UsageTracker.panel.Manager', {
+       extend: 'BS.CRUDGridPanel',
+       requires: [ 'BS.store.BSApi' ],
+
+       initComponent: function() {
+
+               this._gridCols = [
+                       {
+                               text: mw.message( 
'bs-usagetracker-col-identifier' ).plain(),
+                               dataIndex: 'identifier',
+                               sortable: true,
+                               filterable: true,
+                               flex: 1
+                       },
+                       {
+                               text: mw.message( 'bs-usagetracker-col-desc' 
).plain(),
+                               dataIndex: 'description',
+                               sortable: true,
+                               filterable: true,
+                               width: '50%'
+                       },
+                       {
+                               text: mw.message( 
'bs-usagetracker-col-last-updated' ).plain(),
+                               dataIndex: 'updateDate',
+                               sortable: true,
+                               filterable: false,
+                               filter: {
+                                       type: 'date'
+                               },
+                               flex: 1
+                       },
+                       {
+                               text: mw.message( 'bs-usagetracker-col-count' 
).plain(),
+                               dataIndex: 'count',
+                               sortable: true,
+                               filter: {
+                                       type: 'int'
+                               },
+                               filterable: true,
+                               width: '20px'
+                       }
+               ];
+
+               this._storeFields = [
+                       'identifier',
+                       'description',
+                       'descriptionKey',
+                       'updateDate',
+                       'count',
+                       'type'
+               ];
+
+               this.callParent( arguments );
+       },
+
+       makeGridColumns: function(){
+               this.colMainConf.columns = this._gridCols;
+               return this.colMainConf.columns;
+               return this.callParent( arguments );
+       },
+
+       makeRowActions: function() {
+               return [];
+       },
+
+       makeMainStore: function() {
+               this.strMain = new BS.store.BSApi({
+                       apiAction: 'bs-usagetracker-store',
+                       fields: this._storeFields
+               });
+               return this.callParent( arguments );
+       },
+
+       makeTbarItems: function() {
+               return [];
+       }
+});
\ No newline at end of file
diff --git a/UsageTracker/resources/ext.bluespice.usagetracker.manager.js 
b/UsageTracker/resources/ext.bluespice.usagetracker.manager.js
new file mode 100644
index 0000000..6237268
--- /dev/null
+++ b/UsageTracker/resources/ext.bluespice.usagetracker.manager.js
@@ -0,0 +1,18 @@
+( function( mw, $, bs, d, undefined ){
+       function _renderGrid() {
+               Ext.onReady(function(){
+                       Ext.create( 'BS.UsageTracker.panel.Manager', {
+                               renderTo: 'bs-usagetracker-manager'
+                       });
+               });
+       }
+
+       var deps = mw.config.get( 'bsUsageTrackerDeps', false );
+       if( deps ) {
+               mw.loader.using( deps, _renderGrid );
+       }
+       else {
+               _renderGrid();
+       }
+
+})( mediaWiki, jQuery, blueSpice, document );
\ No newline at end of file
diff --git a/UsageTracker/src/api/UsageTrackerStore.php 
b/UsageTracker/src/api/UsageTrackerStore.php
new file mode 100644
index 0000000..80fd229
--- /dev/null
+++ b/UsageTracker/src/api/UsageTrackerStore.php
@@ -0,0 +1,33 @@
+<?php
+namespace BS\UsageTracker\api;
+class UsageTrackerStore extends \BSApiExtJSStoreBase {
+
+       /**
+        * @param string $sQuery
+        * @return array
+        */
+       protected function makeData( $sQuery = '' ) {
+               $aData = [];
+               $aRes = \BsExtensionManager::getExtension(
+                       'UsageTracker'
+               )->getUsageDataFromDB();
+               foreach( $aRes as $oCollectorResult ) {
+                       $aData[] = $this->makeDataRow( $oCollectorResult );
+               }
+               return $aData;
+       }
+
+       protected function makeDataRow( \BS\UsageTracker\CollectorResult 
$oCollectorResult ) {
+               return (object) array_merge(
+                       (array) $oCollectorResult,
+                       [
+                               'description' => 
$oCollectorResult->getDescription(),
+                               'updateDate' => 
$this->getLanguage()->timeanddate(
+                                       $oCollectorResult->getUpdateDate(),
+                                       true
+                               ),
+                       ]
+               );
+       }
+
+}
\ No newline at end of file
diff --git a/UsageTracker/src/specials/SpecialUsageTracker.php 
b/UsageTracker/src/specials/SpecialUsageTracker.php
index 2609ba7..f06923e 100644
--- a/UsageTracker/src/specials/SpecialUsageTracker.php
+++ b/UsageTracker/src/specials/SpecialUsageTracker.php
@@ -35,7 +35,6 @@
        public function execute( $sParameter ) {
                parent::execute( $sParameter );
 
-               $oOut = $this->getOutput();
                $oRequest = $this->getRequest();
 
                // Handle update requests (in case the user has the neccesary 
rights)
@@ -57,48 +56,13 @@
                        $this->showUpdateForm();
                }
 
-               // Get stored data from db
-               $aData = BsExtensionManager::getExtension( 'UsageTracker' 
)->getUsageDataFromDB();
-
-               // Show data in table
-               $sTableHtml = HTML::rawElement( "tr", array(),
-                       HTML::element( "th", array(), wfMessage( 
'bs-usagetracker-col-identifier' )->text() ).
-                       HTML::element( "th", array(), wfMessage( 
'bs-usagetracker-col-desc' )->text() ).
-                       HTML::element( "th", array(), wfMessage( 
'bs-usagetracker-col-last-updated' )->text() ).
-                       HTML::element( "th", array(), wfMessage( 
'bs-usagetracker-col-count' )->text() )
-               );
-
-               foreach ( $aData as $oResult ) {
-                       $sTableHtml .=  $this->makeRow( $oResult );
-               }
-
-               $oOut->addHTML(
-                       HTML::rawElement( "table", array( "class" => "sortable 
wikitable" ), $sTableHtml )
-               );
-               return true;
+               $this->getOutput()->addModules( 'ext.UsageTracker.manager' );
+               $this->getOutput()->addHTML( Html::element( 'div', [
+                       'id' => 'bs-usagetracker-manager'
+               ]));
        }
 
        /**
-        * Renders a single result table row in HTML
-        * @param BS\UsageTracker\CollectorResult $oCollectorResult
-        * @return string HTML for a single table row
-        */
-       protected function makeRow( BS\UsageTracker\CollectorResult 
$oCollectorResult ) {
-               $sHtml = HTML::rawElement( "tr", array(),
-                       HTML::element( "td", [ "width" => "10%" ], 
$oCollectorResult->identifier ).
-                       HTML::element( "td", array(), 
$oCollectorResult->getDescription() ).
-                       HTML::element( "td", [ "align" => "right", "width" => 
"10%" ], $oCollectorResult->getUpdateDate() ).
-                       HTML::rawElement(
-                               "td",
-                               [ "align" => "right", "width" => "10%" ],
-                               HTML::element( "strong", array(), 
$oCollectorResult->count )
-                       )
-               );
-
-               return $sHtml;
-       }
-
-               /**
         * Output a form to start collect jobs
         */
        protected function showUpdateForm() {

-- 
To view, visit https://gerrit.wikimedia.org/r/363316
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I28c74cd27bbca8a65bb8e2745f92ac627cf55983
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/BlueSpiceExtensions
Gerrit-Branch: master
Gerrit-Owner: Pwirth <[email protected]>
Gerrit-Reviewer: Mglaser <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to