Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F1129496
lists.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
lists.js
View Options
if
(
!
dojo
.
_hasResource
[
"dojox.dtl.filter.lists"
]){
//_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo
.
_hasResource
[
"dojox.dtl.filter.lists"
]
=
true
;
dojo
.
provide
(
"dojox.dtl.filter.lists"
)
dojo
.
require
(
"dojox.dtl._base"
);
dojo
.
mixin
(
dojox
.
dtl
.
filter
.
lists
,
{
_dictsort
:
function
(
a
,
b
){
if
(
a
[
0
]
==
b
[
0
])
return
0
;
return
(
a
[
0
]
<
b
[
0
])
?
-
1
:
1
;
},
dictsort
:
function
(
value
,
arg
){
// summary: Takes a list of dicts, returns that list sorted by the property given in the argument.
if
(
!
arg
)
return
value
;
var
items
=
[];
for
(
var
key
in
value
){
items
.
push
([
dojox
.
dtl
.
resolveVariable
(
'var.'
+
arg
,
new
dojox
.
dtl
.
Context
({
'var'
:
value
[
key
]})),
value
[
key
]]);
}
items
.
sort
(
dojox
.
dtl
.
filter
.
lists
.
_dictsort
);
var
output
=
[];
for
(
var
i
=
0
,
item
;
item
=
items
[
i
];
i
++
){
output
.
push
(
item
[
1
]);
}
return
output
;
},
dictsortreversed
:
function
(
value
,
arg
){
// summary: Takes a list of dicts, returns that list sorted in reverse order by the property given in the argument.
if
(
!
arg
)
return
value
;
var
dictsort
=
dojox
.
dtl
.
filter
.
lists
.
dictsort
(
value
,
arg
);
return
dictsort
.
reverse
();
},
first
:
function
(
value
){
// summary: Returns the first item in a list
return
(
value
.
length
)
?
value
[
0
]
:
""
;
},
join
:
function
(
value
,
arg
){
// summary: Joins a list with a string, like Python's ``str.join(list)``
// description:
// Django throws a compile error, but JS can't do arg checks
// so we're left with run time errors, which aren't wise for something
// as trivial here as an empty arg.
return
value
.
join
(
arg
||
","
);
},
length
:
function
(
value
){
// summary: Returns the length of the value - useful for lists
return
(
isNaN
(
value
.
length
))
?
(
value
+
""
).
length
:
value
.
length
;
},
length_is
:
function
(
value
,
arg
){
// summary: Returns a boolean of whether the value's length is the argument
return
value
.
length
==
parseInt
(
arg
);
},
random
:
function
(
value
){
// summary: Returns a random item from the list
return
value
[
Math
.
floor
(
Math
.
random
()
*
value
.
length
)];
},
slice
:
function
(
value
,
arg
){
// summary: Returns a slice of the list.
// description:
// Uses the same syntax as Python's list slicing; see
// http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice
// for an introduction.
// Also uses the optional third value to denote every X item.
arg
=
arg
||
""
;
var
parts
=
arg
.
split
(
":"
);
var
bits
=
[];
for
(
var
i
=
0
;
i
<
parts
.
length
;
i
++
){
if
(
!
parts
[
i
].
length
){
bits
.
push
(
null
);
}
else
{
bits
.
push
(
parseInt
(
parts
[
i
]));
}
}
if
(
bits
[
0
]
===
null
){
bits
[
0
]
=
0
;
}
if
(
bits
[
0
]
<
0
){
bits
[
0
]
=
value
.
length
+
bits
[
0
];
}
if
(
bits
.
length
<
2
||
bits
[
1
]
===
null
){
bits
[
1
]
=
value
.
length
;
}
if
(
bits
[
1
]
<
0
){
bits
[
1
]
=
value
.
length
+
bits
[
1
];
}
return
value
.
slice
(
bits
[
0
],
bits
[
1
]);
},
_unordered_list
:
function
(
value
,
tabs
){
var
ddl
=
dojox
.
dtl
.
filter
.
lists
;
var
indent
=
""
;
for
(
var
i
=
0
;
i
<
tabs
;
i
++
){
indent
+=
"\t"
;
}
if
(
value
[
1
]
&&
value
[
1
].
length
){
var
recurse
=
[];
for
(
var
i
=
0
;
i
<
value
[
1
].
length
;
i
++
){
recurse
.
push
(
ddl
.
_unordered_list
(
value
[
1
][
i
],
tabs
+
1
))
}
return
indent
+
"<li>"
+
value
[
0
]
+
"\n"
+
indent
+
"<ul>\n"
+
recurse
.
join
(
"\n"
)
+
"\n"
+
indent
+
"</ul>\n"
+
indent
+
"</li>"
;
}
else
{
return
indent
+
"<li>"
+
value
[
0
]
+
"</li>"
;
}
},
unordered_list
:
function
(
value
){
// summary:
// Recursively takes a self-nested list and returns an HTML unordered list --
// WITHOUT opening and closing <ul> tags.
// description:
// The list is assumed to be in the proper format. For example, if ``var`` contains
// ``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``,
// then ``{{ var|unordered_list }}`` would return::
//
// <li>States
// <ul>
// <li>Kansas
// <ul>
// <li>Lawrence</li>
// <li>Topeka</li>
// </ul>
// </li>
// <li>Illinois</li>
// </ul>
// </li>
return
dojox
.
dtl
.
filter
.
lists
.
_unordered_list
(
value
,
1
);
}
});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Jun 20, 23:55 (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27756
Default Alt Text
lists.js (3 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment