📄 yahoo_search.js
字号:
// model that works with Yahoo Search APIdojo.declare("dojox.grid.data.yahooSearch", dojox.grid.data.dynamic, function(inFields, inData) { this.rowsPerPage = 20; this.fieldNames = []; for (var i=0, f; (f=inFields[i]); i++) this.fieldNames.push(f.name); }, { clearData: function() { turbo.widgets.TurboGrid.data.dynamic.prototype.clearData.apply(this, arguments); }, // server send / receive encodeParam: function(inName, inValue) { return turbo.printf('&%s=%s', inName, inValue); }, getParams: function(inParams) { var url = this.url; url += '?appid=turboajax'; inParams = inParams || {}; inParams.output = 'json'; inParams.results = this.rowsPerPage; inParams.query = turbo.$('searchInput').value.replace(/ /g, '+'); 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); dojo.io.bind({ url: "support/proxy.php", method: "post", content: {url: p }, contentType: "application/x-www-form-urlencoded; charset=utf-8", mimetype: 'text/json', sync: !inAsync, load: turbo.bindArgs(this, "receive", inOnReceive, inOnError), error: turbo.bindArgs(this, "error", inOnError) }); this.onSend(inParams); }, receive: function(inOnReceive, inOnError, inEvt, inData) { try { inData = inData.ResultSet; inOnReceive(inData); this.onReceive(inData); } catch(e) { if (inOnError) inOnError(inData); } }, error: function(inOnError, inTyp, 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, turbo.bindArgs(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: turbo.nop, onSend: turbo.nop, onReceive: turbo.nop});// reportmodelChange = function() { var n = turbo.$('rowCount'); if (n) n.innerHTML = turbo.printf('about %s row(s)', model.count);}// some data formattersformatLink = function(inData, inRowIndex) { if (!inData[0] || !inData[1]) return ' '; return turbo.supplant('<a target="_blank" href="{href}">{text}</a>', {href: inData[0], text: inData[1] });};formatImage = function(inData, inRowIndex) { if (!inData[0] || !inData[1]) return ' '; var o = { href: inData[0], src: inData[1].Url, width: inData[1].Width, height: inData[1].Height } return turbo.supplant('<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 turbo.printf('%s/%s/%s', d.getMonth(), d.getDate(), d.getFullYear());};formatDimensions = function(inData, inRowIndex) { if (!inData[0] || !inData[1]) return ' '; return inData[0] + ' x ' + inData[1];}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -