|
|
@@ -0,0 +1,220 @@
|
|
|
+Ext.define('erp.view.core.trigger.StyleTrigger', {
|
|
|
+ extend: 'Ext.form.field.Trigger',
|
|
|
+ alias: 'widget.styletrigger',
|
|
|
+ triggerCls: 'style-trigger-icon-form',
|
|
|
+ onTriggerClick: function() {
|
|
|
+ var trigger = this;
|
|
|
+ var styleEditor = Ext.create('Ext.window.Window', {
|
|
|
+ field: trigger,
|
|
|
+ title: trigger.fieldLabel,
|
|
|
+ width:320,
|
|
|
+ height:320,
|
|
|
+ modal:true,
|
|
|
+ layout:'border',
|
|
|
+ items: [{
|
|
|
+ xtype:'form',
|
|
|
+ region: 'center',
|
|
|
+ bodyPadding: 10,
|
|
|
+ autoScroll: true,
|
|
|
+ items: [{
|
|
|
+ xtype: 'triggerfield',
|
|
|
+ name: 'color',
|
|
|
+ id: 'titlecolore',
|
|
|
+ _CLICK: new Date(),
|
|
|
+ fieldLabel: '字体颜色',
|
|
|
+ triggerCls: '',
|
|
|
+ overCls: '',
|
|
|
+ hideTrigger: false,
|
|
|
+ editable: true,
|
|
|
+ allowBlank: true,
|
|
|
+ emptyText: '#FFFFFF',
|
|
|
+ onTriggerClick: function () {
|
|
|
+ var me = this;
|
|
|
+ if (!me.picker) {
|
|
|
+ me.picker = Ext.create('Ext.picker.Color', {
|
|
|
+ pickerField: this,
|
|
|
+ ownerCt: this,
|
|
|
+ renderTo: Ext.getBody(),
|
|
|
+ floating: true,
|
|
|
+ focusOnShow: true,
|
|
|
+ style: {
|
|
|
+ backgroundColor: "#fff"
|
|
|
+ },
|
|
|
+ listeners: {
|
|
|
+ scope: this,
|
|
|
+ select: function (field, value, opts) {
|
|
|
+ me.setValue('#' + value);
|
|
|
+ me.picker.hide();
|
|
|
+ me.pickerShow = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ me.picker.alignTo(me.inputEl, 'tl-bl?');
|
|
|
+ }
|
|
|
+ if(me.pickerShow) {
|
|
|
+ me.picker.hide();
|
|
|
+ me.pickerShow = false;
|
|
|
+ }else {
|
|
|
+ me.picker.show();
|
|
|
+ me.pickerShow = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ listeners: {
|
|
|
+ change: function(field, newValue, oldValue, eOpts) {
|
|
|
+ this.inputEl.applyStyles({
|
|
|
+ backgroundColor: newValue
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ xtype: 'numberfield',
|
|
|
+ fieldLabel: '字体大小',
|
|
|
+ name: 'fontSize',
|
|
|
+ minValue: 0,
|
|
|
+ emptyText: '默认'
|
|
|
+ }, {
|
|
|
+ xtype: 'checkboxfield',
|
|
|
+ fieldLabel: '字体倾斜',
|
|
|
+ name: 'fontStyle',
|
|
|
+ inputValue: 'oblique'
|
|
|
+ }, {
|
|
|
+ xtype: 'combobox',
|
|
|
+ fieldLabel: '字体粗细',
|
|
|
+ name: 'fontWeight',
|
|
|
+ editable: false,
|
|
|
+ listConfig: {
|
|
|
+ maxHeight: 100,
|
|
|
+ },
|
|
|
+ store: Ext.create('Ext.data.Store', {
|
|
|
+ fields: ['value', 'name'],
|
|
|
+ data : [
|
|
|
+ { name: '正常', value: 'normal'},
|
|
|
+ { name: '粗体', value: 'bold'},
|
|
|
+ { name: '加粗', value: 'bolder'},
|
|
|
+ { name: '细体', value: 'lighter'},
|
|
|
+ { name: '100', value: '100'},
|
|
|
+ { name: '200', value: '200'},
|
|
|
+ { name: '300', value: '300'},
|
|
|
+ { name: '400', value: '400'},
|
|
|
+ { name: '500', value: '500'},
|
|
|
+ { name: '600', value: '600'},
|
|
|
+ { name: '700', value: '700'},
|
|
|
+ { name: '800', value: '800'},
|
|
|
+ { name: '900', value: '900'}
|
|
|
+ ]
|
|
|
+ }),
|
|
|
+ queryMode: 'local',
|
|
|
+ displayField: 'name',
|
|
|
+ valueField: 'value',
|
|
|
+ emptyText: '正常'
|
|
|
+ }, {
|
|
|
+ xtype: 'combobox',
|
|
|
+ fieldLabel: '对齐方式',
|
|
|
+ name: 'textAlign',
|
|
|
+ editable: false,
|
|
|
+ store: Ext.create('Ext.data.Store', {
|
|
|
+ fields: ['value', 'name'],
|
|
|
+ data : [
|
|
|
+ { name: '左对齐', value: 'left'},
|
|
|
+ { name: '居中', value: 'center'},
|
|
|
+ { name: '右对齐', value: 'right'}
|
|
|
+ ]
|
|
|
+ }),
|
|
|
+ queryMode: 'local',
|
|
|
+ displayField: 'name',
|
|
|
+ valueField: 'value',
|
|
|
+ emptyText: '居中'
|
|
|
+ }, {
|
|
|
+ xtype: 'textfield',
|
|
|
+ fieldLabel: '自定义',
|
|
|
+ name: 'otherStyle',
|
|
|
+ emptyText: '多个样式以分号;间隔'
|
|
|
+ }],
|
|
|
+ setStyle: function(styleObj) {
|
|
|
+ var styleForm = this;
|
|
|
+ var o = {
|
|
|
+ data: Object.assign({}, styleObj),
|
|
|
+ getData: function() {return this.data}
|
|
|
+ }
|
|
|
+ for(var key in styleObj) {
|
|
|
+ if(styleForm.getForm().findField(key)) {
|
|
|
+ delete styleObj[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ o.data.otherStyle = Ext.JSON.encode(styleObj).replace(/[{"}]/g, '').replace(',', ';');
|
|
|
+ styleForm.loadRecord(o);
|
|
|
+ },
|
|
|
+ getStyle: function() {
|
|
|
+ var styleForm = this;
|
|
|
+ var styles = styleForm.getForm().getValues();
|
|
|
+ styleObj = {};
|
|
|
+ for(var key in styles) {
|
|
|
+ if(styles[key]) {
|
|
|
+ if(key == 'otherStyle') {
|
|
|
+ var sarr = styles[key].split(';');
|
|
|
+ sarr.map(function(s) {
|
|
|
+ var so = s.split(':');
|
|
|
+ if(so[0] && s[1]) {
|
|
|
+ styleObj[so[0]] = so[1];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }else if(key == 'fontSize') {
|
|
|
+ styleObj[key] = styles[key] + 'px';
|
|
|
+ }else {
|
|
|
+ styleObj[key] = styles[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return styleObj;
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ buttonAlign: 'center',
|
|
|
+ buttons:[{
|
|
|
+ text:'确定',
|
|
|
+ formBind:true,
|
|
|
+ handler:function(btn){
|
|
|
+ var win = btn.ownerCt.ownerCt;
|
|
|
+ var componet = Ext.getCmp(win.field.ownerCt.el.dom.parentNode.id);
|
|
|
+ if(componet) {
|
|
|
+ var grid = componet;
|
|
|
+ var fieldname = win.field.column.dataIndex;
|
|
|
+ var selections = grid.getSelectionModel().getSelection();
|
|
|
+ var store = grid.getStore();
|
|
|
+ var selected = selections[0];
|
|
|
+ selected.set(fieldname, Ext.JSON.encode( win.getStyle() ) );
|
|
|
+ var rowIndex = store.indexOf(selected);
|
|
|
+ grid.getPlugin().startEditByPosition({row: rowIndex, column: 1});
|
|
|
+ }else {
|
|
|
+ win.field.setValue( Ext.JSON.encode( win.getStyle() ) );
|
|
|
+ }
|
|
|
+ win.close();
|
|
|
+ }
|
|
|
+ },{
|
|
|
+ text:'取消',
|
|
|
+ handler:function(btn){
|
|
|
+ var win = btn.ownerCt.ownerCt;
|
|
|
+ win.close();
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ listeners: {
|
|
|
+ afterrender: function() {
|
|
|
+ var me = this;
|
|
|
+ trigger.record =
|
|
|
+ me.setStyle(me.field.getValue());
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setStyle: function(styleStr) {
|
|
|
+ var me = this;
|
|
|
+ var styleForm = me.down('form');
|
|
|
+ var styleObj = Ext.JSON.decode(styleStr || '{}');
|
|
|
+ styleForm.setStyle(styleObj);
|
|
|
+ },
|
|
|
+ getStyle: function() {
|
|
|
+ var me = this;
|
|
|
+ var styleForm = me.down('form');
|
|
|
+ return styleForm.getStyle();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ styleEditor.show();
|
|
|
+ }
|
|
|
+});
|