From d0638adf0b2303b0c394f52fffb0db46092db0b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Tue, 25 Feb 2020 16:40:14 +0100
Subject: [PATCH] [ivette] fix in state items

---
 ivette/src/frama-c/states.js      |  9 ++++-----
 ivette/src/renderer/Properties.js | 11 +++++++----
 src/plugins/server/states.ml      |  2 +-
 3 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/ivette/src/frama-c/states.js b/ivette/src/frama-c/states.js
index 5578e979f60..661315cc69a 100644
--- a/ivette/src/frama-c/states.js
+++ b/ivette/src/frama-c/states.js
@@ -272,7 +272,7 @@ class SyncArray
 
   getItems() {
     if (!this.insync && Server.isRunning()) this.fetch();
-    return this.items;
+    return this.index;
   }
 
   isEmpty() {
@@ -290,16 +290,15 @@ class SyncArray
           reloaded = this.isEmpty();
           this.index = {};
         }
-        removed.forEach((id) => {
-          delete this.index[id];
+        removed.forEach((key) => {
+          delete this.index[key];
         });
         updated.forEach((item) => {
-          this.index[item.id] = item;
+          this.index[item.key] = item;
         });
         if (reloaded || removed.length || updated.length)
           Dome.emit( this.UPDATE );
         if (pending>0) {
-          console.log('PENDING');
           this.fetch();
         }
       });
diff --git a/ivette/src/renderer/Properties.js b/ivette/src/renderer/Properties.js
index eed27a148fc..bcece264461 100644
--- a/ivette/src/renderer/Properties.js
+++ b/ivette/src/renderer/Properties.js
@@ -2,22 +2,25 @@
 // --- Properties
 // --------------------------------------------------------------------------
 
+import _ from 'lodash' ;
 import React from 'react' ;
 import Dome from 'dome' ;
 import States from 'frama-c/states' ;
 import { ArrayModel } from 'dome/table/arrays' ;
+import { Table, Column, DefineColumn } from 'dome/table/views' ;
 
 // --------------------------------------------------------------------------
 // --- Properties Array
 // --------------------------------------------------------------------------
 
-const Table = () => {
+const PropTable = () => {
   const model = React.useMemo( () => new ArrayModel() );
-  const items = States.useSyncArray('kernel.properties');
+  const items = _.toArray( States.useSyncArray('kernel.properties') );
+  console.log(items);
   if (items)
     return (
       <ul>
-        {items.map((item) => (<li key={item.id}><tt>{item.id}</tt></li>))}
+        {items.map((item) => (<li key={item.key}><tt>{item.key}</tt></li>))}
       </ul>
     );
   else
@@ -28,6 +31,6 @@ const Table = () => {
 // --- Exports
 // --------------------------------------------------------------------------
 
-export default { Table };
+export default { PropTable };
 
 // --------------------------------------------------------------------------
diff --git a/src/plugins/server/states.ml b/src/plugins/server/states.ml
index 9ec13539dd1..7ba8567e3ee 100644
--- a/src/plugins/server/states.ml
+++ b/src/plugins/server/states.ml
@@ -96,7 +96,7 @@ let model () = ref []
 let column (type a b) ~(model : a model) ~name ~descr
     ~(data: b Request.output) ~(get : a -> b) () =
   let module D = (val data) in
-  if name = "id" || name = "_index" then
+  if name = "key" || name = "index" then
     raise (Invalid_argument "Server.States.column: invalid name") ;
   if List.exists (fun (fd,_) -> fd.Syntax.name = name) !model then
     raise (Invalid_argument "Server.States.column: duplicate name") ;
-- 
GitLab