Browse Source

gridServer

luoyifan 4 năm trước cách đây
mục cha
commit
555862f8ef
4 tập tin đã thay đổi với 92 bổ sung9 xóa
  1. 1 1
      src/Defaults.ts
  2. 9 8
      src/controls/grid.js
  3. 80 0
      src/controls/stores.js
  4. 2 0
      src/init.ts

+ 1 - 1
src/Defaults.ts

@@ -13,7 +13,7 @@ export const combo = {
 }
 
 export const grid = {
-    border: false,
+    border: true,
     columnLines: true,
     plugins: {
         cellediting: {

+ 9 - 8
src/controls/grid.js

@@ -3,9 +3,11 @@ import {grid} from '../Defaults'
 import {baseConfig} from "./base";
 
 export default function () {
-    const cc = Ext.grid.Panel.prototype.constructor
-    const {initComponent, setData} = Ext.grid.Panel.prototype
-    Ext.grid.Panel.override({
+
+    Ext.define('Yvan.Grid', {
+        extend: 'Ext.grid.Panel',
+        xtype: 'yvgrid',
+
         constructor(config) {
             const newConfig = _.defaultsDeep({
                 // 强制性属性
@@ -85,18 +87,17 @@ export default function () {
                 newConfig.bbar = {
                     xtype: 'toolbar', overflowHandler: 'menu',
                     items: [
-                        '->',
                         ...buttons
                     ]
                 }
             }
 
-            cc.call(this, newConfig)
+            this.superclass.constructor.call(this, newConfig)
         },
 
         setLoading(value) {
             if (value) {
-                this.mask()
+                this.mask('读取中')
             } else {
                 this.unmask()
             }
@@ -127,8 +128,8 @@ export default function () {
                 // },
             })
 
-            initComponent.call(this)
+            this.superclass.initComponent.call(this)
         },
 
-    });
+    })
 }

+ 80 - 0
src/controls/stores.js

@@ -0,0 +1,80 @@
+import _ from 'lodash'
+import $ from 'jquery'
+
+export default function () {
+
+    Ext.define('Ext.ux.data.proxy.JsonAjaxProxy', {
+        extend: 'Ext.data.proxy.Ajax',
+        alias: 'proxy.jsonAjax',
+        actionMethods: {
+            create: "POST",
+            read: "POST",
+            update: "POST",
+            destroy: "POST"
+        },
+        buildRequest: function (operation) {
+            // 参考源码 ext-all-debug.js:71468 method:buildRequest
+            const me = this
+            const params = operation.params = Ext.apply({}, {params: operation.getParams()}, me.extraParams)
+
+            Ext.applyIf(params, me.getParams(operation));
+
+            if (operation.id !== undefined && params[me.idParam] === undefined) {
+                params[me.idParam] = operation.id;
+            }
+
+            let request = new Ext.data.Request({
+                params: {},
+                action: operation.getAction(),
+                records: operation.getRecords(),
+                url: operation.getUrl(),
+                jsonData: {
+                    args: [
+                        params
+                    ]
+                },
+                // callback: function (options, success, response) {
+                //     console.log('callback', me, arguments)
+                // },
+                proxy: me
+            });
+
+            request.setUrl(me.buildUrl(request));
+            operation.request = request;
+            operation.setRequest(request);
+            return request;
+        },
+        afterRequest: function (req, res) {
+            // Extend.afterExtRequest(req, res)
+        }
+    });
+
+
+    Ext.define('Ext.ux.data.MyReader', {
+        extend: Ext.data.reader.Json,
+        alias: 'reader.myreader',
+
+        useSimpleAccessors: false,
+
+        // 重写解析 data 的方法
+        // extractData: function (data) {
+        //     // callParent 要换写成 this.superclass.XXX.call(this, ...)
+        //     // return me.callParent([data]);
+        //
+        //     debugger
+        //     // if (this.metaData && Ext.isArray(this.metaData.fields)) {
+        //     //     // data : [][] 换写成数组
+        //     //     data = _.map(data, row => {
+        //     //         const newRow = {}
+        //     //         for (var i = 0; i < this.metaData.fields.length; i++) {
+        //     //             newRow[this.metaData.fields[i]] = row[i]
+        //     //         }
+        //     //         return newRow
+        //     //     })
+        //     // }
+        //
+        //     const rr = this.superclass.extractData.call(this, data);
+        //     return rr;
+        // }
+    });
+}

+ 2 - 0
src/init.ts

@@ -8,6 +8,7 @@ import initCombo from './controls/combo'
 import initRows from './controls/rows'
 import initCols from './controls/cols'
 import initButton from './controls/button'
+import initStores from './controls/stores'
 
 export function init() {
     // 引入 filters 过滤插件
@@ -80,4 +81,5 @@ export function init() {
     initToolbar()
     initSplitter()
     initButton()
+    initStores()
 }