Commit c865df36252596f5cdaf708d0ad66a62f0968bf6

Authored by Elena.Budnik
1 parent 901ba3f3

dateTime datatype in catalog

js/app/views/CatalogUI.js
... ... @@ -118,12 +118,21 @@ Ext.define('amdaUI.CatalogUI', {
118 118 width : 120, menuDisabled: true, editor : { xtype:'datefield', allowBlank:false, hideTrigger: true, format : 'Y-m-d\\TH:i:s'}});
119 119  
120 120 Ext.Array.each(result.parameters, function(obj)
121   - {
122   - index = 'param'+(i-1).toString();
  121 + {
  122 + index = 'param'+(i-1).toString();
123 123 fields[i+2] = Ext.create('Ext.data.Field',{ name : index });
124   - width = 50. * parseInt(obj.size);
125   - columns[i] = Ext.create('Ext.grid.column.Column', { text: obj.name, sortable : false, dataIndex: index,
  124 +
  125 + if (obj.type == 1) // dateTime
  126 + {
  127 + columns[i] = Ext.create('Ext.grid.column.Column', { text: obj.name, sortable : false, dataIndex: index,
  128 + width : 120, menuDisabled: true, editor : { xtype:'datefield', allowBlank:false, hideTrigger: true, format : 'Y-m-d\\TH:i:s'}});
  129 + }
  130 + else
  131 + {
  132 + width = 50. * parseInt(obj.size);
  133 + columns[i] = Ext.create('Ext.grid.column.Column', { text: obj.name, sortable : false, dataIndex: index,
126 134 width : width, menuDisabled: true, editor: 'textfield' });
  135 + }
127 136 i++;
128 137 });
129 138  
... ... @@ -567,6 +576,7 @@ Ext.define('amdaUI.CatalogUI', {
567 576 type: 'button',
568 577 text: 'Reset',
569 578 scope : this,
  579 + disabled: true,
570 580 handler: function()
571 581 {
572 582 // var module = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.catalog.id);
... ...
php/classes/CatalogCacheMgr.php
... ... @@ -7,7 +7,7 @@
7 7  
8 8 class CatIntervalCacheObject extends IntervalCacheObject
9 9 {
10   - // for catalog
  10 + // for catalog
11 11 private $params = array();
12 12  
13 13 public function toArray()
... ... @@ -19,13 +19,15 @@ class CatIntervalCacheObject extends IntervalCacheObject
19 19 );
20 20 if ($this->isNew)
21 21 $result["isNew"] = true;
  22 +
22 23 if ($this->isModified)
23 24 $result["isModified"] = true;
24 25  
25   - for ($i = 0; $i < count($this->params); $i++) {
26   - $paramObject = array();
27   - $index = 'param'.sprintf("%d",$i+2);
28   - $result[$index] = $this->params[$i];
  26 + for ($i = 0; $i < count($this->params); $i++)
  27 + {
  28 + $paramObject = array();
  29 + $index = 'param'.sprintf("%d",$i+2);
  30 + $result[$index] = $this->params[$i];
29 31 }
30 32 return $result;
31 33 }
... ... @@ -33,7 +35,7 @@ class CatIntervalCacheObject extends IntervalCacheObject
33 35 // for catalog
34 36 public function setParams($params)
35 37 {
36   - $this->params = $params;
  38 + $this->params = $params;
37 39 }
38 40  
39 41 public function getParams()
... ... @@ -41,17 +43,22 @@ class CatIntervalCacheObject extends IntervalCacheObject
41 43 return $this->params;
42 44 }
43 45  
44   - public function writeBin($handle, $paramsNumber, $paramsSizes)
  46 + public function writeBin($handle, $paramsNumber, $paramsSizes, $paramsTypes)
45 47 {
46   - fwrite($handle,pack('L6',$this->id,$this->index,$this->start,$this->stop,$this->isNew,$this->isModified));
47   - for ($i = 0; $i < $paramsNumber; $i++) {
48   - $paramString = $this->params[$i];
49   - $paramArray = explode(',',$this->params[$i]);
50   - for ($j = 0; $j < $paramsSizes[$i]; $j++) fwrite($handle,pack('d', $paramArray[$j]));
51   - }
  48 + fwrite($handle,pack('L6',$this->id,$this->index,$this->start,$this->stop,$this->isNew,$this->isModified));
  49 + for ($i = 0; $i < $paramsNumber; $i++)
  50 + {
  51 + if ($paramsTypes[$i] == '1')
  52 + $paramString = CacheTools::iso2stamp($this->params[$i]);
  53 + else
  54 + $paramString = $this->params[$i];
  55 +
  56 + $paramArray = explode(',',$paramString);
  57 + for ($j = 0; $j < $paramsSizes[$i]; $j++) fwrite($handle,pack('d', $paramArray[$j]));
  58 + }
52 59 }
53 60  
54   - public function loadBin($handle, $paramsNumber, $paramsSizes)
  61 + public function loadBin($handle, $paramsNumber, $paramsSizes, $paramsTypes)
55 62 {
56 63 $array = unpack('L6int',fread($handle,6*4));
57 64 $this->id = $array['int1'];
... ... @@ -66,7 +73,12 @@ class CatIntervalCacheObject extends IntervalCacheObject
66 73 for ($j = 0; $j < $paramsSizes[$i]; $j++)
67 74 {
68 75 $val = unpack('dval',fread($handle,8));
69   - $this->params[$i] .= $val['val'];
  76 +
  77 + if ($paramsTypes[$i] == '1')
  78 + $this->params[$i] .= CacheTools::stamp2iso($val['val']);
  79 + else
  80 + $this->params[$i] .= $val['val'];
  81 +
70 82 if ($j != $paramsSizes[$i] - 1) $this->params[$i] .= ',';
71 83 }
72 84 }
... ... @@ -81,8 +93,9 @@ class CatIntervalCacheObject extends IntervalCacheObject
81 93  
82 94 class CatalogCacheObject extends TimeTableCacheObject
83 95 {
84   - private $paramsNumber;
85   - private $paramsSizes = array();
  96 + private $paramsNumber;
  97 + private $paramsSizes = array();
  98 + private $paramsTypes = array();
86 99  
87 100 public function addInterval($startIso, $stopIso, $params, $isNew = false, $index = -1)
88 101 {
... ... @@ -95,10 +108,12 @@ class CatalogCacheObject extends TimeTableCacheObject
95 108  
96 109 $interval->setIsNew($isNew);
97 110 array_push($this->intervals, $interval);
  111 +
98 112 if ($index < 0)
99 113 array_push($this->indexes, count($this->intervals) - 1);
100 114 else
101 115 array_splice($this->indexes, $index, 0, array(count($this->intervals) - 1));
  116 +
102 117 if ($isNew)
103 118 $this->isModified = true;
104 119  
... ... @@ -116,46 +131,56 @@ class CatalogCacheObject extends TimeTableCacheObject
116 131 $this->paramsSizes[$i] = $params[$i]['size'];
117 132 }
118 133  
  134 + public function setParamsTypes($params)
  135 + {
  136 + for ($i = 0; $i < $this->paramsNumber; $i++)
  137 + $this->paramsTypes[$i] = $params[$i]['type'];
  138 + }
  139 +
119 140 public function writeBin($handle)
120 141 {
121   - //Magic key ("TTC")
122   - fwrite($handle,pack('C3',ord('T'),ord('T'),ord('C')));
123   -
124   - //Version
125   - fwrite($handle,pack('L',TimeTableCacheObject::$format_version));
126   -
127   - //Token
128   - for ($i = 0; $i < TimeTableCacheObject::$token_len; ++$i)
129   - fwrite($handle,pack('C',ord($this->token[$i])));
  142 + //Magic key ("TTC")
  143 + fwrite($handle,pack('C3',ord('T'),ord('T'),ord('C')));
  144 +
  145 + //Version
  146 + fwrite($handle,pack('L',TimeTableCacheObject::$format_version));
  147 +
  148 + //Token
  149 + for ($i = 0; $i < TimeTableCacheObject::$token_len; ++$i)
  150 + fwrite($handle,pack('C',ord($this->token[$i])));
130 151  
131   - //Modified
132   - fwrite($handle,pack('L',$this->isModified));
  152 + //Modified
  153 + fwrite($handle,pack('L',$this->isModified));
133 154  
134   - //Filter
135   - $this->filter->writeBin($handle);
  155 + //Filter
  156 + $this->filter->writeBin($handle);
136 157  
137   - //Sort
138   - $this->sort->writeBin($handle);
  158 + //Sort
  159 + $this->sort->writeBin($handle);
139 160  
140   - //Params Number
141   - fwrite($handle,pack('L',$this->paramsNumber));
  161 + //Params Number
  162 + fwrite($handle,pack('L',$this->paramsNumber));
142 163  
143   - //Params Sizes
144   - for ($i = 0; $i < $this->paramsNumber; $i++)
145   - fwrite($handle,pack('L',$this->paramsSizes[$i]));
146   -
147   - //Intervals
148   - fwrite($handle,pack('L2',count($this->intervals), $this->lastId));
  164 + //Params Sizes
  165 + for ($i = 0; $i < $this->paramsNumber; $i++)
  166 + fwrite($handle,pack('L',$this->paramsSizes[$i]));
  167 +
  168 + //Params Types
  169 + for ($i = 0; $i < $this->paramsNumber; $i++)
  170 + fwrite($handle,pack('L',$this->paramsTypes[$i]));
  171 +
  172 + //Intervals
  173 + fwrite($handle,pack('L2', count($this->intervals), $this->lastId));
149 174  
150 175  
151   - foreach($this->intervals as $interval)
152   - $interval->writeBin($handle,$this->paramsNumber,$this->paramsSizes);
  176 + foreach($this->intervals as $interval)
  177 + $interval->writeBin($handle,$this->paramsNumber,$this->paramsSizes, $this->paramsTypes);
153 178  
154   - //Indexes
155   - fwrite($handle,pack('L',count($this->indexes)));
156   - foreach($this->indexes as $index)
157   - fwrite($handle,pack('L',$index));
158   - }
  179 + //Indexes
  180 + fwrite($handle,pack('L',count($this->indexes)));
  181 + foreach($this->indexes as $index)
  182 + fwrite($handle,pack('L',$index));
  183 + }
159 184  
160 185 public function loadBin($handle) {
161 186 //Magic key ("TTC")
... ... @@ -203,7 +228,12 @@ class CatalogCacheObject extends TimeTableCacheObject
203 228 return false;
204 229 $this->paramsSizes[$i] = $res['size'];
205 230 }
206   -
  231 + //ParamsTypes
  232 + for ($i = 0; $i < $this->paramsNumber; $i++) {
  233 + if (!$res = unpack('Ltype',fread($handle,4)))
  234 + return false;
  235 + $this->paramsTypes[$i] = $res['type'];
  236 + }
207 237 //Intervals
208 238 $res = unpack('L2data',fread($handle,2*4));
209 239 $nbIntervals = $res['data1'];
... ... @@ -212,7 +242,7 @@ class CatalogCacheObject extends TimeTableCacheObject
212 242 for ($i = 0; $i < $nbIntervals; ++$i)
213 243 {
214 244 $interval = new CatIntervalCacheObject(-1);
215   - $interval->loadBin($handle, $this->paramsNumber, $this->paramsSizes);
  245 + $interval->loadBin($handle, $this->paramsNumber, $this->paramsSizes, $this->paramsTypes);
216 246 array_push($this->intervals, $interval);
217 247 }
218 248  
... ... @@ -300,6 +330,7 @@ class CatalogCacheMgr extends TimeTableCacheMgr
300 330  
301 331 $this->cache->setParamsNumber(count($paramHeaders));
302 332 $this->cache->setParamsSizes($paramHeaders);
  333 + $this->cache->setParamsTypes($paramHeaders);
303 334  
304 335 unset($intervals_res);
305 336  
... ... @@ -336,7 +367,8 @@ class CatalogCacheMgr extends TimeTableCacheMgr
336 367  
337 368 $this->cache->setParamsNumber(count($paramHeaders));
338 369 $this->cache->setParamsSizes($paramHeaders);
339   -
  370 + $this->cache->setParamsTypes($paramHeaders);
  371 +
340 372 unset($intervals_res);
341 373  
342 374 //Update cache
... ... @@ -368,6 +400,8 @@ class CatalogCacheMgr extends TimeTableCacheMgr
368 400  
369 401 $this->cache->setParamsNumber(count($paramHeaders));
370 402 $this->cache->setParamsSizes($paramHeaders);
  403 + $this->cache->setParamsTypes($paramHeaders);
  404 +
371 405 unset($intervals_res);
372 406  
373 407 //Update cache
... ... @@ -469,6 +503,7 @@ class CatalogCacheMgr extends TimeTableCacheMgr
469 503  
470 504 }
471 505 $this->cache->setParamsSizes($paramHeaders);
  506 + $this->cache->setParamsTypes($paramHeaders);
472 507 //Save cache file
473 508 return array('success' => $this->saveToFile(), 'token' => $this->cache->getToken(),
474 509 'status' => $this->cache->getStatus(), 'parameters' => $paramHeaders);
... ...
php/classes/CatalogMgr.php
... ... @@ -483,7 +483,12 @@ class CatalogMgr extends TimeTableMgr
483 483 foreach ($paramNode->attributes as $attr)
484 484 {
485 485 if ($attr->nodeName == 'datatype')
486   - $oneParam['type'] = $attr->nodeValue;//'Double';
  486 + {
  487 + if ($paramNode->hasAttribute('xtype') && ($paramNode->getAttribute('xtype') == 'dateTime'))
  488 + $oneParam['type'] = 1;
  489 + else
  490 + $oneParam['type'] = 0;//'Double';
  491 + }
487 492 else if ($attr->nodeName != 'arraysize')
488 493 $oneParam[$attr->nodeName] = $attr->nodeValue;
489 494 }
... ...