summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/data/CssClassStore.xd.js
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo-1.6/dojox/data/CssClassStore.xd.js
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'js/dojo-1.6/dojox/data/CssClassStore.xd.js')
-rw-r--r--js/dojo-1.6/dojox/data/CssClassStore.xd.js175
1 files changed, 175 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/data/CssClassStore.xd.js b/js/dojo-1.6/dojox/data/CssClassStore.xd.js
new file mode 100644
index 0000000..fdd9632
--- /dev/null
+++ b/js/dojo-1.6/dojox/data/CssClassStore.xd.js
@@ -0,0 +1,175 @@
+/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+dojo._xdResourceLoaded(function(dojo, dijit, dojox){
+return {depends: [["provide", "dojox.data.CssClassStore"],
+["require", "dojox.data.CssRuleStore"]],
+defineResource: function(dojo, dijit, dojox){if(!dojo._hasResource["dojox.data.CssClassStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.data.CssClassStore"] = true;
+dojo.provide("dojox.data.CssClassStore");
+dojo.require("dojox.data.CssRuleStore");
+
+
+
+dojo.declare("dojox.data.CssClassStore", dojox.data.CssRuleStore, {
+ // summary:
+ // Basic store to display CSS information.
+ // description:
+ // The CssClassStore allows users to get information about active Css classes in the page running the CssClassStore.
+ // It can also filter out classes from specific stylesheets. The attributes it exposes on classes are as follows:
+ // class: The classname, including the '.'.
+ // classSans: The classname without the '.'.
+
+ _labelAttribute: 'class', // text representation of the Item [label and identifier may need to stay due to method names]
+ _idAttribute: 'class',
+ _cName: "dojox.data.CssClassStore",
+
+ getFeatures: function(){
+ // summary:
+ // See dojo.data.api.Read.getFeatures()
+ return {
+ "dojo.data.api.Read" : true,
+ "dojo.data.api.Identity" : true
+ };
+ },
+
+ getAttributes: function(item){
+ // summary:
+ // See dojo.data.api.Read.getAttributes()
+ this._assertIsItem(item);
+ return ['class', 'classSans'];
+ },
+
+ getValue: function(item, attribute, defaultValue){
+ // summary:
+ // See dojo.data.api.Read.getValue()
+ var values = this.getValues(item, attribute);
+ if(values && values.length > 0){
+ return values[0];
+ }
+ return defaultValue;
+ },
+
+ getValues: function(item, attribute){
+ // summary:
+ // See dojo.data.api.Read.getValues()
+ this._assertIsItem(item);
+ this._assertIsAttribute(attribute);
+ var value = [];
+ if(attribute === "class"){
+ value = [item.className];
+ }else if(attribute === "classSans"){
+ value = [item.className.replace(/\./g,'')];
+ }
+ return value;
+ },
+
+ _handleRule: function(rule, styleSheet, href){
+ // summary:
+ // Handles the creation of an item based on the passed rule. In this store, this implies
+ // parsing out all available class names.
+ var obj = {};
+ var s = rule['selectorText'].split(" ");
+ for(var j=0; j<s.length; j++){
+ var tmp = s[j];
+ var first = tmp.indexOf('.');
+ if(tmp && tmp.length > 0 && first !== -1){
+ var last = tmp.indexOf(',') || tmp.indexOf('[');
+ tmp = tmp.substring(first, ((last !== -1 && last > first)?last:tmp.length));
+ obj[tmp] = true;
+ }
+ }
+ for(var key in obj){
+ if(!this._allItems[key]){
+ var item = {};
+ item.className = key;
+ item[this._storeRef] = this;
+ this._allItems[key] = item;
+ }
+ }
+ },
+
+ _handleReturn: function(){
+ // summary:
+ // Handles the return from a fetching action. Delegates requests to act on the resulting
+ // item set to eitehr the _handleFetchReturn or _handleFetchByIdentityReturn depending on
+ // where the request originated.
+ var _inProgress = [];
+
+ var items = {};
+ for(var i in this._allItems){
+ items[i] = this._allItems[i];
+ }
+ var requestInfo;
+ // One-level deep clone (can't use dojo.clone, since we don't want to clone all those store refs!)
+ while(this._pending.length){
+ requestInfo = this._pending.pop();
+ requestInfo.request._items = items;
+ _inProgress.push(requestInfo);
+ }
+
+ while(_inProgress.length){
+ requestInfo = _inProgress.pop();
+ if(requestInfo.fetch){
+ this._handleFetchReturn(requestInfo.request);
+ }else{
+ this._handleFetchByIdentityReturn(requestInfo.request);
+ }
+ }
+ },
+
+ _handleFetchByIdentityReturn: function(request){
+ // summary:
+ // Handles a fetchByIdentity request by finding the correct item.
+ var items = request._items;
+ // Per https://bugs.webkit.org/show_bug.cgi?id=17935 , Safari 3.x always returns the selectorText
+ // of a rule in full lowercase.
+ var item = items[(dojo.isWebKit?request.identity.toLowerCase():request.identity)];
+ if(!this.isItem(item)){
+ item = null;
+ }
+ if(request.onItem){
+ var scope = request.scope || dojo.global;
+ request.onItem.call(scope, item);
+ }
+ },
+
+ /* Identity API */
+ getIdentity: function(/* item */ item){
+ // summary:
+ // See dojo.data.api.Identity.getIdentity()
+ this._assertIsItem(item);
+ return this.getValue(item, this._idAttribute);
+ },
+
+ getIdentityAttributes: function(/* item */ item){
+ // summary:
+ // See dojo.data.api.Identity.getIdentityAttributes()
+ this._assertIsItem(item);
+ return [this._idAttribute];
+ },
+
+ fetchItemByIdentity: function(/* request */ request){
+ // summary:
+ // See dojo.data.api.Identity.fetchItemByIdentity()
+ request = request || {};
+ if(!request.store){
+ request.store = this;
+ }
+ if(this._pending && this._pending.length > 0){
+ this._pending.push({request: request});
+ }else{
+ this._pending = [{request: request}];
+ this._fetch(request);
+ }
+ return request;
+ }
+});
+
+}
+
+}};});