Forked from oxalorg/wikipedia-searcher-example-mithriljs.js
Created
June 15, 2016 20:29
-
-
Save saniko/705e7190f612f59238b09abd9cc991fe to your computer and use it in GitHub Desktop.
My first simple web app using Mithril.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Find this on codepen http://codepen.io/miteshninja/full/gMMrmo/ | |
// Code refactored by @barneycarroll | |
var app = {}; | |
var api = "https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&gsrsearch="; | |
var cb = '&callback=JSON_CALLBACK'; | |
var wPage = "https://en.wikipedia.org/?curid="; | |
app.WikiPages = function (title) { | |
return m.request({ | |
dataType: "jsonp", | |
url: api + title, | |
unwrapSuccess: function (response) { | |
let pageObj = response.query.pages; | |
let pageList = Object.keys(pageObj).map(key => pageObj[key]) | |
return pageList; | |
} | |
}); | |
}; | |
//the controller defines what part of the model is relevant for the current page | |
//in our case, there's only one view-model that handles everything | |
app.controller = function() { | |
var vm = this; | |
vm.pages = m.prop([]) | |
vm.ss = m.prop('') | |
vm.getPages = function(){ | |
if (vm.ss()) { | |
vm.pages = app.WikiPages(vm.ss()); | |
vm.ss(""); | |
} | |
}; | |
} | |
app.view = function(ctrl) { | |
console.log(ctrl); | |
console.log(ctrl.ss()); | |
return [ | |
m("div.row", | |
m("div.col-sm-4.col-sm-offset-4", | |
m("input[type=text].form-control", { | |
oninput: function(){ | |
ctrl.ss(this.value) | |
ctrl.getPages() | |
}, | |
placeholder: "Search something" | |
}) | |
) | |
), | |
m("br"), | |
m("div.row#pageListRow", | |
m("div.col-sm-12", | |
m("ul.pageList", | |
ctrl.pages().map(function(page){ | |
return m("li.pageListItem", | |
m("a#white", { | |
href: wPage + page.pageid, | |
target: "_blank" | |
}, | |
page.title | |
), | |
m("br"), | |
m("p", page.extract) | |
) | |
}) | |
) | |
) | |
) | |
] | |
} | |
m.mount(document.getElementById('app'), app); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment