Commit 7faaee3c928952c186afced85af28a5c80056198

Authored by Benjamin Renard
1 parent 40d460aa

wip

js/app/models/PlotObjects/PlotObjectConfig.js
@@ -370,6 +370,25 @@ Ext.define('amdaPlotObj.PlotObjectConfig', { @@ -370,6 +370,25 @@ Ext.define('amdaPlotObj.PlotObjectConfig', {
370 { 'key': '[0,64,64]', 'color': '#004040', 'value': 'Cyprus' } 370 { 'key': '[0,64,64]', 'color': '#004040', 'value': 'Cyprus' }
371 ], 371 ],
372 372
  373 + availableColorsNew: [
  374 + "#000000", "#0000ff", "#ff0000", "#00ffff", "#ff00ff", "#008000", "#800000",
  375 + "#000080", "#808000", "#800080", "#c0c0c0", "#008080", "#ffff00", "#004040",
  376 + "#29d8d7", "#6b9842", "#73a9b4", "#1c883d", "#808080", "#4342dd", "#e84130",
  377 + "#dee2e6", "#ced4da", "#adb5bd", "#868e96", "#495057", "#343a40", "#212529",
  378 + "#ffa8a8", "#ff8787", "#ff6b6b", "#fa5252", "#f03e3e", "#e03131", "#c92a2a",
  379 + "#faa2c1", "#f783ac", "#f06595", "#e64980", "#d6336c", "#c2255c", "#a61e4d",
  380 + "#e599f7", "#da77f2", "#cc5de8", "#be4bdb", "#ae3ec9", "#9c36b5", "#862e9c",
  381 + "#b197fc", "#9775fa", "#845ef7", "#7950f2", "#7048e8", "#6741d9", "#5f3dc4",
  382 + "#91a7ff", "#748ffc", "#5c7cfa", "#4c6ef5", "#4263eb", "#3b5bdb", "#364fc7",
  383 + "#74c0fc", "#4dabf7", "#339af0", "#228be6", "#1c7ed6", "#1971c2", "#1864ab",
  384 + "#66d9e8", "#3bc9db", "#22b8cf", "#15aabf", "#1098ad", "#0c8599", "#0b7285",
  385 + "#63e6be", "#38d9a9", "#20c997", "#12b886", "#0ca678", "#099268", "#087f5b",
  386 + "#8ce99a", "#69db7c", "#51cf66", "#40c057", "#37b24d", "#2f9e44", "#2b8a3e",
  387 + "#c0eb75", "#a9e34b", "#94d82d", "#82c91e", "#74b816", "#66a80f", "#5c940d",
  388 + "#ffe066", "#ffd43b", "#fcc419", "#fab005", "#f59f00", "#f08c00", "#e67700",
  389 + "#ffc078", "#ffa94d", "#ff922b", "#fd7e14", "#f76707", "#e8590c", "#d9480f"
  390 + ],
  391 +
373 availableBackgroundColors: [ 392 availableBackgroundColors: [
374 { 'color': 'none', 'value': 'None' }, 393 { 'color': 'none', 'value': 'None' },
375 { 'key': '[0,0,0]', 'color': '#000000', 'value': 'Black' }, 394 { 'key': '[0,0,0]', 'color': '#000000', 'value': 'Black' },
js/app/views/PlotComponents/PlotColorPicker.js
@@ -3,7 +3,240 @@ @@ -3,7 +3,240 @@
3 * To change this template file, choose Tools | Templates 3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor. 4 * and open the template in the editor.
5 */ 5 */
  6 +
6 Ext.define('amdaPlotComp.PlotColorPicker', { 7 Ext.define('amdaPlotComp.PlotColorPicker', {
7 - extend: 'Ext.picker.Color',  
8 - }); 8 + extend: 'Ext.form.FieldSet',
  9 +
  10 + predefinedColorPicker: null,
  11 +
  12 + colorDisplayer: null,
  13 +
  14 + rgbColorPicker: null,
  15 +
  16 + constructor: function(config) {
  17 + this.init(config);
  18 + this.callParent(arguments);
  19 + },
  20 +
  21 + /*setHexColor: function(hexColor) {
  22 + this.colorDisplayer.setValue(hexColor);
  23 + this.rgbColorPicker.setRgbColor(this.hexToRgb(hexColor));
  24 + },*/
  25 +
  26 + rgbToHex : function(rgb) {
  27 + return "#" + ((1 << 24) + (rgb[0] << 16) + (rgb[1] << 8) + rgb[2] ).toString(16).slice(1).toUpperCase();
  28 + },
  29 +
  30 + hexToRgb: function(hex) {
  31 + hex = hex.replace('#','');
  32 + var arrBuff = new ArrayBuffer(4);
  33 + var vw = new DataView(arrBuff);
  34 + vw.setUint32(0,parseInt(hex, 16),false);
  35 + var arrByte = (new Uint8Array(arrBuff));
  36 + return arrByte.slice(1,4);
  37 + },
  38 +
  39 + // Override createCheckboxCmp method
  40 + createCheckboxCmp: function() {
  41 + console.log('createCheckboxCmp');
  42 + var me = this,
  43 + suffix = '-checkbox';
  44 +
  45 + me.checkboxCmp = Ext.widget({
  46 + xtype: 'checkbox',
  47 + hideEmptyLabel: true,
  48 + name: me.checkboxName || me.id + suffix,
  49 + cls: me.baseCls + '-header' + suffix,
  50 + id: me.id + '-legendChk',
  51 + checked: !me.collapsed,
  52 + listeners: {
  53 + change: me.onCheckChange,
  54 + scope: me
  55 + }
  56 + });
  57 + return me.checkboxCmp;
  58 + },
  59 +
  60 + init : function(config) {
  61 + var me = this;
  62 +
  63 + this.predefinedColorPicker = new Ext.button.Button({
  64 + onSelectColor: me.onSelectPredefinedColor,
  65 + text: 'Select Color',
  66 + flex: 4,
  67 + initComponent : function(){
  68 + this.menu = Ext.create('Ext.menu.ColorPicker', {
  69 + minWidth: 80,
  70 + maxWidth: 100,
  71 + minHeight: 225,
  72 + listeners: {
  73 + select: function(picker, selColor, eOpts) {
  74 + this.colorDisplayer.setValue('#'+selColor);
  75 + },
  76 + scope: me
  77 + }
  78 + });
  79 + this.menu.addCls('amda-color-picker');
  80 + if (config.colors) {
  81 + var customColors = [];
  82 + Ext.Array.each(config.colors, function(color) {
  83 + customColors.push(color.replace('#','').toUpperCase());
  84 + });
  85 + this.menu.picker.colors = customColors;
  86 + }
  87 + }
  88 + });
  89 +
  90 + this.colorDisplayer = new Ext.form.field.Display({
  91 + border:2,
  92 + //fieldLabel: 'HEX:',
  93 + value:"#000000",
  94 + flex: 3,
  95 + //inExpandCollapseEvent: false,
  96 + name: config.name ? config.name : '',
  97 + style: {
  98 + borderStyle: 'solid',
  99 + background: '#000000',
  100 + },
  101 + listeners: {
  102 + change: function (field, newValue, oldValue, eOpts) {
  103 + /*if (config.onChange) {
  104 + config.onChange(config.name, newValue, oldValue);
  105 + }*/
  106 +
  107 + if ((newValue == 'auto') && this.checkboxCmp.getValue()) {
  108 + this.collapse();
  109 + return;
  110 + }
  111 + else if ((newValue != 'auto') && !this.checkboxCmp.getValue()) {
  112 + this.expand();
  113 + return;
  114 + }
  115 + /*console.log('displayer change - ' + this.colorDisplayer.inExpandCollapseEvent);
  116 + console.log(newValue + ' - ' + oldValue);
  117 + if (!this.colorDisplayer.inExpandCollapseEvent) {
  118 + if (newValue == 'auto')
  119 + this.collapse();
  120 + else
  121 + this.expand();
  122 + }*/
  123 + console.log('============> ' + newValue);
  124 + field.getEl().applyStyles({'background':newValue});
  125 + this.rgbColorPicker.setRgbColor(this.hexToRgb(newValue));
  126 + if (config.onChange) {
  127 + config.onChange(config.name, newValue, oldValue);
  128 + }
  129 + },
  130 + scope: this
  131 + }
  132 + });
  133 +
  134 + this.rgbColorPicker = new Ext.toolbar.Toolbar({
  135 + bodyStyle: { background: '#dfe8f6' },
  136 + border: false,
  137 + rgbColor: [0,0,0],
  138 + setRgbColor: function(rgb) {
  139 + this.rgbColor = [rgb[0], rgb[1], rgb[2]];
  140 + this.items.items[0].setRawValue(rgb[0]);
  141 + this.items.items[2].setRawValue(rgb[1]);
  142 + this.items.items[4].setRawValue(rgb[2]);
  143 + },
  144 + items: [
  145 + {
  146 + xtype: 'numberfield',
  147 + fieldLabel: 'R',
  148 + labelWidth: 12,
  149 + width: 65,
  150 + maxValue: 255,
  151 + minValue: 0,
  152 + value: 0,
  153 + listeners: {
  154 + change: function (field, newValue, oldValue, eOpts) {
  155 + this.rgbColorPicker.rgbColor[0] = newValue;
  156 + this.colorDisplayer.setValue(this.rgbToHex(this.rgbColorPicker.rgbColor));
  157 + },
  158 + scope: this
  159 + }
  160 + },
  161 + ' ',
  162 + {
  163 + xtype: 'numberfield',
  164 + fieldLabel: 'G',
  165 + labelWidth: 12,
  166 + width: 65,
  167 + maxValue: 255,
  168 + minValue: 0,
  169 + value: 0,
  170 + listeners: {
  171 + change: function (field, newValue, oldValue, eOpts) {
  172 + this.rgbColorPicker.rgbColor[1] = newValue;
  173 + this.colorDisplayer.setValue(this.rgbToHex(this.rgbColorPicker.rgbColor));
  174 + },
  175 + scope: this
  176 + }
  177 + },
  178 + ' ',
  179 + {
  180 + xtype: 'numberfield',
  181 + fieldLabel: 'B',
  182 + labelWidth: 12,
  183 + width: 65,
  184 + maxValue: 255,
  185 + minValue: 0,
  186 + value: 0,
  187 + listeners: {
  188 + change: function (field, newValue, oldValue, eOpts) {
  189 + this.rgbColorPicker.rgbColor[2] = newValue;
  190 + this.colorDisplayer.setValue(this.rgbToHex(this.rgbColorPicker.rgbColor));
  191 + },
  192 + scope: this
  193 + }
  194 + }
  195 + ]
  196 + });
  197 +
  198 + var myConf = {
  199 + cls: 'child-fieldset',
  200 + title: config.label ? config.label : 'Color',
  201 + collapsible: true,
  202 + collapsed: false,
  203 + checkboxToggle: true,
  204 + layout: {
  205 + type: 'vbox',
  206 + pack: 'start',
  207 + align: 'stretch'
  208 + },
  209 + items: [
  210 + {
  211 + xtype: 'container',
  212 + layout: {
  213 + type: 'hbox',
  214 + align: 'stretch'
  215 + },
  216 + items: [
  217 + this.predefinedColorPicker,
  218 + this.colorDisplayer,
  219 + ]
  220 + },
  221 + this.rgbColorPicker
  222 + ],
  223 + listeners: {
  224 + expand: function (fieldset, eOpts) {
  225 + console.log(eOpts);
  226 + if (config.onChange) {
  227 + config.onChange(config.name, '#000000', 'auto');
  228 + }
  229 + },
  230 + collapse: function (fieldset, eOpts) {
  231 + if (config.onChange) {
  232 + config.onChange(config.name, 'auto', this.colorDisplayer.getValue());
  233 + }
  234 + },
  235 + scope: this
  236 + }
  237 + };
  238 +
  239 + Ext.apply (this , Ext.apply (arguments, myConf));
  240 + }
  241 +});
9 242
js/app/views/PlotComponents/PlotStandardForm.js
@@ -407,7 +407,7 @@ Ext.define(&#39;amdaPlotComp.PlotStandardForm&#39;, { @@ -407,7 +407,7 @@ Ext.define(&#39;amdaPlotComp.PlotStandardForm&#39;, {
407 this.addStandardCombo(namePrefix + '-style', 'Style', amdaPlotObj.PlotObjectConfig.availableLinesStyles), 407 this.addStandardCombo(namePrefix + '-style', 'Style', amdaPlotObj.PlotObjectConfig.availableLinesStyles),
408 this.addStandardFloat(namePrefix + '-width', 'Width', 1, 10), 408 this.addStandardFloat(namePrefix + '-width', 'Width', 1, 10),
409 //this.addStandardColor(namePrefix + '-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors), 409 //this.addStandardColor(namePrefix + '-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors),
410 - this.addColorsPicker('serie-lines-color', 'Color') 410 + this.addColorsPicker(namePrefix + '-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColorsNew)
411 ]; 411 ];
412 }, 412 },
413 413
@@ -418,169 +418,15 @@ Ext.define(&#39;amdaPlotComp.PlotStandardForm&#39;, { @@ -418,169 +418,15 @@ Ext.define(&#39;amdaPlotComp.PlotStandardForm&#39;, {
418 this.addStandardColor(namePrefix + '-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors) 418 this.addStandardColor(namePrefix + '-color', 'Color', amdaPlotObj.PlotObjectConfig.availableColors)
419 ]; 419 ];
420 }, 420 },
421 - manageRGBcolors: function(namePrefix){  
422 - var rgb = this.object.get(namePrefix+'-rgb');  
423 - if(rgb && rgb.length == 3){  
424 - var hexColor = this.rgbToHex(rgb);  
425 - this.object.set(namePrefix, hexColor);  
426 - this.getForm().findField(namePrefix+'-displayer').setValue(hexColor);  
427 - }  
428 - },  
429 - manageHEXcolors: function(namePrefix){  
430 - var hex = this.object.get(namePrefix);  
431 - if(hex){  
432 - this.object.set(namePrefix+'-rgb', hexToRgb(hex));  
433 - }  
434 - },  
435 - rgbToHex : function(rgb) {  
436 - return "#" + ((1 << 24) + (rgb[0] << 16) + (rgb[1] << 8) + rgb[2] ).toString(16).slice(1).toUpperCase();  
437 - },  
438 - hexToRgb: function(hex) {  
439 - var arrBuff = new ArrayBuffer(4);  
440 - var vw = new DataView(arrBuff);  
441 - vw.setUint32(0,parseInt(hex, 16),false);  
442 - var arrByte = (new Uint8Array(arrBuff));  
443 -  
444 - return arrByte.slice(1,4);  
445 - },  
446 421
447 - /**  
448 - *  
449 - * @param {type} namePrefix name of the variable in the opbject exp : 'serie-lines-color'  
450 - * @param {type} name name of the field exp : Color  
451 - * @returns {PlotStandardFormAnonym$0.addStandardFieldSet.PlotStandardFormAnonym$10}  
452 - */  
453 - addColorsPicker: function (namePrefix, name) {  
454 - var me = this;  
455 -  
456 - var colorPicker = Ext.create('amdaPlotComp.PlotColorPicker', {  
457 - value: '000000', // initial selected color  
458 - renderTo: Ext.getBody(),  
459 - listeners: {  
460 - select: function(picker, selColor) {  
461 - this.object.set(namePrefix, selColor);  
462 - this.getForm().findField(namePrefix+'-displayer').setValue('#'+selColor);  
463 -  
464 - rgb = this.hexToRgb(selColor);  
465 - if(rgb && rgb.length ==3 ){  
466 - this.getForm().findField(namePrefix+'-R').setValue(rgb[0]);  
467 - this.getForm().findField(namePrefix+'-G').setValue(rgb[1]);  
468 - this.getForm().findField(namePrefix+'-B').setValue(rgb[2]);  
469 - }  
470 - },  
471 - scope: this  
472 - }  
473 - });  
474 - var colorDisplayer = {  
475 - xtype: 'displayfield',  
476 - name: namePrefix + '-displayer',  
477 - border:2,  
478 - fieldLabel: 'HEX:',  
479 - value:"#000000",  
480 - region:'center',  
481 - style: {  
482 - borderStyle: 'solid',  
483 - background: '#000000',  
484 - },  
485 - listeners: {  
486 - change: function (field, newValue, oldValue, eOpts) {  
487 - field.getEl().applyStyles({'background':newValue});  
488 - },  
489 - scope: this  
490 - }  
491 - };  
492 - var rgbItems =  
493 - {  
494 - xtype: 'toolbar',  
495 - bodyStyle: { background: '#dfe8f6' },  
496 - border: false,  
497 - name:namePrefix+'-rgb',  
498 - items: [  
499 -  
500 - {  
501 - xtype: 'numberfield',  
502 - name: namePrefix+'-R',  
503 - fieldLabel: 'R',  
504 - labelWidth: 12,  
505 - width: 65,  
506 - maxValue: 255,  
507 - minValue: 0,  
508 - value: 0,  
509 - listeners: {  
510 - change: function (field, newValue, oldValue, eOpts) {  
511 - var rgb = this.object.get(namePrefix+"-rgb");  
512 - if(rgb && rgb.length ==3 )  
513 - rgb[0] = newValue;  
514 - else  
515 - rgb = [newValue,0,0];  
516 - this.object.set(namePrefix+"-rgb", rgb)  
517 - this.manageRGBcolors(namePrefix);  
518 - },  
519 - scope: this  
520 - }  
521 - },  
522 - ' ',  
523 - {  
524 - xtype: 'numberfield',  
525 - name: namePrefix+'-G',  
526 - fieldLabel: 'G',  
527 - labelWidth: 12,  
528 - width: 65,  
529 - maxValue: 255,  
530 - minValue: 0,  
531 - value: 0,  
532 - listeners: {  
533 - change: function (field, newValue, oldValue, eOpts) {  
534 - var rgb = this.object.get(namePrefix+"-rgb");  
535 - if(rgb && rgb.length ==3 )  
536 - rgb[1] = newValue;  
537 - else  
538 - rgb = [0, newValue, 0];  
539 - this.object.set(namePrefix+"-rgb", rgb);  
540 - this.manageRGBcolors(namePrefix);  
541 - },  
542 - scope: this  
543 - }  
544 - },  
545 - ' ',  
546 - {  
547 - xtype: 'numberfield',  
548 - name: namePrefix+'-B',  
549 - fieldLabel: 'B',  
550 - labelWidth: 12,  
551 - width: 65,  
552 - maxValue: 255,  
553 - minValue: 0,  
554 - value: 0,  
555 - listeners: {  
556 - change: function (field, newValue, oldValue, eOpts) {  
557 - var rgb = this.object.get(namePrefix+"-rgb");  
558 - if(rgb && rgb.length ==3 )  
559 - rgb[2] = newValue;  
560 - else  
561 - rgb = [0,0,newValue];  
562 - this.object.set(namePrefix+"-rgb", rgb);  
563 - this.manageRGBcolors(namePrefix);  
564 - },  
565 - scope: this  
566 - }  
567 - },  
568 -  
569 - ]  
570 - }  
571 -  
572 -  
573 - var items = [ this.addStandardCheck(namePrefix + '-auto','Auto', function(name, value, oldValue){  
574 - me.getForm( ).findField(namePrefix + '-activated').setValue(!value);  
575 - me.object.set(namePrefix,me.object.getDefaultColor(namePrefix));  
576 - }),  
577 -  
578 - this.addStandardFieldSet('Select Color', namePrefix + '-activated',[colorPicker,colorDisplayer, rgbItems], function(name, value, oldValue){  
579 - me.getForm( ).findField(namePrefix + '-auto').setValue(!value);  
580 - }),  
581 - ];  
582 -  
583 - return this.addStandardFieldSet(name,'', items, null, false); 422 + addColorsPicker: function (name, label, availableColors, onChange) {
  423 + var me =this;
  424 + return new amdaPlotComp.PlotColorPicker({name: name, label: label, colors: availableColors, onChange: function(name, newValue, oldValue) {
  425 + me.object.set(name, newValue);
  426 + console.log(newValue);
  427 + if (onChange != null)
  428 + onChange(name, newValue, oldValue);
  429 + }});
584 }, 430 },
585 431
586 init: function (config) { 432 init: function (config) {