📄 yahoosearch.js
字号:
// model that works with Yahoo Search APIdojo.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() { }});// reportmodelChange = function() { var n = dojo.byId('rowCount'); if (n) n.innerHTML = dojo.string.substitute('about ${0} row(s)', [model.count]);}// some data formattersgetCellData = 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;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -