Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F885287
yahooSearch.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
yahooSearch.js
View Options
// model that works with Yahoo Search API
dojo
.
declare
(
"dojox.grid.data.yahooSearch"
,
dojox
.
grid
.
data
.
dynamic
,
function
(
inFields
,
inData
,
inSearchNode
)
{
this
.
rowsPerPage
=
20
;
this
.
searchNode
=
inSearchNode
;
this
.
fieldNames
=
[];
for
(
var
i
=
0
,
f
;
(
f
=
inFields
[
i
]);
i
++
)
this
.
fieldNames
.
push
(
f
.
name
);
},
{
// server send / receive
encodeParam
:
function
(
inName
,
inValue
)
{
return
dojo
.
string
.
substitute
(
'&${0}=${1}'
,
[
inName
,
inValue
]);
},
getQuery
:
function
()
{
return
dojo
.
byId
(
this
.
searchNode
).
value
.
replace
(
/ /g
,
'+'
);
},
getParams
:
function
(
inParams
)
{
var
url
=
this
.
url
;
url
+=
'?appid=foo'
;
inParams
=
inParams
||
{};
inParams
.
output
=
'json'
;
inParams
.
results
=
this
.
rowsPerPage
;
inParams
.
query
=
this
.
getQuery
();
for
(
var
i
in
inParams
)
if
(
inParams
[
i
]
!=
undefined
)
url
+=
this
.
encodeParam
(
i
,
inParams
[
i
]);
return
url
;
},
send
:
function
(
inAsync
,
inParams
,
inOnReceive
,
inOnError
)
{
var
p
=
this
.
getParams
(
inParams
),
d
=
dojo
.
xhrPost
({
url
:
"support/proxy.php"
,
content
:
{
url
:
p
},
contentType
:
"application/x-www-form-urlencoded; charset=utf-8"
,
handleAs
:
'json-comment-filtered'
,
sync
:
!
inAsync
});
d
.
addCallbacks
(
dojo
.
hitch
(
this
,
"receive"
,
inOnReceive
,
inOnError
),
dojo
.
hitch
(
this
,
"error"
,
inOnError
));
this
.
onSend
(
inParams
);
return
d
;
},
receive
:
function
(
inOnReceive
,
inOnError
,
inData
)
{
try
{
inData
=
inData
.
ResultSet
;
inOnReceive
(
inData
);
this
.
onReceive
(
inData
);
}
catch
(
e
)
{
if
(
inOnError
)
inOnError
(
inData
);
}
},
error
:
function
(
inOnError
,
inErr
)
{
var
m
=
'io error: '
+
inErr
.
message
;
alert
(
m
);
if
(
inOnError
)
inOnError
(
m
);
},
fetchRowCount
:
function
(
inCallback
)
{
this
.
send
(
true
,
inCallback
);
},
// request data
requestRows
:
function
(
inRowIndex
,
inCount
)
{
inRowIndex
=
(
inRowIndex
==
undefined
?
0
:
inRowIndex
);
var
params
=
{
start
:
inRowIndex
+
1
}
this
.
send
(
true
,
params
,
dojo
.
hitch
(
this
,
this
.
processRows
));
},
// server callbacks
processRows
:
function
(
inData
)
{
for
(
var
i
=
0
,
l
=
inData
.
totalResultsReturned
,
s
=
inData
.
firstResultPosition
;
i
<
l
;
i
++
)
{
this
.
setRow
(
inData
.
Result
[
i
],
s
-
1
+
i
);
}
// yahoo says 1000 is max results to return
var
c
=
Math
.
min
(
1000
,
inData
.
totalResultsAvailable
);
if
(
this
.
count
!=
c
)
{
this
.
setRowCount
(
c
);
this
.
allChange
();
this
.
onInitializeData
(
inData
);
}
},
getDatum
:
function
(
inRowIndex
,
inColIndex
)
{
var
row
=
this
.
getRow
(
inRowIndex
);
var
field
=
this
.
fields
.
get
(
inColIndex
);
return
(
inColIndex
==
undefined
?
row
:
(
row
?
row
[
field
.
name
]
:
field
.
na
));
},
// events
onInitializeData
:
function
()
{
},
onSend
:
function
()
{
},
onReceive
:
function
()
{
}
});
// report
modelChange
=
function
()
{
var
n
=
dojo
.
byId
(
'rowCount'
);
if
(
n
)
n
.
innerHTML
=
dojo
.
string
.
substitute
(
'about ${0} row(s)'
,
[
model
.
count
]);
}
// some data formatters
getCellData
=
function
(
inCell
,
inRowIndex
,
inField
)
{
var
m
=
inCell
.
grid
.
model
;
return
m
.
getDatum
(
inRowIndex
,
inField
);
}
formatLink
=
function
(
inData
,
inRowIndex
)
{
if
(
!
inData
)
return
' '
;
var
text
=
getCellData
(
this
,
inRowIndex
,
this
.
extraField
);
return
dojo
.
string
.
substitute
(
'<a target="_blank" href="${href}">${text}</a>'
,
{
href
:
inData
,
text
:
text
});
};
formatImage
=
function
(
inData
,
inRowIndex
)
{
if
(
!
inData
)
return
' '
;
var
info
=
getCellData
(
this
,
inRowIndex
,
this
.
extraField
);
var
o
=
{
href
:
inData
,
src
:
info
.
Url
,
width
:
info
.
Width
,
height
:
info
.
Height
}
return
dojo
.
string
.
substitute
(
'<a href="${href}" target="_blank"><img border=0 src="${src}" width="${width}" height="${height}"></a>'
,
o
);
};
formatDate
=
function
(
inDatum
,
inRowIndex
)
{
if
(
!
inDatum
)
return
' '
;
var
d
=
new
Date
(
inDatum
*
1000
);
return
dojo
.
string
.
substitute
(
"${0}/${1}/${2}"
,[
d
.
getMonth
()
+
1
,
d
.
getDate
(),
d
.
getFullYear
()])
};
formatDimensions
=
function
(
inData
,
inRowIndex
)
{
if
(
!
inData
)
return
' '
;
var
w
=
inData
,
h
=
getCellData
(
this
,
inRowIndex
,
this
.
extraField
);
return
w
+
' x '
+
h
;
}
File Metadata
Details
Attached
Mime Type
text/html
Expires
Sun, Apr 6, 14:38 (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27135
Default Alt Text
yahooSearch.js (3 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment