« Return to Thread: data store

Re: data store

by Jon Sykes-4 :: Rate this Message:

Reply to Author | View in Thread

Vance try:

var data = {data: {
    identifier : 'id',
    items : [
      { id : 'a', label: "Letter A" },
      { id : 'b', label: "Letter B" },
      { id : 'c', label: "Letter C" },
      { id : 'd', label: "Letter D" }
    ]
  };

var myNewStore=new dojo.data.ItemFileReadStore(data);

See how that handles it.


On Dec 13, 2007, at 5:00 PM, Vance Dubberly wrote:

> Dustin,
>  I really do appreciate the explanation of data stores it is both
> insightful and honest. Understanding the philosophy of why a thing is
> architected the way it is goes a long way toward making it work and it
> sounds like the theory is good, even if the implementation is lacking.
>
>  The downside of course is that I'm still left writing my own
> datastore as at least instantiating dojo.data.ItemFileReadStore with
> the aforementioned JSON results in a data store with no data. :(
>
>  I do think I've a new Tagline for dojo.  "Making the complex,
> attainable and the simple impossible." :)  ( wasn't the Java credo for
> a long time? )  I can do things with dojo I never thought possible and
> yet the simple stuff leaves me totally screwed.
>
> Anyway I gave up and just used an old fashioned select box.  Looks
> like crap but it does the job.
>
> Vance
>
>
>
>
>
>
> On Dec 13, 2007 1:17 PM, Dustin Machi <dmachi@...> wrote:
>> I agree that lots of work still needs to be done on making use of  
>> stores
>> easier and more robust.  Right now it can be too difficult to use in
>> what are simple case. However...
>>
>>> Honestly I don't want to use a datastore to do it.  Seems like a
>>> complete waste of memory and CPU.
>>
>> The fact is regardless of whether or not you have to declare a  
>> store or
>> even if a widget actually uses something called a store, you are  
>> using
>> one.  This doesn't necessarily mean a dojo.data store, but every  
>> widget
>> that visualizes some data set must be able to have access to a data  
>> set
>> that it understands how to access and view and potentially to  
>> manipulate
>> as well.
>>
>> In the previous versions of dojo each widget handled its data on its
>> own.  This of course led to problems that the particular data set  
>> that
>> they knew how to manage didn't quite match up with what the user  
>> needed
>> or wanted.  Or they needed to be retrieved from the server in a lazy
>> loaded way.  Or lazy loading work, but not in the way that a  
>> particular
>> dev needed it to work.  dojo.data does nothing more than split that
>> functionality outside of the widget so stores could be defined in  
>> some
>> standard way that lets the developers write whatever code they might
>> like to access their server data, but still provides widgets a common
>> interface so they don't have to be rewritten, extended or whatever  
>> with
>> each new use case.
>>
>> Now, bugs aside and not withstanding some adjustments that might be
>> needed to the dojo.data api's themselves, using stores should  
>> ultimately
>> reduce the number of instances of a piece of data because one store  
>> can
>> be used by multiple widgets.  It ultimately also requires less widget
>> code to be written and downloaded.
>>
>>> However not using a datastore  does
>>> not appear to be an option.
>>
>> Actually in some cases this is already the case, but as mentioned  
>> above
>> is only illusory. For example, the combobox widget can take normal
>> <option> tags as children.  However what happens in reality is that  
>> the
>> widget will then ingest that data and create the store on its own.
>> Having capabilities like this available across the full set of  
>> widgets
>> that use dojo data would go along way towards making some of the  
>> simple
>> cases simpler.  (
>>
>> *on a side note for lurkers: I would say however that widgets that do
>> this should not automatically dojo.require() the store type they  
>> want to
>> use as you then have to get that code/store even if you don't want to
>> use it and that can be expensive.  I would prefer it to just throw an
>> error if you tried to use a widget in this way and hadn't included an
>> appropriate store.  It would also be preferable to allow usage like  
>> this
>> to specify which type of store would be created by default, though  
>> this
>> might not be practical in some circumstances.  Doing this allow
>> automatic creation, but if the rest of the app is using a different
>> store type, it doesn't require that store to be loaded.)
>>
>> So baring that, I want to populate a
>>> datastore with the above object without having to read it from the
>>> server.  I already have the data it was pulled from the server in a
>>> much more complex format and is being used for may things. the above
>>> sample is a derived subset of that data.
>>>
>>> what I'd love to do is this:
>>>
>>> dijit.form.FiteringSelect.store = pageJSON;
>>>
>>
>> This won't work because that is passing a js object in and the  
>> filtering
>> select would be expecting that to be a store instance, not a js  
>> object.
>>
>>> baring that I'd like to do this:
>>>
>>> store = new dojo.data.SomeKindOfStore( pageJSON )
>>> dijit.form.FilteringSelect.store = store;
>>>
>>
>> This in general is correct, however i think in practical terms that
>> right now most data using widgets expect to have a store at creation
>> time.  So your stores would need to be created before the widget was
>> instantiate.
>>
>>> What I don't want to do is go to the server for data I already have.
>>>
>> You don't have to go to the server for the data you already have.
>> ItemFileReadStore takes a set of data, formatted in its special  
>> way, and
>> makes it available locally.  You could create your stores right at  
>> the
>> beginning of your app for example (not in addOnLoad() and before the
>> <body>) and that store could be avialable to anything  you either  
>> markup
>> or programmatically create later.
>>
>>
>> Dustin
>>
>>
>> _______________________________________________
>> FAQ: http://dojotoolkit.org/support/faq
>> Book: http://dojotoolkit.org/docs/book
>> Forums: http://dojotoolkit.org/forum
>> Dojo-interest@...
>> http://dojotoolkit.org/mailman/listinfo/dojo-interest
>>
>
>
>
> --
> To pretend, I actually do the thing: I have therefore only pretended  
> to pretend.
>  - Jacques Derrida
> _______________________________________________
> FAQ: http://dojotoolkit.org/support/faq
> Book: http://dojotoolkit.org/docs/book
> Forums: http://dojotoolkit.org/forum
> Dojo-interest@...
> http://dojotoolkit.org/mailman/listinfo/dojo-interest

_______________________________________________
FAQ: http://dojotoolkit.org/support/faq
Book: http://dojotoolkit.org/docs/book
Forums: http://dojotoolkit.org/forum
Dojo-interest@...
http://dojotoolkit.org/mailman/listinfo/dojo-interest

 « Return to Thread: data store