13693261870
2022-09-16 354b3dbfbffb3df45212a2a44dbbf48b4acc2594
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Ext.define('KitchenSink.model.grid.Employee', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'employeeNo'
    }, {
        name: 'rating',
        type: 'int'
    }, {
        name: 'salary',
        type: 'float'
    }, {
        name: 'forename'
    }, {
        name: 'surname'
    }, {
        name: 'name',
        convert: function(v, rec) {
            return rec.editing ? v : rec.get('forename') + ' ' + rec.get('surname');
        }
    }, {
        name: 'email'
    }, {
        name: 'department'
    }, {
        name: 'dob',
        type: 'date',
        dateFormat: 'Ymd'
    }, {
        name: 'joinDate',
        type: 'date',
        dateFormat: 'Ymd'
    }, {
        name: 'noticePeriod'
    }, {
        name: 'sickDays',
        type: 'int'
    }, {
        name: 'holidayDays',
        type: 'int'
    }, {
        name: 'holidayAllowance',
        type: 'int'
    }, {
        name: 'avatar'
    }],
    idField: 'employeeNo',
 
    afterEdit: function(modifiedFieldNames) {
        // "name" is a calculated field, so update it on edit of "forename" or "surname".
        if (Ext.Array.contains(modifiedFieldNames, 'forename') || Ext.Array.contains(modifiedFieldNames, 'surname')) {
            this.data.name = this.data.forename + ' ' + this.data.surname;
            modifiedFieldNames.push('name');
        }
        // Likewise, update two name fields if whole name gets updated
        else if (Ext.Array.contains(modifiedFieldNames, 'name')) {
            var names = this.convertName(this.data.name);
            this.data.forename = names[0];
            this.data.surname = names[1];
            modifiedFieldNames.push('forename', 'surname');
        }
        return this.callParent(arguments);
    },
    
    convertName: function(name) {
        var names = /([^\s+]+)(?:\s+(.*))?/.exec(name);
        return names ? [names[1], names[2]||''] : ['', ''];
    }
});