         size: { width: 242, height: 221 },
         position: 'bottom'
 
-  createTable: (yAttributeName)->
-    @codapPhone.call
-      action: 'create',
-      resource: 'component',
-      values:
-        type: 'caseTable'
+  createTable: () ->
+    unless @tableCreated
+      @codapPhone.call
+        action: 'create',
+        resource: 'component',
+        values:
+          type: 'caseTable'
+      @tableCreated = true
 
   codapRequestHandler: (cmd, callback) =>
     resource = cmd.resource

        # We check for game state in either the frame (CODAP API 2.0) or the dataContext
        # (API 1.0). We ignore the dataContext if we find game state in the interactiveFrame
        state = frame?.values.savedState or
                context?.values.contextStorage.gameState

        if state?
          @graphStore.deleteAll()

      values: {
        operation: 'redoAction'
      }

  sendUndoableActionPerformed: (logMessage) ->
    @codapPhone.call
