Explorar el Código

添加node server数据接口

zhuth hace 6 años
padre
commit
8f1235dc98

+ 6 - 6
app/store/BigData.js

@@ -3,16 +3,16 @@ Ext.define('uas.store.BigData', {
     alias: 'store.big-data',
 
     model: 'uas.model.Employee',
-
-    groupField: 'department',
+    pageSize: null,
 
     proxy: {
         type: 'ajax',
-        limitParam: null,
-        url: '/uas/BigData',
+        url: 'http://127.0.0.1:24002/bigData',
         reader: {
-            type: 'json'
+            type: 'json',
+            rootProperty: 'data.list',
+            totalProperty: 'data.total'
         }
     },
-    autoLoad: true
+    autoLoad: false
 });

+ 5 - 1
app/view/grid/bigData/Panel.js

@@ -9,7 +9,11 @@ Ext.define('uas.view.grid.bigData.Panel', {
         'Ext.ux.rating.Picker'
     ],
 
-    store: 'BigData',
+    store: {
+        type: 'big-data',
+        remoteSort: true,
+        autoLoad: true
+    },
     columnLines: true,
     multiColumnSort: true,
 

+ 97 - 0
app/view/grid/pagingBlurred/Panel.js

@@ -0,0 +1,97 @@
+Ext.define('uas.view.grid.pagingBlurred.Panel', {
+    extend: 'Ext.grid.Panel',
+    xtype: 'blurred-paging-grid',
+
+    store: {
+        type: 'big-data',
+        pageSize: 50,
+        remoteSort: true,
+        autoLoad: true
+    },
+
+    columns:[{
+        xtype: 'rownumberer',
+        width: 120,
+        sortable: false,
+        locked: true,
+    }, {
+        text: 'Id',
+        sortable: true,
+        dataIndex: 'employeeNo',
+        groupable: false,
+        width: 80,
+        locked: true,
+    }, {
+        text: 'Date of birth',
+        dataIndex: 'dob',
+        xtype: 'datecolumn',
+        groupable: false,
+        width: 115,
+    }, {
+        text: 'Join date',
+        dataIndex: 'joinDate',
+        xtype: 'datecolumn',
+        groupable: false,
+        width: 120,
+        filter: {
+
+        },
+        editor: {
+            xtype: 'datefield'
+        },
+    }, {
+        text: 'Notice<br>period',
+        dataIndex: 'noticePeriod',
+        groupable: false,
+        width: 115,
+        filter: {
+            type: 'list'
+        },
+    }, {
+        text: 'Email address',
+        dataIndex: 'email',
+
+        width: 200,
+        groupable: false,
+    }, {
+        text: 'Department',
+        dataIndex: 'department',
+        hidden: true,
+        hideable: false,
+        filter: {
+            type: 'list'
+        }
+    }, {
+        text: 'Absences',
+        shrinkWrap: true,
+        columns: [{
+            text: 'Illness',
+            dataIndex: 'sickDays',
+            width: 100,
+            groupable: false,
+        }, {
+            text: 'Holidays',
+            dataIndex: 'holidayDays',
+            width: null, // Size column to title text
+            groupable: false,
+        }, {
+            text: 'Holiday Allowance',
+            dataIndex: 'holidayAllowance',
+            width: null, // Size column to title text
+            groupable: false,
+        }]
+    }, {
+        text: 'Salary',
+        width: 155,
+        sortable: true,
+        dataIndex: 'salary',
+        align: 'right',
+        formatter: 'usMoney',
+        groupable: false,
+    }],
+
+    bbar: {
+        xtype: 'pagingtoolbar',
+        displayInfo: true
+    }
+});

+ 54 - 0
server/data/bigData.js

@@ -0,0 +1,54 @@
+var data = (function(){
+    let arr = [];
+    const foreNames = ["Nige","Jamie","Jay","Nicolas","Tommy","David","Ed","Dave","Abe","Adam","Aaron"];
+    const surNames = ["Mishcon","White","Davis","Kaneda","Spencer","Avins","Robinson","Elias","Conran","Ferrero","Maintz"];
+    const departments = ["Accounting","Administration","Engineering","Managment","Marketing","QA","Sales","Support"];
+
+    const count = Math.round(Math.random()*99 + 1);
+
+    for(let i = 0; i < count; i++) {
+        let forename = foreNames[Math.round(Math.random()*(foreNames.length - 1))];
+        let surname = surNames[Math.round(Math.random()*(surNames.length - 1))];
+        // let dob = Ext.Date.add(new Date('1960-01-01'), 'd', Math.round(Math.random()*40 + 1)*365);
+        let department = departments[Math.round(Math.random()*(departments.length - 1))];
+
+        let obj = {
+            employeeNo: Math.round(Math.random()*999999),
+            rating: [Math.round(Math.random()*9), Math.round(Math.random()*9), Math.round(Math.random()*9), Math.round(Math.random()*9), Math.round(Math.random()*9),
+                Math.round(Math.random()*9), Math.round(Math.random()*9), Math.round(Math.random()*9), Math.round(Math.random()*9), Math.round(Math.random()*9),
+            ],
+            salary: Math.round(Math.random()*8 + 1) * Math.pow(10, Math.round(Math.random()*3 + 2) ),
+            forename: forename,
+            surname: surname,
+            email: forename.toLowerCase() + '.' + surname.toLowerCase() + '@sentcha.com',
+            department: department,
+            // dob: Ext.util.Format.date(dob, 'Ymd'),
+            // joinDate: Ext.util.Format.date(Ext.Date.add(dob, Math.round(Math.random()*15 + 15)) * 365, 'Ymd'),
+            sickDays: Math.round(Math.random()*10),
+            holidayDays: Math.round(Math.random()*10),
+            holidayAllowance: Math.round(Math.random()*20 + 20),
+            noticePeriod: Math.round(Math.random()*2 + 1) + ['month', 'weeks'][Math.round(Math.random()*1)],
+            avatar: "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSdj-gG2gXPkOUJGQ2r-3A5AnIgASv19axozeYMWssSVJyySvBIeQ",
+            verified: Math.round(Math.random()) === 1
+        };
+        arr.push(obj);
+    }
+    return arr;
+})();
+
+module.exports = function(query){
+    var page = query.page || 1;
+    var start = query.start || 0;
+    var limit = query.limit || 0;
+    var result = {
+        total: data.length
+    };
+
+    if(limit > 0) {
+        result.list = data.slice(start, start + limit);
+    }else {
+        result.list = data;
+    }
+
+    return result;
+}

+ 5 - 0
server/data/index.js

@@ -0,0 +1,5 @@
+var bigData = require('./bigData');
+
+module.exports = {
+    '/bigData': bigData
+}

+ 20 - 0
server/getData.js

@@ -0,0 +1,20 @@
+var datas = require("./data/index");
+
+module.exports = function(request, response) {
+    var pathname = request.pathname;
+    if(datas.hasOwnProperty(pathname)) {
+        response.write(JSON.stringify({
+            code: 200,
+            success: true,
+            data: datas[pathname](request.query)
+        }));
+    }else {
+        response.write(JSON.stringify({
+            code: 200,
+            success: false,
+            data: []
+        }));
+    }
+    // response.write('{"code":200,"msg":"成功","data":[{"id":471,"groupName":"测试小组1","groupIndex":0,"fatherId":381,"createBy":null,"createDate":"2019-07-04T05:36:28.000+0000","updataDate":null,"operate":null},{"id":481,"groupName":"华商龙(上海宇声)","groupIndex":0,"fatherId":-1,"createBy":null,"createDate":"2019-08-01T01:35:57.000+0000","updataDate":null,"operate":null},{"id":381,"groupName":"优软科技标准化测试部","groupIndex":0,"fatherId":-1,"createBy":null,"createDate":"2019-06-05T08:23:11.000+0000","updataDate":null,"operate":null},{"id":383,"groupName":"英唐集团报表","groupIndex":2,"fatherId":-1,"createBy":null,"createDate":"2019-06-05T09:25:11.000+0000","updataDate":null,"operate":null},{"id":382,"groupName":"优软科技标准版","groupIndex":1,"fatherId":-1,"createBy":null,"createDate":"2019-06-05T08:25:11.000+0000","updataDate":null,"operate":null},{"id":421,"groupName":"天二伟业(正式)","groupIndex":3,"fatherId":-1,"createBy":null,"createDate":"2019-06-26T05:56:25.000+0000","updataDate":null,"operate":null}]}');
+    response.end();
+}

+ 25 - 0
server/server.js

@@ -0,0 +1,25 @@
+var http = require("http");
+var url = require("url");
+var getData = require("./getData");
+
+function onRequest(request, response) {
+    // 默认情况下,如果url路径中有中文,则会对中文进行URI编码,所以服务端要想获取中文需要对url进行URI解码
+    // console.log(encodeURI(request.url));
+
+    // 将第二个可选参数指定为 true, 表示将结果中的 query 解析为一个对象
+    // url.parse 方法可以将一个 URL 路径解析为一个方便操作的对象
+    var parseObj = url.parse(request.url, true);
+    
+    // 这里将解析属性挂载给 request 对象
+    request.pathname = parseObj.pathname;
+    request.query = parseObj.query;
+
+
+    response.setHeader("Access-Control-Allow-Origin", "*"); // 设置可访问的源
+    response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization,Content-Type"); // 设置允许的响应头
+    response.writeHead(200, {
+        "Content-Type": "application/json;charset=UTF-8"
+    });
+    getData(request, response);
+}
+http.createServer(onRequest).listen(3000);